[Fsem-commits] SF.net SVN: fsem: [120] fsem/examples-fondation
Status: Beta
Brought to you by:
fabiandortu
|
From: <fab...@us...> - 2007-03-09 12:49:45
|
Revision: 120
http://fsem.svn.sourceforge.net/fsem/?rev=120&view=rev
Author: fabiandortu
Date: 2007-03-09 04:49:44 -0800 (Fri, 09 Mar 2007)
Log Message:
-----------
Added routine to create structured mesh
(usefull to avoid obtuse elements)
Added Paths:
-----------
fsem/examples-fondation/struct_mesh/
fsem/examples-fondation/struct_mesh/meshPN.msh
fsem/examples-fondation/struct_mesh/meshPN.sce
fsem/examples-fondation/struct_mesh/meshPN_refine.edp
Added: fsem/examples-fondation/struct_mesh/meshPN.msh
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.msh (rev 0)
+++ fsem/examples-fondation/struct_mesh/meshPN.msh 2007-03-09 12:49:44 UTC (rev 120)
@@ -0,0 +1,434 @@
+108 173 152
+100 0 33
+100 -0.05 32
+90.9501437128 0 33
+80.6 0 61
+91.1929192662 -0.05 30
+100 -0.1 108
+80.6 -0.05 75
+100 -100 108
+100 -45.4293942034 108
+61.2 0 60
+70.9 -0.05 29
+80.6 -0.1 107
+61.2 -0.05 74
+80.6 -100 107
+80.6 -46.8386109412 107
+41.8 0 59
+51.5 -0.05 28
+61.2 -0.1 106
+41.8 -0.05 73
+61.2 -46.8386109412 106
+61.2 -100 106
+22.4 0 58
+32.1 -0.05 27
+41.8 -0.1 105
+22.4 -0.05 72
+41.8 -46.8386109412 105
+41.8 -100 105
+11.2756626368 0 37
+14.5332746625 -0.05 26
+8.20221236944 -0.05 26
+22.4 -0.1 104
+22.4 -46.8386109412 104
+22.4 -100 104
+3 -100 103
+3 0 71
+3 -0.1 103
+3 -0.05 71
+2.7 -0.05 70
+3 -30.4033819616 103
+3 -63.591738981 103
+2.7 -63.5925815433 102
+2.7 -100 102
+2.7 0 70
+2.7 -0.1 102
+2.55 -0.05 24
+2.7 -30.4041560471 102
+2.4 -0.05 69
+2.4 -63.5925815433 101
+2.4 -100 101
+2.4 0 69
+2.1 -100 100
+2.4 -30.4041560471 101
+2.25 -0.05 23
+2.4 -0.1 101
+2.1 -0.05 68
+2.1 -63.5925815433 100
+2.1 0 68
+1.8 -100 99
+1.95 -0.05 22
+1.8 -0.05 67
+2.1 -30.4041560471 100
+2.1 -0.1 100
+1.8 -63.5925815433 99
+1.8 0 67
+1.5 -100 98
+1.8 -0.1 99
+1.65 -0.05 21
+1.5 -0.05 66
+1.8 -30.4041560471 99
+1.5 -63.5925815433 98
+1.5 0 66
+1.2 -100 97
+0.9 -100 96
+1.2 -63.5925815433 97
+1.5 -0.1 98
+1.35 -0.05 20
+1.5 -30.4041560471 98
+1.2 -0.05 65
+1.2 0 65
+1.2 -30.4041560471 97
+0.6 -100 95
+0.9 -63.5925815433 96
+1.2 -0.1 97
+1.05 -0.05 19
+0.9 -0.05 64
+0.9 0 64
+0.9 -30.4041560471 96
+0.3 -100 94
+0.6 -63.5925815433 95
+0.9 -0.1 96
+0.75 -0.05 18
+0.6 -0.05 63
+0.6 0 63
+0 -100 79
+0.6 -30.4041560471 95
+0.3 -63.5925815433 94
+0.6 -0.1 95
+0.45 -0.05 17
+0.3 0 62
+0 -45.4302308112 78
+0.3 -30.4041560471 94
+0.3 -0.05 62
+0.3 -0.1 94
+0.142383313179 0 47
+0 -0.1 78
+0.140424433351 -0.05 16
+0 0 76
+0 -0.05 77
+12 9 6 0
+9 12 15 0
+8 9 15 0
+8 15 14 0
+12 18 15 1
+21 14 15 1
+20 21 15 1
+20 15 18 1
+20 18 24 2
+27 21 26 2
+20 26 21 2
+20 24 26 2
+26 24 31 3
+32 26 31 3
+33 27 32 3
+32 27 26 3
+32 31 39 4
+40 32 39 4
+33 32 40 4
+33 40 34 4
+36 39 31 4
+44 39 36 5
+39 44 46 5
+40 39 46 5
+40 46 41 5
+42 34 41 5
+34 40 41 5
+54 46 44 6
+49 42 48 6
+41 48 42 6
+46 48 41 6
+48 46 52 6
+54 52 46 6
+54 61 52 7
+62 61 54 7
+51 49 56 7
+48 56 49 7
+52 56 48 7
+56 52 61 7
+69 61 62 8
+56 58 51 8
+63 58 56 8
+61 63 56 8
+63 61 69 8
+69 62 66 8
+69 66 75 9
+69 75 77 9
+69 77 70 9
+63 65 58 9
+70 65 63 9
+69 70 63 9
+83 77 75 10
+77 83 80 10
+77 80 74 10
+77 74 70 10
+70 74 65 10
+72 65 74 10
+80 83 87 11
+83 90 87 11
+73 72 82 11
+74 82 72 11
+80 82 74 11
+87 82 80 11
+87 90 95 12
+90 97 95 12
+82 81 73 12
+82 89 81 12
+87 89 82 12
+95 89 87 12
+95 97 101 13
+95 101 96 13
+89 88 81 13
+89 96 88 13
+95 96 89 13
+101 97 103 13
+101 103 105 14
+105 100 101 14
+101 100 96 14
+96 94 88 14
+100 94 96 14
+108 105 106 31
+103 106 105 31
+103 102 106 31
+107 108 106 32
+104 107 106 32
+104 106 102 32
+99 104 102 32
+7 11 12 33
+12 11 18 33
+11 13 18 33
+13 17 18 34
+18 17 24 34
+17 19 24 34
+19 23 24 35
+31 23 25 35
+24 23 31 35
+31 25 29 36
+31 29 36 36
+36 29 30 36
+37 36 30 36
+43 37 35 37
+38 37 43 37
+45 38 43 38
+45 43 50 38
+47 45 50 38
+47 50 53 39
+53 57 55 39
+50 57 53 39
+59 55 57 40
+64 60 59 40
+57 64 59 40
+64 67 60 41
+64 71 67 41
+67 71 68 41
+76 68 71 42
+76 71 79 42
+78 76 79 42
+84 78 79 43
+84 79 86 43
+84 86 85 43
+85 86 91 44
+93 92 91 44
+86 93 91 44
+93 98 92 45
+93 99 98 45
+99 102 98 45
+4 11 7 47
+13 11 10 47
+4 10 11 47
+13 10 17 48
+10 16 17 48
+17 16 19 48
+19 16 23 49
+16 22 23 49
+23 22 25 49
+25 22 29 50
+22 28 29 50
+29 28 30 50
+28 35 30 50
+37 30 35 50
+44 36 37 51
+38 44 37 51
+45 44 38 52
+44 45 54 52
+54 45 47 52
+54 47 53 53
+54 53 62 53
+62 53 55 53
+62 55 59 54
+62 59 66 54
+66 59 60 54
+66 60 67 55
+75 67 68 55
+66 67 75 55
+75 68 76 56
+83 76 78 56
+83 75 76 56
+84 83 78 57
+90 84 85 57
+84 90 83 57
+85 91 90 58
+91 92 97 58
+90 91 97 58
+92 98 97 59
+98 102 103 59
+97 98 103 59
+4 7 3 75
+5 2 1 75
+1 3 5 75
+7 5 3 75
+5 6 2 77
+12 6 5 77
+7 12 5 77
+8 9 108
+9 6 108
+15 14 107
+12 15 107
+20 21 106
+18 20 106
+26 27 105
+24 26 105
+32 33 104
+31 32 104
+40 34 103
+39 40 103
+36 39 103
+41 42 102
+46 41 102
+44 46 102
+48 49 101
+52 48 101
+54 52 101
+56 51 100
+61 56 100
+62 61 100
+63 58 99
+69 63 99
+66 69 99
+70 65 98
+77 70 98
+75 77 98
+74 72 97
+80 74 97
+83 80 97
+82 73 96
+87 82 96
+90 87 96
+89 81 95
+95 89 95
+97 95 95
+96 88 94
+101 96 94
+103 101 94
+14 8 93
+21 14 92
+27 21 91
+33 27 90
+34 33 89
+42 34 88
+49 42 87
+51 49 86
+58 51 85
+65 58 84
+72 65 83
+73 72 82
+81 73 81
+88 81 80
+94 88 79
+105 100 78
+100 94 78
+108 105 77
+107 108 76
+12 7 75
+13 18 74
+19 24 73
+25 31 72
+37 35 71
+43 38 70
+50 47 69
+57 55 68
+64 60 67
+71 68 66
+79 78 65
+86 85 64
+93 92 63
+102 99 62
+7 4 61
+10 13 60
+16 19 59
+22 25 58
+37 36 57
+38 44 56
+47 54 55
+55 62 54
+60 66 53
+68 75 52
+78 83 51
+85 90 50
+92 97 49
+103 102 48
+99 104 47
+104 107 47
+93 99 46
+86 93 45
+79 86 44
+71 79 43
+64 71 42
+57 64 41
+50 57 40
+43 50 39
+35 43 38
+22 28 37
+28 35 37
+16 22 36
+10 16 35
+4 10 34
+1 3 33
+3 4 33
+2 1 32
+6 2 31
+7 5 30
+5 2 30
+11 13 29
+7 11 29
+17 19 28
+13 17 28
+23 25 27
+19 23 27
+30 37 26
+29 30 26
+25 29 26
+38 37 25
+47 45 24
+45 38 24
+55 53 23
+53 47 23
+60 59 22
+59 55 22
+68 67 21
+67 60 21
+78 76 20
+76 68 20
+85 84 19
+84 78 19
+92 91 18
+91 85 18
+102 98 17
+98 92 17
+106 108 16
+102 106 16
+6 12 15
+12 18 14
+18 24 13
+24 31 12
+31 36 11
+36 44 10
+44 54 9
+54 62 8
+62 66 7
+66 75 6
+75 83 5
+83 90 4
+90 97 3
+97 103 2
+103 105 1
Added: fsem/examples-fondation/struct_mesh/meshPN.sce
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.sce (rev 0)
+++ fsem/examples-fondation/struct_mesh/meshPN.sce 2007-03-09 12:49:44 UTC (rev 120)
@@ -0,0 +1,245 @@
+// Generate structure mesh for FreeFem++/FSEM
+//
+// las_n waf_n
+// 0 las_R waf_R
+// |-*-|-*-|-*-|-*-|-*-|-------------------
+// | | | \xA0 | | |
+// |-*-|-*-|-*-|-*-|-*-|--------------------- -Xj
+// | | | \xA0| | |
+// |-*-|-*-|-*-|-*-|-*-|--------------------- -Xjm
+// |
+// |
+// |
+// |------------------------------------- -waf_T
+//
+//
+
+Xjm = 0.1; // [um]
+Xj=Xjm/2;
+las_R = 3.0;// [um]
+las_n = 10; // number of points under laser
+waf_R = 100; // [um]
+waf_n = 5; // [um]
+waf_T = 100; // [um]
+filename = "meshPN.edp";
+fileid = file('open', filename, 'unknown');
+buildmesh = "mesh Th = buildmesh(";
+n=2; // number of element between lines
+
+// *************************
+// *** D0PED LAYER PART
+// *************************
+
+// inner border at -Xjm
+d= las_R/las_n;
+r=0; rprev=r;
+for i=0:las_n-1
+ r=r+d;
+ line = sprintf("border inn%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, -Xjm);
+ buildmesh = buildmesh+sprintf("inn%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+
+for i=las_n:las_n+waf_n-1
+ d = (waf_R-las_R)/waf_n;
+ r=r+d;
+ line = sprintf("border inn%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, -Xjm);
+ buildmesh = buildmesh+sprintf("inn%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+// inner border at -Xj
+d= las_R/las_n;
+r=0; rprev=r;
+for i=0:las_n-1
+ r=r+d;
+ line = sprintf("border innXj%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, -Xj);
+ buildmesh = buildmesh+sprintf("innXj%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+
+for i=las_n:las_n+waf_n-1
+ d = (waf_R-las_R)/waf_n;
+ r=r+d;
+ line = sprintf("border innXj%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, -Xj);
+ buildmesh = buildmesh+sprintf("innXj%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+
+
+// right border
+line = sprintf("border right1(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", -Xjm, -Xj, rprev);
+buildmesh = buildmesh+sprintf("right1(%d) + ",n);
+printf("%s\n", line);
+fprintf(fileid, "%s", line);
+
+// right border
+line = sprintf("border right2(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", -Xj, 0, rprev);
+buildmesh = buildmesh+sprintf("right2(%d) + ",n);
+printf("%s\n", line);
+fprintf(fileid, "%s", line);
+
+
+// top border
+for i=las_n+waf_n-1:-1:las_n
+ d = (waf_R-las_R)/waf_n;
+ r=r-d;
+ line = sprintf("border top%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, 0);
+ buildmesh = buildmesh+sprintf("top%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+
+d= las_R/las_n;
+for i=las_n-1:-1:0
+ r=r-d;
+ line = sprintf("border top%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, 0);
+ buildmesh = buildmesh+sprintf("top%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+// inner vertical border
+d= las_R/las_n;
+r=0; rprev=r;
+for i=0:las_n-1
+ r=r+d;
+ line = sprintf("border innV1%02d(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", i, -Xjm, -Xj, r);
+ buildmesh = buildmesh+sprintf("innV1%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+for i=las_n:las_n+waf_n-2
+ d = (waf_R-las_R)/waf_n;
+ r=r+d;
+ line = sprintf("border innV2%02d(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", i, -Xj, 0, r);
+ buildmesh = buildmesh+sprintf("innV2%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+d= las_R/las_n;
+r=0; rprev=r;
+for i=0:las_n-1
+ r=r+d;
+ line = sprintf("border innV2%02d(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", i, -Xj, 0, r);
+ buildmesh = buildmesh+sprintf("innV2%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+for i=las_n:las_n+waf_n-2
+ d = (waf_R-las_R)/waf_n;
+ r=r+d;
+ line = sprintf("border innV1%02d(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", i, -Xjm, -Xj, r);
+ buildmesh = buildmesh+sprintf("innV1%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+
+// left border
+line = sprintf("border left1(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", 0, -Xj, 0);
+buildmesh = buildmesh+sprintf("left1(%d)+",n);
+printf("%s\n", line);
+fprintf(fileid, "%s", line);
+
+// left border
+line = sprintf("border left2(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", -Xj, -Xjm, 0);
+buildmesh = buildmesh+sprintf("left2(%d)+",n);
+printf("%s\n", line);
+fprintf(fileid, "%s", line);
+
+
+// *************************
+// *** SUBSTRATE PART
+// *************************
+
+// left
+line = sprintf("border leftS(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", -Xjm, -waf_T, 0);
+buildmesh = buildmesh+sprintf("leftS(%d)+",n);
+printf("%s\n", line);
+fprintf(fileid, "%s", line);
+
+// bottom
+d= las_R/las_n;
+r=0; rprev=r;
+for i=0:las_n-1
+ r=r+d;
+ line = sprintf("border botS%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, -waf_T);
+ buildmesh = buildmesh+sprintf("botS%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+
+for i=las_n:las_n+waf_n-1
+ d = (waf_R-las_R)/waf_n;
+ r=r+d;
+ line = sprintf("border botS%02d(t=%1.4f,%1.4f){x=t;y=%1.4f;};\n", i, rprev, r, -waf_T);
+ buildmesh = buildmesh+sprintf("botS%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+
+
+// inner vertical border
+d= las_R/las_n;
+r=0; rprev=r;
+for i=0:las_n-1
+ r=r+d;
+ line = sprintf("border innVS%02d(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", i, -waf_T, -Xjm, r);
+ buildmesh = buildmesh+sprintf("innVS%02d(%d) + ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+for i=las_n:las_n+waf_n-2
+ d = (waf_R-las_R)/waf_n;
+ r=r+d;
+ line = sprintf("border innVS%02d(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", i, -waf_T, -Xjm,r);
+ buildmesh = buildmesh+sprintf("innVS%02d(%d)+ ",i,n);
+ printf("%s\n", line);
+ fprintf(fileid, "%s", line);
+ rprev=r;
+end
+
+// right
+line = sprintf("border rightS(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", -waf_T, -Xjm, waf_R);
+buildmesh = buildmesh+sprintf("rightS(%d));",n);
+printf("%s\n", line);
+fprintf(fileid, "%s", line);
+
+printf(buildmesh);
+fprintf(fileid, "%s", buildmesh);
+fprintf(fileid, "plot(Th, wait=1);");
+
+
+file('close',file() );
+
+
+
+
Added: fsem/examples-fondation/struct_mesh/meshPN_refine.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN_refine.edp (rev 0)
+++ fsem/examples-fondation/struct_mesh/meshPN_refine.edp 2007-03-09 12:49:44 UTC (rev 120)
@@ -0,0 +1,28 @@
+mesh Th = readmesh("meshPN.msh");
+
+plot(Th, wait=1);
+
+real Xj = 0.05; // [um]
+real ychar = 0.001; // [um]
+
+macro DopingProfile()
+ exp(-((y+Xj)/ychar)^2)
+ // EOM
+
+fespace Vh(Th, P1);
+Vh profile;
+
+
+real Err;
+for(int i=0; i<20; i++) {
+ profile = DopingProfile;
+ Err = (0.001 -0.1) *i/20 + 0.1;
+ try{
+ Th = adaptmesh(Th, profile, err=Err, nbsmooth=0, nbvx=100000, iso=false);
+ } catch(...) {
+ i--;
+ }
+ plot(Th, wait=1);
+}
+
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|