fsem-commits Mailing List for FSEM
Status: Beta
Brought to you by:
fabiandortu
You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(12) |
Sep
(3) |
Oct
(35) |
Nov
(17) |
Dec
(4) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(5) |
Feb
(15) |
Mar
(15) |
Apr
(5) |
May
(2) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
|
From: <fab...@us...> - 2007-11-15 12:45:18
|
Revision: 138
http://fsem.svn.sourceforge.net/fsem/?rev=138&view=rev
Author: fabiandortu
Date: 2007-11-15 04:45:21 -0800 (Thu, 15 Nov 2007)
Log Message:
-----------
Added comment on steady periodic example file.
Modified Paths:
--------------
fsem/examples-tutorial/003f_CarrNonLinear_SteadyPeriodic.edp
Modified: fsem/examples-tutorial/003f_CarrNonLinear_SteadyPeriodic.edp
===================================================================
--- fsem/examples-tutorial/003f_CarrNonLinear_SteadyPeriodic.edp 2007-08-24 11:40:52 UTC (rev 137)
+++ fsem/examples-tutorial/003f_CarrNonLinear_SteadyPeriodic.edp 2007-11-15 12:45:21 UTC (rev 138)
@@ -8,10 +8,12 @@
real thick = 600 * ConvU2M;
real radius = 600 * ConvU2M;
bool waitflag = false;
+
/****************************************************************
* Define the mesh. The mesh must be adimentional (I will try to
* make that automatice in the future)
****************************************************************/
+
real r1 = radius/GloScaX;
real y1 =-thick/GloScaY;
border topRight(t=r1, 0.3*r1) { x=t; y=0;}
@@ -22,9 +24,6 @@
GloMesh = buildmesh(topRight(50) + topLeft(100) + outer(50) + bottom(50) + inner(200));
//GloTempContactLabel[0] = 100; GloTempContactTc[0] =0; //this line is needed if frequency = 0, otherwise non physical temp.
-
-
-
ParUsrNDOP = 0.0;
ParUsrPDOP = 1e16 * ConvC2M^(-3);
@@ -46,30 +45,44 @@
GloVarSemiELE=1e18*ConvC2M^(-3);
- ModUsrOptCarrGen=1; // Switch on optical carrier generation
- ModUsrBTBIP=1; // Band-to-band absorption model (Smith)
-ModUsrBGNSchenk=1;
- ModUsrRecAuger=1;
- ModUsrRecSRH=1;
- ModUsrRecSRHConcDepLifeTime=1;
- ModUsrMob = ModCSTMobPHUNI2;
- ModUsrDiff = ModCSTDiffFermifromMob;
-ModUsrDiffAmbi = ModCSTDiffAmbifromDiff;
+ModUsrOptCarrGen=1; // Switch on optical carrier generation
+ModUsrBTBIP=1; // Band-to-band absorption model (Smith)
+//ModUsrBGNSchenk=1; // Unset this model in order to have "Diff" (solution difference between steady state and steady periodic. see below) very small at 0 frequency.
+ModUsrRecAuger=1;
+ModUsrRecSRH=1;
+ModUsrRecSRHConcDepLifeTime=1;
+ModUsrMob = ModCSTMobPHUNI2;
+ModUsrDiff = ModCSTDiffFermifromMob;
+//ModUsrDiffAmbi = ModCSTDiffAmbifromDiff; // Unset this model in order to have "Diff" (solution difference between steady state and steady periodic. see below) very small at 0 frequency
+ModUsrDiffAmbi = ModCSTDiffAmbiCst;
/**************************************************************
- * Solve the non linear steady periodic state diff equation (probe+pump)
+ * Solve the non linear STEADY STATE diff equation (probe+pump)
**************************************************************/
-SolveCarrNonlinearSteady();
+SolveCarrNonlinearSteady(); // **** SOLVE ****
-GloVhP1 StatEXC;
-StatEXC = GloVarSemiEXC;
-ParUsrH1H0 = 0 ; // H1 is not taken into account in the calculation of Eg and D
-ParUsrLaserModFreq=1e6;
-SolveCarrNonlinearSteadyPeriodic(true); //(true) to work out the value of H2 and H3 as well. Usually not necessary
+/**************************************************************
+ * Solve the non linear STEADY PERIODIC state diff equation (probe+pump)
+ **************************************************************/
+
+GloVhP1 StatEXC; // Stationnary excess carrier.
+StatEXC = GloVarSemiEXC; //We store this to be able to compare with the
+ // steady periodic solution at zero frequency.
+
+ParUsrH1H0 = 0.0 ; // H1 is not taken into account in the calculation of Eg and D.
+ // The value can bet set as a real between [-2.0 to +2.0]
+ // Set to 0 to be at DC value.
+ // Set to +2 to be at high peak value
+ // Set to -2 to be at low peak value.
+ParUsrLaserModFreq=0; //1e6; // Hz
+
+SolveCarrNonlinearSteadyPeriodic(true); // **** SOLVE ****
+ // option (true) is to work out the value of H2 and H3 as well.
+ // Usually not necessary
-GloVhP1 TotalEXC;
+GloVhP1 TotalEXC; // Store peak amplitude to be compared with StatEXC
TotalEXC = GloVarSemiEXC + 2 * real(GloVarSemiEXCH1) + 2 * real(GloVarSemiEXCH2) + 2 * real(GloVarSemiEXCH3) ;
GloVhP1 Diff;
@@ -124,32 +137,35 @@
ParUsrLaserR[0] = 1 * ConvU2M;
ParUsrLaserR[1] = 1 * ConvU2M;
-//Full steady periodic calculations with complex heat generation (due to recombination term of H1)
-
+/*****************************************
+ **** Full steady periodic calculations
+ **** with COMPLEX heat generation (due to recombination term of H1)
+ *********************/
ModUsrHeatConductivityCst = 1;
ModUsrHeatRhoCpCst = 1;
ModUsrHeatHotCarrier = 1;
-ModUsrHeatRecH1 = 1; //heat generation due to recombination is complex
+ModUsrHeatRec = 0; // must be set to zero when COMPLEX generation is assumed
+ModUsrHeatRecH1 = 1; // heat generation due to recombination is complex
-SolveTempLinearSteadyPeriodic();
+SolveTempLinearSteadyPeriodic(); // **** SOLVE (temperature steady periodic complex generation H1) ****
GloVhP1<complex> TempfullSP;
TempfullSP = GloVarTempTc;
-// Specify heat source by a user defined function
-ModUsrHeatRecH1 = 0; //must absolutely be 0 before any further temperature resolution!
+/*********************************************
+ **** Full steady periodic calculations
+ **** with REAL heat generation (due to recombination term of H1).
+ ***********************/
+ModUsrHeatRec = 1; // heat generation due to recombination is real (abs value of the previous heat generation)
+ModUsrHeatRecH1 = 0; // must be set to zero when REAL generation is assumed
-//Full steady periodic calculations with real heat generation (due to recombination term of H1).
+GloVarSemiGenRecTOT = abs(GloVarSemiGenRecTOTH1); // Set recombination term for H1.
+ // The recombination is assumed in phase with the pump
+cout <<"RECTOTH1: "<< GloVarSemiGenRecTOTH1[].max << endl; // DEBUG output
+SolveTempLinearSteadyPeriodic(); // **** SOLVE (temperature steady periodic real generation abs(H1) ) ****
-ModUsrHeatRec = 1;//heat generation due to recombination is real (abs value of the previous heat generation)
-GloVarSemiGenRecTOT = GloVarSemiGenRecTOTH1; //recombination term for H1
-cout <<"RECTOTH1: "<< GloVarSemiGenRecTOTH1[].max <<endl;
-
-
-SolveTempLinearSteadyPeriodic();
-
GloVhP1 RealAbsG;
RealAbsG = real(GloVarTempTc);
GloVhP1 ImagAbsG;
@@ -159,26 +175,28 @@
/**************************************************************
* Solve the linear steady periodic heat equation (pump H2)
**************************************************************/
-//The option of SolveCarrNonlinearSteadyPeriodic() must obviously be true for this calculation!
-
-ParUsrLaserModFreq=2 * ParUsrLaserModFreq; //Absolutely needed!
+// The option of SolveCarrNonlinearSteadyPeriodic() must obviously be true for
+// this calculation since the complex the H2 carrier component is used in the calculation.
+
+ParUsrLaserModFreq=2 * ParUsrLaserModFreq; // Need to double the frequency. Absolutely needed!
ModUsrHeatRec = 0;
+ModUsrHeatRecH1 = 0;
ModUsrHeatRecH2 = 1; //heat generation due to recombination is complex for second harmonic
-ModUsrHeatHotCarrier = 0; //no hot carrier component to the 2nd temperature harmonic
-SolveTempLinearSteadyPeriodic();
+ModUsrHeatHotCarrier = 0; // no hot carrier component to the 2nd temperature harmonic (hot carrier only provides a first harmonic)
+SolveTempLinearSteadyPeriodic(); // **** SOLVE (temperature steady periodic complex generation H2) ****
-
-
/*********************************
* Test (for debugging purpose)
*********************************/
+// Note that the test do not succeed. (15 Novembre 2007). The reason is most probably that saved values correspond to another setting
+
x=0;
y=0;
-real Diff00 = Diff;
+real Diff00 = Diff; // this number should be small (1e21 m^-3 when pump frequency is 0 Hz and when all model are linear (constant diffusivity and no BGN)
real StatEXC00 = StatEXC;
real GloVarSemiEXC00 = TotalEXC;
real GloVarSemiEXC001real = RealEXCc;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-08-24 11:40:52
|
Revision: 137
http://fsem.svn.sourceforge.net/fsem/?rev=137&view=rev
Author: fabiandortu
Date: 2007-08-24 04:40:52 -0700 (Fri, 24 Aug 2007)
Log Message:
-----------
Changed website: new download command.
Modified Paths:
--------------
fsemhtdocs/download.html
Modified: fsemhtdocs/download.html
===================================================================
--- fsemhtdocs/download.html 2007-08-24 11:18:53 UTC (rev 136)
+++ fsemhtdocs/download.html 2007-08-24 11:40:52 UTC (rev 137)
@@ -32,7 +32,7 @@
No release is available yet. The code can be obtained via subversion (svn) with the
following command: <br><br>
-<code>svn co https://svn.sourceforge.net/svnroot/fsem fsem</code>
+<code>svn co https://fsem.svn.sourceforge.net/svnroot/fsem fsem</code>
<br><br>
More information can be obtained at
<a href="https://sourceforge.net/projects/fsem">FSEM project's page</a>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-08-24 11:18:55
|
Revision: 136
http://fsem.svn.sourceforge.net/fsem/?rev=136&view=rev
Author: fabiandortu
Date: 2007-08-24 04:18:53 -0700 (Fri, 24 Aug 2007)
Log Message:
-----------
Added Original Schenk BGN. This model do not work for Space Charge Region
but can be usefull to simulated uniform doping.
Modified Paths:
--------------
fsem/models/fsem_Mod_ComputeSemi.edp
fsem/models/fsem_Mod_FlagsSemi.edp
fsem/models/modules/Semi/fsem_ModBandgap.cpp
fsem/models/modules/Semi/fsem_ModBandgap.edp
Modified: fsem/models/fsem_Mod_ComputeSemi.edp
===================================================================
--- fsem/models/fsem_Mod_ComputeSemi.edp 2007-06-15 16:06:23 UTC (rev 135)
+++ fsem/models/fsem_Mod_ComputeSemi.edp 2007-08-24 11:18:53 UTC (rev 136)
@@ -153,7 +153,18 @@
ShowMinMax(tab5 + " GloVarSemiDEGAP(+=)", GloVarSemiDEGAP[], 1, "eV");
ShowMinMax(tab5 + " GloVarSemiDEGAPBc(+=)",GloVarSemiDEGAPBc[],1,"eV");
ShowMinMax(tab5 + " GloVarSemiDEGAPBv(+=)",GloVarSemiDEGAPBv[],1,"eV");
- }
+ }
+ if(ModUsrBGNSchenk0) {
+ if(fsemVERBOSITY>4) {
+ cout << tab5 << "(ModUsrBGNSchenk0)" << endl;
+ }
+ ModBandGapDEgSchenk0();
+ ShowMinMax(tab5 + " GloVarSemiEGAP(+=)", GloVarSemiEGAP[], 1, "eV");
+ ShowMinMax(tab5 + " GloVarSemiDEGAP(+=)", GloVarSemiDEGAP[], 1, "eV");
+ ShowMinMax(tab5 + " GloVarSemiDEGAPBc(+=)",GloVarSemiDEGAPBc[],1,"eV");
+ ShowMinMax(tab5 + " GloVarSemiDEGAPBv(+=)",GloVarSemiDEGAPBv[],1,"eV");
+ }
+
if(ModUsrBGNTemp) {
if(fsemVERBOSITY>4) {
cout << tab5 << "(ModUsrBGNTemp)" << endl;
Modified: fsem/models/fsem_Mod_FlagsSemi.edp
===================================================================
--- fsem/models/fsem_Mod_FlagsSemi.edp 2007-06-15 16:06:23 UTC (rev 135)
+++ fsem/models/fsem_Mod_FlagsSemi.edp 2007-08-24 11:18:53 UTC (rev 136)
@@ -75,9 +75,14 @@
*/
int ModUsrBGNSchenk=0;
/*TeXDoc
- Schenk(doping+carrier) Band Gap Narrowing
+ Schenk(doping+carrier) Band Gap Narrowing. Works with SCR.
& 0|1
*/
+int ModUsrBGNSchenk0=0;
+/*TeXDoc
+ Schenk(doping+carrier) Band Gap Narrowing. Original model. Do NOT work with SCR.
+ & 0|1
+*/
int ModUsrBGNTemp=0;
/*TeXDoc
Varshini(temperature) Bang Gap Narrowing
Modified: fsem/models/modules/Semi/fsem_ModBandgap.cpp
===================================================================
--- fsem/models/modules/Semi/fsem_ModBandgap.cpp 2007-06-15 16:06:23 UTC (rev 135)
+++ fsem/models/modules/Semi/fsem_ModBandgap.cpp 2007-08-24 11:18:53 UTC (rev 136)
@@ -120,8 +120,10 @@
}
-
-
+/**********************************************************************
+ *** Schenk's model corrected to deal with space charge region (SCR).
+ *** This is the default model.
+ ***********************************************************************/
double CppModBandGapDEgSchenk(KN<double> *const & Eg,
KN<double> *const & DEgBC,
KN<double> *const & DEgBV,
@@ -277,7 +279,166 @@
}
+/***************************************************************************
+ *** Schenk's original model. No correction for space charge region (SCR)
+ *** This model do not work in SCR but should give better results otherwise
+ ***************************************************************************/
+double CppModBandGapDEgSchenk0(KN<double> *const & Eg,
+ KN<double> *const & DEgBC,
+ KN<double> *const & DEgBV,
+ KN<double> *const & DEg, // OUTPUTS
+ KN<double> *const & nd, KN<double> *const & na, // INPUTS
+ KN<double> *const & ne, KN<double> *const & nh,
+ KN<double> *const & T )
+{
+ // J. Appl. Phys. Vol 84, No 7, 1 October 1998
+ // Looks like to be the ultimate model
+
+ // nd: donnor concentration: [m-3]
+ // na: acceptor concentration: [m-3]
+ // ne: total electron conc.: [m-3]
+ // nh: total hole conc.: [m-3]
+ // T : temperature: [K]
+
+ // DEgBC: band gap narrowing due to Conduction band (eV). Negative when narrowing (affinity increases).
+ // DEgBV: band gap narrowing due to Valence band (eV). Negative when narrowing.
+ // DEg : total band gap narrowing (eV): DEg = DEgBC + DEgBV
+ // EG : resulting band gap (eV)
+ // Check if all input vector have the same dimensions:
+ if((Eg->N() != DEgBC->N()) ||(DEgBC->N() != DEgBV->N()) || (DEgBV->N() != DEg->N())
+ ||(DEg->N() != nd->N())||(nd->N() != na->N()) || (na->N() != ne->N()) || (ne->N() != nh->N()) || (nh->N() != T->N()) ){
+ cout << "*** ERROR *** function CppModBandGapDEgSchenk0" << endl;
+ cout << "Eg->N(): " << Eg->N() << endl;
+ cout << "DEgBC->N(): " << DEgBC->N() << endl;
+ cout << "DEgBV->N(): " << DEgBV->N() << endl;
+ cout << "DEg->N(): " << DEg->N() << endl;
+ cout << "nd->N(): " << nd->N() << endl;
+ cout << "na->N(): " << na->N() << endl;
+ cout << "ne->N(): " << ne->N() << endl;
+ cout << "nh->N(): " << nh->N() << endl;
+ cout << "T->N(): " << T->N() << endl;
+ cout << "*** Error ***: CppModBandGapDEgSchenk0: input vectors do no have the same dimension. Aborting." << endl;
+ exit(0);
+ }
+
+ double pi = 3.1415927;
+
+ // Table 1 of Schenk's paper.
+ double me_eff = 0.321; // effective electron mass me/m0
+ double mh_eff = 0.346;
+ double ge = 12.0;
+ double gh = 4.0;
+ double mu_eff = 0.1665; //
+ double alphae = 0.5187;
+ double alphah = 0.4813;
+ double Ryex = 16.55e-3; // [eV]
+ double aex = 37.19e-8; // [cm] Excitatonic Bohr radius
+ double epss = 11.7;
+
+ // Scale carrier densities
+ double n_scale = pow(aex, -3.0); // cm-3 // Scaling factor for carrier densities
+
+ double niS; // Scaled ni Total dopant concentrtion
+ double ndS; // Scaled na Donor conc.
+ double naS; // Scaled na Accpetor conc.
+
+ double neS; // Scaled ne
+ double nhS; // Scaled nh
+
+ // Table 2
+ double be = 8.0;
+ double bh = 1.0;
+ double ce = 1.3346;
+ double ch = 1.2365;
+ double de = 0.893;
+ double dh = 1.153;
+ double pe = 7.0 / 30.0;
+ double ph = 7.0 / 30.0;
+
+ // helper variables:
+ double kb = 8.6176334744e-5; // eV/K
+ double F;
+ double nsigma;
+ double np;
+ //double nsigma2; // correction to deal with space charge region
+ //double np2; // correction to deal with space charge region
+
+ // Table 3
+ double he = 3.91;
+ double hh = 4.20;
+ double je = 2.8585;
+ double jh = 2.9307;
+ double ke = 0.012;
+ double kh = 0.19;
+ double qe = 3.0 / 4.0;
+ double qh = 1.0 / 4.0;
+
+ double Ui;
+
+ double De_xc, Dh_xc, De_i, Dh_i; // to store various Delta Egap contributions
+
+ // Compute the change in bandgap due to heavy doping (Schenk) [eV]
+ int nn = Eg->N(); // get the number of nodes
+ for(int i=0; i<nn; i++) { // loop on the nodes
+
+ ndS = (*(nd[0]+i)) * 1.0e-6 / n_scale; // 1e-6 is to convert from m-3 to cm-3
+ naS = (*(na[0]+i)) * 1.0e-6 / n_scale;
+ niS = ndS + naS;
+
+ neS = abs((*(ne[0]+i))) * 1.0e-6 / n_scale;
+ nhS = abs((*(nh[0]+i))) * 1.0e-6 / n_scale;
+
+ F = kb * (*(T[0]+i)) / Ryex; // [adim]
+
+ nsigma = neS + nhS;
+ np = alphae * neS + alphah * nhS;
+
+ //nsigma2 = ndS + naS; // For SCR: nsigma = niS
+ //np2 = alphae * ndS + alphah * naS; // For SCR: np = alphae * NDOP + alphah * PDOP
+
+ Ui = nsigma * nsigma / pow(F,3.0);
+
+ //
+ // BGN due to exchange-correlation (carrier-carrier)
+ De_xc = -( pow(4.0 * pi, 3.0) * nsigma*nsigma * ( pow(48.0 * neS / pi / ge, 1.0/3.0) + ce * log(1.0 + de * pow(np, pe)) )
+ +(8.0 * pi * alphae/ge)* neS * F*F
+ +sqrt(8.0 *pi*nsigma) * pow(F, 5.0 / 2.0)
+ ) / (pow(4.0*pi, 3.0) * nsigma*nsigma + pow(F, 3.0) + be * sqrt(nsigma) * F*F + 40.0 * pow(nsigma, 3.0/2.0) * F);
+
+ Dh_xc = -( pow(4.0 * pi, 3.0) * nsigma*nsigma * ( pow(48.0 * nhS / pi / gh, 1.0/3.0) + ch * log(1.0 + dh * pow(np, ph)) )
+ +(8.0 * pi * alphah/gh)* nhS * F*F
+ +sqrt(8.0 *pi*nsigma) * pow(F, 5.0 / 2.0)
+ ) / (pow(4.0*pi, 3.0) * nsigma*nsigma + pow(F,3.0) + bh * sqrt(nsigma) * F*F + 40.0 * pow(nsigma, 3.0/2.0) * F);
+
+ // Note: the electron and hole conc. (ne and nh) cannot be zero otherwize get wrong (-inf) BGN values.
+ // BGN due to doping-carrier correlation
+ // At least one of the electron or hole concentration should be larger than the doping level or very large (unphysical)
+ // negative value are obtained
+ //
+
+ // Schenk original model (not valid when SCR but better otherwize)
+ De_i = -( niS * (1.0 + Ui))
+ /( sqrt(F * nsigma / (2.0 * pi)) * (1.0 + he * log(1.0 + sqrt(nsigma) / F) )
+ +je * Ui * pow(np, 3.0/4.0) * (1.0 + ke * pow(np, qe)) );
+
+ Dh_i = -( niS * (1.0 + Ui))
+ /( sqrt(F * nsigma / (2.0 * pi)) * (1.0 + hh * log(1.0 + sqrt(nsigma) / F) )
+ +jh * Ui * pow(np, 3.0/4.0) * (1.0 + kh * pow(np, qh)) );
+
+ (*(DEgBC[0]+i)) = De_xc * Ryex + De_i * Ryex ;
+ (*(DEgBV[0]+i)) = Dh_xc * Ryex + Dh_i * Ryex ;
+ (*(DEg[0]+i)) = (*(DEg[0]+i)) + (*(DEgBC[0]+i)) + (*(DEgBV[0]+i));
+
+ (*(Eg[0]+i)) = (*(Eg[0]+i)) + (*(DEgBC[0]+i)) + (*(DEgBV[0]+i));
+
+
+
+ }
+
+}
+
+
// add the function name to the freefem++ table
class Init { public:
Init();
@@ -287,6 +448,7 @@
Global.Add("CppModBandGapDEgTemp","(",new OneOperator8_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*,double* >(CppModBandGapDEgTemp));
Global.Add("CppModBandGapDEgSlotBoom","(",new OneOperator9_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<double>*, KN<double>*, KN<double>*, double* >(CppModBandGapDEgSlotBoom));
Global.Add("CppModBandGapDEgSchenk","(",new OneOperator9_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModBandGapDEgSchenk));
+Global.Add("CppModBandGapDEgSchenk0","(",new OneOperator9_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModBandGapDEgSchenk0));
}
Modified: fsem/models/modules/Semi/fsem_ModBandgap.edp
===================================================================
--- fsem/models/modules/Semi/fsem_ModBandgap.edp 2007-06-15 16:06:23 UTC (rev 135)
+++ fsem/models/modules/Semi/fsem_ModBandgap.edp 2007-08-24 11:18:53 UTC (rev 136)
@@ -48,6 +48,8 @@
/* Band gap difference [eV] due to Schenk BGN heavy doping (and carrier)
+ * This is the modified model to deal with space charge regions (SCR)
+ * and is the default.
*/
func real ModBandGapDEgSchenk() {
if(fsemModUseCpp) { /* Use C++ modules */
@@ -69,5 +71,28 @@
return 0.0;
}
+/*
+ * Original model. Cannot deal with space charge region (SCR) but
+ * should be more accurate otherwize
+ */
+func real ModBandGapDEgSchenk0() {
+ if(fsemModUseCpp) { /* Use C++ modules */
+ GloMeshFieldInterpol(GloVarSemiEGAP);
+ GloMeshFieldInterpol(GloVarSemiDEGAPBc);
+ GloMeshFieldInterpol(GloVarSemiDEGAPBv);
+ GloMeshFieldInterpol(GloVarSemiDEGAP);
+ GloMeshFieldInterpol(ParUsrNDOP);
+ GloMeshFieldInterpol(ParUsrPDOP);
+ GloMeshFieldInterpol(GloVarSemiELE);
+ GloMeshFieldInterpol(GloVarSemiHOL);
+ GloMeshFieldInterpol(GloVarTempT);
+ CppModBandGapDEgSchenk0(GloVarSemiEGAP[],GloVarSemiDEGAPBc[],GloVarSemiDEGAPBv[], GloVarSemiDEGAP[], ParUsrNDOP[], ParUsrPDOP[], GloVarSemiELE[], GloVarSemiHOL[], GloVarTempT[]);
+ } else {
+ cout << "*** ERROR: ModBandGapDEgSchenk0 not implemented" << endl;
+ exit(0);
+
+ }
+ return 0.0;
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-05-31 12:36:28
|
Revision: 134
http://fsem.svn.sourceforge.net/fsem/?rev=134&view=rev
Author: fabiandortu
Date: 2007-05-31 05:36:28 -0700 (Thu, 31 May 2007)
Log Message:
-----------
Corrected bug in scilab script for mesh generation: now the buffer can be any size
Modified Paths:
--------------
fsem/examples-fondation/struct_mesh/README
fsem/examples-fondation/struct_mesh/meshPN2.edp
fsem/examples-fondation/struct_mesh/meshPN2.sce
fsem/examples-fondation/struct_mesh/meshPN3.edp
fsem/examples-fondation/struct_mesh/meshPN3.sce
Modified: fsem/examples-fondation/struct_mesh/README
===================================================================
--- fsem/examples-fondation/struct_mesh/README 2007-05-04 11:17:03 UTC (rev 133)
+++ fsem/examples-fondation/struct_mesh/README 2007-05-31 12:36:28 UTC (rev 134)
@@ -3,15 +3,19 @@
When the mesh is not correctly made, the solution is wrong (like if there was a Dirichlet boundary
condition at the top surface although it is a Neuman condition)
-1) generate the geometry and inner borders with mesh2.sce scilab function make_PN().
+1) generate the geometry and inner borders with meshPN2.sce scilab function make_PN().
+ (use meshPN3.sce when there is a depletion region)
-2) This generates a file meshPN.edp which has to be edited manually before being launched with Freefem++:
- - just make sure there is only one line in the buildmesh command and that there is no front "+"
- - add a line savemesh(Th, "meshPN.msh");
- - and run FreeFem++ meshPN.edp;
+2) This generates a file meshPN2.edp (or meshPN3.edp) which can be executed with Freefem++.
+ However, the file has to be modified manually (go to the very last line) to add quotes in the savemesh command:
+ //savemesh(Th, meshPN2.msh); //add quotes to the filename
+ savemesh(Th, "meshPN2.msh"); //add quotes to the filename
+
+2b) Then run
+ FreeFem++ meshPN2.edp;
3) Then run
- Freefem++ meshPN_refine.edp
+ Freefem++ meshPN_refine2.edp
4) The refined mesh is then available in mesh_refined.msh
Modified: fsem/examples-fondation/struct_mesh/meshPN2.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN2.edp 2007-05-04 11:17:03 UTC (rev 133)
+++ fsem/examples-fondation/struct_mesh/meshPN2.edp 2007-05-31 12:36:28 UTC (rev 134)
@@ -1,212 +1,263 @@
-border TopLeftLas001(t=0.0000, 0.0003){x=t; y=0.0000;}
-border TopLeftLas002(t=0.0003, 0.0007){x=t; y=0.0000;}
-border TopLeftLas003(t=0.0007, 0.0011){x=t; y=0.0000;}
-border TopLeftLas004(t=0.0011, 0.0015){x=t; y=0.0000;}
-border TopLeftLas005(t=0.0015, 0.0019){x=t; y=0.0000;}
-border TopLeftLas006(t=0.0019, 0.0024){x=t; y=0.0000;}
-border TopLeftLas007(t=0.0024, 0.0029){x=t; y=0.0000;}
-border TopLeftLas008(t=0.0029, 0.0034){x=t; y=0.0000;}
-border TopLeftLas009(t=0.0034, 0.0039){x=t; y=0.0000;}
-border TopLeftLas010(t=0.0039, 0.0045){x=t; y=0.0000;}
-border TopLeftLas011(t=0.0045, 0.0052){x=t; y=0.0000;}
-border TopLeftLas012(t=0.0052, 0.0058){x=t; y=0.0000;}
-border TopLeftLas013(t=0.0058, 0.0066){x=t; y=0.0000;}
-border TopLeftLas014(t=0.0066, 0.0073){x=t; y=0.0000;}
-border TopLeftLas015(t=0.0073, 0.0082){x=t; y=0.0000;}
-border TopLeftLas016(t=0.0082, 0.0090){x=t; y=0.0000;}
-border TopLeftLas017(t=0.0090, 0.0100){x=t; y=0.0000;}
-border TopLeftLas018(t=0.0100, 0.0110){x=t; y=0.0000;}
-border TopLeftLas019(t=0.0110, 0.0120){x=t; y=0.0000;}
-border TopLeftLas020(t=0.0120, 0.0132){x=t; y=0.0000;}
-border TopLeftLas021(t=0.0132, 0.0144){x=t; y=0.0000;}
-border TopLeftLas022(t=0.0144, 0.0157){x=t; y=0.0000;}
-border TopLeftLas023(t=0.0157, 0.0171){x=t; y=0.0000;}
-border TopLeftLas024(t=0.0171, 0.0185){x=t; y=0.0000;}
-border TopLeftLas025(t=0.0185, 0.0201){x=t; y=0.0000;}
-border InnLeftLas001(t=0.0000, 0.0003){x=t; y=-0.0003;}
-border InnLeftLas002(t=0.0003, 0.0007){x=t; y=-0.0003;}
-border InnLeftLas003(t=0.0007, 0.0011){x=t; y=-0.0003;}
-border InnLeftLas004(t=0.0011, 0.0015){x=t; y=-0.0003;}
-border InnLeftLas005(t=0.0015, 0.0019){x=t; y=-0.0003;}
-border InnLeftLas006(t=0.0019, 0.0024){x=t; y=-0.0003;}
-border InnLeftLas007(t=0.0024, 0.0029){x=t; y=-0.0003;}
-border InnLeftLas008(t=0.0029, 0.0034){x=t; y=-0.0003;}
-border InnLeftLas009(t=0.0034, 0.0039){x=t; y=-0.0003;}
-border InnLeftLas010(t=0.0039, 0.0045){x=t; y=-0.0003;}
-border InnLeftLas011(t=0.0045, 0.0052){x=t; y=-0.0003;}
-border InnLeftLas012(t=0.0052, 0.0058){x=t; y=-0.0003;}
-border InnLeftLas013(t=0.0058, 0.0066){x=t; y=-0.0003;}
-border InnLeftLas014(t=0.0066, 0.0073){x=t; y=-0.0003;}
-border InnLeftLas015(t=0.0073, 0.0082){x=t; y=-0.0003;}
-border InnLeftLas016(t=0.0082, 0.0090){x=t; y=-0.0003;}
-border InnLeftLas017(t=0.0090, 0.0100){x=t; y=-0.0003;}
-border InnLeftLas018(t=0.0100, 0.0110){x=t; y=-0.0003;}
-border InnLeftLas019(t=0.0110, 0.0120){x=t; y=-0.0003;}
-border InnLeftLas020(t=0.0120, 0.0132){x=t; y=-0.0003;}
-border InnLeftLas021(t=0.0132, 0.0144){x=t; y=-0.0003;}
-border InnLeftLas022(t=0.0144, 0.0157){x=t; y=-0.0003;}
-border InnLeftLas023(t=0.0157, 0.0171){x=t; y=-0.0003;}
-border InnLeftLas024(t=0.0171, 0.0185){x=t; y=-0.0003;}
-border InnLeftLas025(t=0.0185, 0.0201){x=t; y=-0.0003;}
-border TopRightlas001(t=0.0201, 0.0218){x=t; y=0.0000;}
-border TopRightlas002(t=0.0218, 0.0236){x=t; y=0.0000;}
-border TopRightlas003(t=0.0236, 0.0256){x=t; y=0.0000;}
-border TopRightlas004(t=0.0256, 0.0278){x=t; y=0.0000;}
-border TopRightlas005(t=0.0278, 0.0303){x=t; y=0.0000;}
-border TopRightlas006(t=0.0303, 0.0330){x=t; y=0.0000;}
-border TopRightlas007(t=0.0330, 0.0359){x=t; y=0.0000;}
-border TopRightlas008(t=0.0359, 0.0392){x=t; y=0.0000;}
-border TopRightlas009(t=0.0392, 0.0428){x=t; y=0.0000;}
-border TopRightlas010(t=0.0428, 0.0467){x=t; y=0.0000;}
-border TopRightlas011(t=0.0467, 0.0510){x=t; y=0.0000;}
-border TopRightlas012(t=0.0510, 0.0558){x=t; y=0.0000;}
-border TopRightlas013(t=0.0558, 0.0611){x=t; y=0.0000;}
-border TopRightlas014(t=0.0611, 0.0668){x=t; y=0.0000;}
-border TopRightlas015(t=0.0668, 0.0732){x=t; y=0.0000;}
-border TopRightlas016(t=0.0732, 0.0802){x=t; y=0.0000;}
-border TopRightlas017(t=0.0802, 0.0879){x=t; y=0.0000;}
-border TopRightlas018(t=0.0879, 0.0964){x=t; y=0.0000;}
-border TopRightlas019(t=0.0964, 0.1057){x=t; y=0.0000;}
-border TopRightlas020(t=0.1057, 0.1159){x=t; y=0.0000;}
-border TopRightlas021(t=0.1159, 0.1272){x=t; y=0.0000;}
-border TopRightlas022(t=0.1272, 0.1396){x=t; y=0.0000;}
-border TopRightlas023(t=0.1396, 0.1533){x=t; y=0.0000;}
-border TopRightlas024(t=0.1533, 0.1683){x=t; y=0.0000;}
-border TopRightlas025(t=0.1683, 0.1849){x=t; y=0.0000;}
-border TopRightlas026(t=0.1849, 0.2031){x=t; y=0.0000;}
-border TopRightlas027(t=0.2031, 0.2231){x=t; y=0.0000;}
-border TopRightlas028(t=0.2231, 0.2451){x=t; y=0.0000;}
-border TopRightlas029(t=0.2451, 0.2694){x=t; y=0.0000;}
-border TopRightlas030(t=0.2694, 0.2961){x=t; y=0.0000;}
-border TopRightlas031(t=0.2961, 0.3254){x=t; y=0.0000;}
-border TopRightlas032(t=0.3254, 0.3578){x=t; y=0.0000;}
-border TopRightlas033(t=0.3578, 0.3933){x=t; y=0.0000;}
-border TopRightlas034(t=0.3933, 0.4324){x=t; y=0.0000;}
-border TopRightlas035(t=0.4324, 0.4755){x=t; y=0.0000;}
-border TopRightlas036(t=0.4755, 0.5228){x=t; y=0.0000;}
-border TopRightlas037(t=0.5228, 0.5749){x=t; y=0.0000;}
-border TopRightlas038(t=0.5749, 0.6323){x=t; y=0.0000;}
-border TopRightlas039(t=0.6323, 0.6954){x=t; y=0.0000;}
-border TopRightlas040(t=0.6954, 0.7648){x=t; y=0.0000;}
-border TopRightlas041(t=0.7648, 0.8412){x=t; y=0.0000;}
-border TopRightlas042(t=0.8412, 0.9253){x=t; y=0.0000;}
-border TopRightlas043(t=0.9253, 1.0178){x=t; y=0.0000;}
-border InnRightlas001(t=0.0201, 0.0218){x=t; y=-0.0003;}
-border InnRightlas002(t=0.0218, 0.0236){x=t; y=-0.0003;}
-border InnRightlas003(t=0.0236, 0.0256){x=t; y=-0.0003;}
-border InnRightlas004(t=0.0256, 0.0278){x=t; y=-0.0003;}
-border InnRightlas005(t=0.0278, 0.0303){x=t; y=-0.0003;}
-border InnRightlas006(t=0.0303, 0.0330){x=t; y=-0.0003;}
-border InnRightlas007(t=0.0330, 0.0359){x=t; y=-0.0003;}
-border InnRightlas008(t=0.0359, 0.0392){x=t; y=-0.0003;}
-border InnRightlas009(t=0.0392, 0.0428){x=t; y=-0.0003;}
-border InnRightlas010(t=0.0428, 0.0467){x=t; y=-0.0003;}
-border InnRightlas011(t=0.0467, 0.0510){x=t; y=-0.0003;}
-border InnRightlas012(t=0.0510, 0.0558){x=t; y=-0.0003;}
-border InnRightlas013(t=0.0558, 0.0611){x=t; y=-0.0003;}
-border InnRightlas014(t=0.0611, 0.0668){x=t; y=-0.0003;}
-border InnRightlas015(t=0.0668, 0.0732){x=t; y=-0.0003;}
-border InnRightlas016(t=0.0732, 0.0802){x=t; y=-0.0003;}
-border InnRightlas017(t=0.0802, 0.0879){x=t; y=-0.0003;}
-border InnRightlas018(t=0.0879, 0.0964){x=t; y=-0.0003;}
-border InnRightlas019(t=0.0964, 0.1057){x=t; y=-0.0003;}
-border InnRightlas020(t=0.1057, 0.1159){x=t; y=-0.0003;}
-border InnRightlas021(t=0.1159, 0.1272){x=t; y=-0.0003;}
-border InnRightlas022(t=0.1272, 0.1396){x=t; y=-0.0003;}
-border InnRightlas023(t=0.1396, 0.1533){x=t; y=-0.0003;}
-border InnRightlas024(t=0.1533, 0.1683){x=t; y=-0.0003;}
-border InnRightlas025(t=0.1683, 0.1849){x=t; y=-0.0003;}
-border InnRightlas026(t=0.1849, 0.2031){x=t; y=-0.0003;}
-border InnRightlas027(t=0.2031, 0.2231){x=t; y=-0.0003;}
-border InnRightlas028(t=0.2231, 0.2451){x=t; y=-0.0003;}
-border InnRightlas029(t=0.2451, 0.2694){x=t; y=-0.0003;}
-border InnRightlas030(t=0.2694, 0.2961){x=t; y=-0.0003;}
-border InnRightlas031(t=0.2961, 0.3254){x=t; y=-0.0003;}
-border InnRightlas032(t=0.3254, 0.3578){x=t; y=-0.0003;}
-border InnRightlas033(t=0.3578, 0.3933){x=t; y=-0.0003;}
-border InnRightlas034(t=0.3933, 0.4324){x=t; y=-0.0003;}
-border InnRightlas035(t=0.4324, 0.4755){x=t; y=-0.0003;}
-border InnRightlas036(t=0.4755, 0.5228){x=t; y=-0.0003;}
-border InnRightlas037(t=0.5228, 0.5749){x=t; y=-0.0003;}
-border InnRightlas038(t=0.5749, 0.6323){x=t; y=-0.0003;}
-border InnRightlas039(t=0.6323, 0.6954){x=t; y=-0.0003;}
-border InnRightlas040(t=0.6954, 0.7648){x=t; y=-0.0003;}
-border InnRightlas041(t=0.7648, 0.8412){x=t; y=-0.0003;}
-border InnRightlas042(t=0.8412, 0.9253){x=t; y=-0.0003;}
-border InnRightlas043(t=0.9253, 1.0178){x=t; y=-0.0003;}
-border InnVertLas001(t=-0.0003, 0.0000){x=0.0000; y=t;}
-border InnVertLas002(t=-0.0003, 0.0000){x=0.0003; y=t;}
-border InnVertLas003(t=-0.0003, 0.0000){x=0.0007; y=t;}
-border InnVertLas004(t=-0.0003, 0.0000){x=0.0011; y=t;}
-border InnVertLas005(t=-0.0003, 0.0000){x=0.0015; y=t;}
-border InnVertLas006(t=-0.0003, 0.0000){x=0.0019; y=t;}
-border InnVertLas007(t=-0.0003, 0.0000){x=0.0024; y=t;}
-border InnVertLas008(t=-0.0003, 0.0000){x=0.0029; y=t;}
-border InnVertLas009(t=-0.0003, 0.0000){x=0.0034; y=t;}
-border InnVertLas010(t=-0.0003, 0.0000){x=0.0039; y=t;}
-border InnVertLas011(t=-0.0003, 0.0000){x=0.0045; y=t;}
-border InnVertLas012(t=-0.0003, 0.0000){x=0.0052; y=t;}
-border InnVertLas013(t=-0.0003, 0.0000){x=0.0058; y=t;}
-border InnVertLas014(t=-0.0003, 0.0000){x=0.0066; y=t;}
-border InnVertLas015(t=-0.0003, 0.0000){x=0.0073; y=t;}
-border InnVertLas016(t=-0.0003, 0.0000){x=0.0082; y=t;}
-border InnVertLas017(t=-0.0003, 0.0000){x=0.0090; y=t;}
-border InnVertLas018(t=-0.0003, 0.0000){x=0.0100; y=t;}
-border InnVertLas019(t=-0.0003, 0.0000){x=0.0110; y=t;}
-border InnVertLas020(t=-0.0003, 0.0000){x=0.0120; y=t;}
-border InnVertLas021(t=-0.0003, 0.0000){x=0.0132; y=t;}
-border InnVertLas022(t=-0.0003, 0.0000){x=0.0144; y=t;}
-border InnVertLas023(t=-0.0003, 0.0000){x=0.0157; y=t;}
-border InnVertLas024(t=-0.0003, 0.0000){x=0.0171; y=t;}
-border InnVertLas025(t=-0.0003, 0.0000){x=0.0185; y=t;}
-border InnVertLas026(t=-0.0003, 0.0000){x=0.0201; y=t;}
-border InnVertLas027(t=-0.0003, 0.0000){x=0.0218; y=t;}
-border InnVertLas028(t=-0.0003, 0.0000){x=0.0236; y=t;}
-border InnVertLas029(t=-0.0003, 0.0000){x=0.0256; y=t;}
-border InnVertLas030(t=-0.0003, 0.0000){x=0.0278; y=t;}
-border InnVertLas031(t=-0.0003, 0.0000){x=0.0303; y=t;}
-border InnVertLas032(t=-0.0003, 0.0000){x=0.0330; y=t;}
-border InnVertLas033(t=-0.0003, 0.0000){x=0.0359; y=t;}
-border InnVertLas034(t=-0.0003, 0.0000){x=0.0392; y=t;}
-border InnVertLas035(t=-0.0003, 0.0000){x=0.0428; y=t;}
-border InnVertLas036(t=-0.0003, 0.0000){x=0.0467; y=t;}
-border InnVertLas037(t=-0.0003, 0.0000){x=0.0510; y=t;}
-border InnVertLas038(t=-0.0003, 0.0000){x=0.0558; y=t;}
-border InnVertLas039(t=-0.0003, 0.0000){x=0.0611; y=t;}
-border InnVertLas040(t=-0.0003, 0.0000){x=0.0668; y=t;}
-border InnVertLas041(t=-0.0003, 0.0000){x=0.0732; y=t;}
-border InnVertLas042(t=-0.0003, 0.0000){x=0.0802; y=t;}
-border InnVertLas043(t=-0.0003, 0.0000){x=0.0879; y=t;}
-border InnVertLas044(t=-0.0003, 0.0000){x=0.0964; y=t;}
-border InnVertLas045(t=-0.0003, 0.0000){x=0.1057; y=t;}
-border InnVertLas046(t=-0.0003, 0.0000){x=0.1159; y=t;}
-border InnVertLas047(t=-0.0003, 0.0000){x=0.1272; y=t;}
-border InnVertLas048(t=-0.0003, 0.0000){x=0.1396; y=t;}
-border InnVertLas049(t=-0.0003, 0.0000){x=0.1533; y=t;}
-border InnVertLas050(t=-0.0003, 0.0000){x=0.1683; y=t;}
-border InnVertLas051(t=-0.0003, 0.0000){x=0.1849; y=t;}
-border InnVertLas052(t=-0.0003, 0.0000){x=0.2031; y=t;}
-border InnVertLas053(t=-0.0003, 0.0000){x=0.2231; y=t;}
-border InnVertLas054(t=-0.0003, 0.0000){x=0.2451; y=t;}
-border InnVertLas055(t=-0.0003, 0.0000){x=0.2694; y=t;}
-border InnVertLas056(t=-0.0003, 0.0000){x=0.2961; y=t;}
-border InnVertLas057(t=-0.0003, 0.0000){x=0.3254; y=t;}
-border InnVertLas058(t=-0.0003, 0.0000){x=0.3578; y=t;}
-border InnVertLas059(t=-0.0003, 0.0000){x=0.3933; y=t;}
-border InnVertLas060(t=-0.0003, 0.0000){x=0.4324; y=t;}
-border InnVertLas061(t=-0.0003, 0.0000){x=0.4755; y=t;}
-border InnVertLas062(t=-0.0003, 0.0000){x=0.5228; y=t;}
-border InnVertLas063(t=-0.0003, 0.0000){x=0.5749; y=t;}
-border InnVertLas064(t=-0.0003, 0.0000){x=0.6323; y=t;}
-border InnVertLas065(t=-0.0003, 0.0000){x=0.6954; y=t;}
-border InnVertLas066(t=-0.0003, 0.0000){x=0.7648; y=t;}
-border InnVertLas067(t=-0.0003, 0.0000){x=0.8412; y=t;}
-border InnVertLas068(t=-0.0003, 0.0000){x=0.9253; y=t;}
-border InnVertLas069(t=-0.0003, 0.0000){x=1.0178; y=t;}
-border SubsLeft(t=-0.0003, -1.0000){x=0.0000; y=t;}
-border SubsRight(t=-1.0000, -0.0003){x=1.0178; y=t;}
-border SubsBottom(t=0.0000, 1.0178){x=t; y=-1.0000;}
+border TopLeftLas001(t=0.0000000, 0.0000667){x=t; y=0.0000000;}
+border TopLeftLas002(t=0.0000667, 0.0001387){x=t; y=0.0000000;}
+border TopLeftLas003(t=0.0001387, 0.0002164){x=t; y=0.0000000;}
+border TopLeftLas004(t=0.0002164, 0.0003004){x=t; y=0.0000000;}
+border TopLeftLas005(t=0.0003004, 0.0003911){x=t; y=0.0000000;}
+border TopLeftLas006(t=0.0003911, 0.0004891){x=t; y=0.0000000;}
+border TopLeftLas007(t=0.0004891, 0.0005949){x=t; y=0.0000000;}
+border TopLeftLas008(t=0.0005949, 0.0007091){x=t; y=0.0000000;}
+border TopLeftLas009(t=0.0007091, 0.0008325){x=t; y=0.0000000;}
+border TopLeftLas010(t=0.0008325, 0.0009658){x=t; y=0.0000000;}
+border TopLeftLas011(t=0.0009658, 0.0011097){x=t; y=0.0000000;}
+border TopLeftLas012(t=0.0011097, 0.0012651){x=t; y=0.0000000;}
+border TopLeftLas013(t=0.0012651, 0.0014330){x=t; y=0.0000000;}
+border TopLeftLas014(t=0.0014330, 0.0016143){x=t; y=0.0000000;}
+border TopLeftLas015(t=0.0016143, 0.0018101){x=t; y=0.0000000;}
+border TopLeftLas016(t=0.0018101, 0.0020216){x=t; y=0.0000000;}
+border TopLeftLas017(t=0.0020216, 0.0022500){x=t; y=0.0000000;}
+border TopLeftLas018(t=0.0022500, 0.0024967){x=t; y=0.0000000;}
+border TopLeftLas019(t=0.0024967, 0.0027631){x=t; y=0.0000000;}
+border TopLeftLas020(t=0.0027631, 0.0030508){x=t; y=0.0000000;}
+border TopLeftLas021(t=0.0030508, 0.0033615){x=t; y=0.0000000;}
+border TopLeftLas022(t=0.0033615, 0.0036971){x=t; y=0.0000000;}
+border TopLeftLas023(t=0.0036971, 0.0040596){x=t; y=0.0000000;}
+border TopLeftLas024(t=0.0040596, 0.0044510){x=t; y=0.0000000;}
+border TopLeftLas025(t=0.0044510, 0.0048737){x=t; y=0.0000000;}
+border TopLeftLas026(t=0.0048737, 0.0053303){x=t; y=0.0000000;}
+border TopLeftLas027(t=0.0053303, 0.0058234){x=t; y=0.0000000;}
+border TopLeftLas028(t=0.0058234, 0.0063559){x=t; y=0.0000000;}
+border TopLeftLas029(t=0.0063559, 0.0069311){x=t; y=0.0000000;}
+border TopLeftLas030(t=0.0069311, 0.0075522){x=t; y=0.0000000;}
+border TopLeftLas031(t=0.0075522, 0.0082231){x=t; y=0.0000000;}
+border TopLeftLas032(t=0.0082231, 0.0089476){x=t; y=0.0000000;}
+border TopLeftLas033(t=0.0089476, 0.0097300){x=t; y=0.0000000;}
+border TopLeftLas034(t=0.0097300, 0.0105751){x=t; y=0.0000000;}
+border TopLeftLas035(t=0.0105751, 0.0114878){x=t; y=0.0000000;}
+border TopLeftLas036(t=0.0114878, 0.0124735){x=t; y=0.0000000;}
+border TopLeftLas037(t=0.0124735, 0.0135380){x=t; y=0.0000000;}
+border TopLeftLas038(t=0.0135380, 0.0146877){x=t; y=0.0000000;}
+border TopLeftLas039(t=0.0146877, 0.0159294){x=t; y=0.0000000;}
+border TopLeftLas040(t=0.0159294, 0.0172704){x=t; y=0.0000000;}
+border TopLeftLas041(t=0.0172704, 0.0187187){x=t; y=0.0000000;}
+border TopLeftLas042(t=0.0187187, 0.0202829){x=t; y=0.0000000;}
+border InnLeftLas001(t=0.0000000, 0.0000667){x=t; y=-0.0003333;}
+border InnLeftLas002(t=0.0000667, 0.0001387){x=t; y=-0.0003333;}
+border InnLeftLas003(t=0.0001387, 0.0002164){x=t; y=-0.0003333;}
+border InnLeftLas004(t=0.0002164, 0.0003004){x=t; y=-0.0003333;}
+border InnLeftLas005(t=0.0003004, 0.0003911){x=t; y=-0.0003333;}
+border InnLeftLas006(t=0.0003911, 0.0004891){x=t; y=-0.0003333;}
+border InnLeftLas007(t=0.0004891, 0.0005949){x=t; y=-0.0003333;}
+border InnLeftLas008(t=0.0005949, 0.0007091){x=t; y=-0.0003333;}
+border InnLeftLas009(t=0.0007091, 0.0008325){x=t; y=-0.0003333;}
+border InnLeftLas010(t=0.0008325, 0.0009658){x=t; y=-0.0003333;}
+border InnLeftLas011(t=0.0009658, 0.0011097){x=t; y=-0.0003333;}
+border InnLeftLas012(t=0.0011097, 0.0012651){x=t; y=-0.0003333;}
+border InnLeftLas013(t=0.0012651, 0.0014330){x=t; y=-0.0003333;}
+border InnLeftLas014(t=0.0014330, 0.0016143){x=t; y=-0.0003333;}
+border InnLeftLas015(t=0.0016143, 0.0018101){x=t; y=-0.0003333;}
+border InnLeftLas016(t=0.0018101, 0.0020216){x=t; y=-0.0003333;}
+border InnLeftLas017(t=0.0020216, 0.0022500){x=t; y=-0.0003333;}
+border InnLeftLas018(t=0.0022500, 0.0024967){x=t; y=-0.0003333;}
+border InnLeftLas019(t=0.0024967, 0.0027631){x=t; y=-0.0003333;}
+border InnLeftLas020(t=0.0027631, 0.0030508){x=t; y=-0.0003333;}
+border InnLeftLas021(t=0.0030508, 0.0033615){x=t; y=-0.0003333;}
+border InnLeftLas022(t=0.0033615, 0.0036971){x=t; y=-0.0003333;}
+border InnLeftLas023(t=0.0036971, 0.0040596){x=t; y=-0.0003333;}
+border InnLeftLas024(t=0.0040596, 0.0044510){x=t; y=-0.0003333;}
+border InnLeftLas025(t=0.0044510, 0.0048737){x=t; y=-0.0003333;}
+border InnLeftLas026(t=0.0048737, 0.0053303){x=t; y=-0.0003333;}
+border InnLeftLas027(t=0.0053303, 0.0058234){x=t; y=-0.0003333;}
+border InnLeftLas028(t=0.0058234, 0.0063559){x=t; y=-0.0003333;}
+border InnLeftLas029(t=0.0063559, 0.0069311){x=t; y=-0.0003333;}
+border InnLeftLas030(t=0.0069311, 0.0075522){x=t; y=-0.0003333;}
+border InnLeftLas031(t=0.0075522, 0.0082231){x=t; y=-0.0003333;}
+border InnLeftLas032(t=0.0082231, 0.0089476){x=t; y=-0.0003333;}
+border InnLeftLas033(t=0.0089476, 0.0097300){x=t; y=-0.0003333;}
+border InnLeftLas034(t=0.0097300, 0.0105751){x=t; y=-0.0003333;}
+border InnLeftLas035(t=0.0105751, 0.0114878){x=t; y=-0.0003333;}
+border InnLeftLas036(t=0.0114878, 0.0124735){x=t; y=-0.0003333;}
+border InnLeftLas037(t=0.0124735, 0.0135380){x=t; y=-0.0003333;}
+border InnLeftLas038(t=0.0135380, 0.0146877){x=t; y=-0.0003333;}
+border InnLeftLas039(t=0.0146877, 0.0159294){x=t; y=-0.0003333;}
+border InnLeftLas040(t=0.0159294, 0.0172704){x=t; y=-0.0003333;}
+border InnLeftLas041(t=0.0172704, 0.0187187){x=t; y=-0.0003333;}
+border InnLeftLas042(t=0.0187187, 0.0202829){x=t; y=-0.0003333;}
+border TopRightlas001(t=0.0202829, 0.0219496){x=t; y=0.0000000;}
+border TopRightlas002(t=0.0219496, 0.0237835){x=t; y=0.0000000;}
+border TopRightlas003(t=0.0237835, 0.0258015){x=t; y=0.0000000;}
+border TopRightlas004(t=0.0258015, 0.0280221){x=t; y=0.0000000;}
+border TopRightlas005(t=0.0280221, 0.0304655){x=t; y=0.0000000;}
+border TopRightlas006(t=0.0304655, 0.0331542){x=t; y=0.0000000;}
+border TopRightlas007(t=0.0331542, 0.0361128){x=t; y=0.0000000;}
+border TopRightlas008(t=0.0361128, 0.0393683){x=t; y=0.0000000;}
+border TopRightlas009(t=0.0393683, 0.0429505){x=t; y=0.0000000;}
+border TopRightlas010(t=0.0429505, 0.0468923){x=t; y=0.0000000;}
+border TopRightlas011(t=0.0468923, 0.0512298){x=t; y=0.0000000;}
+border TopRightlas012(t=0.0512298, 0.0560025){x=t; y=0.0000000;}
+border TopRightlas013(t=0.0560025, 0.0612544){x=t; y=0.0000000;}
+border TopRightlas014(t=0.0612544, 0.0670333){x=t; y=0.0000000;}
+border TopRightlas015(t=0.0670333, 0.0733923){x=t; y=0.0000000;}
+border TopRightlas016(t=0.0733923, 0.0803895){x=t; y=0.0000000;}
+border TopRightlas017(t=0.0803895, 0.0880890){x=t; y=0.0000000;}
+border TopRightlas018(t=0.0880890, 0.0965613){x=t; y=0.0000000;}
+border TopRightlas019(t=0.0965613, 0.1058839){x=t; y=0.0000000;}
+border TopRightlas020(t=0.1058839, 0.1161423){x=t; y=0.0000000;}
+border TopRightlas021(t=0.1161423, 0.1274303){x=t; y=0.0000000;}
+border TopRightlas022(t=0.1274303, 0.1398512){x=t; y=0.0000000;}
+border TopRightlas023(t=0.1398512, 0.1535189){x=t; y=0.0000000;}
+border TopRightlas024(t=0.1535189, 0.1685583){x=t; y=0.0000000;}
+border TopRightlas025(t=0.1685583, 0.1851072){x=t; y=0.0000000;}
+border TopRightlas026(t=0.1851072, 0.2033172){x=t; y=0.0000000;}
+border TopRightlas027(t=0.2033172, 0.2233548){x=t; y=0.0000000;}
+border TopRightlas028(t=0.2233548, 0.2454037){x=t; y=0.0000000;}
+border TopRightlas029(t=0.2454037, 0.2696655){x=t; y=0.0000000;}
+border TopRightlas030(t=0.2696655, 0.2963625){x=t; y=0.0000000;}
+border TopRightlas031(t=0.2963625, 0.3257390){x=t; y=0.0000000;}
+border TopRightlas032(t=0.3257390, 0.3580640){x=t; y=0.0000000;}
+border TopRightlas033(t=0.3580640, 0.3936335){x=t; y=0.0000000;}
+border TopRightlas034(t=0.3936335, 0.4327730){x=t; y=0.0000000;}
+border TopRightlas035(t=0.4327730, 0.4758409){x=t; y=0.0000000;}
+border TopRightlas036(t=0.4758409, 0.5232316){x=t; y=0.0000000;}
+border TopRightlas037(t=0.5232316, 0.5753787){x=t; y=0.0000000;}
+border TopRightlas038(t=0.5753787, 0.6327599){x=t; y=0.0000000;}
+border TopRightlas039(t=0.6327599, 0.6959003){x=t; y=0.0000000;}
+border TopRightlas040(t=0.6959003, 0.7653781){x=t; y=0.0000000;}
+border TopRightlas041(t=0.7653781, 0.8418293){x=t; y=0.0000000;}
+border TopRightlas042(t=0.8418293, 0.9259539){x=t; y=0.0000000;}
+border TopRightlas043(t=0.9259539, 1.0185219){x=t; y=0.0000000;}
+border InnRightlas001(t=0.0202829, 0.0219496){x=t; y=-0.0003333;}
+border InnRightlas002(t=0.0219496, 0.0237835){x=t; y=-0.0003333;}
+border InnRightlas003(t=0.0237835, 0.0258015){x=t; y=-0.0003333;}
+border InnRightlas004(t=0.0258015, 0.0280221){x=t; y=-0.0003333;}
+border InnRightlas005(t=0.0280221, 0.0304655){x=t; y=-0.0003333;}
+border InnRightlas006(t=0.0304655, 0.0331542){x=t; y=-0.0003333;}
+border InnRightlas007(t=0.0331542, 0.0361128){x=t; y=-0.0003333;}
+border InnRightlas008(t=0.0361128, 0.0393683){x=t; y=-0.0003333;}
+border InnRightlas009(t=0.0393683, 0.0429505){x=t; y=-0.0003333;}
+border InnRightlas010(t=0.0429505, 0.0468923){x=t; y=-0.0003333;}
+border InnRightlas011(t=0.0468923, 0.0512298){x=t; y=-0.0003333;}
+border InnRightlas012(t=0.0512298, 0.0560025){x=t; y=-0.0003333;}
+border InnRightlas013(t=0.0560025, 0.0612544){x=t; y=-0.0003333;}
+border InnRightlas014(t=0.0612544, 0.0670333){x=t; y=-0.0003333;}
+border InnRightlas015(t=0.0670333, 0.0733923){x=t; y=-0.0003333;}
+border InnRightlas016(t=0.0733923, 0.0803895){x=t; y=-0.0003333;}
+border InnRightlas017(t=0.0803895, 0.0880890){x=t; y=-0.0003333;}
+border InnRightlas018(t=0.0880890, 0.0965613){x=t; y=-0.0003333;}
+border InnRightlas019(t=0.0965613, 0.1058839){x=t; y=-0.0003333;}
+border InnRightlas020(t=0.1058839, 0.1161423){x=t; y=-0.0003333;}
+border InnRightlas021(t=0.1161423, 0.1274303){x=t; y=-0.0003333;}
+border InnRightlas022(t=0.1274303, 0.1398512){x=t; y=-0.0003333;}
+border InnRightlas023(t=0.1398512, 0.1535189){x=t; y=-0.0003333;}
+border InnRightlas024(t=0.1535189, 0.1685583){x=t; y=-0.0003333;}
+border InnRightlas025(t=0.1685583, 0.1851072){x=t; y=-0.0003333;}
+border InnRightlas026(t=0.1851072, 0.2033172){x=t; y=-0.0003333;}
+border InnRightlas027(t=0.2033172, 0.2233548){x=t; y=-0.0003333;}
+border InnRightlas028(t=0.2233548, 0.2454037){x=t; y=-0.0003333;}
+border InnRightlas029(t=0.2454037, 0.2696655){x=t; y=-0.0003333;}
+border InnRightlas030(t=0.2696655, 0.2963625){x=t; y=-0.0003333;}
+border InnRightlas031(t=0.2963625, 0.3257390){x=t; y=-0.0003333;}
+border InnRightlas032(t=0.3257390, 0.3580640){x=t; y=-0.0003333;}
+border InnRightlas033(t=0.3580640, 0.3936335){x=t; y=-0.0003333;}
+border InnRightlas034(t=0.3936335, 0.4327730){x=t; y=-0.0003333;}
+border InnRightlas035(t=0.4327730, 0.4758409){x=t; y=-0.0003333;}
+border InnRightlas036(t=0.4758409, 0.5232316){x=t; y=-0.0003333;}
+border InnRightlas037(t=0.5232316, 0.5753787){x=t; y=-0.0003333;}
+border InnRightlas038(t=0.5753787, 0.6327599){x=t; y=-0.0003333;}
+border InnRightlas039(t=0.6327599, 0.6959003){x=t; y=-0.0003333;}
+border InnRightlas040(t=0.6959003, 0.7653781){x=t; y=-0.0003333;}
+border InnRightlas041(t=0.7653781, 0.8418293){x=t; y=-0.0003333;}
+border InnRightlas042(t=0.8418293, 0.9259539){x=t; y=-0.0003333;}
+border InnRightlas043(t=0.9259539, 1.0185219){x=t; y=-0.0003333;}
+border InnVertLas001(t=-0.0003333, 0.0000000){x=0.0000000; y=t;}
+border InnVertLas002(t=-0.0003333, 0.0000000){x=0.0000667; y=t;}
+border InnVertLas003(t=-0.0003333, 0.0000000){x=0.0001387; y=t;}
+border InnVertLas004(t=-0.0003333, 0.0000000){x=0.0002164; y=t;}
+border InnVertLas005(t=-0.0003333, 0.0000000){x=0.0003004; y=t;}
+border InnVertLas006(t=-0.0003333, 0.0000000){x=0.0003911; y=t;}
+border InnVertLas007(t=-0.0003333, 0.0000000){x=0.0004891; y=t;}
+border InnVertLas008(t=-0.0003333, 0.0000000){x=0.0005949; y=t;}
+border InnVertLas009(t=-0.0003333, 0.0000000){x=0.0007091; y=t;}
+border InnVertLas010(t=-0.0003333, 0.0000000){x=0.0008325; y=t;}
+border InnVertLas011(t=-0.0003333, 0.0000000){x=0.0009658; y=t;}
+border InnVertLas012(t=-0.0003333, 0.0000000){x=0.0011097; y=t;}
+border InnVertLas013(t=-0.0003333, 0.0000000){x=0.0012651; y=t;}
+border InnVertLas014(t=-0.0003333, 0.0000000){x=0.0014330; y=t;}
+border InnVertLas015(t=-0.0003333, 0.0000000){x=0.0016143; y=t;}
+border InnVertLas016(t=-0.0003333, 0.0000000){x=0.0018101; y=t;}
+border InnVertLas017(t=-0.0003333, 0.0000000){x=0.0020216; y=t;}
+border InnVertLas018(t=-0.0003333, 0.0000000){x=0.0022500; y=t;}
+border InnVertLas019(t=-0.0003333, 0.0000000){x=0.0024967; y=t;}
+border InnVertLas020(t=-0.0003333, 0.0000000){x=0.0027631; y=t;}
+border InnVertLas021(t=-0.0003333, 0.0000000){x=0.0030508; y=t;}
+border InnVertLas022(t=-0.0003333, 0.0000000){x=0.0033615; y=t;}
+border InnVertLas023(t=-0.0003333, 0.0000000){x=0.0036971; y=t;}
+border InnVertLas024(t=-0.0003333, 0.0000000){x=0.0040596; y=t;}
+border InnVertLas025(t=-0.0003333, 0.0000000){x=0.0044510; y=t;}
+border InnVertLas026(t=-0.0003333, 0.0000000){x=0.0048737; y=t;}
+border InnVertLas027(t=-0.0003333, 0.0000000){x=0.0053303; y=t;}
+border InnVertLas028(t=-0.0003333, 0.0000000){x=0.0058234; y=t;}
+border InnVertLas029(t=-0.0003333, 0.0000000){x=0.0063559; y=t;}
+border InnVertLas030(t=-0.0003333, 0.0000000){x=0.0069311; y=t;}
+border InnVertLas031(t=-0.0003333, 0.0000000){x=0.0075522; y=t;}
+border InnVertLas032(t=-0.0003333, 0.0000000){x=0.0082231; y=t;}
+border InnVertLas033(t=-0.0003333, 0.0000000){x=0.0089476; y=t;}
+border InnVertLas034(t=-0.0003333, 0.0000000){x=0.0097300; y=t;}
+border InnVertLas035(t=-0.0003333, 0.0000000){x=0.0105751; y=t;}
+border InnVertLas036(t=-0.0003333, 0.0000000){x=0.0114878; y=t;}
+border InnVertLas037(t=-0.0003333, 0.0000000){x=0.0124735; y=t;}
+border InnVertLas038(t=-0.0003333, 0.0000000){x=0.0135380; y=t;}
+border InnVertLas039(t=-0.0003333, 0.0000000){x=0.0146877; y=t;}
+border InnVertLas040(t=-0.0003333, 0.0000000){x=0.0159294; y=t;}
+border InnVertLas041(t=-0.0003333, 0.0000000){x=0.0172704; y=t;}
+border InnVertLas042(t=-0.0003333, 0.0000000){x=0.0187187; y=t;}
+border InnVertLas043(t=-0.0003333, 0.0000000){x=0.0202829; y=t;}
+border InnVertLas044(t=-0.0003333, 0.0000000){x=0.0219496; y=t;}
+border InnVertLas045(t=-0.0003333, 0.0000000){x=0.0237835; y=t;}
+border InnVertLas046(t=-0.0003333, 0.0000000){x=0.0258015; y=t;}
+border InnVertLas047(t=-0.0003333, 0.0000000){x=0.0280221; y=t;}
+border InnVertLas048(t=-0.0003333, 0.0000000){x=0.0304655; y=t;}
+border InnVertLas049(t=-0.0003333, 0.0000000){x=0.0331542; y=t;}
+border InnVertLas050(t=-0.0003333, 0.0000000){x=0.0361128; y=t;}
+border InnVertLas051(t=-0.0003333, 0.0000000){x=0.0393683; y=t;}
+border InnVertLas052(t=-0.0003333, 0.0000000){x=0.0429505; y=t;}
+border InnVertLas053(t=-0.0003333, 0.0000000){x=0.0468923; y=t;}
+border InnVertLas054(t=-0.0003333, 0.0000000){x=0.0512298; y=t;}
+border InnVertLas055(t=-0.0003333, 0.0000000){x=0.0560025; y=t;}
+border InnVertLas056(t=-0.0003333, 0.0000000){x=0.0612544; y=t;}
+border InnVertLas057(t=-0.0003333, 0.0000000){x=0.0670333; y=t;}
+border InnVertLas058(t=-0.0003333, 0.0000000){x=0.0733923; y=t;}
+border InnVertLas059(t=-0.0003333, 0.0000000){x=0.0803895; y=t;}
+border InnVertLas060(t=-0.0003333, 0.0000000){x=0.0880890; y=t;}
+border InnVertLas061(t=-0.0003333, 0.0000000){x=0.0965613; y=t;}
+border InnVertLas062(t=-0.0003333, 0.0000000){x=0.1058839; y=t;}
+border InnVertLas063(t=-0.0003333, 0.0000000){x=0.1161423; y=t;}
+border InnVertLas064(t=-0.0003333, 0.0000000){x=0.1274303; y=t;}
+border InnVertLas065(t=-0.0003333, 0.0000000){x=0.1398512; y=t;}
+border InnVertLas066(t=-0.0003333, 0.0000000){x=0.1535189; y=t;}
+border InnVertLas067(t=-0.0003333, 0.0000000){x=0.1685583; y=t;}
+border InnVertLas068(t=-0.0003333, 0.0000000){x=0.1851072; y=t;}
+border InnVertLas069(t=-0.0003333, 0.0000000){x=0.2033172; y=t;}
+border InnVertLas070(t=-0.0003333, 0.0000000){x=0.2233548; y=t;}
+border InnVertLas071(t=-0.0003333, 0.0000000){x=0.2454037; y=t;}
+border InnVertLas072(t=-0.0003333, 0.0000000){x=0.2696655; y=t;}
+border InnVertLas073(t=-0.0003333, 0.0000000){x=0.2963625; y=t;}
+border InnVertLas074(t=-0.0003333, 0.0000000){x=0.3257390; y=t;}
+border InnVertLas075(t=-0.0003333, 0.0000000){x=0.3580640; y=t;}
+border InnVertLas076(t=-0.0003333, 0.0000000){x=0.3936335; y=t;}
+border InnVertLas077(t=-0.0003333, 0.0000000){x=0.4327730; y=t;}
+border InnVertLas078(t=-0.0003333, 0.0000000){x=0.4758409; y=t;}
+border InnVertLas079(t=-0.0003333, 0.0000000){x=0.5232316; y=t;}
+border InnVertLas080(t=-0.0003333, 0.0000000){x=0.5753787; y=t;}
+border InnVertLas081(t=-0.0003333, 0.0000000){x=0.6327599; y=t;}
+border InnVertLas082(t=-0.0003333, 0.0000000){x=0.6959003; y=t;}
+border InnVertLas083(t=-0.0003333, 0.0000000){x=0.7653781; y=t;}
+border InnVertLas084(t=-0.0003333, 0.0000000){x=0.8418293; y=t;}
+border InnVertLas085(t=-0.0003333, 0.0000000){x=0.9259539; y=t;}
+border InnVertLas086(t=-0.0003333, 0.0000000){x=1.0185219; y=t;}
+border SubsLeft(t=-0.0003333, -1.0000000){x=0.0000000; y=t;}
+border SubsRight(t=-1.0000000, -0.0003333){x=1.0185219; y=t;}
+border SubsBottom(t=0.0000000, 1.0185219){x=t; y=-1.0000000;}
int n=2;
-mesh Th = buildmesh( TopLeftLas001(-n) + TopLeftLas002(-n) + TopLeftLas003(-n) + TopLeftLas004(-n) + TopLeftLas005(-n) + TopLeftLas006(-n) + TopLeftLas007(-n) + TopLeftLas008(-n) + TopLeftLas009(-n) + TopLeftLas010(-n) + TopLeftLas011(-n) + TopLeftLas012(-n) + TopLeftLas013(-n) + TopLeftLas014(-n) + TopLeftLas015(-n) + TopLeftLas016(-n) + TopLeftLas017(-n) + TopLeftLas018(-n) + TopLeftLas019(-n) + TopLeftLas020(-n) + TopLeftLas021(-n) + TopLeftLas022(-n) + TopLeftLas023(-n) + TopLeftLas024(-n) + TopLeftLas025(-n) + InnLeftLas001(+n) + InnLeftLas002(+n) + InnLeftLas003(+n) + InnLeftLas004(+n) + InnLeftLas005(+n) + InnLeftLas006(+n) + InnLeftLas007(+n) + InnLeftLas008(+n) + InnLeftLas009(+n) + InnLeftLas010(+n) + InnLeftLas011(+n) + InnLeftLas012(+n) + InnLeftLas013(+n) + InnLeftLas014(+n) + InnLeftLas015(+n) + InnLeftLas016(+n) + InnLeftLas017(+n) + InnLeftLas018(+n) + InnLeftLas019(+n) + InnLeftLas020(+n) + InnLeftLas021(+n) + InnLeftLas022(+n) + InnLeftLas023(+n) + InnLeftLas024(+n) + InnLeftLas025(+n) + TopRightlas001(-n) + TopRightlas002(-n) + TopRightlas003(-n) + TopRightlas004(-n) + TopRightlas005(-n) + TopRightlas006(-n) + TopRightlas007(-n) + TopRightlas008(-n) + TopRightlas009(-n) + TopRightlas010(-n) + TopRightlas011(-n) + TopRightlas012(-n) + TopRightlas013(-n) + TopRightlas014(-n) + TopRightlas015(-n) + TopRightlas016(-n) + TopRightlas017(-n) + TopRightlas018(-n) + TopRightlas019(-n) + TopRightlas020(-n) + TopRightlas021(-n) + TopRightlas022(-n) + TopRightlas023(-n) + TopRightlas024(-n) + TopRightlas025(-n) + TopRightlas026(-n) + TopRightlas027(-n) + TopRightlas028(-n) + TopRightlas029(-n) + TopRightlas030(-n) + TopRightlas031(-n) + TopRightlas032(-n) + TopRightlas033(-n) + TopRightlas034(-n) + TopRightlas035(-n) + TopRightlas036(-n) + TopRightlas037(-n) + TopRightlas038(-n) + TopRightlas039(-n) + TopRightlas040(-n) + TopRightlas041(-n) + TopRightlas042(-n) + TopRightlas043(-n) + InnRightlas001(+n) + InnRightlas002(+n) + InnRightlas003(+n) + InnRightlas004(+n) + InnRightlas005(+n) + InnRightlas006(+n) + InnRightlas007(+n) + InnRightlas008(+n) + InnRightlas009(+n) + InnRightlas010(+n) + InnRightlas011(+n) + InnRightlas012(+n) + InnRightlas013(+n) + InnRightlas014(+n) + InnRightlas015(+n) + InnRightlas016(+n) + InnRightlas017(+n) + InnRightlas018(+n) + InnRightlas019(+n) + InnRightlas020(+n) + InnRightlas021(+n) + InnRightlas022(+n) + InnRightlas023(+n) + InnRightlas024(+n) + InnRightlas025(+n) + InnRightlas026(+n) + InnRightlas027(+n) + InnRightlas028(+n) + InnRightlas029(+n) + InnRightlas030(+n) + InnRightlas031(+n) + InnRightlas032(+n) + InnRightlas033(+n) + InnRightlas034(+n) + InnRightlas035(+n) + InnRightlas036(+n) + InnRightlas037(+n) + InnRightlas038(+n) + InnRightlas039(+n) + InnRightlas040(+n) + InnRightlas041(+n) + InnRightlas042(+n) + InnRightlas043(+n)+InnVertLas001(-n)+InnVertLas002(n)+InnVertLas003(n)+InnVertLas004(n)+InnVertLas005(n)+InnVertLas006(n)+InnVertLas007(n)+InnVertLas008(n)+InnVertLas009(n)+InnVertLas010(n)+InnVertLas011(n)+InnVertLas012(n)+InnVertLas013(n)+InnVertLas014(n)+InnVertLas015(n)+InnVertLas016(n)+InnVertLas017(n)+InnVertLas018(n)+InnVertLas019(n)+InnVertLas020(n)+InnVertLas021(n)+InnVertLas022(n)+InnVertLas023(n)+InnVertLas024(n)+InnVertLas025(n)+InnVertLas026(n)+InnVertLas027(n)+InnVertLas028(n)+InnVertLas029(n)+InnVertLas030(n)+InnVertLas031(n)+InnVertLas032(n)+InnVertLas033(n)+InnVertLas034(n)+InnVertLas035(n)+InnVertLas036(n)+InnVertLas037(n)+InnVertLas038(n)+InnVertLas039(n)+InnVertLas040(n)+InnVertLas041(n)+InnVertLas042(n)+InnVertLas043(n)+InnVertLas044(n)+InnVertLas045(n)+InnVertLas046(n)+InnVertLas047(n)+InnVertLas048(n)+InnVertLas049(n)+InnVertLas050(n)+InnVertLas051(n)+InnVertLas052(n)+InnVertLas053(n)+InnVertLas054(n)+InnVertLas055(n)+InnVertLas056(n)+InnVertLas057(n)+InnVertLas058(n)+InnVertLas059(n)+InnVertLas060(n)+InnVertLas061(n)+InnVertLas062(n)+InnVertLas063(n)+InnVertLas064(n)+InnVertLas065(n)+InnVertLas066(n)+InnVertLas067(n)+InnVertLas068(n)+InnVertLas069(n) + SubsLeft(+n) + SubsRight(+n) + SubsBottom(+n));
+mesh Th = buildmesh(TopLeftLas001(-n) + TopLeftLas002(-n) + TopLeftLas003(-n) + TopLeftLas004(-n) + TopLeftLas005(-n) + TopLeftLas006(-n) + TopLeftLas007(-n) + TopLeftLas008(-n) + TopLeftLas009(-n) + TopLeftLas010(-n) + TopLeftLas011(-n) + TopLeftLas012(-n) + TopLeftLas013(-n) + TopLeftLas014(-n) + TopLeftLas015(-n) + TopLeftLas016(-n) + TopLeftLas017(-n) + TopLeftLas018(-n) + TopLeftLas019(-n) + TopLeftLas020(-n) + TopLeftLas021(-n) + TopLeftLas022(-n) + TopLeftLas023(-n) + TopLeftLas024(-n) + TopLeftLas025(-n) + TopLeftLas026(-n) + TopLeftLas027(-n) + TopLeftLas028(-n) + TopLeftLas029(-n) + TopLeftLas030(-n) + TopLeftLas031(-n) + TopLeftLas032(-n) + TopLeftLas033(-n) + TopLeftLas034(-n) + TopLeftLas035(-n) + TopLeftLas036(-n) + TopLeftLas037(-n) + TopLeftLas038(-n) + TopLeftLas039(-n) + TopLeftLas040(-n) + TopLeftLas041(-n) + TopLeftLas042(-n) + InnLeftLas001(+n) + InnLeftLas002(+n) + InnLeftLas003(+n) + InnLeftLas004(+n) + InnLeftLas005(+n) + InnLeftLas006(+n) + InnLeftLas007(+n) + InnLeftLas008(+n) + InnLeftLas009(+n) + InnLeftLas010(+n) + InnLeftLas011(+n) + InnLeftLas012(+n) + InnLeftLas013(+n) + InnLeftLas014(+n) + InnLeftLas015(+n) + InnLeftLas016(+n) + InnLeftLas017(+n) + InnLeftLas018(+n) + InnLeftLas019(+n) + InnLeftLas020(+n) + InnLeftLas021(+n) + InnLeftLas022(+n) + InnLeftLas023(+n) + InnLeftLas024(+n) + InnLeftLas025(+n) + InnLeftLas026(+n) + InnLeftLas027(+n) + InnLeftLas028(+n) + InnLeftLas029(+n) + InnLeftLas030(+n) + InnLeftLas031(+n) + InnLeftLas032(+n) + InnLeftLas033(+n) + InnLeftLas034(+n) + InnLeftLas035(+n) + InnLeftLas036(+n) + InnLeftLas037(+n) + InnLeftLas038(+n) + InnLeftLas039(+n) + InnLeftLas040(+n) + InnLeftLas041(+n) + InnLeftLas042(+n) + TopRightlas001(-n) + TopRightlas002(-n) + TopRightlas003(-n) + TopRightlas004(-n) + TopRightlas005(-n) + TopRightlas006(-n) + TopRightlas007(-n) + TopRightlas008(-n) + TopRightlas009(-n) + TopRightlas010(-n) + TopRightlas011(-n) + TopRightlas012(-n) + TopRightlas013(-n) + TopRightlas014(-n) + TopRightlas015(-n) + TopRightlas016(-n) + TopRightlas017(-n) + TopRightlas018(-n) + TopRightlas019(-n) + TopRightlas020(-n) + TopRightlas021(-n) + TopRightlas022(-n) + TopRightlas023(-n) + TopRightlas024(-n) + TopRightlas025(-n) + TopRightlas026(-n) + TopRightlas027(-n) + TopRightlas028(-n) + TopRightlas029(-n) + TopRightlas030(-n) + TopRightlas031(-n) + TopRightlas032(-n) + TopRightlas033(-n) + TopRightlas034(-n) + TopRightlas035(-n) + TopRightlas036(-n) + TopRightlas037(-n) + TopRightlas038(-n) + TopRightlas039(-n) + TopRightlas040(-n) + TopRightlas041(-n) + TopRightlas042(-n) + TopRightlas043(-n) + InnRightlas001(+n) + InnRightlas002(+n) + InnRightlas003(+n) + InnRightlas004(+n) + InnRightlas005(+n) + InnRightlas006(+n) + InnRightlas007(+n) + InnRightlas008(+n) + InnRightlas009(+n) + InnRightlas010(+n) + InnRightlas011(+n) + InnRightlas012(+n) + InnRightlas013(+n) + InnRightlas014(+n) + InnRightlas015(+n) + InnRightlas016(+n) + InnRightlas017(+n) + InnRightlas018(+n) + InnRightlas019(+n) + InnRightlas020(+n) + InnRightlas021(+n) + InnRightlas022(+n) + InnRightlas023(+n) + InnRightlas024(+n) + InnRightlas025(+n) + InnRightlas026(+n) + InnRightlas027(+n) + InnRightlas028(+n) + InnRightlas029(+n) + InnRightlas030(+n) + InnRightlas031(+n) + InnRightlas032(+n) + InnRightlas033(+n) + InnRightlas034(+n) + InnRightlas035(+n) + InnRightlas036(+n) + InnRightlas037(+n) + InnRightlas038(+n) + InnRightlas039(+n) + InnRightlas040(+n) + InnRightlas041(+n) + InnRightlas042(+n) + InnRightlas043(+n)+InnVertLas001(-n)+InnVertLas002(n)+InnVertLas003(n)+InnVertLas004(n)+InnVertLas005(n)+InnVertLas006(n)+InnVertLas007(n)+InnVertLas008(n)+InnVertLas009(n)+InnVertLas010(n)+InnVertLas011(n)+InnVertLas012(n)+InnVertLas013(n)+InnVertLas014(n)+InnVertLas015(n)+InnVertLas016(n)+InnVertLas017(n)+InnVertLas018(n)+InnVertLas019(n)+InnVertLas020(n)+InnVertLas021(n)+InnVertLas022(n)+InnVertLas023(n)+InnVertLas024(n)+InnVertLas025(n)+InnVertLas026(n)+InnVertLas027(n)+InnVertLas028(n)+InnVertLas029(n)+InnVertLas030(n)+InnVertLas031(n)+InnVertLas032(n)+InnVertLas033(n)+InnVertLas034(n)+InnVertLas035(n)+InnVertLas036(n)+InnVertLas037(n)+InnVertLas038(n)+InnVertLas039(n)+InnVertLas040(n)+InnVertLas041(n)+InnVertLas042(n)+InnVertLas043(n)+InnVertLas044(n)+InnVertLas045(n)+InnVertLas046(n)+InnVertLas047(n)+InnVertLas048(n)+InnVertLas049(n)+InnVertLas050(n)+InnVertLas051(n)+InnVertLas052(n)+InnVertLas053(n)+InnVertLas054(n)+InnVertLas055(n)+InnVertLas056(n)+InnVertLas057(n)+InnVertLas058(n)+InnVertLas059(n)+InnVertLas060(n)+InnVertLas061(n)+InnVertLas062(n)+InnVertLas063(n)+InnVertLas064(n)+InnVertLas065(n)+InnVertLas066(n)+InnVertLas067(n)+InnVertLas068(n)+InnVertLas069(n)+InnVertLas070(n)+InnVertLas071(n)+InnVertLas072(n)+InnVertLas073(n)+InnVertLas074(n)+InnVertLas075(n)+InnVertLas076(n)+InnVertLas077(n)+InnVertLas078(n)+InnVertLas079(n)+InnVertLas080(n)+InnVertLas081(n)+InnVertLas082(n)+InnVertLas083(n)+InnVertLas084(n)+InnVertLas085(n)+InnVertLas086(n) + SubsLeft(+n) + SubsRight(+n) + SubsBottom(+n));
plot(Th, wait=1);
-savemesh(Th, "meshPN2.msh");
+//savemesh(Th, meshPN2.msh); //add quotes to the filename
\ No newline at end of file
Modified: fsem/examples-fondation/struct_mesh/meshPN2.sce
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN2.sce 2007-05-04 11:17:03 UTC (rev 133)
+++ fsem/examples-fondation/struct_mesh/meshPN2.sce 2007-05-31 12:36:28 UTC (rev 134)
@@ -2,7 +2,10 @@
-function [x_list, border_cmd, buildmesh_cmd]=choped_hor_line(x0, x1, y0, H1, H3, orientation, prefix_border)
+function [x_list, border_cmd, buildmesh_cmd]=choped_hor_line(x0, x1, y0, H1, H3, orientation, prefix_border, noplussign)
+ if(exists("noplussign")==0) then
+ noplussign=%f;
+ end
x=x0;
buildmesh_cmd="";
i=0;
@@ -15,8 +18,12 @@
xb=x;
x_list(i+1) = x;
- border_cmd(i) = sprintf("border %s%03d(t=%1.4f, %1.4f){x=t; y=%1.4f;}\n", prefix_border, i, xa,xb,y0);
- buildmesh_cmd = buildmesh_cmd + sprintf(" + %s%03d(%sn)",prefix_border, i,orientation);
+ border_cmd(i) = sprintf("border %s%03d(t=%1.7f, %1.7f){x=t; y=%1.7f;}\n", prefix_border, i, xa,xb,y0);
+ if(noplussign & i==1) then
+ buildmesh_cmd = buildmesh_cmd + sprintf("%s%03d(%sn)",prefix_border, i,orientation);
+ else
+ buildmesh_cmd = buildmesh_cmd + sprintf(" + %s%03d(%sn)",prefix_border, i,orientation);
+ end
printf("%s\n", border_cmd(i));
end
@@ -28,26 +35,26 @@
function buildmesh_cmd_all=make_PN()
filename = "meshPN2.edp";
-fileid = file('open', filename, 'unknown');
+fileid = mopen(filename,"w");
buildmesh_cmd_all = "";
GloScaX = 300; // [um] // ATTENTION: this has to match the scaling factor in FSEM !!!!
-las_r = 6/GloScaX;
-las_H1 = 0.1/GloScaX;
-las_H3 = 0.5/GloScaX;
+las_r = 6/GloScaX; // some characteristice length, few times the laser radius
+las_H1 = 0.1/GloScaX; // mesh size at r=0
+las_H3 = 0.5/GloScaX; // mesh size at r=las_r (between r=0 and r=las_r the mesh size is linearly interpolated from las_H1 to las_H3)
-waf_r = 300/GloScaX;
-waf_H1 = 0.5/GloScaX;
-waf_H3 = 30/GloScaX;
-waf_Xjm = 0.1/GloScaX;
-waf_T = 300/GloScaX;
+waf_r = 300/GloScaX; // wafer radius
+waf_H1 = 0.5/GloScaX; // mesh size at r=r_las_r
+waf_H3 = 30/GloScaX; // mesh size at r=waf_r
+waf_Xjm = 0.1/GloScaX; // the layer thickness: use twice the metallurgical junction depth
+waf_T = 300/GloScaX; // wafer thickness
// *******************
// *** Make TOP layer
// *******************
-[x_list, border_cmd, buildmesh_cmd] = choped_hor_line(0, las_r, 0, las_H1, las_H3, "-", "TopLeftLas");
+[x_list, border_cmd, buildmesh_cmd] = choped_hor_line(0, las_r, 0, las_H1, las_H3, "-", "TopLeftLas", %t);
buildmesh_cmd_all = buildmesh_cmd_all + buildmesh_cmd;
fprintf(fileid, "%s\n", border_cmd);
@@ -77,7 +84,7 @@
prefix_border = "InnVertLas";
for i = 1:length(inner_pt_list);
x = inner_pt_list(i);
- border_cmd(i) = sprintf("border %s%03d(t=%1.4f, %1.4f){x=%1.4f; y=t;}\n", prefix_border, i, -waf_Xjm, 0, x);
+ border_cmd(i) = sprintf("border %s%03d(t=%1.7f, %1.7f){x=%1.7f; y=t;}\n", prefix_border, i, -waf_Xjm, 0, x);
if(i==1) then // orientation is different for border 1
buildmesh_cmd = buildmesh_cmd + sprintf("+%s%03d(-n)", prefix_border, i);
else
@@ -93,17 +100,17 @@
// *** Make BOTTOM layer
// ***********************
prefix_border = "SubsLeft";
-border_cmd = sprintf("border %s(t=%1.4f, %1.4f){x=%1.4f; y=t;}\n", prefix_border, -waf_Xjm, -waf_T , 0);
+border_cmd = sprintf("border %s(t=%1.7f, %1.7f){x=%1.7f; y=t;}\n", prefix_border, -waf_Xjm, -waf_T , 0);
fprintf(fileid, "%s\n", border_cmd);
buildmesh_cmd_all = buildmesh_cmd_all + sprintf(" + %s(+n)", prefix_border);
prefix_border = "SubsRight";
-border_cmd = sprintf("border %s(t=%1.4f, %1.4f){x=%1.4f; y=t;}\n", prefix_border, -waf_T, -waf_Xjm , waf_r_eff);
+border_cmd = sprintf("border %s(t=%1.7f, %1.7f){x=%1.7f; y=t;}\n", prefix_border, -waf_T, -waf_Xjm , waf_r_eff);
fprintf(fileid, "%s\n", border_cmd);
buildmesh_cmd_all = buildmesh_cmd_all + sprintf(" + %s(+n)", prefix_border);
prefix_border = "SubsBottom";
-border_cmd = sprintf("border %s(t=%1.4f, %1.4f){x=t; y=%1.4f;}\n", prefix_border, 0, waf_r_eff , -waf_T);
+border_cmd = sprintf("border %s(t=%1.7f, %1.7f){x=t; y=%1.7f;}\n", prefix_border, 0, waf_r_eff , -waf_T);
fprintf(fileid, "%s\n", border_cmd);
buildmesh_cmd_all = buildmesh_cmd_all + sprintf(" + %s(+n)", prefix_border);
@@ -112,13 +119,20 @@
// ************************
fprintf(fileid, "int n=2;\n")
-fprintf(fileid, "mesh Th = buildmesh(%s);\n", buildmesh_cmd_all);
+fprintf(fileid, "mesh Th = buildmesh(");
+fprintf(fileid, "%s",buildmesh_cmd_all);
+fprintf(fileid, ");\n");
fprintf(fileid, "plot(Th, wait=1);\n")
printf("%s", buildmesh_cmd_all);
-file('close',file() );
+fprintf(fileid, "//savemesh(Th, meshPN2.msh); //add quotes to the filename");
+mclose(fileid)
endfunction
+make_PN();
+
+
+
Modified: fsem/examples-fondation/struct_mesh/meshPN3.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN3.edp 2007-05-04 11:17:03 UTC (rev 133)
+++ fsem/examples-fondation/struct_mesh/meshPN3.edp 2007-05-31 12:36:28 UTC (rev 134)
@@ -1,349 +1,349 @@
-border TopLeftLas001(t=0.0000, 0.0003){x=t; y=0.0000;}
-border TopLeftLas002(t=0.0003, 0.0007){x=t; y=0.0000;}
-border TopLeftLas003(t=0.0007, 0.0011){x=t; y=0.0000;}
-border TopLeftLas004(t=0.0011, 0.0015){x=t; y=0.0000;}
-border TopLeftLas005(t=0.0015, 0.0019){x=t; y=0.0000;}
-border TopLeftLas006(t=0.0019, 0.0024){x=t; y=0.0000;}
-border TopLeftLas007(t=0.0024, 0.0029){x=t; y=0.0000;}
-border TopLeftLas008(t=0.0029, 0.0034){x=t; y=0.0000;}
-border TopLeftLas009(t=0.0034, 0.0039){x=t; y=0.0000;}
-border TopLeftLas010(t=0.0039, 0.0045){x=t; y=0.0000;}
-border TopLeftLas011(t=0.0045, 0.0052){x=t; y=0.0000;}
-border TopLeftLas012(t=0.0052, 0.0058){x=t; y=0.0000;}
-border TopLeftLas013(t=0.0058, 0.0066){x=t; y=0.0000;}
-border TopLeftLas014(t=0.0066, 0.0073){x=t; y=0.0000;}
-border TopLeftLas015(t=0.0073, 0.0082){x=t; y=0.0000;}
-border TopLeftLas016(t=0.0082, 0.0090){x=t; y=0.0000;}
-border TopLeftLas017(t=0.0090, 0.0100){x=t; y=0.0000;}
-border TopLeftLas018(t=0.0100, 0.0110){x=t; y=0.0000;}
-border TopLeftLas019(t=0.0110, 0.0120){x=t; y=0.0000;}
-border TopLeftLas020(t=0.0120, 0.0132){x=t; y=0.0000;}
-border TopLeftLas021(t=0.0132, 0.0144){x=t; y=0.0000;}
-border TopLeftLas022(t=0.0144, 0.0157){x=t; y=0.0000;}
-border TopLeftLas023(t=0.0157, 0.0171){x=t; y=0.0000;}
-border TopLeftLas024(t=0.0171, 0.0185){x=t; y=0.0000;}
-border TopLeftLas025(t=0.0185, 0.0201){x=t; y=0.0000;}
-border InnLeftLas001(t=0.0000, 0.0003){x=t; y=-0.0003;}
-border InnLeftLas002(t=0.0003, 0.0007){x=t; y=-0.0003;}
-border InnLeftLas003(t=0.0007, 0.0011){x=t; y=-0.0003;}
-border InnLeftLas004(t=0.0011, 0.0015){x=t; y=-0.0003;}
-border InnLeftLas005(t=0.0015, 0.0019){x=t; y=-0.0003;}
-border InnLeftLas006(t=0.0019, 0.0024){x=t; y=-0.0003;}
-border InnLeftLas007(t=0.0024, 0.0029){x=t; y=-0.0003;}
-border InnLeftLas008(t=0.0029, 0.0034){x=t; y=-0.0003;}
-border InnLeftLas009(t=0.0034, 0.0039){x=t; y=-0.0003;}
-border InnLeftLas010(t=0.0039, 0.0045){x=t; y=-0.0003;}
-border InnLeftLas011(t=0.0045, 0.0052){x=t; y=-0.0003;}
-border InnLeftLas012(t=0.0052, 0.0058){x=t; y=-0.0003;}
-border InnLeftLas013(t=0.0058, 0.0066){x=t; y=-0.0003;}
-border InnLeftLas014(t=0.0066, 0.0073){x=t; y=-0.0003;}
-border InnLeftLas015(t=0.0073, 0.0082){x=t; y=-0.0003;}
-border InnLeftLas016(t=0.0082, 0.0090){x=t; y=-0.0003;}
-border InnLeftLas017(t=0.0090, 0.0100){x=t; y=-0.0003;}
-border InnLeftLas018(t=0.0100, 0.0110){x=t; y=-0.0003;}
-border InnLeftLas019(t=0.0110, 0.0120){x=t; y=-0.0003;}
-border InnLeftLas020(t=0.0120, 0.0132){x=t; y=-0.0003;}
-border InnLeftLas021(t=0.0132, 0.0144){x=t; y=-0.0003;}
-border InnLeftLas022(t=0.0144, 0.0157){x=t; y=-0.0003;}
-border InnLeftLas023(t=0.0157, 0.0171){x=t; y=-0.0003;}
-border InnLeftLas024(t=0.0171, 0.0185){x=t; y=-0.0003;}
-border InnLeftLas025(t=0.0185, 0.0201){x=t; y=-0.0003;}
-border Inn2LeftLas001(t=0.0000, 0.0003){x=t; y=-0.0043;}
-border Inn2LeftLas002(t=0.0003, 0.0007){x=t; y=-0.0043;}
-border Inn2LeftLas003(t=0.0007, 0.0011){x=t; y=-0.0043;}
-border Inn2LeftLas004(t=0.0011, 0.0015){x=t; y=-0.0043;}
-border Inn2LeftLas005(t=0.0015, 0.0019){x=t; y=-0.0043;}
-border Inn2LeftLas006(t=0.0019, 0.0024){x=t; y=-0.0043;}
-border Inn2LeftLas007(t=0.0024, 0.0029){x=t; y=-0.0043;}
-border Inn2LeftLas008(t=0.0029, 0.0034){x=t; y=-0.0043;}
-border Inn2LeftLas009(t=0.0034, 0.0039){x=t; y=-0.0043;}
-border Inn2LeftLas010(t=0.0039, 0.0045){x=t; y=-0.0043;}
-border Inn2LeftLas011(t=0.0045, 0.0052){x=t; y=-0.0043;}
-border Inn2LeftLas012(t=0.0052, 0.0058){x=t; y=-0.0043;}
-border Inn2LeftLas013(t=0.0058, 0.0066){x=t; y=-0.0043;}
-border Inn2LeftLas014(t=0.0066, 0.0073){x=t; y=-0.0043;}
-border Inn2LeftLas015(t=0.0073, 0.0082){x=t; y=-0.0043;}
-border Inn2LeftLas016(t=0.0082, 0.0090){x=t; y=-0.0043;}
-border Inn2LeftLas017(t=0.0090, 0.0100){x=t; y=-0.0043;}
-border Inn2LeftLas018(t=0.0100, 0.0110){x=t; y=-0.0043;}
-border Inn2LeftLas019(t=0.0110, 0.0120){x=t; y=-0.0043;}
-border Inn2LeftLas020(t=0.0120, 0.0132){x=t; y=-0.0043;}
-border Inn2LeftLas021(t=0.0132, 0.0144){x=t; y=-0.0043;}
-border Inn2LeftLas022(t=0.0144, 0.0157){x=t; y=-0.0043;}
-border Inn2LeftLas023(t=0.0157, 0.0171){x=t; y=-0.0043;}
-border Inn2LeftLas024(t=0.0171, 0.0185){x=t; y=-0.0043;}
-border Inn2LeftLas025(t=0.0185, 0.0201){x=t; y=-0.0043;}
-border TopRightlas001(t=0.0201, 0.0218){x=t; y=0.0000;}
-border TopRightlas002(t=0.0218, 0.0236){x=t; y=0.0000;}
-border TopRightlas003(t=0.0236, 0.0256){x=t; y=0.0000;}
-border TopRightlas004(t=0.0256, 0.0278){x=t; y=0.0000;}
-border TopRightlas005(t=0.0278, 0.0303){x=t; y=0.0000;}
-border TopRightlas006(t=0.0303, 0.0330){x=t; y=0.0000;}
-border TopRightlas007(t=0.0330, 0.0359){x=t; y=0.0000;}
-border TopRightlas008(t=0.0359, 0.0392){x=t; y=0.0000;}
-border TopRightlas009(t=0.0392, 0.0428){x=t; y=0.0000;}
-border TopRightlas010(t=0.0428, 0.0467){x=t; y=0.0000;}
-border TopRightlas011(t=0.0467, 0.0510){x=t; y=0.0000;}
-border TopRightlas012(t=0.0510, 0.0558){x=t; y=0.0000;}
-border TopRightlas013(t=0.0558, 0.0611){x=t; y=0.0000;}
-border TopRightlas014(t=0.0611, 0.0668){x=t; y=0.0000;}
-border TopRightlas015(t=0.0668, 0.0732){x=t; y=0.0000;}
-border TopRightlas016(t=0.0732, 0.0802){x=t; y=0.0000;}
-border TopRightlas017(t=0.0802, 0.0879){x=t; y=0.0000;}
-border TopRightlas018(t=0.0879, 0.0964){x=t; y=0.0000;}
-border TopRightlas019(t=0.0964, 0.1057){x=t; y=0.0000;}
-border TopRightlas020(t=0.1057, 0.1159){x=t; y=0.0000;}
-border TopRightlas021(t=0.1159, 0.1272){x=t; y=0.0000;}
-border TopRightlas022(t=0.1272, 0.1396){x=t; y=0.0000;}
-border TopRightlas023(t=0.1396, 0.1533){x=t; y=0.0000;}
-border TopRightlas024(t=0.1533, 0.1683){x=t; y=0.0000;}
-border TopRightlas025(t=0.1683, 0.1849){x=t; y=0.0000;}
-border TopRightlas026(t=0.1849, 0.2031){x=t; y=0.0000;}
-border TopRightlas027(t=0.2031, 0.2231){x=t; y=0.0000;}
-border TopRightlas028(t=0.2231, 0.2451){x=t; y=0.0000;}
-border TopRightlas029(t=0.2451, 0.2694){x=t; y=0.0000;}
-border TopRightlas030(t=0.2694, 0.2961){x=t; y=0.0000;}
-border TopRightlas031(t=0.2961, 0.3254){x=t; y=0.0000;}
-border TopRightlas032(t=0.3254, 0.3578){x=t; y=0.0000;}
-border TopRightlas033(t=0.3578, 0.3933){x=t; y=0.0000;}
-border TopRightlas034(t=0.3933, 0.4324){x=t; y=0.0000;}
-border TopRightlas035(t=0.4324, 0.4755){x=t; y=0.0000;}
-border TopRightlas036(t=0.4755, 0.5228){x=t; y=0.0000;}
-border TopRightlas037(t=0.5228, 0.5749){x=t; y=0.0000;}
-border TopRightlas038(t=0.5749, 0.6323){x=t; y=0.0000;}
-border TopRightlas039(t=0.6323, 0.6954){x=t; y=0.0000;}
-border TopRightlas040(t=0.6954, 0.7648){x=t; y=0.0000;}
-border TopRightlas041(t=0.7648, 0.8412){x=t; y=0.0000;}
-border TopRightlas042(t=0.8412, 0.9253){x=t; y=0.0000;}
-border TopRightlas043(t=0.9253, 1.0178){x=t; y=0.0000;}
-border InnRightlas001(t=0.0201, 0.0218){x=t; y=-0.0003;}
-border InnRightlas002(t=0.0218, 0.0236){x=t; y=-0.0003;}
-border InnRightlas003(t=0.0236, 0.0256){x=t; y=-0.0003;}
-border InnRightlas004(t=0.0256, 0.0278){x=t; y=-0.0003;}
-border InnRightlas005(t=0.0278, 0.0303){x=t; y=-0.0003;}
-border InnRightlas006(t=0.0303, 0.0330){x=t; y=-0.0003;}
-border InnRightlas007(t=0.0330, 0.0359){x=t; y=-0.0003;}
-border InnRightlas008(t=0.0359, 0.0392){x=t; y=-0.0003;}
-border InnRightlas009(t=0.0392, 0.0428){x=t; y=-0.0003;}
-border InnRightlas010(t=0.0428, 0.0467){x=t; y=-0.0003;}
-border InnRightlas011(t=0.0467, 0.0510){x=t; y=-0.0003;}
-border InnRightlas012(t=0.0510, 0.0558){x=t; y=-0.0003;}
-border InnRightlas013(t=0.0558, 0.0611){x=t; y=-0.0003;}
-border InnRightlas014(t=0.0611, 0.0668){x=t; y=-0.0003;}
-border InnRightlas015(t=0.0668, 0.0732){x=t; y=-0.0003;}
-border InnRightlas016(t=0.0732, 0.0802){x=t; y=-0.0003;}
-border InnRightlas017(t=0.0802, 0.0879){x=t; y=-0.0003;}
-border InnRightlas018(t=0.0879, 0.0964){x=t; y=-0.0003;}
-border InnRightlas019(t=0.0964, 0.1057){x=t; y=-0.0003;}
-border InnRightlas020(t=0.1057, 0.1159){x=t; y=-0.0003;}
-border InnRightlas021(t=0.1159, 0.1272){x=t; y=-0.0003;}
-border InnRightlas022(t=0.1272, 0.1396){x=t; y=-0.0003;}
-border InnRightlas023(t=0.1396, 0.1533){x=t; y=-0.0003;}
-border InnRightlas024(t=0.1533, 0.1683){x=t; y=-0.0003;}
-border InnRightlas025(t=0.1683, 0.1849){x=t; y=-0.0003;}
-border InnRightlas026(t=0.1849, 0.2031){x=t; y=-0.0003;}
-border InnRightlas027(t=0.2031, 0.2231){x=t; y=-0.0003;}
-border InnRightlas028(t=0.2231, 0.2451){x=t; y=-0.0003;}
-border InnRightlas029(t=0.2451, 0.2694){x=t; y=-0.0003;}
-border InnRightlas030(t=0.2694, 0.2961){x=t; y=-0.0003;}
-border InnRightlas031(t=0.2961, 0.3254){x=t; y=-0.0003;}
-border InnRightlas032(t=0.3254, 0.3578){x=t; y=-0.0003;}
-border InnRightlas033(t=0.3578, 0.3933){x=t; y=-0.0003;}
-border InnRightlas034(t=0.3933, 0.4324){x=t; y=-0.0003;}
-border InnRightlas035(t=0.4324, 0.4755){x=t; y=-0.0003;}
-border InnRightlas036(t=0.4755, 0.5228){x=t; y=-0.0003;}
-border InnRightlas037(t=0.5228, 0.5749){x=t; y=-0.0003;}
-border InnRightlas038(t=0.5749, 0.6323){x=t; y=-0.0003;}
-border InnRightlas039(t=0.6323, 0.6954){x=t; y=-0.0003;}
-border InnRightlas040(t=0.6954, 0.7648){x=t; y=-0.0003;}
-border InnRightlas041(t=0.7648, 0.8412){x=t; y=-0.0003;}
-border InnRightlas042(t=0.8412, 0.9253){x=t; y=-0.0003;}
-border InnRightlas043(t=0.9253, 1.0178){x=t; y=-0.0003;}
-border Inn2Rightlas001(t=0.0201, 0.0218){x=t; y=-0.0043;}
-border Inn2Rightlas002(t=0.0218, 0.0236){x=t; y=-0.0043;}
-border Inn2Rightlas003(t=0.0236, 0.0256){x=t; y=-0.0043;}
-border Inn2Rightlas004(t=0.0256, 0.0278){x=t; y=-0.0043;}
-border Inn2Rightlas005(t=0.0278, 0.0303){x=t; y=-0.0043;}
-border Inn2Rightlas006(t=0.0303, 0.0330){x=t; y=-0.0043;}
-border Inn2Rightlas007(t=0.0330, 0.0359){x=t; y=-0.0043;}
-border Inn2Rightlas008(t=0.0359, 0.0392){x=t; y=-0.0043;}
-border Inn2Rightlas009(t=0.0392, 0.0428){x=t; y=-0.0043;}
-border Inn2Rightlas010(t=0.0428, 0.0467){x=t; y=-0.0043;}
-border Inn2Rightlas011(t=0.0467, 0.0510){x=t; y=-0.0043;}
-border Inn2Rightlas012(t=0.0510, 0.0558){x=t; y=-0.0043;}
-border Inn2Rightlas013(t=0.0558, 0.0611){x=t; y=-0.0043;}
-border Inn2Rightlas014(t=0.0611, 0.0668){x=t; y=-0.0043;}
-border Inn2Rightlas015(t=0.0668, 0.0732){x=t; y=-0.0043;}
-border Inn2Rightlas016(t=0.0732, 0.0802){x=t; y=-0.0043;}
-border Inn2Rightlas017(t=0.0802, 0.0879){x=t; y=-0.0043;}
-border Inn2Rightlas018(t=0.0879, 0.0964){x=t; y=-0.0043;}
-border Inn2Rightlas019(t=0.0964, 0.1057){x=t; y=-0.0043;}
-border Inn2Rightlas020(t=0.1057, 0.1159){x=t; y=-0.0043;}
-border Inn2Rightlas021(t=0.1159, 0.1272){x=t; y=-0.0043;}
-border Inn2Rightlas022(t=0.1272, 0.1396){x=t; y=-0.0043;}
-border Inn2Rightlas023(t=0.1396, 0.1533){x=t; y=-0.0043;}
-border Inn2Rightlas024(t=0.1533, 0.1683){x=t; y=-0.0043;}
-border Inn2Rightlas025(t=0.1683, 0.1849){x=t; y=-0.0043;}
-border Inn2Rightlas026(t=0.1849, 0.2031){x=t; y=-0.0043;}
-border Inn2Rightlas027(t=0.2031, 0.2231){x=t; y=-0.0043;}
-border Inn2Rightlas028(t=0.2231, 0.2451){x=t; y=-0.0043;}
-border Inn2Rightlas029(t=0.2451, 0.2694){x=t; y=-0.0043;}
-border Inn2Rightlas030(t=0.2694, 0.2961){x=t; y=-0.0043;}
-border Inn2Rightlas031(t=0.2961, 0.3254){x=t; y=-0.0043;}
-border Inn2Rightlas032(t=0.3254, 0.3578){x=t; y=-0.0043;}
-border Inn2Rightlas033(t=0.3578, 0.3933){x=t; y=-0.0043;}
-border Inn2Rightlas034(t=0.3933, 0.4324){x=t; y=-0.0043;}
-border Inn2Rightlas035(t=0.4324, 0.4755){x=t; y=-0.0043;}
-border Inn2Rightlas036(t=0.4755, 0.5228){x=t; y=-0.0043;}
-border Inn2Rightlas037(t=0.5228, 0.5749){x=t; y=-0.0043;}
-border Inn2Rightlas038(t=0.5749, 0.6323){x=t; y=-0.0043;}
-border Inn2Rightlas039(t=0.6323, 0.6954){x=t; y=-0.0043;}
-border Inn2Rightlas040(t=0.6954, 0.7648){x=t; y=-0.0043;}
-border Inn2Rightlas041(t=0.7648, 0.8412){x=t; y=-0.0043;}
-border Inn2Rightlas042(t=0.8412, 0.9253){x=t; y=-0.0043;}
-border Inn2Rightlas043(t=0.9253, 1.0178){x=t; y=-0.0043;}
-border InnVertLas001(t=-0.0003, 0.0000){x=0.0000; y=t;}
-border InnVertLas002(t=-0.0003, 0.0000){x=0.0003; y=t;}
-border InnVertLas003(t=-0.0003, 0.0000){x=0.0007; y=t;}
-border InnVertLas004(t=-0.0003, 0.0000){x=0.0011; y=t;}
-border InnVertLas005(t=-0.0003, 0.0000){x=0.0015; y=t;}
-border InnVertLas006(t=-0.0003, 0.0000){x=0.0019; y=t;}
-border InnVertLas007(t=-0.0003, 0.0000){x=0.0024; y=t;}
-border InnVertLas008(t=-0.0003, 0.0000){x=0.0029; y=t;}
-border InnVertLas009(t=-0.0003, 0.0000){x=0.0034; y=t;}
-border InnVertLas010(t=-0.0003, 0.0000){x=0.0039; y=t;}
-border InnVertLas011(t=-0.0003, 0.0000){x=0.0045; y=t;}
-border InnVertLas012(t=-0.0003, 0.0000){x=0.0052; y=t;}
-border InnVertLas013(t=-0.0003, 0.0000){x=0.0058; y=t;}
-border InnVertLas014(t=-0.0003, 0.0000){x=0.0066; y=t;}
-border InnVertLas015(t=-0.0003, 0.0000){x=0.0073; y=t;}
-border InnVertLas016(t=-0.0003, 0.0000){x=0.0082; y=t;}
-border InnVertLas017(t=-0.0003, 0.0000){x=0.0090; y=t;}
-border InnVertLas018(t=-0.0003, 0.0000){x=0.0100; y=t;}
-border InnVertLas019(t=-0.0003, 0.0000){x=0.0110; y=t;}
-border InnVertLas020(t=-0.0003, 0.0000){x=0.0120; y=t;}
-border InnVertLas021(t=-0.0003, 0.0000){x=0.0132; y=t;}
-border InnVertLas022(t=-0.0003, 0.0000){x=0.0144; y=t;}
-border InnVertLas023(t=-0.0003, 0.0000){x=0.0157; y=t;}
-border InnVertLas024(t=-0.0003, 0.0000){x=0.0171; y=t;}
-border InnVertLas025(t=-0.0003, 0.0000){x=0.0185; y=t;}
-border InnVertLas026(t=-0.0003, 0.0000){x=0.0201; y=t;}
-border InnVertLas027(t=-0.0003, 0.0000){x=0.0218; y=t;}
-border InnVertLas028(t=-0.0003, 0.0000){x=0.0236; y=t;}
-border InnVertLas029(t=-0.0003, 0.0000){x=0.0256; y=t;}
-border InnVertLas030(t=-0.0003, 0.0000){x=0.0278; y=t;}
-border InnVertLas031(t=-0.0003, 0.0000){x=0.0303; y=t;}
-border InnVertLas032(t=-0.0003, 0.0000){x=0.0330; y=t;}
-border InnVertLas033(t=-0.0003, 0.0000){x=0.0359; y=t;}
-border InnVertLas034(t=-0.0003, 0.0000){x=0.0392; y=t;}
-border InnVertLas035(t=-0.0003, 0.0000){x=0.0428; y=t;}
-border InnVertLas036(t=-0.0003, 0.0000){x=0.0467; y=t;}
-border InnVertLas037(t=-0.0003, 0.0000){x=0.0510; y=t;}
-border InnVertLas038(t=-0.0003, 0.0000){x=0.0558; y=t;}
-border InnVertLas039(t=-0.0003, 0.0000){x=0.0611; y=t;}
-border InnVertLas040(t=-0.0003, 0.0000){x=0.0668; y=t;}
-border InnVertLas041(t=-0.0003, 0.0000){x=0.0732; y=t;}
-border InnVertLas042(t=-0.0003, 0.0000){x=0.0802; y=t;}
-border InnVertLas043(t=-0.0003, 0.0000){x=0.0879; y=t;}
-border InnVertLas044(t=-0.0003, 0.0000){x=0.0964; y=t;}
-border InnVertLas045(t=-0.0003, 0.0000){x=0.1057; y=t;}
-border InnVertLas046(t=-0.0003, 0.0000){x=0.1159; y=t;}
-border InnVertLas047(t=-0.0003, 0.0000){x=0.1272; y=t;}
-border InnVertLas048(t=-0.0003, 0.0000){x=0.1396; y=t;}
-border InnVertLas049(t=-0.0003, 0.0000){x=0.1533; y=t;}
-border InnVertLas050(t=-0.0003, 0.0000){x=0.1683; y=t;}
-border InnVertLas051(t=-0.0003, 0.0000){x=0.1849; y=t;}
-border InnVertLas052(t=-0.0003, 0.0000){x=0.2031; y=t;}
-border InnVertLas053(t=-0.0003, 0.0000){x=0.2231; y=t;}
-border InnVertLas054(t=-0.0003, 0.0000){x=0.2451; y=t;}
-border InnVertLas055(t=-0.0003, 0.0000){x=0.2694; y=t;}
-border InnVertLas056(t=-0.0003, 0.0000){x=0.2961; y=t;}
-border InnVertLas057(t=-0.0003, 0.0000){x=0.3254; y=t;...
[truncated message content] |
|
From: <fab...@us...> - 2007-05-04 11:17:04
|
Revision: 133
http://fsem.svn.sourceforge.net/fsem/?rev=133&view=rev
Author: fabiandortu
Date: 2007-05-04 04:17:03 -0700 (Fri, 04 May 2007)
Log Message:
-----------
Corrected minor bug in SRV (Thanks Janusz)
Modified Paths:
--------------
fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp
Modified: fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp
===================================================================
--- fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp 2007-04-25 13:20:43 UTC (rev 132)
+++ fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp 2007-05-04 11:17:03 UTC (rev 133)
@@ -415,9 +415,9 @@
real[int] BandGapArray(3);
ModBandGapArray(BandGapArray);
- CppModDDSGITAURecHol2( GloVarDiffCOEFas[], GloVarDiffCOEFfs[], /* OUTPUTS */
- GloVarSemiNIE[], GloVarSemiNCT[], GloVarSemiNVT[], GloVarTempT[],
- GloVarSemiDDSGRhoN[],GloVarSemiDEGAP [] , GloVarSemiGenRecSurfTOT[] , BandGapArray,ParMatxyzEG300[]); /* INPUTS */
+ CppModDDSGITAURecSurfHol2(GloVarDiffCOEFas[], GloVarDiffCOEFfs[], /* OUTPUTS */
+ GloVarSemiNIE[], GloVarSemiNCT[], GloVarSemiNVT[], GloVarTempT[],
+ GloVarSemiDDSGRhoN[],GloVarSemiDEGAP [] , GloVarSemiGenRecSurfTOT[] , BandGapArray,ParMatxyzEG300[]); /* INPUTS */
return 0;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-04-25 13:20:42
|
Revision: 132
http://fsem.svn.sourceforge.net/fsem/?rev=132&view=rev
Author: fabiandortu
Date: 2007-04-25 06:20:43 -0700 (Wed, 25 Apr 2007)
Log Message:
-----------
Corrected bug in function load (14, 15 and 16 arguments). However this bug had no impact on any
calculation previously made.
Added loading for functions of 17, 18 and 18 arguments.
Added test routines for function loading in patch/test_module/
Modified Paths:
--------------
fsem/README
fsem/include-freefem/load.link
fsem/include-fsem/AFunction_ext.hpp
Added Paths:
-----------
fsem/patch/freefem++-2.16-1/
fsem/patch/freefem++-2.16-1/AFunction.hpp.patch
fsem/patch/freefem++-2.16-1/AFunction2.cpp.patch
fsem/patch/freefem++-2.16-1/README
fsem/patch/freefem++-2.16-1/patchfreefem
fsem/patch/test_module/
fsem/patch/test_module/AFunction_ext.hpp
fsem/patch/test_module/fsem_TestLoad.cpp
fsem/patch/test_module/fsem_TestLoad.edp
fsem/patch/test_module/fsem_TestLoad.so
fsem/patch/test_module/include
fsem/patch/test_module/load.link
Modified: fsem/README
===================================================================
--- fsem/README 2007-04-24 14:49:47 UTC (rev 131)
+++ fsem/README 2007-04-25 13:20:43 UTC (rev 132)
@@ -11,9 +11,14 @@
* Freefem++ sources are available in $ffpp
* FSEM sources (the directory where you found this file) are available in $fsem
+ for bash shell:
$ export ffpp=/home/fabian/tmp/freefem++-2.13
$ export fsem=/home/fabian/tmp/fsem/fsem
+ for csh shell:
+ $ setenv ffpp /home/fabian/tmp/freefem++-2.13
+ $ setenv fsem /home/fabian/tmp/fsem/fsem
+
1) A patched version of FreeFEM++ has to be recompiled.
Note that the patch will most probably work on more
recent version of freefem++. Latest test was done on version 2.13.
Modified: fsem/include-freefem/load.link
===================================================================
--- fsem/include-freefem/load.link 2007-04-24 14:49:47 UTC (rev 131)
+++ fsem/include-freefem/load.link 2007-04-25 13:20:43 UTC (rev 132)
@@ -1,6 +1,6 @@
#!/bin/sh
# Create a loadable object from a C++ function defined in a .cpp file
-# $Id: load.link,v 1.25 2006-04-12 05:38:59 hecht Exp $
+# $Id: load.link,v 1.27 2007/03/07 12:51:32 hecht Exp $
do="yes"
DEBUG=""
@@ -54,7 +54,7 @@
-b) bin=$2 ; shift;;
-I*) INC="$INC $1";;
-dll) DLL="$DLL $2";shift;;
- -[Ll]*) LIBS="$LIBS $1"; shift;;
+ -[Ll]*) LIBS="$LIBS $1" ;;
*.cpp) files="$files $1"; o=`basename $1 .cpp` ; fileso="$fileso $o.o";;
*.cp) files="$files $1"; o=`basename $1 .cp` ; fileso="$fileso $o.o";;
*.cxx) files="$files $1"; o=`basename $1 .cxx` ; fileso="$fileso $o.o";;
@@ -97,6 +97,10 @@
SHARED="-shared"
FLAGS='-fPIC';;
# 64 bit Linux needs -fPIC (ALH)
+ SunOS)
+ SHARED="-shared"
+ FLAGS='-fPIC';;
+ # 64 bit Linux needs -fPIC (ALH)
Linux)
FLAGS='-fPIC'
SHARED="-shared " ;;
Modified: fsem/include-fsem/AFunction_ext.hpp
===================================================================
--- fsem/include-fsem/AFunction_ext.hpp 2007-04-24 14:49:47 UTC (rev 131)
+++ fsem/include-fsem/AFunction_ext.hpp 2007-04-25 13:20:43 UTC (rev 132)
@@ -10,12 +10,15 @@
//
// Note: in file includeAFunction.hpp, the class "OneOperator" (around line 400) mut be modified.
+
+// Note: I changed R into RR
+
// ***********************************************
// **** 4 parameters
// ***********************
-template<class R,class A0,class A1,class A2, class A3, class E=E_F0> // extend (4th arg.)
+template<class RR,class A0,class A1,class A2, class A3, class E=E_F0> // extend (4th arg.)
class E_F_F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 & ) ; // extend (4th arg.)
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 & ) ; // extend (4th arg.)
func f;
Expression a0,a1,a2,a3; // extend
E_F_F0F0F0F0_(func ff,
@@ -25,17 +28,17 @@
Expression aa3) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3) {} // extend (4th arg.)
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
- GetAny<A1>((*a1)(s)),
- GetAny<A2>((*a2)(s)),
- GetAny<A3>((*a3)(s)) ) );} // extend (4th arg.)
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
+ GetAny<A1>((*a1)(s)),
+ GetAny<A2>((*a2)(s)),
+ GetAny<A3>((*a3)(s)) ) );} // extend (4th arg.)
virtual size_t nbitem() const {return a3->nbitem(); } // modif
bool MeshIndependent() const
{return a0->MeshIndependent() && a1->MeshIndependent()&& a2->MeshIndependent()&& a3->MeshIndependent();} // extend (4th arg.)
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class CODE=E_F_F0F0F0F0_<R,A,B,C,D,E_F0> > // extend (4th arg.)
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class CODE=E_F_F0F0F0F0_<RR,A,B,C,D,E_F0> > // extend (4th arg.)
class OneOperator4_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -48,7 +51,7 @@
t[2]->CastTo(args[2]),
t[3]->CastTo(args[3]));} // extend
OneOperator4_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -65,9 +68,9 @@
// OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e)
// : r(rr),ArrayOfaType(a,b,c,d,e,false),next(0),pref(0) {throwassert(rr && a && b && c && d);}
-template<class R,class A0,class A1,class A2, class A3, class A4, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 & ) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 & ) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4; // extend aX
E_F_F0F0F0F0F0_(func ff, // extend F0
@@ -78,7 +81,7 @@
Expression aa4) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -90,7 +93,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class CODE=E_F_F0F0F0F0F0_<R,A,B,C,D,E,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class CODE=E_F_F0F0F0F0F0_<RR,A,B,C,D,E,E_F0> > // extend
class OneOperator5_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -104,7 +107,7 @@
t[3]->CastTo(args[3]),
t[4]->CastTo(args[4]));} // extend
OneOperator5_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -121,9 +124,9 @@
// OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f)
// : r(rr),ArrayOfaType(a,b,c,d,e,f,false),next(0),pref(0) {throwassert(rr && a && b && c && d && f);}
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 & ) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 & ) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5; // extend aX
E_F_F0F0F0F0F0F0_(func ff, // extend F0
@@ -135,7 +138,7 @@
Expression aa5) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -148,7 +151,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class CODE=E_F_F0F0F0F0F0F0_<R,A,B,C,D,E,F,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class CODE=E_F_F0F0F0F0F0F0_<RR,A,B,C,D,E,F,E_F0> > // extend
class OneOperator6_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -163,7 +166,7 @@
t[4]->CastTo(args[4]),
t[5]->CastTo(args[5]));} // extend
OneOperator6_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -182,9 +185,9 @@
// OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f)
// : r(rr),ArrayOfaType(a,b,c,d,e,f,false),next(0),pref(0) {throwassert(rr && a && b && c && d && f);}
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 & ) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 & ) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6; // extend aX
E_F_F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -197,7 +200,7 @@
Expression aa6) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -211,7 +214,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class CODE=E_F_F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class CODE=E_F_F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,E_F0> > // extend
class OneOperator7_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -227,7 +230,7 @@
t[5]->CastTo(args[5]),
t[6]->CastTo(args[6]));} // extend
OneOperator7_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -245,9 +248,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 & ) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 & ) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7; // extend aX
E_F_F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -261,7 +264,7 @@
Expression aa7) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -276,7 +279,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G , class CODE=E_F_F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G , class CODE=E_F_F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,E_F0> > // extend
class OneOperator8_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -293,7 +296,7 @@
t[6]->CastTo(args[6]),
t[7]->CastTo(args[7]));} // extend
OneOperator8_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -311,9 +314,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 & ) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 & ) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8; // extend aX
E_F_F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -328,7 +331,7 @@
Expression aa8) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -344,7 +347,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class CODE=E_F_F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class CODE=E_F_F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,E_F0> > // extend
class OneOperator9_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -362,7 +365,7 @@
t[7]->CastTo(args[7]),
t[8]->CastTo(args[8]));} // extend
OneOperator9_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -383,9 +386,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 & ) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 & ) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9; // extend aX
E_F_F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -401,7 +404,7 @@
Expression aa9) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -419,7 +422,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class CODE=E_F_F0F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,J,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class CODE=E_F_F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,E_F0> > // extend
class OneOperator10_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -438,7 +441,7 @@
t[8]->CastTo(args[8]),
t[9]->CastTo(args[9]));} // extend
OneOperator10_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -459,9 +462,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 & ) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 & ) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; // extend aX
E_F_F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -478,7 +481,7 @@
Expression aa10) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -497,7 +500,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,J,K,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,E_F0> > // extend
class OneOperator11_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -517,7 +520,7 @@
t[9]->CastTo(args[9]),
t[10]->CastTo(args[10]));} // extend
OneOperator11_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -540,9 +543,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11; // extend aX
E_F_F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -560,7 +563,7 @@
Expression aa11) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -580,7 +583,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,J,K,L,E_F0> > // extend
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,E_F0> > // extend
class OneOperator12_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -601,7 +604,7 @@
t[10]->CastTo(args[10]),
t[11]->CastTo(args[11]) );} // extend
OneOperator12_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -624,9 +627,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12; // extend aX
E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -645,7 +648,7 @@
Expression aa12) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11), a12(aa12) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -666,7 +669,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,J,K,L,M,E_F0> > // extend (3 pts)
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,M,E_F0> > // extend (3 pts)
class OneOperator13_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -688,7 +691,7 @@
t[11]->CastTo(args[11]),
t[12]->CastTo(args[12]) );} // extend (2pts)
OneOperator13_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -712,9 +715,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A12 &, const A13 &) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A13 &) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13; // extend aX
E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -734,7 +737,7 @@
Expression aa13) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11), a12(aa12), a13(aa13) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -757,7 +760,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M ,class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,J,K,L,M,N,E_F0> > // extend (3 pts)
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M ,class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,M,N,E_F0> > // extend (3 pts)
class OneOperator14_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -780,7 +783,7 @@
t[12]->CastTo(args[12]),
t[13]->CastTo(args[13]) );} // extend (2pts)
OneOperator14_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -807,9 +810,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14,class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14,class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A12 &, const A13 &) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A13 &, const A14 &) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14; // extend aX
E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -830,7 +833,7 @@
Expression aa14) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11), a12(aa12), a13(aa13), a14(aa14) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -854,7 +857,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M, class O=N, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,E_F0> > // extend (3 pts)
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M, class O=N, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,E_F0> > // extend (3 pts)
class OneOperator15_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -878,7 +881,7 @@
t[13]->CastTo(args[13]),
t[14]->CastTo(args[14]) );} // extend (2pts)
OneOperator15_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -904,9 +907,9 @@
// ***********************
//
-template<class R,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class E=E_F0> // extend AX
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class E=E_F0> // extend AX
class E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
- typedef R (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A12 &, const A13 &, const A14 &) ; // extend AX
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A13 &, const A14 &, const A15 &) ; // extend AX
func f;
Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15; // extend aX
E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
@@ -928,7 +931,7 @@
Expression aa15) // extend
: f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11), a12(aa12), a13(aa13), a14(aa14) , a15(aa15) {} // extend aX
AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)),
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
GetAny<A1>((*a1)(s)),
GetAny<A2>((*a2)(s)),
GetAny<A3>((*a3)(s)),
@@ -953,7 +956,7 @@
};
-template<class R,class A=R,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M,class O=N, class P=O , class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<R,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,E_F0> > // extend (3 pts)
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M,class O=N, class P=O , class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,E_F0> > // extend (3 pts)
class OneOperator16_ : public OneOperator { // 3->4
aType r; // return type
typedef typename CODE::func func;
@@ -978,7 +981,7 @@
t[14]->CastTo(args[14]),
t[15]->CastTo(args[15]) );} // extend (2pts)
OneOperator16_(func ff): // 3->4
- OneOperator(map_type[typeid(R).name()],
+ OneOperator(map_type[typeid(RR).name()],
map_type[typeid(A).name()],
map_type[typeid(B).name()],
map_type[typeid(C).name()],
@@ -998,3 +1001,339 @@
f(ff){}
};
+
+//
+//
+//
+// ***********************************************
+// **** 17 parameters
+// ***********************
+//
+
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class E=E_F0> // extend AX
+class E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A13 &, const A14 &, const A15 &, const A16 &) ; // extend AX
+ func f;
+ Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16; // extend aX
+ E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
+ Expression aa0,
+ Expression aa1,
+ Expression aa2,
+ Expression aa3,
+ Expression aa4,
+ Expression aa5,
+ Expression aa6,
+ Expression aa7,
+ Expression aa8,
+ Expression aa9,
+ Expression aa10,
+ Expression aa11,
+ Expression aa12,
+ Expression aa13,
+ Expression aa14,
+ Expression aa15,
+ Expression aa16) // extend
+ : f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11), a12(aa12), a13(aa13), a14(aa14) , a15(aa15) , a16(aa16) {} // extend aX (2pts)
+ AnyType operator()(Stack s) const
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
+ GetAny<A1>((*a1)(s)),
+ GetAny<A2>((*a2)(s)),
+ GetAny<A3>((*a3)(s)),
+ GetAny<A4>((*a4)(s)),
+ GetAny<A5>((*a5)(s)),
+ GetAny<A6>((*a6)(s)),
+ GetAny<A7>((*a7)(s)),
+ GetAny<A8>((*a8)(s)),
+ GetAny<A9>((*a9)(s)),
+ GetAny<A10>((*a10)(s)),
+ GetAny<A11>((*a11)(s)),
+ GetAny<A12>((*a12)(s)),
+ GetAny<A13>((*a13)(s)),
+ GetAny<A14>((*a14)(s)),
+ GetAny<A15>((*a15)(s)),
+ GetAny<A16>((*a16)(s))) );} // extend aX (2 pts)
+ virtual size_t nbitem() const {return a16->nbitem(); } // modif
+ bool MeshIndependent() const
+ {return a0->MeshIndependent() && a1->MeshIndependent()&& a2->MeshIndependent()
+ && a3->MeshIndependent()&& a4->MeshIndependent()&& a5->MeshIndependent()&& a6->MeshIndependent()
+ && a7->MeshIndependent()&& a8->MeshIndependent()&& a9->MeshIndependent()&& a10->MeshIndependent()&& a11->MeshIndependent()&& a12->MeshIndependent()
+ && a13->MeshIndependent()&& a14->MeshIndependent()&& a15->MeshIndependent()&& a16->MeshIndependent();} // extend aX
+
+};
+
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M,class O=N, class P=O , class Q=P ,class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,E_F0> > // extend (3 pts)
+class OneOperator17_ : public OneOperator { // 3->4
+ aType r; // return type
+ typedef typename CODE::func func;
+ func f;
+public:
+ E_F0 * code(const basicAC_F0 & args) const
+ { return new CODE(f,
+ t[0]->CastTo(args[0]),
+ t[1]->CastTo(args[1]),
+ t[2]->CastTo(args[2]),
+ t[3]->CastTo(args[3]),
+ t[4]->CastTo(args[4]),
+ t[5]->CastTo(args[5]),
+ t[6]->CastTo(args[6]),
+ t[7]->CastTo(args[7]),
+ t[8]->CastTo(args[8]),
+ t[9]->CastTo(args[9]),
+ t[10]->CastTo(args[10]),
+ t[11]->CastTo(args[11]),
+ t[12]->CastTo(args[12]),
+ t[13]->CastTo(args[13]),
+ t[14]->CastTo(args[14]),
+ t[15]->CastTo(args[15]),
+ t[16]->CastTo(args[16]) );} // extend (2pts)
+ OneOperator17_(func ff): // 3->4
+ OneOperator(map_type[typeid(RR).name()],
+ map_type[typeid(A).name()],
+ map_type[typeid(B).name()],
+ map_type[typeid(C).name()],
+ map_type[typeid(D).name()],
+ map_type[typeid(E).name()],
+ map_type[typeid(F).name()],
+ map_type[typeid(G).name()],
+ map_type[typeid(H).name()],
+ map_type[typeid(I).name()],
+ map_type[typeid(J).name()],
+ map_type[typeid(K).name()],
+ map_type[typeid(L).name()],
+ map_type[typeid(M).name()],
+ map_type[typeid(N).name()],
+ map_type[typeid(O).name()],
+ map_type[typeid(P).name()],
+ map_type[typeid(Q).name()]), // extend
+ f(ff){}
+};
+
+
+//
+//
+//
+//
+// ***********************************************
+// **** 18 parameters
+// ***********************
+//
+
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class E=E_F0> // extend AX
+class E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A13 &, const A14 &, const A15 &, const A16 &, const A17 &) ; // extend AX
+ func f;
+ Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17; // extend aX
+ E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
+ Expression aa0,
+ Expression aa1,
+ Expression aa2,
+ Expression aa3,
+ Expression aa4,
+ Expression aa5,
+ Expression aa6,
+ Expression aa7,
+ Expression aa8,
+ Expression aa9,
+ Expression aa10,
+ Expression aa11,
+ Expression aa12,
+ Expression aa13,
+ Expression aa14,
+ Expression aa15,
+ Expression aa16,
+ Expression aa17) // extend
+ : f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11), a12(aa12), a13(aa13), a14(aa14) , a15(aa15) , a16(aa16) , a17(aa17) {} // extend aX (2pts)
+ AnyType operator()(Stack s) const
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
+ GetAny<A1>((*a1)(s)),
+ GetAny<A2>((*a2)(s)),
+ GetAny<A3>((*a3)(s)),
+ GetAny<A4>((*a4)(s)),
+ GetAny<A5>((*a5)(s)),
+ GetAny<A6>((*a6)(s)),
+ GetAny<A7>((*a7)(s)),
+ GetAny<A8>((*a8)(s)),
+ GetAny<A9>((*a9)(s)),
+ GetAny<A10>((*a10)(s)),
+ GetAny<A11>((*a11)(s)),
+ GetAny<A12>((*a12)(s)),
+ GetAny<A13>((*a13)(s)),
+ GetAny<A14>((*a14)(s)),
+ GetAny<A15>((*a15)(s)),
+ GetAny<A16>((*a16)(s)),
+ GetAny<A17>((*a17)(s)) ) );} // extend aX (2 pts)
+ virtual size_t nbitem() const {return a17->nbitem(); } // modif
+ bool MeshIndependent() const
+ {return a0->MeshIndependent() && a1->MeshIndependent()&& a2->MeshIndependent()
+ && a3->MeshIndependent()&& a4->MeshIndependent()&& a5->MeshIndependent()&& a6->MeshIndependent()
+ && a7->MeshIndependent()&& a8->MeshIndependent()&& a9->MeshIndependent()&& a10->MeshIndependent()&& a11->MeshIndependent()&& a12->MeshIndependent()
+ && a13->MeshIndependent()&& a14->MeshIndependent()&& a15->MeshIndependent()&& a16->MeshIndependent()&& a17->MeshIndependent();} // extend aX
+
+};
+
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M,class O=N, class P=O , class Q=P , class R=Q ,class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,E_F0> > // extend (3 pts)
+class OneOperator18_ : public OneOperator { // 3->4
+ aType r; // return type
+ typedef typename CODE::func func;
+ func f;
+public:
+ E_F0 * code(const basicAC_F0 & args) const
+ { return new CODE(f,
+ t[0]->CastTo(args[0]),
+ t[1]->CastTo(args[1]),
+ t[2]->CastTo(args[2]),
+ t[3]->CastTo(args[3]),
+ t[4]->CastTo(args[4]),
+ t[5]->CastTo(args[5]),
+ t[6]->CastTo(args[6]),
+ t[7]->CastTo(args[7]),
+ t[8]->CastTo(args[8]),
+ t[9]->CastTo(args[9]),
+ t[10]->CastTo(args[10]),
+ t[11]->CastTo(args[11]),
+ t[12]->CastTo(args[12]),
+ t[13]->CastTo(args[13]),
+ t[14]->CastTo(args[14]),
+ t[15]->CastTo(args[15]),
+ t[16]->CastTo(args[16]),
+ t[17]->CastTo(args[17]));} // extend (2pts)
+ OneOperator18_(func ff): // 3->4
+ OneOperator(map_type[typeid(RR).name()],
+ map_type[typeid(A).name()],
+ map_type[typeid(B).name()],
+ map_type[typeid(C).name()],
+ map_type[typeid(D).name()],
+ map_type[typeid(E).name()],
+ map_type[typeid(F).name()],
+ map_type[typeid(G).name()],
+ map_type[typeid(H).name()],
+ map_type[typeid(I).name()],
+ map_type[typeid(J).name()],
+ map_type[typeid(K).name()],
+ map_type[typeid(L).name()],
+ map_type[typeid(M).name()],
+ map_type[typeid(N).name()],
+ map_type[typeid(O).name()],
+ map_type[typeid(P).name()],
+ map_type[typeid(Q).name()],
+ map_type[typeid(R).name()]), // extend
+ f(ff){}
+};
+
+
+
+
+//
+//
+//
+// ***********************************************
+// **** 19 parameters
+// ***********************
+//
+
+template<class RR,class A0,class A1,class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9, class A10, class A11, class A12, class A13, class A14, class A15, class A16, class A17, class A18, class E=E_F0> // extend AX
+class E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_ :public E { public: // extend
+ typedef RR (*func)(const A0 &,const A1 & , const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &, const A10 &, const A11 &, const A12 &, const A13 &, const A14 &, const A15 &, const A16 &, const A17 &, const A18 &) ; // extend AX
+ func f;
+ Expression a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18; // extend aX
+ E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_(func ff, // extend F0
+ Expression aa0,
+ Expression aa1,
+ Expression aa2,
+ Expression aa3,
+ Expression aa4,
+ Expression aa5,
+ Expression aa6,
+ Expression aa7,
+ Expression aa8,
+ Expression aa9,
+ Expression aa10,
+ Expression aa11,
+ Expression aa12,
+ Expression aa13,
+ Expression aa14,
+ Expression aa15,
+ Expression aa16,
+ Expression aa17,
+ Expression aa18) // extend
+ : f(ff), a0(aa0), a1(aa1), a2(aa2), a3(aa3), a4(aa4), a5(aa5), a6(aa6), a7(aa7), a8(aa8), a9(aa9), a10(aa10), a11(aa11), a12(aa12), a13(aa13), a14(aa14) , a15(aa15) , a16(aa16) , a17(aa17) , a18(aa18) {} // extend aX (2pts)
+ AnyType operator()(Stack s) const
+ {return SetAny<RR>( f( GetAny<A0>((*a0)(s)),
+ GetAny<A1>((*a1)(s)),
+ GetAny<A2>((*a2)(s)),
+ GetAny<A3>((*a3)(s)),
+ GetAny<A4>((*a4)(s)),
+ GetAny<A5>((*a5)(s)),
+ GetAny<A6>((*a6)(s)),
+ GetAny<A7>((*a7)(s)),
+ GetAny<A8>((*a8)(s)),
+ GetAny<A9>((*a9)(s)),
+ GetAny<A10>((*a10)(s)),
+ GetAny<A11>((*a11)(s)),
+ GetAny<A12>((*a12)(s)),
+ GetAny<A13>((*a13)(s)),
+ GetAny<A14>((*a14)(s)),
+ GetAny<A15>((*a15)(s)),
+ GetAny<A16>((*a16)(s)),
+ GetAny<A17>((*a17)(s)),
+ GetAny<A18>((*a18)(s))) );} // extend aX (2 pts)
+ virtual size_t nbitem() const {return a18->nbitem(); } // modif
+ bool MeshIndependent() const
+ {return a0->MeshIndependent() && a1->MeshIndependent()&& a2->MeshIndependent()
+ && a3->MeshIndependent()&& a4->MeshIndependent()&& a5->MeshIndependent()&& a6->MeshIndependent()
+ && a7->MeshIndependent()&& a8->MeshIndependent()&& a9->MeshIndependent()&& a10->MeshIndependent()&& a11->MeshIndependent()&& a12->MeshIndependent()
+ && a13->MeshIndependent()&& a14->MeshIndependent()&& a15->MeshIndependent()&& a16->MeshIndependent()&& a17->MeshIndependent()&& a18->MeshIndependent();} // extend aX
+
+};
+
+template<class RR,class A=RR,class B=A,class C=B, class D=C ,class E=D ,class F=E ,class G=F ,class H=G ,class I=H , class J=I , class K=J, class L=K, class M=L, class N=M,class O=N, class P=O , class Q=P , class R=Q , class S=R, class CODE=E_F_F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0_<RR,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,E_F0> > // extend (3 pts)
+class OneOperator19_ : public OneOperator { // 3->4
+ aType r; // return type
+ typedef typename CODE::func func;
+ func f;
+public:
+ E_F0 * code(const basicAC_F0 & args) const
+ { return new CODE(f,
+ t[0]->CastTo(args[0]),
+ t[1]->CastTo(args[1]),
+ t[2]->CastTo(args[2]),
+ t[3]->CastTo(args[3]),
+ t[4]->CastTo(args[4]),
+ t[5]->CastTo(args[5]),
+ t[6]->CastTo(args[6]),
+ t[7]->CastTo(args[7]),
+ t[8]->CastTo(args[8]),
+ t[9]->CastTo(args[9]),
+ t[10]->CastTo(args[10]),
+ t[11]->CastTo(args[11]),
+ t[12]->CastTo(args[12]),
+ t[13]->CastTo(args[13]),
+ t[14]->CastTo(args[14]),
+ t[15]->CastTo(args[15]),
+ t[16]->CastTo(args[16]),
+ t[17]->CastTo(args[17]),
+ t[18]->CastTo(args[18]));} // extend (2pts)
+ OneOperator19_(func ff): // 3->4
+ OneOperator(map_type[typeid(RR).name()],
+ map_type[typeid(A).name()],
+ map_type[typeid(B).name()],
+ map_type[typeid(C).name()],
+ map_type[typeid(D).name()],
+ map_type[typeid(E).name()],
+ map_type[typeid(F).name()],
+ map_type[typeid(G).name()],
+ map_type[typeid(H).name()],
+ map_type[typeid(I).name()],
+ map_type[typeid(J).name()],
+ map_type[typeid(K).name()],
+ map_type[typeid(L).name()],
+ map_type[typeid(M).name()],
+ map_type[typeid(N).name()],
+ map_type[typeid(O).name()],
+ map_type[typeid(P).name()],
+ map_type[typeid(Q).name()],
+ map_type[typeid(R).name()],
+ map_type[typeid(S).name()]), // extend
+ f(ff){}
+};
+
Added: fsem/patch/freefem++-2.16-1/AFunction.hpp.patch
===================================================================
--- fsem/patch/freefem++-2.16-1/AFunction.hpp.patch (rev 0)
+++ fsem/patch/freefem++-2.16-1/AFunction.hpp.patch 2007-04-25 13:20:43 UTC (rev 132)
@@ -0,0 +1,130 @@
+381c381
+< aType tt[11];
+---
+> aType tt[19];
+400,401c400,401
+< :n(3),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;}
+<
+---
+> :n(3),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;}
+>
+403,404c403,404
+< :n(4),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d;
+< /* cout << * a << *b << * c << * d << " ---------" << endl; */}
+---
+> :n(4),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d;
+> /* cout << * a << *b << * c << * d << " ---------" << endl; */}
+408,428c408
+< :n(6),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; }
+<
+< explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+< const aType & f,const aType & g,
+< bool ell=false)
+< :n(7),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; } // (6 args) Added by Fabian Dortu
+<
+< explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+< const aType & f,const aType & g,const aType & h,
+< bool ell=false)
+< :n(8),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; } // (7 args) Added by Fabian Dortu
+<
+< explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+< const aType & f,const aType & g,const aType & h, const aType & i,
+< bool ell=false)
+< :n(9),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; } // (8 args) Added by Fabian Dortu
+<
+< explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d, const aType & e,
+< const aType & f,const aType & g,const aType & h, const aType & i, const aType & j,
+< bool ell=false)
+< :n(10),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; } // (10 args) Added by Fabian Dortu
+---
+> :n(6),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; }
+430,433c410,475
+< explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k,bool ell=false)
+< :n(11),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; } // (10 args) Added by Fabian Dortu
+<
+<
+---
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,
+> bool ell=false)
+> :n(7),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; } // (6 args) Added by Fabian Dortu
+>
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,
+> bool ell=false)
+> :n(8),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; } // (7 args) Added by Fabian Dortu
+>
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,
+> bool ell=false)
+> :n(9),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; } // (8 args) Added by Fabian Dortu
+>
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> bool ell=false)
+> :n(10),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; } // (10 args) Added by Fabian Dortu
+>
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,bool ell=false)
+> :n(11),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; } // (10 args) Added by Fabian Dortu
+>
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,bool ell=false)
+> :n(12),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; }
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,const aType & m,bool ell=false)
+> :n(13),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; }
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,const aType & m,const aType & n,bool ell=false)
+> :n(14),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; }
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,const aType & m,const aType & n,const aType & o, bool ell=false)
+> :n(15),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; }
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,const aType & m,const aType & n,const aType & o,
+> const aType & p, bool ell=false)
+> :n(16),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; t[15]=p; }
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,const aType & m,const aType & n,const aType & o,
+> const aType & p,const aType & q, bool ell=false)
+> :n(17),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; t[15]=p; t[16]=q;}
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,const aType & m,const aType & n,const aType & o,
+> const aType & p,const aType & q,const aType & r, bool ell=false)
+> :n(18),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; t[15]=p; t[16]=q;
+> t[17]=r;}
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
+> const aType & f,const aType & g,const aType & h,const aType & i,const aType & j,
+> const aType & k,const aType & l,const aType & m,const aType & n,const aType & o,
+> const aType & p,const aType & q,const aType & r,const aType & s, bool ell=false)
+> :n(19),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; t[15]=p; t[16]=q;
+> t[17]=r; t[18]=s;}
+> // Note from F.Dortu and J.Bogdanowicz: t[19]=t will cause compilation error. Skip "t" and try with "u" ?!
+>
+>
+484,485c526,539
+<
+<
+---
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o,
+> aType p);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o,
+> aType p, aType q);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o,
+> aType p, aType q,aType r);
+> OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o,
+> aType p, aType q,aType r, aType s);
+>
Added: fsem/patch/freefem++-2.16-1/AFunction2.cpp.patch
===================================================================
--- fsem/patch/freefem++-2.16-1/AFunction2.cpp.patch (rev 0)
+++ fsem/patch/freefem++-2.16-1/AFunction2.cpp.patch 2007-04-25 13:20:43 UTC (rev 132)
@@ -0,0 +1,48 @@
+301c301,345
+<
+---
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,false),next(0),pref(0)
+> {throwassert(rr && a && b && c && d && e && f && g && h && i && j && k);}
+>
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k, aType l)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,l,false),next(0),pref(0)
+> {throwassert(rr && a && b && c && d && e && f && g && h && i && j && k && l);}
+>
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k, aType l, aType m)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,l,m,false),next(0),pref(0)
+> {throwassert(rr && a && b && c && d && e && f && g && h && i && j && k && l && m);}
+>
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k, aType l, aType m, aType n)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,l,m,n,false),next(0),pref(0)
+> {throwassert(rr && a && b && c && d && e && f && g && h && i && j && k && l && m && n);}
+>
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k, aType l, aType m, aType n, aType o)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,false),next(0),pref(0)
+> {throwassert(rr && a && b && c && d && e && f && g && h && i && j && k && l && m && n && o);}
+>
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k, aType l, aType m, aType n, aType o, aType p)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,false),next(0),pref(0)
+> {throwassert(rr && a && b && c && d && e && f && g && h && i && j && k && l && m && n && o && p);}
+>
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k, aType l, aType m, aType n, aType o, aType p, aType q)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,false),next(0),pref(0)
+> {throwassert(rr && a && b && c && d && e && f && g && h && i && j && k && l && m && n && o && p && q);}
+>
+> OneOperator::OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j,
+> aType k, aType l, aType m, aType n, aType o, aType p, aType q, aType r)
+> : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,false),next(0),p...
[truncated message content] |
|
From: <fab...@us...> - 2007-04-24 14:50:48
|
Revision: 131
http://fsem.svn.sourceforge.net/fsem/?rev=131&view=rev
Author: fabiandortu
Date: 2007-04-24 07:49:47 -0700 (Tue, 24 Apr 2007)
Log Message:
-----------
Added flags to select which equation to solve for DDSG:
bool ModUsrDDSGPOT = true;
bool ModUsrDDSGRHON = true;
bool ModUsrDDSGRHOP = true;
Modified Paths:
--------------
fsem/models/fsem_Mod_FlagsSemi.edp
fsem/solve/fsem_SolveMainDDSG.edp
fsem/solve/fsem_Solve_Vars.edp
Modified: fsem/models/fsem_Mod_FlagsSemi.edp
===================================================================
--- fsem/models/fsem_Mod_FlagsSemi.edp 2007-04-24 14:19:12 UTC (rev 130)
+++ fsem/models/fsem_Mod_FlagsSemi.edp 2007-04-24 14:49:47 UTC (rev 131)
@@ -38,26 +38,6 @@
*/
-/*********************************************
- * Select DDSG equations to solve
- *********************************************
-bool ModUsrDDSGPOT = true;
-/*TeXDoc
- Solve potential quation (DDSG)
- & true
-*/
-bool ModUsrDDSGRHON = true;
-/*TeXDoc
- Solve electron quation (DDSG)
- & true
-*/
-bool ModUsrDDSGRHOP = true;
-/*TeXDoc
- Solve hole quation (DDSG)
- & true
-*/
-
-
/***********************************************************
* Valence and Conduction band Effective density of state
* In short NV and NC. Generic: NX
Modified: fsem/solve/fsem_SolveMainDDSG.edp
===================================================================
--- fsem/solve/fsem_SolveMainDDSG.edp 2007-04-24 14:19:12 UTC (rev 130)
+++ fsem/solve/fsem_SolveMainDDSG.edp 2007-04-24 14:49:47 UTC (rev 131)
@@ -580,7 +580,6 @@
real RhoPMax=1;
bool isConverge=false;
-
GloVhP1 RealEXCH1;
GloVhP1 ImagEXCH1;
@@ -598,39 +597,36 @@
real PsiFoM = 0; // ...and to display them again at the end of the gummel loop. So these variables are NOT essential. It's just for display.
for(int i=0; i<UsrGummelNbrMaxIter; i++) {
-
-
-
-
cout << endl;
cout << "******************************************************************" << endl;
cout << "*** Gummel iteration # " << i << endl;
cout << "******************************************************************" << endl;
-
-
// Gummel loop:
-
- // POTENTIAL EQUATION
- SolveDDSGPotNonlinearSteady();
-
- Psil2 = GloVarSemiPOT[].l2;
- PsiMax = GloVarSemiPOT[].max;
- PsiFoM = abs(Psil2 - Psil2Prev) / abs(Psil2);
- cout << "$$$$ abs(Psil2 - Psil2Prev)/ abs(Psil2): " << abs(Psil2 - Psil2Prev) / abs(Psil2) << endl;
- cout << "$$$$ abs(PsiMax - PsiMaxPrev)/ abs(PsiMax): " << abs(PsiMax - PsiMaxPrev) / abs(PsiMax) << endl;
- if(abs(Psil2 - Psil2Prev) / abs(Psil2) < UsrGummelEpsPot) {
- isConverge = true;
- cout << "$$$$ Psi CONVERGED" << endl;
- } else {
- isConverge = false;
- }
- Psil2Prev = Psil2;
- PsiMaxPrev = PsiMax;
-
- if (ModUsrFixedPotential)
- {
- // FIX POTENTIAL AT NODE "node" (xval, yval) to "PotVal" [V]
+
+ // **********************
+ // *** POTENTIAL EQUATION
+ // **********************
+
+ if(ModUsrDDSGPOT) { // DO WE SOLVE THE POTENTIAL EQUATION?
+ SolveDDSGPotNonlinearSteady();
+
+ Psil2 = GloVarSemiPOT[].l2;
+ PsiMax = GloVarSemiPOT[].max;
+ PsiFoM = abs(Psil2 - Psil2Prev) / abs(Psil2);
+ cout << "$$$$ abs(Psil2 - Psil2Prev)/ abs(Psil2): " << abs(Psil2 - Psil2Prev) / abs(Psil2) << endl;
+ cout << "$$$$ abs(PsiMax - PsiMaxPrev)/ abs(PsiMax): " << abs(PsiMax - PsiMaxPrev) / abs(PsiMax) << endl;
+ if(abs(Psil2 - Psil2Prev) / abs(Psil2) < UsrGummelEpsPot) {
+ isConverge = true;
+ cout << "$$$$ Psi CONVERGED" << endl;
+ } else {
+ isConverge = false;
+ }
+ Psil2Prev = Psil2;
+ PsiMaxPrev = PsiMax;
+
+ if (ModUsrFixedPotential) {
+ // FIX POTENTIAL AT NODE "node" (xval, yval) to "PotVal" [V]
GloMeshCOORDX = x;
GloMeshCOORDY = y;
node = CppModGetNode(GloMeshCOORDX[], GloMeshCOORDY[],xval , yval);
@@ -640,49 +636,62 @@
GloVarSemiDDSGRhoN = GloVarSemiDDSGRhoN * exp(-PotShift/(1.3807e-23/1.60218e-19 *GloVarTempT));
GloVarSemiDDSGRhoP = GloVarSemiDDSGRhoP * exp(PotShift/(1.3807e-23/1.60218e-19 *GloVarTempT));
}
+ // ELECTRON AND HOLE EQUATIONS
+ } else {
+ isConverge = true; // since we do not solve this equation, we consider it is converged
+ PsiFoM = 0.0;
+ }// END ModUsrDDSGPOT
- // ELECTRON AND HOLE EQUATIONS
-
-
- if (HOLbefELE) { // HOL equation solved BEFORE ELE equation.
- SolveDDSGHolSteady();
+
+ // **********************
+ // *** CARRIER EQUATIONS
+ // **********************
+ if (HOLbefELE) { // HOL equation solved BEFORE ELE equation.
+ if(ModUsrDDSGRHOP) { // DO WE SOLVE THE HOLE EQUATION?
+ SolveDDSGHolSteady();
+
+ RhoPl2 = GloVarSemiDDSGRhoP[].l2;
+ RhoPMax = GloVarSemiDDSGRhoP[].max;
+ RhoPFoM = abs(RhoPl2 - RhoPl2Prev)/ abs(RhoPl2);
+ cout << "abs(RhoPl2 - RhoPl2Prev)/ abs(RhoPl2): " << abs(RhoPl2 - RhoPl2Prev)/ abs(RhoPl2) << endl;
+ cout << "$$$$ abs(RhoPMax - RhoPMaxPrev)/ abs(RhoPMax): " << abs(RhoPMax - RhoPMaxPrev) / abs(RhoPMax) << endl;
+ if(abs(RhoPl2 - RhoPl2Prev) / abs(RhoPl2) < UsrGummelEpsCarr) {
+ isConverge = isConverge * true;
+ cout << "$$$$ RhoP CONVERGED" << endl;
+ } else {
+ isConverge = false;
+ }
+ RhoPl2Prev = RhoPl2;
+ RhoPMaxPrev = RhoPMax;
- RhoPl2 = GloVarSemiDDSGRhoP[].l2;
- RhoPMax = GloVarSemiDDSGRhoP[].max;
- RhoPFoM = abs(RhoPl2 - RhoPl2Prev)/ abs(RhoPl2);
- cout << "abs(RhoPl2 - RhoPl2Prev)/ abs(RhoPl2): " << abs(RhoPl2 - RhoPl2Prev)/ abs(RhoPl2) << endl;
- cout << "$$$$ abs(RhoPMax - RhoPMaxPrev)/ abs(RhoPMax): " << abs(RhoPMax - RhoPMaxPrev) / abs(RhoPMax) << endl;
- if(abs(RhoPl2 - RhoPl2Prev) / abs(RhoPl2) < UsrGummelEpsCarr) {
- isConverge = isConverge * true;
- cout << "$$$$ RhoP CONVERGED" << endl;
} else {
- isConverge = false;
+ isConverge = isConverge * true; // since we do not solve this equation, we consider it is converged
+ RhoPFoM = 0.0;
}
- RhoPl2Prev = RhoPl2;
- RhoPMaxPrev = RhoPMax;
-
-
-
- SolveDDSGEleSteady();
-
- RhoNl2 = GloVarSemiDDSGRhoN[].l2;
- RhoNMax = GloVarSemiDDSGRhoN[].max;
- RhoNFoM = abs(RhoNl2 - RhoNl2Prev) / abs(RhoNl2);
- cout << "$$$$ abs(RhoNl2 - RhoNl2Prev)/ abs(RhoNl2): "<< abs(RhoNl2 - RhoNl2Prev) / abs(RhoNl2) << endl;
- cout << "$$$$ abs(RhoNMax - RhoNMaxPrev)/ abs(RhoNMax): " << abs(RhoNMax - RhoNMaxPrev) / abs(RhoNMax) << endl;
- if(abs(RhoNl2 - RhoNl2Prev) / abs(RhoNl2) < UsrGummelEpsCarr ) {
- isConverge = isConverge * true;
- cout << "$$$$ RhoN CONVERGED" << endl;
+
+ if(ModUsrDDSGRHON) {
+ SolveDDSGEleSteady();
+
+ RhoNl2 = GloVarSemiDDSGRhoN[].l2;
+ RhoNMax = GloVarSemiDDSGRhoN[].max;
+ RhoNFoM = abs(RhoNl2 - RhoNl2Prev) / abs(RhoNl2);
+ cout << "$$$$ abs(RhoNl2 - RhoNl2Prev)/ abs(RhoNl2): "<< abs(RhoNl2 - RhoNl2Prev) / abs(RhoNl2) << endl;
+ cout << "$$$$ abs(RhoNMax - RhoNMaxPrev)/ abs(RhoNMax): " << abs(RhoNMax - RhoNMaxPrev) / abs(RhoNMax) << endl;
+ if(abs(RhoNl2 - RhoNl2Prev) / abs(RhoNl2) < UsrGummelEpsCarr ) {
+ isConverge = isConverge * true;
+ cout << "$$$$ RhoN CONVERGED" << endl;
+ } else {
+ isConverge = false;
+ }
+ RhoNl2Prev =RhoNl2;
+ RhoNMaxPrev =RhoNMax;
} else {
- isConverge = false;
+ isConverge = isConverge * true; // since we do not solve this equation, we consider it is converged
+ RhoNFoM = 0.0;
}
- RhoNl2Prev =RhoNl2;
- RhoNMaxPrev =RhoNMax;
-
- }
- else
- { // ELE equation solved BEFORE HOL equation.
+ } else { // ELE equation solved BEFORE HOL equation.
+ if(ModUsrDDSGRHON) { // DO WE SOLVE THE ELECTRON EQUATION?
SolveDDSGEleSteady();
RhoNl2 = GloVarSemiDDSGRhoN[].l2;
@@ -698,7 +707,12 @@
}
RhoNl2Prev =RhoNl2;
RhoNMaxPrev =RhoNMax;
-
+ } else {
+ isConverge = isConverge * true; // since we do not solve this equation, we consider it is converged
+ RhoNFoM = 0.0;
+ }
+
+ if(ModUsrDDSGRHOP) { // DO WE SOLVE THE ELECTRON EQUATION?
SolveDDSGHolSteady();
RhoPl2 = GloVarSemiDDSGRhoP[].l2;
@@ -714,65 +728,57 @@
}
RhoPl2Prev = RhoPl2;
RhoPMaxPrev = RhoPMax;
-
-
+ } else {
+ isConverge = isConverge * true; // since we do not solve this equation, we consider it is converged
+ RhoPFoM = 0.0;
}
+ }
- if (ModUsrDDSGH1inGummel && ModUsrDDSGSteadyPeriodic)
-
- {
- SolveDDSGHarm(1,i);
- RealEXCH1 = real (GloVarSemiEXCH1);
- ImagEXCH1 = imag (GloVarSemiEXCH1);
- I1MaxGummel = RealEXCH1[].max;
- Q1MaxGummel = ImagEXCH1[].max;
- I1l2Gummel = RealEXCH1[].l2;
- Q1l2Gummel = ImagEXCH1[].l2;
-
- // plot(GloVarSemiEXC,wait=true);
-
- if (ParUsrLaserModFreq == 0)
- {
- cout << "$$$$ abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel): " << abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel) << endl;
- cout << "$$$$ abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel): " << abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) << endl;
-
- if( (abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) < UsrGummelEpsCarr) ) {
- isConverge = isConverge * true;
- cout << "$$$$ EXCH1 CONVERGED" << endl;
- } else {
- isConverge = false;
- }
-
- }
- else
- {
- cout << "$$$$ abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel): " << abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel) << endl;
- cout << "$$$$ abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel): " << abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) << endl;
- cout << "$$$$ abs(Q1MaxGummel-Q1MaxPrevGummel)/ abs(Q1MaxGummel): " << abs(Q1MaxGummel-Q1MaxPrevGummel)/ abs(Q1MaxGummel) << endl;
- cout << "$$$$ abs(Q1l2Gummel-Q1l2PrevGummel)/ abs(Q1l2Gummel): " << abs(Q1l2Gummel-Q1l2PrevGummel)/ abs(Q1l2Gummel) << endl;
-
- if( (abs(Q1l2Gummel-Q1l2PrevGummel)/ abs(Q1l2Gummel) < UsrGummelEpsCarr) &&
- (abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) < UsrGummelEpsCarr) ) {
- isConverge = isConverge * true;
- cout << "$$$$ EXCH1 CONVERGED" << endl;
- } else {
- isConverge = false;
- }
-
-
-
- }
-
- I1l2PrevGummel = I1l2Gummel;
- I1MaxPrevGummel = I1MaxGummel;
- Q1l2PrevGummel= Q1l2Gummel;
- Q1MaxPrevGummel = Q1MaxGummel;
-
-
+ // ***********************************************
+ // *** FIRST HARMONIC CARRIER EQUATION (obsolete)
+ // ***********************************************
+ if (ModUsrDDSGH1inGummel && ModUsrDDSGSteadyPeriodic) {
+ // In case of steady periodic resolution, the first harmonic component can be solved with the dc component
+ // Practically this part of the code is obsolete since it assumes that the potential is not modulated
+ SolveDDSGHarm(1,i);
+ RealEXCH1 = real (GloVarSemiEXCH1);
+ ImagEXCH1 = imag (GloVarSemiEXCH1);
+ I1MaxGummel = RealEXCH1[].max;
+ Q1MaxGummel = ImagEXCH1[].max;
+ I1l2Gummel = RealEXCH1[].l2;
+ Q1l2Gummel = ImagEXCH1[].l2;
+ // plot(GloVarSemiEXC,wait=true);
+ if (ParUsrLaserModFreq == 0) {
+ cout << "$$$$ abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel): " << abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel) << endl;
+ cout << "$$$$ abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel): " << abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) << endl;
+ if( (abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) < UsrGummelEpsCarr) ) {
+ isConverge = isConverge * true;
+ cout << "$$$$ EXCH1 CONVERGED" << endl;
+ } else {
+ isConverge = false;
+ }
+ } else {
+ cout << "$$$$ abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel): " << abs(I1MaxGummel-I1MaxPrevGummel)/ abs(I1MaxGummel) << endl;
+ cout << "$$$$ abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel): " << abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) << endl;
+ cout << "$$$$ abs(Q1MaxGummel-Q1MaxPrevGummel)/ abs(Q1MaxGummel): " << abs(Q1MaxGummel-Q1MaxPrevGummel)/ abs(Q1MaxGummel) << endl;
+ cout << "$$$$ abs(Q1l2Gummel-Q1l2PrevGummel)/ abs(Q1l2Gummel): " << abs(Q1l2Gummel-Q1l2PrevGummel)/ abs(Q1l2Gummel) << endl;
+ if( (abs(Q1l2Gummel-Q1l2PrevGummel)/ abs(Q1l2Gummel) < UsrGummelEpsCarr) &&
+ (abs(I1l2Gummel-I1l2PrevGummel)/ abs(I1l2Gummel) < UsrGummelEpsCarr) ) {
+ isConverge = isConverge * true;
+ cout << "$$$$ EXCH1 CONVERGED" << endl;
+ } else {
+ isConverge = false;
+ }
}
+ I1l2PrevGummel = I1l2Gummel;
+ I1MaxPrevGummel = I1MaxGummel;
+ Q1l2PrevGummel= Q1l2Gummel;
+ Q1MaxPrevGummel = Q1MaxGummel;
+ }
- // Check for convergence
-
+ // **********************************
+ // *** Check for Gummel convergence
+ // *********************************
if(isConverge) {
cout << endl;
cout << "**************************************************************** **" << endl;
@@ -784,10 +790,8 @@
cout << "**************************************************************** **" << endl;
break;
}
-
} // End Gummel loop.
-
if(!isConverge) {
cout << endl;
cout << "*****************************************************************************" << endl;
@@ -798,9 +802,6 @@
cout << "*** abs(Psil2 - Psil2Prev) / abs(Psil2): " << PsiFoM << endl;
cout << "*****************************************************************************" << endl;
}
-
-
-
}
Modified: fsem/solve/fsem_Solve_Vars.edp
===================================================================
--- fsem/solve/fsem_Solve_Vars.edp 2007-04-24 14:19:12 UTC (rev 130)
+++ fsem/solve/fsem_Solve_Vars.edp 2007-04-24 14:49:47 UTC (rev 131)
@@ -47,6 +47,28 @@
& [NA]
*/
+
+/*********************************************
+ * Select DDSG equations to solve
+ *********************************************/
+bool ModUsrDDSGPOT = true;
+/*TeXDoc
+ Solve potential quation (DDSG)
+ & true
+*/
+bool ModUsrDDSGRHON = true;
+/*TeXDoc
+ Solve electron quation (DDSG)
+ & true
+*/
+bool ModUsrDDSGRHOP = true;
+/*TeXDoc
+ Solve hole quation (DDSG)
+ & true
+*/
+
+
+
/*********************************
* Specific to Potential Equation
**********************************/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-04-24 14:19:18
|
Revision: 130
http://fsem.svn.sourceforge.net/fsem/?rev=130&view=rev
Author: fabiandortu
Date: 2007-04-24 07:19:12 -0700 (Tue, 24 Apr 2007)
Log Message:
-----------
Bug in freefem patch concerning C++ modules
Modified Paths:
--------------
fsem/models/fsem_Mod_FlagsSemi.edp
fsem/patch/freefem++-2.8-2/AFunction.hpp.patch
Modified: fsem/models/fsem_Mod_FlagsSemi.edp
===================================================================
--- fsem/models/fsem_Mod_FlagsSemi.edp 2007-04-23 12:48:24 UTC (rev 129)
+++ fsem/models/fsem_Mod_FlagsSemi.edp 2007-04-24 14:19:12 UTC (rev 130)
@@ -37,6 +37,27 @@
&
*/
+
+/*********************************************
+ * Select DDSG equations to solve
+ *********************************************
+bool ModUsrDDSGPOT = true;
+/*TeXDoc
+ Solve potential quation (DDSG)
+ & true
+*/
+bool ModUsrDDSGRHON = true;
+/*TeXDoc
+ Solve electron quation (DDSG)
+ & true
+*/
+bool ModUsrDDSGRHOP = true;
+/*TeXDoc
+ Solve hole quation (DDSG)
+ & true
+*/
+
+
/***********************************************************
* Valence and Conduction band Effective density of state
* In short NV and NC. Generic: NX
Modified: fsem/patch/freefem++-2.8-2/AFunction.hpp.patch
===================================================================
--- fsem/patch/freefem++-2.8-2/AFunction.hpp.patch 2007-04-23 12:48:24 UTC (rev 129)
+++ fsem/patch/freefem++-2.8-2/AFunction.hpp.patch 2007-04-24 14:19:12 UTC (rev 130)
@@ -7,13 +7,13 @@
---
> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l,bool ell=false)
> :n(12),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; }
-> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m,bool ell=false)
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m,bool ell=false)
> :n(13),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; }
-> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m, aType & n,bool ell=false)
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m, const aType & n,bool ell=false)
> :n(14),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; }
-> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m, aType & n, aType & o, bool ell=false)
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m, const aType & n, const aType & o, bool ell=false)
> :n(15),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; }
-> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m, aType & n, aType
+> explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m, const aType & n, const aType
> & o, const aType & p, bool ell=false)
> :n(16),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; t[15]=p; }
456c466,471
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-04-23 12:48:24
|
Revision: 129
http://fsem.svn.sourceforge.net/fsem/?rev=129&view=rev
Author: fabiandortu
Date: 2007-04-23 05:48:24 -0700 (Mon, 23 Apr 2007)
Log Message:
-----------
Structured mesh for pn junction.
Added refinement zone for depletion region.
Modified Paths:
--------------
fsem/examples-fondation/struct_mesh/meshPN2.sce
Added Paths:
-----------
fsem/examples-fondation/struct_mesh/meshPN2.edp
fsem/examples-fondation/struct_mesh/meshPN3.edp
fsem/examples-fondation/struct_mesh/meshPN3.sce
fsem/examples-fondation/struct_mesh/meshPN_refine2.edp
fsem/examples-fondation/struct_mesh/meshPN_refine3.edp
Removed Paths:
-------------
fsem/examples-fondation/struct_mesh/meshPN.edp
fsem/examples-fondation/struct_mesh/meshPN.msh
fsem/examples-fondation/struct_mesh/meshPN_refine.edp
fsem/examples-fondation/struct_mesh/meshPN_refined.msh
Deleted: fsem/examples-fondation/struct_mesh/meshPN.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.edp 2007-04-05 12:53:15 UTC (rev 128)
+++ fsem/examples-fondation/struct_mesh/meshPN.edp 2007-04-23 12:48:24 UTC (rev 129)
@@ -1,213 +0,0 @@
-border TopLeftLas001(t=0.0000, 0.0003){x=t; y=0.0000;}
-border TopLeftLas002(t=0.0003, 0.0007){x=t; y=0.0000;}
-border TopLeftLas003(t=0.0007, 0.0011){x=t; y=0.0000;}
-border TopLeftLas004(t=0.0011, 0.0015){x=t; y=0.0000;}
-border TopLeftLas005(t=0.0015, 0.0019){x=t; y=0.0000;}
-border TopLeftLas006(t=0.0019, 0.0024){x=t; y=0.0000;}
-border TopLeftLas007(t=0.0024, 0.0029){x=t; y=0.0000;}
-border TopLeftLas008(t=0.0029, 0.0034){x=t; y=0.0000;}
-border TopLeftLas009(t=0.0034, 0.0039){x=t; y=0.0000;}
-border TopLeftLas010(t=0.0039, 0.0045){x=t; y=0.0000;}
-border TopLeftLas011(t=0.0045, 0.0052){x=t; y=0.0000;}
-border TopLeftLas012(t=0.0052, 0.0058){x=t; y=0.0000;}
-border TopLeftLas013(t=0.0058, 0.0066){x=t; y=0.0000;}
-border TopLeftLas014(t=0.0066, 0.0073){x=t; y=0.0000;}
-border TopLeftLas015(t=0.0073, 0.0082){x=t; y=0.0000;}
-border TopLeftLas016(t=0.0082, 0.0090){x=t; y=0.0000;}
-border TopLeftLas017(t=0.0090, 0.0100){x=t; y=0.0000;}
-border TopLeftLas018(t=0.0100, 0.0110){x=t; y=0.0000;}
-border TopLeftLas019(t=0.0110, 0.0120){x=t; y=0.0000;}
-border TopLeftLas020(t=0.0120, 0.0132){x=t; y=0.0000;}
-border TopLeftLas021(t=0.0132, 0.0144){x=t; y=0.0000;}
-border TopLeftLas022(t=0.0144, 0.0157){x=t; y=0.0000;}
-border TopLeftLas023(t=0.0157, 0.0171){x=t; y=0.0000;}
-border TopLeftLas024(t=0.0171, 0.0185){x=t; y=0.0000;}
-border TopLeftLas025(t=0.0185, 0.0201){x=t; y=0.0000;}
-border InnLeftLas001(t=0.0000, 0.0003){x=t; y=-0.0003;}
-border InnLeftLas002(t=0.0003, 0.0007){x=t; y=-0.0003;}
-border InnLeftLas003(t=0.0007, 0.0011){x=t; y=-0.0003;}
-border InnLeftLas004(t=0.0011, 0.0015){x=t; y=-0.0003;}
-border InnLeftLas005(t=0.0015, 0.0019){x=t; y=-0.0003;}
-border InnLeftLas006(t=0.0019, 0.0024){x=t; y=-0.0003;}
-border InnLeftLas007(t=0.0024, 0.0029){x=t; y=-0.0003;}
-border InnLeftLas008(t=0.0029, 0.0034){x=t; y=-0.0003;}
-border InnLeftLas009(t=0.0034, 0.0039){x=t; y=-0.0003;}
-border InnLeftLas010(t=0.0039, 0.0045){x=t; y=-0.0003;}
-border InnLeftLas011(t=0.0045, 0.0052){x=t; y=-0.0003;}
-border InnLeftLas012(t=0.0052, 0.0058){x=t; y=-0.0003;}
-border InnLeftLas013(t=0.0058, 0.0066){x=t; y=-0.0003;}
-border InnLeftLas014(t=0.0066, 0.0073){x=t; y=-0.0003;}
-border InnLeftLas015(t=0.0073, 0.0082){x=t; y=-0.0003;}
-border InnLeftLas016(t=0.0082, 0.0090){x=t; y=-0.0003;}
-border InnLeftLas017(t=0.0090, 0.0100){x=t; y=-0.0003;}
-border InnLeftLas018(t=0.0100, 0.0110){x=t; y=-0.0003;}
-border InnLeftLas019(t=0.0110, 0.0120){x=t; y=-0.0003;}
-border InnLeftLas020(t=0.0120, 0.0132){x=t; y=-0.0003;}
-border InnLeftLas021(t=0.0132, 0.0144){x=t; y=-0.0003;}
-border InnLeftLas022(t=0.0144, 0.0157){x=t; y=-0.0003;}
-border InnLeftLas023(t=0.0157, 0.0171){x=t; y=-0.0003;}
-border InnLeftLas024(t=0.0171, 0.0185){x=t; y=-0.0003;}
-border InnLeftLas025(t=0.0185, 0.0201){x=t; y=-0.0003;}
-border TopRightlas001(t=0.0201, 0.0218){x=t; y=0.0000;}
-border TopRightlas002(t=0.0218, 0.0236){x=t; y=0.0000;}
-border TopRightlas003(t=0.0236, 0.0256){x=t; y=0.0000;}
-border TopRightlas004(t=0.0256, 0.0278){x=t; y=0.0000;}
-border TopRightlas005(t=0.0278, 0.0303){x=t; y=0.0000;}
-border TopRightlas006(t=0.0303, 0.0330){x=t; y=0.0000;}
-border TopRightlas007(t=0.0330, 0.0359){x=t; y=0.0000;}
-border TopRightlas008(t=0.0359, 0.0392){x=t; y=0.0000;}
-border TopRightlas009(t=0.0392, 0.0428){x=t; y=0.0000;}
-border TopRightlas010(t=0.0428, 0.0467){x=t; y=0.0000;}
-border TopRightlas011(t=0.0467, 0.0510){x=t; y=0.0000;}
-border TopRightlas012(t=0.0510, 0.0558){x=t; y=0.0000;}
-border TopRightlas013(t=0.0558, 0.0611){x=t; y=0.0000;}
-border TopRightlas014(t=0.0611, 0.0668){x=t; y=0.0000;}
-border TopRightlas015(t=0.0668, 0.0732){x=t; y=0.0000;}
-border TopRightlas016(t=0.0732, 0.0802){x=t; y=0.0000;}
-border TopRightlas017(t=0.0802, 0.0879){x=t; y=0.0000;}
-border TopRightlas018(t=0.0879, 0.0964){x=t; y=0.0000;}
-border TopRightlas019(t=0.0964, 0.1057){x=t; y=0.0000;}
-border TopRightlas020(t=0.1057, 0.1159){x=t; y=0.0000;}
-border TopRightlas021(t=0.1159, 0.1272){x=t; y=0.0000;}
-border TopRightlas022(t=0.1272, 0.1396){x=t; y=0.0000;}
-border TopRightlas023(t=0.1396, 0.1533){x=t; y=0.0000;}
-border TopRightlas024(t=0.1533, 0.1683){x=t; y=0.0000;}
-border TopRightlas025(t=0.1683, 0.1849){x=t; y=0.0000;}
-border TopRightlas026(t=0.1849, 0.2031){x=t; y=0.0000;}
-border TopRightlas027(t=0.2031, 0.2231){x=t; y=0.0000;}
-border TopRightlas028(t=0.2231, 0.2451){x=t; y=0.0000;}
-border TopRightlas029(t=0.2451, 0.2694){x=t; y=0.0000;}
-border TopRightlas030(t=0.2694, 0.2961){x=t; y=0.0000;}
-border TopRightlas031(t=0.2961, 0.3254){x=t; y=0.0000;}
-border TopRightlas032(t=0.3254, 0.3578){x=t; y=0.0000;}
-border TopRightlas033(t=0.3578, 0.3933){x=t; y=0.0000;}
-border TopRightlas034(t=0.3933, 0.4324){x=t; y=0.0000;}
-border TopRightlas035(t=0.4324, 0.4755){x=t; y=0.0000;}
-border TopRightlas036(t=0.4755, 0.5228){x=t; y=0.0000;}
-border TopRightlas037(t=0.5228, 0.5749){x=t; y=0.0000;}
-border TopRightlas038(t=0.5749, 0.6323){x=t; y=0.0000;}
-border TopRightlas039(t=0.6323, 0.6954){x=t; y=0.0000;}
-border TopRightlas040(t=0.6954, 0.7648){x=t; y=0.0000;}
-border TopRightlas041(t=0.7648, 0.8412){x=t; y=0.0000;}
-border TopRightlas042(t=0.8412, 0.9253){x=t; y=0.0000;}
-border TopRightlas043(t=0.9253, 1.0178){x=t; y=0.0000;}
-border InnRightlas001(t=0.0201, 0.0218){x=t; y=-0.0003;}
-border InnRightlas002(t=0.0218, 0.0236){x=t; y=-0.0003;}
-border InnRightlas003(t=0.0236, 0.0256){x=t; y=-0.0003;}
-border InnRightlas004(t=0.0256, 0.0278){x=t; y=-0.0003;}
-border InnRightlas005(t=0.0278, 0.0303){x=t; y=-0.0003;}
-border InnRightlas006(t=0.0303, 0.0330){x=t; y=-0.0003;}
-border InnRightlas007(t=0.0330, 0.0359){x=t; y=-0.0003;}
-border InnRightlas008(t=0.0359, 0.0392){x=t; y=-0.0003;}
-border InnRightlas009(t=0.0392, 0.0428){x=t; y=-0.0003;}
-border InnRightlas010(t=0.0428, 0.0467){x=t; y=-0.0003;}
-border InnRightlas011(t=0.0467, 0.0510){x=t; y=-0.0003;}
-border InnRightlas012(t=0.0510, 0.0558){x=t; y=-0.0003;}
-border InnRightlas013(t=0.0558, 0.0611){x=t; y=-0.0003;}
-border InnRightlas014(t=0.0611, 0.0668){x=t; y=-0.0003;}
-border InnRightlas015(t=0.0668, 0.0732){x=t; y=-0.0003;}
-border InnRightlas016(t=0.0732, 0.0802){x=t; y=-0.0003;}
-border InnRightlas017(t=0.0802, 0.0879){x=t; y=-0.0003;}
-border InnRightlas018(t=0.0879, 0.0964){x=t; y=-0.0003;}
-border InnRightlas019(t=0.0964, 0.1057){x=t; y=-0.0003;}
-border InnRightlas020(t=0.1057, 0.1159){x=t; y=-0.0003;}
-border InnRightlas021(t=0.1159, 0.1272){x=t; y=-0.0003;}
-border InnRightlas022(t=0.1272, 0.1396){x=t; y=-0.0003;}
-border InnRightlas023(t=0.1396, 0.1533){x=t; y=-0.0003;}
-border InnRightlas024(t=0.1533, 0.1683){x=t; y=-0.0003;}
-border InnRightlas025(t=0.1683, 0.1849){x=t; y=-0.0003;}
-border InnRightlas026(t=0.1849, 0.2031){x=t; y=-0.0003;}
-border InnRightlas027(t=0.2031, 0.2231){x=t; y=-0.0003;}
-border InnRightlas028(t=0.2231, 0.2451){x=t; y=-0.0003;}
-border InnRightlas029(t=0.2451, 0.2694){x=t; y=-0.0003;}
-border InnRightlas030(t=0.2694, 0.2961){x=t; y=-0.0003;}
-border InnRightlas031(t=0.2961, 0.3254){x=t; y=-0.0003;}
-border InnRightlas032(t=0.3254, 0.3578){x=t; y=-0.0003;}
-border InnRightlas033(t=0.3578, 0.3933){x=t; y=-0.0003;}
-border InnRightlas034(t=0.3933, 0.4324){x=t; y=-0.0003;}
-border InnRightlas035(t=0.4324, 0.4755){x=t; y=-0.0003;}
-border InnRightlas036(t=0.4755, 0.5228){x=t; y=-0.0003;}
-border InnRightlas037(t=0.5228, 0.5749){x=t; y=-0.0003;}
-border InnRightlas038(t=0.5749, 0.6323){x=t; y=-0.0003;}
-border InnRightlas039(t=0.6323, 0.6954){x=t; y=-0.0003;}
-border InnRightlas040(t=0.6954, 0.7648){x=t; y=-0.0003;}
-border InnRightlas041(t=0.7648, 0.8412){x=t; y=-0.0003;}
-border InnRightlas042(t=0.8412, 0.9253){x=t; y=-0.0003;}
-border InnRightlas043(t=0.9253, 1.0178){x=t; y=-0.0003;}
-border InnVertLas001(t=-0.0003, 0.0000){x=0.0000; y=t;}
-border InnVertLas002(t=-0.0003, 0.0000){x=0.0003; y=t;}
-border InnVertLas003(t=-0.0003, 0.0000){x=0.0007; y=t;}
-border InnVertLas004(t=-0.0003, 0.0000){x=0.0011; y=t;}
-border InnVertLas005(t=-0.0003, 0.0000){x=0.0015; y=t;}
-border InnVertLas006(t=-0.0003, 0.0000){x=0.0019; y=t;}
-border InnVertLas007(t=-0.0003, 0.0000){x=0.0024; y=t;}
-border InnVertLas008(t=-0.0003, 0.0000){x=0.0029; y=t;}
-border InnVertLas009(t=-0.0003, 0.0000){x=0.0034; y=t;}
-border InnVertLas010(t=-0.0003, 0.0000){x=0.0039; y=t;}
-border InnVertLas011(t=-0.0003, 0.0000){x=0.0045; y=t;}
-border InnVertLas012(t=-0.0003, 0.0000){x=0.0052; y=t;}
-border InnVertLas013(t=-0.0003, 0.0000){x=0.0058; y=t;}
-border InnVertLas014(t=-0.0003, 0.0000){x=0.0066; y=t;}
-border InnVertLas015(t=-0.0003, 0.0000){x=0.0073; y=t;}
-border InnVertLas016(t=-0.0003, 0.0000){x=0.0082; y=t;}
-border InnVertLas017(t=-0.0003, 0.0000){x=0.0090; y=t;}
-border InnVertLas018(t=-0.0003, 0.0000){x=0.0100; y=t;}
-border InnVertLas019(t=-0.0003, 0.0000){x=0.0110; y=t;}
-border InnVertLas020(t=-0.0003, 0.0000){x=0.0120; y=t;}
-border InnVertLas021(t=-0.0003, 0.0000){x=0.0132; y=t;}
-border InnVertLas022(t=-0.0003, 0.0000){x=0.0144; y=t;}
-border InnVertLas023(t=-0.0003, 0.0000){x=0.0157; y=t;}
-border InnVertLas024(t=-0.0003, 0.0000){x=0.0171; y=t;}
-border InnVertLas025(t=-0.0003, 0.0000){x=0.0185; y=t;}
-border InnVertLas026(t=-0.0003, 0.0000){x=0.0201; y=t;}
-border InnVertLas027(t=-0.0003, 0.0000){x=0.0218; y=t;}
-border InnVertLas028(t=-0.0003, 0.0000){x=0.0236; y=t;}
-border InnVertLas029(t=-0.0003, 0.0000){x=0.0256; y=t;}
-border InnVertLas030(t=-0.0003, 0.0000){x=0.0278; y=t;}
-border InnVertLas031(t=-0.0003, 0.0000){x=0.0303; y=t;}
-border InnVertLas032(t=-0.0003, 0.0000){x=0.0330; y=t;}
-border InnVertLas033(t=-0.0003, 0.0000){x=0.0359; y=t;}
-border InnVertLas034(t=-0.0003, 0.0000){x=0.0392; y=t;}
-border InnVertLas035(t=-0.0003, 0.0000){x=0.0428; y=t;}
-border InnVertLas036(t=-0.0003, 0.0000){x=0.0467; y=t;}
-border InnVertLas037(t=-0.0003, 0.0000){x=0.0510; y=t;}
-border InnVertLas038(t=-0.0003, 0.0000){x=0.0558; y=t;}
-border InnVertLas039(t=-0.0003, 0.0000){x=0.0611; y=t;}
-border InnVertLas040(t=-0.0003, 0.0000){x=0.0668; y=t;}
-border InnVertLas041(t=-0.0003, 0.0000){x=0.0732; y=t;}
-border InnVertLas042(t=-0.0003, 0.0000){x=0.0802; y=t;}
-border InnVertLas043(t=-0.0003, 0.0000){x=0.0879; y=t;}
-border InnVertLas044(t=-0.0003, 0.0000){x=0.0964; y=t;}
-border InnVertLas045(t=-0.0003, 0.0000){x=0.1057; y=t;}
-border InnVertLas046(t=-0.0003, 0.0000){x=0.1159; y=t;}
-border InnVertLas047(t=-0.0003, 0.0000){x=0.1272; y=t;}
-border InnVertLas048(t=-0.0003, 0.0000){x=0.1396; y=t;}
-border InnVertLas049(t=-0.0003, 0.0000){x=0.1533; y=t;}
-border InnVertLas050(t=-0.0003, 0.0000){x=0.1683; y=t;}
-border InnVertLas051(t=-0.0003, 0.0000){x=0.1849; y=t;}
-border InnVertLas052(t=-0.0003, 0.0000){x=0.2031; y=t;}
-border InnVertLas053(t=-0.0003, 0.0000){x=0.2231; y=t;}
-border InnVertLas054(t=-0.0003, 0.0000){x=0.2451; y=t;}
-border InnVertLas055(t=-0.0003, 0.0000){x=0.2694; y=t;}
-border InnVertLas056(t=-0.0003, 0.0000){x=0.2961; y=t;}
-border InnVertLas057(t=-0.0003, 0.0000){x=0.3254; y=t;}
-border InnVertLas058(t=-0.0003, 0.0000){x=0.3578; y=t;}
-border InnVertLas059(t=-0.0003, 0.0000){x=0.3933; y=t;}
-border InnVertLas060(t=-0.0003, 0.0000){x=0.4324; y=t;}
-border InnVertLas061(t=-0.0003, 0.0000){x=0.4755; y=t;}
-border InnVertLas062(t=-0.0003, 0.0000){x=0.5228; y=t;}
-border InnVertLas063(t=-0.0003, 0.0000){x=0.5749; y=t;}
-border InnVertLas064(t=-0.0003, 0.0000){x=0.6323; y=t;}
-border InnVertLas065(t=-0.0003, 0.0000){x=0.6954; y=t;}
-border InnVertLas066(t=-0.0003, 0.0000){x=0.7648; y=t;}
-border InnVertLas067(t=-0.0003, 0.0000){x=0.8412; y=t;}
-border InnVertLas068(t=-0.0003, 0.0000){x=0.9253; y=t;}
-border InnVertLas069(t=-0.0003, 0.0000){x=1.0178; y=t;}
-border SubsLeft(t=-0.0003, -1.0000){x=0.0000; y=t;}
-border SubsRight(t=-1.0000, -0.0003){x=1.0178; y=t;}
-border SubsBottom(t=0.0000, 1.0178){x=t; y=-1.0000;}
-int n=2;
-mesh Th = buildmesh( TopLeftLas001(-n) + TopLeftLas002(-n) + TopLeftLas003(-n) + TopLeftLas004(-n) + TopLeftLas005(-n) + TopLeftLas006(-n) + TopLeftLas007(-n) + TopLeftLas008(-n) + TopLeftLas009(-n) + TopLeftLas010(-n) + TopLeftLas011(-n) + TopLeftLas012(-n) + TopLeftLas013(-n) + TopLeftLas014(-n) + TopLeftLas015(-n) + TopLeftLas016(-n) + TopLeftLas017(-n) + TopLeftLas018(-n) + TopLeftLas019(-n) + TopLeftLas020(-n) + TopLeftLas021(-n) + TopLeftLas022(-n) + TopLeftLas023(-n) + TopLeftLas024(-n) + TopLeftLas025(-n) + InnLeftLas001(+n) + InnLeftLas002(+n) + InnLeftLas003(+n) + InnLeftLas004(+n) + InnLeftLas005(+n) + InnLeftLas006(+n) + InnLeftLas007(+n) + InnLeftLas008(+n) + InnLeftLas009(+n) + InnLeftLas010(+n) + InnLeftLas011(+n) + InnLeftLas012(+n) + InnLeftLas013(+n) + InnLeftLas014(+n) + InnLeftLas015(+n) + InnLeftLas016(+n) + InnLeftLas017(+n) + InnLeftLas018(+n) + InnLeftLas019(+n) + InnLeftLas020(+n) + InnLeftLas021(+n) + InnLeftLas022(+n) + InnLeftLas023(+n) + InnLeftLas024(+n) + InnLeftLas025(+n) + TopRightlas001(-n) + TopRightlas002(-n) + TopRightlas003(-n) + TopRightlas004(-n) + TopRightlas005(-n) + TopRightlas006(-n) + TopRightlas007(-n) + TopRightlas008(-n) + TopRightlas009(-n) + TopRightlas010(-n) + TopRightlas011(-n) + TopRightlas012(-n) + TopRightlas013(-n) + TopRightlas014(-n) + TopRightlas015(-n) + TopRightlas016(-n) + TopRightlas017(-n) + TopRightlas018(-n) + TopRightlas019(-n) + TopRightlas020(-n) + TopRightlas021(-n) + TopRightlas022(-n) + TopRightlas023(-n) + TopRightlas024(-n) + TopRightlas025(-n) + TopRightlas026(-n) + TopRightlas027(-n) + TopRightlas028(-n) + TopRightlas029(-n) + TopRightlas030(-n) + TopRightlas031(-n) + TopRightlas032(-n) + TopRightlas033(-n) + TopRightlas034(-n) + TopRightlas035(-n) + TopRightlas036(-n) + TopRightlas037(-n) + TopRightlas038(-n) + TopRightlas039(-n) + TopRightlas040(-n) + TopRightlas041(-n) + TopRightlas042(-n) + TopRightlas043(-n) + InnRightlas001(+n) + InnRightlas002(+n) + InnRightlas003(+n) + InnRightlas004(+n) + InnRightlas005(+n) + InnRightlas006(+n) + InnRightlas007(+n) + InnRightlas008(+n) + InnRightlas009(+n) + InnRightlas010(+n) + InnRightlas011(+n) + InnRightlas012(+n) + InnRightlas013(+n) + InnRightlas014(+n) + InnRightlas015(+n) + InnRightlas016(+n) + InnRightlas017(+n) + InnRightlas018(+n) + InnRightlas019(+n) + InnRightlas020(+n) + InnRightlas021(+n) + InnRightlas022(+n) + InnRightlas023(+n) + InnRightlas024(+n) + InnRightlas025(+n) + InnRightlas026(+n) + InnRightlas027(+n) + InnRightlas028(+n) + InnRightlas029(+n) + InnRightlas030(+n) + InnRightlas031(+n) + InnRightlas032(+n) + InnRightlas033(+n) + InnRightlas034(+n) + InnRightlas035(+n) + InnRightlas036(+n) + InnRightlas037(+n) + InnRightlas038(+n) + InnRightlas039(+n) + InnRightlas040(+n) + InnRightlas041(+n) + InnRightlas042(+n) + InnRightlas043(+n)+InnVertLas001(-n)+InnVertLas002(n)+InnVertLas003(n)+InnVertLas004(n)+InnVertLas005(n)+InnVertLas006(n)+InnVertLas007(n)+InnVertLas008(n)+InnVertLas009(n)+InnVertLas010(n)+InnVertLas011(n)+InnVertLas012(n)+InnVertLas013(n)+InnVertLas014(n)+InnVertLas015(n)+InnVertLas016(n)+InnVertLas017(n)+InnVertLas018(n)+InnVertLas019(n)+InnVertLas020(n)+InnVertLas021(n)+InnVertLas022(n)+InnVertLas023(n)+InnVertLas024(n)+InnVertLas025(n)+InnVertLas026(n)+InnVertLas027(n)+InnVertLas028(n)+InnVertLas029(n)+InnVertLas030(n)+InnVertLas031(n)+InnVertLas032(n)+InnVertLas033(n)+InnVertLas034(n)+InnVertLas035(n)+InnVertLas036(n)+InnVertLas037(n)+InnVertLas038(n)+InnVertLas039(n)+InnVertLas040(n)+InnVertLas041(n)+InnVertLas042(n)+InnVertLas043(n)+InnVertLas044(n)+InnVertLas045(n)+InnVertLas046(n)+InnVertLas047(n)+InnVertLas048(n)+InnVertLas049(n)+InnVertLas050(n)+InnVertLas051(n)+InnVertLas052(n)+InnVertLas053(n)+InnVertLas054(n)+InnVertLas055(n)+InnVertLas056(n)+InnVertLas057(n)+InnVertLas058(n)+InnVertLas059(n)+InnVertLas060(n)+InnVertLas061(n)+InnVertLas062(n)+InnVertLas063(n)+InnVertLas064(n)+InnVertLas065(n)+InnVertLas066(n)+InnVertLas067(n)+InnVertLas068(n)+InnVertLas069(n) + SubsLeft(+n) + SubsRight(+n) + SubsBottom(+n));
-plot(Th, wait=1);
-savemesh(Th, "meshPN.msh");
-
Deleted: fsem/examples-fondation/struct_mesh/meshPN.msh
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.msh 2007-04-05 12:53:15 UTC (rev 128)
+++ fsem/examples-fondation/struct_mesh/meshPN.msh 2007-04-23 12:48:24 UTC (rev 129)
@@ -1,1341 +0,0 @@
-376 602 362
-0.6954 0 201
-0.958683198977 0 93
-0.662979835236 0 89
-0.6954 -0.0003 201
-0.729135665971 0 90
-0.9253 0 204
-0.9253 -0.0003 204
-0.989154646869 0 93
-0.959714386749 -0.0003 136
-0.6323 -0.0003 200
-0.662979835236 -0.0003 132
-0.6323 0 200
-1.0178 0 205
-0.60280207603 0 88
-0.8412 0 203
-0.801933646965 0 91
-0.882081317294 0 92
-0.729135665971 -0.0003 133
-0.7648 0 202
-0.686639942015 -0.0372217948154 0
-0.7648 -0.0003 202
-0.882081317294 -0.0003 135
-0.91824807918 -0.0564929335011 0
-1.0178 -0.0003 207
-0.646876462836 -0.0212364073316 0
-0.618249320885 -0.0206187468944 0
-0.60280207603 -0.0003 131
-0.5749 0 199
-0.8412 -0.0003 203
-0.801933646965 -0.0003 134
-0.2961 0 192
-0.412300432652 0 84
-0.498498789698 0 86
-0.548118497717 0 87
-0.3578 0 194
-0.3254 0 193
-0.5228 -0.0003 198
-0.341150411129 0 82
-0.375066030163 0 83
-0.453355302414 0 85
-0.5749 -0.0003 199
-0.4755 0 197
-0.5228 0 198
-0.310339498785 0 81
-0.3933 0 195
-0.4324 0 196
-0.680516111319 -0.132337979926 0
-0.621262325203 -0.0582607384986 0
-0.81407534828 -0.0779206348147 0
-1.0178 -0.211168498421 207
-0.590676941329 -0.0200238421267 0
-0.548118497717 -0.0003 130
-0.2961 -0.0003 192
-0.282388631603 0 80
-0.412300432652 -0.0003 127
-0.498498789698 -0.0003 129
-0.3578 -0.0003 194
-0.341150411129 -0.0003 125
-0.3254 -0.0003 193
-0.522504179874 -0.0215756173697 0
-0.375066030163 -0.0003 126
-0.453355302414 -0.0003 128
-0.4755 -0.0003 197
-0.310339498785 -0.0003 124
-0.3933 -0.0003 195
-0.4324 -0.0003 196
-0.256910463399 0 79
-0.2694 0 191
-0.484447593821 -0.0127044514593 0
-1.0178 -0.55399980939 207
-0.282388631603 -0.0003 123
-0.795321409966 -0.275863994665 0
-0.630880792342 -0.233560657882 0
-0.58875509659 -0.12109089858 0
-0.572197593374 -0.0555554320377 0
-0.297246927522 -0.0132347647016 0
-0.2694 -0.0003 191
-0.435593457246 -0.0214676123981 0
-0.406108321039 -0.0181172561157 0
-0.498835378788 -0.0326508811083 0
-0.382299315668 -0.0154118704104 0
-0.348382177103 -0.0145210825074 0
-0.317348065276 -0.0136691932024 0
-0.522021705255 -0.056275567018 0
-0.460478656467 -0.0173679247691 0
-0.2451 0 190
-0.256910463399 -0.0003 122
-1.0178 -1 208
-0.728975146536 -0.763324819589 0
-0.278395541474 -0.0128233233475 0
-0.0558 0 174
-0.076608213228 0 66
-0.0668 0 176
-0.176369379032 0 75
-0.1272 0 183
-0.212826392031 0 77
-0.233790713644 0 78
-0.1533 0 185
-0.0409584615946 0 59
-0.0447018235207 0 60
-0.0487879561841 0 61
-0.0638738862574 0 64
-0.069907752037 0 65
-0.0611 0 175
-0.146263029295 0 73
-0.2451 -0.0003 190
-0.160592690277 0 74
-0.2031 0 188
-0.193755415088 0 76
-0.1396 0 184
-0.0392 0 170
-0.0375015815765 0 58
-0.051 0 173
-0.0583861999035 0 63
-0.1849 0 187
-0.133228698611 0 72
-0.0732 0 177
-0.2231 0 189
-0.0428 0 171
-0.0467 0 172
-0.0533301874638 0 62
-0.1683 0 186
-0.504523938489 -0.579400099034 0
-0.501904150345 -0.327602220478 0
-0.519953482463 -0.205023939061 0
-0.521235570075 -0.112815078495 0
-0.299860117524 -0.0427056588041 0
-0.248988412043 -0.0108344722134 0
-0.439664343689 -0.0640661264155 0
-0.359304005861 -0.0470010103639 0
-0.233790713644 -0.0003 121
-0.5089 -1 208
-0.259256015307 -0.0386514220379 0
-0.0558 -0.0003 174
-0.0802 0 178
-0.076608213228 -0.0003 109
-0.0668 -0.0003 176
-0.176369379032 -0.0003 118
-0.1272 -0.0003 183
-0.121392393398 0 71
-0.212826392031 -0.0003 120
-0.1533 -0.0003 185
-0.0409584615946 -0.0003 102
-0.0447018235207 -0.0003 103
-0.0487879561841 -0.0003 104
-0.0638738862574 -0.0003 107
-0.069907752037 -0.0003 108
-0.0611 -0.0003 175
-0.146263029295 -0.0003 116
-0.160592690277 -0.0003 117
-0.2031 -0.0003 188
-0.193755415088 -0.0003 119
-0.1396 -0.0003 184
-0.0392 -0.0003 170
-0.0359 0 169
-0.0375015815765 -0.0003 101
-0.051 -0.0003 173
-0.0583861999035 -0.0003 106
-0.1849 -0.0003 187
-0.133228698611 -0.0003 115
-0.0732 -0.0003 177
-0.2231 -0.0003 189
-0.0428 -0.0003 171
-0.0467 -0.0003 172
-0.0533301874638 -0.0003 105
-0.1683 -0.0003 186
-0.0226806733966 0 52
-0.0256 0 165
-0.0344101211488 0 57
-0.0920359508932 0 68
-0.100928925559 0 69
-0.0303 0 167
-0.110657962102 0 70
-0.0236 0 164
-0.0266672973037 0 54
-0.0290159090489 0 55
-0.0316227443039 0 56
-0.0839438976884 0 67
-0.0802 -0.0003 178
-0.0879 0 179
-0.121392393398 -0.0003 114
-0.1159 0 182
-0.0245735973477 0 53
-0.0278 0 166
-0.033 0 168
-0.0964 0 180
-0.1057 0 181
-0.357680923126 -0.289919579599 0
-0.283899957927 -0.763324819589 0
-0.369255279879 -0.140377089541 0
-0.261826303823 -0.105855870535 0
-0.21414981276 -0.0341476575751 0
-0 -1 208
-0.054951586689 -0.00339199614707 0
-0.0839438976884 -0.0003 110
-0.0718660663403 -0.00400586119213 0
-0.0786499897481 -0.00423030545586 0
-0.065659490884 -0.00377207025408 0
-0.177248284423 -0.0261848436829 0
-0.121692266428 -0.00910545737416 0
-0.137702011153 -0.0122030134347 0
-0.1159 -0.0003 182
-0.0422616526388 -0.00285790419571 0
-0.0387333685847 -0.00272077271801 0
-0.0460786210954 -0.00300585879695 0
-0.0502744822911 -0.00319296849792 0
-0.0601185291837 -0.00356664674368 0
-0.0344101211488 -0.0003 100
-0.0359 -0.0003 169
-0.0226806733966 -0.0003 95
-0.0218 0 163
-0.0256 -0.0003 165
-0.0920359508932 -0.0003 111
-0.100928925559 -0.0003 112
-0.0303 -0.0003 167
-0.110657962102 -0.0003 113
-0.0236 -0.0003 164
-0.0266672973037 -0.0003 97
-0.0290159090489 -0.0003 98
-0.0316227443039 -0.0003 99
-0.0879 -0.0003 179
-0.0245735973477 -0.0003 96
-0.0278 -0.0003 166
-0.033 -0.0003 168
-0.0964 -0.0003 180
-0.1057 -0.0003 181
-0.0209368875116 0 51
-0.0058 0 149
-0.0125868852496 0 20
-0.0144 0 158
-0.0157 0 159
-0.0177877957821 0 24
-0.0192802469254 0 25
-0.0218 -0.0003 163
-0.0137938775539 0 21
-0.0171 0 160
-0.0185 0 161
-0.0201 0 162
-0.0132 0 157
-0.0150373880625 0 22
-0.0163934139848 0 23
-0 -0.540584460379 206
-0.194275462195 -0.247225004626 0
-0.137720482409 -0.0591126987065 0
-0.0616951235799 -0.0158408529406 0
-0.0437047701861 -0.0133430543277 0
-0.0879297973897 -0.009372851087 0
-0.105172746328 -0.010380384833 0
-0.0339481945684 -0.0030299376401 0
-0.0234080081234 -0.00195438087549 0
-0.0209368875116 -0.0003 94
-0.0275411567213 -0.00219346555132 0
-0.00619349594116 0 13
-0.0058 -0.00015 149
-0.00549532871842 0 12
-0.0125868852496 -0.0003 45
-0.012 0 156
-0.0144 -0.0003 158
-0.0157 -0.0003 159
-0.0177877957821 -0.0003 49
-0.0192802469254 -0.0003 50
-0.0137938775539 -0.0003 46
-0.0171 -0.0003 160
-0.0185 -0.0003 161
-0.0201 -0.0003 162
-0.0132 -0.0003 157
-0.0150373880625 -0.0003 47
-0.0163934139848 -0.0003 48
-0.0052 0 148
-0.00774339672327 0 15
-0.00859480519295 0 16
-0.0066 0 150
-0.01148867926 0 19
-0.01 0 154
-0.012 -0.0003 156
-0.0094872122705 0 17
-0.0073 0 151
-0.011 0 155
-0.00694504048228 0 14
-0.0105 0 18
-0.0082 0 152
-0.009 0 153
-0 -0.203660268301 206
-0.0708324090359 -0.047150799057 0
-0.028714992244 -0.0109378737081 0
-0.0191066339854 -0.00213119922488 0
-0.0066 -0.0003 150
-0.00619349594116 -0.0003 38
-0.0058 -0.0003 149
-0.00549532871842 -0.0003 37
-0.0052 -0.00015 148
-0.0124935855933 -0.00180738242109 0
-0.01148867926 -0.0003 44
-0.014919762864 -0.00189072151504 0
-0.0169852121003 -0.00166509692608 0
-0.00485 0 11
-0.00774339672327 -0.0003 40
-0.00859480519295 -0.0003 41
-0.01 -0.0003 154
-0.0094872122705 -0.0003 42
-0.0073 -0.0003 151
-0.011 -0.0003 155
-0.00694504048228 -0.0003 39
-0.0105 -0.0003 43
-0.0082 -0.0003 152
-0.009 -0.0003 153
-0.0045 0 147
-0.0127091346676 -0.00786230485434 0
-0 -0.0003 206
-0.00692197505948 -0.000975370960678 0
-0.00578346900639 -0.000879595701564 0
-0.0052 -0.0003 148
-0.00485 -0.0003 36
-0.010431037121 -0.00163562841765 0
-0.0045 -0.00015 147
-0.00854645187178 -0.00144405704562 0
-0.004189453125 0 10
-0.0045 -0.0003 147
-0.00683276144935 -0.00358767884628 0
-0.000149999837931 -0.000131267422839 0
-0.000775553439339 -0.000513427952801 0
-0 -0.000112533739954 137
-0.0003 -0.0003 138
-0.0012971383226 -0.000747513972155 0
-0.00448771798301 -0.000855014281771 0
-0.004189453125 -0.0003 35
-0.0039 -0.00015 146
-0.0039 0 146
-0.0039 -0.0003 146
-0.00363575047622 -0.000828082638428 0
-0.00264310425991 -0.000829103432064 0
-0.0003 0 138
-0.0003 -0.00015 138
-0.000146250003576 0 1
-0.0009 -0.0003 28
-0.0007 -0.0003 139
-0.0011 -0.0003 140
-0.000495041322708 -0.0003 27
-0 0 137
-0.0015 -0.0003 141
-0.0013 -0.0003 29
-0.00169565217495 -0.0003 30
-0.0019 -0.0003 142
-0.00364521683156 0 9
-0.00364521683156 -0.0003 34
-0.0034 -0.0003 145
-0.00315 -0.0003 33
-0.00265 -0.0003 32
-0.00214465812743 -0.0003 31
-0.0029 -0.0003 144
-0.0024 -0.0003 143
-0.000495041322708 0 2
-0.000495040599299 -0.000150000393698 0
-0.0011 -0.00015 140
-0.000899999548933 -0.000150000393698 0
-0.0007 -0.00015 139
-0.0015 -0.00015 141
-0.00129999946431 -0.000150000393698 0
-0.00169565136185 -0.000150000393698 0
-0.0019 -0.00015 142
-0.0034 -0.00015 145
-0.0034 0 145
-0.0029 -0.00015 144
-0.00315 0 8
-0.00265 0 7
-0.0024 -0.00015 143
-0.00214465812743 0 6
-0.0007 0 139
-0.0009 0 3
-0.0011 0 140
-0.0013 0 4
-0.00169565217495 0 5
-0.0015 0 141
-0.0019 0 142
-0.0029 0 144
-0.0024 0 143
-189 193 132 0
-123 189 132 0
-123 188 189 0
-72 123 89 0
-190 188 125 0
-89 132 88 0
-70 89 88 0
-123 132 89 0
-188 123 124 0
-125 188 124 0
-243 242 188 0
-242 193 189 0
-66 78 62 0
-79 78 55 0
-130 79 81 0
-129 78 79 0
-126 129 190 0
-126 84 129 0
-69 85 80 0
-56 69 80 0
-63 85 69 0
-66 55 78 0
-55 65 79 0
-79 65 81 0
-129 130 190 0
-62 78 85 0
-79 130 129 0
-61 81 65 0
-61 57 81 0
-57 82 81 0
-80 85 129 0
-82 130 81 0
-58 82 57 0
-58 59 82 0
-82 59 83 0
-59 64 83 0
-83 130 82 0
-53 76 64 0
-90 71 77 0
-83 76 127 0
-53 71 76 0
-190 243 188 0
-90 76 71 0
-128 77 87 0
-128 133 90 0
-106 128 87 0
-106 131 128 0
-127 76 90 0
-128 90 77 0
-128 131 192 0
-190 125 126 0
-83 64 76 0
-244 283 243 0
-192 133 128 0
-243 191 244 0
-127 130 83 0
-133 127 90 0
-191 133 192 0
-191 127 133 0
-244 191 192 0
-243 190 191 0
-190 130 127 0
-131 162 192 0
-162 141 192 0
-192 141 151 0
-151 152 192 0
-159 199 152 0
-199 192 152 0
-166 199 138 0
-244 192 199 0
-191 190 127 0
-242 243 283 0
-242 189 188 0
-199 159 138 0
-166 150 199 0
-142 199 150 0
-149 201 142 0
-142 201 199 0
-201 153 160 0
-201 160 139 0
-201 139 200 0
-181 202 200 0
-246 245 194 0
-284 246 285 0
-284 245 246 0
-244 284 283 0
-244 248 284 0
-200 202 248 0
-248 202 216 0
-201 244 199 0
-153 201 149 0
-200 244 201 0
-181 200 139 0
-248 244 200 0
-226 248 216 0
-247 284 248 0
-214 248 226 0
-225 248 214 0
-248 225 247 0
-225 213 247 0
-247 213 221 0
-221 195 247 0
-195 179 197 0
-136 197 179 0
-197 245 247 0
-195 197 247 0
-136 161 196 0
-147 196 161 0
-198 196 147 0
-198 147 137 0
-146 198 137 0
-196 197 136 0
-245 196 198 0
-245 197 196 0
-247 245 284 0
-146 207 198 0
-146 148 207 0
-207 148 158 0
-134 194 158 0
-245 198 207 0
-165 206 194 0
-165 157 206 0
-206 157 145 0
-205 206 145 0
-205 145 164 0
-205 164 144 0
-203 163 143 0
-156 204 154 0
-204 249 246 0
-143 204 203 0
-156 209 204 0
-246 203 204 0
-204 209 249 0
-249 285 246 0
-208 249 209 0
-208 224 249 0
-215 249 220 0
-249 215 252 0
-215 219 252 0
-219 223 252 0
-252 223 218 0
-285 252 250 0
-285 249 252 0
-252 218 212 0
-250 286 285 0
-212 250 252 0
-212 222 250 0
-250 222 217 0
-210 250 217 0
-250 210 234 0
-250 234 251 0
-286 251 265 0
-261 264 286 0
-295 286 264 0
-308 295 294 0
-286 265 261 0
-295 264 260 0
-295 260 263 0
-295 263 268 0
-295 268 259 0
-309 283 308 0
-308 319 309 0
-309 324 321 0
-321 336 338 0
-321 324 337 0
-323 321 338 0
-323 309 321 0
-330 326 329 0
-330 325 326 0
-346 330 345 0
-331 319 330 0
-319 331 324 0
-319 325 330 0
-309 319 324 0
-308 314 319 0
-310 303 287 0
-319 310 311 0
-316 314 300 0
-319 316 310 0
-319 314 316 0
-335 336 321 0
-337 335 321 0
-341 337 324 0
-341 324 340 0
-342 340 324 0
-342 324 343 0
-331 343 324 0
-331 349 343 0
-331 351 349 0
-331 348 351 0
-331 350 348 0
-347 350 331 0
-331 330 347 0
-347 330 346 0
-330 329 345 0
-318 326 325 0
-313 318 325 0
-312 313 325 0
-311 312 325 0
-290 312 311 0
-311 325 319 0
-288 311 310 0
-289 290 311 0
-288 289 311 0
-310 287 288 0
-301 303 310 0
-285 308 284 0
-204 143 154 0
-205 203 246 0
-205 144 203 0
-206 205 246 0
-194 206 246 0
-207 194 245 0
-207 158 194 0
-194 134 165 0
-144 163 203 0
-308 283 284 0
-249 224 220 0
-297 301 310 0
-297 310 316 0
-297 316 305 0
-298 305 316 0
-316 306 298 0
-316 300 306 0
-292 314 308 0
-294 292 308 0
-294 262 292 0
-299 300 314 0
-304 299 314 0
-302 304 314 0
-293 302 314 0
-292 293 314 0
-293 292 275 0
-275 292 256 0
-292 266 256 0
-262 266 292 0
-258 262 294 0
-286 308 285 0
-251 286 250 0
-295 308 286 0
-267 294 259 0
-267 258 294 0
-295 259 294 0
-72 89 70 0
-23 24 9 0
-23 9 7 0
-49 23 22 0
-49 22 29 0
-49 47 72 0
-20 21 18 0
-18 4 20 0
-20 25 48 0
-49 20 47 0
-4 11 20 0
-74 48 75 0
-11 25 20 0
-11 10 25 0
-20 49 21 0
-73 72 47 0
-124 73 125 0
-124 72 73 0
-49 29 30 0
-21 49 30 0
-72 50 49 0
-51 26 27 0
-26 10 27 0
-75 51 52 0
-26 25 10 0
-48 26 51 0
-48 25 26 0
-126 74 75 0
-47 20 48 0
-51 41 52 0
-48 51 75 0
-27 41 51 0
-84 60 80 0
-80 60 56 0
-73 47 74 0
-50 72 70 0
-23 7 22 0
-50 23 49 0
-50 24 23 0
-60 84 75 0
-37 60 52 0
-37 56 60 0
-62 85 63 0
-60 75 52 0
-129 84 80 0
-126 75 84 0
-85 78 129 0
-74 47 48 0
-125 74 126 0
-125 73 74 0
-123 72 124 0
-69 56 63 0
-8 24 13 3
-9 24 8 3
-8 2 9 3
-7 9 2 3
-7 2 6 3
-7 6 22 4
-22 6 17 4
-17 15 29 4
-29 22 17 4
-15 16 29 5
-29 16 30 5
-19 21 30 5
-16 19 30 5
-19 5 21 6
-21 5 18 6
-4 18 5 6
-5 1 4 6
-1 3 4 7
-3 11 4 7
-3 10 11 7
-12 10 3 7
-12 27 10 8
-12 14 27 8
-14 28 27 8
-27 28 41 8
-52 41 28 9
-43 37 52 9
-34 43 52 9
-34 52 28 9
-43 56 37 10
-43 33 56 10
-33 42 56 10
-42 63 56 10
-42 40 63 11
-66 62 46 11
-46 62 40 11
-62 63 40 11
-55 66 46 12
-46 32 55 12
-32 45 55 12
-65 55 45 12
-45 61 65 13
-45 39 61 13
-61 39 57 13
-39 35 57 13
-35 38 57 14
-58 36 59 14
-38 36 58 14
-38 58 57 14
-59 36 44 15
-44 31 53 15
-53 64 44 15
-64 59 44 15
-31 54 53 16
-54 71 53 16
-54 77 71 16
-68 77 54 16
-77 68 87 17
-87 86 106 17
-67 86 87 17
-68 67 87 17
-131 106 86 18
-118 162 131 18
-97 118 131 18
-97 131 86 18
-118 141 162 19
-118 96 141 19
-96 108 141 19
-108 151 141 19
-108 109 151 20
-152 115 159 20
-109 115 152 20
-109 152 151 20
-159 115 138 21
-115 94 138 21
-138 122 166 21
-94 122 138 21
-166 122 150 22
-150 122 107 22
-107 98 142 22
-150 107 142 22
-98 105 142 23
-105 149 142 23
-105 110 149 23
-153 149 110 23
-116 153 110 24
-153 116 160 24
-160 116 139 24
-116 95 139 24
-95 140 139 25
-140 182 202 25
-140 202 181 25
-140 181 139 25
-182 216 202 26
-216 187 226 26
-173 187 216 26
-182 173 216 26
-214 226 187 27
-186 225 214 27
-171 186 214 27
-171 214 187 27
-186 213 225 28
-186 170 213 28
-170 180 213 28
-221 213 180 28
-180 178 221 29
-179 195 135 29
-195 178 135 29
-221 178 195 29
-136 179 135 30
-135 92 136 30
-161 136 117 30
-92 117 136 30
-117 147 161 31
-147 117 103 31
-103 93 137 31
-147 103 137 31
-93 102 137 32
-104 148 146 32
-102 104 146 32
-102 146 137 32
-104 114 148 33
-148 114 158 33
-158 114 134 33
-114 91 134 33
-91 121 134 34
-121 113 157 34
-121 157 165 34
-121 165 134 34
-113 145 157 35
-145 120 164 35
-101 120 145 35
-113 101 145 35
-120 144 164 36
-119 163 144 36
-100 119 144 36
-100 144 120 36
-119 143 163 37
-119 99 143 37
-99 111 143 37
-154 143 111 37
-111 112 154 38
-209 156 155 38
-156 112 155 38
-154 112 156 38
-208 209 155 39
-155 169 208 39
-224 208 185 39
-169 185 208 39
-185 220 224 40
-220 185 177 40
-177 172 215 40
-220 177 215 40
-172 176 215 41
-219 184 223 41
-176 184 219 41
-176 219 215 41
-223 184 218 42
-175 168 212 42
-175 212 218 42
-184 175 218 42
-168 183 212 43
-174 217 183 43
-217 222 183 43
-222 212 183 43
-217 174 210 44
-167 210 174 44
-167 211 210 44
-210 211 234 44
-251 234 211 45
-265 251 238 45
-227 238 251 45
-211 227 251 45
-261 265 238 46
-238 233 261 46
-237 261 233 46
-264 261 237 46
-260 264 237 47
-237 232 260 47
-260 236 263 47
-232 236 260 47
-236 241 263 48
-263 241 268 48
-268 241 259 48
-241 231 259 48
-259 231 240 49
-240 230 258 49
-267 240 258 49
-259 240 267 49
-230 235 258 50
-235 262 258 50
-239 266 262 50
-239 262 235 50
-239 256 266 51
-239 229 256 51
-257 275 256 51
-229 257 256 51
-275 257 293 52
-302 293 278 52
-273 278 293 52
-273 293 257 52
-278 280 302 53
-304 302 280 53
-299 304 280 53
-280 274 299 53
-274 276 299 54
-282 306 300 54
-300 276 282 54
-299 276 300 54
-282 298 306 55
-282 271 298 55
-298 271 281 55
-305 298 281 55
-297 305 281 56
-281 270 297 56
-297 277 301 56
-270 277 297 56
-277 279 301 57
-301 279 303 57
-303 279 287 57
-279 272 287 57
-287 272 253 58
-253 228 254 58
-288 254 289 58
-288 253 254 58
-287 253 288 58
-290 289 254 59
-228 255 254 59
-254 255 290 59
-269 291 255 59
-312 290 291 59
-291 290 255 59
-313 312 291 60
-269 296 291 60
-291 296 313 60
-313 296 315 60
-315 318 313 60
-296 307 315 60
-326 318 315 61
-307 317 315 61
-317 326 315 61
-317 328 327 61
-327 329 326 61
-327 326 317 61
-329 327 345 62
-344 327 328 62
-344 345 327 62
-345 344 361 62
-344 362 361 62
-345 361 346 62
-347 346 361 63
-347 361 364 63
-361 362 364 63
-375 363 364 63
-350 347 363 63
-347 364 363 63
-348 350 363 64
-375 365 363 64
-365 348 363 64
-348 365 366 64
-366 365 376 64
-351 348 366 64
-349 351 366 65
-349 366 367 65
-367 366 376 65
-367 374 360 65
-349 360 343 65
-349 367 360 65
-343 360 342 66
-360 374 372 66
-372 373 357 66
-342 357 340 66
-359 372 357 66
-342 359 357 66
-342 360 359 66
-372 359 360 66
-357 341 340 67
-358 357 371 67
-354 358 371 67
-341 357 358 67
-357 373 371 67
-341 354 337 67
-371 370 354 67
-358 354 341 67
-354 335 337 68
-370 369 354 68
-355 369 356 68
-354 355 335 68
-354 369 355 68
-369 368 356 68
-356 336 335 68
-335 355 356 68
-356 338 336 69
-368 352 356 69
-353 352 333 69
-356 353 338 69
-356 352 353 69
-338 353 333 69
-332 333 352 69
-333 323 338 69
-333 320 323 70
-323 320 309 70
-320 334 322 70
-309 320 322 70
-333 332 320 70
-332 334 320 70
-334 339 322 70
-193 132 208
-132 88 208
-88 70 207
-70 50 207
-50 24 207
-309 283 206
-283 242 206
-242 193 206
-24 13 205
-6 7 204
-15 29 203
-19 21 202
-1 4 201
-12 10 200
-28 41 199
-43 37 198
-42 63 197
-46 66 196
-45 65 195
-35 57 194
-36 59 193
-31 53 192
-68 77 191
-86 106 190
-118 162 189
-108 151 188
-115 159 187
-122 166 186
-98 142 185
-110 153 184
-95 139 183
-182 202 182
-187 226 181
-186 225 180
-180 221 179
-135 179 178
-117 161 177
-93 137 176
-104 148 175
-91 134 174
-113 157 173
-120 164 172
-119 163 171
-111 154 170
-155 209 169
-185 224 168
-172 215 167
-184 223 166
-168 212 165
-174 217 164
-211 234 163
-238 265 162
-237 264 161
-236 263 160
-231 259 159
-230 258 158
-239 266 157
-257 275 156
-278 302 155
-274 299 154
-282 306 153
-281 305 152
-277 301 151
-272 287 150
-254 289 149
-228 254 149
-291 312 148
-269 291 148
-315 318 147
-307 315 147
-327 329 146
-328 327 146
-361 346 145
-362 361 145
-363 350 144
-375 363 144
-366 351 143
-376 366 143
-360 343 142
-374 360 142
-357 340 141
-373 357 141
-354 337 140
-370 354 140
-356 336 139
-368 356 139
-333 323 138
-332 333 138
-322 309 137
-339 322 137
-9 7 136
-24 9 136
-22 29 135
-7 22 135
-30 21 134
-29 30 134
-18 4 133
-21 18 133
-11 10 132
-4 11 132
-27 41 131
-10 27 131
-52 37 130
-41 52 130
-56 63 129
-37 56 129
-62 66 128
-63 62 128
-55 65 127
-66 55 127
-61 57 126
-65 61 126
-58 59 125
-57 58 125
-64 53 124
-59 64 124
-71 77 123
-53 71 123
-87 106 122
-77 87 122
-131 162 121
-106 131 121
-141 151 120
-162 141 120
-152 159 119
-151 152 119
-138 166 118
-159 138 118
-150 142 117
-166 150 117
-149 153 116
-142 149 116
-160 139 115
-153 160 115
-181 202 114
-139 181 114
-216 226 113
-202 216 113
-214 225 112
-226 214 112
-213 221 111
-225 213 111
-195 179 110
-221 195 110
-136 161 109
-179 136 109
-147 137 108
-161 147 108
-146 148 107
-137 146 107
-158 134 106
-148 158 106
-165 157 105
-134 165 105
-145 164 104
-157 145 104
-144 163 103
-164 144 103
-143 154 102
-163 143 102
-156 209 101
-154 156 101
-208 224 100
-209 208 100
-220 215 99
-224 220 99
-219 223 98
-215 219 98
-218 212 97
-223 218 97
-222 217 96
-212 222 96
-210 234 95
-217 210 95
-251 265 94
-234 251 94
-2 6 93
-8 2 93
-13 8 93
-17 15 92
-6 17 92
-16 19 91
-15 16 91
-5 1 90
-19 5 90
-3 12 89
-1 3 89
-14 28 88
-12 14 88
-34 43 87
-28 34 87
-33 42 86
-43 33 86
-40 46 85
-42 40 85
-32 45 84
-46 32 84
-39 35 83
-45 39 83
-38 36 82
-35 38 82
-44 31 81
-36 44 81
-54 68 80
-31 54 80
-67 86 79
-68 67 79
-97 118 78
-86 97 78
-96 108 77
-118 96 77
-109 115 76
-108 109 76
-94 122 75
-115 94 75
-107 98 74
-122 107 74
-105 110 73
-98 105 73
-116 95 72
-110 116 72
-140 182 71
-95 140 71
-173 187 70
-182 173 70
-171 186 69
-187 171 69
-170 180 68
-186 170 68
-178 135 67
-180 178 67
-92 117 66
-135 92 66
-103 93 65
-117 103 65
-102 104 64
-93 102 64
-114 91 63
-104 114 63
-121 113 62
-91 121 62
-101 120 61
-113 101 61
-100 119 60
-120 100 60
-99 111 59
-119 99 59
-112 155 58
-111 112 58
-169 185 57
-155 169 57
-177 172 56
-185 177 56
-176 184 55
-172 176 55
-175 168 54
-184 175 54
-183 174 53
-168 183 53
-167 211 52
-174 167 52
-227 238 51
-211 227 51
-261 264 50
-265 261 50
-260 263 49
-264 260 49
-268 259 48
-263 268 48
-267 258 47
-259 267 47
-262 266 46
-258 262 46
-256 275 45
-266 256 45
-293 302 44
-275 293 44
-304 299 43
-302 304 43
-300 306 42
-299 300 42
-298 305 41
-306 298 41
-297 301 40
-305 297 40
-303 287 39
-301 303 39
-288 289 38
-287 288 38
-290 312 37
-289 290 37
-313 318 36
-312 313 36
-326 329 35
-318 326 35
-345 346 34
-329 345 34
-347 350 33
-346 347 33
-348 351 32
-350 348 32
-349 343 31
-351 349 31
-342 340 30
-343 342 30
-341 337 29
-340 341 29
-335 336 28
-337 335 28
-338 323 27
-336 338 27
-323 309 26
-233 237 25
-238 233 25
-232 236 24
-237 232 24
-241 231 23
-236 241 23
-240 230 22
-231 240 22
-235 239 21
-230 235 21
-229 257 20
-239 229 20
-273 278 19
-257 273 19
-280 274 18
-278 280 18
-276 282 17
-274 276 17
-271 281 16
-282 271 16
-270 277 15
-281 270 15
-279 272 14
-277 279 14
-253 228 13
-272 253 13
-255 269 12
-228 255 12
-296 307 11
-269 296 11
-317 328 10
-307 317 10
-344 362 9
-328 344 9
-364 375 8
-362 364 8
-365 376 7
-375 365 7
-367 374 6
-376 367 6
-372 373 5
-374 372 5
-371 370 4
-373 371 4
-369 368 3
-370 369 3
-352 332 2
-368 352 2
-334 339 1
-332 334 1
Added: fsem/examples-fondation/struct_mesh/meshPN2.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN2.edp (rev 0)
+++ fsem/examples-fondation/struct_mesh/meshPN2.edp 2007-04-23 12:48:24 UTC (rev 129)
@@ -0,0 +1,212 @@
+border TopLeftLas001(t=0.0000, 0.0003){x=t; y=0.0000;}
+border TopLeftLas002(t=0.0003, 0.0007){x=t; y=0.0000;}
+border TopLeftLas003(t=0.0007, 0.0011){x=t; y=0.0000;}
+border TopLeftLas004(t=0.0011, 0.0015){x=t; y=0.0000;}
+border TopLeftLas005(t=0.0015, 0.0019){x=t; y=0.0000;}
+border TopLeftLas006(t=0.0019, 0.0024){x=t; y=0.0000;}
+border TopLeftLas007(t=0.0024, 0.0029){x=t; y=0.0000;}
+border TopLeftLas008(t=0.0029, 0.0034){x=t; y=0.0000;}
+border TopLeftLas009(t=0.0034, 0.0039){x=t; y=0.0000;}
+border TopLeftLas010(t=0.0039, 0.0045){x=t; y=0.0000;}
+border TopLeftLas011(t=0.0045, 0.0052){x=t; y=0.0000;}
+border TopLeftLas012(t=0.0052, 0.0058){x=t; y=0.0000;}
+border TopLeftLas013(t=0.0058, 0.0066){x=t; y=0.0000;}
+border TopLeftLas014(t=0.0066, 0.0073){x=t; y=0.0000;}
+border TopLeftLas015(t=0.0073, 0.0082){x=t; y=0.0000;}
+border TopLeftLas016(t=0.0082, 0.0090){x=t; y=0.0000;}
+border TopLeftLas017(t=0.0090, 0.0100){x=t; y=0.0000;}
+border TopLeftLas018(t=0.0100, 0.0110){x=t; y=0.0000;}
+border TopLeftLas019(t=0.0110, 0.0120){x=t; y=0.0000;}
+border TopLeftLas020(t=0.0120, 0.0132){x=t; y=0.0000;}
+border TopLeftLas021(t=0.0132, 0.0144){x=t; y=0.0000;}
+border TopLeftLas022(t=0.0144, 0.0157){x=t; y=0.0000;}
+border TopLeftLas023(t=0.0157, 0.0171){x=t; y=0.0000;}
+border TopLeftLas024(t=0.0171, 0.0185){x=t; y=0.0000;}
+border TopLeftLas025(t=0.0185, 0.0201){x=t; y=0.0000;}
+border InnLeftLas001(t=0.0000, 0.0003){x=t; y=-0.0003;}
+border InnLeftLas002(t=0.0003, 0.0007){x=t; y=-0.0003;}
+border InnLeftLas003(t=0.0007, 0.0011){x=t; y=-0.0003;}
+border InnLeftLas004(t=0.0011, 0.0015){x=t; y=-0.0003;}
+border InnLeftLas005(t=0.0015, 0.0019){x=t; y=-0.0003;}
+border InnLeftLas006(t=0.0019, 0.0024){x=t; y=-0.0003;}
+border InnLeftLas007(t=0.0024, 0.0029){x=t; y=-0.0003;}
+border InnLeftLas008(t=0.0029, 0.0034){x=t; y=-0.0003;}
+border InnLeftLas009(t=0.0034, 0.0039){x=t; y=-0.0003;}
+border InnLeftLas010(t=0.0039, 0.0045){x=t; y=-0.0003;}
+border InnLeftLas011(t=0.0045, 0.0052){x=t; y=-0.0003;}
+border InnLeftLas012(t=0.0052, 0.0058){x=t; y=-0.0003;}
+border InnLeftLas013(t=0.0058, 0.0066){x=t; y=-0.0003;}
+border InnLeftLas014(t=0.0066, 0.0073){x=t; y=-0.0003;}
+border InnLeftLas015(t=0.0073, 0.0082){x=t; y=-0.0003;}
+border InnLeftLas016(t=0.0082, 0.0090){x=t; y=-0.0003;}
+border InnLeftLas017(t=0.0090, 0.0100){x=t; y=-0.0003;}
+border InnLeftLas018(t=0.0100, 0.0110){x=t; y=-0.0003;}
+border InnLeftLas019(t=0.0110, 0.0120){x=t; y=-0.0003;}
+border InnLeftLas020(t=0.0120, 0.0132){x=t; y=-0.0003;}
+border InnLeftLas021(t=0.0132, 0.0144){x=t; y=-0.0003;}
+border InnLeftLas022(t=0.0144, 0.0157){x=t; y=-0.0003;}
+border InnLeftLas023(t=0.0157, 0.0171){x=t; y=-0.0003;}
+border InnLeftLas024(t=0.0171, 0.0185){x=t; y=-0.0003;}
+border InnLeftLas025(t=0.0185, 0.0201){x=t; y=-0.0003;}
+border TopRightlas001(t=0.0201, 0.0218){x=t; y=0.0000;}
+border TopRightlas002(t=0.0218, 0.0236){x=t; y=0.0000;}
+border TopRightlas003(t=0.0236, 0.0256){x=t; y=0.0000;}
+border TopRightlas004(t=0.0256, 0.0278){x=t; y=0.0000;}
+border TopRightlas005(t=0.0278, 0.0303){x=t; y=0.0000;}
+border TopRightlas006(t=0.0303, 0.0330){x=t; y=0.0000;}
+border TopRightlas007(t=0.0330, 0.0359){x=t; y=0.0000;}
+border TopRightlas008(t=0.0359, 0.0392){x=t; y=0.0000;}
+border TopRightlas009(t=0.0392, 0.0428){x=t; y=0.0000;}
+border TopRightlas010(t=0.0428, 0.0467){x=t; y=0.0000;}
+border TopRightlas011(t=0.0467, 0.0510){x=t; y=0.0000;}
+border TopRightlas012(t=0.0510, 0.0558){x=t; y=0.0000;}
+border TopRightlas013(t=0.0558, 0.0611){x=t; y=0.0000;}
+border TopRightlas014(t=0.0611, 0.0668){x=t; y=0.0000;}
+border TopRightlas015(t=0.0668, 0.0732){x=t; y=0.0000;}
+border TopRightlas016(t=0.0732, 0.0802){x=t; y=0.0000;}
+border TopRightlas017(t=0.0802, 0.0879){x=t; y=0.0000;}
+border TopRightlas018(t=0.0879, 0.0964){x=t; y=0.0000;}
+border TopRightlas019(t=0.0964, 0.1057){x=t; y=0.0000;}
+border TopRightlas020(t=0.1057, 0.1159){x=t; y=0.0000;}
+border TopRightlas021(t=0.1159, 0.1272){x=t; y=0.0000;}
+border TopRightlas022(t=0.1272, 0.1396){x=t; y=0.0000;}
+border TopRightlas023(t=0.1396, 0.1533){x=t; y=0.0000;}
+border TopRightlas024(t=0.1533, 0.1683){x=t; y=0.0000;}
+border TopRightlas025(t=0.1683, 0.1849){x=t; y=0.0000;}
+border TopRightlas026(t=0.1849, 0.2031){x=t; y=0.0000;}
+border TopRightlas027(t=0.2031, 0.2231){x=t; y=0.0000;}
+border TopRightlas028(t=0.2231, 0.2451){x=t; y=0.0000;}
+border TopRightlas029(t=0.2451, 0.2694){x=t; y=0.0000;}
+border TopRightlas030(t=0.2694, 0.2961){x=t; y=0.0000;}
+border TopRightlas031(t=0.2961, 0.3254){x=t; y=0.0000;}
+border TopRightlas032(t=0.3254, 0.3578){x=t; y=0.0000;}
+border TopRightlas033(t=0.3578, 0.3933){x=t; y=0.0000;}
+border TopRightlas034(t=0.3933, 0.4324){x=t; y=0.0000;}
+border TopRightlas035(t=0.4324, 0.4755){x=t; y=0.0000;}
+border TopRightlas036(t=0.4755, 0.5228){x=t; y=0.0000;}
+border TopRightlas037(t=0.5228, 0.5749){x=t; y=0.0000;}
+border TopRightlas038(t=0.5749, 0.6323){x=t; y=0.0000;}
+border TopRightlas039(t=0.6323, 0.6954){x=t; y=0.0000;}
+border TopRightlas040(t=0.6954, 0.7648){x=t; y=0.0000;}
+border TopRightlas041(t=0.7648, 0.8412){x=t; y=0.0000;}
+border TopRightlas042(t=0.8412, 0.9253){x=t; y=0.0000;}
+border TopRightlas043(t=0.9253, 1.0178){x=t; y=0.0000;}
+border InnRightlas001(t=0.0201, 0.0218){x=t; y=-0.0003;}
+border InnRightlas002(t=0.0218, 0.0236){x=t; y=-0.0003;}
+border InnRightlas003(t=0.0236, 0.0256){x=t; y=-0.0003;}
+border InnRightlas004(t=0.0256, 0.0278){x=t; y=-0.0003;}
+border InnRightlas005(t=0.0278, 0.0303){x=t; y=-0.0003;}
+border InnRightlas006(t=0.0303, 0.0330){x=t; y=-0.0003;}
+border InnRightlas007(t=0.0330, 0.0359){x=t; y=-0.0003;}
+border InnRightlas008(t=0.0359, 0.0392){x=t; y=-0.0003;}
+border InnRightlas009(t=0.0392, 0.0428){x=t; y=-0.0003;}
+border InnRightlas010(t=0.0428, 0.0467){x=t; y=-0.0003;}
+border InnRightlas011(t=0.0467, 0.0510){x=t; y=-0.0003;}
+border InnRightlas012(t=0.0510, 0.0558){x=t; y=-0.0003;}
+border InnRightlas013(t=0.0558, 0.0611){x=t; y=-0.0003;}
+border InnRightlas014(t=0.0611, 0.0668){x=t; y=-0.0003;}
+border InnRightlas015(t=0.0668, 0.0732){x=t; y=-0.0003;}
+border InnRightlas016(t=0.0732, 0.0802){x=t; y=-0.0003;}
+border InnRightlas017(t=0.0802, 0.0879){x=t; y=-0.0003;}
+border InnRightlas018(t=0.0879, 0.0964){x=t; y=-0.0003;}
+border InnRightlas019(t=0.0964, 0.1057){x=t; y=-0.0003;}
+border InnRightlas020(t=0.1057, 0.1159){x=t; y=-0.0003;}
+border InnRightlas021(t=0.1159, 0.1272){x=t; y=-0.0003;}
+border InnRightlas022(t=0.1272, 0.1396){x=t; y=-0.0003;}
+border InnRightlas023(t=0.1396, 0.1533){x=t; y=-0.0003;}
+border InnRightlas024(t=0.1533, 0.1683){x=t; y=-0.0003;}
+border InnRightlas025(t=0.1683, 0.1849){x=t; y=-0.0003;}
+border InnRightlas026(t=0.1849, 0.2031){x=t; y=-0.0003;}
+border InnRightlas027(t=0.2031, 0.2231){x=t; y=-0.0003;}
+border InnRightlas028(t=0.2231, 0.2451){x=t; y=-0.0003;}
+border InnRightlas029(t=0.2451, 0.2694){x=t; y=-0.0003;}
+border InnRightlas030(t=0.2694, 0.2961){x=t; y=-0.0003;}
+border InnRightlas031(t=0.2961, 0.3254){x=t; y=-0.0003;}
+border InnRightlas032(t=0.3254, 0.3578){x=t; y=-0.0003;}
+border InnRightlas033(t=0.3578, 0.3933){x=t; y=-0.0003;}
+border InnRightlas034(t=0.3933, 0.4324){x=t; y=-0.0003;}
+border InnRightlas035(t=0.4324, 0.4755){x=t; y=-0.0003;}
+border InnRightlas036(t=0.4755, 0.5228){x=t; y=-0.0003;}
+border InnRightlas037(t=0.5228, 0.5749){x=t; y=-0.0003;}
+border InnRightlas038(t=0.5749, 0.6323){x=t; y=-0.0003;}
+border InnRightlas039(t=0.6323, 0.6954){x=t; y=-0.0003;}
+border InnRightlas040(t=0.6954, 0.7648){x=t; y=-0.0003;}
+border InnRightlas041(t=0.7648, 0.8412){x=t; y=-0.0003;}
+border InnRightlas042(t=0.8412, 0.9253){x=t; y=-0.0003;}
+border InnRightlas043(t=0.9253, 1.0178){x=t; y=-0.0003;}
+border InnVertLas001(t=-0.0003, 0.0000){x=0.0000; y=t;}
+border InnVertLas002(t=-0.0003, 0.0000){x=0.0003; y=t;}
+border InnVertLas003(t=-0.0003, 0.0000){x=0.0007; y=t;}
+border InnVertLas004(t=-0.0003, 0.0000){x=0.0011; y=t;}
+border InnVertLas005(t=-0.0003, 0.0000){x=0.0015; y=t;}
+border InnVertLas006(t=-0.0003, 0.0000){x=0.0019; y=t;}
+border InnVertLas007(t=-0.0003, 0.0000){x=0.0024; y=t;}
+border InnVertLas008(t=-0.0003, 0.0000){x=0.0029; y=t;}
+border InnVertLas009(t=-0.0003, 0.0000){x=0.0034; y=t;}
+border InnVertLas010(t=-0.0003, 0.0000){x=0.0039; y=t;}
+border InnVertLas011(t=-0.0003, 0.0000){x=0.0045; y=t;}
+border InnVertLas012(t=-0.0003, 0.0000){x=0.0052; y=t;}
+border InnVertLas013(t=-0.0003, 0.0000){x=0.0058; y=t;}
+border InnVertLas014(t=-0.0003, 0.0000){x=0.0066; y=t;}
+border InnVertLas015(t=-0.0003, 0.0000){x=0.0073; y=t;}
+border InnVertLas016(t=-0.0003, 0.0000){x=0.0082; y=t;}
+border InnVertLas017(t=-0.0003, 0.0000){x=0.0090; y=t;}
+border InnVertLas018(t=-0.0003, 0.0000){x=0.0100; y=t;}
+border InnVertLas019(t=-0.0003, 0.0000){x=0.0110; y=t;}
+border InnVertLas020(t=-0.0003, 0.0000){x=0.0120; y=t;}
+border InnVertLas021(t=-0.0003, 0.0000){x=0.0132; y=t;}
+border InnVertLas022(t=-0.0003, 0.0000){x=0.0144; y=t;}
+border InnVertLas023(t=-0.0003, 0.0000){x=0.0157; y=t;}
+border InnVertLas024(t=-0.0003, 0.0000){x=0.0171; y=t;}
+border InnVertLas025(t=-0.0003, 0.0000){x=0.0185; y=t;}
+border InnVertLas026(t=-0.0003, 0.0000){x=0.0201; y=t;}
+border InnVertLas027(t=-0.0003, 0.0000){x=0.0218; y=t;}
+border InnVertLas028(t=-0.0003, 0.0000){x=0.0236; y=t;}
+border InnVertLas029(t=-0.0003, 0.0000){x=0.0256; y=t;}
+border InnVertLas030(t=-0.0003, 0.0000){x=0.0278; y=t;}
+border InnVertLas031(t=-0.0003, 0.0000){x=0.0303; y=t;}
+border InnVertLas032(t=-0.0003, 0.0000){x=0.0330; y=t;}
+border InnVertLas033(t=-0.0003, 0.0000){x=0.0359; y=t;}
+border InnVertLas034(t=-0.0003, 0.0000){x=0.0392; y=t;}
+border InnVertLas035(t=-0.0003, 0.0000){x=0.0428; y=t;}
+border InnVertLas036(t=-0.0003, 0.0000){x=0.0467; y=t;}
+border InnVertLas037(t=-0.0003, 0.0000){x=0.0510; y=t;}
+border InnVertLas038(t=-0.0003, 0.0000){x=0.0558; y=t;}
+border InnVertLas039(t=-0.0003, 0.0000){x=0.0611; y=t;}
+border InnVertLas040(t=-0.0003, 0.0000){x=0.0668; y=t;}
+border InnVertLas041(t=-0.0003, 0.0000){x=0.0732; y=t;}
+border InnVertLas042(t=-0.0003, 0.0000){x=0.0802; y=t;}
+border InnVertLas043(t=-0.0003, 0.0000){x=0.0879; y=t;}
+border InnVertLas044(t=-0.0003, 0.0000){x=0.0964; y=t;}
+border InnVertLas045(t=-0.0003, 0.0000){x=0.1057; y=t;}
+border InnVertLas046(t=-0.0003, 0.0000){x=0.1159; y=t;}
+border InnVertLas047(t=-0.0003, 0.0000){x=0.1272; y=t;}
+border InnVertLas048(t=-0.0003, 0.0000){x=0.1396; y=t;}
+border InnVertLas049(t=-0.0003, 0.0000){x=0.1533; y=t;}
+border InnVertLas050(t=-0.0003, 0.0000){x=0.1683; y=t;}
+border InnVertLas051(t=-0.0003, 0.0000){x=0.1849; y=t;}
+border InnVertLas052(t=-0.0003, 0.0000){x=0.2031; y=t;}
+border InnVertLas053(t=-0.0003, 0.0000){x=0.2231; y=t;}
+border InnVertLas054(t=-0.0003, 0.0000){x=0.2451; y=t;}
+border InnVertLas055(t=-0.0003, 0.0000){x=0.2694; y=t;}
+border InnVertLas056(t=-0.0003, 0.0000){x=0.2961; y=t;}
+border InnVertLas057(t=-0.0003, 0.0000){x=0.3254; y=t;}
+border InnVertLas058(t=-0.0003, 0.0000){x=0.3578; y=t;}
+border InnVertLas059(t=-0.0003, 0.0000){x=0.3933; y=t;}
+border InnVertLas060(t=-0.0003, 0.0000){x=0.4324; y=t;}
+border InnVertLas061(t=-0.0003, 0.0000){x=0.4755; y=t;}
+border InnVertLas062(t=-0.0003, 0.0000){x=0.5228; y=t;}
+border InnVertLas063(t=-0.0003, 0.0000){x=0.5749; y=t;}
+border InnVertLas064(t=-0.0003, 0.0000){x=0.6323; y=t;}
+border InnVertLas065(t=-0.0003, 0.0000){x=0.6954; y=t;}
+border InnVertLas066(t=-0.0003, 0.0000){x=0.7648; y=t;}
+border InnVertLas067(t=-0.0003, 0.0000){x=0.8412; y=t;}
+border InnVertLas068(t=-0.0003, 0.0000){x=0.9253; y=t;}
+border InnVertLas069(t=-0.0003, 0.0000){x=1.0178; y=t;}
+border SubsLeft(t=-0.0003, -1.0000){x=0.0000; y=t;}
+border SubsRight(t=-1.0000, -0.0003){x=1.0178; y=t;}
+border SubsBottom(t=0.0000, 1.0178){x=t; y=-1.0000;}
+int n=2;
+mesh Th = buildmesh( TopLeftLas001(-n) + TopLeftLas002(-n) + TopLeftLas003(-n) + TopLeftLas004(-n) + TopLeftLas005(-n) + TopLeftLas006(-n) + TopLeftLas007(-n) + TopLeftLas008(-n) + TopLeftLas009(-n) + TopLeftLas010(-n) + TopLeftLas011(-n) + TopLeftLas012(-n) + TopLeftLas013(-n) + TopLeftLas014(-n) + TopLeftLas015(-n) + TopLeftLas016(-n) + TopLeftLas017(-n) + TopLeftLas018(-n) + TopLeftLas019(-n) + TopLeftLas020(-n) + TopLeftLas021(-n) + TopLeftLas022(-n) + TopLeftLas023(-n) + TopLeftLas024(-n) + TopLeftLas025(-n) + InnLeftLas001(+n) + InnLeftLas002(+n) + InnLeftLas003(+n) + InnLeftLas004(+n) + InnLeftLas005(+n) + InnLeftLas006(+n) + InnLeftLas007(+n) + InnLeftLas008(+n) + InnLeftLas009(+n) + InnLeftLas010(+n) + InnLeftLas011(+n) + InnLeftLas012(+n) + InnLeftLas013(+n) + InnLeftLas014(+n) + InnLeftLas015(+n) + InnLeftLas016(+n) + InnLeftLas017(+n) + InnLeftLas018(+n) + InnLeftLas019(+n) + InnLeftLas020(+n) + InnLeftLas021(+n) + InnLeftLas022(+n) + InnLeftLas023(+n) + InnLeftLas024(+n) + InnLeftLas025(+n) + TopRightlas001(-n) + TopRightlas002(-n) + TopRightlas003(-n) + TopRightlas004(-n) + TopRightlas005(-n) + TopRightlas006(-n) + TopRightlas007(-n) + TopRightlas008(-n) + TopRightlas009(-n) + TopRightlas010(-n) + TopRightlas011(-n) + TopRightlas012(-n) + TopRightlas013(-n) + TopRightlas014(-n) + TopRightlas015(-n) + TopRightlas016(-n) + TopRightlas017(-n) + TopRightlas018(-n) + TopRightlas019(-n) + TopRightlas020(-n) + TopRightlas021(-n) + TopRightlas022(-n) + TopRightlas023(-n) + TopRightlas024(-n) + TopRightlas025(-n) + TopRightlas026(-n) + TopRightlas027(-n) + TopRightlas028(-n) + TopRightlas029(-n) + TopRightlas030(-n) + TopRightlas031(-n) + TopRightlas032(-n) + TopRightlas033(-n) + TopRightlas034(-n) + TopRightlas035(-n) + TopRightlas036(-n) + TopRightlas037(-n) + TopRightlas038(-n) + TopRightlas039(-n) + TopRightlas040(-n) + TopRightlas041(-n) + TopRightlas042(-n) + TopRightlas043(-n) + InnRightlas001(+n) + InnRightlas002(+n) + InnRightlas003(+n) + InnRightlas004(+n) + InnRightlas005(+n) + InnRightlas006(+n) + InnRightlas007(+n) + InnRightlas008(+n) + InnRightlas009(+n) + InnRightlas010(+n) + InnRightlas011(+n) + InnRightlas012(+n) + InnRightlas013(+n) + InnRightlas014(+n) + InnRightlas015(+n) + InnRightlas016(+n) + InnRightlas017(+n) + InnRightlas018(+n) + InnRightlas019(+n) + InnRightlas020(+n) + InnRightlas021(+n) + InnRightlas022(+n) + InnRightlas023(+n) + InnRightlas024(+n) + InnRightlas025(+n) + InnRightlas026(+n) + InnRightlas027(+n) + InnRightlas028(+n) + InnRightlas029(+n) + InnRightlas030(+n) + InnRightlas031(+n) + InnRightlas032(+n) + InnRightlas033(+n) + InnRightlas034(+n) + InnRightlas035(+n) + InnRightlas036(+n) + InnRightlas037(+n) + InnRightlas038(+n) + InnRightlas039(+n) + InnRightlas040(+n) + InnRightlas041(+n) + InnRightlas042(+n) + InnRightlas043(+n)+InnVertLas001(-n)+InnVertLas002(n)+InnVertLas003(n)+InnVertLas004(n)+InnVertLas005(n)+InnVertLas006(n)+InnVertLas007(n)+InnVertLas008(n)+InnVertLas009(n)+InnVertLas010(n)+InnVertLas011(n)+InnVertLas012(n)+InnVertLas013(n)+InnVertLas014(n)+InnVertLas015(n)+InnVertLas016(n)+InnVertLas017(n)+InnVertLas018(n)+InnVertLas019(n)+InnVertLas020(n)+InnVertLas021(n)+InnVertLas022(n)+InnVertLas023(n)+InnVertLas024(n)+InnVertLas025(n)+InnVertLas026(n)+InnVertLas027(n)+InnVertLas028(n)+InnVertLas029(n)+InnVertLas030(n)+InnVertLas031(n)+InnVertLas032(n)+InnVertLas033(n)+InnVertLas034(n)+InnVertLas035(n)+InnVertLas036(n)+InnVertLas037(n)+InnVertLas038(n)+InnVertLas039(n)+InnVertLas040(n)+InnVertLas041(n)+InnVertLas042(n)+InnVertLas043(n)+InnVertLas044(n)+InnVertLas045(n)+InnVertLas046(n)+InnVertLas047(n)+InnVertLas048(n)+InnVertLas049(n)+InnVertLas050(n)+InnVertLas051(n)+InnVertLas052(n)+InnVertLas053(n)+InnVertLas054(n)+InnVertLas055(n)+InnVertLas056(n)+InnVertLas057(n)+InnVertLas058(n)+InnVertLas059(n)+InnVertLas060(n)+InnVertLas061(n)+InnVertLas062(n)+InnVertLas063(n)+InnVertLas064(n)+InnVertLas065(n)+InnVertLas066(n)+InnVertLas067(n)+InnVertLas068(n)+InnVertLas069(n) + SubsLeft(+n) + SubsRight(+n) + SubsBottom(+n));
+plot(Th, wait=1);
+savemesh(Th, "meshPN2.msh");
Modified: fsem/examples-fondation/struct_mesh/meshPN2.sce
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN2.sce 2007-04-05 12:53:15 UTC (rev 128)
+++ fsem/examples-fondation/struct_mesh/meshPN2.sce 2007-04-23 12:48:24 UTC (rev 129)
@@ -27,11 +27,11 @@
function buildmesh_cmd_all=make_PN()
-filename = "meshPN.edp";
+filename = "meshPN2.edp";
fileid = file('open', filename, 'unknown');
buildmesh_cmd_all = "";
-GloScaX = 300; // [um]
+GloScaX = 300; // [um] // ATTENTION: this has to match the scaling factor in FSEM !!!!
las_r = 6/GloScaX;
las_H1 = 0.1/GloScaX;
Added: fsem/examples-fondation/struct_mesh/meshPN3.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN3.edp (rev 0)
+++ fsem/examples-fondation/struct_mesh/meshPN3.edp 2007-04-23 12:48:24 UTC (rev 129)
@@ -0,0 +1,349 @@
+border TopLeftLas001(t=0.0000, 0.0003){x=t; y=0.0000;}
+border TopLeftLas002(t=0.0003, 0.0007){x=t; y=0.0000;}
+border TopLeftLas003(t=0.0007, 0.0011){x=t; y=0.0000;}
+border TopLeftLas004(t=0.0011, 0.0015){x=t; y=0.0000;}
+border TopLeftLas005(t=0.0015, 0.0019){x=t; y=0.0000;}
+border TopLeftLas006(t=0.0019, 0.0024){x=t; y=0.0000;}
+border TopLeftLas007(t=0.0024, 0.0029){x=t; y=0.0000;}
+border TopLeftLas008(t=0.0029, 0.0034){x=t; y=0.0000;}
+border TopLeftLas009(t=0.0034, 0.0039){x=t; y=0.0000;}
+border TopLeftLas010(t=0.0039, 0.0045){x=t; y=0.0000;}
+border TopLeftLas011(t=0.0045, 0.0052){x=t; y=0.0000;}
+border TopLeftLas012(t=0.0052, 0.0058){x=t; y=0.0000;}
+border TopLeftLas013(t=0.0058, 0.0066){x=t; y=0.0000;}
+border TopLeftLas014(t=0.0066, 0.0073){x=t; y=0.0000;}
+border TopLeftLas015(t=0.0073, 0.0082){x=t; y=0.0000;}
+border TopLeftLas016(t=0.0082, 0.0090){x=t; y=0.0000;}
+border TopLeftLas017(t=0.0090, 0.0100){x=t; y=0.0000;}
+border TopLeftLas018(t=0.0100, 0.0110){x=t; y=0.0000;}
+border TopLeftLas019(t=0.0110, 0.0120){x=t; y=0.0000;}
+border TopLeftLas020(t=0.0120, 0.0132){x=t; y=0.0000;}
+border TopLeftLas021(t=0.0132, 0.0144){x=t; y=0.0000;}
+border TopLeftLas022(t=0.0144, 0.0157){x=t; y=0.0000;}
+border TopLeftLas023(t=0.0157, 0.0171){x=t; y=0.0000;}
+border TopLeftLas024(t=0.0171, 0.0185){x=t; y=0.0000;}
+border TopLeftLas025(t=0.0185, 0.0201){x=t; y=0.0000;}
+border InnLeftLas001(t=0.0000, 0.0003){x=t; y=-0.0003;}
+border InnLeftLas002(t=0.0003, 0.0007){x=t; y=-0.0003;}
+border InnLeftLas003(t=0.0007, 0.0011){x=t; y=-0.0003;}
+border InnLeftLas004(t=0.0011, 0.0015){x=t; y=-0.0003;}
+border InnLeftLas005(t=0.0015, 0.0019){x=t; y=-0.0003;}
+border InnLeftLas006(t=0.0019, 0.0024){x=t; y=-0.0003;}
+border InnLeftLas007(t=0.0024, 0.0029){x=t; y=-0.0003;}
+border InnLeftLas008(t=0.0029, 0.0034){x=t; y=-0.0003;}
+border InnLeftLas009(t=0.0034, 0.0039){x=t; y=-0.0003;}
+border InnLeftLas010(t=0.0039, 0.0045){x=t; y=-0.0003;}
+border InnLeftLas011(t=0.0045, 0.0052){x=t; y=-0.0003;}
+border InnLeftLas012(t=0.0052, 0.0058){x=t; y=-0.0003;}
+border InnLeftLas013(t=0.0058, 0.0066){x=t; y=-0.0003;}
+border InnLeftLas014(t=0.0066, 0.0073){x=t; y=-0.0003;}
+border InnLeftLas015(t=0.0073, 0.0082){x=t; y=-0.0003;}
+border InnLeftLas016(t=0.0082, 0.0090){x=t; y=-0.0003;}
+border InnLeftLas017(t=0.0090, 0.0100){x=t; y=-0.0003;}
+border InnLeftLas018(t=0.0100, 0.0110){x=t; y=-0.0003;}
+border InnLeftLas019(t=0.0110, 0.0120){x=t; y=-0.0003;}
+border InnLeftLas020(t=0.0120, 0.0132){x=t; y=-0.0003;}
+border InnLeftLas021(t=0.0132, 0.0144){x=t; y=-0.0003;}
+border InnLeftLas022(t=0.0144, 0.0157){x=t; y=-0.0003;}
+border InnLeftLas023(t=0.0157, 0.0171){x=t; y=-0.0003;}
+border InnLeftLas024(t=0.0171, 0.0185){x=t; y=-0.0003;}
+border InnLeftLas025(t=0.0185, 0.0201){x=t; y=-0.0003;}
+border Inn2LeftLas001(t=0.0000, 0.0003){x=t; y=-0.0043;}
+border Inn2LeftLas002(t=0.0003, 0.0007){x=t; y=-0.0043;}
+border Inn2LeftLas003(t=0.0007, 0.0011){x=t; y=-0.0043;}
+border Inn2LeftLas004(t=0.0011, 0.0015){x=t; y=-0.0043;}
+border Inn2LeftLas005(t=0.0015, 0.0019){x=t; y=-0.0043;}
+border Inn2LeftLas006(t=0.0019, 0.0024){x=t; y=-0.0043;}
+border Inn2LeftLas007(t=0.0024, 0.0029){x=t; y=-0.0043;}
+border Inn2LeftLas008(t=0.0029, 0.0034){x=t; y=-0.0043;}
+border Inn2LeftLas009(t=0.0034, 0.0039){x=t; y=-0.0043;}
+border Inn2LeftLas010(t=0.0039, 0.0045){x=t; y=-0.0043;}
+border Inn2LeftLas011(t=0.0045, 0.0052){x=t; y=-0.0043;}
+border Inn2LeftLas012(t=0.0052, 0.0058){x=t; y=-0.0043;}
+border Inn2LeftLas013(t=0.0058, 0.0066){x=t; y=-0.0043;}
+border Inn2LeftLas014(t=0.0066, 0.0073){x=t; y=-0.0043;}
+border Inn2LeftLas015(t=0.0073, 0.0082){x=t; y=-0.0043;}
+border Inn2LeftLas016(t=0.0082, 0.0090){x=t; y=-0.0043;}
+border Inn2LeftLas017(t=0.0090, 0.0100){x=t; y=-0.0043;}
+border Inn2LeftLas018(t=0.0100, 0.0110){x=t; y=-0.0043;}
+border Inn2LeftLas019...
[truncated message content] |
|
From: <fab...@us...> - 2007-04-05 12:53:21
|
Revision: 128
http://fsem.svn.sourceforge.net/fsem/?rev=128&view=rev
Author: fabiandortu
Date: 2007-04-05 05:53:15 -0700 (Thu, 05 Apr 2007)
Log Message:
-----------
Checked that surface recombination velocity for AMBI was correctly implemented
Modified Paths:
--------------
fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp
Modified: fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp
===================================================================
--- fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp 2007-03-23 16:12:37 UTC (rev 127)
+++ fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp 2007-04-05 12:53:15 UTC (rev 128)
@@ -122,7 +122,7 @@
/**********************************************
* GloVarDiffCOEFv (surface mass matrix coef)
**********************************************/
- GloVarDiffCOEFv = GloVarSemiSURFRECVEL / GloVarDiffCOEFc; //[m^-1] // Coef for the surf. recomb. vel.: v/D * N = grad(N)
+ GloVarDiffCOEFv = GloVarSemiSURFRECVEL; //[m/s]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-23 16:12:51
|
Revision: 127
http://fsem.svn.sourceforge.net/fsem/?rev=127&view=rev
Author: fabiandortu
Date: 2007-03-23 09:12:37 -0700 (Fri, 23 Mar 2007)
Log Message:
-----------
Corrected little bug related to surface recombination flag
Modified Paths:
--------------
fsem/solve/fsem_SolveMainDDSG.edp
Modified: fsem/solve/fsem_SolveMainDDSG.edp
===================================================================
--- fsem/solve/fsem_SolveMainDDSG.edp 2007-03-23 13:50:59 UTC (rev 126)
+++ fsem/solve/fsem_SolveMainDDSG.edp 2007-03-23 16:12:37 UTC (rev 127)
@@ -182,6 +182,7 @@
ModUsrRecSurfSRH=ModUsrRecSurfSRHSAVE;
ModUsrRecAugerDDSG = false;
ModUsrRecSRHDDSG = false;
+ ModUsrRecSurfSRHDDSG=false;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-23 13:50:59
|
Revision: 126
http://fsem.svn.sourceforge.net/fsem/?rev=126&view=rev
Author: fabiandortu
Date: 2007-03-23 06:50:59 -0700 (Fri, 23 Mar 2007)
Log Message:
-----------
Added heat due to surface recombination for DDSG.
Flag to use:
ModUsrHeatRecSurf = 1;
Don't forget to do a
ComputeRecVol();
ComputeRecSurf();
after having solved DDSG in order to have recombination rates up to date.
Modified Paths:
--------------
fsem/TODO
fsem/assemble/fsem_PreAssemble_DDSG.edp
fsem/models/fsem_Mod_ComputeSemi.edp
fsem/models/fsem_Mod_FlagsSemi.edp
fsem/models/modules/Semi/fsem_ModRecSRH.cpp
fsem/models/modules/Semi/fsem_ModRecSRH.edp
fsem/solve/fsem_SolveMainDDSG.edp
Modified: fsem/TODO
===================================================================
--- fsem/TODO 2007-03-23 09:31:46 UTC (rev 125)
+++ fsem/TODO 2007-03-23 13:50:59 UTC (rev 126)
@@ -1,29 +1,10 @@
-Added September 2005
---------------------
-* Mesh/solution export to gmsh: add SL (list of all edges) to SaveGmshPosSPARSEDST in order
- to be able to visualize mesh and data at the same time without having to
- use the merge command
- [DONE]
-Added March 2005
-----------------
-* coupling thermal-carrier equation [DONE]
-* non-linear mobility [DONE]
-* - poisson equation for electric field
- - 2 independent carriers
- (once there is an electric field somewher, the electrons
- and the holes will behaves differently. Even if they have
- the same diffusion coefficient (they diffuse in the same direction
- with same quantity if mobilites are identical), they will
- drift in opposite direction.
-* Make a "array" of model dependance in order to factorize the code.
- For instance, I need to compute Fermi level before computing
- absorption coefficient.
-* Evaluate an effective recombination lifetime asof doping and laser power
- such that the linear system can be solve with usefull parameters and the mesh
- is nicely refined. (Sep 2005: I discussed this with Janusz)
- Indeed, if doping concentration is high, the recombunation lifetime is
- very short and the carrier concentration changes on a relatively
- short distance so that the mesh should be refine consequently.
-* Test solution "error" to trigger mesh refinement
+* 23March2007: the volume and surface recombinations have to be calculated EXPLICITELY AFTER the DDSG equations
+have been solved. This is because GloVarSemiGenRecTOT actually do NOT store the recombination rate after DDSG but the "F"
+term in the Gummel map. This should be corrected...
+Now, after a DDSG calculation you have to use
+ComputeRecVol();
+ComputeRecVolSurf();
+if you want to make a temperature calculation.
+
Modified: fsem/assemble/fsem_PreAssemble_DDSG.edp
===================================================================
--- fsem/assemble/fsem_PreAssemble_DDSG.edp 2007-03-23 09:31:46 UTC (rev 125)
+++ fsem/assemble/fsem_PreAssemble_DDSG.edp 2007-03-23 13:50:59 UTC (rev 126)
@@ -29,9 +29,12 @@
func real PreAssemblingDDSG()
{
-
- bool ModUsrRecAugerDDSGSAVE;
- bool ModUsrRecSRHDDSGSAVE;
+
+ // Need to save recombination flags, since the recombinations
+ // are treated in a particular way in the GUMMEL map.
+ bool ModUsrRecAugerDDSGSAVE;
+ bool ModUsrRecSRHDDSGSAVE;
+
real IniTime = clock();
Modified: fsem/models/fsem_Mod_ComputeSemi.edp
===================================================================
--- fsem/models/fsem_Mod_ComputeSemi.edp 2007-03-23 09:31:46 UTC (rev 125)
+++ fsem/models/fsem_Mod_ComputeSemi.edp 2007-03-23 13:50:59 UTC (rev 126)
@@ -2,7 +2,7 @@
/* Compute different coefficients depending on model flags selection */
/*********************************************************************/
-/*** Compute Equilibrium concentration ********************************************/
+/*** Compute Equilibrium concentration ********************************************/
func real ComputeActiveDopant() {
/*TeXDoc
@@ -432,7 +432,10 @@
GloVarSemidGenRecTOTdHOL = 0;
GloVarSemiRECITAU = 0;
- /* Gen/Rec in the Right Hand Side */
+ /***************************************************
+ * PHYSICAL volume recombination rate (m^-3 s^-1)
+ ***************************************************/
+
if(ModUsrRecAuger) {
if(fsemVERBOSITY>4) {
cout << tab5 << "(ModUsrRecAuger)" << endl;
@@ -445,44 +448,6 @@
GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecAugerdELE[];
GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecAugerdHOL[];
}
- if(ModUsrRecAugerSteadyPerH0) {
- if(fsemVERBOSITY>4) {
- cout << tab5 << "(ModUsrRecAugerSteadyPerH0)" << endl;
- }
- ModRecVolAugSteadyPerH0();
- ShowMinMax(tab5 + " GloVarSemiGenRecAuger", GloVarSemiGenRecAuger[], ConvM2C^(-3), "cm^(-3) s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecAugerdELE", GloVarSemidGenRecAugerdELE[], 1, "s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecAugerdHOL", GloVarSemidGenRecAugerdHOL[], 1, "s^(-1)");
- GloVarSemiGenRecTOT[] += GloVarSemiGenRecAuger[];
- GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecAugerdELE[];
- GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecAugerdHOL[];
- }
-
- if(ModUsrRecSRHSteadyPerH0) {
- if(fsemVERBOSITY>4) {
- cout << tab5 << "(ModUsrRecSRHSteadyPerH0)" << endl;
- }
- ModRecVolSRHSteadyPerH0();
- ShowMinMax(tab5 + " GloVarSemiGenRecSRH", GloVarSemiGenRecSRH[], ConvM2C^(-3), "cm^(-3) s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecSRHdELE", GloVarSemidGenRecSRHdELE[], 1, "s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecSRHdHOL", GloVarSemidGenRecSRHdHOL[], 1, "s^(-1)");
- GloVarSemiGenRecTOT[] += GloVarSemiGenRecSRH[];
- GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecSRHdELE[];
- GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecSRHdHOL[];
- }
- if(ModUsrRecAugerDDSG) {
- if(fsemVERBOSITY>4) {
- cout << tab5 << "(ModUsrRecAugerDDSG)" << endl;
- }
- ModDDSGRecVolAug();
-
- ShowMinMax(tab5 + " GloVarSemiGenRecAuger(DDSG)", GloVarSemiGenRecAuger[], ConvM2C^(3), "cm^(3) s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecAugerdELE(DDSG)", GloVarSemidGenRecAugerdELE[], ConvM2C^(3), "cm^(3) s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecAugerdHOL(DDSG)", GloVarSemidGenRecAugerdHOL[], ConvM2C^(3) , "cm^(3) s^(-1)");
- GloVarSemiGenRecTOT[] += GloVarSemiGenRecAuger[];
- GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecAugerdELE[];
- GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecAugerdHOL[];
- }
if(ModUsrRecSRH) {
if(fsemVERBOSITY>4) {
@@ -503,19 +468,6 @@
GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecSRHdHOL[];
}
-
- if(ModUsrRecSRHDDSG) {
- if(fsemVERBOSITY>4) {
- cout << tab5 << "(ModUsrRecSRHDDSG)" << endl;
- }
- ModDDSGRecVolSRHConcDep();
- ShowMinMax(tab5 + " GloVarSemiGenRecSRH(DDSG)", GloVarSemiGenRecSRH[], ConvM2C^(3), "cm^(3) s^(-1) !!!");
- ShowMinMax(tab5 + " GloVarSemidGenRecSRHdELE(DDSG)", GloVarSemidGenRecSRHdELE[], ConvM2C^(3) , "cm^(6) s^(-1) !!!");
- ShowMinMax(tab5 + " GloVarSemidGenRecSRHdHOL(DDSG)", GloVarSemidGenRecSRHdHOL[], ConvM2C^(3) , "cm^(6) s^(-1) !!!");
- GloVarSemiGenRecTOT[] += GloVarSemiGenRecSRH[];
- GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecSRHdELE[];
- GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecSRHdHOL[];
- }
if(ModUsrRecDirect) {
if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecDirect)" << endl;}
ModRecVolDirect();
@@ -533,10 +485,7 @@
GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecLineardELE;
GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecLineardHOL;
}
-
- ShowMinMax(tab5 + " GloVarSemiGenRecTOT", GloVarSemiGenRecTOT[], ConvM2C^(-3), "cm^(-3) s^(-1)");
-
-
+
/* Gen/Rec as a Inverse Recombination Lifetime (uses in the mass matrix) */
if(ModUsrRecLinearMass) {
if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecLinearMass)" << endl;}
@@ -545,31 +494,98 @@
GloMeshFieldInterpol(ParMatxyzITAU);
GloVarSemiRECITAU[] = ParMatxyzITAU[];
ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
+ }
+
+ /***************************************************************
+ * HARMONIC volume recombination rates (m^-3 s^-1)
+ ***************************************************************/
+
+ if(ModUsrRecAugerSteadyPerH0) {
+ if(fsemVERBOSITY>4) {
+ cout << tab5 << "(ModUsrRecAugerSteadyPerH0)" << endl;
+ }
+ ModRecVolAugSteadyPerH0();
+ ShowMinMax(tab5 + " GloVarSemiGenRecAuger", GloVarSemiGenRecAuger[], ConvM2C^(-3), "cm^(-3) s^(-1)");
+ ShowMinMax(tab5 + " GloVarSemidGenRecAugerdELE", GloVarSemidGenRecAugerdELE[], 1, "s^(-1)");
+ ShowMinMax(tab5 + " GloVarSemidGenRecAugerdHOL", GloVarSemidGenRecAugerdHOL[], 1, "s^(-1)");
+ GloVarSemiGenRecTOT[] += GloVarSemiGenRecAuger[];
+ GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecAugerdELE[];
+ GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecAugerdHOL[];
+ }
+
+ if(ModUsrRecSRHSteadyPerH0) {
+ if(fsemVERBOSITY>4) {
+ cout << tab5 << "(ModUsrRecSRHSteadyPerH0)" << endl;
+ }
+ ModRecVolSRHSteadyPerH0();
+ ShowMinMax(tab5 + " GloVarSemiGenRecSRH", GloVarSemiGenRecSRH[], ConvM2C^(-3), "cm^(-3) s^(-1)");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSRHdELE", GloVarSemidGenRecSRHdELE[], 1, "s^(-1)");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSRHdHOL", GloVarSemidGenRecSRHdHOL[], 1, "s^(-1)");
+ GloVarSemiGenRecTOT[] += GloVarSemiGenRecSRH[];
+ GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecSRHdELE[];
+ GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecSRHdHOL[];
}
-
- if(ModUsrRecAugerSteadyPerH1) {
- if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecAugerSteadyPerH1)" << endl;}
- ModRecVolAugSteadyPerTAUH1();
- ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
- }
- if(ModUsrRecAugerSteadyPerH2) {
- if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecAugerSteadyPerH2)" << endl;}
- ModRecVolAugSteadyPerTAUH2();
- ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
- }
- if(ModUsrRecAugerSteadyPerH3) {
- if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecAugerSteadyPerH3)" << endl;}
- ModRecVolAugSteadyPerH3();
- ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
+ if(ModUsrRecAugerSteadyPerH1) {
+ if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecAugerSteadyPerH1)" << endl;}
+ ModRecVolAugSteadyPerTAUH1();
+ ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
+ }
+
+ if(ModUsrRecAugerSteadyPerH2) {
+ if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecAugerSteadyPerH2)" << endl;}
+ ModRecVolAugSteadyPerTAUH2();
+ ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
+ }
+ if(ModUsrRecAugerSteadyPerH3) {
+ if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecAugerSteadyPerH3)" << endl;}
+ ModRecVolAugSteadyPerH3();
+ ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
}
- if(ModUsrRecSRHSteadyPerH1) {
+ if(ModUsrRecSRHSteadyPerH1) {
if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecSRHSteadyPerH1)" << endl;}
ModRecVolSRHSteadyPerH1();
ShowMinMax(tab5 + " GloVarSemiRECITAU", GloVarSemiRECITAU[], 1, "s-1");
}
-
- return 0.0;
+
+
+ /*****************************************************
+ * DDSG "coefficients". BE CAREFULL, the names used here are
+ * confusing. Actually those are NOT recombination rates
+ * That is why the PHYSICAL recombination rates have to be computed explicitely
+ * after a DDSG calculation
+ *****************************************************/
+ if(ModUsrRecAugerDDSG) {
+ if(fsemVERBOSITY>4) {
+ cout << tab5 << "(ModUsrRecAugerDDSG)" << endl;
+ }
+ ModDDSGRecVolAug();
+
+ ShowMinMax(tab5 + " GloVarSemiGenRecAuger(DDSG)", GloVarSemiGenRecAuger[], ConvM2C^(3), "cm^(3) s^(-1)");
+ ShowMinMax(tab5 + " GloVarSemidGenRecAugerdELE(DDSG)", GloVarSemidGenRecAugerdELE[], ConvM2C^(3), "cm^(3) s^(-1)");
+ ShowMinMax(tab5 + " GloVarSemidGenRecAugerdHOL(DDSG)", GloVarSemidGenRecAugerdHOL[], ConvM2C^(3) , "cm^(3) s^(-1)");
+ GloVarSemiGenRecTOT[] += GloVarSemiGenRecAuger[];
+ GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecAugerdELE[];
+ GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecAugerdHOL[];
+ }
+
+ if(ModUsrRecSRHDDSG) {
+ if(fsemVERBOSITY>4) {
+ cout << tab5 << "(ModUsrRecSRHDDSG)" << endl;
+ }
+ ModDDSGRecVolSRHConcDep();
+ ShowMinMax(tab5 + " GloVarSemiGenRecSRH(DDSG)", GloVarSemiGenRecSRH[], ConvM2C^(3), "cm^(3) s^(-1) !!!");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSRHdELE(DDSG)", GloVarSemidGenRecSRHdELE[], ConvM2C^(3) , "cm^(6) s^(-1) !!!");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSRHdHOL(DDSG)", GloVarSemidGenRecSRHdHOL[], ConvM2C^(3) , "cm^(6) s^(-1) !!!");
+ GloVarSemiGenRecTOT[] += GloVarSemiGenRecSRH[];
+ GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecSRHdELE[];
+ GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecSRHdHOL[];
+ }
+
+
+ ShowMinMax(tab5 + " GloVarSemiGenRecTOT", GloVarSemiGenRecTOT[], ConvM2C^(-3), "cm^(-3) s^(-1)");
+
+ return 0.0;
}
func real ComputeRecSurf() {
@@ -585,14 +601,38 @@
GloMeshFieldReset(GloVarSemiGenRecSurfTOT);
GloVarSemiGenRecSurfTOT[]=0;
- if(ModUsrRecSurfVelCST) {
- if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecSurfVelCST)" << endl;}
- GloVarSemiSURFRECVEL = ParMatxyzSURFRECVEL; // user specificed rec. velocity
- GloVarSemiGenRecSurfTOT = GloVarSemiSURFRECVEL * GloVarSemiEXC; // m^-2 s^-1
- ShowMinMax(tab5 + " GloVarSemiSURFRECVEL", GloVarSemiSURFRECVEL[], ConvM2C, "cm s-1");
- ShowMinMax(tab5 + " GloVarSemiGenRecSurfTOT", GloVarSemiGenRecSurfTOT[], ConvM2C^(-2), "cm-2 s-1");
+ /***************************************************
+ * PHYSICAL surface recombination rate (m^-2 s^-1)
+ ***************************************************/
+ if(ModUsrRecSurfSRH) {
+ if(fsemVERBOSITY>4) {
+ cout << tab5 << "(ModUsrRecSurfSRH)" << endl;
+ }
+ ModRecSurfSRHConcDep();
+
+ ShowMinMax(tab5 + " GloVarSemiGenRecSurfSRH", GloVarSemiGenRecSurfSRH[], ConvM2C^(-2), "cm^(-2) s^(-1)");
+ //ShowMinMax(tab5 + " GloVarSemidGenRecSurfSRHdELE", GloVarSemidGenRecSurfSRHdELE[], 1, "s^(-1)");
+ //ShowMinMax(tab5 + " GloVarSemidGenRecSurfSRHdHOL", GloVarSemidGenRecSurfSRHdHOL[], 1, "s^(-1)");
+ GloVarSemiGenRecSurfTOT[] += GloVarSemiGenRecSurfSRH[];
+ //GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecSRHdELE[];
+ //oVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecSRHdHOL[];
+ }
+
+ if(ModUsrRecSurfVelCST) { // used for AMBIPOLAR equation
+ if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecSurfVelCST)" << endl;}
+ GloVarSemiSURFRECVEL = ParMatxyzSURFRECVEL; // user specificed rec. velocity
+ GloVarSemiGenRecSurfTOT = GloVarSemiSURFRECVEL * GloVarSemiEXC; // m^-2 s^-1 (not used in the calculations but used for output
+ ShowMinMax(tab5 + " GloVarSemiSURFRECVEL", GloVarSemiSURFRECVEL[], ConvM2C, "cm s-1");
+ ShowMinMax(tab5 + " GloVarSemiGenRecSurfTOT", GloVarSemiGenRecSurfTOT[], ConvM2C^(-2), "cm-2 s-1");
}
+ /*****************************************************
+ * DDSG "coefficients". BE CAREFULL, the names used here are
+ * confusing. Actually those are NOT recombination rates
+ * That is why the PHYSICAL recombination rates have to be computed explicitely
+ * after a DDSG calculation
+ *****************************************************/
+
if(ModUsrRecSurfSRHDDSG) {
if(fsemVERBOSITY>4) {
cout << tab5 << "(ModUsrRecSurfSRHDDSG)" << endl;
Modified: fsem/models/fsem_Mod_FlagsSemi.edp
===================================================================
--- fsem/models/fsem_Mod_FlagsSemi.edp 2007-03-23 09:31:46 UTC (rev 125)
+++ fsem/models/fsem_Mod_FlagsSemi.edp 2007-03-23 13:50:59 UTC (rev 126)
@@ -202,10 +202,15 @@
& 0|1
*/
+int ModUsrRecSurfSRH=0;
+/*TeXDoc
+ SRH surface gen/rec (use that for DDSG)
+ & 0|1
+*/
int ModUsrRecSurfVelCST = 0;
/*TeXDoc
- User provided constant surface recombination velocity
+ User provided constant surface recombination velocity (use that for AMBI)
& 0|1
*/
Modified: fsem/models/modules/Semi/fsem_ModRecSRH.cpp
===================================================================
--- fsem/models/modules/Semi/fsem_ModRecSRH.cpp 2007-03-23 09:31:46 UTC (rev 125)
+++ fsem/models/modules/Semi/fsem_ModRecSRH.cpp 2007-03-23 13:50:59 UTC (rev 126)
@@ -67,7 +67,7 @@
// add net SRH gen/recombination rate U
(*(U[0]+i)) = ( ((*(P[0]+i))*(*(N[0]+i))
- - (*(Nie[0]+i)) * (*(Nie[0]+i)) ) / RecVolSRHDen ); /* [s-1] */
+ - (*(Nie[0]+i)) * (*(Nie[0]+i)) ) / RecVolSRHDen ); /* [m-3 s-1] */
// Jacobian with respect to excess carriers dU/dXC
*(D_U_DN[0]+i) = ( (*(P[0]+i)) / RecVolSRHDen
@@ -82,6 +82,8 @@
}
+
+
// SRH with Doping concentration dependent lifetime
Complex CppModRecVolSRHConcDep(KN<double> *const & U, // OUTPUTS:
KN<double> *const & D_U_DN, KN<double> *const & D_U_DP,
@@ -130,7 +132,7 @@
// SRH recombination rate U
(*(U[0]+i)) = ( ((*(P[0]+i)) * (*(N[0]+i))
- - (*(Nie[0]+i)) * (*(Nie[0]+i)) ) / RecVolSRHDen ); /* [s-1] */
+ - (*(Nie[0]+i)) * (*(Nie[0]+i)) ) / RecVolSRHDen ); /* [m-3 s-1] */
*(D_U_DN[0]+i) = ( (*(P[0]+i)) / RecVolSRHDen
- taup * ( (*(N[0]+i)) * (*(P[0]+i))
@@ -145,6 +147,67 @@
}
+// Surface SRH with Doping concentration dependent lifetime
+Complex CppModRecSurfSRHConcDep(KN<double> *const & U, // OUTPUTS:
+ KN<double> *const & D_U_DN, KN<double> *const & D_U_DP,
+ KN<double> *const & N, KN<double> *const & P, // INPUTS: total electrons and holes
+ KN<double> *const & Nie, // intrinsic carrier concentration
+ KN<double> *const & Ntot, // total doping concentration
+ KN<double> *const & VN0, KN<double> *const & VP0, // SRH surface recombination velocities m/s
+ KN<double> *const & NSRH, KN<double> *const & PSRH)
+{
+
+ // Check if all input vector have the same dimensions:
+ if((U->N() != D_U_DN->N()) || (D_U_DN->N() != D_U_DP->N()) || (D_U_DP->N() != N->N()) || (N->N() != P->N()) || (P->N() != Nie->N())
+ || (Nie->N() != Ntot->N()) || (Ntot->N() != VN0->N()) || (VN0->N() != VP0->N())
+ || (VP0->N() != NSRH->N()) || (NSRH->N() != PSRH->N()) ) {
+ cout << "*** ERROR *** function CppModRecSurfSRHConcDep." << endl;
+ cout << "U->N(): " << U->N() << endl;
+ cout << "D_U_DN->N(): " << D_U_DN->N() << endl;
+ cout << "D_U_DP->N(): " << D_U_DP->N() << endl;
+ cout << "N->N(): " << N->N() << endl;
+ cout << "P->N(): " << P->N() << endl;
+ cout << "Nie->N(): " << Nie->N() << endl;
+ cout << "Ntot->N(): " << Ntot->N() << endl;
+ cout << "VN0->N(): " << VN0->N() << endl;
+ cout << "VP0->N(): " << VP0->N() << endl;
+ cout << "NSRH->N(): " << NSRH->N() << endl;
+ cout << "PSRH->N(): " << PSRH->N() << endl;
+ cout << "*** Error ***: cppModRecSurfSRHConcDep: input vectors do no have the same dimension. Aborting." << endl;
+ exit(0);
+ }
+
+ double vn;
+ double vp;
+ double RecVolSRHDen;
+
+ // Compute the net surface gen/recombination rate U [m^-2 s^-1]:
+ int nn = N->N(); // get the number of nodes
+ for(int i=0; i<nn; i++) { // loop on the nodes
+
+ vn = (*(VN0[0]+i)); // the doping concentration dependence...
+ vp = (*(VP0[0]+i)); // ... should be added in the future
+
+ RecVolSRHDen = ( (*(P[0]+i)) + (*(Nie[0]+i))) / vn
+ + ((*(N[0]+i)) + (*(Nie[0]+i))) / vp; // denominator of SRH expression (m^-4 s)
+
+ // SRH recombination rate U
+ (*(U[0]+i)) = ( ((*(P[0]+i)) * (*(N[0]+i))
+ - (*(Nie[0]+i)) * (*(Nie[0]+i)) ) / RecVolSRHDen ); /* [m-2 s-1] */
+
+ *(D_U_DN[0]+i) = ( (*(P[0]+i)) / RecVolSRHDen
+ - ( (*(N[0]+i)) * (*(P[0]+i))
+ - (*(Nie[0]+i))*(*(Nie[0]+i))) /vp / (RecVolSRHDen*RecVolSRHDen) ); /* [m s-1] */
+
+ *(D_U_DP[0]+i) = ( (*(N[0]+i)) / RecVolSRHDen
+ - ( (*(N[0]+i)) * (*(P[0]+i))
+ - (*(Nie[0]+i))*(*(Nie[0]+i))) /vn / (RecVolSRHDen*RecVolSRHDen) );
+
+ }
+
+}
+
+
Complex CppModRecVolSRHConcDepH0(KN<double> *const & R0,
KN<double>*const & D_R0_DN, KN<double>*const & D_R0_DP, // OUTPUTS:
KN<double> *const & N, KN<double> *const & P,
@@ -325,6 +388,7 @@
Init::Init(){
Global.Add("CppModRecVolSRH","(",new OneOperator8_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModRecVolSRH));
Global.Add("CppModRecVolSRHConcDep","(",new OneOperator11_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModRecVolSRHConcDep));
+ Global.Add("CppModRecSurfSRHConcDep","(",new OneOperator11_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModRecSurfSRHConcDep));
Global.Add("CppModGenVolSRHConcDepH2","(",new OneOperator10_<Complex, KN<Complex>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModGenVolSRHConcDepH2));
Global.Add("CppModRecVolSRHConcDepH0","(",new OneOperator12_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModRecVolSRHConcDepH0));
Global.Add("CppModRecVolSRHConcDepTAUH1","(",new OneOperator10_<Complex, KN<double>*,KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModRecVolSRHConcDepTAUH1));
Modified: fsem/models/modules/Semi/fsem_ModRecSRH.edp
===================================================================
--- fsem/models/modules/Semi/fsem_ModRecSRH.edp 2007-03-23 09:31:46 UTC (rev 125)
+++ fsem/models/modules/Semi/fsem_ModRecSRH.edp 2007-03-23 13:50:59 UTC (rev 126)
@@ -45,6 +45,27 @@
return 0.0;
} //
+func real ModRecSurfSRHConcDep() {
+ GloMeshFieldReset(GloVarSemiGenRecSurfSRH);
+ GloMeshFieldReset(GloVarSemidGenRecSurfSRHdELE);
+ GloMeshFieldReset(GloVarSemidGenRecSurfSRHdHOL);
+
+ GloMeshFieldInterpol(GloVarSemiELE);
+ GloMeshFieldInterpol(GloVarSemiHOL);
+ GloMeshFieldInterpol(GloVarSemiNIE);
+ GloMeshFieldInterpol(GloVarSemiDOPTOT);
+ GloMeshFieldInterpol(ParMatxyzVN0);
+ GloMeshFieldInterpol(ParMatxyzVP0);
+ GloMeshFieldInterpol(ParMatxyzNSRH);
+ GloMeshFieldInterpol(ParMatxyzPSRH);
+
+ CppModRecSurfSRHConcDep(GloVarSemiGenRecSurfSRH[], GloVarSemidGenRecSurfSRHdELE[], GloVarSemidGenRecSurfSRHdHOL[],
+ GloVarSemiELE[], GloVarSemiHOL[], GloVarSemiNIE[], GloVarSemiDOPTOT[],
+ ParMatxyzVN0[], ParMatxyzVP0[], ParMatxyzNSRH[], ParMatxyzPSRH[]);
+ return 0.0;
+} //
+
+
func real ModRecVolSRHSteadyPerH0() {
GloMeshFieldInterpol(GloVarSemiGenRecSRH);
GloMeshFieldReset(GloVarSemidGenRecSRHdELE);
@@ -107,5 +128,5 @@
*******************************************************/
// Surface SRH
-macro ModRecSurfSRH(VarXC, EGap) /* ModRecSurf( */( (ParMatSiSREC) * (VarXC) )/* )ModRecSurf */ // [s-1 m-2]
-macro ModRecSurfSRHJACXC(VarXC, EGap) /* ModRecSurfJac( */( ParMatSiSREC )/* )ModRecSurfJac */ // [m s-1]
+//macro ModRecSurfSRH(VarXC, EGap) /* ModRecSurf( */( (ParMatSiSREC) * (VarXC) )/* )ModRecSurf */ // [s-1 m-2]
+//macro ModRecSurfSRHJACXC(VarXC, EGap) /* ModRecSurfJac( */( ParMatSiSREC )/* )ModRecSurfJac */ // [m s-1]
Modified: fsem/solve/fsem_SolveMainDDSG.edp
===================================================================
--- fsem/solve/fsem_SolveMainDDSG.edp 2007-03-23 09:31:46 UTC (rev 125)
+++ fsem/solve/fsem_SolveMainDDSG.edp 2007-03-23 13:50:59 UTC (rev 126)
@@ -118,6 +118,9 @@
ModUsrRecSRH =false;
ModUsrRecSRHDDSG = ModUsrRecSRHSAVE;
+ bool ModUsrRecSurfSRHSAVE=ModUsrRecSurfSRH;
+ ModUsrRecSurfSRH =false;
+ ModUsrRecSurfSRHDDSG = ModUsrRecSurfSRHSAVE;
GloMeshP1setndof();
GloMeshFieldInterpol(GloVarSemiDDSGRhoN); /* is used as initial guess for coefficient calculation */
@@ -176,6 +179,7 @@
ModUsrNP = ModUsrNPSAVE;
ModUsrRecAuger=ModUsrRecAugerSAVE;
ModUsrRecSRH=ModUsrRecSRHSAVE;
+ ModUsrRecSurfSRH=ModUsrRecSurfSRHSAVE;
ModUsrRecAugerDDSG = false;
ModUsrRecSRHDDSG = false;
@@ -204,7 +208,9 @@
ModUsrRecSRH =false;
ModUsrRecSRHDDSG = ModUsrRecSRHSAVE;
-
+ bool ModUsrRecSurfSRHSAVE=ModUsrRecSurfSRH;
+ ModUsrRecSurfSRH =false;
+ ModUsrRecSurfSRHDDSG = ModUsrRecSurfSRHSAVE;
if(fsemVERBOSITY>1) {
cout << tab1 << "********************************************************************************" << endl;
@@ -277,6 +283,7 @@
ModUsrRecAuger=ModUsrRecAugerSAVE;
ModUsrRecSRH=ModUsrRecSRHSAVE;
+ ModUsrRecSurfSRH=ModUsrRecSurfSRHSAVE;
ModUsrRecAugerDDSG = false;
ModUsrRecSRHDDSG = false;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-23 09:31:47
|
Revision: 125
http://fsem.svn.sourceforge.net/fsem/?rev=125&view=rev
Author: fabiandortu
Date: 2007-03-23 02:31:46 -0700 (Fri, 23 Mar 2007)
Log Message:
-----------
Changed the surface recombination velocity expression for ambipolar equation.
Actually rev 107 was correct and a bug was introduced in rev 119.
Revision Links:
--------------
http://fsem.svn.sourceforge.net/fsem/?rev=107&view=rev
http://fsem.svn.sourceforge.net/fsem/?rev=119&view=rev
Modified Paths:
--------------
fsem/equations/fsem_Eq_DiffCarr.edp
Modified: fsem/equations/fsem_Eq_DiffCarr.edp
===================================================================
--- fsem/equations/fsem_Eq_DiffCarr.edp 2007-03-22 17:08:33 UTC (rev 124)
+++ fsem/equations/fsem_Eq_DiffCarr.edp 2007-03-23 09:31:46 UTC (rev 125)
@@ -7,7 +7,7 @@
macro CoefCarrAdimcJacx(dCOEFcdU) /* CoefCarrAdimcJacx( */ ( (dCOEFcdU) / GloScaDiffCarrDxJac ) /* CoefCarrAdimcJacx( */ // [adim]
macro CoefCarrAdimcJacy(dCOEFcdU) /* CoefCarrAdimcJacy( */( (dCOEFcdU) / GloScaDiffCarrDyJac ) /* CoefCarrAdimcJacy( */ // [adim]
macro CoefCarrAdima(COEFa) /* CoefCarrAdima( */( ( COEFa ) / GloScaDiffCarrR3 * GloScaDiffCarrU )/* )CoefCarrAdima */ // Mass matrix coef [adim]
-macro CoefCarrAdimv(COEFv) /* CoefCarrAdimv( */( ( COEFv ) * GloScaX )/* )CoefCarrAdimv */ // Scaling of v/D (SRV / Diffusivity) [adim]
+macro CoefCarrAdimv(COEFv) /* CoefCarrAdimv( */( ( COEFv ) / GloScaDiffCarrR2 * GloScaDiffCarrU )/* )CoefCarrAdimv */ // Surf velocity coef [adim]
macro CoefCarrAdimF(COEFf) /* CoefCarrAdimF( */( ( COEFf ) / GloScaDiffCarrR3 )/* )CoefCarrAdimF */ //
macro CoefCarrAdimFJac(dCOEFfdU) /* CoefCarrAdimFJac( */( ( dCOEFfdU ) / GloScaDiffCarrR3Jac )/* )CoefCarrAdimFJac */ //
macro CoefCarrAdimXC(U) /* CoefCarrAdimXC( */( (U) / GloScaDiffCarrU )/* )CoefCarrAdimXC */ //
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-22 17:08:47
|
Revision: 124
http://fsem.svn.sourceforge.net/fsem/?rev=124&view=rev
Author: fabiandortu
Date: 2007-03-22 10:08:33 -0700 (Thu, 22 Mar 2007)
Log Message:
-----------
Surface recombination velocity is implemented for DDSG.
Seems to work correctly.
Use it as follow:
ModUsrRecSurfSRHDDSG = 1;
ParMatxyzVN0 = (y*GloScaY>-0.1*ConvN2M)?SurfRecVel:0; // m/s Ele. recombination velocity at top surface
ParMatxyzVP0 = (y*GloScaY>-0.1*ConvN2M)?SurfRecVel:0; // m/s Hol. recombination velocity at top surface
Modified Paths:
--------------
fsem/assemble/fsem_PreAssemble_DDSG.edp
fsem/equations/fsem_Eq_DDSG.edp
fsem/equations/fsem_Eq_DDSG_Scaling.edp
fsem/models/fsem_Mod_ComputeSemi.edp
fsem/models/fsem_Mod_FlagsSemi.edp
fsem/models/fsem_Mod_MatParSemiDefault.edp
fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp
Modified: fsem/assemble/fsem_PreAssemble_DDSG.edp
===================================================================
--- fsem/assemble/fsem_PreAssemble_DDSG.edp 2007-03-22 15:20:02 UTC (rev 123)
+++ fsem/assemble/fsem_PreAssemble_DDSG.edp 2007-03-22 17:08:33 UTC (rev 124)
@@ -13,6 +13,14 @@
*
*****************************************************************************/
+/*
+ * Note for cleaning the code in the future:
+ * This assembling function is rather complicated because:
+ * - 2 formalisms (choice of potential, bandgap and affinity constant): only 2nd formalism is used today
+ * - 2 resolutions (linearize carrier equation or nonlinear carrier equation): only linearized eq is used today
+ * - steady periodic: I think it shoud be moved in a specific assembly file.
+ */
+
int GloFlagHelperGloEqTypePrevious = 9999999; // equation that has been solved at the previous assembling
// This helper variable is needed to know when to calculate the electric field.
// There is no need to compute it for each equetion (potential, electron and hole)
@@ -143,7 +151,7 @@
ComputeNP();
- if (ModUsrEleNonlinear) {
+ if (ModUsrEleNonlinear) { // OBSOLETE (used in the past: when the electron equation is solved using Newton's method, there is no linear term in the equation).
ModUsrRecAugerDDSGSAVE = ModUsrRecAugerDDSG;
ModUsrRecSRHDDSGSAVE = ModUsrRecSRHDDSG;
ModUsrRecSRHDDSG = 0;
@@ -159,6 +167,7 @@
ModUsrRecSRHDDSG = ModUsrRecSRHDDSGSAVE;
} else {
ComputeRecVol();
+ ComputeRecSurf();
}
ComputeAbsCoef();
@@ -207,7 +216,8 @@
if (ModUsrSecFormalism)
{
ModDDSGITAURecEle2(); // defines GloVarDiffCOEFf and GloVarDiffCOEFa
-
+ ModDDSGITAURecSurfEle2(); // defines GloVarDiffCOEFfs and GloVarDiffCOEFas
+
// cout << "<<<<<<<<<<<<<<<<<<<<AUGER AND SP " << ModUsrDDSGSteadyPeriodic << " and " << ModUsrRecAuger <<endl;
if(ModUsrDDSGSteadyPeriodic)
@@ -223,7 +233,8 @@
}
//ModDDSGAugerAddGamman2H0v2(); //adds coeff a an Auger contribution due to first harmonic (not used because of instability)
- ModDDSGAugerAddGamman2H0v2(); //adds coeff f an Auger contribution due to first, second and third harmonic (it is well f and not a because instalbility was noticed when including this part in a )
+ ModDDSGAugerAddGamman2H0v2(); //adds coeff f an Auger contribution due to first,
+ //second and third harmonic (it is well f and not a because instalbility was noticed when including this part in a )
ModDDSGRecVolAugEleH0(); //adds coeff f an Auger contribution due to first harmonic
@@ -262,11 +273,12 @@
}
- }
- }
+ } // endif ModUsrDDSGSteadyPeriodic
+ } // endif ModUsrSecFormalism
else
{
ModDDSGITAURecEle(); // defines GloVarDiffCOEFf and GloVarDiffCOEFa
+ // surface recombinations are not implemented for first formalism.
}
}
@@ -276,6 +288,8 @@
}
ShowMinMax(tab5 + "COEFFf", GloVarDiffCOEFf[], 1, "tbd");
ShowMinMax(tab5 + "COEFFa", GloVarDiffCOEFa[], 1, "tbd");
+ ShowMinMax(tab5 + "COEFFfs", GloVarDiffCOEFf[], 1, "tbd");
+ ShowMinMax(tab5 + "COEFFas", GloVarDiffCOEFa[], 1, "tbd");
if(fsemVERBOSITY>2){
cout << endl;
@@ -326,7 +340,7 @@
ComputeNP();
- if (ModUsrHolNonlinear) {
+ if (ModUsrHolNonlinear) { // OBSOLETE (used in the past: when the hole equation is solved using Newton's method, there is no linear term in the equation).
ModUsrRecAugerDDSGSAVE = ModUsrRecAugerDDSG;
ModUsrRecSRHDDSGSAVE = ModUsrRecSRHDDSG;
ModUsrRecSRHDDSG = 0;
@@ -342,6 +356,7 @@
ModUsrRecSRHDDSG = ModUsrRecSRHDDSGSAVE;
} else {
ComputeRecVol();
+ ComputeRecSurf();
}
ComputeAbsCoef();
ComputeGenVol();
@@ -384,6 +399,7 @@
if (ModUsrSecFormalism)
{
ModDDSGITAURecHol2(); // defines GloVarDiffCOEFf and GloVarDiffCOEFa
+ ModDDSGITAURecSurfHol2(); // defines GloVarDiffCOEFfs and GloVarDiffCOEFas
if(ModUsrDDSGSteadyPeriodic)
@@ -419,7 +435,8 @@
}
// ModDDSGSRHAddGammap2H0(); //adds coeff a an Auger contribution due to first harmonic (not used because instability)
- ModDDSGSRHAddGammap2H0v2(); //adds coeff f an SRH contribution due to first, second and third harmonics (it is well f and not a because instalbility was noticed when including this part in a)
+ ModDDSGSRHAddGammap2H0v2(); //adds coeff f an SRH contribution due to first, second
+ // and third harmonics (it is well f and not a because instalbility was noticed when including this part in a)
ModDDSGRecVolSRHHolH0(); //adds coeff f an SRH contribution due to first, second and third harmonics
if(fsemVERBOSITY>2){
ShowMinMax(tab5 + "COEFFf", GloVarDiffCOEFf[], 1, "tbd");
@@ -428,12 +445,13 @@
}
- }
- }
+ } // endif on ModUsrDDSGSteadyPeriodic
+ } //endif on ModUsrSecFormalism
else
{
ModDDSGITAURecHol(); // defines GloVarDiffCOEFf and GloVarDiffCOEFa
+ // surface recombinations not implemenented in first formalism
}
}
@@ -445,6 +463,8 @@
ShowMinMax(tab5 + "COEFFf", GloVarDiffCOEFf[], 1, "tbd");
ShowMinMax(tab5 + "COEFFa", GloVarDiffCOEFa[], 1, "tbd");
+ ShowMinMax(tab5 + "COEFFfs", GloVarDiffCOEFfs[], 1, "tbd");
+ ShowMinMax(tab5 + "COEFFas", GloVarDiffCOEFas[], 1, "tbd");
if(fsemVERBOSITY>2){
Modified: fsem/equations/fsem_Eq_DDSG.edp
===================================================================
--- fsem/equations/fsem_Eq_DDSG.edp 2007-03-22 15:20:02 UTC (rev 123)
+++ fsem/equations/fsem_Eq_DDSG.edp 2007-03-22 17:08:33 UTC (rev 124)
@@ -34,9 +34,11 @@
macro CoefDDSGCarrAdimcx(COEFc) ( ( COEFc ) / GloScaDDSGCarrCx ) // Stifness matrix coef (Effective Diffusivity)
macro CoefDDSGCarrAdimcy(COEFc) ( ( COEFc ) / GloScaDDSGCarrCy ) // Stifness matrix coef (Effective Diffusivity)
-macro CoefDDSGCarrAdima(COEFa) ( ( COEFa ) / GloScaDDSGCarrA ) // Mass matrix coef (Linear Recomb)
+macro CoefDDSGCarrAdima(COEFa) ( ( COEFa ) / GloScaDDSGCarrA3 ) // Mass matrix coef (Volume Linear Recomb)
+macro CoefDDSGCarrAdimas(COEFas) ( ( COEFas ) / GloScaDDSGCarrA2 ) // Mass matrix coef (Surface Linear Recomb)
-macro CoefDDSGCarrAdimF(COEFf) ( ( COEFf ) / GloScaDDSGCarrR3 ) // RHS recombination
+macro CoefDDSGCarrAdimF(COEFf) ( ( COEFf ) / GloScaDDSGCarrR3 ) // Volume RHS recombination
+macro CoefDDSGCarrAdimFs(COEFfs) ( ( COEFfs ) / GloScaDDSGCarrR2 ) // Surface RHS recombination
/***************************************************************************
@@ -61,14 +63,16 @@
func real AssembleDDSGCarrMatKcMa()
{
- // The equation for the electron and hole diffusion in a Helmoltz equation (KcMa)
+ // The equation for the electron and hole diffusion is a Helmoltz equation (KcMa)
+ // when the equation is linearized.
if(fsemVERBOSITY>3) {cout << tab4 << "AssembleDDSGCarrMatKcMa ..." << endl;}
varf CarrKcMa(uh, vh) =
int2d(GloMesh)( ( + CoefDDSGCarrAdimcx(GloVarDiffCOEFc) * ( dx(uh)*dx(vh) )
+ CoefDDSGCarrAdimcy(GloVarDiffCOEFc) * ( dy(uh)*dy(vh) )/*K(c)*/
+ CoefDDSGCarrAdima(GloVarDiffCOEFa) * uh * vh ) /*M(a)*/
- * UsrJac );
+ * UsrJac )
+ + int1d(GloMesh)( CoefDDSGCarrAdimas(GloVarDiffCOEFas) * uh * vh * UsrJac);
//FixedCarrContact;
GloMatL = CarrKcMa(GloVhP1, GloVhP1);
@@ -77,7 +81,8 @@
func real AssembleDDSGCarrMatKc()
{
- // The equation for the electron and hole diffusion in a Poisson equation (Kc)
+ // The equation for the electron and hole diffusion is a Poisson equation (Kc)
+ // when the equation is solved with Newton's method.
if(fsemVERBOSITY>3) {cout << tab4 << "AssembleDDSGCarrMatKc ..." << endl;}
varf CarrKc(uh, vh) =
@@ -113,7 +118,9 @@
if(fsemVERBOSITY>3) {cout << tab4 << "AssembleDDSGCarrVecFf ..." << endl;}
varf CarrFf(uh, vh) = int2d(GloMesh)( vh * CoefDDSGCarrAdimF(GloVarDiffCOEFf)
- * UsrJac );
+ * UsrJac )
+ +int1d(GloMesh)( vh * CoefDDSGCarrAdimFs(GloVarDiffCOEFfs)
+ * UsrJac);
//FixedCarrContact;
GloMeshFieldReset(GloVecR);
@@ -143,6 +150,8 @@
func real AssembleDDSGCarrMatJacKcMdf()
{
+ // Used when the carrier equations are solved with Newton's method
+ // but NOT used when the carrier equations were linearized.
if(fsemVERBOSITY>3) {cout << tab4 << "AssembleDDSGCarrMatJacKcMdf ..." << endl;}
varf CarrJacKcMdf(uh, vh) =
Modified: fsem/equations/fsem_Eq_DDSG_Scaling.edp
===================================================================
--- fsem/equations/fsem_Eq_DDSG_Scaling.edp 2007-03-22 15:20:02 UTC (rev 123)
+++ fsem/equations/fsem_Eq_DDSG_Scaling.edp 2007-03-22 17:08:33 UTC (rev 124)
@@ -13,11 +13,13 @@
// electron and hole diffusion equation
-real GloScaDDSGCarrN; // carrier conc. [m-3]
-real GloScaDDSGCarrCx; // diffusion coef [m2 s-1]
+real GloScaDDSGCarrN; // slotboom variable [adim]
+real GloScaDDSGCarrCx; // slotboom diffusion (or mobility) coef [m-1 s-1]
real GloScaDDSGCarrCy;
-real GloScaDDSGCarrA; // linear recombination [s-1]
+real GloScaDDSGCarrA3; // linear recombination in volume (=3d) [m-3 s-1]
+real GloScaDDSGCarrA2; // linear recombination in volume (=2d) [m-2 s-1]
real GloScaDDSGCarrR3; // gen/rec in volume (=3d) [m-3 s-1]
+real GloScaDDSGCarrR2; // gen/rec in volume (=2d) [m-2 s-1]
func int ComputeScalingDDSG(real C0, real Mu0, real Vth0) {
@@ -35,8 +37,10 @@
GloScaDDSGCarrN = 1 ;
GloScaDDSGCarrCx =Mu0 * Vth0 * C0 ;//
GloScaDDSGCarrCy =Mu0 * Vth0 * C0;//
- GloScaDDSGCarrA = Mu0 * Vth0 * C0 / (GloScaX * GloScaX);
+ GloScaDDSGCarrA3 = Mu0 * Vth0 * C0 / (GloScaX * GloScaX);
+ GloScaDDSGCarrA2 = Mu0 * Vth0 * C0 / (GloScaX);
GloScaDDSGCarrR3 = Mu0 * Vth0 * C0 / (GloScaX * GloScaX);
+ GloScaDDSGCarrR2 = Mu0 * Vth0 * C0 / (GloScaX);
cout << "GloScaDDSGPotV = " << GloScaDDSGPotV << endl;
cout << "GloScaDDSGPotCx = " << GloScaDDSGPotCx << endl;
@@ -47,8 +51,10 @@
cout << "GloScaDDSGCarrN = " << GloScaDDSGCarrN << endl;
cout << "GloScaDDSGCarrCx = " << GloScaDDSGCarrCx << endl;
cout << "GloScaDDSGCarrCy = " << GloScaDDSGCarrCy << endl;
- cout << "GloScaDDSGCarrA = " << GloScaDDSGCarrA << endl;
+ cout << "GloScaDDSGCarrA3 = " << GloScaDDSGCarrA3 << endl;
+ cout << "GloScaDDSGCarrA2 = " << GloScaDDSGCarrA2 << endl;
cout << "GloScaDDSGCarrR3 = " << GloScaDDSGCarrR3 << endl;
+ cout << "GloScaDDSGCarrR2 = " << GloScaDDSGCarrR2 << endl;
Modified: fsem/models/fsem_Mod_ComputeSemi.edp
===================================================================
--- fsem/models/fsem_Mod_ComputeSemi.edp 2007-03-22 15:20:02 UTC (rev 123)
+++ fsem/models/fsem_Mod_ComputeSemi.edp 2007-03-22 17:08:33 UTC (rev 124)
@@ -509,9 +509,9 @@
cout << tab5 << "(ModUsrRecSRHDDSG)" << endl;
}
ModDDSGRecVolSRHConcDep();
- ShowMinMax(tab5 + " GloVarSemiGenRecSRH(DDSG)", GloVarSemiGenRecSRH[], ConvM2C^(3), "cm^(3) s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecSRHdELE(DDSG)", GloVarSemidGenRecSRHdELE[], ConvM2C^(3) , "cm^(3) s^(-1)");
- ShowMinMax(tab5 + " GloVarSemidGenRecSRHdHOL(DDSG)", GloVarSemidGenRecSRHdHOL[], ConvM2C^(3) , "cm^(3) s^(-1)");
+ ShowMinMax(tab5 + " GloVarSemiGenRecSRH(DDSG)", GloVarSemiGenRecSRH[], ConvM2C^(3), "cm^(3) s^(-1) !!!");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSRHdELE(DDSG)", GloVarSemidGenRecSRHdELE[], ConvM2C^(3) , "cm^(6) s^(-1) !!!");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSRHdHOL(DDSG)", GloVarSemidGenRecSRHdHOL[], ConvM2C^(3) , "cm^(6) s^(-1) !!!");
GloVarSemiGenRecTOT[] += GloVarSemiGenRecSRH[];
GloVarSemidGenRecTOTdELE[] += GloVarSemidGenRecSRHdELE[];
GloVarSemidGenRecTOTdHOL[] += GloVarSemidGenRecSRHdHOL[];
@@ -582,6 +582,8 @@
GloMeshFieldReset(GloVarSemiSURFRECVEL);
GloVarSemiSURFRECVEL[]=0;
+ GloMeshFieldReset(GloVarSemiGenRecSurfTOT);
+ GloVarSemiGenRecSurfTOT[]=0;
if(ModUsrRecSurfVelCST) {
if(fsemVERBOSITY>4) {cout << tab5 << "(ModUsrRecSurfVelCST)" << endl;}
@@ -591,7 +593,19 @@
ShowMinMax(tab5 + " GloVarSemiGenRecSurfTOT", GloVarSemiGenRecSurfTOT[], ConvM2C^(-2), "cm-2 s-1");
}
- return 0.0;
+ if(ModUsrRecSurfSRHDDSG) {
+ if(fsemVERBOSITY>4) {
+ cout << tab5 << "(ModUsrRecSurfSRHDDSG)" << endl;
+ }
+ ModDDSGRecSurfSRHConcDep();
+ ShowMinMax(tab5 + " GloVarSemiGenRecSurfSRH(DDSG)", GloVarSemiGenRecSurfSRH[], ConvM2C^(3), "cm^(4) s^(-1) !!!");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSurfSRHdELE(DDSG)", GloVarSemidGenRecSurfSRHdELE[], ConvM2C^(3) , "cm^(7) s^(-1) !!!");
+ ShowMinMax(tab5 + " GloVarSemidGenRecSurfSRHdHOL(DDSG)", GloVarSemidGenRecSurfSRHdHOL[], ConvM2C^(3) , "cm^(7) s^(-1) !!!");
+ GloVarSemiGenRecSurfTOT[] += GloVarSemiGenRecSurfSRH[];
+ //GloVarSemidGenRecSurfTOTdELE[] += GloVarSemidGenRecSurfSRHdELE[];
+ //GloVarSemidGenRecSurfTOTdHOL[] += GloVarSemidGenRecSurfSRHdHOL[];
+ }
+ return 0.0;
}
Modified: fsem/models/fsem_Mod_FlagsSemi.edp
===================================================================
--- fsem/models/fsem_Mod_FlagsSemi.edp 2007-03-22 15:20:02 UTC (rev 123)
+++ fsem/models/fsem_Mod_FlagsSemi.edp 2007-03-22 17:08:33 UTC (rev 124)
@@ -181,6 +181,11 @@
SRH "gen/rec" for drift diffusion calculation
& 0|1
*/
+int ModUsrRecSurfSRHDDSG=0;
+/*TeXDoc
+ SRH surface "gen/rec" for drift diffusion calculation
+ & 0|1
+ */
int ModUsrRecSRHH1DDSG=0;
/*TeXDoc
SRH "gen/rec" for first harmonic of steady-periodic drift diffusion calculation
Modified: fsem/models/fsem_Mod_MatParSemiDefault.edp
===================================================================
--- fsem/models/fsem_Mod_MatParSemiDefault.edp 2007-03-22 15:20:02 UTC (rev 123)
+++ fsem/models/fsem_Mod_MatParSemiDefault.edp 2007-03-22 17:08:33 UTC (rev 124)
@@ -130,12 +130,12 @@
P. C. Dhanasekaran Solid-State Elec. 25(8) 719 (1982)
& [s]
*/
-real ParMatSiVN0 = 10;
+real ParMatSiVN0 = 0.0;
/*TeXDoc
Conc. dep. SRH rec. velocity for electrons
& [m/s]
*/
-real ParMatSiVP0 = 10;
+real ParMatSiVP0 = 0.0;
/*TexDoc
Conc. dep. SRH rec. velocity for holes
& [m/s]
@@ -153,7 +153,7 @@
P. C. Dhanasekaran Solid-State Elec. 25(8) 719 (1982)
& [m$^{-3}$]
*/
-real ParMatSiSREC = 1e2 * ConvC2M;
+real ParMatSiSREC = 0.0;
/*TeXDoc
Surface recombination velocity
& [m s$^{-1}$]
Modified: fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp
===================================================================
--- fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp 2007-03-22 15:20:02 UTC (rev 123)
+++ fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp 2007-03-22 17:08:33 UTC (rev 124)
@@ -64,10 +64,10 @@
GloMeshFieldInterpol(ParMatxyzNSRH);
GloMeshFieldInterpol(ParMatxyzPSRH);
- CppModDDSGRecVolSRHConcDep(GloVarSemiGenRecSurfSRH[], /* OUTPUTS */
- GloVarSemidGenRecSurfSRHdELE[], GloVarSemidGenRecSurfSRHdHOL[],
- GloVarSemiELE[], GloVarSemiHOL[], GloVarSemiNIE[], GloVarSemiDOPTOT[],
- ParMatxyzVN0[], ParMatxyzVP0[], ParMatxyzNSRH[], ParMatxyzPSRH[]); /* INPUTS */
+ CppModDDSGRecSurfSRHConcDep(GloVarSemiGenRecSurfSRH[], /* OUTPUTS */
+ GloVarSemidGenRecSurfSRHdELE[], GloVarSemidGenRecSurfSRHdHOL[],
+ GloVarSemiELE[], GloVarSemiHOL[], GloVarSemiNIE[], GloVarSemiDOPTOT[],
+ ParMatxyzVN0[], ParMatxyzVP0[], ParMatxyzNSRH[], ParMatxyzPSRH[]); /* INPUTS */
return 0;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-22 15:22:01
|
Revision: 123
http://fsem.svn.sourceforge.net/fsem/?rev=123&view=rev
Author: fabiandortu
Date: 2007-03-22 08:20:02 -0700 (Thu, 22 Mar 2007)
Log Message:
-----------
Towards the implementation of SRH surface recombination for DDSG
Modified Paths:
--------------
fsem/equations/fsem_Eq_DiffGlo.edp
fsem/models/fsem_Mod_GloVarSemi.edp
fsem/models/fsem_Mod_MatParSemi.edp
fsem/models/fsem_Mod_MatParSemiDefault.edp
fsem/models/modules/Semi/fsem_ModMisc_DDSG.cpp
fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp
fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.cpp
fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp
Modified: fsem/equations/fsem_Eq_DiffGlo.edp
===================================================================
--- fsem/equations/fsem_Eq_DiffGlo.edp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/equations/fsem_Eq_DiffGlo.edp 2007-03-22 15:20:02 UTC (rev 123)
@@ -23,6 +23,7 @@
GloVhP1 GloVarDiffCOEFa = 0.0;
GloVhP1<complex> GloVarDiffCOEFac = 0.0; /* the complex "a" coefficient to deal with harmonic excitations */
+GloVhP1 GloVarDiffCOEFas = 0.0; // used for surface integration
GloVhP1 GloVarDiffCOEFv = 0.0; /* Surface recombination velocity coefficient */
GloVhP1<complex> GloVarDiffCOEFvc = 0.0;
@@ -30,6 +31,7 @@
/* f coef. and its derivatives */
GloVhP1 GloVarDiffCOEFf = 0.0; /* Gen - rec coefficient */
GloVhP1<complex> GloVarDiffCOEFfc = 0.0;
+GloVhP1 GloVarDiffCOEFfs = 0.0; // used for surface integration
GloVhP1 GloVarDiffdCOEFfdU = 0.0;
GloVhP1<complex> GloVarDiffdCOEFfcdU = 0.0;
Modified: fsem/models/fsem_Mod_GloVarSemi.edp
===================================================================
--- fsem/models/fsem_Mod_GloVarSemi.edp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/models/fsem_Mod_GloVarSemi.edp 2007-03-22 15:20:02 UTC (rev 123)
@@ -146,18 +146,37 @@
By convention, it is positive when the recombination rate is larger than the (thermal-)generation rate.
& [m$^{-3}$ s$^{-1}$]
*/
+GloVhP1 GloVarSemiGenRecSurfSRH;
+/*TeXDoc
+Net SRH surface generation/recombination rate.
+By convention, it is positive when the recombination rate is larger than the (thermal-)generation rate.
+& [m$^{-2}$ s$^{-1}$]
+*/
+
GloVhP1 GloVarSemidGenRecSRHdELE;
/*TeXDoc
d\texttt{GloVarSemiGenRecSRH}/d\texttt{GloVarSemiELE}
& [s$^{-1}$]
*/
+GloVhP1 GloVarSemidGenRecSurfSRHdELE;
+/*TeXDoc
+d\texttt{GloVarSemiGenRecSurfSRH}/d\texttt{GloVarSemiELE}
+& [m s$^{-1}$]
+*/
+
GloVhP1 GloVarSemidGenRecSRHdHOL;
/*TeXDoc
d\texttt{GloVarSemiGenRecSRH}/d\texttt{GloVarSemiHOL}
& [s$^{-1}$]
*/
+GloVhP1 GloVarSemidGenRecSurfSRHdHOL;
+/*TeXDoc
+d\texttt{GloVarSemiGenRecSurfSRH}/d\texttt{GloVarSemiHOL}
+& [m s$^{-1}$]
+*/
+
GloVhP1 GloVarSemiGenRecAuger;
/*TeXDoc
Net Auger generation/recombination rate.
Modified: fsem/models/fsem_Mod_MatParSemi.edp
===================================================================
--- fsem/models/fsem_Mod_MatParSemi.edp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/models/fsem_Mod_MatParSemi.edp 2007-03-22 15:20:02 UTC (rev 123)
@@ -103,7 +103,19 @@
Hole SRH concentration (\texttt{ModUsrRecSRHConcDepLifeTime})
& [m$^{-3}$]
*/
+GloVhP1 ParMatxyzVN0 = ParMatSiVN0;
+/*TeXDoc
+ Electron recombination velocity (\texttt{ModUsrRecSRHConcDepLifeTime})
+ & [m/s]
+*/
+GloVhP1 ParMatxyzVP0 = ParMatSiVP0;
+/*TeXDoc
+ Hole recombination velocity (\texttt{ModUsrRecSRHConcDepLifeTime})
+ & [m/s]
+*/
+
+
/* Inverse of the recombination lifetime */
GloVhP1 ParMatxyzITAU = ParMatSiITAU;
/*TeXDoc
Modified: fsem/models/fsem_Mod_MatParSemiDefault.edp
===================================================================
--- fsem/models/fsem_Mod_MatParSemiDefault.edp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/models/fsem_Mod_MatParSemiDefault.edp 2007-03-22 15:20:02 UTC (rev 123)
@@ -126,10 +126,21 @@
*/
real ParMatSiTAUP0 = 3.94e-5;
/*TexDoc
- Conc. dep. SRH rec. lifetime for electrons
+ Conc. dep. SRH rec. lifetime for holes
P. C. Dhanasekaran Solid-State Elec. 25(8) 719 (1982)
& [s]
*/
+real ParMatSiVN0 = 10;
+/*TeXDoc
+ Conc. dep. SRH rec. velocity for electrons
+ & [m/s]
+*/
+real ParMatSiVP0 = 10;
+/*TexDoc
+ Conc. dep. SRH rec. velocity for holes
+ & [m/s]
+*/
+
real ParMatSiNSRH = 7.1e15 * ConvC2M^(-3);
/*TeXDoc
Conc. dep. SRH rec.
Modified: fsem/models/modules/Semi/fsem_ModMisc_DDSG.cpp
===================================================================
--- fsem/models/modules/Semi/fsem_ModMisc_DDSG.cpp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/models/modules/Semi/fsem_ModMisc_DDSG.cpp 2007-03-22 15:20:02 UTC (rev 123)
@@ -1,6 +1,9 @@
/*
* From Slotboom variables rhon, rhop, cn, cp to "physical" variables n, p , mun and mup
*
+ * Two formalisms are implemented here.
+ * Only the second formalism is used today but we kept the first one just in case of.
+ *
*/
#include <iostream>
@@ -714,7 +717,8 @@
}
-//gives the Slotboom "Recombination term" from the slotboom variable rhon
+// gives the Slotboom "Recombination term" from the slotboom variable rhon
+// This calculates the term "gamma" which appears in the linear recombination term (mass matrix)
double CppModDDSGITAURecEle2(KN<double> *const & gamman, // OUPUTS: // [m^-3 s^-1]
KN<double> *const & f, // [m^-3 s^-1]
KN<double> *const & nie, // INPUTS
@@ -768,6 +772,62 @@
}
}
+// gives the Slotboom "SURFACE Recombination term" from the slotboom variable rhon
+// This calculates the term "gamma" and "f" which appear in the linear surface recombination term (mass matrix)
+// and in the right hand side.
+double CppModDDSGITAURecSurfEle2(KN<double> *const & gamman, // OUPUTS: // [m^-2 s^-1]
+ KN<double> *const & f, // [m^-2 s^-1]
+ KN<double> *const & nie, // INPUTS
+ KN<double> *const & Nc,
+ KN<double> *const & Nv,
+ KN<double> *const & Temp,
+ KN<double> *const & rhop,
+ KN<double> *const & DEg,
+ KN<double> *const & Rec, // Rec = F_SRH + F_Aug [m^4 s^-1] (NOT a recombination rate)
+ KN<double> *const & BandGapArray,
+ KN<double> *const & Eg
+ )
+{
+
+ // Check if all input vector have the same dimensions:
+ if((gamman->N() !=f->N()) || (f->N() != nie->N()) || (nie ->N() != Nc ->N())
+ || (Nc->N() != Nv->N()) || (Nv->N() != Temp->N()) || (Temp->N() != rhop->N())
+ || (rhop->N() != DEg->N()) || (DEg->N() != Rec->N())|| (Rec->N() != Eg->N()) ) {
+ cout << "*** ERROR *** function CppModDDSGITAURecSurfEle2." << endl;
+ cout << "f->N(): " << f->N() << endl;
+ cout << "gamman->N(): " << gamman->N() << endl;
+ cout << "nie->N(): " << nie->N() << endl;
+ cout << "Nc->N(): " << Nc->N() << endl;
+ cout << "Nv->N(): " << Nv->N() << endl;
+ cout << "Temp->N(): " << Temp->N() << endl;
+ cout << "rhop->N(): " << rhop->N() << endl;
+ cout << "DEg->N(): " << DEg->N() << endl;
+ cout << "Rec->N(): " << Rec->N() << endl;
+ cout << "Eg->N(): " << Eg->N() << endl;
+ cout << "*** Error ***: cppModDDSGITAURecSurfEle2: input vectors do no have the same dimension. Aborting." << endl;
+ exit(0);
+ }
+
+ double Vth;
+ double ParCstk = 1.3807e-23/(1.60218e-19); // Boltzman cst [eV/K]
+ double Eg0 =(*( BandGapArray[0]+0));
+ double chi0 =(*( BandGapArray[0]+1));
+
+ int nn = rhop->N(); // get the number of nodes
+ for(int i=0; i<nn; i++) { // loop on the nodes
+
+ Vth = (ParCstk) * (*(Temp[0]+i));
+
+ (*( gamman[0]+i)) = (*( Rec[0]+i)) * (*( Nc[0]+i)) * (*( Nv[0]+i))
+ * exp(-(Eg0
+ + (*(Eg[0]+i)) + (*(DEg[0]+i)) - Eg0 // Delate Eg0 = Eg_total - Eg0
+ )/Vth)
+ * (*( rhop[0]+i));
+
+ (*( f[0]+i)) = (*( nie[0]+i)) * (*( nie[0]+i)) * (*( Rec[0]+i));
+ }
+}
+
//gives the Slotboom "Recombination term" from the slotboom variable rhon
double CppModDDSGITAURecHol2(KN<double> *const & gammap, // OUTPUTS // m^-3 s^-1
KN<double> *const & f, // m^-3 s^-1
@@ -823,6 +883,64 @@
}
}
+//gives the Slotboom "SURFACE Recombination term" from the slotboom variable rhon
+// This calculates the term "gamma" and "f" which appear in the linear surface recombination term (mass matrix)
+// and in the right hand side.
+double CppModDDSGITAURecSurfHol2(KN<double> *const & gammap, // OUTPUTS // m^-2 s^-1
+ KN<double> *const & f, // m^-2 s^-1
+ KN<double> *const & nie, // INPUTS
+ KN<double> *const & Nc,
+ KN<double> *const & Nv,
+ KN<double> *const & Temp,
+ KN<double> *const & rhon,
+ KN<double> *const & DEg,
+ KN<double> *const & Rec, // Rec = F_SRH + F_Aug [m^4 s^-1] (NOT a recombination rate)
+ KN<double> *const & BandGapArray,
+ KN<double> *const & Eg
+ )
+{
+
+ // Check if all input vector have the same dimensions:
+ if((gammap->N() != f->N()) || (f->N() != nie->N()) || (nie ->N() != Nc ->N())
+ || (Nc->N() != Nv->N()) || (Nv->N() != Temp->N()) || (Temp->N() != rhon->N())
+ || (rhon->N() != DEg->N()) || (DEg->N() != Rec->N())|| (Rec->N() != Eg->N()) ) {
+ cout << "*** ERROR *** function CppModDDSGITAURecSurfHol2." << endl;
+ cout << "gammap->N(): " << gammap->N() << endl;
+ cout << "f->N(): " << f->N() << endl;
+ cout << "nie->N(): " << nie->N() << endl;
+ cout << "Nc->N(): " << Nc->N() << endl;
+ cout << "Nv->N(): " << Nv->N() << endl;
+ cout << "Temp->N(): " << Temp->N() << endl;
+ cout << "rhon->N(): " << rhon->N() << endl;
+ cout << "DEg->N(): " << DEg->N() << endl;
+ cout << "Rec->N(): " << Rec->N() << endl;
+ cout << "DEg->N(): " << Eg->N() << endl;
+ cout << "*** Error ***: cppModDDSGITAURecSurfHol2: input vectors do no have the same dimension. Aborting." << endl;
+ exit(0);
+ }
+
+ double Vth;
+ double ParCstk = 1.3807e-23/(1.60218e-19); // Boltzman cst [eV/K]
+ double Eg0 =(*( BandGapArray[0]+0));
+ double chi0 =(*( BandGapArray[0]+1));
+ double phi0 =(*( BandGapArray[0]+2));
+
+ int nn = rhon->N(); // get the number of nodes
+ for(int i=0; i<nn; i++) { // loop on the nodes
+
+ Vth = (ParCstk) * (*(Temp[0]+i));
+
+ (*( gammap[0]+i)) = (*( Rec[0]+i)) * (*( Nc[0]+i)) * (*( Nv[0]+i))
+ * exp (-(Eg0
+ + (*(Eg[0]+i)) + (*(DEg[0]+i)) - Eg0 // Delta Eg0 = Eg_total - Eg0
+ )/Vth)
+ * (*( rhon[0]+i)) ;
+
+ (*( f[0]+i)) = (*( nie[0]+i)) * (*( nie[0]+i)) * (*( Rec[0]+i));
+ }
+}
+
+
// Derivative of the recombination rate with respect to RhoN
// d(Rec_rate)/d(Rho) = d(Rec_rate)/d(N) * d(N)/d(RhoN)
double CppModDDSGEleJac2(KN<double> *const & Jac, // OUTPUTS [m^-3 s^-1]
@@ -1137,6 +1255,11 @@
Global.Add("CppModDDSGITAURecHol2","(",new OneOperator11_<double, KN<double>*, KN<double>*,KN<double>*, KN<double>*,
KN<double>*, KN<double>*, KN<double>*, KN<double>*,KN<double>*,KN<double>*,KN<double>*>(CppModDDSGITAURecHol2));
+ Global.Add("CppModDDSGITAURecSurfEle2","(",new OneOperator11_<double, KN<double>*,KN<double>*, KN<double>*,
+ KN<double>*, KN<double>*, KN<double>*, KN<double>*,KN<double>*,KN<double>*,KN<double>*,KN<double>*>(CppModDDSGITAURecSurfEle2));
+ Global.Add("CppModDDSGITAURecSurfHol2","(",new OneOperator11_<double, KN<double>*, KN<double>*,KN<double>*, KN<double>*,
+ KN<double>*, KN<double>*, KN<double>*, KN<double>*,KN<double>*,KN<double>*,KN<double>*>(CppModDDSGITAURecSurfHol2));
+
Global.Add("CppModDDSGEleJac2","(",new OneOperator8_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*,
KN<double>*, KN<double>*, KN<double>*, KN<double>*>(CppModDDSGEleJac2));
Global.Add("CppModDDSGHolJac2","(",new OneOperator10_<double, KN<double>*, KN<double>*, KN<double>*,
Modified: fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp
===================================================================
--- fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/models/modules/Semi/fsem_ModMisc_DDSG.edp 2007-03-22 15:20:02 UTC (rev 123)
@@ -315,6 +315,32 @@
return 0;
}
+func real ModDDSGITAURecSurfEle2() {
+
+ GloMeshFieldReset(GloVarDiffCOEFas);
+ GloMeshFieldReset(GloVarDiffCOEFfs);
+
+
+ GloMeshFieldInterpol(GloVarSemiNIE);
+ GloMeshFieldInterpol(GloVarSemiNCT);
+ GloMeshFieldInterpol(GloVarSemiNVT);
+ GloMeshFieldInterpol(GloVarTempT);
+ GloMeshFieldInterpol(GloVarSemiDDSGRhoP);
+ GloMeshFieldInterpol(GloVarSemiDEGAP);
+ GloMeshFieldInterpol(GloVarSemiGenRecSurfTOT);
+ GloMeshFieldInterpol(ParMatxyzEG300);
+
+
+ real[int] BandGapArray(3);
+ ModBandGapArray(BandGapArray);
+
+ CppModDDSGITAURecSurfEle2(GloVarDiffCOEFas[], GloVarDiffCOEFfs[], /* OUTPUTS */
+ GloVarSemiNIE[], GloVarSemiNCT[], GloVarSemiNVT[], GloVarTempT[],
+ GloVarSemiDDSGRhoP[],GloVarSemiDEGAP [] , GloVarSemiGenRecSurfTOT[] , BandGapArray,ParMatxyzEG300[] ); /* INPUTS */
+ return 0;
+}
+
+
func real ModDDSGITAURecHol() {
@@ -369,6 +395,33 @@
return 0;
}
+func real ModDDSGITAURecSurfHol2() {
+
+
+ GloMeshFieldReset(GloVarDiffCOEFas);
+ GloMeshFieldReset(GloVarDiffCOEFfs);
+
+
+ GloMeshFieldInterpol(GloVarSemiNIE);
+ GloMeshFieldInterpol(GloVarSemiNCT);
+ GloMeshFieldInterpol(GloVarSemiNVT);
+ GloMeshFieldInterpol(GloVarTempT);
+ GloMeshFieldInterpol(GloVarSemiDDSGRhoN);
+ GloMeshFieldInterpol(GloVarSemiDEGAP);
+ GloMeshFieldInterpol(GloVarSemiGenRecSurfTOT);
+ GloMeshFieldInterpol(ParMatxyzEG300);
+
+
+ real[int] BandGapArray(3);
+ ModBandGapArray(BandGapArray);
+
+ CppModDDSGITAURecHol2( GloVarDiffCOEFas[], GloVarDiffCOEFfs[], /* OUTPUTS */
+ GloVarSemiNIE[], GloVarSemiNCT[], GloVarSemiNVT[], GloVarTempT[],
+ GloVarSemiDDSGRhoN[],GloVarSemiDEGAP [] , GloVarSemiGenRecSurfTOT[] , BandGapArray,ParMatxyzEG300[]); /* INPUTS */
+ return 0;
+}
+
+
func real ModDDSGPotJac() {
Modified: fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.cpp
===================================================================
--- fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.cpp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.cpp 2007-03-22 15:20:02 UTC (rev 123)
@@ -1,5 +1,10 @@
/*
* SRH recombination, with and without doping concentration dependent lifetime.
+ *
+ * See also fsem_ModMisc_DDSG.cpp
+ *
+ *
+ * TO BE CHECKED!!! Comments do not always indicate the right units (Fabian says)
*/
#include <iostream>
@@ -20,7 +25,7 @@
* WARNING! This function compute FSRH and NOT the recombination rate.
* This is used to solve DD with the Gummel map
*
- * RecRate_SRH = (n * p - nie) * FSRH // m^-3 s^-1
+ * RecRate_SRH = (n * p - nie^2) * FSRH // m^-3 s^-1
*
* where FSRH = 1 / (Taun * (p+nie) + Taup * (n+nie) // m^+3 s^-1
*/
@@ -59,7 +64,6 @@
double Nmod;
double Pmod;
- // Compute the net gen/recombination rate U [m^-3 s^-1]:
int nn = N->N(); // get the number of nodes
for(int i=0; i<nn; i++) { // loop on the nodes
@@ -73,9 +77,9 @@
+ taup * ( Nmod + (*(Nie[0]+i))); // denominator of SRH expression
// SRH recombination rate U
- (*(U[0]+i)) = 1.0 / RecVolSRHDen ;
+ (*(U[0]+i)) = 1.0 / RecVolSRHDen ; // m^+3 s^-1
- *(D_U_DN[0]+i) = - taup / (RecVolSRHDen*RecVolSRHDen); /* [s-1] */
+ *(D_U_DN[0]+i) = - taup / (RecVolSRHDen*RecVolSRHDen); /* [m^+6 s-1] */
*(D_U_DP[0]+i) = - taun / (RecVolSRHDen*RecVolSRHDen);
@@ -84,6 +88,74 @@
}
+
+// SRH SURFACE recombination with Doping concentration dependent recombination velocities
+/*
+ * WARNING! This function compute FSRH and NOT the recombination rate.
+ * This is used to solve DD with the Gummel map
+ *
+ * RecRate_SRH_surf = (n * p - nie^2) * FSRH_surf // m^-2 s^-1
+ *
+ * where FSRH_surf = 1 / ( (p+nie)/v_n + (n+nie)/v_p // m^+4 s^-1
+ */
+Complex CppModDDSGRecSurfSRHConcDep(KN<double> *const & U, // OUTPUTS:
+ KN<double> *const & D_U_DN, KN<double> *const & D_U_DP,
+ KN<double> *const & N, KN<double> *const & P, // INPUTS: total electrons and holes
+ KN<double> *const & Nie, // intrinsic carrier concentration
+ KN<double> *const & Ntot, // total doping concentration
+ KN<double> *const & VN0, KN<double> *const & VP0, // SRH surface rec velocity coefs
+ KN<double> *const & NSRH, KN<double> *const & PSRH)
+{
+
+ // Check if all input vector have the same dimensions:
+ if((U->N() != D_U_DN->N()) || (D_U_DN->N() != D_U_DP->N()) || (D_U_DP->N() != N->N()) || (N->N() != P->N()) || (P->N() != Nie->N())
+ || (Nie->N() != Ntot->N()) || (Ntot->N() != VN0->N()) || (VN0->N() != VP0->N())
+ || (VP0->N() != NSRH->N()) || (NSRH->N() != PSRH->N()) ) {
+ cout << "*** ERROR *** function CppModDDSGRecSurfSRHConcDep." << endl;
+ cout << "U->N(): " << U->N() << endl;
+ cout << "D_U_DN->N(): " << D_U_DN->N() << endl;
+ cout << "D_U_DP->N(): " << D_U_DP->N() << endl;
+ cout << "N->N(): " << N->N() << endl;
+ cout << "P->N(): " << P->N() << endl;
+ cout << "Nie->N(): " << Nie->N() << endl;
+ cout << "Ntot->N(): " << Ntot->N() << endl;
+ cout << "VN0->N(): " << VN0->N() << endl;
+ cout << "VP0->N(): " << VP0->N() << endl;
+ cout << "NSRH->N(): " << NSRH->N() << endl;
+ cout << "PSRH->N(): " << PSRH->N() << endl;
+ cout << "*** Error ***: cppModDDSGRecSurfSRHConcDep: input vectors do no have the same dimension. Aborting." << endl;
+ exit(0);
+ }
+
+ double vn;
+ double vp;
+ double RecVolSRHDen;
+ double Nmod;
+ double Pmod;
+
+ int nn = N->N(); // get the number of nodes
+ for(int i=0; i<nn; i++) { // loop on the nodes
+
+ Nmod = abs((*(N[0]+i)));
+ Pmod = abs((*(P[0]+i)));
+
+ vn = (*(VN0[0]+i)); // So far, recombination velocities are ...
+ vp = (*(VP0[0]+i)); // ... independent of doping concentration. (NSRH and PSRH are not used yet). TODO.
+
+ RecVolSRHDen = ( Pmod + (*(Nie[0]+i)))/vn + ( Nmod + (*(Nie[0]+i)))/vp; // denominator of SRH expression
+
+ // SRH recombination rate U
+ (*(U[0]+i)) = 1.0 / RecVolSRHDen ; // m^+4 s^-1
+
+ *(D_U_DN[0]+i) = - 1.0 / (vp * RecVolSRHDen*RecVolSRHDen); /* [m^7 s-1] */
+
+ *(D_U_DP[0]+i) = - 1.0 / (vn * RecVolSRHDen*RecVolSRHDen);
+
+ }
+
+}
+
+
Complex CppModDDSGRecVolSRHEleH0ConcDep(KN<double> *const & U, // OUTPUTS:
KN<double> *const & D_U_DN, KN<double> *const & D_U_DP,
KN<double> *const & N, KN<double> *const & P, // INPUTS: total H1 carriers and total holes
@@ -543,11 +615,13 @@
Init();
};
Init init;
-Init::Init(){ Global.Add("CppModDDSGRecVolSRHConcDep","(",new OneOperator11_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModDDSGRecVolSRHConcDep));
- Global.Add("CppModDDSGRecVolSRHEleH0ConcDep","(",new OneOperator12_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<Complex>*>(CppModDDSGRecVolSRHEleH0ConcDep));
- Global.Add("CppModDDSGRecVolSRHHolH0ConcDep","(",new OneOperator12_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<Complex>*>(CppModDDSGRecVolSRHHolH0ConcDep));
- Global.Add("CppModDDSGSRHAddGamman2H0","(",new OneOperator12_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGamman2H0));
- Global.Add("CppModDDSGSRHAddGammap2H0","(",new OneOperator13_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGammap2H0));
-Global.Add("CppModDDSGSRHAddGamman2H0v2","(",new OneOperator12_<double, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*,KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGamman2H0v2));
- Global.Add("CppModDDSGSRHAddGammap2H0v2","(",new OneOperator12_<double, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGammap2H0v2));
+Init::Init(){
+ Global.Add("CppModDDSGRecVolSRHConcDep","(",new OneOperator11_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModDDSGRecVolSRHConcDep));
+ Global.Add("CppModDDSGRecSurfSRHConcDep","(",new OneOperator11_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* >(CppModDDSGRecSurfSRHConcDep));
+ Global.Add("CppModDDSGRecVolSRHEleH0ConcDep","(",new OneOperator12_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<Complex>*>(CppModDDSGRecVolSRHEleH0ConcDep));
+ Global.Add("CppModDDSGRecVolSRHHolH0ConcDep","(",new OneOperator12_<Complex, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<Complex>*>(CppModDDSGRecVolSRHHolH0ConcDep));
+ Global.Add("CppModDDSGSRHAddGamman2H0","(",new OneOperator12_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGamman2H0));
+ Global.Add("CppModDDSGSRHAddGammap2H0","(",new OneOperator13_<double, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGammap2H0));
+ Global.Add("CppModDDSGSRHAddGamman2H0v2","(",new OneOperator12_<double, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*,KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGamman2H0v2));
+ Global.Add("CppModDDSGSRHAddGammap2H0v2","(",new OneOperator12_<double, KN<double>*, KN<double>*, KN<double>*, KN<Complex>*, KN<double>*, KN<double>*, KN<double>*, KN<double>*, KN<double>* , KN<double>*, KN<double>*, KN<double>*>(CppModDDSGSRHAddGammap2H0v2));
}
Modified: fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp
===================================================================
--- fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp 2007-03-13 17:04:56 UTC (rev 122)
+++ fsem/models/modules/Semi/fsem_ModRecSRH_DDSG.edp 2007-03-22 15:20:02 UTC (rev 123)
@@ -21,10 +21,10 @@
*************************************************/
// OUTPUT:
-// R: the recombination rate [m^3 s^-1]
+// R: FSRH (this is NOT the recombination rate) [m^3 s^-1]
// INPUTS:
// N, P, Nie
-func real ModDDSGRecVolSRHConcDep() {
+func real ModDDSGRecVolSRHConcDep() {
GloMeshFieldReset(GloVarSemiGenRecSRH);
GloMeshFieldReset(GloVarSemidGenRecSRHdELE);
GloMeshFieldReset(GloVarSemidGenRecSRHdHOL);
@@ -38,16 +38,43 @@
GloMeshFieldInterpol(ParMatxyzNSRH);
GloMeshFieldInterpol(ParMatxyzPSRH);
-
CppModDDSGRecVolSRHConcDep(GloVarSemiGenRecSRH[], /* OUTPUTS */
- GloVarSemidGenRecSRHdELE[], GloVarSemidGenRecSRHdHOL[],
- GloVarSemiELE[], GloVarSemiHOL[], GloVarSemiNIE[], GloVarSemiDOPTOT[],
- ParMatxyzTAUN0[], ParMatxyzTAUP0[], ParMatxyzNSRH[], ParMatxyzPSRH[] ); /* INPUTS */
+ GloVarSemidGenRecSRHdELE[], GloVarSemidGenRecSRHdHOL[],
+ GloVarSemiELE[], GloVarSemiHOL[], GloVarSemiNIE[], GloVarSemiDOPTOT[],
+ ParMatxyzTAUN0[], ParMatxyzTAUP0[], ParMatxyzNSRH[], ParMatxyzPSRH[]); /* INPUTS */
return 0;
}
+// OUTPUT:
+// R: FSRH_surf (this is NOT the surface recombination rate) [m^4 s^-1]
+// INPUTS:
+// N, P, Nie
+func real ModDDSGRecSurfSRHConcDep() {
+ GloMeshFieldReset(GloVarSemiGenRecSurfSRH);
+ GloMeshFieldReset(GloVarSemidGenRecSurfSRHdELE);
+ GloMeshFieldReset(GloVarSemidGenRecSurfSRHdHOL);
+
+ GloMeshFieldInterpol(GloVarSemiELE);
+ GloMeshFieldInterpol(GloVarSemiHOL);
+ GloMeshFieldInterpol(GloVarSemiNIE);
+ GloMeshFieldInterpol(GloVarSemiDOPTOT);
+ GloMeshFieldInterpol(ParMatxyzVN0);
+ GloMeshFieldInterpol(ParMatxyzVP0);
+ GloMeshFieldInterpol(ParMatxyzNSRH);
+ GloMeshFieldInterpol(ParMatxyzPSRH);
+
+ CppModDDSGRecVolSRHConcDep(GloVarSemiGenRecSurfSRH[], /* OUTPUTS */
+ GloVarSemidGenRecSurfSRHdELE[], GloVarSemidGenRecSurfSRHdHOL[],
+ GloVarSemiELE[], GloVarSemiHOL[], GloVarSemiNIE[], GloVarSemiDOPTOT[],
+ ParMatxyzVN0[], ParMatxyzVP0[], ParMatxyzNSRH[], ParMatxyzPSRH[]); /* INPUTS */
+ return 0;
+}
+
+
+
+
func real ModDDSGRecVolSRHEleH0() {
GloMeshFieldReset(GloVarDiffCOEFf);
GloMeshFieldReset(GloVarSemidGenRecSRHdELE);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-13 17:04:56
|
Revision: 122
http://fsem.svn.sourceforge.net/fsem/?rev=122&view=rev
Author: fabiandortu
Date: 2007-03-13 10:04:56 -0700 (Tue, 13 Mar 2007)
Log Message:
-----------
Structured mesh that is suited to make simulations on PN junctions.
Modified Paths:
--------------
fsem/examples-fondation/struct_mesh/meshPN.edp
fsem/examples-fondation/struct_mesh/meshPN.msh
fsem/examples-fondation/struct_mesh/meshPN_refine.edp
Added Paths:
-----------
fsem/examples-fondation/struct_mesh/README
fsem/examples-fondation/struct_mesh/meshPN2.sce
fsem/examples-fondation/struct_mesh/meshPN_refined.msh
Removed Paths:
-------------
fsem/examples-fondation/struct_mesh/meshPN.sce
Added: fsem/examples-fondation/struct_mesh/README
===================================================================
--- fsem/examples-fondation/struct_mesh/README (rev 0)
+++ fsem/examples-fondation/struct_mesh/README 2007-03-13 17:04:56 UTC (rev 122)
@@ -0,0 +1,17 @@
+How to use files in the current directory:
+The purpose is to generate a mesh for an ultra shallow junction.
+When the mesh is not correctly made, the solution is wrong (like if there was a Dirichlet boundary
+condition at the top surface although it is a Neuman condition)
+
+1) generate the geometry and inner borders with mesh2.sce scilab function make_PN().
+
+2) This generates a file meshPN.edp which has to be edited manually before being launched with Freefem++:
+ - just make sure there is only one line in the buildmesh command and that there is no front "+"
+ - add a line savemesh(Th, "meshPN.msh");
+ - and run FreeFem++ meshPN.edp;
+
+3) Then run
+ Freefem++ meshPN_refine.edp
+
+4) The refined mesh is then available in mesh_refined.msh
+
Modified: fsem/examples-fondation/struct_mesh/meshPN.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.edp 2007-03-09 16:57:04 UTC (rev 121)
+++ fsem/examples-fondation/struct_mesh/meshPN.edp 2007-03-13 17:04:56 UTC (rev 122)
@@ -1,251 +1,213 @@
-border inn00(t=0.0000,0.3333){x=t;y=-0.1000;};
-border inn01(t=0.3333,0.6667){x=t;y=-0.1000;};
-border inn02(t=0.6667,1.0000){x=t;y=-0.1000;};
-border inn03(t=1.0000,1.3333){x=t;y=-0.1000;};
-border inn04(t=1.3333,1.6667){x=t;y=-0.1000;};
-border inn05(t=1.6667,2.0000){x=t;y=-0.1000;};
-border inn06(t=2.0000,2.3333){x=t;y=-0.1000;};
-border inn07(t=2.3333,2.6667){x=t;y=-0.1000;};
-border inn08(t=2.6667,3.0000){x=t;y=-0.1000;};
-border inn09(t=3.0000,3.3333){x=t;y=-0.1000;};
-border inn10(t=3.3333,3.6667){x=t;y=-0.1000;};
-border inn11(t=3.6667,4.0000){x=t;y=-0.1000;};
-border inn12(t=4.0000,4.3333){x=t;y=-0.1000;};
-border inn13(t=4.3333,4.6667){x=t;y=-0.1000;};
-border inn14(t=4.6667,5.0000){x=t;y=-0.1000;};
-border inn15(t=5.0000,5.3333){x=t;y=-0.1000;};
-border inn16(t=5.3333,5.6667){x=t;y=-0.1000;};
-border inn17(t=5.6667,6.0000){x=t;y=-0.1000;};
-border inn18(t=6.0000,6.3333){x=t;y=-0.1000;};
-border inn19(t=6.3333,6.6667){x=t;y=-0.1000;};
-border inn20(t=6.6667,7.0000){x=t;y=-0.1000;};
-border inn21(t=7.0000,7.3333){x=t;y=-0.1000;};
-border inn22(t=7.3333,7.6667){x=t;y=-0.1000;};
-border inn23(t=7.6667,8.0000){x=t;y=-0.1000;};
-border inn24(t=8.0000,8.3333){x=t;y=-0.1000;};
-border inn25(t=8.3333,8.6667){x=t;y=-0.1000;};
-border inn26(t=8.6667,9.0000){x=t;y=-0.1000;};
-border inn27(t=9.0000,9.3333){x=t;y=-0.1000;};
-border inn28(t=9.3333,9.6667){x=t;y=-0.1000;};
-border inn29(t=9.6667,10.0000){x=t;y=-0.1000;};
-border inn30(t=10.0000,19.0000){x=t;y=-0.1000;};
-border inn31(t=19.0000,28.0000){x=t;y=-0.1000;};
-border inn32(t=28.0000,37.0000){x=t;y=-0.1000;};
-border inn33(t=37.0000,46.0000){x=t;y=-0.1000;};
-border inn34(t=46.0000,55.0000){x=t;y=-0.1000;};
-border inn35(t=55.0000,64.0000){x=t;y=-0.1000;};
-border inn36(t=64.0000,73.0000){x=t;y=-0.1000;};
-border inn37(t=73.0000,82.0000){x=t;y=-0.1000;};
-border inn38(t=82.0000,91.0000){x=t;y=-0.1000;};
-border inn39(t=91.0000,100.0000){x=t;y=-0.1000;};
-border innXj00(t=0.0000,0.3333){x=t;y=-0.0500;};
-border innXj01(t=0.3333,0.6667){x=t;y=-0.0500;};
-border innXj02(t=0.6667,1.0000){x=t;y=-0.0500;};
-border innXj03(t=1.0000,1.3333){x=t;y=-0.0500;};
-border innXj04(t=1.3333,1.6667){x=t;y=-0.0500;};
-border innXj05(t=1.6667,2.0000){x=t;y=-0.0500;};
-border innXj06(t=2.0000,2.3333){x=t;y=-0.0500;};
-border innXj07(t=2.3333,2.6667){x=t;y=-0.0500;};
-border innXj08(t=2.6667,3.0000){x=t;y=-0.0500;};
-border innXj09(t=3.0000,3.3333){x=t;y=-0.0500;};
-border innXj10(t=3.3333,3.6667){x=t;y=-0.0500;};
-border innXj11(t=3.6667,4.0000){x=t;y=-0.0500;};
-border innXj12(t=4.0000,4.3333){x=t;y=-0.0500;};
-border innXj13(t=4.3333,4.6667){x=t;y=-0.0500;};
-border innXj14(t=4.6667,5.0000){x=t;y=-0.0500;};
-border innXj15(t=5.0000,5.3333){x=t;y=-0.0500;};
-border innXj16(t=5.3333,5.6667){x=t;y=-0.0500;};
-border innXj17(t=5.6667,6.0000){x=t;y=-0.0500;};
-border innXj18(t=6.0000,6.3333){x=t;y=-0.0500;};
-border innXj19(t=6.3333,6.6667){x=t;y=-0.0500;};
-border innXj20(t=6.6667,7.0000){x=t;y=-0.0500;};
-border innXj21(t=7.0000,7.3333){x=t;y=-0.0500;};
-border innXj22(t=7.3333,7.6667){x=t;y=-0.0500;};
-border innXj23(t=7.6667,8.0000){x=t;y=-0.0500;};
-border innXj24(t=8.0000,8.3333){x=t;y=-0.0500;};
-border innXj25(t=8.3333,8.6667){x=t;y=-0.0500;};
-border innXj26(t=8.6667,9.0000){x=t;y=-0.0500;};
-border innXj27(t=9.0000,9.3333){x=t;y=-0.0500;};
-border innXj28(t=9.3333,9.6667){x=t;y=-0.0500;};
-border innXj29(t=9.6667,10.0000){x=t;y=-0.0500;};
-border innXj30(t=10.0000,19.0000){x=t;y=-0.0500;};
-border innXj31(t=19.0000,28.0000){x=t;y=-0.0500;};
-border innXj32(t=28.0000,37.0000){x=t;y=-0.0500;};
-border innXj33(t=37.0000,46.0000){x=t;y=-0.0500;};
-border innXj34(t=46.0000,55.0000){x=t;y=-0.0500;};
-border innXj35(t=55.0000,64.0000){x=t;y=-0.0500;};
-border innXj36(t=64.0000,73.0000){x=t;y=-0.0500;};
-border innXj37(t=73.0000,82.0000){x=t;y=-0.0500;};
-border innXj38(t=82.0000,91.0000){x=t;y=-0.0500;};
-border innXj39(t=91.0000,100.0000){x=t;y=-0.0500;};
-border right1(t=-0.1000,-0.0500){x=100.0000;y=t;};
-border right2(t=-0.0500,0.0000){x=100.0000;y=t;};
-border top39(t=100.0000,91.0000){x=t;y=0.0000;};
-border top38(t=91.0000,82.0000){x=t;y=0.0000;};
-border top37(t=82.0000,73.0000){x=t;y=0.0000;};
-border top36(t=73.0000,64.0000){x=t;y=0.0000;};
-border top35(t=64.0000,55.0000){x=t;y=0.0000;};
-border top34(t=55.0000,46.0000){x=t;y=0.0000;};
-border top33(t=46.0000,37.0000){x=t;y=0.0000;};
-border top32(t=37.0000,28.0000){x=t;y=0.0000;};
-border top31(t=28.0000,19.0000){x=t;y=0.0000;};
-border top30(t=19.0000,10.0000){x=t;y=0.0000;};
-border top29(t=10.0000,9.6667){x=t;y=0.0000;};
-border top28(t=9.6667,9.3333){x=t;y=0.0000;};
-border top27(t=9.3333,9.0000){x=t;y=0.0000;};
-border top26(t=9.0000,8.6667){x=t;y=0.0000;};
-border top25(t=8.6667,8.3333){x=t;y=0.0000;};
-border top24(t=8.3333,8.0000){x=t;y=0.0000;};
-border top23(t=8.0000,7.6667){x=t;y=0.0000;};
-border top22(t=7.6667,7.3333){x=t;y=0.0000;};
-border top21(t=7.3333,7.0000){x=t;y=0.0000;};
-border top20(t=7.0000,6.6667){x=t;y=0.0000;};
-border top19(t=6.6667,6.3333){x=t;y=0.0000;};
-border top18(t=6.3333,6.0000){x=t;y=0.0000;};
-border top17(t=6.0000,5.6667){x=t;y=0.0000;};
-border top16(t=5.6667,5.3333){x=t;y=0.0000;};
-border top15(t=5.3333,5.0000){x=t;y=0.0000;};
-border top14(t=5.0000,4.6667){x=t;y=0.0000;};
-border top13(t=4.6667,4.3333){x=t;y=0.0000;};
-border top12(t=4.3333,4.0000){x=t;y=0.0000;};
-border top11(t=4.0000,3.6667){x=t;y=0.0000;};
-border top10(t=3.6667,3.3333){x=t;y=0.0000;};
-border top09(t=3.3333,3.0000){x=t;y=0.0000;};
-border top08(t=3.0000,2.6667){x=t;y=0.0000;};
-border top07(t=2.6667,2.3333){x=t;y=0.0000;};
-border top06(t=2.3333,2.0000){x=t;y=0.0000;};
-border top05(t=2.0000,1.6667){x=t;y=0.0000;};
-border top04(t=1.6667,1.3333){x=t;y=0.0000;};
-border top03(t=1.3333,1.0000){x=t;y=0.0000;};
-border top02(t=1.0000,0.6667){x=t;y=0.0000;};
-border top01(t=0.6667,0.3333){x=t;y=0.0000;};
-border top00(t=0.3333,0.0000){x=t;y=0.0000;};
-border innV100(t=-0.1000,-0.0500){x=0.3333;y=t;};
-border innV101(t=-0.1000,-0.0500){x=0.6667;y=t;};
-border innV102(t=-0.1000,-0.0500){x=1.0000;y=t;};
-border innV103(t=-0.1000,-0.0500){x=1.3333;y=t;};
-border innV104(t=-0.1000,-0.0500){x=1.6667;y=t;};
-border innV105(t=-0.1000,-0.0500){x=2.0000;y=t;};
-border innV106(t=-0.1000,-0.0500){x=2.3333;y=t;};
-border innV107(t=-0.1000,-0.0500){x=2.6667;y=t;};
-border innV108(t=-0.1000,-0.0500){x=3.0000;y=t;};
-border innV109(t=-0.1000,-0.0500){x=3.3333;y=t;};
-border innV110(t=-0.1000,-0.0500){x=3.6667;y=t;};
-border innV111(t=-0.1000,-0.0500){x=4.0000;y=t;};
-border innV112(t=-0.1000,-0.0500){x=4.3333;y=t;};
-border innV113(t=-0.1000,-0.0500){x=4.6667;y=t;};
-border innV114(t=-0.1000,-0.0500){x=5.0000;y=t;};
-border innV115(t=-0.1000,-0.0500){x=5.3333;y=t;};
-border innV116(t=-0.1000,-0.0500){x=5.6667;y=t;};
-border innV117(t=-0.1000,-0.0500){x=6.0000;y=t;};
-border innV118(t=-0.1000,-0.0500){x=6.3333;y=t;};
-border innV119(t=-0.1000,-0.0500){x=6.6667;y=t;};
-border innV120(t=-0.1000,-0.0500){x=7.0000;y=t;};
-border innV121(t=-0.1000,-0.0500){x=7.3333;y=t;};
-border innV122(t=-0.1000,-0.0500){x=7.6667;y=t;};
-border innV123(t=-0.1000,-0.0500){x=8.0000;y=t;};
-border innV124(t=-0.1000,-0.0500){x=8.3333;y=t;};
-border innV125(t=-0.1000,-0.0500){x=8.6667;y=t;};
-border innV126(t=-0.1000,-0.0500){x=9.0000;y=t;};
-border innV127(t=-0.1000,-0.0500){x=9.3333;y=t;};
-border innV128(t=-0.1000,-0.0500){x=9.6667;y=t;};
-border innV129(t=-0.1000,-0.0500){x=10.0000;y=t;};
-border innV230(t=-0.0500,0.0000){x=19.0000;y=t;};
-border innV231(t=-0.0500,0.0000){x=28.0000;y=t;};
-border innV232(t=-0.0500,0.0000){x=37.0000;y=t;};
-border innV233(t=-0.0500,0.0000){x=46.0000;y=t;};
-border innV234(t=-0.0500,0.0000){x=55.0000;y=t;};
-border innV235(t=-0.0500,0.0000){x=64.0000;y=t;};
-border innV236(t=-0.0500,0.0000){x=73.0000;y=t;};
-border innV237(t=-0.0500,0.0000){x=82.0000;y=t;};
-border innV238(t=-0.0500,0.0000){x=91.0000;y=t;};
-border innV200(t=-0.0500,0.0000){x=0.3333;y=t;};
-border innV201(t=-0.0500,0.0000){x=0.6667;y=t;};
-border innV202(t=-0.0500,0.0000){x=1.0000;y=t;};
-border innV203(t=-0.0500,0.0000){x=1.3333;y=t;};
-border innV204(t=-0.0500,0.0000){x=1.6667;y=t;};
-border innV205(t=-0.0500,0.0000){x=2.0000;y=t;};
-border innV206(t=-0.0500,0.0000){x=2.3333;y=t;};
-border innV207(t=-0.0500,0.0000){x=2.6667;y=t;};
-border innV208(t=-0.0500,0.0000){x=3.0000;y=t;};
-border innV209(t=-0.0500,0.0000){x=3.3333;y=t;};
-border innV210(t=-0.0500,0.0000){x=3.6667;y=t;};
-border innV211(t=-0.0500,0.0000){x=4.0000;y=t;};
-border innV212(t=-0.0500,0.0000){x=4.3333;y=t;};
-border innV213(t=-0.0500,0.0000){x=4.6667;y=t;};
-border innV214(t=-0.0500,0.0000){x=5.0000;y=t;};
-border innV215(t=-0.0500,0.0000){x=5.3333;y=t;};
-border innV216(t=-0.0500,0.0000){x=5.6667;y=t;};
-border innV217(t=-0.0500,0.0000){x=6.0000;y=t;};
-border innV218(t=-0.0500,0.0000){x=6.3333;y=t;};
-border innV219(t=-0.0500,0.0000){x=6.6667;y=t;};
-border innV220(t=-0.0500,0.0000){x=7.0000;y=t;};
-border innV221(t=-0.0500,0.0000){x=7.3333;y=t;};
-border innV222(t=-0.0500,0.0000){x=7.6667;y=t;};
-border innV223(t=-0.0500,0.0000){x=8.0000;y=t;};
-border innV224(t=-0.0500,0.0000){x=8.3333;y=t;};
-border innV225(t=-0.0500,0.0000){x=8.6667;y=t;};
-border innV226(t=-0.0500,0.0000){x=9.0000;y=t;};
-border innV227(t=-0.0500,0.0000){x=9.3333;y=t;};
-border innV228(t=-0.0500,0.0000){x=9.6667;y=t;};
-border innV229(t=-0.0500,0.0000){x=10.0000;y=t;};
-border innV130(t=-0.1000,-0.0500){x=19.0000;y=t;};
-border innV131(t=-0.1000,-0.0500){x=28.0000;y=t;};
-border innV132(t=-0.1000,-0.0500){x=37.0000;y=t;};
-border innV133(t=-0.1000,-0.0500){x=46.0000;y=t;};
-border innV134(t=-0.1000,-0.0500){x=55.0000;y=t;};
-border innV135(t=-0.1000,-0.0500){x=64.0000;y=t;};
-border innV136(t=-0.1000,-0.0500){x=73.0000;y=t;};
-border innV137(t=-0.1000,-0.0500){x=82.0000;y=t;};
-border innV138(t=-0.1000,-0.0500){x=91.0000;y=t;};
-border left1(t=0.0000,-0.0500){x=0.0000;y=t;};
-border left2(t=-0.0500,-0.1000){x=0.0000;y=t;};
-border leftS(t=-0.1000,-100.0000){x=0.0000;y=t;};
-border botS00(t=0.0000,0.3333){x=t;y=-100.0000;};
-border botS01(t=0.3333,0.6667){x=t;y=-100.0000;};
-border botS02(t=0.6667,1.0000){x=t;y=-100.0000;};
-border botS03(t=1.0000,1.3333){x=t;y=-100.0000;};
-border botS04(t=1.3333,1.6667){x=t;y=-100.0000;};
-border botS05(t=1.6667,2.0000){x=t;y=-100.0000;};
-border botS06(t=2.0000,2.3333){x=t;y=-100.0000;};
-border botS07(t=2.3333,2.6667){x=t;y=-100.0000;};
-border botS08(t=2.6667,3.0000){x=t;y=-100.0000;};
-border botS09(t=3.0000,3.3333){x=t;y=-100.0000;};
-border botS10(t=3.3333,3.6667){x=t;y=-100.0000;};
-border botS11(t=3.6667,4.0000){x=t;y=-100.0000;};
-border botS12(t=4.0000,4.3333){x=t;y=-100.0000;};
-border botS13(t=4.3333,4.6667){x=t;y=-100.0000;};
-border botS14(t=4.6667,5.0000){x=t;y=-100.0000;};
-border botS15(t=5.0000,5.3333){x=t;y=-100.0000;};
-border botS16(t=5.3333,5.6667){x=t;y=-100.0000;};
-border botS17(t=5.6667,6.0000){x=t;y=-100.0000;};
-border botS18(t=6.0000,6.3333){x=t;y=-100.0000;};
-border botS19(t=6.3333,6.6667){x=t;y=-100.0000;};
-border botS20(t=6.6667,7.0000){x=t;y=-100.0000;};
-border botS21(t=7.0000,7.3333){x=t;y=-100.0000;};
-border botS22(t=7.3333,7.6667){x=t;y=-100.0000;};
-border botS23(t=7.6667,8.0000){x=t;y=-100.0000;};
-border botS24(t=8.0000,8.3333){x=t;y=-100.0000;};
-border botS25(t=8.3333,8.6667){x=t;y=-100.0000;};
-border botS26(t=8.6667,9.0000){x=t;y=-100.0000;};
-border botS27(t=9.0000,9.3333){x=t;y=-100.0000;};
-border botS28(t=9.3333,9.6667){x=t;y=-100.0000;};
-border botS29(t=9.6667,10.0000){x=t;y=-100.0000;};
-border botS30(t=10.0000,19.0000){x=t;y=-100.0000;};
-border botS31(t=19.0000,28.0000){x=t;y=-100.0000;};
-border botS32(t=28.0000,37.0000){x=t;y=-100.0000;};
-border botS33(t=37.0000,46.0000){x=t;y=-100.0000;};
-border botS34(t=46.0000,55.0000){x=t;y=-100.0000;};
-border botS35(t=55.0000,64.0000){x=t;y=-100.0000;};
-border botS36(t=64.0000,73.0000){x=t;y=-100.0000;};
-border botS37(t=73.0000,82.0000){x=t;y=-100.0000;};
-border botS38(t=82.0000,91.0000){x=t;y=-100.0000;};
-border botS39(t=91.0000,100.0000){x=t;y=-100.0000;};
-border innVS01(t=-100.0000,-0.1000){x=5.0000;y=t;};
-border rightS(t=-100.0000,-0.1000){x=100.0000;y=t;};
-mesh Th = buildmesh(inn00(2) + inn01(2) + inn02(2) + inn03(2) + inn04(2) + inn05(2) + inn06(2) + inn07(2) + inn08(2) + inn09(2) + inn10(2) + inn11(2) + inn12(2) + inn13(2) + inn14(2) + inn15(2) + inn16(2) + inn17(2) + inn18(2) + inn19(2) + inn20(2) + inn21(2) + inn22(2) + inn23(2) + inn24(2) + inn25(2) + inn26(2) + inn27(2) + inn28(2) + inn29(2) + inn30(2) + inn31(2) + inn32(2) + inn33(2) + inn34(2) + inn35(2) + inn36(2) + inn37(2) + inn38(2) + inn39(2) + innXj00(2) + innXj01(2) + innXj02(2) + innXj03(2) + innXj04(2) + innXj05(2) + innXj06(2) + innXj07(2) + innXj08(2) + innXj09(2) + innXj10(2) + innXj11(2) + innXj12(2) + innXj13(2) + innXj14(2) + innXj15(2) + innXj16(2) + innXj17(2) + innXj18(2) + innXj19(2) + innXj20(2) + innXj21(2) + innXj22(2) + innXj23(2) + innXj24(2) + innXj25(2) + innXj26(2) + innXj27(2) + innXj28(2) + innXj29(2) + innXj30(2) + innXj31(2) + innXj32(2) + innXj33(2) + innXj34(2) + innXj35(2) + innXj36(2) + innXj37(2) + innXj38(2) + innXj39(2) + right1(2) + right2(2) + top39(2)
- + top38(2) + top37(2) + top36(2) + top35(2) + top34(2) + top33(2) + top32(2) + top31(2) + top30(2) + top29(2) + top28(2) + top27(2) + top26(2) + top25(2) + top24(2) + top23(2) + top22(2) + top21(2) + top20(2) + top19(2) + top18(2) + top17(2) + top16(2) + top15(2) + top14(2) + top13(2) + top12(2) + top11(2) + top10(2) + top09(2) + top08(2) + top07(2) + top06(2) + top05(2) + top04(2) + top03(2) + top02(2) + top01(2) + top00(2) + innV100(2) + innV101(2) + innV102(2) + innV103(2) + innV104(2) + innV105(2) + innV106(2) + innV107(2) + innV108(2) + innV109(2) + innV110(2) + innV111(2) + innV112(2) + innV113(2) + innV114(2) + innV115(2) + innV116(2) + innV117(2) + innV118(2) + innV119(2) + innV120(2) + innV121(2) + innV122(2) + innV123(2) + innV124(2) + innV125(2) + innV126(2) + innV127(2) + innV128(2) + innV129(2) + innV230(2) + innV231(2) + innV232(2) + innV233(2) + innV234(2) + innV235(2) + innV236(2) + innV237(2) + innV238(2) + innV200(2) + innV201(2) + innV202(2) + innV203(2) + innV204(2) + innV205(2)
-+ innV206(2) + innV207(2) + innV208(2) + innV209(2) + innV210(2) + innV211(2) + innV212(2) + innV213(2) + innV214(2) + innV215(2) + innV216(2) + innV217(2) + innV218(2) + innV219(2) + innV220(2) + innV221(2) + innV222(2) + innV223(2) + innV224(2) + innV225(2) + innV226(2) + innV227(2) + innV228(2) + innV229(2) + innV130(2) + innV131(2) + innV132(2) + innV133(2) + innV134(2) + innV135(2) + innV136(2) + innV137(2) + innV138(2) + left1(2)+left2(2)+leftS(2)+botS00(2) + botS01(2) + botS02(2) + botS03(2) + botS04(2) + botS05(2) + botS06(2) + botS07(2) + botS08(2) + botS09(2) + botS10(2) + botS11(2) + botS12(2) + botS13(2) + botS14(2) + botS15(2) + botS16(2) + botS17(2) + botS18(2) + botS19(2) + botS20(2) + botS21(2) + botS22(2) + botS23(2) + botS24(2) + botS25(2) + botS26(2) + botS27(2) + botS28(2) + botS29(2) + botS30(2) + botS31(2) + botS32(2) + botS33(2) + botS34(2) + botS35(2) + botS36(2) + botS37(2) + botS38(2) + botS39(2) + innVS01(2)+ rightS(2));
+border TopLeftLas001(t=0.0000, 0.0003){x=t; y=0.0000;}
+border TopLeftLas002(t=0.0003, 0.0007){x=t; y=0.0000;}
+border TopLeftLas003(t=0.0007, 0.0011){x=t; y=0.0000;}
+border TopLeftLas004(t=0.0011, 0.0015){x=t; y=0.0000;}
+border TopLeftLas005(t=0.0015, 0.0019){x=t; y=0.0000;}
+border TopLeftLas006(t=0.0019, 0.0024){x=t; y=0.0000;}
+border TopLeftLas007(t=0.0024, 0.0029){x=t; y=0.0000;}
+border TopLeftLas008(t=0.0029, 0.0034){x=t; y=0.0000;}
+border TopLeftLas009(t=0.0034, 0.0039){x=t; y=0.0000;}
+border TopLeftLas010(t=0.0039, 0.0045){x=t; y=0.0000;}
+border TopLeftLas011(t=0.0045, 0.0052){x=t; y=0.0000;}
+border TopLeftLas012(t=0.0052, 0.0058){x=t; y=0.0000;}
+border TopLeftLas013(t=0.0058, 0.0066){x=t; y=0.0000;}
+border TopLeftLas014(t=0.0066, 0.0073){x=t; y=0.0000;}
+border TopLeftLas015(t=0.0073, 0.0082){x=t; y=0.0000;}
+border TopLeftLas016(t=0.0082, 0.0090){x=t; y=0.0000;}
+border TopLeftLas017(t=0.0090, 0.0100){x=t; y=0.0000;}
+border TopLeftLas018(t=0.0100, 0.0110){x=t; y=0.0000;}
+border TopLeftLas019(t=0.0110, 0.0120){x=t; y=0.0000;}
+border TopLeftLas020(t=0.0120, 0.0132){x=t; y=0.0000;}
+border TopLeftLas021(t=0.0132, 0.0144){x=t; y=0.0000;}
+border TopLeftLas022(t=0.0144, 0.0157){x=t; y=0.0000;}
+border TopLeftLas023(t=0.0157, 0.0171){x=t; y=0.0000;}
+border TopLeftLas024(t=0.0171, 0.0185){x=t; y=0.0000;}
+border TopLeftLas025(t=0.0185, 0.0201){x=t; y=0.0000;}
+border InnLeftLas001(t=0.0000, 0.0003){x=t; y=-0.0003;}
+border InnLeftLas002(t=0.0003, 0.0007){x=t; y=-0.0003;}
+border InnLeftLas003(t=0.0007, 0.0011){x=t; y=-0.0003;}
+border InnLeftLas004(t=0.0011, 0.0015){x=t; y=-0.0003;}
+border InnLeftLas005(t=0.0015, 0.0019){x=t; y=-0.0003;}
+border InnLeftLas006(t=0.0019, 0.0024){x=t; y=-0.0003;}
+border InnLeftLas007(t=0.0024, 0.0029){x=t; y=-0.0003;}
+border InnLeftLas008(t=0.0029, 0.0034){x=t; y=-0.0003;}
+border InnLeftLas009(t=0.0034, 0.0039){x=t; y=-0.0003;}
+border InnLeftLas010(t=0.0039, 0.0045){x=t; y=-0.0003;}
+border InnLeftLas011(t=0.0045, 0.0052){x=t; y=-0.0003;}
+border InnLeftLas012(t=0.0052, 0.0058){x=t; y=-0.0003;}
+border InnLeftLas013(t=0.0058, 0.0066){x=t; y=-0.0003;}
+border InnLeftLas014(t=0.0066, 0.0073){x=t; y=-0.0003;}
+border InnLeftLas015(t=0.0073, 0.0082){x=t; y=-0.0003;}
+border InnLeftLas016(t=0.0082, 0.0090){x=t; y=-0.0003;}
+border InnLeftLas017(t=0.0090, 0.0100){x=t; y=-0.0003;}
+border InnLeftLas018(t=0.0100, 0.0110){x=t; y=-0.0003;}
+border InnLeftLas019(t=0.0110, 0.0120){x=t; y=-0.0003;}
+border InnLeftLas020(t=0.0120, 0.0132){x=t; y=-0.0003;}
+border InnLeftLas021(t=0.0132, 0.0144){x=t; y=-0.0003;}
+border InnLeftLas022(t=0.0144, 0.0157){x=t; y=-0.0003;}
+border InnLeftLas023(t=0.0157, 0.0171){x=t; y=-0.0003;}
+border InnLeftLas024(t=0.0171, 0.0185){x=t; y=-0.0003;}
+border InnLeftLas025(t=0.0185, 0.0201){x=t; y=-0.0003;}
+border TopRightlas001(t=0.0201, 0.0218){x=t; y=0.0000;}
+border TopRightlas002(t=0.0218, 0.0236){x=t; y=0.0000;}
+border TopRightlas003(t=0.0236, 0.0256){x=t; y=0.0000;}
+border TopRightlas004(t=0.0256, 0.0278){x=t; y=0.0000;}
+border TopRightlas005(t=0.0278, 0.0303){x=t; y=0.0000;}
+border TopRightlas006(t=0.0303, 0.0330){x=t; y=0.0000;}
+border TopRightlas007(t=0.0330, 0.0359){x=t; y=0.0000;}
+border TopRightlas008(t=0.0359, 0.0392){x=t; y=0.0000;}
+border TopRightlas009(t=0.0392, 0.0428){x=t; y=0.0000;}
+border TopRightlas010(t=0.0428, 0.0467){x=t; y=0.0000;}
+border TopRightlas011(t=0.0467, 0.0510){x=t; y=0.0000;}
+border TopRightlas012(t=0.0510, 0.0558){x=t; y=0.0000;}
+border TopRightlas013(t=0.0558, 0.0611){x=t; y=0.0000;}
+border TopRightlas014(t=0.0611, 0.0668){x=t; y=0.0000;}
+border TopRightlas015(t=0.0668, 0.0732){x=t; y=0.0000;}
+border TopRightlas016(t=0.0732, 0.0802){x=t; y=0.0000;}
+border TopRightlas017(t=0.0802, 0.0879){x=t; y=0.0000;}
+border TopRightlas018(t=0.0879, 0.0964){x=t; y=0.0000;}
+border TopRightlas019(t=0.0964, 0.1057){x=t; y=0.0000;}
+border TopRightlas020(t=0.1057, 0.1159){x=t; y=0.0000;}
+border TopRightlas021(t=0.1159, 0.1272){x=t; y=0.0000;}
+border TopRightlas022(t=0.1272, 0.1396){x=t; y=0.0000;}
+border TopRightlas023(t=0.1396, 0.1533){x=t; y=0.0000;}
+border TopRightlas024(t=0.1533, 0.1683){x=t; y=0.0000;}
+border TopRightlas025(t=0.1683, 0.1849){x=t; y=0.0000;}
+border TopRightlas026(t=0.1849, 0.2031){x=t; y=0.0000;}
+border TopRightlas027(t=0.2031, 0.2231){x=t; y=0.0000;}
+border TopRightlas028(t=0.2231, 0.2451){x=t; y=0.0000;}
+border TopRightlas029(t=0.2451, 0.2694){x=t; y=0.0000;}
+border TopRightlas030(t=0.2694, 0.2961){x=t; y=0.0000;}
+border TopRightlas031(t=0.2961, 0.3254){x=t; y=0.0000;}
+border TopRightlas032(t=0.3254, 0.3578){x=t; y=0.0000;}
+border TopRightlas033(t=0.3578, 0.3933){x=t; y=0.0000;}
+border TopRightlas034(t=0.3933, 0.4324){x=t; y=0.0000;}
+border TopRightlas035(t=0.4324, 0.4755){x=t; y=0.0000;}
+border TopRightlas036(t=0.4755, 0.5228){x=t; y=0.0000;}
+border TopRightlas037(t=0.5228, 0.5749){x=t; y=0.0000;}
+border TopRightlas038(t=0.5749, 0.6323){x=t; y=0.0000;}
+border TopRightlas039(t=0.6323, 0.6954){x=t; y=0.0000;}
+border TopRightlas040(t=0.6954, 0.7648){x=t; y=0.0000;}
+border TopRightlas041(t=0.7648, 0.8412){x=t; y=0.0000;}
+border TopRightlas042(t=0.8412, 0.9253){x=t; y=0.0000;}
+border TopRightlas043(t=0.9253, 1.0178){x=t; y=0.0000;}
+border InnRightlas001(t=0.0201, 0.0218){x=t; y=-0.0003;}
+border InnRightlas002(t=0.0218, 0.0236){x=t; y=-0.0003;}
+border InnRightlas003(t=0.0236, 0.0256){x=t; y=-0.0003;}
+border InnRightlas004(t=0.0256, 0.0278){x=t; y=-0.0003;}
+border InnRightlas005(t=0.0278, 0.0303){x=t; y=-0.0003;}
+border InnRightlas006(t=0.0303, 0.0330){x=t; y=-0.0003;}
+border InnRightlas007(t=0.0330, 0.0359){x=t; y=-0.0003;}
+border InnRightlas008(t=0.0359, 0.0392){x=t; y=-0.0003;}
+border InnRightlas009(t=0.0392, 0.0428){x=t; y=-0.0003;}
+border InnRightlas010(t=0.0428, 0.0467){x=t; y=-0.0003;}
+border InnRightlas011(t=0.0467, 0.0510){x=t; y=-0.0003;}
+border InnRightlas012(t=0.0510, 0.0558){x=t; y=-0.0003;}
+border InnRightlas013(t=0.0558, 0.0611){x=t; y=-0.0003;}
+border InnRightlas014(t=0.0611, 0.0668){x=t; y=-0.0003;}
+border InnRightlas015(t=0.0668, 0.0732){x=t; y=-0.0003;}
+border InnRightlas016(t=0.0732, 0.0802){x=t; y=-0.0003;}
+border InnRightlas017(t=0.0802, 0.0879){x=t; y=-0.0003;}
+border InnRightlas018(t=0.0879, 0.0964){x=t; y=-0.0003;}
+border InnRightlas019(t=0.0964, 0.1057){x=t; y=-0.0003;}
+border InnRightlas020(t=0.1057, 0.1159){x=t; y=-0.0003;}
+border InnRightlas021(t=0.1159, 0.1272){x=t; y=-0.0003;}
+border InnRightlas022(t=0.1272, 0.1396){x=t; y=-0.0003;}
+border InnRightlas023(t=0.1396, 0.1533){x=t; y=-0.0003;}
+border InnRightlas024(t=0.1533, 0.1683){x=t; y=-0.0003;}
+border InnRightlas025(t=0.1683, 0.1849){x=t; y=-0.0003;}
+border InnRightlas026(t=0.1849, 0.2031){x=t; y=-0.0003;}
+border InnRightlas027(t=0.2031, 0.2231){x=t; y=-0.0003;}
+border InnRightlas028(t=0.2231, 0.2451){x=t; y=-0.0003;}
+border InnRightlas029(t=0.2451, 0.2694){x=t; y=-0.0003;}
+border InnRightlas030(t=0.2694, 0.2961){x=t; y=-0.0003;}
+border InnRightlas031(t=0.2961, 0.3254){x=t; y=-0.0003;}
+border InnRightlas032(t=0.3254, 0.3578){x=t; y=-0.0003;}
+border InnRightlas033(t=0.3578, 0.3933){x=t; y=-0.0003;}
+border InnRightlas034(t=0.3933, 0.4324){x=t; y=-0.0003;}
+border InnRightlas035(t=0.4324, 0.4755){x=t; y=-0.0003;}
+border InnRightlas036(t=0.4755, 0.5228){x=t; y=-0.0003;}
+border InnRightlas037(t=0.5228, 0.5749){x=t; y=-0.0003;}
+border InnRightlas038(t=0.5749, 0.6323){x=t; y=-0.0003;}
+border InnRightlas039(t=0.6323, 0.6954){x=t; y=-0.0003;}
+border InnRightlas040(t=0.6954, 0.7648){x=t; y=-0.0003;}
+border InnRightlas041(t=0.7648, 0.8412){x=t; y=-0.0003;}
+border InnRightlas042(t=0.8412, 0.9253){x=t; y=-0.0003;}
+border InnRightlas043(t=0.9253, 1.0178){x=t; y=-0.0003;}
+border InnVertLas001(t=-0.0003, 0.0000){x=0.0000; y=t;}
+border InnVertLas002(t=-0.0003, 0.0000){x=0.0003; y=t;}
+border InnVertLas003(t=-0.0003, 0.0000){x=0.0007; y=t;}
+border InnVertLas004(t=-0.0003, 0.0000){x=0.0011; y=t;}
+border InnVertLas005(t=-0.0003, 0.0000){x=0.0015; y=t;}
+border InnVertLas006(t=-0.0003, 0.0000){x=0.0019; y=t;}
+border InnVertLas007(t=-0.0003, 0.0000){x=0.0024; y=t;}
+border InnVertLas008(t=-0.0003, 0.0000){x=0.0029; y=t;}
+border InnVertLas009(t=-0.0003, 0.0000){x=0.0034; y=t;}
+border InnVertLas010(t=-0.0003, 0.0000){x=0.0039; y=t;}
+border InnVertLas011(t=-0.0003, 0.0000){x=0.0045; y=t;}
+border InnVertLas012(t=-0.0003, 0.0000){x=0.0052; y=t;}
+border InnVertLas013(t=-0.0003, 0.0000){x=0.0058; y=t;}
+border InnVertLas014(t=-0.0003, 0.0000){x=0.0066; y=t;}
+border InnVertLas015(t=-0.0003, 0.0000){x=0.0073; y=t;}
+border InnVertLas016(t=-0.0003, 0.0000){x=0.0082; y=t;}
+border InnVertLas017(t=-0.0003, 0.0000){x=0.0090; y=t;}
+border InnVertLas018(t=-0.0003, 0.0000){x=0.0100; y=t;}
+border InnVertLas019(t=-0.0003, 0.0000){x=0.0110; y=t;}
+border InnVertLas020(t=-0.0003, 0.0000){x=0.0120; y=t;}
+border InnVertLas021(t=-0.0003, 0.0000){x=0.0132; y=t;}
+border InnVertLas022(t=-0.0003, 0.0000){x=0.0144; y=t;}
+border InnVertLas023(t=-0.0003, 0.0000){x=0.0157; y=t;}
+border InnVertLas024(t=-0.0003, 0.0000){x=0.0171; y=t;}
+border InnVertLas025(t=-0.0003, 0.0000){x=0.0185; y=t;}
+border InnVertLas026(t=-0.0003, 0.0000){x=0.0201; y=t;}
+border InnVertLas027(t=-0.0003, 0.0000){x=0.0218; y=t;}
+border InnVertLas028(t=-0.0003, 0.0000){x=0.0236; y=t;}
+border InnVertLas029(t=-0.0003, 0.0000){x=0.0256; y=t;}
+border InnVertLas030(t=-0.0003, 0.0000){x=0.0278; y=t;}
+border InnVertLas031(t=-0.0003, 0.0000){x=0.0303; y=t;}
+border InnVertLas032(t=-0.0003, 0.0000){x=0.0330; y=t;}
+border InnVertLas033(t=-0.0003, 0.0000){x=0.0359; y=t;}
+border InnVertLas034(t=-0.0003, 0.0000){x=0.0392; y=t;}
+border InnVertLas035(t=-0.0003, 0.0000){x=0.0428; y=t;}
+border InnVertLas036(t=-0.0003, 0.0000){x=0.0467; y=t;}
+border InnVertLas037(t=-0.0003, 0.0000){x=0.0510; y=t;}
+border InnVertLas038(t=-0.0003, 0.0000){x=0.0558; y=t;}
+border InnVertLas039(t=-0.0003, 0.0000){x=0.0611; y=t;}
+border InnVertLas040(t=-0.0003, 0.0000){x=0.0668; y=t;}
+border InnVertLas041(t=-0.0003, 0.0000){x=0.0732; y=t;}
+border InnVertLas042(t=-0.0003, 0.0000){x=0.0802; y=t;}
+border InnVertLas043(t=-0.0003, 0.0000){x=0.0879; y=t;}
+border InnVertLas044(t=-0.0003, 0.0000){x=0.0964; y=t;}
+border InnVertLas045(t=-0.0003, 0.0000){x=0.1057; y=t;}
+border InnVertLas046(t=-0.0003, 0.0000){x=0.1159; y=t;}
+border InnVertLas047(t=-0.0003, 0.0000){x=0.1272; y=t;}
+border InnVertLas048(t=-0.0003, 0.0000){x=0.1396; y=t;}
+border InnVertLas049(t=-0.0003, 0.0000){x=0.1533; y=t;}
+border InnVertLas050(t=-0.0003, 0.0000){x=0.1683; y=t;}
+border InnVertLas051(t=-0.0003, 0.0000){x=0.1849; y=t;}
+border InnVertLas052(t=-0.0003, 0.0000){x=0.2031; y=t;}
+border InnVertLas053(t=-0.0003, 0.0000){x=0.2231; y=t;}
+border InnVertLas054(t=-0.0003, 0.0000){x=0.2451; y=t;}
+border InnVertLas055(t=-0.0003, 0.0000){x=0.2694; y=t;}
+border InnVertLas056(t=-0.0003, 0.0000){x=0.2961; y=t;}
+border InnVertLas057(t=-0.0003, 0.0000){x=0.3254; y=t;}
+border InnVertLas058(t=-0.0003, 0.0000){x=0.3578; y=t;}
+border InnVertLas059(t=-0.0003, 0.0000){x=0.3933; y=t;}
+border InnVertLas060(t=-0.0003, 0.0000){x=0.4324; y=t;}
+border InnVertLas061(t=-0.0003, 0.0000){x=0.4755; y=t;}
+border InnVertLas062(t=-0.0003, 0.0000){x=0.5228; y=t;}
+border InnVertLas063(t=-0.0003, 0.0000){x=0.5749; y=t;}
+border InnVertLas064(t=-0.0003, 0.0000){x=0.6323; y=t;}
+border InnVertLas065(t=-0.0003, 0.0000){x=0.6954; y=t;}
+border InnVertLas066(t=-0.0003, 0.0000){x=0.7648; y=t;}
+border InnVertLas067(t=-0.0003, 0.0000){x=0.8412; y=t;}
+border InnVertLas068(t=-0.0003, 0.0000){x=0.9253; y=t;}
+border InnVertLas069(t=-0.0003, 0.0000){x=1.0178; y=t;}
+border SubsLeft(t=-0.0003, -1.0000){x=0.0000; y=t;}
+border SubsRight(t=-1.0000, -0.0003){x=1.0178; y=t;}
+border SubsBottom(t=0.0000, 1.0178){x=t; y=-1.0000;}
+int n=2;
+mesh Th = buildmesh( TopLeftLas001(-n) + TopLeftLas002(-n) + TopLeftLas003(-n) + TopLeftLas004(-n) + TopLeftLas005(-n) + TopLeftLas006(-n) + TopLeftLas007(-n) + TopLeftLas008(-n) + TopLeftLas009(-n) + TopLeftLas010(-n) + TopLeftLas011(-n) + TopLeftLas012(-n) + TopLeftLas013(-n) + TopLeftLas014(-n) + TopLeftLas015(-n) + TopLeftLas016(-n) + TopLeftLas017(-n) + TopLeftLas018(-n) + TopLeftLas019(-n) + TopLeftLas020(-n) + TopLeftLas021(-n) + TopLeftLas022(-n) + TopLeftLas023(-n) + TopLeftLas024(-n) + TopLeftLas025(-n) + InnLeftLas001(+n) + InnLeftLas002(+n) + InnLeftLas003(+n) + InnLeftLas004(+n) + InnLeftLas005(+n) + InnLeftLas006(+n) + InnLeftLas007(+n) + InnLeftLas008(+n) + InnLeftLas009(+n) + InnLeftLas010(+n) + InnLeftLas011(+n) + InnLeftLas012(+n) + InnLeftLas013(+n) + InnLeftLas014(+n) + InnLeftLas015(+n) + InnLeftLas016(+n) + InnLeftLas017(+n) + InnLeftLas018(+n) + InnLeftLas019(+n) + InnLeftLas020(+n) + InnLeftLas021(+n) + InnLeftLas022(+n) + InnLeftLas023(+n) + InnLeftLas024(+n) + InnLeftLas025(+n) + TopRightlas001(-n) + TopRightlas002(-n) + TopRightlas003(-n) + TopRightlas004(-n) + TopRightlas005(-n) + TopRightlas006(-n) + TopRightlas007(-n) + TopRightlas008(-n) + TopRightlas009(-n) + TopRightlas010(-n) + TopRightlas011(-n) + TopRightlas012(-n) + TopRightlas013(-n) + TopRightlas014(-n) + TopRightlas015(-n) + TopRightlas016(-n) + TopRightlas017(-n) + TopRightlas018(-n) + TopRightlas019(-n) + TopRightlas020(-n) + TopRightlas021(-n) + TopRightlas022(-n) + TopRightlas023(-n) + TopRightlas024(-n) + TopRightlas025(-n) + TopRightlas026(-n) + TopRightlas027(-n) + TopRightlas028(-n) + TopRightlas029(-n) + TopRightlas030(-n) + TopRightlas031(-n) + TopRightlas032(-n) + TopRightlas033(-n) + TopRightlas034(-n) + TopRightlas035(-n) + TopRightlas036(-n) + TopRightlas037(-n) + TopRightlas038(-n) + TopRightlas039(-n) + TopRightlas040(-n) + TopRightlas041(-n) + TopRightlas042(-n) + TopRightlas043(-n) + InnRightlas001(+n) + InnRightlas002(+n) + InnRightlas003(+n) + InnRightlas004(+n) + InnRightlas005(+n) + InnRightlas006(+n) + InnRightlas007(+n) + InnRightlas008(+n) + InnRightlas009(+n) + InnRightlas010(+n) + InnRightlas011(+n) + InnRightlas012(+n) + InnRightlas013(+n) + InnRightlas014(+n) + InnRightlas015(+n) + InnRightlas016(+n) + InnRightlas017(+n) + InnRightlas018(+n) + InnRightlas019(+n) + InnRightlas020(+n) + InnRightlas021(+n) + InnRightlas022(+n) + InnRightlas023(+n) + InnRightlas024(+n) + InnRightlas025(+n) + InnRightlas026(+n) + InnRightlas027(+n) + InnRightlas028(+n) + InnRightlas029(+n) + InnRightlas030(+n) + InnRightlas031(+n) + InnRightlas032(+n) + InnRightlas033(+n) + InnRightlas034(+n) + InnRightlas035(+n) + InnRightlas036(+n) + InnRightlas037(+n) + InnRightlas038(+n) + InnRightlas039(+n) + InnRightlas040(+n) + InnRightlas041(+n) + InnRightlas042(+n) + InnRightlas043(+n)+InnVertLas001(-n)+InnVertLas002(n)+InnVertLas003(n)+InnVertLas004(n)+InnVertLas005(n)+InnVertLas006(n)+InnVertLas007(n)+InnVertLas008(n)+InnVertLas009(n)+InnVertLas010(n)+InnVertLas011(n)+InnVertLas012(n)+InnVertLas013(n)+InnVertLas014(n)+InnVertLas015(n)+InnVertLas016(n)+InnVertLas017(n)+InnVertLas018(n)+InnVertLas019(n)+InnVertLas020(n)+InnVertLas021(n)+InnVertLas022(n)+InnVertLas023(n)+InnVertLas024(n)+InnVertLas025(n)+InnVertLas026(n)+InnVertLas027(n)+InnVertLas028(n)+InnVertLas029(n)+InnVertLas030(n)+InnVertLas031(n)+InnVertLas032(n)+InnVertLas033(n)+InnVertLas034(n)+InnVertLas035(n)+InnVertLas036(n)+InnVertLas037(n)+InnVertLas038(n)+InnVertLas039(n)+InnVertLas040(n)+InnVertLas041(n)+InnVertLas042(n)+InnVertLas043(n)+InnVertLas044(n)+InnVertLas045(n)+InnVertLas046(n)+InnVertLas047(n)+InnVertLas048(n)+InnVertLas049(n)+InnVertLas050(n)+InnVertLas051(n)+InnVertLas052(n)+InnVertLas053(n)+InnVertLas054(n)+InnVertLas055(n)+InnVertLas056(n)+InnVertLas057(n)+InnVertLas058(n)+InnVertLas059(n)+InnVertLas060(n)+InnVertLas061(n)+InnVertLas062(n)+InnVertLas063(n)+InnVertLas064(n)+InnVertLas065(n)+InnVertLas066(n)+InnVertLas067(n)+InnVertLas068(n)+InnVertLas069(n) + SubsLeft(+n) + SubsRight(+n) + SubsBottom(+n));
plot(Th, wait=1);
savemesh(Th, "meshPN.msh");
Modified: fsem/examples-fondation/struct_mesh/meshPN.msh
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.msh 2007-03-09 16:57:04 UTC (rev 121)
+++ fsem/examples-fondation/struct_mesh/meshPN.msh 2007-03-13 17:04:56 UTC (rev 122)
@@ -1,1598 +1,1341 @@
-439 703 455
-94.2963557541 0 83
-100 0 83
-86.5 0 84
-77.5 0 85
-91 -0.05 200
-97.2474640012 0 83
-82 0 160
-91 0 161
-88.0000000447 -0.05 79
-94.2461120784 -0.05 80
-100 -0.05 82
-97.8259617686 -0.05 80
-85.0000000894 -0.05 79
-79.0000000447 -0.05 78
-73 0 159
-76.0000000894 -0.05 78
-91 -0.1 200
-82 -0.05 199
-86.5 -0.1 39
-68.5 0 86
-73 -0.05 198
-59.5 0 87
-50.5 0 88
-41.5 0 89
-46 0 156
-55 0 157
-64 0 158
-94.374907732 -0.1 40
-100 -0.1 245
-82 -0.1 199
-77.5 -0.1 38
-70.0000000447 -0.05 77
-73 -0.1 198
-86.1485981673 -5.72017033651 0
-67.0000000894 -0.05 77
-58.0000000894 -0.05 76
-61.0000000447 -0.05 76
-49.0000000894 -0.05 75
-52.0000000447 -0.05 75
-37 0 155
-40.0000000894 -0.05 74
-43.0000000447 -0.05 74
-46 -0.05 195
-55 -0.05 196
-64 -0.05 197
-4.16664375207 -100 216
-2.3333 -100 211
-46 -100 238
-3 -100 213
-3.3333 -100 214
-55 -100 239
-94.560950309 -100 243
-8.3333 -100 229
-8 -100 228
-2.8333562501 -100 212
-1.6667 -100 209
-8.5 -100 229
-6.16664375207 -100 222
-6 -100 222
-91 -100 243
-0.833356250099 -100 206
-4 -100 216
-1.16664375207 -100 207
-9.3333 -100 232
-9 -100 231
-1.5 -100 208
-0.5 -100 205
-4.6667 -100 218
-64 -100 240
-4.3333 -100 217
-2.16664375207 -100 210
-6.6667 -100 224
-3.5 -100 214
-3.8333562501 -100 215
-9.6667 -100 233
-4.5 -100 217
-0.3333 -100 205
-37 -100 237
-86.5 -100 242
-77.5 -100 241
-2.6667 -100 212
-0.6667 -100 206
-7.5 -100 226
-2 -100 210
-9.5 -100 232
-9.16664375207 -100 231
-8.8333562501 -100 230
-7.8333562501 -100 227
-1 -100 207
-7.3333 -100 226
-73 -100 241
-7.16664375207 -100 225
-6.8333562501 -100 224
-6.5 -100 223
-8.16664375207 -100 228
-1.3333 -100 208
-7.6667 -100 227
-41.5 -100 237
-50.5 -100 238
-59.5 -100 239
-68.5 -100 240
-82 -100 242
-8.6667 -100 230
-3.6667 -100 215
-32.5 0 90
-3.83335677438 0 111
-3.5 0 112
-2.83335677438 0 114
-2.5 0 115
-2.16664322635 0 116
-1.83335677438 0 117
-1.5 0 118
-1.16664322635 0 119
-0.833356774384 0 120
-0.5 0 121
-37 -0.05 194
-3.16664322635 0 113
-1.8333562501 -100 209
-2.5 -100 211
-6.3333 -100 223
-3.16664375207 -100 213
-7 -100 225
-0.6667 0 163
-1 0 164
-1.3333 0 165
-1.6667 0 166
-2 0 167
-2.3333 0 168
-2.6667 0 169
-3 0 170
-3.3333 0 171
-3.6667 0 172
-100 -24.4848788798 245
-77.1535444093 -10.7291246352 0
-68.5 -0.1 37
-64 -0.1 197
-55 -0.1 196
-59.5 -0.1 36
-50.5 -0.1 35
-46 -0.1 195
-34.0000000447 -0.05 73
-41.5 -0.1 34
-37 -0.1 194
-4.01463938785 -99.6908947776 0
-2.04391816356 -99.6908947776 0
-46.5963999756 -95.2230942996 0
-2.86507454502 -99.6908947776 0
-3.35770188678 -99.6908639415 0
-55.2823844182 -95.2487317941 0
-100 -100 245
-86.3761667734 -91.1794245766 0
-8.44875179552 -99.6908331054 0
-7.956081734 -99.6908947776 0
-1.55124810203 -99.6908331054 0
-6.14956474039 -99.6908947776 0
-5.8333562501 -100 221
-1.05855755141 -99.6908947776 0
-8.94144234615 -99.6908947776 0
-4.79210488945 -100 218
-64.7725546358 -95.2767425406 0
-6.64229801078 -99.6908639415 0
-9.79466645084 -100 233
-0.208032276919 -100 204
-32.5 -100 236
-38.3685001017 -95.2230324226 0
-76.5147698778 -95.27710069 0
-7.29913839353 -99.6908639415 0
-28 0 154
-31.0000000894 -0.05 73
-3.88890460069 -0.05 52
-3.77780460234 -0.05 52
-4 0 173
-3.55556666832 -0.05 51
-3.44443333665 -0.05 51
-2.88890460069 -0.05 49
-2.77780460234 -0.05 49
-2.55556666832 -0.05 48
-2.44443333665 -0.05 48
-2.22219539766 -0.05 47
-2.11109539435 -0.05 47
-1.88890460069 -0.05 46
-1.77780460234 -0.05 46
-1.55556666832 -0.05 45
-1.44443333665 -0.05 45
-1.11109539435 -0.05 44
-1.22219539766 -0.05 44
-0.888904600687 -0.05 43
-0.777804602343 -0.05 43
-0.3333 0 162
-0.555566668323 -0.05 42
-0.444433336645 -0.05 42
-3.22219539766 -0.05 50
-3.11109539435 -0.05 50
-0.6667 -0.05 163
-1 -0.05 164
-1.3333 -0.05 165
-1.6667 -0.05 166
-2 -0.05 167
-2.3333 -0.05 168
-2.6667 -0.05 169
-3 -0.05 170
-3.3333 -0.05 171
-3.6667 -0.05 172
-23.5 -100 235
-5.3333 -100 220
-19 -100 235
-5.6667 -100 221
-0.214222543931 0 122
-10 -100 234
-5.20789510806 -100 219
-5.5 -100 220
-13.7865817547 -100 234
-4 -0.05 173
-0.3333 -0.05 162
-28 -0.05 193
-23.5 0 91
-4.5 0 109
-4.16664322635 0 110
-28 -100 236
-4.3333 0 174
-80.4318718942 -32.9807707369 0
-100 -63.719308275 245
-68.2419932478 -18.8210323302 0
-63.057755854 -5.68869068351 0
-57.3542163636 -3.42830280627 0
-52.5725715864 -3.63522004209 0
-46.5964293774 -3.89382696608 0
-32.5 -0.1 33
-37.825386294 -3.42098276915 0
-5 -100 244
-2.36095804475 -98.5519388817 0
-54.990409771 -86.0172087616 0
-39.6263832176 -86.6937590406 0
-73.3457892186 -85.2089350021 0
-8.57046082017 -98.5519388817 0
-5.65693893531 -99.6908639415 0
-0 -100 204
-30.7972267045 -94.7409959973 0
-25.0000000447 -0.05 72
-28 -0.1 193
-3.83335677365 -0.1 12
-4 -0.1 134
-3.6667 -0.1 133
-4.11109539435 -0.05 53
-3.5 -0.1 11
-3.3333 -0.1 132
-2.83335677365 -0.1 9
-3 -0.1 131
-2.6667 -0.1 130
-2.5 -0.1 8
-2.3333 -0.1 129
-2.16664322562 -0.1 7
-2 -0.1 128
-1.83335677365 -0.1 6
-1.6667 -0.1 127
-1.5 -0.1 5
-1.3333 -0.1 126
-1.16664322562 -0.1 4
-1 -0.1 125
-0.83335677365 -0.1 3
-0.6667 -0.1 124
-0.215906941813 -0.05 41
-0.5 -0.1 2
-0.3333 -0.1 123
-3.16664322562 -0.1 10
-21.6360637421 -94.1577365707 0
-0.104124310072 0 122
-22.0000000894 -0.05 72
-19 0 153
-4.6667 0 175
-4.55556666832 -0.05 54
-4.44443333665 -0.05 54
-4.22219539766 -0.05 53
-4.3333 -0.05 174
-0 0 201
-15.4428267777 0 92
-7.83335677438 0 99
-4.6667 -0.05 175
-10 0 191
-19 -0.05 192
-12.0355032086 0 92
-9.78852132486 0 93
-9.5 0 94
-9.16664322635 0 95
-8.83335677438 0 96
-8.5 0 97
-8.16664322635 0 98
-9.6667 0 190
-8 0 185
-8.3333 0 186
-8.6667 0 187
-9 0 188
-9.3333 0 189
-52.4999999232 -54.0200686911 0
-53.7763148255 -14.6994266936 0
-39.6264907854 -10.6678151113 0
-28.9958911985 -5.73471257532 0
-5 -78.8853853375 244
-27.1862735899 -71.4705724888 0
-0 -63.9217286617 203
-23.5 -0.1 32
-3.68452695076 -0.326978680982 0
-4.01337101032 -0.32698779863 0
-4.16664322562 -0.1 13
-3.35558464597 -0.326978680982 0
-3.02673863995 -0.326958396777 0
-2.69789744885 -0.326978680982 0
-2.36895514407 -0.326978680982 0
-2.04010801114 -0.326958396777 0
-1.60080641192 -0.588940694545 0
-0.902824435293 -0.383029883153 0
-0.088741745621 -0.05 41
-0.214838992989 -0.1 1
-19 -0.1 192
-15.4961820841 -0.05 71
-4.83335677438 0 108
-4.77780460234 -0.05 55
-4.6667 -0.1 136
-4.5 -0.1 14
-4.3333 -0.1 135
-0 -0.05 202
-7.6667 0 184
-7.88890460069 -0.05 64
-7.77780460234 -0.05 64
-10 -0.05 191
-11.9390336722 -0.05 71
-9.78474767027 -0.05 70
-9.55556666832 -0.05 69
-9.44443333665 -0.05 69
-9.22219539766 -0.05 68
-9.11109539435 -0.05 68
-8.88890460069 -0.05 67
-8.77780460234 -0.05 67
-8.44443333665 -0.05 66
-8.55556666832 -0.05 66
-8.22219539766 -0.05 65
-8.11109539435 -0.05 65
-9.6667 -0.05 190
-8 -0.05 185
-8.3333 -0.05 186
-8.6667 -0.05 187
-9 -0.05 188
-9.3333 -0.05 189
-7.5 0 100
-15.4428267106 -0.1 31
-5.16664322635 0 107
-7.6667 -0.05 184
-5 0 176
-5.3333 0 177
-7.3333 0 183
-27.1864046177 -22.7581651022 0
-5 -44.3208289329 244
-18.0065238411 -5.14093660763 0
-0 -24.167877461 203
-2.50497354893 -1.19286153111 0
-4.34221527478 -0.327008185281 0
-0 -0.1 203
-12.0355033427 -0.1 31
-4.88890460069 -0.05 55
-4.78527509876 -0.1 15
-7.55556666832 -0.05 63
-8 -0.1 146
-7.83335677365 -0.1 24
-7.6667 -0.1 145
-9.7885213199 -0.1 30
-10 -0.1 152
-9.6667 -0.1 151
-9.5 -0.1 29
-9.3333 -0.1 150
-9.16664322562 -0.1 28
-9 -0.1 149
-8.83335677365 -0.1 27
-8.6667 -0.1 148
-8.5 -0.1 26
-8.3333 -0.1 147
-8.16664322562 -0.1 25
-7.44443333665 -0.05 63
-5.22219539766 -0.05 56
-5.11109539435 -0.05 56
-5 -0.05 176
-5.44443333665 -0.05 57
-5.5 0 106
-5.3333 -0.05 177
-7.22219539766 -0.05 62
-7.3333 -0.05 183
-7.16664322635 0 101
-5.6667 -0.05 178
-5.55556666832 -0.05 57
-5 -17.0760140568 244
-9.44161643688 -1.32982888849 0
-5 -0.1 244
-7.5 -0.1 23
-7.95989188641 -0.326958396777 0
-7.63104475348 -0.326978680982 0
-9.09717546226 -0.383029883153 0
-8.61765612254 -0.327062276497 0
-8.28873184816 -0.326978680982 0
-7.3333 -0.1 144
-5.3333 -0.1 138
-5.21472489627 -0.1 16
-5.5 -0.1 17
-5.6667 0 178
-7.16664322562 -0.1 22
-7.11109539435 -0.05 62
-7 0 182
-5.6667 -0.1 139
-5.77780460234 -0.05 58
-7 -0.05 182
-6.88890460069 -0.05 61
-8.1187127094 -1.19286153111 0
-5.65778462278 -0.327008185281 0
-7.3021024487 -0.326978680982 0
-5.83335677438 0 105
-7 -0.1 143
-6.83335677438 0 102
-5.83335677365 -0.1 18
-5.88890460069 -0.05 58
-6.83335677365 -0.1 21
-6.77780460234 -0.05 61
-6.78057113828 -0.588769815479 0
-5.98662888723 -0.32698779863 0
-6 0 179
-6.6667 0 181
-6 -0.1 140
-6 -0.05 179
-6.6667 -0.1 142
-6.6667 -0.05 181
-6.3154729468 -0.326978680982 0
-6.16664322562 -0.1 19
-6.11109539435 -0.05 59
-6.16664322635 0 104
-6.55556666832 -0.05 60
-6.5 0 103
-6.5 -0.1 20
-6.3333 -0.1 141
-6.22219539766 -0.05 59
-6.3333 0 180
-6.44443333665 -0.05 60
-6.3333 -0.05 180
-150 222 151 0
-151 52 150 0
-151 60 52 0
-151 79 60 0
-151 102 79 0
-234 151 222 0
-166 102 151 0
-166 80 102 0
-234 166 151 0
-234 160 166 0
-166 91 80 0
-101 91 166 0
-166 160 101 0
-232 234 294 0
-146 232 233 0
-149 160 232 0
-69 160 100 0
-69 101 160 0
-223 221 134 0
-225 295 224 0
-294 221 223 0
-233 294 299 0
-234 222 294 0
-100 160 149 0
-224 134 135 0
-226 295 225 0
-223 134 224 0
-222 221 294 0
-222 133 221 0
-133 29 28 0
-17 34 28 0
-19 34 17 0
-30 34 19 0
-34 133 28 0
-31 134 30 0
-31 33 134 0
-134 33 135 0
-34 30 134 0
-224 135 136 0
-295 227 296 0
-295 226 227 0
-225 137 226 0
-136 138 224 0
-138 137 225 0
-225 224 138 0
-351 294 295 0
-133 34 134 0
-226 137 139 0
-221 133 134 0
-226 139 227 0
-299 352 298 0
-48 146 98 0
-294 352 299 0
-294 351 352 0
-295 296 351 0
-223 295 294 0
-223 224 295 0
-140 227 139 0
-140 142 227 0
-227 142 229 0
-229 142 143 0
-229 228 297 0
-228 240 297 0
-297 240 301 0
-296 297 351 0
-229 143 228 0
-296 229 297 0
-296 227 229 0
-389 351 353 0
-297 353 351 0
-353 297 301 0
-353 301 314 0
-345 353 314 0
-389 352 351 0
-353 345 358 0
-365 390 366 0
-395 390 367 0
-390 365 367 0
-367 368 395 0
-395 369 370 0
-390 395 410 0
-368 369 395 0
-395 370 371 0
-395 371 372 0
-395 372 396 0
-396 397 410 0
-395 396 410 0
-372 373 396 0
-373 374 396 0
-396 374 397 0
-375 397 374 0
-393 376 362 0
-390 358 366 0
-389 390 410 0
-353 358 390 0
-375 376 397 0
-362 363 393 0
-392 394 364 0
-412 392 398 0
-412 398 403 0
-412 403 414 0
-412 414 420 0
-420 414 418 0
-418 426 420 0
-428 426 434 0
-411 420 421 0
-411 421 416 0
-389 411 391 0
-389 410 411 0
-411 400 391 0
-428 421 420 0
-426 428 420 0
-435 429 428 0
-399 400 411 0
-411 401 399 0
-411 406 401 0
-411 416 406 0
-421 424 416 0
-421 429 424 0
-421 428 429 0
-410 420 411 0
-353 390 389 0
-394 363 364 0
-397 393 410 0
-397 376 393 0
-412 394 392 0
-410 412 420 0
-394 393 363 0
-410 394 412 0
-410 393 394 0
-428 434 435 0
-236 210 205 0
-236 205 211 0
-156 236 207 0
-298 236 235 0
-236 211 207 0
-155 236 156 0
-155 156 59 0
-155 59 58 0
-155 58 120 0
-161 120 94 0
-161 94 72 0
-122 161 93 0
-167 161 122 0
-167 122 92 0
-167 92 90 0
-167 90 83 0
-167 83 97 0
-167 97 153 0
-153 88 54 0
-167 153 235 0
-161 167 235 0
-155 161 235 0
-155 120 161 0
-161 72 93 0
-97 88 153 0
-153 54 95 0
-152 95 53 0
-152 53 57 0
-152 57 103 0
-153 152 235 0
-153 95 152 0
-158 103 87 0
-86 158 65 0
-236 155 235 0
-230 236 298 0
-230 210 236 0
-158 87 65 0
-158 152 103 0
-64 158 86 0
-235 152 158 0
-85 158 64 0
-158 85 75 0
-162 158 75 0
-162 235 158 0
-235 162 209 0
-212 235 209 0
-235 212 266 0
-212 206 266 0
-266 206 204 0
-219 266 204 0
-299 298 266 0
-165 238 164 0
-238 266 219 0
-164 238 219 0
-165 233 238 0
-164 78 165 0
-165 78 98 0
-146 165 98 0
-233 299 238 0
-266 298 235 0
-146 48 99 0
-51 149 99 0
-233 165 146 0
-233 232 294 0
-266 238 299 0
-149 51 100 0
-234 232 160 0
-146 99 149 0
-232 146 149 0
-231 230 298 1
-231 144 230 1
-148 104 144 1
-144 159 230 1
-144 68 159 1
-144 76 68 1
-231 147 148 1
-237 231 298 1
-145 147 231 1
-147 81 55 1
-144 231 148 1
-145 119 147 1
-144 70 76 1
-144 46 70 1
-144 62 46 1
-144 74 62 1
-144 104 74 1
-154 145 231 1
-157 154 231 1
-157 96 154 1
-154 66 56 1
-148 73 104 1
-148 50 73 1
-148 121 50 1
-148 147 121 1
-121 147 49 1
-49 147 55 1
-119 81 147 1
-356 355 389 1
-360 356 391 1
-360 318 356 1
-319 356 318 1
-319 320 356 1
-356 320 304 1
-242 303 304 1
-302 303 241 1
-303 356 304 1
-241 303 242 1
-302 355 303 1
-243 302 241 1
-305 355 302 1
-243 245 302 1
-303 355 356 1
-245 305 302 1
-245 246 305 1
-305 246 265 1
-248 306 265 1
-306 248 247 1
-355 306 307 1
-305 265 306 1
-247 307 306 1
-307 249 250 1
-305 306 355 1
-247 249 307 1
-250 251 308 1
-308 307 250 1
-253 309 252 1
-355 307 308 1
-391 356 389 1
-308 251 252 1
-253 254 309 1
-309 308 252 1
-255 310 254 1
-355 308 309 1
-255 256 310 1
-256 257 310 1
-310 257 311 1
-258 311 257 1
-258 259 311 1
-260 311 259 1
-311 260 261 1
-261 263 311 1
-311 264 313 1
-310 311 355 1
-309 310 355 1
-309 254 310 1
-263 264 311 1
-311 313 357 1
-355 311 357 1
-389 355 357 1
-357 354 389 1
-389 354 352 1
-300 352 354 1
-300 298 352 1
-237 298 300 1
-237 163 157 1
-157 163 77 1
-77 67 157 1
-67 82 157 1
-82 61 157 1
-61 89 157 1
-157 63 96 1
-237 157 231 1
-89 63 157 1
-154 96 66 1
-118 154 56 1
-145 154 118 1
-118 84 145 1
-145 84 71 1
-47 145 71 1
-145 47 119 1
-321 357 312 43
-262 264 214 43
-264 262 313 43
-313 262 312 43
-313 312 357 43
-275 321 312 44
-312 267 275 44
-262 267 312 44
-208 267 262 44
-189 262 214 44
-189 208 262 44
-17 5 9 45
-17 9 19 45
-19 9 13 45
-30 13 18 45
-13 30 19 45
-30 18 14 46
-16 21 33 46
-31 16 33 46
-14 16 31 46
-14 31 30 46
-21 32 33 47
-33 32 135 47
-136 35 45 47
-136 135 35 47
-135 32 35 47
-136 45 37 48
-137 36 44 48
-138 36 137 48
-138 37 36 48
-138 136 37 48
-44 39 137 49
-140 38 43 49
-139 38 140 49
-139 39 38 49
-139 137 39 49
-140 43 42 50
-116 143 41 50
-143 142 41 50
-41 142 42 50
-42 142 140 50
-141 143 116 51
-169 215 240 51
-169 240 228 51
-228 141 169 51
-228 143 141 51
-215 239 240 52
-301 240 239 52
-268 301 239 52
-280 314 268 52
-314 301 268 52
-315 314 280 53
-315 345 314 53
-366 326 325 53
-358 326 366 53
-315 326 358 53
-315 358 345 53
-325 279 282 54
-325 282 327 54
-327 282 288 54
-327 288 338 54
-338 288 328 55
-288 283 328 55
-329 293 343 55
-329 283 293 55
-283 329 328 55
-293 330 343 56
-293 284 330 56
-284 331 330 56
-331 284 292 56
-331 292 342 56
-292 332 342 57
-292 285 332 57
-333 332 285 57
-333 285 291 57
-341 333 291 57
-291 335 341 58
-291 286 335 58
-286 334 335 58
-334 286 290 58
-340 334 290 58
-290 336 340 59
-290 287 336 59
-287 337 336 59
-287 289 337 59
-289 339 337 59
-289 323 339 60
-289 277 323 60
-277 324 323 60
-277 322 324 60
-322 347 324 60
-322 361 347 61
-322 344 361 61
-344 377 361 61
-344 350 377 61
-385 377 350 61
-385 350 384 62
-405 408 404 62
-386 405 404 62
-386 404 384 62
-386 384 350 62
-405 409 408 63
-419 423 427 63
-415 423 419 63
-415 419 409 63
-415 409 405 63
-432 427 423 64
-432 423 433 64
-432 433 438 64
-438 437 439 64
-437 438 433 64
-437 436 439 65
-430 422 425 65
-430 431 422 65
-436 431 430 65
-437 431 436 65
-425 422 417 66
-422 413 417 66
-417 413 407 66
-387 407 402 66
-407 413 402 66
-387 402 388 67
-402 382 388 67
-381 349 383 67
-382 349 381 67
-381 388 382 67
-349 378 383 68
-346 378 349 68
-346 379 378 68
-346 348 379 68
-348 380 379 68
-380 348 359 69
-359 348 316 69
-278 317 270 69
-316 270 317 69
-317 359 316 69
-278 270 271 70
-217 271 270 70
-217 272 271 70
-217 220 272 70
-220 274 272 70
-220 273 274 71
-218 273 220 71
-218 244 273 71
-218 172 244 71
-172 213 244 71
-170 213 172 72
-203 171 132 72
-106 132 171 72
-171 170 106 72
-106 170 172 72
-132 173 203 73
-173 132 107 73
-107 174 173 73
-174 107 131 73
-174 131 202 73
-192 202 131 74
-193 130 201 74
-193 117 130 74
-193 192 117 74
-117 192 131 74
-201 130 175 75
-130 108 175 75
-175 108 176 75
-176 108 129 75
-176 129 200 75
-200 129 177 76
-129 109 177 76
-177 109 178 76
-178 128 199 76
-109 128 178 76
-199 128 179 77
-128 110 179 77
-179 110 180 77
-180 127 198 77
-110 127 180 77
-198 127 181 78
-127 111 181 78
-181 111 182 78
-182 111 126 78
-197 182 126 78
-197 126 183 79
-126 112 183 79
-184 183 112 79
-184 125 196 79
-125 184 112 79
-125 186 196 80
-195 185 124 80
-185 113 124 80
-185 186 113 80
-125 113 186 80
-195 124 187 81
-124 114 187 81
-188 187 114 81
-188 123 194 81
-123 188 114 81
-194 123 190 82
-123 115 190 82
-115 191 190 82
-115 189 191 82
-191 189 214 82
-9 5 8 84
-13 7 18 84
-13 3 7 84
-13 9 3 84
-9 8 3 84
-14 18 7 85
-14 7 4 85
-16 15 21 85
-4 15 16 85
-16 14 4 85
-15 32 21 86
-15 20 32 86
-20 35 32 86
-35 20 27 86
-35 27 45 86
-37 45 27 87
-36 26 44 87
-36 22 26 87
-36 37 22 87
-37 27 22 87
-39 44 26 88
-39 26 23 88
-38 25 43 88
-38 23 25 88
-38 39 23 88
-43 25 42 89
-24 42 25 89
-116 41 40 89
-24 40 41 89
-41 42 24 89
-141 116 40 90
-40 105 141 90
-105 169 141 90
-169 105 168 90
-168 215 169 90
-168 239 215 91
-168 216 239 91
-280 268 269 91
-216 269 268 91
-268 239 216 91
-315 280 269 92
-269 276 315 92
-315 276 281 92
-326 315 281 92
-326 281 279 92
-326 279 325 92
-365 366 325 93
-327 365 325 93
-367 365 327 93
-367 327 338 93
-328 367 338 94
-343 369 329 94
-369 368 329 94
-368 328 329 94
-368 367 328 94
-330 369 343 95
-371 331 342 95
-331 371 370 95
-370 330 331 95
-370 369 330 95
-371 342 332 96
-373 333 341 96
-373 372 333 96
-372 332 333 96
-372 371 332 96
-373 341 335 97
-375 334 340 97
-375 374 334 97
-374 335 334 97
-374 373 335 97
-336 375 340 98
-376 375 336 98
-336 337 376 98
-339 362 337 98
-337 362 376 98
-323 362 339 99
-363 362 323 99
-323 324 363 99
-347 364 324 99
-364 363 324 99
-361 364 347 100
-392 364 361 100
-361 377 392 100
-385 398 377 100
-392 377 398 100
-384 398 385 101
-384 403 398 101
-384 404 403 101
-414 403 404 101
-408 414 404 101
-409 414 408 102
-419 427 426 102
-419 426 418 102
-409 419 418 102
-409 418 414 102
-427 432 426 103
-432 434 426 103
-439 435 438 103
-438 435 434 103
-438 434 432 103
-439 436 435 104
-429 435 436 104
-429 436 430 104
-430 425 424 104
-430 424 429 104
-425 417 424 105
-424 417 416 105
-416 417 407 105
-407 387 406 105
-407 406 416 105
-387 388 406 106
-388 401 406 106
-401 388 381 106
-381 383 399 106
-381 399 401 106
-383 378 399 107
-378 400 399 107
-379 400 378 107
-391 400 379 107
-379 380 391 107
-359 391 380 108
-360 391 359 108
-360 359 317 108
-318 360 317 108
-278 318 317 108
-271 318 278 109
-272 274 320 109
-319 272 320 109
-271 272 319 109
-271 319 318 109
-320 274 273 110
-242 244 213 110
-304 244 242 110
-273 244 304 110
-273 304 320 110
-242 213 170 111
-241 242 170 111
-243 171 203 111
-241 171 243 111
-171 241 170 111
-203 173 243 112
-173 245 243 112
-245 173 174 112
-245 174 246 112
-246 174 202 112
-246 202 192 113
-248 193 201 113
-265 193 248 113
-265 192 193 113
-265 246 192 113
-248 201 175 114
-249 176 200 114
-247 176 249 114
-247 175 176 114
-248 175 247 114
-200 177 249 115
-178 199 251 115
-250 178 251 115
-177 178 250 115
-249 177 250 115
-199 179 251 116
-180 198 253 116
-252 180 253 116
-179 180 252 116
-251 179 252 116
-253 198 181 117
-255 182 197 117
-255 254 182 117
-254 181 182 117
-253 181 254 117
-255 197 183 118
-255 183 256 118
-256 183 184 118
-257 184 196 118
-256 184 257 118
-257 196 186 119
-257 186 258 119
-186 185 258 119
-185 195 259 119
-258 185 259 119
-195 187 259 120
-261 188 194 120
-261 260 188 120
-187 188 260 120
-260 259 187 120
-261 194 190 121
-263 261 190 121
-190 191 263 121
-214 264 191 121
-264 263 191 121
-12 2 6 162
-10 8 5 162
-10 1 8 162
-6 1 10 162
-10 12 6 162
-12 11 2 162
-29 11 12 164
-28 29 12 164
-28 12 10 164
-28 10 17 164
-17 10 5 164
-150 222 245
-222 133 245
-133 29 245
-298 230 244
-352 298 244
-389 352 244
-391 389 244
-60 52 243
-52 150 243
-102 79 242
-79 60 242
-91 80 241
-80 102 241
-69 101 240
-101 91 240
-51 100 239
-100 69 239
-48 99 238
-99 51 238
-78 98 237
-98 48 237
-219 164 236
-164 78 236
-206 204 235
-204 219 235
-209 212 234
-212 206 234
-75 162 233
-162 209 233
-64 85 232
-85 75 232
-65 86 231
-86 64 231
-103 87 230
-87 65 230
-53 57 229
-57 103 229
-54 95 228
-95 53 228
-97 88 227
-88 54 227
-90 83 226
-83 97 226
-122 92 225
-92 90 225
-72 93 224
-93 122 224
-120 94 223
-94 72 223
-59 58 222
-58 120 222
-207 156 221
-156 59 221
-205 211 220
-211 207 220
-230 210 219
-210 205 219
-68 159 218
-159 230 218
-70 76 217
-76 68 217
-62 46 216
-46 70 216
-104 74 215
-74 62 215
-50 73 214
-73 104 214
-49 121 213
-121 50 213
-81 55 212
-55 49 212
-47 119 211
-119 81 211
-84 71 210
-71 47 210
-56 118 209
-118 84 209
-96 66 208
-66 56 208
-89 63 207
-63 96 207
-82 61 206
-61 89 206
-77 67 205
-67 82 205
-237 163 204
-163 77 204
-357 354 203
-354 300 203
-300 237 203
-321 357 202
-275 321 201
-17 5 200
-18 30 199
-21 33 198
-45 136 197
-44 137 196
-43 140 195
-116 143 194
-215 240 193
-280 314 192
-325 279 191
-288 338 190
-293 343 189
-292 342 188
-291 341 187
-290 340 186
-289 339 185
-322 347 184
-350 385 183
-405 408 182
-423 427 181
-437 439 180
-422 425 179
-402 387 178
-349 383 177
-348 380 176
-270 278 175
-220 274 174
-172 213 173
-132 203 172
-131 202 171
-130 201 170
-129 200 169
-128 199 168
-127 198 167
-126 197 166
-125 196 165
-124 195 164
-123 194 163
-214 189 162
-5 8 161
-7 18 160
-15 21 159
-27 45 158
-26 44 157
-25 43 156
-40 116 155
-168 215 154
-269 280 153
-325 366 152
-338 367 151
-343 369 150
-342 371 149
-341 373 148
-340 375 147
-339 362 146
-347 364 145
-385 398 144
-408 414 143
-427 426 142
-439 435 141
-425 424 140
-387 406 139
-383 399 138
-380 391 137
-278 318 136
-274 320 135
-213 242 134
-203 243 133
-202 246 132
-201 248 131
-200 249 130
-199 251 129
-198 253 128
-197 255 127
-196 257 126
-195 259 125
-194 261 124
-264 214 123
-189 208 122
-208 267 122
-267 275 122
-123 115 121
-115 189 121
-124 114 120
-114 123 120
-125 113 119
-113 124 119
-126 112 118
-112 125 118
-127 111 117
-111 126 117
-128 110 116
-110 127 116
-129 109 115
-109 128 115
-130 108 114
-108 129 114
-131 117 113
-117 130 113
-132 107 112
-107 131 112
-172 106 111
-106 132 111
-220 218 110
-218 172 110
-270 217 109
-217 220 109
-348 316 108
-316 270 108
-349 346 107
-346 348 107
-402 382 106
-382 349 106
-422 413 105
-413 402 105
-437 431 104
-431 422 104
-423 433 103
-433 437 103
-405 415 102
-415 423 102
-350 386 101
-386 405 101
-322 344 100
-344 350 100
-289 277 99
-277 322 99
-290 287 98
-287 289 98
-291 286 97
-286 290 97
-292 285 96
-285 291 96
-293 284 95
-284 292 95
-288 283 94
-283 293 94
-279 282 93
-282 288 93
-269 276 92
-276 281 92
-281 279 92
-168 216 91
-216 269 91
-40 105 90
-105 168 90
-25 24 89
-24 40 89
-26 23 88
-23 25 88
-27 22 87
-22 26 87
-15 20 86
-20 27 86
-7 4 85
-4 15 85
-8 3 84
-3 7 84
-2 6 83
-6 1 83
-1 8 83
-11 2 82
-29 11 81
-5 10 80
-10 12 80
-12 11 80
-13 18 79
-9 13 79
-5 9 79
-16 21 78
-14 16 78
-18 14 78
-35 45 77
-32 35 77
-21 32 77
-36 44 76
-37 36 76
-45 37 76
-38 43 75
-39 38 75
-44 39 75
-41 116 74
-42 41 74
-43 42 74
-169 215 73
-141 169 73
-116 141 73
-268 280 72
-239 268 72
-215 239 72
-326 325 71
-315 326 71
-280 315 71
-338 327 70
-327 325 70
-343 329 69
-329 328 69
-328 338 69
-342 331 68
-331 330 68
-330 343 68
-341 333 67
-333 332 67
-332 342 67
-340 334 66
-334 335 66
-335 341 66
-339 337 65
-337 336 65
-336 340 65
-347 324 64
-324 323 64
-323 339 64
-385 377 63
-377 361 63
-361 347 63
-408 404 62
-404 384 62
-384 385 62
-427 419 61
-419 409 61
-409 408 61
-439 438 60
-438 432 60
-432 427 60
-425 430 59
-430 436 59
-436 439 59
-387 407 58
-407 417 58
-417 425 58
-383 381 57
-381 388 57
-388 387 57
-380 379 56
-379 378 56
-378 383 56
-278 317 55
-317 359 55
-359 380 55
-274 272 54
-272 271 54
-271 278 54
-213 244 53
-244 273 53
-273 274 53
-203 171 52
-171 170 52
-170 213 52
-202 174 51
-174 173 51
-173 203 51
-201 193 50
-193 192 50
-192 202 50
-200 176 49
-176 175 49
-175 201 49
-199 178 48
-178 177 48
-177 200 48
-198 180 47
-180 179 47
-179 199 47
-197 182 46
-182 181 46
-181 198 46
-196 184 45
-184 183 45
-183 197 45
-195 185 44
-185 186 44
-186 196 44
-194 188 43
-188 187 43
-187 195 43
-214 191 42
-191 190 42
-190 194 42
-312 321 41
-262 312 41
-214 262 41
-28 17 40
-29 28 40
-19 30 39
-17 19 39
-31 33 38
-30 31 38
-135 136 37
-33 135 37
-138 137 36
-136 138 36
-139 140 35
-137 139 35
-142 143 34
-140 142 34
-228 240 33
-143 228 33
-301 314 32
-240 301 32
-358 366 31
-345 358 31
-314 345 31
-365 367 30
-366 365 30
-368 369 29
-367 368 29
-370 371 28
-369 370 28
-372 373 27
-371 372 27
-374 375 26
-373 374 26
-376 362 25
-375 376 25
-363 364 24
-362 363 24
-392 398 23
-364 392 23
-403 414 22
-398 403 22
-418 426 21
-414 418 21
-434 435 20
-426 434 20
-429 424 19
-435 429 19
-416 406 18
-424 416 18
-401 399 17
-406 401 17
-400 391 16
-399 400 16
-360 318 15
-391 360 15
-319 320 14
-318 319 14
-304 242 13
-320 304 13
-241 243 12
-242 241 12
-245 246 11
-243 245 11
-265 248 10
-246 265 10
-247 249 9
-248 247 9
-250 251 8
-249 250 8
-252 253 7
-251 252 7
-254 255 6
-253 254 6
-256 257 5
-255 256 5
-258 259 4
-257 258 4
-260 261 3
-259 260 3
-263 264 2
-261 263 2
-313 357 1
-264 313 1
+376 602 362
+0.6954 0 201
+0.958683198977 0 93
+0.662979835236 0 89
+0.6954 -0.0003 201
+0.729135665971 0 90
+0.9253 0 204
+0.9253 -0.0003 204
+0.989154646869 0 93
+0.959714386749 -0.0003 136
+0.6323 -0.0003 200
+0.662979835236 -0.0003 132
+0.6323 0 200
+1.0178 0 205
+0.60280207603 0 88
+0.8412 0 203
+0.801933646965 0 91
+0.882081317294 0 92
+0.729135665971 -0.0003 133
+0.7648 0 202
+0.686639942015 -0.0372217948154 0
+0.7648 -0.0003 202
+0.882081317294 -0.0003 135
+0.91824807918 -0.0564929335011 0
+1.0178 -0.0003 207
+0.646876462836 -0.0212364073316 0
+0.618249320885 -0.0206187468944 0
+0.60280207603 -0.0003 131
+0.5749 0 199
+0.8412 -0.0003 203
+0.801933646965 -0.0003 134
+0.2961 0 192
+0.412300432652 0 84
+0.498498789698 0 86
+0.548118497717 0 87
+0.3578 0 194
+0.3254 0 193
+0.5228 -0.0003 198
+0.341150411129 0 82
+0.375066030163 0 83
+0.453355302414 0 85
+0.5749 -0.0003 199
+0.4755 0 197
+0.5228 0 198
+0.310339498785 0 81
+0.3933 0 195
+0.4324 0 196
+0.680516111319 -0.132337979926 0
+0.621262325203 -0.0582607384986 0
+0.81407534828 -0.0779206348147 0
+1.0178 -0.211168498421 207
+0.590676941329 -0.0200238421267 0
+0.548118497717 -0.0003 130
+0.2961 -0.0003 192
+0.282388631603 0 80
+0.412300432652 -0.0003 127
+0.498498789698 -0.0003 129
+0.3578 -0.0003 194
+0.341150411129 -0.0003 125
+0.3254 -0.0003 193
+0.522504179874 -0.0215756173697 0
+0.375066030163 -0.0003 126
+0.453355302414 -0.0003 128
+0.4755 -0.0003 197
+0.310339498785 -0.0003 124
+0.3933 -0.0003 195
+0.4324 -0.0003 196
+0.256910463399 0 79
+0.2694 0 191
+0.484447593821 -0.0127044514593 0
+1.0178 -0.55399980939 207
+0.282388631603 -0.0003 123
+0.795321409966 -0.275863994665 0
+0.630880792342 -0.233560657882 0
+0.58875509659 -0.12109089858 0
+0.572197593374 -0.0555554320377 0
+0.297246927522 -0.0132347647016 0
+0.2694 -0.0003 191
+0.435593457246 -0.0214676123981 0
+0.406108321039 -0.0181172561157 0
+0.498835378788 -0.0326508811083 0
+0.382299315668 -0.0154118704104 0
+0.348382177103 -0.0145210825074 0
+0.317348065276 -0.0136691932024 0
+0.522021705255 -0.056275567018 0
+0.460478656467 -0.0173679247691 0
+0.2451 0 190
+0.256910463399 -0.0003 122
+1.0178 -1 208
+0.728975146536 -0.763324819589 0
+0.2783955...
[truncated message content] |
|
From: <fab...@us...> - 2007-03-09 16:57:09
|
Revision: 121
http://fsem.svn.sourceforge.net/fsem/?rev=121&view=rev
Author: fabiandortu
Date: 2007-03-09 08:57:04 -0800 (Fri, 09 Mar 2007)
Log Message:
-----------
Worked on mesh for ultra-shallow doping.
* The problem of the dip where the mesh is refined is almost solved.
It is not clear yet what affect the solution. Possibilities:
- obtuse element
- too large ratio between two elements
Modified Paths:
--------------
fsem/examples-fondation/struct_mesh/meshPN.msh
fsem/examples-fondation/struct_mesh/meshPN.sce
fsem/examples-fondation/struct_mesh/meshPN_refine.edp
Added Paths:
-----------
fsem/examples-fondation/struct_mesh/meshPN.edp
Added: fsem/examples-fondation/struct_mesh/meshPN.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.edp (rev 0)
+++ fsem/examples-fondation/struct_mesh/meshPN.edp 2007-03-09 16:57:04 UTC (rev 121)
@@ -0,0 +1,251 @@
+border inn00(t=0.0000,0.3333){x=t;y=-0.1000;};
+border inn01(t=0.3333,0.6667){x=t;y=-0.1000;};
+border inn02(t=0.6667,1.0000){x=t;y=-0.1000;};
+border inn03(t=1.0000,1.3333){x=t;y=-0.1000;};
+border inn04(t=1.3333,1.6667){x=t;y=-0.1000;};
+border inn05(t=1.6667,2.0000){x=t;y=-0.1000;};
+border inn06(t=2.0000,2.3333){x=t;y=-0.1000;};
+border inn07(t=2.3333,2.6667){x=t;y=-0.1000;};
+border inn08(t=2.6667,3.0000){x=t;y=-0.1000;};
+border inn09(t=3.0000,3.3333){x=t;y=-0.1000;};
+border inn10(t=3.3333,3.6667){x=t;y=-0.1000;};
+border inn11(t=3.6667,4.0000){x=t;y=-0.1000;};
+border inn12(t=4.0000,4.3333){x=t;y=-0.1000;};
+border inn13(t=4.3333,4.6667){x=t;y=-0.1000;};
+border inn14(t=4.6667,5.0000){x=t;y=-0.1000;};
+border inn15(t=5.0000,5.3333){x=t;y=-0.1000;};
+border inn16(t=5.3333,5.6667){x=t;y=-0.1000;};
+border inn17(t=5.6667,6.0000){x=t;y=-0.1000;};
+border inn18(t=6.0000,6.3333){x=t;y=-0.1000;};
+border inn19(t=6.3333,6.6667){x=t;y=-0.1000;};
+border inn20(t=6.6667,7.0000){x=t;y=-0.1000;};
+border inn21(t=7.0000,7.3333){x=t;y=-0.1000;};
+border inn22(t=7.3333,7.6667){x=t;y=-0.1000;};
+border inn23(t=7.6667,8.0000){x=t;y=-0.1000;};
+border inn24(t=8.0000,8.3333){x=t;y=-0.1000;};
+border inn25(t=8.3333,8.6667){x=t;y=-0.1000;};
+border inn26(t=8.6667,9.0000){x=t;y=-0.1000;};
+border inn27(t=9.0000,9.3333){x=t;y=-0.1000;};
+border inn28(t=9.3333,9.6667){x=t;y=-0.1000;};
+border inn29(t=9.6667,10.0000){x=t;y=-0.1000;};
+border inn30(t=10.0000,19.0000){x=t;y=-0.1000;};
+border inn31(t=19.0000,28.0000){x=t;y=-0.1000;};
+border inn32(t=28.0000,37.0000){x=t;y=-0.1000;};
+border inn33(t=37.0000,46.0000){x=t;y=-0.1000;};
+border inn34(t=46.0000,55.0000){x=t;y=-0.1000;};
+border inn35(t=55.0000,64.0000){x=t;y=-0.1000;};
+border inn36(t=64.0000,73.0000){x=t;y=-0.1000;};
+border inn37(t=73.0000,82.0000){x=t;y=-0.1000;};
+border inn38(t=82.0000,91.0000){x=t;y=-0.1000;};
+border inn39(t=91.0000,100.0000){x=t;y=-0.1000;};
+border innXj00(t=0.0000,0.3333){x=t;y=-0.0500;};
+border innXj01(t=0.3333,0.6667){x=t;y=-0.0500;};
+border innXj02(t=0.6667,1.0000){x=t;y=-0.0500;};
+border innXj03(t=1.0000,1.3333){x=t;y=-0.0500;};
+border innXj04(t=1.3333,1.6667){x=t;y=-0.0500;};
+border innXj05(t=1.6667,2.0000){x=t;y=-0.0500;};
+border innXj06(t=2.0000,2.3333){x=t;y=-0.0500;};
+border innXj07(t=2.3333,2.6667){x=t;y=-0.0500;};
+border innXj08(t=2.6667,3.0000){x=t;y=-0.0500;};
+border innXj09(t=3.0000,3.3333){x=t;y=-0.0500;};
+border innXj10(t=3.3333,3.6667){x=t;y=-0.0500;};
+border innXj11(t=3.6667,4.0000){x=t;y=-0.0500;};
+border innXj12(t=4.0000,4.3333){x=t;y=-0.0500;};
+border innXj13(t=4.3333,4.6667){x=t;y=-0.0500;};
+border innXj14(t=4.6667,5.0000){x=t;y=-0.0500;};
+border innXj15(t=5.0000,5.3333){x=t;y=-0.0500;};
+border innXj16(t=5.3333,5.6667){x=t;y=-0.0500;};
+border innXj17(t=5.6667,6.0000){x=t;y=-0.0500;};
+border innXj18(t=6.0000,6.3333){x=t;y=-0.0500;};
+border innXj19(t=6.3333,6.6667){x=t;y=-0.0500;};
+border innXj20(t=6.6667,7.0000){x=t;y=-0.0500;};
+border innXj21(t=7.0000,7.3333){x=t;y=-0.0500;};
+border innXj22(t=7.3333,7.6667){x=t;y=-0.0500;};
+border innXj23(t=7.6667,8.0000){x=t;y=-0.0500;};
+border innXj24(t=8.0000,8.3333){x=t;y=-0.0500;};
+border innXj25(t=8.3333,8.6667){x=t;y=-0.0500;};
+border innXj26(t=8.6667,9.0000){x=t;y=-0.0500;};
+border innXj27(t=9.0000,9.3333){x=t;y=-0.0500;};
+border innXj28(t=9.3333,9.6667){x=t;y=-0.0500;};
+border innXj29(t=9.6667,10.0000){x=t;y=-0.0500;};
+border innXj30(t=10.0000,19.0000){x=t;y=-0.0500;};
+border innXj31(t=19.0000,28.0000){x=t;y=-0.0500;};
+border innXj32(t=28.0000,37.0000){x=t;y=-0.0500;};
+border innXj33(t=37.0000,46.0000){x=t;y=-0.0500;};
+border innXj34(t=46.0000,55.0000){x=t;y=-0.0500;};
+border innXj35(t=55.0000,64.0000){x=t;y=-0.0500;};
+border innXj36(t=64.0000,73.0000){x=t;y=-0.0500;};
+border innXj37(t=73.0000,82.0000){x=t;y=-0.0500;};
+border innXj38(t=82.0000,91.0000){x=t;y=-0.0500;};
+border innXj39(t=91.0000,100.0000){x=t;y=-0.0500;};
+border right1(t=-0.1000,-0.0500){x=100.0000;y=t;};
+border right2(t=-0.0500,0.0000){x=100.0000;y=t;};
+border top39(t=100.0000,91.0000){x=t;y=0.0000;};
+border top38(t=91.0000,82.0000){x=t;y=0.0000;};
+border top37(t=82.0000,73.0000){x=t;y=0.0000;};
+border top36(t=73.0000,64.0000){x=t;y=0.0000;};
+border top35(t=64.0000,55.0000){x=t;y=0.0000;};
+border top34(t=55.0000,46.0000){x=t;y=0.0000;};
+border top33(t=46.0000,37.0000){x=t;y=0.0000;};
+border top32(t=37.0000,28.0000){x=t;y=0.0000;};
+border top31(t=28.0000,19.0000){x=t;y=0.0000;};
+border top30(t=19.0000,10.0000){x=t;y=0.0000;};
+border top29(t=10.0000,9.6667){x=t;y=0.0000;};
+border top28(t=9.6667,9.3333){x=t;y=0.0000;};
+border top27(t=9.3333,9.0000){x=t;y=0.0000;};
+border top26(t=9.0000,8.6667){x=t;y=0.0000;};
+border top25(t=8.6667,8.3333){x=t;y=0.0000;};
+border top24(t=8.3333,8.0000){x=t;y=0.0000;};
+border top23(t=8.0000,7.6667){x=t;y=0.0000;};
+border top22(t=7.6667,7.3333){x=t;y=0.0000;};
+border top21(t=7.3333,7.0000){x=t;y=0.0000;};
+border top20(t=7.0000,6.6667){x=t;y=0.0000;};
+border top19(t=6.6667,6.3333){x=t;y=0.0000;};
+border top18(t=6.3333,6.0000){x=t;y=0.0000;};
+border top17(t=6.0000,5.6667){x=t;y=0.0000;};
+border top16(t=5.6667,5.3333){x=t;y=0.0000;};
+border top15(t=5.3333,5.0000){x=t;y=0.0000;};
+border top14(t=5.0000,4.6667){x=t;y=0.0000;};
+border top13(t=4.6667,4.3333){x=t;y=0.0000;};
+border top12(t=4.3333,4.0000){x=t;y=0.0000;};
+border top11(t=4.0000,3.6667){x=t;y=0.0000;};
+border top10(t=3.6667,3.3333){x=t;y=0.0000;};
+border top09(t=3.3333,3.0000){x=t;y=0.0000;};
+border top08(t=3.0000,2.6667){x=t;y=0.0000;};
+border top07(t=2.6667,2.3333){x=t;y=0.0000;};
+border top06(t=2.3333,2.0000){x=t;y=0.0000;};
+border top05(t=2.0000,1.6667){x=t;y=0.0000;};
+border top04(t=1.6667,1.3333){x=t;y=0.0000;};
+border top03(t=1.3333,1.0000){x=t;y=0.0000;};
+border top02(t=1.0000,0.6667){x=t;y=0.0000;};
+border top01(t=0.6667,0.3333){x=t;y=0.0000;};
+border top00(t=0.3333,0.0000){x=t;y=0.0000;};
+border innV100(t=-0.1000,-0.0500){x=0.3333;y=t;};
+border innV101(t=-0.1000,-0.0500){x=0.6667;y=t;};
+border innV102(t=-0.1000,-0.0500){x=1.0000;y=t;};
+border innV103(t=-0.1000,-0.0500){x=1.3333;y=t;};
+border innV104(t=-0.1000,-0.0500){x=1.6667;y=t;};
+border innV105(t=-0.1000,-0.0500){x=2.0000;y=t;};
+border innV106(t=-0.1000,-0.0500){x=2.3333;y=t;};
+border innV107(t=-0.1000,-0.0500){x=2.6667;y=t;};
+border innV108(t=-0.1000,-0.0500){x=3.0000;y=t;};
+border innV109(t=-0.1000,-0.0500){x=3.3333;y=t;};
+border innV110(t=-0.1000,-0.0500){x=3.6667;y=t;};
+border innV111(t=-0.1000,-0.0500){x=4.0000;y=t;};
+border innV112(t=-0.1000,-0.0500){x=4.3333;y=t;};
+border innV113(t=-0.1000,-0.0500){x=4.6667;y=t;};
+border innV114(t=-0.1000,-0.0500){x=5.0000;y=t;};
+border innV115(t=-0.1000,-0.0500){x=5.3333;y=t;};
+border innV116(t=-0.1000,-0.0500){x=5.6667;y=t;};
+border innV117(t=-0.1000,-0.0500){x=6.0000;y=t;};
+border innV118(t=-0.1000,-0.0500){x=6.3333;y=t;};
+border innV119(t=-0.1000,-0.0500){x=6.6667;y=t;};
+border innV120(t=-0.1000,-0.0500){x=7.0000;y=t;};
+border innV121(t=-0.1000,-0.0500){x=7.3333;y=t;};
+border innV122(t=-0.1000,-0.0500){x=7.6667;y=t;};
+border innV123(t=-0.1000,-0.0500){x=8.0000;y=t;};
+border innV124(t=-0.1000,-0.0500){x=8.3333;y=t;};
+border innV125(t=-0.1000,-0.0500){x=8.6667;y=t;};
+border innV126(t=-0.1000,-0.0500){x=9.0000;y=t;};
+border innV127(t=-0.1000,-0.0500){x=9.3333;y=t;};
+border innV128(t=-0.1000,-0.0500){x=9.6667;y=t;};
+border innV129(t=-0.1000,-0.0500){x=10.0000;y=t;};
+border innV230(t=-0.0500,0.0000){x=19.0000;y=t;};
+border innV231(t=-0.0500,0.0000){x=28.0000;y=t;};
+border innV232(t=-0.0500,0.0000){x=37.0000;y=t;};
+border innV233(t=-0.0500,0.0000){x=46.0000;y=t;};
+border innV234(t=-0.0500,0.0000){x=55.0000;y=t;};
+border innV235(t=-0.0500,0.0000){x=64.0000;y=t;};
+border innV236(t=-0.0500,0.0000){x=73.0000;y=t;};
+border innV237(t=-0.0500,0.0000){x=82.0000;y=t;};
+border innV238(t=-0.0500,0.0000){x=91.0000;y=t;};
+border innV200(t=-0.0500,0.0000){x=0.3333;y=t;};
+border innV201(t=-0.0500,0.0000){x=0.6667;y=t;};
+border innV202(t=-0.0500,0.0000){x=1.0000;y=t;};
+border innV203(t=-0.0500,0.0000){x=1.3333;y=t;};
+border innV204(t=-0.0500,0.0000){x=1.6667;y=t;};
+border innV205(t=-0.0500,0.0000){x=2.0000;y=t;};
+border innV206(t=-0.0500,0.0000){x=2.3333;y=t;};
+border innV207(t=-0.0500,0.0000){x=2.6667;y=t;};
+border innV208(t=-0.0500,0.0000){x=3.0000;y=t;};
+border innV209(t=-0.0500,0.0000){x=3.3333;y=t;};
+border innV210(t=-0.0500,0.0000){x=3.6667;y=t;};
+border innV211(t=-0.0500,0.0000){x=4.0000;y=t;};
+border innV212(t=-0.0500,0.0000){x=4.3333;y=t;};
+border innV213(t=-0.0500,0.0000){x=4.6667;y=t;};
+border innV214(t=-0.0500,0.0000){x=5.0000;y=t;};
+border innV215(t=-0.0500,0.0000){x=5.3333;y=t;};
+border innV216(t=-0.0500,0.0000){x=5.6667;y=t;};
+border innV217(t=-0.0500,0.0000){x=6.0000;y=t;};
+border innV218(t=-0.0500,0.0000){x=6.3333;y=t;};
+border innV219(t=-0.0500,0.0000){x=6.6667;y=t;};
+border innV220(t=-0.0500,0.0000){x=7.0000;y=t;};
+border innV221(t=-0.0500,0.0000){x=7.3333;y=t;};
+border innV222(t=-0.0500,0.0000){x=7.6667;y=t;};
+border innV223(t=-0.0500,0.0000){x=8.0000;y=t;};
+border innV224(t=-0.0500,0.0000){x=8.3333;y=t;};
+border innV225(t=-0.0500,0.0000){x=8.6667;y=t;};
+border innV226(t=-0.0500,0.0000){x=9.0000;y=t;};
+border innV227(t=-0.0500,0.0000){x=9.3333;y=t;};
+border innV228(t=-0.0500,0.0000){x=9.6667;y=t;};
+border innV229(t=-0.0500,0.0000){x=10.0000;y=t;};
+border innV130(t=-0.1000,-0.0500){x=19.0000;y=t;};
+border innV131(t=-0.1000,-0.0500){x=28.0000;y=t;};
+border innV132(t=-0.1000,-0.0500){x=37.0000;y=t;};
+border innV133(t=-0.1000,-0.0500){x=46.0000;y=t;};
+border innV134(t=-0.1000,-0.0500){x=55.0000;y=t;};
+border innV135(t=-0.1000,-0.0500){x=64.0000;y=t;};
+border innV136(t=-0.1000,-0.0500){x=73.0000;y=t;};
+border innV137(t=-0.1000,-0.0500){x=82.0000;y=t;};
+border innV138(t=-0.1000,-0.0500){x=91.0000;y=t;};
+border left1(t=0.0000,-0.0500){x=0.0000;y=t;};
+border left2(t=-0.0500,-0.1000){x=0.0000;y=t;};
+border leftS(t=-0.1000,-100.0000){x=0.0000;y=t;};
+border botS00(t=0.0000,0.3333){x=t;y=-100.0000;};
+border botS01(t=0.3333,0.6667){x=t;y=-100.0000;};
+border botS02(t=0.6667,1.0000){x=t;y=-100.0000;};
+border botS03(t=1.0000,1.3333){x=t;y=-100.0000;};
+border botS04(t=1.3333,1.6667){x=t;y=-100.0000;};
+border botS05(t=1.6667,2.0000){x=t;y=-100.0000;};
+border botS06(t=2.0000,2.3333){x=t;y=-100.0000;};
+border botS07(t=2.3333,2.6667){x=t;y=-100.0000;};
+border botS08(t=2.6667,3.0000){x=t;y=-100.0000;};
+border botS09(t=3.0000,3.3333){x=t;y=-100.0000;};
+border botS10(t=3.3333,3.6667){x=t;y=-100.0000;};
+border botS11(t=3.6667,4.0000){x=t;y=-100.0000;};
+border botS12(t=4.0000,4.3333){x=t;y=-100.0000;};
+border botS13(t=4.3333,4.6667){x=t;y=-100.0000;};
+border botS14(t=4.6667,5.0000){x=t;y=-100.0000;};
+border botS15(t=5.0000,5.3333){x=t;y=-100.0000;};
+border botS16(t=5.3333,5.6667){x=t;y=-100.0000;};
+border botS17(t=5.6667,6.0000){x=t;y=-100.0000;};
+border botS18(t=6.0000,6.3333){x=t;y=-100.0000;};
+border botS19(t=6.3333,6.6667){x=t;y=-100.0000;};
+border botS20(t=6.6667,7.0000){x=t;y=-100.0000;};
+border botS21(t=7.0000,7.3333){x=t;y=-100.0000;};
+border botS22(t=7.3333,7.6667){x=t;y=-100.0000;};
+border botS23(t=7.6667,8.0000){x=t;y=-100.0000;};
+border botS24(t=8.0000,8.3333){x=t;y=-100.0000;};
+border botS25(t=8.3333,8.6667){x=t;y=-100.0000;};
+border botS26(t=8.6667,9.0000){x=t;y=-100.0000;};
+border botS27(t=9.0000,9.3333){x=t;y=-100.0000;};
+border botS28(t=9.3333,9.6667){x=t;y=-100.0000;};
+border botS29(t=9.6667,10.0000){x=t;y=-100.0000;};
+border botS30(t=10.0000,19.0000){x=t;y=-100.0000;};
+border botS31(t=19.0000,28.0000){x=t;y=-100.0000;};
+border botS32(t=28.0000,37.0000){x=t;y=-100.0000;};
+border botS33(t=37.0000,46.0000){x=t;y=-100.0000;};
+border botS34(t=46.0000,55.0000){x=t;y=-100.0000;};
+border botS35(t=55.0000,64.0000){x=t;y=-100.0000;};
+border botS36(t=64.0000,73.0000){x=t;y=-100.0000;};
+border botS37(t=73.0000,82.0000){x=t;y=-100.0000;};
+border botS38(t=82.0000,91.0000){x=t;y=-100.0000;};
+border botS39(t=91.0000,100.0000){x=t;y=-100.0000;};
+border innVS01(t=-100.0000,-0.1000){x=5.0000;y=t;};
+border rightS(t=-100.0000,-0.1000){x=100.0000;y=t;};
+mesh Th = buildmesh(inn00(2) + inn01(2) + inn02(2) + inn03(2) + inn04(2) + inn05(2) + inn06(2) + inn07(2) + inn08(2) + inn09(2) + inn10(2) + inn11(2) + inn12(2) + inn13(2) + inn14(2) + inn15(2) + inn16(2) + inn17(2) + inn18(2) + inn19(2) + inn20(2) + inn21(2) + inn22(2) + inn23(2) + inn24(2) + inn25(2) + inn26(2) + inn27(2) + inn28(2) + inn29(2) + inn30(2) + inn31(2) + inn32(2) + inn33(2) + inn34(2) + inn35(2) + inn36(2) + inn37(2) + inn38(2) + inn39(2) + innXj00(2) + innXj01(2) + innXj02(2) + innXj03(2) + innXj04(2) + innXj05(2) + innXj06(2) + innXj07(2) + innXj08(2) + innXj09(2) + innXj10(2) + innXj11(2) + innXj12(2) + innXj13(2) + innXj14(2) + innXj15(2) + innXj16(2) + innXj17(2) + innXj18(2) + innXj19(2) + innXj20(2) + innXj21(2) + innXj22(2) + innXj23(2) + innXj24(2) + innXj25(2) + innXj26(2) + innXj27(2) + innXj28(2) + innXj29(2) + innXj30(2) + innXj31(2) + innXj32(2) + innXj33(2) + innXj34(2) + innXj35(2) + innXj36(2) + innXj37(2) + innXj38(2) + innXj39(2) + right1(2) + right2(2) + top39(2)
+ + top38(2) + top37(2) + top36(2) + top35(2) + top34(2) + top33(2) + top32(2) + top31(2) + top30(2) + top29(2) + top28(2) + top27(2) + top26(2) + top25(2) + top24(2) + top23(2) + top22(2) + top21(2) + top20(2) + top19(2) + top18(2) + top17(2) + top16(2) + top15(2) + top14(2) + top13(2) + top12(2) + top11(2) + top10(2) + top09(2) + top08(2) + top07(2) + top06(2) + top05(2) + top04(2) + top03(2) + top02(2) + top01(2) + top00(2) + innV100(2) + innV101(2) + innV102(2) + innV103(2) + innV104(2) + innV105(2) + innV106(2) + innV107(2) + innV108(2) + innV109(2) + innV110(2) + innV111(2) + innV112(2) + innV113(2) + innV114(2) + innV115(2) + innV116(2) + innV117(2) + innV118(2) + innV119(2) + innV120(2) + innV121(2) + innV122(2) + innV123(2) + innV124(2) + innV125(2) + innV126(2) + innV127(2) + innV128(2) + innV129(2) + innV230(2) + innV231(2) + innV232(2) + innV233(2) + innV234(2) + innV235(2) + innV236(2) + innV237(2) + innV238(2) + innV200(2) + innV201(2) + innV202(2) + innV203(2) + innV204(2) + innV205(2)
++ innV206(2) + innV207(2) + innV208(2) + innV209(2) + innV210(2) + innV211(2) + innV212(2) + innV213(2) + innV214(2) + innV215(2) + innV216(2) + innV217(2) + innV218(2) + innV219(2) + innV220(2) + innV221(2) + innV222(2) + innV223(2) + innV224(2) + innV225(2) + innV226(2) + innV227(2) + innV228(2) + innV229(2) + innV130(2) + innV131(2) + innV132(2) + innV133(2) + innV134(2) + innV135(2) + innV136(2) + innV137(2) + innV138(2) + left1(2)+left2(2)+leftS(2)+botS00(2) + botS01(2) + botS02(2) + botS03(2) + botS04(2) + botS05(2) + botS06(2) + botS07(2) + botS08(2) + botS09(2) + botS10(2) + botS11(2) + botS12(2) + botS13(2) + botS14(2) + botS15(2) + botS16(2) + botS17(2) + botS18(2) + botS19(2) + botS20(2) + botS21(2) + botS22(2) + botS23(2) + botS24(2) + botS25(2) + botS26(2) + botS27(2) + botS28(2) + botS29(2) + botS30(2) + botS31(2) + botS32(2) + botS33(2) + botS34(2) + botS35(2) + botS36(2) + botS37(2) + botS38(2) + botS39(2) + innVS01(2)+ rightS(2));
+plot(Th, wait=1);
+savemesh(Th, "meshPN.msh");
+
Modified: fsem/examples-fondation/struct_mesh/meshPN.msh
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.msh 2007-03-09 12:49:44 UTC (rev 120)
+++ fsem/examples-fondation/struct_mesh/meshPN.msh 2007-03-09 16:57:04 UTC (rev 121)
@@ -1,434 +1,1598 @@
-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
+439 703 455
+94.2963557541 0 83
+100 0 83
+86.5 0 84
+77.5 0 85
+91 -0.05 200
+97.2474640012 0 83
+82 0 160
+91 0 161
+88.0000000447 -0.05 79
+94.2461120784 -0.05 80
+100 -0.05 82
+97.8259617686 -0.05 80
+85.0000000894 -0.05 79
+79.0000000447 -0.05 78
+73 0 159
+76.0000000894 -0.05 78
+91 -0.1 200
+82 -0.05 199
+86.5 -0.1 39
+68.5 0 86
+73 -0.05 198
+59.5 0 87
+50.5 0 88
+41.5 0 89
+46 0 156
+55 0 157
+64 0 158
+94.374907732 -0.1 40
+100 -0.1 245
+82 -0.1 199
+77.5 -0.1 38
+70.0000000447 -0.05 77
+73 -0.1 198
+86.1485981673 -5.72017033651 0
+67.0000000894 -0.05 77
+58.0000000894 -0.05 76
+61.0000000447 -0.05 76
+49.0000000894 -0.05 75
+52.0000000447 -0.05 75
+37 0 155
+40.0000000894 -0.05 74
+43.0000000447 -0.05 74
+46 -0.05 195
+55 -0.05 196
+64 -0.05 197
+4.16664375207 -100 216
+2.3333 -100 211
+46 -100 238
+3 -100 213
+3.3333 -100 214
+55 -100 239
+94.560950309 -100 243
+8.3333 -100 229
+8 -100 228
+2.8333562501 -100 212
+1.6667 -100 209
+8.5 -100 229
+6.16664375207 -100 222
+6 -100 222
+91 -100 243
+0.833356250099 -100 206
+4 -100 216
+1.16664375207 -100 207
+9.3333 -100 232
+9 -100 231
+1.5 -100 208
+0.5 -100 205
+4.6667 -100 218
+64 -100 240
+4.3333 -100 217
+2.16664375207 -100 210
+6.6667 -100 224
+3.5 -100 214
+3.8333562501 -100 215
+9.6667 -100 233
+4.5 -100 217
+0.3333 -100 205
+37 -100 237
+86.5 -100 242
+77.5 -100 241
+2.6667 -100 212
+0.6667 -100 206
+7.5 -100 226
+2 -100 210
+9.5 -100 232
+9.16664375207 -100 231
+8.8333562501 -100 230
+7.8333562501 -100 227
+1 -100 207
+7.3333 -100 226
+73 -100 241
+7.16664375207 -100 225
+6.8333562501 -100 224
+6.5 -100 223
+8.16664375207 -100 228
+1.3333 -100 208
+7.6667 -100 227
+41.5 -100 237
+50.5 -100 238
+59.5 -100 239
+68.5 -100 240
+82 -100 242
+8.6667 -100 230
+3.6667 -100 215
+32.5 0 90
+3.83335677438 0 111
+3.5 0 112
+2.83335677438 0 114
+2.5 0 115
+2.16664322635 0 116
+1.83335677438 0 117
+1.5 0 118
+1.16664322635 0 119
+0.833356774384 0 120
+0.5 0 121
+37 -0.05 194
+3.16664322635 0 113
+1.8333562501 -100 209
+2.5 -100 211
+6.3333 -100 223
+3.16664375207 -100 213
+7 -100 225
+0.6667 0 163
+1 0 164
+1.3333 0 165
+1.6667 0 166
+2 0 167
+2.3333 0 168
+2.6667 0 169
+3 0 170
+3.3333 0 171
+3.6667 0 172
+100 -24.4848788798 245
+77.1535444093 -10.7291246352 0
+68.5 -0.1 37
+64 -0.1 197
+55 -0.1 196
+59.5 -0.1 36
+50.5 -0.1 35
+46 -0.1 195
+34.0000000447 -0.05 73
+41.5 -0.1 34
+37 -0.1 194
+4.01463938785 -99.6908947776 0
+2.04391816356 -99.6908947776 0
+46.5963999756 -95.2230942996 0
+2.86507454502 -99.6908947776 0
+3.35770188678 -99.6908639415 0
+55.2823844182 -95.2487317941 0
+100 -100 245
+86.3761667734 -91.1794245766 0
+8.44875179552 -99.6908331054 0
+7.956081734 -99.6908947776 0
+1.55124810203 -99.6908331054 0
+6.14956474039 -99.6908947776 0
+5.8333562501 -100 221
+1.05855755141 -99.6908947776 0
+8.94144234615 -99.6908947776 0
+4.79210488945 -100 218
+64.7725546358 -95.2767425406 0
+6.64229801078 -99.6908639415 0
+9.79466645084 -100 233
+0.208032276919 -100 204
+32.5 -100 236
+38.3685001017 -95.2230324226 0
+76.5147698778 -95.27710069 0
+7.29913839353 -99.6908639415 0
+28 0 154
+31.0000000894 -0.05 73
+3.88890460069 -0.05 52
+3.77780460234 -0.05 52
+4 0 173
+3.55556666832 -0.05 51
+3.44443333665 -0.05 51
+2.88890460069 -0.05 49
+2.77780460234 -0.05 49
+2.55556666832 -0.05 48
+2.44443333665 -0.05 48
+2.22219539766 -0.05 47
+2.11109539435 -0.05 47
+1.88890460069 -0.05 46
+1.77780460234 -0.05 46
+1.55556666832 -0.05 45
+1.44443333665 -0.05 45
+1.11109539435 -0.05 44
+1.22219539766 -0.05 44
+0.888904600687 -0.05 43
+0.777804602343 -0.05 43
+0.3333 0 162
+0.555566668323 -0.05 42
+0.444433336645 -0.05 42
+3.22219539766 -0.05 50
+3.11109539435 -0.05 50
+0.6667 -0.05 163
+1 -0.05 164
+1.3333 -0.05 165
+1.6667 -0.05 166
+2 -0.05 167
+2.3333 -0.05 168
+2.6667 -0.05 169
+3 -0.05 170
+3.3333 -0.05 171
+3.6667 -0.05 172
+23.5 -100 235
+5.3333 -100 220
+19 -100 235
+5.6667 -100 221
+0.214222543931 0 122
+10 -100 234
+5.20789510806 -100 219
+5.5 -100 220
+13.7865817547 -100 234
+4 -0.05 173
+0.3333 -0.05 162
+28 -0.05 193
+23.5 0 91
+4.5 0 109
+4.16664322635 0 110
+28 -100 236
+4.3333 0 174
+80.4318718942 -32.9807707369 0
+100 -63.719308275 245
+68.2419932478 -18.8210323302 0
+63.057755854 -5.68869068351 0
+57.3542163636 -3.42830280627 0
+52.5725715864 -3.63522004209 0
+46.5964293774 -3.89382696608 0
+32.5 -0.1 33
+37.825386294 -3.42098276915 0
+5 -100 244
+2.36095804475 -98.5519388817 0
+54.990409771 -86.0172087616 0
+39.6263832176 -86.6937590406 0
+73.3457892186 -85.2089350021 0
+8.57046082017 -98.5519388817 0
+5.65693893531 -99.6908639415 0
+0 -100 204
+30.7972267045 -94.7409959973 0
+25.0000000447 -0.05 72
+28 -0.1 193
+3.83335677365 -0.1 12
+4 -0.1 134
+3.6667 -0.1 133
+4.11109539435 -0.05 53
+3.5 -0.1 11
+3.3333 -0.1 132
+2.83335677365 -0.1 9
+3 -0.1 131
+2.6667 -0.1 130
+2.5 -0.1 8
+2.3333 -0.1 129
+2.16664322562 -0.1 7
+2 -0.1 128
+1.83335677365 -0.1 6
+1.6667 -0.1 127
+1.5 -0.1 5
+1.3333 -0.1 126
+1.16664322562 -0.1 4
+1 -0.1 125
+0.83335677365 -0.1 3
+0.6667 -0.1 124
+0.215906941813 -0.05 41
+0.5 -0.1 2
+0.3333 -0.1 123
+3.16664322562 -0.1 10
+21.6360637421 -94.1577365707 0
+0.104124310072 0 122
+22.0000000894 -0.05 72
+19 0 153
+4.6667 0 175
+4.55556666832 -0.05 54
+4.44443333665 -0.05 54
+4.22219539766 -0.05 53
+4.3333 -0.05 174
+0 0 201
+15.4428267777 0 92
+7.83335677438 0 99
+4.6667 -0.05 175
+10 0 191
+19 -0.05 192
+12.0355032086 0 92
+9.78852132486 0 93
+9.5 0 94
+9.16664322635 0 95
+8.83335677438 0 96
+8.5 0 97
+8.16664322635 0 98
+9.6667 0 190
+8 0 185
+8.3333 0 186
+8.6667 0 187
+9 0 188
+9.3333 0 189
+52.4999999232 -54.0200686911 0
+53.7763148255 -14.6994266936 0
+39.6264907854 -10.6678151113 0
+28.9958911985 -5.73471257532 0
+5 -78.8853853375 244
+27.1862735899 -71.4705724888 0
+0 -63.9217286617 203
+23.5 -0.1 32
+3.68452695076 -0.326978680982 0
+4.01337101032 -0.32698779863 0
+4.16664322562 -0.1 13
+3.35558464597 -0.326978680982 0
+3.02673863995 -0.326958396777 0
+2.69789744885 -0.326978680982 0
+2.36895514407 -0.326978680982 0
+2.04010801114 -0.326958396777 0
+1.60080641192 -0.588940694545 0
+0.902824435293 -0.383029883153 0
+0.088741745621 -0.05 41
+0.214838992989 -0.1 1
+19 -0.1 192
+15.4961820841 -0.05 71
+4.83335677438 0 108
+4.77780460234 -0.05 55
+4.6667 -0.1 136
+4.5 -0.1 14
+4.3333 -0.1 135
+0 -0.05 202
+7.6667 0 184
+7.88890460069 -0.05 64
+7.77780460234 -0.05 64
+10 -0.05 191
+11.9390336722 -0.05 71
+9.78474767027 -0.05 70
+9.55556666832 -0.05 69
+9.44443333665 -0.05 69
+9.22219539766 -0.05 68
+9.11109539435 -0.05 68
+8.88890460069 -0.05 67
+8.77780460234 -0.05 67
+8.44443333665 -0.05 66
+8.55556666832 -0.05 66
+8.22219539766 -0.05 65
+8.11109539435 -0.05 65
+9.6667 -0.05 190
+8 -0.05 185
+8.3333 -0.05 186
+8.6667 -0.05 187
+9 -0.05 188
+9.3333 -0.05 189
+7.5 0 100
+15.4428267106 -0.1 31
+5.16664322635 0 107
+7.6667 -0.05 184
+5 0 176
+5.3333 0 177
+7.3333 0 183
+27.1864046177 -22.7581651022 0
+5 -44.3208289329 244
+18.0065238411 -5.14093660763 0
+0 -24.167877461 203
+2.50497354893 -1.19286153111 0
+4.34221527478 -0.327008185281 0
+0 -0.1 203
+12.0355033427 -0.1 31
+4.88890460069 -0.05 55
+4.78527509876 -0.1 15
+7.55556666832 -0.05 63
+8 -0.1 146
+7.83335677365 -0.1 24
+7.6667 -0.1 145
+9.7885213199 -0.1 30
+10 -0.1 152
+9.6667 -0.1 151
+9.5 -0.1 29
+9.3333 -0.1 150
+9.16664322562 -0.1 28
+9 -0.1 149
+8.83335677365 -0.1 27
+8.6667 -0.1 148
+8.5 -0.1 26
+8.3333 -0.1 147
+8.16664322562 -0.1 25
+7.44443333665 -0.05 63
+5.22219539766 -0.05 56
+5.11109539435 -0.05 56
+5 -0.05 176
+5.44443333665 -0.05 57
+5.5 0 106
+5.3333 -0.05 177
+7.22219539766 -0.05 62
+7.3333 -0.05 183
+7.16664322635 0 101
+5.6667 -0.05 178
+5.55556666832 -0.05 57
+5 -17.0760140568 244
+9.44161643688 -1.32982888849 0
+5 -0.1 244
+7.5 -0.1 23
+7.95989188641 -0.326958396777 0
+7.63104475348 -0.326978680982 0
+9.09717546226 -0.383029883153 0
+8.61765612254 -0.327062276497 0
+8.28873184816 -0.326978680982 0
+7.3333 -0.1 144
+5.3333 -0.1 138
+5.21472489627 -0.1 16
+5.5 -0.1 17
+5.6667 0 178
+7.16664322562 -0.1 22
+7.11109539435 -0.05 62
+7 0 182
+5.6667 -0.1 139
+5.77780460234 -0.05 58
+7 -0.05 182
+6.88890460069 -0.05 61
+8.1187127094 -1.19286153111 0
+5.65778462278 -0.327008185281 0
+7.3021024487 -0.326978680982 0
+5.83335677438 0 105
+7 -0.1 143
+6.83335677438 0 102
+5.83335677365 -0.1 18
+5.88890460069 -0.05 58
+6.83335677365 -0.1 21
+6.77780460234 -0.05 61
+6.78057113828 -0.588769815479 0
+5.98662888723 -0.32698779863 0
+6 0 179
+6.6667 0 181
+6 -0.1 140
+6 -0.05 179
+6.6667 -0.1 142
+6.6667 -0.05 181
+6.3154729468 -0.326978680982 0
+6.16664322562 -0.1 19
+6.11109539435 -0.05 59
+6.16664322635 0 104
+6.55556666832 -0.05 60
+6.5 0 103
+6.5 -0.1 20
+6.3333 -0.1 141
+6.22219539766 -0.05 59
+6.3333 0 180
+6.44443333665 -0.05 60
+6.3333 -0.05 180
+150 222 151 0
+151 52 150 0
+151 60 52 0
+151 79 60 0
+151 102 79 0
+234 151 222 0
+166 102 151 0
+166 80 102 0
+234 166 151 0
+234 160 166 0
+166 91 80 0
+101 91 166 0
+166 160 101 0
+232 234 294 0
+146 232 233 0
+149 160 232 0
+69 160 100 0
+69 101 160 0
+223 221 134 0
+225 295 224 0
+294 221 223 0
+233 294 299 0
+234 222 294 0
+100 160 149 0
+224 134 135 0
+226 295 225 0
+223 134 224 0
+222 221 294 0
+222 133 221 0
+133 29 28 0
+17 34 28 0
+19 34 17 0
+30 34 19 0
+34 133 28 0
+31 134 30 0
+31 33 134 0
+134 33 135 0
+34 30 134 0
+224 135 136 0
+295 227 296 0
+295 226 227 0
+225 137 226 0
+136 138 224 0
+138 137 225 0
+225 224 138 0
+351 294 295 0
+133 34 134 0
+226 137 139 0
+221 133 134 0
+226 139 227 0
+299 352 298 0
+48 146 98 0
+294 352 299 0
+294 351 352 0
+295 296 351 0
+223 295 294 0
+223 224 295 0
+140 227 139 0
+140 142 227 0
+227 142 229 0
+229 142 143 0
+229 228 297 0
+228 240 297 0
+297 240 301 0
+296 297 351 0
+229 143 228 0
+296 229 297 0
+296 227 229 0
+389 351 353 0
+297 353 351 0
+353 297 301 0
+353 301 314 0
+345 353 314 0
+389 352 351 0
+353 345 358 0
+365 390 366 0
+395 390 367 0
+390 365 367 0
+367 368 395 0
+395 369 370 0
+390 395 410 0
+368 369 395 0
+395 370 371 0
+395 371 372 0
+395 372 396 0
+396 397 410 0
+395 396 410 0
+372 373 396 0
+373 374 396 0
+396 374 397 0
+375 397 374 0
+393 376 362 0
+390 358 366 0
+389 390 410 0
+353 358 390 0
+375 376 397 0
+362 363 393 0
+392 394 364 0
+412 392 398 0
+412 398 403 0
+412 403 414 0
+412 414 420 0
+420 414 418 0
+418 426 420 0
+428 426 434 0
+411 420 421 0
+411 421 416 0
+389 411 391 0
+389 410 411 0
+411 400 391 0
+428 421 420 0
+426 428 420 0
+435 429 428 0
+399 400 411 0
+411 401 399 0
+411 406 401 0
+411 416 406 0
+421 424 416 0
+421 429 424 0
+421 428 429 0
+410 420 411 0
+353 390 389 0
+394 363 364 0
+397 393 410 0
+397 376 393 0
+412 394 392 0
+410 412 420 0
+394 393 363 0
+410 394 412 0
+410 393 394 0
+428 434 435 0
+236 210 205 0
+236 205 211 0
+156 236 207 0
+298 236 235 0
+236 211 207 0
+155 236 156 0
+155 156 59 0
+155 59 58 0
+155 58 120 0
+161 120 94 0
+161 94 72 0
+122 161 93 0
+167 161 122 0
+167 122 92 0
+167 92 90 0
+167 90 83 0
+167 83 97 0
+167 97 153 0
+153 88 54 0
+167 153 235 0
+161 167 235 0
+155 161 235 0
+155 120 161 0
+161 72 93 0
+97 88 153 0
+153 54 95 0
+152 95 53 0
+152 53 57 0
+152 57 103 0
+153 152 235 0
+153 95 152 0
+158 103 87 0
+86 158 65 0
+236 155 235 0
+230 236 298 0
+230 210 236 0
+158 87 65 0
+158 152 103 0
+64 158 86 0
+235 152 158 0
+85 158 64 0
+158 85 75 0
+162 158 75 0
+162 235 158 0
+235 162 209 0
+212 235 209 0
+235 212 266 0
+212 206 266 0
+266 206 204 0
+219 266 204 0
+299 298 266 0
+165 238 164 0
+238 266 219 0
+164 238 219 0
+165 233 238 0
+164 78 165 0
+165 78 98 0
+146 165 98 0
+233 299 238 0
+266 298 235 0
+146 48 99 0
+51 149 99 0
+233 165 146 0
+233 232 294 0
+266 238 299 0
+149 51 100 0
+234 232 160 0
+146 99 149 0
+232 146 149 0
+231 230 298 1
+231 144 230 1
+148 104 144 1
+144 159 230 1
+144 68 159 1
+144 76 68 1
+231 147 148 1
+237 231 298 1
+145 147 231 1
+147 81 55 1
+144 231 148 1
+145 119 147 1
+144 70 76 1
+144 46 70 1
+144 62 46 1
+144 74 62 1
+144 104 74 1
+154 145 231 1
+157 154 231 1
+157 96 154 1
+154 66 56 1
+148 73 104 1
+148 50 73 1
+148 121 50 1
+148 147 121 1
+121 147 49 1
+49 147 55 1
+119 81 147 1
+356 355 389 1
+360 356 391 1
+360 318 356 1
+319 356 318 1
+319 320 356 1
+356 320 304 1
+242 303 304 1
+302 303 241 1
+303 356 304 1
+241 303 242 1
+302 355 303 1
+243 302 241 1
+305 355 302 1
+243 245 302 1
+303 355 356 1
+245 305 302 1
+245 246 305 1
+305 246 265 1
+248 306 265 1
+306 248 247 1
+355 306 307 1
+305 265 306 1
+247 307 306 1
+307 249 250 1
+305 306 355 1
+247 249 307 1
+250 251 308 1
+308 307 250 1
+253 309 252 1
+355 307 308 1
+391 356 389 1
+308 251 252 1
+253 254 309 1
+309 308 252 1
+255 310 254 1
+355 308 309 1
+255 256 310 1
+256 257 310 1
+310 257 311 1
+258 311 257 1
+258 259 311 1
+260 311 259 1
+311 260 261 1
+261 263 311 1
+311 264 313 1
+310 311 355 1
+309 310 355 1
+309 254 310 1
+263 264 311 1
+311 313 357 1
+355 311 357 1
+389 355 357 1
+357 354 389 1
+389 354 352 1
+300 352 354 1
+300 298 352 1
+237 298 300 1
+237 163 157 1
+157 163 77 1
+77 67 157 1
+67 82 157 1
+82 61 157 1
+61 89 157 1
+157 63 96 1
+237 157 231 1
+89 63 157 1
+154 96 66 1
+118 154 56 1
+145 154 118 1
+118 84 145 1
+145 84 71 1
+47 145 71 1
+145 47 119 1
+321 357 312 43
+262 264 214 43
+264 262 313 43
+313 262 312 43
+313 312 357 43
+275 321 312 44
+312 267 275 44
+262 267 312 44
+208 267 262 44
+189 262 214 44
+189 208 262 44
+17 5 9 45
+17 9 19 45
+19 9 13 45
+30 13 18 45
+13 30 19 45
+30 18 14 46
+16 21 33 46
+31 16 33 46
+14 16 31 46
+14 31 30 46
+21 32 33 47
+33 32 135 47
+136 35 45 47
+136 135 35 47
+135 32 35 47
+136 45 37 48
+137 36 44 48
+138 36 137 48
+138 37 36 48
+138 136 37 48
+44 39 137 49
+140 38 43 49
+139 38 140 49
+139 39 38 49
+139 137 39 49
+140 43 42 50
+116 143 41 50
+143 142 41 50
+41 142 42 50
+42 142 140 50
+141 143 116 51
+169 215 240 51
+169 240 228 51
+228 141 169 51
+228 143 141 51
+215 239 240 52
+301 240 239 52
+268 301 239 52
+280 314 268 52
+314 301 268 52
+315 314 280 53
+315 345 314 53
+366 326 325 53
+358 326 366 53
+315 326 358 53
+315 358 345 53
+325 279 282 54
+325 282 327 54
+327 282 288 54
+327 288 338 54
+338 288 328 55
+288 283 328 55
+329 293 343 55
+329 283 293 55
+283 329 328 55
+293 330 343 56
+293 284 330 56
+284 331 330 56
+331 284 292 56
+331 292 342 56
+292 332 342 57
+292 285 332 57
+333 332 285 57
+333 285 291 57
+341 333 291 57
+291 335 341 58
+291 286 335 58
+286 334 335 58
+334 286 290 58
+340 334 290 58
+290 336 340 59
+290 287 336 59
+287 337 336 59
+287 289 337 59
+289 339 337 59
+289 323 339 60
+289 277 323 60
+277 324 323 60
+277 322 324 60
+322 347 324 60
+322 361 347 61
+322 344 361 61
+344 377 361 61
+344 350 377 61
+385 377 350 61
+385 350 384 62
+405 408 404 62
+386 405 404 62
+386 404 384 62
+386 384 350 62
+405 409 408 63
+419 423 427 63
+415 423 419 63
+415 419 409 63
+415 409 405 63
+432 427 423 64
+432 423 433 64
+432 433 438 64
+438 437 439 64
+437 438 433 64
+437 436 439 65
+430 422 425 65
+430 431 422 65
+436 431 430 65
+437 431 436 65
+425 422 417 66
+422 413 417 66
+417 413 407 66
+387 407 402 66
+407 413 402 66
+387 402 388 67
+402 382 388 67
+381 349 383 67
+382 349 381 67
+381 388 382 67
+349 378 383 68
+346 378 349 68
+346 379 378 68
+346 348 379 68
+348 380 379 68
+380 348 359 69
+359 348 316 69
+278 317 270 69
+316 270 317 69
+317 359 316 69
+278 270 271 70
+217 271 270 70
+217 272 271 70
+217 220 272 70
+220 274 272 70
+220 273 274 71
+218 273 220 71
+218 244 273 71
+218 172 244 71
+172 213 244 71
+170 213 172 72
+203 171 132 72
+106 132 171 72
+171 170 106 72
+106 170 172 72
+132 173 203 73
+173 132 107 73
+107 174 173 73
+174 107 131 73
+174 131 202 73
+192 202 131 74
+193 130 201 74
+193 117 130 74
+193 192 117 74
+117 192 131 74
+201 130 175 75
+130 108 175 75
+175 108 176 75
+176 108 129 75
+176 129 200 75
+200 129 177 76
+129 109 177 76
+177 109 178 76
+178 128 199 76
+109 128 178 76
+199 128 179 77
+128 110 179 77
+179 110 180 77
+180 127 198 77
+110 127 180 77
+198 127 181 78
+127 111 181 78
+181 111 182 78
+182 111 126 78
+197 182 126 78
+197 126 183 79
+126 112 183 79
+184 183 112 79
+184 125 196 79
+125 184 112 79
+125 186 196 80
+195 185 124 80
+185 113 124 80
+185 186 113 80
+125 113 186 80
+195 124 187 81
+124 114 187 81
+188 187 114 81
+188 123 194 81
+123 188 114 81
+194 123 190 82
+123 115 190 82
+115 191 190 82
+115 189 191 82
+191 189 214 82
+9 5 8 84
+13 7 18 84
+13 3 7 84
+13 9 3 84
+9 8 3 84
+14 18 7 85
+14 7 4 85
+16 15 21 85
+4 15 16 85
+16 14 4 85
+15 32 21 86
+15 20 32 86
+20 35 32 86
+35 20 27 86
+35 27 45 86
+37 45 27 87
+36 26 44 87
+36 22 26 87
+36 37 22 87
+37 27 22 87
+39 44 26 88
+39 26 23 88
+38 25 43 88
+38 23 25 88
+38 39 23 88
+43 25 42 89
+24 42 25 89
+116 41 40 89
+24 40 41 89
+41 42 24 89
+141 116 40 90
+40 105 141 90
+105 169 141 90
+169 105 168 90
+168 215 169 90
+168 239 215 91
+168 216 239 91
+280 268 269 91
+216 269 268 91
+268 239 216 91
+315 280 269 92
+269 276 315 92
+315 276 281 92
+326 315 281 92
+326 281 279 92
+326 279 325 92
+365 366 325 93
+327 365 325 93
+367 365 327 93
+367 327 338 93
+328 367 338 94
+343 369 329 94
+369 368 329 94
+368 328 329 94
+368 367 328 94
+330 369 343 95
+371 331 342 95
+331 371 370 95
+370 330 331 95
+370 369 330 95
+371 342 332 96
+373 333 341 96
+373 372 333 96
+372 332 333 96
+372 371 332 96
+373 341 335 97
+375 334 340 97
+375 374 334 97
+374 335 334 97
+374 373 335 97
+336 375 340 98
+376 375 336 98
+336 337 376 98
+339 362 337 98
+337 362 376 98
+323 362 339 99
+363 362 323 99
+323 324 363 99
+347 364 324 99
+364 363 324 99
+361 364 347 100
+392 364 361 100
+361 377 392 100
+385 398 377 100
+392 377 398 100
+384 398 385 101
+384 403 398 101
+384 404 403 101
+414 403 404 101
+408 414 404 101
+409 414 408 102
+419 427 426 102
+419 426 418 102
+409 419 418 102
+409 418 414 102
+427 432 426 103
+432 434 426 103
+439 435 438 103
+438 435 434 103
+438 434 432 103
+439 436 435 104
+429 435 436 104
+429 436 430 104
+430 425 424 104
+430 424 429 104
+425 417 424 105
+424 417 416 105
+416 417 407 105
+407 387 406 105
+407 406 416 105
+387 388 406 106
+388 401 406 106
+401 388 381 106
+381 383 399 106
+381 399 401 106
+383 378 399 107
+378 400 399 107
+379 400 378 107
+391 400 379 107
+379 380 391 107
+359 391 380 108
+360 391 359 108
+360 359 317 108
+318 360 317 108
+278 318 317 108
+271 318 278 109
+272 274 320 109
+319 272 320 109
+271 272 319 109
+271 319 318 109
+320 274 273 110
+242 244 213 110
+304 244 242 110
+273 244 304 110
+273 304 320 110
+242 213 170 111
+241 242 170 111
+243 171 203 111
+241 171 243 111
+171 241 170 111
+203 173 243 112
+173 245 243 112
+245 173 174 112
+245 174 246 112
+246 174 202 112
+246 202 192 113
+248 193 201 113
+265 193 248 113
+265 192 193 113
+265 246 192 113
+248 201 175 114
+249 176 200 114
+247 176 249 114
+247 175 176 114
+248 175 247 114
+200 177 249 115
+178 199 251 115
+250 178 251 115
+177 178 250 115
+249 177 250 115
+199 179 251 116
+180 198 253 116
+252 180 253 116
+179 180 252 116
+251 179 252 116
+253 198 181 117
+255 182 197 117
+255 254 182 117
+254 181 182 117
+253 181 254 117
+255 197 183 118
+255 183 256 118
+256 183 184 118
+257 184 196 118
+256 184 257 118
+257 196 186 119
+257 186 258 119
+186 185 258 119
+185 195 259 119
+258 185 259 119
+195 187 259 120
+261 188 194 120
+261 260 188 120
+187 188 260 120
+260 259 187 120
+261 194 190 121
+263 261 190 121
+190 191 263 121
+214 264 191 121
+264 263 191 121
+12 2 6 162
+10 8 5 162
+10 1 8 162
+6 1 10 162
+10 12 6 162
+12 11 2 162
+29 11 12 164
+28 29 12 164
+28 12 10 164
+28 10 17 164
+17 10 5 164
+150 222 245
+222 133 245
+133 29 245
+298 230 244
+352 298 244
+389 352 244
+391 389 244
+60 52 243
+52 150 243
+102 79 242
+79 60 242
+91 80 241
+80 102 241
+69 101 240
+101 91 240
+51 100 239
+100 69 239
+48 99 238
+99 51 238
+78 98 237
+98 48 237
+219 164 236
+164 78 236
+206 204 235
+204 219 235
+209 212 234
+212 206 234
+75 162 233
+162 209 233
+64 85 232
+85 75 232
+65 86 231
+86 64 231
+103 87 230
+87 65 230
+53 57 229
+57 103 229
+54 95 228
+95 53 228
+97 88 227
+88 54 227
+90 83 226
+83 97 226
+122 92 225
+92 90 225
+72 93 224
+93 122 224
+120 94 223
+94 72 223
+59 58 222
+58 120 222
+207 156 221
+156 59 221
+205 211 220
+211 207 220
+230 210 219
+210 205 219
+68 159 218
+159 230 218
+70 76 217
+76 68 217
+62 46 216
+46 70 216
+104 74 215
+74 62 215
+50 73 214
+73 104 214
+49 121 213
+121 50 213
+81 55 212
+55 49 212
+47 119 211
+119 81 211
+84 71 210
+71 47 210
+56 118 209
+118 84 209
+96 66 208
+66 56 208
+89 63 207
+63 96 207
+82 61 206
+61 89 206
+77 67 205
+67 82 205
+237 163 204
+163 77 204
+357 354 203
+354 300 203
+300 237 203
+321 357 202
+275 321 201
+17 5 200
+18 30 199
+21 33 198
+45 136 197
+44 137 196
+43 140 195
+116 143 194
+215 240 193
+280 314 192
+325 279 191
+288 338 190
+293 343 189
+292 342 188
+291 341 187
+290 340 186
+289 339 185
+322 347 184
+350 385 183
+405 408 182
+423 427 181
+437 439 180
+422 425 179
+402 387 178
+349 383 177
+348 380 176
+270 278 175
+220 274 174
+172 213 173
+132 203 172
+131 202 171
+130 201 170
+129 200 169
+128 199 168
+127 198 167
+126 197 166
+125 196 165
+124 195 164
+123 194 163
+214 189 162
+5 8 161
+7 18 160
+15 21 159
+27 45 158
+26 44 157
+25 43 156
+40 116 155
+168 215 154
+269 280 153
+325 366 152
+338 367 151
+343 369 150
+342 371 149
+341 373 148
+340 375 147
+339 362 146
+347 364 145
+385 398 144
+408 414 143
+427 426 142
+439 435 141
+425 424 140
+387 406 139
+383 399 138
+380 391 137
+278 318 136
+274 320 135
+213 242 134
+203 243 133
+202 246 132
+201 248 131
+200 249 130
+199 251 129
+198 253 128
+197 255 127
+196 257 126
+195 259 125
+194 261 124
+264 214 123
+189 208 122
+208 267 122
+267 275 122
+123 115 121
+115 189 121
+124 114 120
+114 123 120
+125 113 119
+113 124 119
+126 112 118
+112 125 118
+127 111 117
+111 126 117
+128 110 116
+110 127 116
+129 109 115
+109 128 115
+130 108 114
+108 129 114
+131 117 113
+117 130 113
+132 107 112
+107 131 112
+172 106 111
+106 132 111
+220 218 110
+218 172 110
+270 217 109
+217 220 109
+348 316 108
+316 270 108
+349 346 107
+346 348 107
+402 382 106
+382 349 106
+422 413 105
+413 402 105
+437 431 104
+431 422 104
+423 433 103
+433 437 103
+405 415 102
+415 423 102
+350 386 101
+386 405 101
+322 344 100
+344 350 100
+289 277 99
+277 322 99
+290 287 98
+287 289 98
+291 286 97
+286 290 97
+292 285 96
+285 291 96
+293 284 95
+284 292 95
+288 283 94
+283 293 94
+279 282 93
+282 288 93
+269 276 92
+276 281 92
+281 279 92
+168 216 91
+216 269 91
+40 105 90
+105 168 90
+25 24 89
+24 40 89
+26 23 88
+23 25 88
+27 22 87
+22 26 87
+15 20 86
+20 27 86
+7 4 85
+4 15 85
+8 3 84
+3 7 84
+2 6 83
+6 1 83
+1 8 83
+11 2 82
+29 11 81
+5 10 80
+10 12 80
+12 11 80
+13 18 79
+9 13 79
+5 9 79
+16 21 78
+14 16 78
+18 14 78
+35 45 77
+32 35 77
+21 32 77
+36 44 76
+37 36 76
+45 37 76
+38 43 75
+39 38 75
+44 39 75
+41 116 74
+42 41 74
+43 42 74
+169 215 73
+141 169 73
+116 141 73
+268 280 72
+239 268 72
+215 239 72
+326 325 71
+315 326 71
+280 315 71
+338 327 70
+327 325 70
+343 329 69
+329 328 69
+328 338 69
+342 331 68
+331 330 68
+330 343 68
+341 333 67
+333 332 67
+332 342 67
+340 334 66
+334 335 66
+335 341 66
+339 337 65
+337 336 65
+336 340 65
+347 324 64
+324 323 64
+323 339 64
+385 377 63
+377 361 63
+361 347 63
+408 404 62
+404 384 62
+384 385 62
+427 419 61
+419 409 61
+409 408 61
+439 438 60
+438 432 60
+432 427 60
+425 430 59
+430 436 59
+436 439 59
+387 407 58
+407 417 58
+417 425 58
+383 381 57
+381 388 57
+388 387 57
+380 379 56
+379 378 56
+378 383 56
+278 317 55
+317 359 55
+359 380 55
+274 272 54
+272 271 54
+271 278 54
+213 244 53
+244 273 53
+273 274 53
+203 171 52
+171 170 52
+170 213 52
+202 174 51
+174 173 51
+173 203 51
+201 193 50
+193 192 50
+192 202 50
+200 176 49
+176 175 49
+175 201 49
+199 178 48
+178 177 48
+177 200 48
+198 180 47
+180 179 47
+179 199 47
+197 182 46
+182 181 46
+181 198 46
+196 184 45
+184 183 45
+183 197 45
+195 185 44
+185 186 44
+186 196 44
+194 188 43
+188 187 43
+187 195 43
+214 191 42
+191 190 42
+190 194 42
+312 321 41
+262 312 41
+214 262 41
+28 17 40
+29 28 40
+19 30 39
+17 19 39
+31 33 38
+30 31 38
+135 136 37
+33 135 37
+138 137 36
+136 138 36
+139 140 35
+137 139 35
+142 143 34
+140 142 34
+228 240 33
+143 228 33
+301 314 32
+240 301 32
+358 366 31
+345 358 31
+314 345 31
+365 367 30
+366 365 30
+368 369 29
+367 368 29
+370 371 28
+369 370 28
+372 373 27
+371 372 27
+374 375 26
+373 374 26
+376 362 25
+375 376 25
+363 364 24
+362 363 24
+392 398 23
+364 392 23
+403 414 22
+398 403 22
+418 426 21
+414 418 21
+434 435 20
+426 434 20
+429 424 19
+435 429 19
+416 406 18
+424 416 18
+401 399 17
+406 401 17
+400 391 16
+399 400 16
+360 318 15
+391 360 15
+319 320 14
+318 319 14
+304 242 13
+320 304 13
+241 243 12
+242 241 12
+245 246 11
+243 245 11
+265 248 10
+246 265 10
+247 249 9
+248 247 9
+250 251 8
+249 250 8
+252 253 7
+251 252 7
+254 255 6
+253 254 6
+256 257 5
+255 256 5
+258 259 4
+257 258 4
+260 261 3
+259 260 3
+263 264 2
+261 263 2
+313 357 1
+264 313 1
Modified: fsem/examples-fondation/struct_mesh/meshPN.sce
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN.sce 2007-03-09 12:49:44 UTC (rev 120)
+++ fsem/examples-fondation/struct_mesh/meshPN.sce 2007-03-09 16:57:04 UTC (rev 121)
@@ -16,10 +16,10 @@
Xjm = 0.1; // [um]
Xj=Xjm/2;
-las_R = 3.0;// [um]
-las_n = 10; // number of points under laser
+las_R = 10.0;// [um]
+las_n = 30; // number of points under laser
waf_R = 100; // [um]
-waf_n = 5; // [um]
+waf_n = 10; // [um]
waf_T = 100; // [um]
filename = "meshPN.edp";
fileid = file('open', filename, 'unknown');
@@ -30,10 +30,11 @@
// *** D0PED LAYER PART
// *************************
+split =1; // 1, 2 or 4
// inner border at -Xjm
-d= las_R/las_n;
+d= las_R/las_n/split; // 1/2 is because we want an extra mid-point to force the mesh on that points
r=0; rprev=r;
-for i=0:las_n-1
+for i=0:split*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);
@@ -43,8 +44,8 @@
end
-for i=las_n:las_n+waf_n-1
- d = (waf_R-las_R)/waf_n;
+for i=split*las_n:split*las_n+split*waf_n-1
+ d = (waf_R-las_R)/waf_n/split;
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);
@@ -53,10 +54,12 @@
rprev=r;
end
+
+
// inner border at -Xj
-d= las_R/las_n;
+d= las_R/las_n/split;
r=0; rprev=r;
-for i=0:las_n-1
+for i=0:split*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);
@@ -66,11 +69,11 @@
end
-for i=las_n:las_n+waf_n-1
- d = (waf_R-las_R)/waf_n;
+for i=split*las_n:split*las_n+split*waf_n-1
+ d = (waf_R-las_R)/waf_n/split;
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);
+ buildmesh = buildmesh+sprintf("innXj%02d(%d) + ",i,n);
printf("%s\n", line);
fprintf(fileid, "%s", line);
rprev=r;
@@ -86,25 +89,26 @@
// 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);
+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;
+for i=split*las_n+split*waf_n-1:-1:split*las_n
+ d = (waf_R-las_R)/waf_n/split;
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);
+ 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
+
+d= las_R/las_n/split;
+for i=split*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);
@@ -206,27 +210,32 @@
// 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
+//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
+//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
+line = sprintf("border innVS01(t=%1.4f,%1.4f){x=%1.4f;y=t;};\n", -waf_T, -Xjm,las_R/2);
+buildmesh = buildmesh+sprintf("innVS01(%d)+ ",n);
+printf("%s\n", line);
+fprintf(fileid, "%s", line);
+
// 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);
Modified: fsem/examples-fondation/struct_mesh/meshPN_refine.edp
===================================================================
--- fsem/examples-fondation/struct_mesh/meshPN_refine.edp 2007-03-09 12:49:44 UTC (rev 120)
+++ fsem/examples-fondation/struct_mesh/meshPN_refine.edp 2007-03-09 16:57:04 UTC (rev 121)
@@ -4,25 +4,86 @@
real Xj = 0.05; // [um]
real ychar = 0.001; // [um]
+real xchar = 2; // [um]
+real alpha = 20; // [um]
+real Radius = 100; // [um]
macro DopingProfile()
- exp(-((y+Xj)/ychar)^2)
+ exp(-((y+Xj)/ychar)^2) + exp(-((y+Xj)/ychar/4)^2) + exp(-((y+Xj)/ychar/8)^2) + exp(-((y+Xj)/ychar/16)^2)
// EOM
+macro SourceProfileAdapt()
+ exp(-(x/xchar)^2)*exp(y/alpha) + exp(-(x/Radius)^2)*exp(y/alpha) + exp(-(x/Radius*2)^2)*exp(y/alpha) + exp(-(x/Radius*4)^2)*exp(y/alpha)
+//EOM
+
+macro SourceProfile()
+ 0.5*exp(-(x/xchar)^2)*exp(y/alpha)
+//EOM
+
+
fespace Vh(Th, P1);
-Vh profile;
+Vh profile, source;
+Vh AdaptFunc;
-
real Err;
-for(int i=0; i<20; i++) {
+for(int i=0; i<30; i++) {
profile = DopingProfile;
- Err = (0.001 -0.1) *i/20 + 0.1;
+ source = 0; //SourceProfile;
+ AdaptFunc = profile + source;
+ Err = (0.0005 -0.1) *i/30 + 0.1;
+ cout << "i: " << i << ", Err: " << Err << endl;
try{
- Th = adaptmesh(Th, profile, err=Err, nbsmooth=0, nbvx=100000, iso=false);
+ Th = adaptmesh(Th, AdaptFunc, err=Err, nbsmooth=0, nbvx=100000, iso=false);
} catch(...) {
i--;
}
- plot(Th, wait=1);
+ plot(Th, wait=0);
}
-
+// It is better to refine on the source AFTER having refined on the doping.
+// The doping area is less perturbed.
+for(int i=0; i<30; i++) {
+ profile = DopingProfile;
+ source = SourceProfileAdapt;
+ AdaptFunc = profile + source;
+ cout << "i: " << i << ", Err: " << Err << endl;
+ try{
+ Th = adaptmesh(Th, AdaptFunc, err=Err, nbsmooth=0, nbvx=100000, iso=false);
+ } catch(...) {
+ i--;
+ }
+ plot(Th, wait=0);
+}
+plot(Th, wait=1);
+
+
+real D = 100;
+
+// Helmoltz' equation definition
+varf Kaa(U,V) = int2d(Th)( D*(dx(U)*dx(V)+dy(U)*dy(V)) *x)
+ +int2d(Th) ( U * V /100 *x);
+varf laa(U,V) = int2d(Th)( source * V*x);
+
+matrix A;
+Vh Fa;
+Vh sol;
+
+source = SourceProfile;
+plot(source, wait=true);
+
+A=Kaa(Vh,Vh);
+set (A,solver=UMFPACK, eps=1e-20); // works
+//set (A,solver=LU);
+//set (A,solver=GMRES);
+//set (A,solver=CG, eps=1e-20); // works
+
+Fa = 0; /* reallocate Fa on current mesh */
+Fa[] = laa(0,Vh);
+sol = 0; /* reallocate sol on current mesh */
+sol[]=A^-1*Fa[];
+cout << "Solution on normal mesh:" << endl;
+x=0; y=0;
+cout << "sol(0,0): " << sol << endl;
+plot(sol, wait=true);
+
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <fab...@us...> - 2007-03-08 16:18:36
|
Revision: 119
http://fsem.svn.sourceforge.net/fsem/?rev=119&view=rev
Author: fabiandortu
Date: 2007-03-08 08:18:27 -0800 (Thu, 08 Mar 2007)
Log Message:
-----------
Corrected bug concerning Surface Recombination Velocity (SRV).
The diffusivity (D) was omitted in
v * N = D grad(N).
The impact is not essential since, a constant D0=18cm^2/s was assumed previously.
Modified Paths:
--------------
fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp
fsem/equations/fsem_Eq_DiffCarr.edp
fsem/mesh/fsem_Mesh_GloVar.edp
Modified: fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp
===================================================================
--- fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp 2007-03-06 15:45:52 UTC (rev 118)
+++ fsem/assemble/fsem_PreAssemble_DiffCarrEXC.edp 2007-03-08 16:18:27 UTC (rev 119)
@@ -122,7 +122,7 @@
/**********************************************
* GloVarDiffCOEFv (surface mass matrix coef)
**********************************************/
- GloVarDiffCOEFv = GloVarSemiSURFRECVEL;
+ GloVarDiffCOEFv = GloVarSemiSURFRECVEL / GloVarDiffCOEFc; //[m^-1] // Coef for the surf. recomb. vel.: v/D * N = grad(N)
Modified: fsem/equations/fsem_Eq_DiffCarr.edp
===================================================================
--- fsem/equations/fsem_Eq_DiffCarr.edp 2007-03-06 15:45:52 UTC (rev 118)
+++ fsem/equations/fsem_Eq_DiffCarr.edp 2007-03-08 16:18:27 UTC (rev 119)
@@ -7,7 +7,7 @@
macro CoefCarrAdimcJacx(dCOEFcdU) /* CoefCarrAdimcJacx( */ ( (dCOEFcdU) / GloScaDiffCarrDxJac ) /* CoefCarrAdimcJacx( */ // [adim]
macro CoefCarrAdimcJacy(dCOEFcdU) /* CoefCarrAdimcJacy( */( (dCOEFcdU) / GloScaDiffCarrDyJac ) /* CoefCarrAdimcJacy( */ // [adim]
macro CoefCarrAdima(COEFa) /* CoefCarrAdima( */( ( COEFa ) / GloScaDiffCarrR3 * GloScaDiffCarrU )/* )CoefCarrAdima */ // Mass matrix coef [adim]
-macro CoefCarrAdimv(COEFv) /* CoefCarrAdimv( */( ( COEFv ) / GloScaDiffCarrR2 * GloScaDiffCarrU )/* )CoefCarrAdimv */ // Surf velocity coef [adim]
+macro CoefCarrAdimv(COEFv) /* CoefCarrAdimv( */( ( COEFv ) * GloScaX )/* )CoefCarrAdimv */ // Scaling of v/D (SRV / Diffusivity) [adim]
macro CoefCarrAdimF(COEFf) /* CoefCarrAdimF( */( ( COEFf ) / GloScaDiffCarrR3 )/* )CoefCarrAdimF */ //
macro CoefCarrAdimFJac(dCOEFfdU) /* CoefCarrAdimFJac( */( ( dCOEFfdU ) / GloScaDiffCarrR3Jac )/* )CoefCarrAdimFJac */ //
macro CoefCarrAdimXC(U) /* CoefCarrAdimXC( */( (U) / GloScaDiffCarrU )/* )CoefCarrAdimXC */ //
@@ -65,7 +65,7 @@
+ CoefCarrAdimcx(GloVarDiffCOEFc) * ( dx(uh)*dx(vh) )
+ CoefCarrAdimcy(GloVarDiffCOEFc) * ( dy(uh)*dy(vh) ) )
* UsrJac )
- + int1d(GloMesh) (CoefCarrAdimv(GloVarDiffCOEFv) * uh * vh * UsrJac)
+ + int1d(GloMesh) (CoefCarrAdimv(GloVarDiffCOEFv) * uh * vh * UsrJac)
FixedCarrContact;
GloMatL = CarrKc(GloVhP1, GloVhP1);
Modified: fsem/mesh/fsem_Mesh_GloVar.edp
===================================================================
--- fsem/mesh/fsem_Mesh_GloVar.edp 2007-03-06 15:45:52 UTC (rev 118)
+++ fsem/mesh/fsem_Mesh_GloVar.edp 2007-03-08 16:18:27 UTC (rev 119)
@@ -1,10 +1,10 @@
// Mesh scaling
-real GloScaX = 100 * ConvU2M; //100
+real GloScaX = 300 * ConvU2M; //100
/*TeXDoc
x (or r) coordinate scaling factor
& [m]
*/
-real GloScaY =100 * ConvU2M; //100
+real GloScaY = 300 * ConvU2M; //100
/*TeXDoc
y coordinate scaling factor
& [m]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-06 15:46:06
|
Revision: 118
http://fsem.svn.sourceforge.net/fsem/?rev=118&view=rev
Author: fabiandortu
Date: 2007-03-06 07:45:52 -0800 (Tue, 06 Mar 2007)
Log Message:
-----------
Added few scripts in example-fondation to deal with Schwarz decomposition.
This is not used by FSEM since it does not introduce any improvement.
Modified Paths:
--------------
fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat_CI.edp
fsem/include-freefem/load.link
fsem/mesh/modules/fsem_Mod_MiscCppModules_Load.edp
Added Paths:
-----------
fsem/examples-fondation/schwartz-decomposition/Helmoltz_anisotrope.edp
fsem/examples-fondation/schwartz-decomposition/P0_P1_comp.edp
fsem/examples-fondation/schwartz-decomposition/non-overlap/
fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap.edp
fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M.edp
fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M_CI.edp
fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_2M.edp
fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-th.eps
fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-u.eps
fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-u0.eps
fsem/examples-fondation/schwartz-decomposition/non-overlap-gc/
fsem/examples-fondation/schwartz-decomposition/non-overlap-gc/schwarz-gc.edp
fsem/examples-fondation/schwartz-decomposition/schwarz2_varf_1mat_CI.edp
Added: fsem/examples-fondation/schwartz-decomposition/Helmoltz_anisotrope.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/Helmoltz_anisotrope.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/Helmoltz_anisotrope.edp 2007-03-06 15:45:52 UTC (rev 118)
@@ -0,0 +1,124 @@
+// Solve Helmoltz equation on a highly anisotropic mesh
+//
+// - D nabla U + U/tau = source
+//
+// D is the diffusion coefficient (cm2/s)
+// tau is the recombination lifetime (s)
+// source is the generation rate (cm-3 s-1)
+// U is the carrier concentration (cm-3)
+
+//
+// The problem is first solve on a quasi-isotropic mesh.
+// It is then solved on a higly anisotropic mesh.
+//
+
+real Err;
+real scaling = 10;
+
+real Xj = 10.0; // m
+Xj = Xj/scaling;
+
+real Ychar = 1.0 / 1000.0;
+
+real R = 40.0; //m
+real T = 40.0; //m
+real rad = 1.0;
+
+// Mesh definition:
+// The domain is a square but we introduce an inner
+// border at -Xj where the mesh will be strongly refined
+// and will become anisotropic after few adaptmesh (see later)
+border aa(t=0,R){x=t;y=-T;};
+border bb1(t=-T,-Xj){x=R;y=t;};
+border bb2(t=-Xj,0){x=R;y=t;};
+border cc(t=R,0){x=t ;y=0;};
+border dd2(t=0,-Xj){x = 0; y = t;};
+border dd1(t=-Xj,-T){x = 0; y = t;};
+border junc(t=0,R){x=t;y=-Xj;};
+
+int n=4;
+mesh Th = buildmesh( aa(5*n) + bb1(5*n) + bb2(5*n) + cc(5*n) + dd2(5*n) + dd1(5*n)+ junc(5*n));
+plot(Th, wait=0);
+
+fespace Vh(Th, P1); // used for adaptation
+Vh sol;
+int i=0;
+Vh source; // Generation rate
+Vh tau; // Recombination lifetime
+real D=100; // diffusivity
+Vh AdaptFunc;
+
+// generation profile (a gausian laser at x=0)
+macro SourceProfile()
+ (exp(y/T) * exp(-(x/rad)^2))
+// EOM
+
+// used to adapt the mesh around Xj
+macro TauProfile()
+ (exp(-((y+Xj)/(Ychar))^2) + 1)
+// EOM
+
+
+// Helmoltz' equation definition
+varf Kaa(U,V) = int2d(Th)( D*(dx(U)*dx(V)+dy(U)*dy(V)) )
+ +int2d(Th) ( U * V / tau);
+varf laa(U,V) = int2d(Th)( - source * V);
+
+matrix A;
+Vh Fa;
+
+
+// ***************************************
+// **** Solve on quasi isotropic mesh ****
+// ***************************************
+
+// Refines single mesh on generation only
+for ( i=0 ;i< 11; i++) {
+ source = SourceProfile;
+ Err = (0.005 - 0.01)*i/10 + 0.01;
+ Th = adaptmesh(Th, source, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(Th, wait=0);
+}
+
+source = SourceProfile;
+tau = 1;
+A=Kaa(Vh,Vh);
+Fa = 0; /* reallocate Fa on current mesh */
+Fa[] = laa(0,Vh);
+sol = 0; /* reallocate sol on current mesh */
+sol[]=A^-1*Fa[];
+cout << "Solution on normal mesh:" << endl;
+x=0; y=0;
+cout << "sol(0,0): " << sol << endl;
+plot(sol, wait=true);
+
+
+// *****************************************
+// **** Solve on higly anisotropic mesh ****
+// *****************************************
+
+// Refines single mesh on generation and tau
+for ( i=0 ;i< 11; i++) {
+ source = SourceProfile;
+ tau = TauProfile;
+ AdaptFunc = source + tau;
+ Err = (0.005 - 0.01)*i/10 + 0.01;
+ Th = adaptmesh(Th, AdaptFunc, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(Th, wait=0);
+}
+
+source = SourceProfile;
+tau = 1;
+A=Kaa(Vh,Vh);
+Fa = 0; /* reallocate Fa on current mesh */
+Fa[] = laa(0,Vh);
+sol = 0; /* reallocate sol on current mesh */
+sol[]=A^-1*Fa[];
+cout << "Solution on normal mesh:" << endl;
+x=0; y=0;
+cout << "Solution on a very anisotropic mesh:" << endl;
+cout << "sol(0,0): " << sol << endl;
+plot(sol, wait=true); // The solution is obviously wrong!!!
+plot(tau, wait=true);
+
+
Added: fsem/examples-fondation/schwartz-decomposition/P0_P1_comp.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/P0_P1_comp.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/P0_P1_comp.edp 2007-03-06 15:45:52 UTC (rev 118)
@@ -0,0 +1,68 @@
+// Schartz decomposition example on highy anisotropic mesh
+
+real scaling=1.0;
+real Xj = 10.0; // m
+Xj = Xj/scaling;
+real Ychar = 1.0 / 1000.0;
+real R = 40.0; //m
+real T = 40.0; //m
+real rad = 1.0;
+
+// Single mesh (needed for comparison)
+border aa(t=0,R){x=t;y=-T;};
+border bb1(t=-T,0){x=R;y=t;};
+border cc(t=R,0){x=t ;y=0;};
+border dd2(t=0,-T){x = 0; y = t;};
+
+
+int n = 4;
+mesh GloMesh = buildmesh( aa(5*n) + bb1(5*n) + cc(5*n) + dd2(5*n) );
+
+plot(GloMesh, wait=1); // to see the 2 meshes
+
+//The space and problem definition is :
+fespace GloVhP(GloMesh, P2); // used for resolution
+fespace GloVhP1(GloMesh, P1); // used for adaptation
+GloVhP sol; //U,V;
+
+GloVhP source; // Generation rate
+GloVhP1 sourceAdapt;
+
+// generation and recombination lifetime profile
+macro SourceProfile()
+ (exp(y/T) * exp(-(x/rad)^2))
+// EOM
+
+int i;
+real Err;
+// Refines single mesh on generation only
+for ( i=0 ;i< 5; i++) {
+ // refines All
+ sourceAdapt = SourceProfile;
+ Err = (0.001 - 0.01)*i/10 + 0.01;
+ GloMesh = adaptmesh(GloMesh, sourceAdapt, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(GloMesh, wait=0);
+}
+
+// Classical edp definition
+varf Kaa(U,V) = int2d(GloMesh)( 100*(dx(U)*dx(V)+dy(U)*dy(V)) )
+ +int2d(GloMesh) ( U * V );// + on(back,U= 0 ) ;
+varf laa(U,V) = int2d(GloMesh)( - source * V);
+
+
+matrix A;
+GloVhP Fa;
+
+source = SourceProfile;
+A=Kaa(GloVhP,GloVhP);
+Fa = 0; /* reallocate Fa on current mesh */
+Fa[] = laa(0,GloVhP);
+sol = 0; /* reallocate U on current mesh */
+sol[]=A^-1*Fa[];
+cout << "Solution on normal mesh:" << endl;
+x=0; y=0;
+cout << endl << "U(0,0): " << sol << endl;
+plot(sol, wait=true);
+
+
+
Added: fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap.edp 2007-03-06 15:45:52 UTC (rev 118)
@@ -0,0 +1,39 @@
+// schwarz1 without overlapping
+int inside = 2;
+int outside = 1;
+border a(t=1,2){x=t;y=0;label=outside;};
+border b(t=0,1){x=2;y=t;label=outside;};
+border c(t=2,0){x=t ;y=1;label=outside;};
+border d(t=1,0){x = 1-t; y = t;label=inside;};
+border e(t=0, 1){ x= 1-t; y = t;label=inside;};
+border e1(t=pi/2, 2*pi){ x= cos(t); y = sin(t);label=outside;};
+int n=4;
+mesh th = buildmesh( a(5*n) + b(5*n) + c(10*n) + d(5*n));
+mesh TH = buildmesh ( e(5*n) + e1(25*n) );
+plot(th,TH,wait=1,ps="schwarz-no-th.eps");
+fespace vh(th,P1);
+fespace VH(TH,P1);
+vh u=0,v; VH U,V;
+vh lambda=0;
+int i=0;
+
+problem PB(U,V,init=i,solver=Cholesky) =
+ int2d(TH)( dx(U)*dx(V)+dy(U)*dy(V) )
+ + int2d(TH)( -V)
+ + int1d(TH,inside)(lambda*V) + on(outside,U= 0 ) ;
+problem pb(u,v,init=i,solver=Cholesky) =
+ int2d(th)( dx(u)*dx(v)+dy(u)*dy(v) )
+ + int2d(th)( -v)
+ + int1d(th,inside)(-lambda*v) + on(outside,u = 0 ) ;
+
+
+for ( i=0 ;i< 10; i++)
+{
+ PB;
+ pb;
+ lambda = lambda - (u-U)/2;
+ if (i==0)
+ plot(U,u,wait=true,ps="schwarz-no-u"+i+".eps");
+};
+
+plot(U,u,ps="schwarz-no-u.eps", wait=1);
Added: fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M.edp 2007-03-06 15:45:52 UTC (rev 118)
@@ -0,0 +1,64 @@
+// schwarz1 without overlapping
+int inside = 2;
+int outside = 1;
+border a(t=1,2){x=t;y=0;label=outside;};
+border b(t=0,1){x=2;y=t;label=outside;};
+border c(t=2,0){x=t ;y=1;label=outside;};
+border d(t=1,0){x = 1-t; y = t;label=inside;};
+border e(t=0, 1){ x= 1-t; y = t;label=inside;};
+border e1(t=pi/2, 2*pi){ x= cos(t); y = sin(t);label=outside;};
+
+int n=4;
+mesh Tha = buildmesh( a(5*n) + b(5*n) + c(10*n) + d(5*n));
+mesh Thb = buildmesh ( e(5*n) + e1(25*n) );
+mesh Th = Tha;
+
+plot(Tha,Thb,wait=1,ps="schwarz-no-th.eps");
+
+
+fespace Vh(Th,P1);
+
+Vh sol=0, solPrev;
+Vh lambda=0;
+Vh lambdaX=0;
+int i=0;
+
+varf Ka(U,V,init=i,solver=Cholesky) =
+int2d(Th)( dx(U)*dx(V)+dy(U)*dy(V) )+ on(outside,U= 0 ) ;
+// + int2d(Th)( -U*V) ;
+
+varf La(U,V)= -int2d(Th)( -V)
+ - int1d(Th,inside)(lambdaX*V) + on(outside,U= 0 ) ;
+
+
+macro SolveProblem()
+ A=Ka(Vh,Vh);
+ Fa = 0; /* reallocate Fa on current mesh */
+ Fa[] = La(0,Vh);
+ sol = 0; /* reallocate U on current mesh */
+ sol[]=A^-1*Fa[];
+// EOM
+
+matrix A;
+Vh Fa;
+
+for ( i=0 ;i< 10; i++)
+{
+ solPrev = sol;
+ Th = Tha;
+ lambdaX = +lambda;
+ SolveProblem;
+
+ solPrev = sol;
+ lambdaX = -lambda;
+ Th = Thb;
+ SolveProblem;
+
+ lambda = lambda - (sol-solPrev)/2;
+
+ if (i==0)
+ plot(solPrev,sol,wait=true,ps="schwarz-no-u"+i+".eps");
+ //plot(solPrev, sol, wait=true);
+};
+
+plot(solPrev,sol,ps="schwarz-no-u.eps", wait=1);
Added: fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M_CI.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M_CI.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_1M_CI.edp 2007-03-06 15:45:52 UTC (rev 118)
@@ -0,0 +1,159 @@
+// schwarz1 without overlapping
+int inside = 2; // inside boundary
+int outside = 1; // outside boundary
+int junction =3;
+int back = 4;
+
+
+/* TOTAL domain top substrate
+ *
+ * 0 R 0 R 0 R
+ * 0 |-----------| 0 |----c-----|
+ * | | | |
+ * | | d b
+ * | | | |
+ * -Xj |___________| -Xj |_____a____| -Xj _____g_____
+ * | | | |
+ * | | | |
+ * | | h f
+ * | | | |
+ * -T |-----------| -T |----e----|
+ *
+ */
+
+
+real Err;
+real scaling = 10;
+
+real Xj = 10.0; // m
+Xj = Xj/scaling;
+real dx1 = 2.0;
+dx1 = dx1/scaling; // m
+real dx2 = 4.0;
+dx2 = dx2/scaling; // m
+
+real Ychar = 1.0 / 1000.0;
+real R = 40.0; //m
+real T = 40.0; //m
+real rad = 1.0;
+
+// top layer (very thin, 100 nm = 1e-7 m)
+border a(t=0,R){x=t;y=-Xj;label=inside;};
+border b(t=-Xj,0){x=R;y=t;label=outside;};
+border c(t=R,0){x=t ;y=0;label=outside;};
+border d(t=0,-Xj){x = 0; y = t;label=outside;};
+
+
+// bottom layer (very thick, 600 um = 6e-4 m)
+border e(t=0, R){ x= t; y = -T;label=back;};
+border f(t=-T, -Xj){ x= R; y = t;label=outside;};
+border g(t=R, 0){ x= t; y = -Xj;label=inside;};
+border h(t=-Xj, -T){ x= 0; y = t;label=outside;};
+
+int n=4;
+mesh topTh = buildmesh( a(5*n) + b(5*n) + c(5*n) + d(5*n));
+mesh botTh = buildmesh( e(5*n) + f(5*n) + g(5*n) + h(5*n));
+
+mesh Th = topTh;
+
+plot(topTh,botTh,wait=1,ps="schwarz-no-th.eps");
+
+
+fespace Vh(Th,P1);
+
+real D=100; // diffusivity
+Vh sol=0, solPrev;
+Vh lambda=0;
+Vh lambdaX=0;
+Vh source, tau;
+Vh AdaptFunc;
+int i=0;
+
+// generation and recombination lifetime profile
+macro SourceProfile()
+ (exp(y/T) * exp(-(x/rad)^2))
+// EOM
+
+macro TauProfile()
+ (exp(-((y)/(Ychar))^2) + 1)
+// EOM
+
+macro TauProfile2()
+ (-y^2/Xj)
+// EOM
+
+// Refines dual mesh
+for ( i=0 ;i< 11; i++) {
+ Err = (0.001 - 0.01)*i/10 + 0.01;
+
+ // refines top
+ Th = topTh;
+ source = SourceProfile;
+ tau = TauProfile2;
+ AdaptFunc = source + tau;
+ topTh = adaptmesh(topTh, AdaptFunc, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(AdaptFunc, wait=1);
+
+ Err = (0.005 - 0.01)*i/10 + 0.01;
+ // refines bottom
+ Th = botTh;
+ source = SourceProfile;
+ tau = 1;
+ AdaptFunc = source + tau;
+ //AdaptFunc = source + Tau;
+ botTh = adaptmesh(botTh, AdaptFunc, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(AdaptFunc, wait=0);
+
+ plot(topTh, botTh, wait=0);
+
+}
+
+
+// **********************************************************
+// **********************************************************
+// **********************************************************
+varf Ka(U,V,init=i,solver=Cholesky) =
+int2d(Th)( D*(dx(U)*dx(V)+dy(U)*dy(V)) )
+ + int2d(Th) (U*V); //+ on(outside,U= 0 ) ;
+// + int2d(Th)( -U*V) ;
+
+varf La(U,V)= -int2d(Th)( -source * V)
+ - int1d(Th,inside)(lambdaX*V); //+ on(outside,U= 0 ) ;
+
+
+macro SolveProblem()
+ A=Ka(Vh,Vh);
+ Fa = 0; /* reallocate Fa on current mesh */
+ Fa[] = La(0,Vh);
+ sol = 0; /* reallocate U on current mesh */
+ sol[]=A^-1*Fa[];
+// EOM
+
+matrix A;
+Vh Fa;
+
+tau =1;
+
+for ( i=0 ;i< 300; i++)
+{
+ solPrev = sol;
+ Th = topTh;
+ source = SourceProfile;
+ lambdaX = +lambda;
+ SolveProblem;
+
+ solPrev = sol;
+ Th = botTh;
+ lambdaX = -lambda;
+ source = SourceProfile;
+ SolveProblem;
+
+ lambda = lambda - (sol-solPrev)/2;
+ cout << "lambda: " << lambda[].max << ", " << lambda[].min << endl;
+ if (i==0)
+ plot(solPrev,sol,wait=true,ps="schwarz-no-u"+i+".eps");
+ plot(solPrev, sol, wait=false);
+};
+
+plot(solPrev,sol,ps="schwarz-no-u.eps", wait=1);
+plot(solPrev,sol,ps="schwarz-no-u.eps", wait=1);
Added: fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_2M.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_2M.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-overlap_2M.edp 2007-03-06 15:45:52 UTC (rev 118)
@@ -0,0 +1,52 @@
+// schwarz1 without overlapping
+
+int inside = 2;
+int outside = 1;
+border a(t=1,2){x=t;y=0;label=outside;};
+border b(t=0,1){x=2;y=t;label=outside;};
+border c(t=2,0){x=t ;y=1;label=outside;};
+border d(t=1,0){x = 1-t; y = t;label=inside;};
+border e(t=0, 1){ x= 1-t; y = t;label=inside;};
+border e1(t=pi/2, 2*pi){ x= cos(t); y = sin(t);label=outside;};
+int n=4;
+mesh th = buildmesh( a(5*n) + b(5*n) + c(10*n) + d(5*n));
+mesh TH = buildmesh ( e(5*n) + e1(25*n) );
+plot(th,TH,wait=1,ps="schwarz-no-th.eps");
+fespace vh(th,P1);
+fespace VH(TH,P1);
+vh u=0; VH U;
+vh lambda=0;
+int i=0;
+
+varf PB(U,V,init=i,solver=Cholesky) =
+ int2d(TH)( dx(U)*dx(V)+dy(U)*dy(V) ) + on(outside,U= 0 ) ;
+varf LB(U,V) = -int2d(TH)( -V)
+ - int1d(TH,inside)(lambda*V) + on(outside,U= 0 ) ;
+
+varf pb(u,v,init=i,solver=Cholesky) =
+ int2d(th)( dx(u)*dx(v)+dy(u)*dy(v) ) + on(outside,u = 0 ) ;
+varf lb(u,v) = -int2d(th)( -v)
+ - int1d(th,inside)(-lambda*v) +on(outside,u = 0 ) ;
+
+matrix A;
+VH FB;
+vh fb;
+
+for ( i=0 ;i< 10; i++)
+{
+ A = PB(VH, VH);
+ FB = 0;
+ FB[] = LB(0,VH);
+ U[] = A^-1*FB[];
+
+ A = pb(vh, vh);
+ fb = 0;
+ fb[] = lb(0,vh);
+ u[] = A^-1*fb[];
+
+ lambda = lambda - (u-U)/2;
+ if (i==0)
+ plot(U,u,wait=true,ps="schwarz-no-u"+i+".eps");
+};
+
+plot(U,u,ps="schwarz-no-u.eps", wait=1);
Added: fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-th.eps
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-th.eps (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/non-overlap/schwarz-no-th.eps 2007-03-06 15:45:52 UTC (rev 118)
@@ -0,0 +1,3810 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Creator: user
+%%Title: FreeFem++
+%%CreationDate: Tue Mar 6 11:30:08 2007
+%%Pages: 1
+%%BoundingBox: 0 0 409 409
+%%EndComments
+ /L {newpath moveto lineto stroke} def
+ /C {setrgbcolor} def
+ /rec {newpath 4 copy 8 1 roll moveto 3 -1 roll lineto 4 2 roll exch lineto lineto closepath} def
+ 0.500000 0.500000 scale
+ 0 819 0 819 rec clip
+ /Helvetica findfont 10 scalefont setfont
+ /S {moveto show} def
+ /bF { mark} def
+ /eF {newpath moveto counttomark 2 idiv {lineto} repeat closepath fill cleartomark} def
+ /P { /yy exch def /xx exch def xx xx 1 add yy yy 1 add rec fill } def
+ 1 setlinewidth
+0.000 0.000 0.000 C
+37 759 38 759 L
+38 759 37 760 L
+37 760 37 759 L
+37 759 37 759 L
+37 759 38 759 L
+38 759 37 759 L
+37 759 37 758 L
+37 758 38 759 L
+38 759 37 759 L
+37 758 37 757 L
+37 757 38 759 L
+38 759 37 758 L
+38 755 37 757 L
+37 757 37 756 L
+37 756 38 755 L
+62 762 38 759 L
+38 759 44 750 L
+44 750 62 762 L
+38 759 37 757 L
+37 757 38 755 L
+38 755 38 759 L
+37 755 38 755 L
+38 755 37 756 L
+37 756 37 755 L
+38 752 37 754 L
+37 754 37 753 L
+37 753 38 752 L
+38 752 37 753 L
+37 753 37 752 L
+37 752 38 752 L
+38 752 44 750 L
+44 750 38 755 L
+38 755 38 752 L
+37 754 38 752 L
+38 752 38 755 L
+38 755 37 754 L
+37 752 37 751 L
+37 751 38 752 L
+38 752 37 752 L
+44 750 37 743 L
+37 743 62 743 L
+62 743 44 750 L
+38 746 37 743 L
+37 743 44 750 L
+44 750 38 746 L
+37 745 37 745 L
+37 745 38 746 L
+38 746 37 745 L
+38 746 37 746 L
+37 746 37 745 L
+37 745 38 746 L
+38 746 37 747 L
+37 747 37 746 L
+37 746 38 746 L
+38 749 37 748 L
+37 748 37 747 L
+37 747 38 749 L
+38 746 38 749 L
+38 749 37 747 L
+37 747 38 746 L
+37 743 38 746 L
+38 746 37 745 L
+37 745 37 743 L
+44 750 38 749 L
+38 749 38 746 L
+38 746 44 750 L
+62 762 44 750 L
+44 750 62 743 L
+62 743 62 762 L
+38 759 37 762 L
+37 762 37 760 L
+37 760 38 759 L
+44 750 38 759 L
+38 759 38 755 L
+38 755 44 750 L
+62 762 37 762 L
+37 762 38 759 L
+38 759 62 762 L
+37 749 37 748 L
+37 748 38 749 L
+38 749 37 749 L
+37 749 38 749 L
+38 749 37 750 L
+37 750 37 749 L
+38 752 37 750 L
+37 750 38 749 L
+38 749 38 752 L
+38 752 37 751 L
+37 751 37 750 L
+37 750 38 752 L
+44 750 38 752 L
+38 752 38 749 L
+38 749 44 750 L
+37 755 37 754 L
+37 754 38 755 L
+38 755 37 755 L
+62 743 93 762 L
+93 762 62 762 L
+62 762 62 743 L
+62 743 93 743 L
+93 743 93 762 L
+93 762 62 743 L
+130 762 93 762 L
+93 762 93 743 L
+93 743 130 762 L
+130 743 130 762 L
+130 762 93 743 L
+93 743 130 743 L
+168 743 130 762 L
+130 762 130 743 L
+130 743 168 743 L
+130 762 168 743 L
+168 743 168 762 L
+168 762 130 762 L
+205 743 168 762 L
+168 762 168 743 L
+168 743 205 743 L
+168 762 205 743 L
+205 743 205 762 L
+205 762 168 762 L
+205 743 242 743 L
+242 743 205 762 L
+205 762 205 743 L
+242 762 205 762 L
+205 762 242 743 L
+242 743 242 762 L
+279 743 242 762 L
+242 762 242 743 L
+242 743 279 743 L
+279 762 242 762 L
+242 762 279 743 L
+279 743 279 762 L
+279 762 279 743 L
+279 743 316 762 L
+316 762 279 762 L
+279 743 316 743 L
+316 743 316 762 L
+316 762 279 743 L
+353 762 316 762 L
+316 762 316 743 L
+316 743 353 762 L
+353 743 353 762 L
+353 762 316 743 L
+316 743 353 743 L
+353 762 353 743 L
+353 743 390 762 L
+390 762 353 762 L
+353 743 390 743 L
+390 743 390 762 L
+390 762 353 743 L
+428 762 390 762 L
+390 762 390 743 L
+390 743 428 762 L
+390 743 428 743 L
+428 743 428 762 L
+428 762 390 743 L
+465 762 428 762 L
+428 762 428 743 L
+428 743 465 762 L
+465 743 465 762 L
+465 762 428 743 L
+428 743 465 743 L
+465 762 465 743 L
+465 743 502 762 L
+502 762 465 762 L
+465 743 502 743 L
+502 743 502 762 L
+502 762 465 743 L
+539 762 502 762 L
+502 762 502 743 L
+502 743 539 762 L
+539 743 539 762 L
+539 762 502 743 L
+502 743 539 743 L
+539 743 576 743 L
+576 743 539 762 L
+539 762 539 743 L
+539 762 576 743 L
+576 743 576 762 L
+576 762 539 762 L
+576 743 613 743 L
+613 743 576 762 L
+576 762 576 743 L
+613 762 576 762 L
+576 762 613 743 L
+613 743 613 762 L
+650 743 613 762 L
+613 762 613 743 L
+613 743 650 743 L
+613 762 650 743 L
+650 743 650 762 L
+650 762 613 762 L
+650 762 650 743 L
+650 743 688 743 L
+688 743 650 762 L
+688 743 688 762 L
+688 762 650 762 L
+650 762 688 743 L
+688 762 688 743 L
+688 743 725 762 L
+725 762 688 762 L
+781 743 781 745 L
+781 745 780 747 L
+780 747 781 743 L
+781 746 780 747 L
+780 747 781 745 L
+781 745 781 746 L
+781 746 781 747 L
+781 747 780 747 L
+780 747 781 746 L
+781 747 781 748 L
+781 748 780 747 L
+780 747 781 747 L
+780 747 781 748 L
+781 748 781 749 L
+781 749 780 747 L
+781 750 780 751 L
+780 751 781 749 L
+781 749 781 750 L
+781 750 781 751 L
+781 751 780 751 L
+780 751 781 750 L
+781 751 781 752 L
+781 752 780 751 L
+780 751 781 751 L
+780 751 781 752 L
+781 752 780 754 L
+780 754 780 751 L
+780 754 781 752 L
+781 752 781 753 L
+781 753 780 754 L
+780 758 781 762 L
+781 762 756 762 L
+756 762 780 758 L
+780 758 781 760 L
+781 760 781 762 L
+781 762 780 758 L
+774 750 780 758 L
+780 758 756 762 L
+756 762 774 750 L
+780 754 781 756 L
+781 756 780 758 L
+780 758 780 754 L
+781 760 780 758 L
+780 758 781 759 L
+781 759 781 760 L
+781 759 780 758 L
+780 758 781 759 L
+781 759 781 759 L
+781 759 780 758 L
+780 758 781 758 L
+781 758 781 759 L
+781 757 781 758 L
+781 758 780 758 L
+780 758 781 757 L
+781 757 780 758 L
+780 758 781 756 L
+781 756 781 757 L
+781 756 780 754 L
+780 754 781 755 L
+781 755 781 756 L
+774 750 756 762 L
+756 762 756 743 L
+756 743 774 750 L
+781 754 780 754 L
+780 754 781 753 L
+781 753 781 754 L
+781 754 781 755 L
+781 755 780 754 L
+780 754 781 754 L
+774 750 780 754 L
+780 754 780 758 L
+780 758 774 750 L
+781 743 774 750 L
+774 750 756 743 L
+756 743 781 743 L
+780 751 780 754 L
+780 754 774 750 L
+774 750 780 751 L
+780 747 780 751 L
+780 751 774 750 L
+774 750 780 747 L
+781 743 780 747 L
+780 747 774 750 L
+774 750 781 743 L
+781 745 781 745 L
+781 745 780 747 L
+780 747 781 745 L
+780 747 781 749 L
+781 749 780 751 L
+780 751 780 747 L
+756 762 725 762 L
+725 762 756 743 L
+756 743 756 762 L
+725 743 756 743 L
+756 743 725 762 L
+725 762 725 743 L
+688 743 725 743 L
+725 743 725 762 L
+725 762 688 743 L
+2 setlinewidth
+3 setlinewidth
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 762 37 760 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 760 37 759 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 759 37 759 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 759 37 758 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 758 37 757 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 757 37 756 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 756 37 755 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 755 37 754 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 754 37 753 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 753 37 752 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 752 37 751 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 751 37 750 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 750 37 749 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 749 37 748 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 748 37 747 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 747 37 746 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 746 37 745 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 745 37 745 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+37 745 37 743 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 762 756 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+756 762 725 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+725 762 688 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+688 762 650 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+650 762 613 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+613 762 576 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+576 762 539 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+539 762 502 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+502 762 465 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+465 762 428 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+428 762 390 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+390 762 353 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+353 762 316 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+316 762 279 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+279 762 242 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+242 762 205 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+205 762 168 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+168 762 130 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+130 762 93 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+93 762 62 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+62 762 37 762 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 743 781 745 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 745 781 745 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 745 781 746 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 746 781 747 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 747 781 748 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 748 781 749 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 749 781 750 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 750 781 751 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 751 781 752 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 752 781 753 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 753 781 754 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 754 781 755 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 755 781 756 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 756 781 757 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 757 781 758 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 758 781 759 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 759 781 759 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 759 781 760 L
+1.000 0.490 0.490 C
+1.000 0.745 0.243 C
+781 760 781 762 L
+1.000 1.000 0.000 C
+37 743 62 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+62 743 93 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+93 743 130 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+130 743 168 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+168 743 205 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+205 743 242 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+242 743 279 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+279 743 316 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+316 743 353 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+353 743 390 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+390 743 428 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+428 743 465 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+465 743 502 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+502 743 539 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+539 743 576 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+576 743 613 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+613 743 650 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+650 743 688 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+688 743 725 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+725 743 756 743 L
+1.000 0.745 0.243 C
+1.000 1.000 0.000 C
+756 743 781 743 L
+37 756 37 756 L
+37 755 37 755 L
+37 753 37 753 L
+37 752 37 752 L
+37 754 37 754 L
+37 751 37 751 L
+37 749 37 749 L
+37 748 37 748 L
+37 750 37 750 L
+37 747 37 747 L
+37 746 37 746 L
+37 745 37 745 L
+37 760 37 760 L
+37 759 37 759 L
+37 758 37 758 L
+37 757 37 757 L
+37 759 37 759 L
+37 745 37 745 L
+37 762 37 762 L
+37 743 37 743 L
+62 762 62 762 L
+62 743 62 743 L
+93 762 93 762 L
+93 743 93 743 L
+130 762 130 762 L
+130 743 130 743 L
+168 762 168 762 L
+168 743 168 743 L
+205 762 205 762 L
+205 743 205 743 L
+242 762 242 762 L
+242 743 242 743 L
+279 762 279 762 L
+279 743 279 743 L
+316 762 316 762 L
+316 743 316 743 L
+353 762 353 762 L
+353 743 353 743 L
+390 762 390 762 L
+390 743 390 743 L
+428 762 428 762 L
+428 743 428 743 L
+465 762 465 762 L
+465 743 465 743 L
+502 762 502 762 L
+502 743 502 743 L
+539 762 539 762 L
+539 743 539 743 L
+576 762 576 762 L
+576 743 576 743 L
+613 762 613 762 L
+613 743 613 743 L
+650 762 650 762 L
+650 743 650 743 L
+688 762 688 762 L
+688 743 688 743 L
+725 743 725 743 L
+781 745 781 745 L
+781 745 781 745 L
+781 747 781 747 L
+781 746 781 746 L
+781 748 781 748 L
+725 762 725 762 L
+781 743 781 743 L
+756 743 756 743 L
+781 749 781 749 L
+781 751 781 751 L
+781 750 781 750 L
+756 762 756 762 L
+781 762 781 762 L
+781 752 781 752 L
+781 758 781 758 L
+781 759 781 759 L
+781 760 781 760 L
+781 759 781 759 L
+781 757 781 757 L
+781 753 781 753 L
+781 756 781 756 L
+781 754 781 754 L
+781 755 781 755 L
+1 setlinewidth
+0.000 0.000 0.000 C
+74 743 37 743 L
+37 743 37 707 L
+37 707 74 743 L
+65 661 86 646 L
+86 646 92 689 L
+92 689 65 661 L
+61 695 65 661 L
+65 661 92 689 L
+92 689 61 695 L
+92 716 61 695 L
+61 695 92 689 L
+92 689 92 716 L
+37 707 37 670 L
+37 670 61 695 L
+61 695 37 707 L
+37 670 37 634 L
+37 634 65 661 L
+65 661 37 670 L
+61 695 37 670 L
+37 670 65 661 L
+65 661 61 695 L
+37 634 62 622 L
+62 622 65 661 L
+65 661 37 634 L
+61 695 74 743 L
+74 743 37 707 L
+37 707 61 695 L
+136 695 120 716 L
+120 716 92 689 L
+92 689 136 695 L
+111 743 74 743 L
+74 743 92 716 L
+92 716 111 743 L
+62 622 106 607 L
+106 607 86 646 L
+86 646 62 622 L
+37 562 83 580 L
+83 580 37 598 L
+37 598 37 562 L
+65 553 89 540 L
+89 540 83 580 L
+83 580 65 553 L
+148 743 111 743 L
+111 743 120 716 L
+120 716 148 743 L
+62 517 65 553 L
+65 553 37 525 L
+37 525 62 517 L
+37 489 64 479 L
+64 479 62 517 L
+62 517 37 489 L
+172 585 199 611 L
+199 611 161 630 L
+161 630 172 585 L
+130 634 136 602 L
+136 602 161 630 L
+161 630 130 634 L
+145 558 191 548 L
+191 548 172 585 L
+172 585 145 558 L
+176 689 136 695 L
+136 695 153 661 L
+153 661 176 689 L
+185 743 161 713 L
+161 713 199 716 L
+199 716 185 743 L
+148 743 120 716 L
+120 716 161 713 L
+161 713 148 743 L
+65 553 37 562 L
+37 562 37 525 L
+37 525 65 553 L
+111 574 83 580 L
+83 580 89 540 L
+89 540 111 574 L
+83 580 37 562 L
+37 562 65 553 L
+65 553 83 580 L
+176 689 210 687 L
+210 687 199 716 L
+199 716 176 689 L
+136 695 176 689 L
+176 689 161 713 L
+161 713 136 695 L
+153 661 161 630 L
+161 630 186 658 L
+186 658 153 661 L
+62 444 64 479 L
+64 479 37 453 L
+37 453 62 444 L
+186 658 176 689 L
+176 689 153 661 L
+153 661 186 658 L
+199 611 186 658 L
+186 658 161 630 L
+161 630 199 611 L
+226 664 210 687 L
+210 687 186 658 L
+186 658 226 664 L
+185 743 199 716 L
+199 716 223 743 L
+223 743 185 743 L
+185 743 148 743 L
+148 743 161 713 L
+161 713 185 743 L
+114 492 118 532 L
+118 532 91 506 L
+91 506 114 492 L
+217 576 172 585 L
+172 585 191 548 L
+191 548 217 576 L
+111 574 89 540 L
+89 540 118 532 L
+118 532 111 574 L
+172 585 136 602 L
+136 602 145 558 L
+145 558 172 585 L
+106 607 83 580 L
+83 580 111 574 L
+111 574 106 607 L
+145 558 136 602 L
+136 602 111 574 L
+111 574 145 558 L
+226 638 186 658 L
+186 658 199 611 L
+199 611 226 638 L
+153 661 111 671 L
+111 671 130 634 L
+130 634 153 661 L
+176 689 199 716 L
+199 716 161 713 L
+161 713 176 689 L
+186 658 210 687 L
+210 687 176 689 L
+176 689 186 658 L
+226 664 250 690 L
+250 690 210 687 L
+210 687 226 664 L
+226 638 226 664 L
+226 664 186 658 L
+186 658 226 638 L
+243 604 226 638 L
+226 638 199 611 L
+199 611 243 604 L
+243 604 269 632 L
+269 632 226 638 L
+226 638 243 604 L
+260 662 250 690 L
+250 690 226 664 L
+226 664 260 662 L
+136 695 92 689 L
+92 689 111 671 L
+111 671 136 695 L
+62 622 37 598 L
+37 598 83 580 L
+83 580 62 622 L
+106 607 62 622 L
+62 622 83 580 L
+83 580 106 607 L
+86 646 65 661 L
+65 661 62 622 L
+62 622 86 646 L
+130 634 86 646 L
+86 646 106 607 L
+106 607 130 634 L
+136 695 111 671 L
+111 671 153 661 L
+153 661 136 695 L
+92 689 86 646 L
+86 646 111 671 L
+111 671 92 689 L
+120 716 92 716 L
+92 716 92 689 L
+92 689 120 716 L
+161 713 120 716 L
+120 716 136 695 L
+136 695 161 713 L
+111 743 92 716 L
+92 716 120 716 L
+120 716 111 743 L
+92 716 74 743 L
+74 743 61 695 L
+61 695 92 716 L
+37 634 37 598 L
+37 598 62 622 L
+62 622 37 634 L
+226 638 260 662 L
+260 662 226 664 L
+226 664 226 638 L
+62 408 62 444 L
+62 444 37 416 L
+37 416 62 408 L
+140 517 118 532 L
+118 532 114 492 L
+114 492 140 517 L
+166 520 140 517 L
+140 517 143 484 L
+143 484 166 520 L
+126 371 143 415 L
+143 415 114 397 L
+114 397 126 371 L
+191 548 145 558 L
+145 558 166 520 L
+166 520 191 548 L
+118 532 89 540 L
+89 540 91 506 L
+91 506 118 532 L
+145 558 118 532 L
+118 532 140 517 L
+140 517 145 558 L
+145 558 111 574 L
+111 574 118 532 L
+118 532 145 558 L
+62 517 37 525 L
+37 525 37 489 L
+37 489 62 517 L
+89 540 62 517 L
+62 517 91 506 L
+91 506 89 540 L
+89 540 65 553 L
+65 553 62 517 L
+62 517 89 540 L
+62 408 90 432 L
+90 432 62 444 L
+62 444 62 408 L
+37 380 62 408 L
+62 408 37 416 L
+37 416 37 380 L
+37 380 63 354 L
+63 354 62 408 L
+62 408 37 380 L
+217 576 199 611 L
+199 611 172 585 L
+172 585 217 576 L
+362 599 382 620 L
+382 620 329 620 L
+329 620 362 599 L
+382 581 362 599 L
+362 599 343 578 L
+343 578 382 581 L
+382 581 382 620 L
+382 620 362 599 L
+362 599 382 581 L
+271 718 297 743 L
+297 743 260 743 L
+260 743 271 718 L
+271 718 310 716 L
+310 716 297 743 L
+297 743 271 718 L
+232 716 271 718 L
+271 718 260 743 L
+260 743 232 716 L
+250 690 260 662 L
+260 662 280 690 L
+280 690 250 690 L
+271 718 250 690 L
+250 690 280 690 L
+280 690 271 718 L
+232 716 210 687 L
+210 687 250 690 L
+250 690 232 716 L
+356 691 346 718 L
+346 718 310 716 L
+310 716 356 691 L
+289 614 303 639 L
+303 639 269 632 L
+269 632 289 614 L
+276 588 289 614 L
+289 614 269 632 L
+269 632 276 588 L
+276 588 309 587 L
+309 587 289 614 L
+289 614 276 588 L
+376 541 409 562 L
+409 562 382 581 L
+382 581 376 541 L
+336 509 376 541 L
+376 541 332 546 L
+332 546 336 509 L
+377 504 409 525 L
+409 525 376 541 L
+376 541 377 504 L
+329 620 303 639 L
+303 639 289 614 L
+289 614 329 620 L
+362 599 329 620 L
+329 620 343 578 L
+343 578 362 599 L
+382 620 369 650 L
+369 650 329 620 L
+329 620 382 620 L
+409 634 382 620 L
+382 620 409 598 L
+409 598 409 634 L
+329 665 303 639 L
+303 639 329 620 L
+329 620 329 665 L
+310 716 329 665 L
+329 665 356 691 L
+356 691 310 716 L
+294 668 303 639 L
+303 639 329 665 L
+329 665 294 668 L
+280 690 294 668 L
+294 668 310 716 L
+310 716 280 690 L
+280 690 260 662 L
+260 662 294 668 L
+294 668 280 690 L
+294 668 260 662 L
+260 662 269 632 L
+269 632 294 668 L
+271 718 280 690 L
+280 690 310 716 L
+310 716 271 718 L
+271 718 232 716 L
+232 716 250 690 L
+250 690 271 718 L
+223 743 232 716 L
+232 716 260 743 L
+260 743 223 743 L
+199 716 210 687 L
+210 687 232 716 L
+232 716 199 716 L
+269 632 303 639 L
+303 639 294 668 L
+294 668 269 632 L
+226 638 269 632 L
+269 632 260 662 L
+260 662 226 638 L
+243 604 249 561 L
+249 561 276 588 L
+276 588 243 604 L
+90 363 62 408 L
+62 408 63 354 L
+63 354 90 363 L
+753 553 710 532 L
+710 532 755 514 L
+755 514 753 553 L
+781 562 753 553 L
+753 553 781 525 L
+781 525 781 562 L
+735 580 703 565 L
+703 565 753 553 L
+753 553 735 580 L
+651 616 615 638 L
+615 638 608 607 L
+608 607 651 616 L
+698 607 651 616 L
+651 616 663 585 L
+663 585 698 607 L
+688 634 675 665 L
+675 665 651 616 L
+651 616 688 634 L
+563 566 590 532 L
+590 532 601 576 L
+601 576 563 566 L
+575 604 563 566 L
+563 566 601 576 L
+601 576 575 604 L
+524 556 554 516 L
+554 516 563 566 L
+563 566 524 556 L
+681 314 637 286 L
+637 286 675 277 L
+675 277 681 314 L
+728 328 687 352 L
+687 352 681 314 L
+681 314 728 328 L
+692 389 698 426 L
+698 426 662 393 L
+662 393 692 389 L
+563 566 554 516 L
+554 516 590 532 L
+590 532 563 566 L
+470 310 444 294 L
+444 294 480 280 L
+480 280 470 310 L
+501 298 470 310 L
+470 310 480 280 L
+480 280 501 298 L
+515 248 501 298 L
+501 298 480 280 L
+480 280 515 248 L
+523 315 509 341 L
+509 341 501 298 L
+501 298 523 315 L
+475 354 442 367 L
+442 367 439 327 L
+439 327 475 354 L
+501 298 509 341 L
+509 341 470 310 L
+470 310 501 298 L
+561 305 523 315 L
+523 315 531 276 L
+531 276 561 305 L
+624 404 662 393 L
+662 393 657 432 L
+657 432 624 404 L
+620 445 624 404 L
+624 404 657 432 L
+657 432 620 445 L
+512 436 549 425 L
+549 425 546 470 L
+546 470 512 436 L
+549 338 509 341 L
+509 341 523 315 L
+523 315 549 338 L
+561 393 511 404 L
+511 404 536 371 L
+536 371 561 393 L
+511 404 477 417 L
+477 417 476 386 L
+476 386 511 404 L
+586 327 599 296 L
+599 296 620 328 L
+620 328 586 327 L
+561 259 561 305 L
+561 305 531 276 L
+531 276 561 259 L
+641 361 662 393 L
+662 393 624 404 L
+624 404 641 361 L
+587 414 561 393 L
+561 393 605 366 L
+605 366 587 414 L
+657 333 637 286 L
+637 286 681 314 L
+681 314 657 333 L
+624 404 605 366 L
+605 366 641 361 L
+641 361 624 404 L
+599 296 637 286 L
+637 286 620 328 L
+620 328 599 296 L
+586 232 593 264 L
+593 264 561 259 L
+561 259 586 232 L
+657 333 681 314 L
+681 314 687 352 L
+687 352 657 333 L
+620 328 657 333 L
+657 333 641 361 L
+641 361 620 328 L
+620 328 637 286 L
+637 286 657 333 L
+657 333 620 328 L
+476 386 443 399 L
+443 399 442 367 L
+442 367 476 386 L
+510 373 476 386 L
+476 386 475 354 L
+475 354 510 373 L
+477 417 443 399 L
+443 399 476 386 L
+476 386 477 417 L
+511 404 512 436 L
+512 436 477 417 L
+477 417 511 404 L
+476 386 510 373 L
+510 373 511 404 L
+511 404 476 386 L
+577 352 536 371 L
+536 371 549 338 L
+549 338 577 352 L
+577 352 561 393 L
+561 393 536 371 L
+536 371 577 352 L
+620 328 605 366 L
+605 366 586 327 L
+586 327 620 328 L
+624 404 587 414 L
+587 414 605 366 L
+605 366 624 404 L
+587 414 549 425 L
+549 425 561 393 L
+561 393 587 414 L
+549 425 511 404 L
+511 404 561 393 L
+561 393 549 425 L
+510 373 509 341 L
+509 341 536 371 L
+536 371 510 373 L
+470 310 509 341 L
+509 341 475 354 L
+475 354 470 310 L
+586 327 561 305 L
+561 305 599 296 L
+599 296 586 327 L
+641 361 605 366 L
+605 366 620 328 L
+620 328 641 361 L
+549 338 561 305 L
+561 305 586 327 L
+586 327 549 338 L
+509 341 549 338 L
+549 338 536 371 L
+536 371 509 341 L
+523 315 561 305 L
+561 305 549 338 L
+549 338 523 315 L
+554 516 546 470 L
+546 470 580 483 L
+580 483 554 516 L
+512 477 477 469 L
+477 469 512 436 L
+512 436 512 477 L
+532 494 518 518 L
+518 518 512 477 L
+512 477 532 494 L
+546 470 532 494 L
+532 494 512 477 L
+512 477 546 470 L
+546 470 554 516 L
+554 516 532 494 L
+532 494 546 470 L
+590 532 554 516 L
+554 516 580 483 L
+580 483 590 532 L
+518 518 482 509 L
+482 509 512 477 L
+512 477 518 518 L
+524 556 518 518 L
+518 518 554 516 L
+554 516 524 556 L
+524 556 475 557 L
+475 557 497 538 L
+497 538 524 556 L
+445 499 443 461 L
+443 461 477 469 L
+477 469 445 499 L
+443 430 409 417 L
+409 417 443 399 L
+443 399 443 430 L
+477 417 443 430 L
+443 430 443 399 L
+443 399 477 417 L
+443 461 409 453 L
+409 453 443 430 L
+443 430 443 461 L
+374 462 333 436 L
+333 436 374 431 L
+374 431 374 462 L
+409 489 377 504 L
+377 504 374 462 L
+374 462 409 489 L
+336 509 300 518 L
+300 518 284 488 L
+284 488 336 509 L
+470 310 439 327 L
+439 327 444 294 L
+444 294 470 310 L
+678 492 682 525 L
+682 525 648 510 L
+648 510 678 492 L
+632 580 608 607 L
+608 607 601 576 L
+601 576 632 580 L
+673 558 663 585 L
+663 585 652 542 L
+652 542 673 558 L
+682 525 673 558 L
+673 558 652 542 L
+652 542 682 525 L
+703 565 735 580 L
+735 580 698 607 L
+698 607 703 565 L
+682 525 703 565 L
+703 565 673 558 L
+673 558 682 525 L
+710 532 753 553 L
+753 553 703 565 L
+703 565 710 532 L
+698 607 688 634 L
+688 634 651 616 L
+651 616 698 607 L
+447 535 475 557 L
+475 557 436 581 L
+436 581 447 535 L
+445 499 447 535 L
+447 535 409 525 L
+409 525 445 499 L
+445 499 482 509 L
+482 509 447 535 L
+447 535 445 499 L
+409 489 443 461 L
+443 461 445 499 L
+445 499 409 489 L
+542 595 549 632 L
+549 632 515 639 L
+515 639 542 595 L
+608 607 575 604 L
+575 604 601 576 L
+601 576 608 607 L
+652 542 663 585 L
+663 585 632 580 L
+632 580 652 542 L
+583 634 599 667 L
+599 667 558 662 L
+558 662 583 634 L
+632 580 651 616 L
+651 616 608 607 L
+608 607 632 580 L
+568 690 614 689 L
+614 689 583 715 L
+583 715 568 690 L
+675 665 642 661 L
+642 661 651 616 L
+651 616 675 665 L
+707 671 675 665 L
+675 665 688 634 L
+688 634 707 671 L
+728 613 732 646 L
+732 646 688 634 L
+688 634 728 613 L
+726 689 726 716 L
+726 716 698 716 L
+698 716 726 689 L
+732 646 726 689 L
+726 689 707 671 L
+707 671 732 646 L
+757 695 726 716 L
+726 716 726 689 L
+726 689 757 695 L
+698 716 726 716 L
+726 716 707 743 L
+707 743 698 716 L
+670 743 698 716 L
+698 716 707 743 L
+707 743 670 743 L
+682 695 726 689 L
+726 689 698 716 L
+698 716 682 695 L
+599 667 568 690 L
+568 690 558 662 L
+558 662 599 667 L
+642 661 599 667 L
+599 667 615 638 L
+615 638 642 661 L
+614 689 622 717 L
+622 717 583 715 L
+583 715 614 689 L
+642 661 614 689 L
+614 689 599 667 L
+599 667 642 661 L
+648 691 657 719 L
+657 719 622 717 L
+622 717 648 691 L
+642 661 648 691 L
+648 691 614 689 L
+614 689 642 661 L
+642 661 675 665 L
+675 665 648 691 L
+648 691 642 661 L
+730 294 728 328 L
+728 328 704 296 L
+704 296 730 294 L
+443 430 409 453 L
+409 453 409 417 L
+409 417 443 430 L
+443 430 477 417 L
+477 417 477 469 L
+477 469 443 430 L
+409 380 443 399 L
+443 399 409 417 L
+409 417 409 380 L
+442 367 475 354 L
+475 354 476 386 L
+476 386 442 367 L
+409 380 442 367 L
+442 367 443 399 L
+443 399 409 380 L
+409 380 409 344 L
+409 344 442 367 L
+442 367 409 380 L
+445 499 409 525 L
+409 525 409 489 L
+409 489 445 499 L
+443 430 477 469 L
+477 469 443 461 L
+443 461 443 430 L
+447 535 436 581 L
+436 581 409 562 L
+409 562 447 535 L
+477 469 482 509 L
+482 509 445 499 L
+445 499 477 469 L
+524 556 509 587 L
+509 587 475 557 L
+475 557 524 556 L
+497 538 518 518 L
+518 518 524 556 L
+524 556 497 538 L
+482 509 497 538 L
+497 538 475 557 L
+475 557 482 509 L
+482 509 518 518 L
+518 518 497 538 L
+497 538 482 509 L
+447 535 482 509 L
+482 509 475 557 L
+475 557 447 535 L
+518 518 532 494 L
+532 494 554 516 L
+554 516 518 518 L
+477 469 512 477 L
+512 477 482 509 L
+482 509 477 469 L
+477 469 477 417 L
+477 417 512 436 L
+512 436 477 469 L
+620 520 590 532 L
+590 532 614 491 L
+614 491 620 520 L
+648 510 620 520 L
+620 520 614 491 L
+614 491 648 510 L
+627 548 590 532 L
+590 532 620 520 L
+620 520 627 548 L
+627 548 601 576 L
+601 576 590 532 L
+590 532 627 548 L
+509 587 462 601 L
+462 601 475 557 L
+475 557 509 587 L
+376 541 343 578 L
+343 578 332 546 L
+332 546 376 541 L
+235 501 228 538 L
+228 538 200 505 L
+200 505 235 501 L
+130 634 111 671 L
+111 671 86 646 L
+86 646 130 634 L
+136 602 130 634 L
+130 634 106 607 L
+106 607 136 602 L
+111 574 136 602 L
+136 602 106 607 L
+106 607 111 574 L
+172 585 161 630 L
+161 630 136 602 L
+136 602 172 585 L
+161 630 153 661 L
+153 661 130 634 L
+130 634 161 630 L
+37 380 37 344 L
+37 344 63 354 L
+63 354 37 380 L
+345 210 313 198 L
+313 198 343 173 L
+343 173 345 210 L
+374 431 375 399 L
+375 399 409 417 L
+409 417 374 431 L
+336 509 305 461 L
+305 461 339 472 L
+339 472 336 509 L
+264 516 294 556 L
+294 556 249 561 L
+249 561 264 516 L
+284 488 300 518 L
+300 518 264 516 L
+264 516 284 488 L
+235 501 257 455 L
+257 455 284 488 L
+284 488 235 501 L
+309 419 333 436 L
+333 436 305 461 L
+305 461 309 419 L
+332 546 343 578 L
+343 578 309 587 L
+309 587 332 546 L
+300 518 332 546 L
+332 546 294 556 L
+294 556 300 518 L
+336 509 377 504 L
+377 504 376 541 L
+376 541 336 509 L
+191 548 166 520 L
+166 520 200 505 L
+200 505 191 548 L
+204 269 176 289 L
+176 289 170 251 L
+170 251 204 269 L
+238 288 210 302 L
+210 302 204 269 L
+204 269 238 288 L
+287 276 265 296 L
+265 296 257 259 L
+257 259 287 276 L
+243 315 210 302 L
+210 302 238 288 L
+238 288 243 315 L
+276 328 243 315 L
+243 315 265 296 L
+265 296 276 328 L
+307 356 276 328 L
+276 328 306 325 L
+306 325 307 356 L
+341 343 307 356 L
+307 356 306 325 L
+306 325 341 343 L
+325 381 298 389 L
+298 389 307 356 L
+307 356 325 381 L
+210 423 243 428 L
+243 428 219 465 L
+219 465 210 423 L
+298 389 309 419 L
+309 419 276 432 L
+276 432 298 389 L
+254 354 298 389 L
+298 389 265 393 L
+265 393 254 354 L
+325 381 309 419 L
+309 419 298 389 L
+298 389 325 381 L
+309 419 305 461 L
+305 461 276 432 L
+276 432 309 419 L
+243 428 276 432 L
+276 432 257 455 L
+257 455 243 428 L
+219 465 243 428 L
+243 428 257 455 L
+257 455 219 465 L
+210 423 201 394 L
+201 394 229 379 L
+229 379 210 423 L
+243 428 265 393 L
+265 393 276 432 L
+276 432 243 428 L
+143 415 168 390 L
+168 390 181 440 L
+181 440 143 415 L
+210 423 229 379 L
+229 379 243 428 L
+243 428 210 423 L
+181 440 201 394 L
+201 394 210 423 L
+210 423 181 440 L
+193 365 218 340 L
+218 340 229 379 L
+229 379 193 365 L
+276 328 254 354 L
+254 354 243 315 L
+243 315 276 328 L
+276 328 307 356 L
+307 356 254 354 L
+254 354 276 328 L
+254 354 307 356 L
+307 356 298 389 L
+298 389 254 354 L
+143 311 114 296 L
+114 296 143 277 L
+143 277 143 311 L
+143 346 120 334 L
+120 334 143 311 L
+143 311 143 346 L
+126 371 90 363 L
+90 363 120 334 L
+120 334 126 371 L
+439 327 409 344 L
+409 344 409 308 L
+409 308 439 327 L
+475 354 439 327 L
+439 327 470 310 L
+470 310 475 354 L
+442 367 409 344 L
+409 344 439 327 L
+439 327 442 367 L
+637 286 629 255 L
+629 255 675 277 L
+675 277 637 286 L
+652 241 675 277 L
+675 277 629 255 L
+629 255 652 241 L
+647 213 673 202 L
+673 202 652 241 L
+652 241 647 213 L
+627 193 647 213 L
+647 213 622 225 L
+622 225 627 193 L
+627 193 663 176 L
+663 176 647 213 L
+647 213 627 193 L
+622 225 647 213 L
+647 213 652 241 L
+652 241 622 225 L
+569 173 575 143 L
+575 143 601 185 L
+601 185 569 173 L
+536 227 557 206 L
+557 206 586 232 L
+586 232 536 227 L
+505 212 536 227 L
+536 227 515 248 L
+515 248 505 212 L
+505 212 529 179 L
+529 179 536 227 L
+536 227 505 212 L
+622 225 586 232 L
+586 232 601 185 L
+601 185 622 225 L
+629 255 637 286 L
+637 286 593 264 L
+593 264 629 255 L
+586 232 629 255 L
+629 255 593 264 L
+593 264 586 232 L
+622 225 652 241 L
+652 241 629 255 L
+629 255 622 225 L
+436 140 409 162 L
+409 162 409 126 L
+409 126 436 140 L
+502 121 514 146 L
+514 146 479 146 L
+479 146 502 121 L
+524 101 502 121 L
+502 121 489 95 L
+489 95 524 101 L
+524 101 514 146 L
+514 146 502 121 L
+502 121 524 101 L
+441 223 409 235 L
+409 235 409 199 L
+409 199 441 223 L
+473 232 441 223 L
+441 223 449 192 L
+449 192 473 232 L
+473 232 480 280 L
+480 280 441 252 L
+441 252 473 232 L
+449 192 409 199 L
+409 199 409 162 L
+409 162 449 192 L
+377 223 372 257 L
+372 257 346 241 L
+346 241 377 223 L
+409 199 377 223 L
+377 223 369 192 L
+369 192 409 199 L
+409 235 372 257 L
+372 257 377 223 L
+377 223 409 235 L
+619 149 663 176 L
+663 176 627 193 L
+627 193 619 149 L
+374 431 409 417 L
+409 417 409 453 L
+409 453 374 431 L
+374 462 374 431 L
+374 431 409 453 L
+409 453 374 462 L
+409 489 374 462 L
+374 462 409 453 L
+409 453 409 489 L
+339 472 333 436 L
+333 436 374 462 L
+374 462 339 472 L
+333 436 343 406 L
+343 406 374 431 L
+374 431 333 436 L
+681 314 675 277 L
+675 277 704 296 L
+704 296 681 314 L
+728 328 681 314 L
+681 314 704 296 L
+704 296 728 328 L
+687 352 641 361 L
+641 361 657 333 L
+657 333 687 352 L
+620 445 587 414 L
+587 414 624 404 L
+624 404 620 445 L
+546 470 575 451 L
+575 451 580 483 L
+580 483 546 470 L
+549 425 587 414 L
+587 414 575 451 L
+575 451 549 425 L
+511 404 549 425 L
+549 425 512 436 L
+512 436 511 404 L
+511 404 510 373 L
+510 373 536 371 L
+536 371 511 404 L
+409 308 444 294 L
+444 294 439 327 L
+439 327 409 308 L
+561 305 561 259 L
+561 259 593 264 L
+593 264 561 305 L
+501 298 531 276 L
+531 276 523 315 L
+523 315 501 298 L
+480 280 473 232 L
+473 232 515 248 L
+515 248 480 280 L
+441 252 480 280 L
+480 280 444 294 L
+444 294 441 252 L
+561 259 515 248 L
+515 248 536 227 L
+536 227 561 259 L
+501 298 515 248 L
+515 248 531 276 L
+531 276 501 298 L
+473 232 489 186 L
+489 186 505 212 L
+505 212 473 232 L
+629 255 586 232 L
+586 232 622 225 L
+622 225 629 255 L
+599 296 593 264 L
+593 264 637 286 L
+637 286 599 296 L
+599 296 561 305 L
+561 305 593 264 L
+593 264 599 296 L
+512 436 546 470 L
+546 470 512 477 L
+512 477 512 436 L
+475 354 509 341 L
+509 341 510 373 L
+510 373 475 354 L
+577 352 605 366 L
+605 366 561 393 L
+561 393 577 352 L
+586 327 577 352 L
+577 352 549 338 L
+549 338 586 327 L
+586 327 605 366 L
+605 366 577 352 L
+577 352 586 327 L
+505 212 489 186 L
+489 186 529 179 L
+529 179 505 212 L
+557 206 536 227 L
+536 227 529 179 L
+529 179 557 206 L
+569 173 557 206 L
+557 206 529 179 L
+529 179 569 173 L
+586 232 561 259 L
+561 259 536 227 L
+536 227 586 232 L
+515 248 473 232 L
+473 232 505 212 L
+505 212 515 248 L
+200 505 181 474 L
+181 474 219 465 L
+219 465 200 505 L
+199 716 232 716 L
+232 716 223 743 L
+223 743 199 716 L
+37 54 37 17 L
+37 17 74 17 L
+74 17 37 54 L
+61 66 65 99 L
+65 99 37 90 L
+37 90 61 66 L
+74 17 61 66 L
+61 66 37 54 L
+37 54 74 17 L
+92 72 111 90 L
+111 90 91 110 L
+91 110 92 72 L
+92 45 92 72 L
+92 72 61 66 L
+61 66 92 45 L
+92 45 120 45 L
+120 45 92 72 L
+92 72 92 45 L
+111 17 92 45 L
+92 45 74 17 L
+74 17 111 17 L
+136 66 111 90 L
+111 90 92 72 L
+92 72 136 66 L
+120 45 92 45 L
+92 45 111 17 L
+111 17 120 45 L
+148 17 120 45 L
+120 45 111 17 L
+111 17 148 17 L
+136 66 92 72 L
+92 72 120 45 L
+120 45 136 66 L
+74 17 92 45 L
+92 45 61 66 L
+61 66 74 17 L
+120 45 148 17 L
+148 17 161 41 L
+161 41 120 45 L
+161 41 148 17 L
+148 17 185 17 L
+185 17 161 41 L
+196 43 161 41 L
+161 41 185 17 L
+185 17 196 43 L
+170 69 136 66 L
+136 66 161 41 L
+161 41 170 69 L
+148 126 136 158 L
+136 158 116 121 L
+116 121 148 126 L
+111 90 143 95 L
+143 95 116 121 L
+116 121 111 90 L
+186 102 203 123 L
+203 123 167 144 L
+167 144 186 102 L
+61 66 37 90 L
+37 90 37 54 L
+37 54 61 66 L
+115 195 145 202 L
+145 202 118 228 L
+118 228 115 195 L
+116 121 136 158 L
+136 158 86 138 L
+86 138 116 121 L
+65 99 91 110 L
+91 110 86 138 L
+86 138 65 99 L
+143 95 170 69 L
+170 69 186 102 L
+186 102 143 95 L
+116 121 143 95 L
+143 95 148 126 L
+148 126 116 121 L
+136 66 170 69 L
+170 69 143 95 L
+143 95 136 66 L
+145 202 166 218 L
+166 218 140 243 L
+140 243 145 202 L
+136 158 145 202 L
+145 202 115 195 L
+115 195 136 158 L
+172 176 166 218 L
+166 218 145 202 L
+145 202 172 176 L
+148 126 167 144 L
+167 144 136 158 L
+136 158 148 126 L
+191 193 196 225 L
+196 225 166 218 L
+166 218 191 193 L
+192 156 191 193 L
+191 193 172 176 L
+172 176 192 156 L
+217 168 223 199 L
+223 199 191 193 L
+191 193 217 168 L
+37 126 37 90 L
+37 90 65 99 L
+65 99 37 126 L
+232 44 204 72 L
+204 72 196 43 L
+196 43 232 44 L
+65 99 86 138 L
+86 138 37 126 L
+37 126 65 99 L
+196 43 170 69 L
+170 69 161 41 L
+161 41 196 43 L
+260 99 219 93 L
+219 93 245 68 L
+245 68 260 99 L
+186 102 170 69 L
+170 69 204 72 L
+204 72 186 102 L
+93 181 86 138 L
+86 138 136 158 L
+136 158 93 181 L
+86 215 93 181 L
+93 181 115 195 L
+115 195 86 215 L
+63 173 86 138 L
+86 138 93 181 L
+93 181 63 173 L
+115 195 93 181 L
+93 181 136 158 L
+136 158 115 195 L
+37 199 63 173 L
+63 173 86 215 L
+86 215 37 199 L
+37 163 86 138 L
+86 138 63 173 L
+63 173 37 163 L
+111 90 136 66 L
+136 66 143 95 L
+143 95 111 90 L
+91 110 111 90 L
+111 90 116 121 L
+116 121 91 110 L
+86 138 91 110 L
+91 110 116 121 L
+116 121 86 138 L
+65 99 92 72 L
+92 72 91 110 L
+91 110 65 99 L
+65 99 61 66 L
+61 66 92 72 L
+92 72 65 99 L
+192 156 203 123 L
+203 123 217 168 L
+217 168 192 156 L
+191 193 192 156 L
+192 156 217 168 L
+217 168 191 193 L
+167 144 203 123 L
+203 123 192 156 L
+192 156 167 144 L
+136 158 167 144 L
+167 144 172 176 L
+172 176 136 158 L
+148 126 186 102 L
+186 102 167 144 L
+167 144 148 126 L
+143 95 186 102 L
+186 102 148 126 L
+148 126 143 95 L
+120 45 161 41 L
+161 41 136 66 L
+136 66 120 45 L
+232 44 223 17 L
+223 17 260 17 L
+260 17 232 44 L
+204 72 232 44 L
+232 44 245 68 L
+245 68 204 72 L
+196 43 223 17 L
+223 17 232 44 L
+232 44 196 43 L
+170 69 196 43 L
+196 43 204 72 L
+204 72 170 69 L
+185 17 223 17 L
+223 17 196 43 L
+196 43 185 17 L
+219 93 260 99 L
+260 99 243 143 L
+243 143 219 93 L
+186 102 219 93 L
+219 93 203 123 L
+203 123 186 102 L
+204 72 245 68 L
+245 68 219 93 L
+219 93 204 72 L
+260 17 271 43 L
+271 43 232 44 L
+232 44 260 17 L
+271 43 297 17 L
+297 17 310 44 L
+310 44 271 43 L
+245 68 271 43 L
+271 43 280 70 L
+280 70 245 68 L
+260 17 297 17 L
+297 17 271 43 L
+271 43 260 17 L
+37 163 37 126 L
+37 126 86 138 L
+86 138 37 163 L
+320 73 294 93 L
+294 93 280 70 L
+280 70 320 73 L
+86 215 37 235 L
+37 235 37 199 L
+37 199 86 215 L
+37 163 63 173 L
+63 173 37 199 L
+37 199 37 163 L
+62 317 63 354 L
+63 354 37 344 L
+37 344 62 317 L
+37 271 64 281 L
+64 281 37 308 L
+37 308 37 271 L
+88 294 114 296 L
+114 296 90 328 L
+90 328 88 294 L
+62 317 88 294 L
+88 294 90 328 L
+90 328 62 317 L
+64 281 91 255 L
+91 255 88 294 L
+88 294 64 281 L
+91 255 114 269 L
+114 269 88 294 L
+88 294 91 255 L
+86 215 91 255 L
+91 255 63 246 L
+63 246 86 215 L
+118 228 114 269 L
+114 269 91 255 L
+91 255 118 228 L
+115 195 118 228 L
+118 228 86 215 L
+86 215 115 195 L
+63 173 93 181 L
+93 181 86 215 L
+86 215 63 173 L
+136 158 172 176 L
+172 176 145 202 L
+145 202 136 158 L
+140 243 143 277 L
+143 277 114 269 L
+114 269 140 243 L
+145 202 140 243 L
+140 243 118 228 L
+118 228 145 202 L
+166 218 196 225 L
+196 225 170 251 L
+170 251 166 218 L
+223 199 217 168 L
+217 168 249 173 L
+249 173 223 199 L
+310 44 334 17 L
+334 17 346 42 L
+346 42 310 44 L
+88 294 114 269 L
+114 269 114 296 L
+114 296 88 294 L
+37 308 64 281 L
+64 281 62 317 L
+62 317 37 308 L
+37 271 37 235 L
+37 235 63 246 L
+63 246 37 271 L
+91 255 86 215 L
+86 215 118 228 L
+118 228 91 255 L
+37 271 63 246 L
+63 246 64 281 L
+64 281 37 271 L
+37 235 86 215 L
+86 215 63 246 L
+63 246 37 235 L
+308 159 313 198 L
+313 198 281 185 L
+281 185 308 159 L
+409 271 372 257 L
+372 257 409 235 L
+409 235 409 271 L
+441 223 441 252 L
+441 252 409 235 L
+409 235 441 223 L
+409 199 449 192 L
+449 192 441 223 L
+441 223 409 199 L
+557 206 601 185 L
+601 185 586 232 L
+586 232 557 206 L
+265 296 306 325 L
+306 325 276 328 L
+276 328 265 296 L
+260 213 281 185 L
+281 185 285 235 L
+285 235 260 213 L
+347 271 374 294 L
+374 294 348 310 L
+348 310 347 271 L
+217 168 243 143 L
+243 143 249 173 L
+249 173 217 168 L
+436 43 442 77 L
+442 77 409 54 L
+409 54 436 43 L
+472 45 484 17 L
+484 17 508 44 L
+508 44 472 45 L
+449 111 442 77 L
+442 77 489 95 L
+489 95 449 111 L
+446 17 484 17 L
+484 17 472 45 L
+472 45 446 17 L
+280 70 260 99 L
+260 99 245 68 L
+245 68 280 70 L
+347 96 294 93 L
+294 93 320 73 L
+320 73 347 96 L
+303 121 269 129 L
+269 129 294 93 L
+294 93 303 121 L
+91 255 64 281 L
+64 281 63 246 L
+63 246 91 255 L
+346 42 372 17 L
+372 17 382 43 L
+382 43 346 42 L
+320 73 346 42 L
+346 42 356 69 L
+356 69 320 73 L
+334 17 372 17 L
+372 17 346 42 L
+346 42 334 17 L
+62 317 37 344 L
+37 344 37 308 L
+37 308 62 317 L
+90 432 116 423 L
+116 423 114 464 L
+114 464 90 432 L
+227 242 257 259 L
+257 259 238 288 L
+238 288 227 242 L
+223 199 227 242 L
+227 242 196 225 L
+196 225 223 199 L
+260 213 257 259 L
+257 259 227 242 L
+227 242 260 213 L
+140 243 170 251 L
+170 251 143 277 L
+143 277 140 243 L
+140 243 166 218 L
+166 218 170 251 L
+170 251 140 243 L
+62 444 88 467 L
+88 467 64 479 L
+64 479 62 444 L
+37 416 62 444 L
+62 444 37 453 L
+37 453 37 416 L
+90 432 88 467 L
+88 467 62 444 L
+62 444 90 432 L
+90 363 114 397 L
+114 397 62 408 L
+62 408 90 363 L
+90 328 90 363 L
+90 363 63 354 L
+63 354 90 328 L
+90 328 114 296 L
+114 296 120 334 L
+120 334 90 328 L
+62 317 90 328 L
+90 328 63 354 L
+63 354 62 317 L
+116 423 143 415 L
+143 415 143 449 L
+143 449 116 423 L
+114 397 116 423 L
+116 423 90 432 L
+90 432 114 397 L
+114 397 143 415 L
+143 415 116 423 L
+116 423 114 397 L
+90 328 120 334 L
+120 334 90 363 L
+90 363 90 328 L
+143 311 143 277 L
+143 277 176 289 L
+176 289 143 311 L
+176 324 143 311 L
+143 311 176 289 L
+176 289 176 324 L
+243 315 254 354 L
+254 354 218 340 L
+218 340 243 315 L
+126 371 120 334 L
+120 334 143 346 L
+143 346 126 371 L
+193 365 176 324 L
+176 324 218 340 L
+218 340 193 365 L
+114 397 90 363 L
+90 363 126 371 L
+126 371 114 397 L
+120 334 114 296 L
+114 296 143 311 L
+143 311 120 334 L
+114 464 88 467 L
+88 467 90 432 L
+90 432 114 464 L
+62 408 114 397 L
+114 397 90 432 L
+90 432 62 408 L
+114 492 91 506 L
+91 506 88 467 L
+88 467 114 492 L
+143 484 114 492 L
+114 492 114 464 L
+114 464 143 484 L
+143 484 140 517 L
+140 517 114 492 L
+114 492 143 484 L
+114 269 118 228 L
+118 228 140 243 L
+140 243 114 269 L
+166 520 145 558 L
+145 558 140 517 L
+140 517 166 520 L
+64 479 91 506 L
+91 506 62 517 L
+62 517 64 479 L
+37 453 64 479 L
+64 479 37 489 L
+37 489 37 453 L
+88 467 91 506 L
+91 506 64 479 L
+64 479 88 467 L
+62 317 64 281 L
+64 281 88 294 L
+88 294 62 317 L
+114 464 114 492 L
+114 492 88 467 L
+88 467 114 464 L
+508 44 538 70 L
+538 70 489 95 L
+489 95 508 44 L
+508 44 544 44 L
+544 44 538 70 L
+538 70 508 44 L
+652 241 673 202 L
+673 202 678 243 L
+678 243 652 241 L
+310 716 334 743 L
+334 743 297 743 L
+297 743 310 716 L
+294 668 329 665 L
+329 665 310 716 L
+310 716 294 668 L
+309 587 343 578 L
+343 578 329 620 L
+329 620 309 587 L
+289 614 309 587 L
+309 587 329 620 L
+329 620 289 614 L
+332 546 300 518 L
+300 518 336 509 L
+336 509 332 546 L
+276 588 294 556 L
+294 556 309 587 L
+309 587 276 588 L
+276 588 249 561 L
+249 561 294 556 L
+294 556 276 588 L
+243 604 276 588 L
+276 588 269 632 L
+269 632 243 604 L
+294 556 264 516 L
+264 516 300 518 L
+300 518 294 556 L
+369 650 382 681 L
+382 681 356 691 L
+356 691 369 650 L
+329 620 369 650 L
+369 650 329 665 L
+329 665 329 620 L
+382 620 409 634 L
+409 634 369 650 L
+369 650 382 620 L
+462 691 471 665 L
+471 665 498 687 L
+498 687 462 691 L
+409 598 444 636 L
+444 636 409 634 L
+409 634 409 598 L
+480 638 494 612 L
+494 612 515 639 L
+515 639 480 638 L
+436 581 462 601 L
+462 601 444 636 L
+444 636 436 581 L
+436 581 475 557 L
+475 557 462 601 L
+462 601 436 581 L
+436 717 409 743 L
+409 743 409 707 L
+409 707 436 717 L
+346 718 334 743 L
+334 743 310 716 L
+310 716 346 718 L
+382 717 346 718 L
+346 718 356 691 L
+356 691 382 717 L
+372 743 334 743 L
+334 743 346 718 L
+346 718 372 743 L
+781 17 781 54 L
+781 54 744 17 L
+744 17 781 17 L
+753 99 744 72 L
+744 72 781 90 L
+781 90 753 99 L
+781 90 744 72 L
+744 72 781 54 L
+781 54 781 90 L
+657 130 663 176 L
+663 176 619 149 L
+619 149 657 130 L
+625 119 657 130 L
+657 130 619 149 L
+619 149 625 119 L
+575 143 592 123 L
+592 123 619 149 L
+619 149 575 143 L
+608 74 648 69 L
+648 69 642 99 L
+642 99 608 74 L
+698 153 732 138 L
+732 138 707 187 L
+707 187 698 153 L
+670 104 702 121 L
+702 121 657 130 L
+657 130 670 104 L
+727 110 744 72 L
+744 72 753 99 L
+753 99 727 110 L
+682 78 714 75 L
+714 75 702 121 L
+702 121 682 78 L
+682 78 698 45 L
+698 45 714 75 L
+714 75 682 78 L
+781 126 732 138 L
+732 138 753 99 L
+753 99 781 126 L
+781 126 781 163 L
+781 163 732 138 L
+732 138 781 126 L
+753 99 781 90 L
+781 90 781 126 L
+781 126 753 99 L
+702 121 727 110 L
+727 110 732 138 L
+732 138 702 121 L
+714 75 698 45 L
+698 45 726 45 L
+726 45 714 75 L
+781 199 755 173 L
+755 173 781 163 L
+781 163 781 199 L
+726 45 707 17 L
+707 17 744 17 L
+744 17 726 45 L
+726 45 698 45 L
+698 45 707 17 L
+707 17 726 45 L
+781 54 726 45 L
+726 45 744 17 L
+744 17 781 54 L
+744 72 714 75 L
+714 75 726 45 L
+726 45 744 72 L
+781 54 744 72 L
+744 72 726 45 L
+726 45 781 54 L
+727 110 702 121 L
+702 121 714 75 L
+714 75 727 110 L
+744 72 727 110 L
+727 110 714 75 L
+714 75 744 72 L
+753 99 732 138 L
+732 138 727 110 L
+727 110 753 99 L
+682 78 648 69 L
+648 69 657 41 L
+657 41 682 78 L
+753 208 781 199 L
+781 199 781 235 L
+781 235 753 208 L
+673 202 707 187 L
+707 187 710 228 L
+710 228 673 202 L
+732 138 781 163 L
+781 163 7...
[truncated message content] |
|
From: <fab...@us...> - 2007-03-03 12:10:03
|
Revision: 117
http://fsem.svn.sourceforge.net/fsem/?rev=117&view=rev
Author: fabiandortu
Date: 2007-03-03 04:10:03 -0800 (Sat, 03 Mar 2007)
Log Message:
-----------
Changed properties of directory include-freefem/include/.
.hpp and .h files will not be saved anymore in repository in order
to make sure the user has the header files corresponding to the running
Freefem++ version
Property Changed:
----------------
fsem/include-freefem/include/
Property changes on: fsem/include-freefem/include
___________________________________________________________________
Name: svn:ignore
+ *.hpp
*.h
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-03 12:04:56
|
Revision: 116
http://fsem.svn.sourceforge.net/fsem/?rev=116&view=rev
Author: fabiandortu
Date: 2007-03-03 04:04:57 -0800 (Sat, 03 Mar 2007)
Log Message:
-----------
Clean Freefem++ headers. It is the responsability of
the user to install them to match the current Freefemi++ version
Removed Paths:
-------------
fsem/include-freefem/include/AFunction.hpp
fsem/include-freefem/include/AddNewFE.h
fsem/include-freefem/include/AnyType.hpp
fsem/include-freefem/include/BamgFreeFem.hpp
fsem/include-freefem/include/CGNL.hpp
fsem/include-freefem/include/CodeAlloc.hpp
fsem/include-freefem/include/DOperator.hpp
fsem/include-freefem/include/FESpace.hpp
fsem/include-freefem/include/FQuadTree.hpp
fsem/include-freefem/include/InitFunct.hpp
fsem/include-freefem/include/MatriceCreuse.hpp
fsem/include-freefem/include/MatriceCreuse_tpl.hpp
fsem/include-freefem/include/MeshPoint.hpp
fsem/include-freefem/include/Operator.hpp
fsem/include-freefem/include/QuadratureFormular.hpp
fsem/include-freefem/include/README
fsem/include-freefem/include/RNM.hpp
fsem/include-freefem/include/RNM_op.hpp
fsem/include-freefem/include/RNM_opc.hpp
fsem/include-freefem/include/RNM_tpl.hpp
fsem/include-freefem/include/RefCounter.hpp
fsem/include-freefem/include/Serialize.hpp
fsem/include-freefem/include/String.hpp
fsem/include-freefem/include/config-wrapper.h
fsem/include-freefem/include/config.h
fsem/include-freefem/include/environment.hpp
fsem/include-freefem/include/error.hpp
fsem/include-freefem/include/fem.hpp
fsem/include-freefem/include/fem3.hpp
fsem/include-freefem/include/ffstack.hpp
fsem/include-freefem/include/gmres.hpp
fsem/include-freefem/include/lex.hpp
fsem/include-freefem/include/lgfem.hpp
fsem/include-freefem/include/lgsolver.hpp
fsem/include-freefem/include/problem.hpp
fsem/include-freefem/include/rgraph.hpp
fsem/include-freefem/include/showverb.hpp
fsem/include-freefem/include/strversionnumber.hpp
fsem/include-freefem/include/throwassert.hpp
fsem/include-freefem/include/versionnumber.hpp
Deleted: fsem/include-freefem/include/AFunction.hpp
===================================================================
--- fsem/include-freefem/include/AFunction.hpp 2007-03-03 11:55:55 UTC (rev 115)
+++ fsem/include-freefem/include/AFunction.hpp 2007-03-03 12:04:57 UTC (rev 116)
@@ -1,2866 +0,0 @@
-// -*- Mode : c++ -*-
-//
-// SUMMARY :
-// USAGE :
-// ORG :
-// AUTHOR : Frederic Hecht
-// E-MAIL : he...@an...
-//
-
-/*
-
- This file is part of Freefem++
-
- Freefem++ is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- Freefem++ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with Freefem++; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-//file afonction.h
-#ifndef __AFONCTION__
-#define __AFONCTION__
-#include "showverb.hpp"
-
-
-#include <typeinfo>
-#include <cstddef>
-#include <iostream>
-#include <fstream>
-#include <cstring>
-#include "error.hpp"
-#include <map>
-#include <deque>
-#include <list>
-#include <vector>
-#include <queue>
-#include <complex>
-#include <string>
-#include <cstdlib>
-#include <algorithm>
-extern bool showCPU;
-#include <time.h>
-#include "CodeAlloc.hpp"
-
-inline double CPUtime(){
-#ifdef SYSTIMES
- struct tms buf;
- if (times(&buf)!=-1)
- return ((double)buf.tms_utime+(double)buf.tms_stime)/(long) sysconf(_SC_CLK_TCK);
- else
-#endif
- return ((double) clock())/CLOCKS_PER_SEC;
-}
-
-extern long verbosity; // level off printing
-
-
-extern bool withrgraphique;
-
-
-
-using namespace std;
-#include "ffstack.hpp"
-
-#include "AnyType.hpp"
-#include "String.hpp"
-
-
-class basicForEachType;
-class E_F1_funcT_Type;
-class E_F0; // une instruction exec time
-class C_F0; // une instruction complie time
-class ListOfInst;
-class Polymorphic;
-class OneOperator;
-typedef E_F0 * Expression; //
-class AC_F0;
-class basicAC_F0;
-typedef complex<double> Complex;
-
-typedef pair<aType, E_F0 *> Type_Expr ;// to store the type and the expression 29042005 FH
-
- int FindType(const char * name) ;
- void lgerror (const char* s) ;
- void CompileError(string msg="",aType r=0);
- void ExecError(string msg="");
-
-struct UnId {
- const char * id;
- aType r;
- Expression e;
- deque<UnId> * array; // to store a array
- aType re;
- bool ref; // a ref or non
- UnId() :id(0),r(0),e(0),array(0),re(0),ref(false) {}
- UnId(const char * idd) :id(idd),r(0),e(0),array(0),re(0),ref(false) {}
- UnId(const char * idd,const C_F0 & ee,aType rr,bool reff) ;
- UnId(deque<UnId> * d) : id(0),r(0),e(0),array(d?new deque<UnId>(*d):0),re(0),ref(false) {}
- UnId(const UnId & u) :
- id(u.id),r(u.r),e(u.e),
- array(u.array?new deque<UnId>(*u.array):0),
- re(u.re),ref(u.ref) {}
- // Modif 24032005
- void operator= (const UnId & u) {
- id=u.id;
- r=u.r;
- e=u.e;
- re=u.re;
- ref=u.ref;
- if(array) delete array;
- array=0;
- if(u.array) array= new deque<UnId>(*u.array);
- }
-
- ~UnId(){ if( array) delete array;} // Modif 24032005
-
-};
-
-typedef deque<UnId> ListOfId;
-// xxx is a type so xxx can't be a parameter
-#define ATYPE(xxx) map_type[typeid(xxx).name()]
-/* #define NEW_TYPE(type) map_type[typeid(type).name()] = new ForEachType<type >(0,0)
-//#define NEW_TYPE(type) map_type[typeid(type).name()] = new ForEachType<type >()
-#define NEW_TYPE_I(type,i,d) map_type[typeid(type).name()] = new ForEachType<type>(i,d)
-#define NEW_TYPE_Ptr(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type >()
-#define NEW_TYPE_PtrND(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type >(0)
-#define NEW_TYPE_PtrNIND(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type >(0,0)
-//#define NEW_TYPE_PtrI(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type*>(Initialize<type>)
-*/
-
-
-
-
-extern Polymorphic * TheOperators, * TheRightOperators;
-
-// -------------
-extern C_F0 *pOne,*pZero,*pminusOne;
-
-
-typedef AnyType (* Function1)(Stack, const AnyType &);
-typedef AnyType (* Function2)(Stack, const AnyType &,const AnyType &);
-typedef AnyType (* CFunction2)(Stack, E_F0 *, E_F0 *);
-typedef AnyType (* CFunction4)(Stack, E_F0 *, E_F0 *, E_F0 *, E_F0 *);
-
-
-Expression NewExpression(Function1,Expression);
-Expression NewExpression(Function2,Expression,Expression);
-
-
-inline Type_Expr make_Type_Expr(aType t, E_F0 * e) {return make_pair(t,e);}
-inline Type_Expr make_Type_Expr( E_F0 * e,aType t) {return make_pair(t,e);}
-
-struct Keyless : binary_function<const char *,const char *, bool>
- {
- typedef const char * Key;
- bool operator()(const Key& x, const Key& y) const { return strcmp(x,y)<0;} };
-
-
-// un table Iden
-class TableOfIdentifier: public CodeAlloc {
- public:
- struct Value;
- typedef const char * Key;
- typedef map<Key,Value,Keyless> maptype;
- typedef pair<const Key,Value> pKV;
- typedef maptype::iterator iterator;
- typedef maptype::const_iterator const_iterator;
-
- struct Value :public Type_Expr {
- pKV * next; // link all the variable in reverse order to call delete on each variable
- bool del;
- Value(const Type_Expr & vv,pKV * n,bool dd=true) : Type_Expr(vv),next(n),del(dd) {}
- Value(aType t,E_F0 *f,pKV *n,bool dd=true): Type_Expr(t,f),next(n),del(dd) {}
- };// to store the type and the expression
- pKV * listofvar;
-
-// struct Keyless : binary_function<Key,Key, bool>
-// { bool operator()(const Key& x, const Key& y) const{ return strcmp(x,y)<0;} };
-
-
- maptype m;
- C_F0 Find(Key) const ;
- C_F0 Find(Key,const basicAC_F0 &) const ;
-
- const Type_Expr & New(Key k,const Type_Expr & v,bool del=true);
- void Add(Key k,Key op,OneOperator *p0,OneOperator *p1=0,
- OneOperator *p2=0,OneOperator *p3=0,OneOperator *p4=0,
- OneOperator *p5=0,OneOperator *p6=0) ;
- void clear();
-template<class T>
- C_F0 NewVar(Key k,aType t,size_t & top,const C_F0 &i) ;
-template<class T>
- C_F0 NewVar(Key k,aType t,size_t & top,const basicAC_F0 &args) ;
-template<class T,class U>
- C_F0 NewVar(Key k,aType t,size_t & top,const basicAC_F0 &args,const U & data) ;
-// C_F0 NewVar(Key k,aType t,size_t & top,const basicAC_F0 &args,const C_F0& f) ;
-template<class T>
- C_F0 NewVar(Key k,aType t,size_t & top) ;
- C_F0 NewID(aType t,Key k, C_F0 & c,size_t & top,bool del=true);
- C_F0 NewID(aType t,Key k, C_F0 & c,const ListOfId & l,size_t & top,bool del=true);
-template<class T>
- C_F0 NewFESpace(Key k,aType t,size_t & top,const basicAC_F0 &args);
- friend ostream & operator<<(ostream & f,const TableOfIdentifier & );
- C_F0 destroy();
- TableOfIdentifier() ; //: listofvar(0) {};
- ~TableOfIdentifier(); //
-};
-
-
-// for all the type of the language
-class basicForEachType : public CodeAlloc {
- const type_info * ktype; // the real type_info
- // const type_info *ktypefunc;// the type of code
- public:
- const size_t size;
-
-
- typedef OneOperator * CastFunc;
- typedef map<aType,CastFunc>::const_iterator const_cast_iterator;
-
- typedef const char * Key;
-
- // virtual void print(ostream &f,const void *p) const =0;
-
- friend ostream & operator<<(ostream & f,const basicForEachType & e)
- { f << '<' << e.name() << '>' ;return f;}
- void Show(ostream & f) const ;
- const char * name() const { return this ? ktype->name() :"NULL" ;}
- virtual bool CastingFrom(const basicForEachType * t) const ;
- // modif FH ----- A TESTER //
- virtual bool SametypeRight(const basicForEachType * t) const {return this == t || t == un_ptr_type;}
-// virtual Type_Expr init(const Type_Expr & te) const { return Type_Expr(0,0);}
- virtual int TYPEOFID() const {return 0;}
-// bool SametypeLeft(const basicForEachType * t) const {return t == this;}
- // bool To(const basicForEachType * t) const { throwassert(t && this);return un_ptr_type == this ? t->un_ptr_type == this : t == this;}
- virtual C_F0 CastTo(const C_F0 & e) const ;
- virtual void SetArgs(const ListOfId *lid) const ;// { cout << "SetArgs::\n " ;throwassert(lid==0 || lid->size()==0);}
- aType right() const {return un_ptr_type;};
- Expression RightValueExpr(Expression f) const;
- // Type_Expr NewVar(Key k,aType t,size_t & top,const C_F0 &i);
- virtual C_F0 Initialization(const Type_Expr & e) const ;
- virtual Expression Destroy(const C_F0 &) const ;
- virtual bool ExistDestroy() const {return destroy;}
- virtual Type_Expr SetParam(const C_F0 & c,const ListOfId * l,size_t & top) const;
- // { return make_pair<aType,const E_F0 *>(this,c.left());}
-
- protected:
- basicForEachType(const type_info & k ,const size_t ,
- const E_F1_funcT_Type * p=0,basicForEachType *rr=0,
- Function1 iv=0,Function1 id=0) ;
-/* inline basicForEachType(const type_info & k ,const type_info & kf ,const size_t ,
- const E_F1_funcT_Type * p=0,basicForEachType *rr=0,
- Function1 iv=0,Function1 id=0) ;*/
-
-public:
- const basicForEachType * un_ptr_type; // type of right exp
- private:
- // map<aType,CastFunc> mapofcast;
- OneOperator * casting; // list of operator for casting to this type
-
- const E_F1_funcT_Type * un_ptr; // is ptr -> get value function
-
-
- Function1 InitExp; // to init the ptr value
- Function1 destroy;// the destroy function
- TableOfIdentifier ti; // all polymorphisme of the Identifier
- public:
- // basicForEachType * FunctionType() const;// { return funct_type ? funct_type : (funct_type= new FuncForEachType(this));}
- C_F0 Find(const char * k) const; // {return ti->Find(k);}
- C_F0 Find(const char * k,const basicAC_F0 & args) const; // {return ti->Find(k);}
- void New(Key k,Type_Expr v,bool del=true){ti.New(k,v,del);}
-
- void Add(Key k,Key op,OneOperator *p0,OneOperator *p1=0,
- OneOperator *p2=0,OneOperator *p3=0,OneOperator *p4=0,
- OneOperator *p5=0,OneOperator *p6=0)
- {ti.Add(k,op,p0,p1,p2,p3,p4,p5,p6);}
-
- void AddCast(CastFunc f1,CastFunc f2=0,CastFunc f3=0,CastFunc f4=0,
- CastFunc f5=0,CastFunc f6=0,CastFunc f7=0,CastFunc f8=0);
- ostream & ShowTable(ostream & f) const { f << ti; return f;}
-
- // basicForEachType * funct_type;
- virtual ~basicForEachType();
-
-};
-
-
-template<typename T>
-inline basicForEachType * atype() {
- map<const string,basicForEachType *>::iterator ir=map_type.find(typeid(T).name());
- // basicForEachType * r=map_type[];
- if (ir == map_type.end()) { cerr << "Error: aType '" << typeid(T).name() << "', doesn't exist\n";
- ShowType(cerr);
- throw(ErrorExec("exit",1));}
- return ir->second;}
-
-
-// --------
-//typedef basicForEachType TheType;
-
-// const basicForEachType * ktype; // compilation time
-
-// class for all exp
-// a left exp is a pointer expression
-// -------
-// -- exec times le code is just E_F0*(fonction without args)
-class C_LF2;
-class C_LF1;
-
-// 3 types of function/expression 0,1,2 args
-class E_F0 :public CodeAlloc
- {
- public:
-
- struct kless : binary_function<Expression,Expression, bool>
- { bool operator()(const Expression& x, const Expression& y) const{
- //cout << x << " " << y << x->compare(y) << " ::: ";
- int r1 = x->compare(y);// , r2 = y->compare(x);
- //assert(r1+r2==0);
- return r1<0;} };
- typedef map< E_F0 *,int,kless> MapOfE_F0;
-
- virtual AnyType operator()(Stack) const =0;
- virtual bool Empty() const {return !this; }
- // virtual E_F0 * destroy(Stack ) const {return 0;}
- // virtual const E_F0 * Parameter(Stack ) const {return this;}
- virtual size_t nbitem() const {return 1;}
- virtual bool EvaluableWithOutStack() const {return false;} //
- virtual bool MeshIndependent() const {return true;} //
- virtual E_F0 * right_E_F0() const { return 0;}
- virtual bool ReadOnly() const { return true;} // the expression do not change the memory
- virtual ~E_F0() {}
- virtual int compare (const E_F0 *t) const { int r= (t==this) ? 0 : ( ( this<t) ?-1 : 1);
- //cout << "cmp " << typeid(*this).name() << r << endl;
- return r;} // to give a order in instuction
- virtual int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ; // build optimisation
- virtual AnyType operator()(Stack stack,AnyType *) const { return operator()(stack);} // call optim code
- virtual operator aType () const { assert(0);return 0;} // the type of the expression
- virtual ostream & dump(ostream &f) const { f << ' ' << typeid(*this).name() << ' ' << this << ' ' ;return f; }
- // for OPTIMIZATION
-
- int find(const MapOfE_F0 & m) ;
- int insert(Expression opt,deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ;
-
- };
-
-inline ostream & operator<<(ostream & f,const E_F0 &e) { if(&e) e.dump(f); else f << " --0-- " ;return f;}
-// a
-class E_F0mps : public E_F0 { public:
- virtual bool MeshIndependent() const {return false;} //
-};
-
-class E_F0info : public E_F0 { public:
- // not a real expression just to pass information
- virtual bool EvaluableWithOutStack() const {return true;} //
- virtual bool MeshIndependent() const {return true;} //
- virtual AnyType operator()(Stack ) const {
- return SetAny<const E_F0 *>(this);}
- operator aType () const { return atype<Expression>();}
-
-
-};
-
-class E_F1 : public CodeAlloc{ public: virtual AnyType operator()(Stack,AnyType &) const =0;};
-class E_F2 : public CodeAlloc{ public: virtual AnyType operator()(Stack,AnyType &,AnyType &) const =0;};
-class E_FN : public CodeAlloc{ public: virtual AnyType operator()(Stack,size_t N,...) const =0;};
-
-// class to play with polymorphisme
-// ---------------------------------
-class basicAC_F0;
-class ArrayOfaType : public CodeAlloc{
- // class for the type of parameter
- aType tt[16];
- protected:
-
- int n;
- aType * t; // array of type
- bool ellipse;
- void operator=(const ArrayOfaType &); // no set operator
- public:
- // ArrayOfaType() :n(0),t(0),ellipse(false) {}
- explicit ArrayOfaType(bool ell=false)
- :n(0),t(0),ellipse(ell) {}
-
- explicit ArrayOfaType(const aType & a,bool ell=false)
- :n(1),t(tt),ellipse(ell) {t[0]=a;}
-
- explicit ArrayOfaType(const aType & a,const aType & b,bool ell=false)
- :n(2),t(tt),ellipse(ell) {t[0]=a,t[1]=b;}
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,bool ell=false)
- :n(3),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;}
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,bool ell=false)
- :n(4),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d;
- /* cout << * a << *b << * c << * d << " ---------" << endl; */}
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,bool ell=false)
- :n(5),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; }
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,bool ell=false)
- :n(6),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; }
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
- const aType & f,const aType & g,
- bool ell=false)
- :n(7),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; } // (6 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
- const aType & f,const aType & g,const aType & h,
- bool ell=false)
- :n(8),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; } // (7 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
- const aType & f,const aType & g,const aType & h, const aType & i,
- bool ell=false)
- :n(9),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; } // (8 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d, const aType & e,
- const aType & f,const aType & g,const aType & h, const aType & i, const aType & j,
- bool ell=false)
- :n(10),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; } // (10 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k,bool ell=false)
- :n(11),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; } // (10 args) Added by Fabian Dortu
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l,bool ell=false)
- :n(12),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; }
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m,bool ell=false)
- :n(13),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; }
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m, aType & n,bool ell=false)
- :n(14),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; }
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m, aType & n, aType & o, bool ell=false)
- :n(15),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; }
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, aType & m, aType & n, aType
-& o, const aType & p, bool ell=false)
- :n(16),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; t[15]=p; }
-
- ArrayOfaType(const basicAC_F0 & ) ;
- ArrayOfaType(const ArrayOfaType & ); //
- ArrayOfaType(const ListOfId * l);
- ~ArrayOfaType() { if(t && t != tt) delete [] t;t=0;n=0;}
- bool WithOutCast( const ArrayOfaType & a) const ;
- bool WithCast( const ArrayOfaType & a,int nbcast=100000) const ; // return the number of cast
- // exactly comparaison
- bool operator==( const ArrayOfaType & a) const {
- if (a.n != n || a.ellipse !=ellipse) return false;
- for (int i=0;i<n;i++)
- if (t[i] != a.t[i])
- return false;
- return true;}
-
- friend ostream & operator<<(ostream & f,const ArrayOfaType & a);
-};
-
-
-
-class OneOperator : public ArrayOfaType {
- friend class MakeVectSpaceN;
- friend class basicForEachType;
- const basicForEachType * r; // return type
- OneOperator *next; // to make a list of OneOperator
- public:
- int pref; // to try to solve ambiguity for binary operator
- // 10 for bool, 20 for int , 30 for long , 40, for float, 50 double, 60 for complex, 70 string
- // string+ 1 => string
- // 1+string => string
- OneOperator(aType rr) ;// : r(rr),ArrayOfaType(),next(0),pref(0) {throwassert(r);}
- OneOperator(aType rr,aType a) ;//: r(rr),ArrayOfaType(a,false),next(0),pref(0) {throwassert(rr && a );}
- OneOperator(aType rr,aType a,aType b);// : r(rr),ArrayOfaType(a,b,false),next(0),pref(0) {
- // throwassert(rr && a && b);}
- OneOperator(aType rr,aType a,aType b,aType c) ;
- //: r(rr),ArrayOfaType(a,b,c,false),next(0),pref(0) {throwassert(rr && a && b && c);}
- OneOperator(aType rr,aType a,aType b,aType c,aType d) ;
- //: r(rr),ArrayOfaType(a,b,c,d,false),next(0),pref(0) {throwassert(rr && a && b && c);}
-
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e) ;
- //: r(rr),ArrayOfaType(a,b,c,d,e,false),next(0),pref(0) {throwassert(rr && a && b && c && d);} // Added by Fabian Dortu (5 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f) ;
- //: r(rr),ArrayOfaType(a,b,c,d,e,f,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f);} // Added by Fabian Dortu (6 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g);
- // : r(rr),ArrayOfaType(a,b,c,d,e,f,g,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g);} // Added by Fabian Dortu (7 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h);
- // : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g && h);} // Added by Fabian Dortu (8 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i) ;
- //: r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g && h && i);} // Added by Fabian Dortu (9 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j);
- // : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g && h && i && j);} // Added by Fabian Dortu (10 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o, aType p);
-
-
- OneOperator(aType rr,const ArrayOfaType &ta) ;
- //: r(rr),ArrayOfaType(ta),next(0),pref(0) {throwassert(rr);}
- OneOperator(aType rr,bool ellipse) ;
- //: r(rr),ArrayOfaType(ellipse),next(0),pref(0) {throwassert(rr );}
- OneOperator(aType rr,const ListOfId *l) ;
- //: r(rr),ArrayOfaType(l),next(0),pref(0) {throwassert(rr );}
-
- typedef pair<const OneOperator *,int> pair_find;
- void operator+=(OneOperator &a){throwassert(a.next==0);a.next=next;next=&a;}
- // a way to make none recurve delete good
- virtual ~OneOperator();
- pair_find Find(const ArrayOfaType & at) const ;
- pair_find FindWithOutCast(const ArrayOfaType & at) const ; // for
- OneOperator * FindSameR(const ArrayOfaType & at) ;
-
- void Show(const ArrayOfaType & at,ostream &f=cerr) const;
- void Show(ostream &f=cerr) const;
- operator aType () const { return r;}
- virtual E_F0 * code(const basicAC_F0 &) const =0;
- virtual C_F0 code2(const basicAC_F0 &a) const ; // {return code(code(a),r);}
- const OneOperator * Simple() const { return next||n?0:this;}
- friend ostream & operator<<(ostream & f,const OneOperator & a);
-
-};
-
-
-class Polymorphic: public E_F0mps {
- // a list of type
- // simple, array or function
- private:
- typedef const char * Key;
- typedef OneOperator * Value;
- // struct Keyless : binary_function<Key,Key, bool>
- // { bool operator()(const Key& x, const Key& y) const{ return strcmp(x,y)<0;} };
-
- typedef map<Key,Value,Keyless> maptype; //
- typedef maptype::const_iterator const_iterator; //
- typedef maptype::iterator iterator; //
- // remark the map is mutable because
- // a expression is const E_F0 *
- // So There is a incompatibility between
- // we save an expression in a variable
- // we have to add thing to a polymorphisme expression
- mutable maptype m; // all polymorphisme of the Identifier
- Expression e; // default expression
- public:
- Polymorphic() : m(),e(0) {}
-
-// by default Empty and do nothing
- virtual AnyType operator()(Stack ) const { return Nothing;}
- virtual bool Empty() const {return true;} // by default Empty
- void clear() { m.clear();}
- const OneOperator * Find(const char *op, const ArrayOfaType &at) const;
- const OneOperator * FindWithOutCast(const char *op,const ArrayOfaType &at) const;
- void Show(const char *op,const ArrayOfaType & at,ostream &f=cerr)const ;
- void Add(const char * op,OneOperator * p0 ,OneOperator * p1=0,OneOperator * p2=0,
- OneOperator * p3=0,OneOperator * p4=0,OneOperator * p5=0,
- OneOperator * p6=0,OneOperator * p7=0,OneOperator * p8=0,
- OneOperator * p9=0,OneOperator * pa=0,OneOperator * pb=0,
- OneOperator * pc=0,OneOperator * pd=0,OneOperator * pe=0
- ) const
- {Addp(op,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,pa,pb,pc,pd,pe,0);}
- void Add(const char * op,OneOperator ** pp) const ;
- private:
- void Addp(const char * op,OneOperator * pp,...) const ;
- friend ostream & operator<<(ostream & f,const Polymorphic & a);
-
-
-};
-
-
-
-
-// the type for polymorphisme of id
-
-
-
-// compile time expression
-class basicAC_F0;
- class C_F0 {
- friend class CC_F0;
- protected:
- Expression f; // the expression code
- aType r; // the expression type
-
- public:
- // the constructeur
- C_F0() :f(0),r(0) {}
- C_F0(const C_F0 & c):f(c.f),r(c.r) {}
- C_F0(const C_F0 & a,const C_F0 & b); // concatenation
- C_F0(const Type_Expr & a):f(a.second),r(a.first) {}
- C_F0(const Polymorphic *,const char *,const basicAC_F0 & );
- C_F0(const Polymorphic *,const char *, AC_F0 & );
- // function, array ..
- C_F0(const C_F0 & e,const char *op,const basicAC_F0 & p) ;
- C_F0(const C_F0 & e,const char *op, AC_F0 & p) ;
- C_F0(const C_F0 & e,const char *op,const C_F0 & ee) ;
- C_F0(const C_F0 & e,const char *op,const C_F0 & a,const C_F0 & b) ;
- C_F0(const C_F0 & e,const char *nm) ;
- // without parameter ex f()
- C_F0(const Polymorphic * pop,const char *op);
- // unary operator
- C_F0(const Polymorphic * pop,const char *op,const C_F0 & a);
- // binary operator
- C_F0(const Polymorphic * pop,const char *op,const C_F0 & a,const C_F0 & b);
- // ternary operator
- C_F0(const Polymorphic * pop,const char *op,const C_F0 & a,const C_F0 & b,const C_F0 & c);
-
-
- C_F0( Expression ff,aType rr ): f(ff),r(rr) {
- // if (!rr && ff) cerr << "Type Null" << endl;
- }
- // operator Expression() const {return f;}
- AnyType eval(Stack s) const {return (*f)(s);}
-
- Expression RightValue() const { return r->RightValueExpr(f);}
- Expression LeftValue() const;
-
- aType left() const {return r;}
- aType right() const {return r->right();}
- C_F0 RightExp() const { return C_F0(RightValue(),right());} // FH add 07/2005
- operator E_F0 * () const {return f;}
- bool Empty() const {return !f || f->Empty();}
- bool NotNull() const {return f;}
- int TYPEOFID() const { return r ? r->TYPEOFID(): 0;}
- int nbitem() const { return f ? f->nbitem() : 0;}
- bool EvaluableWithOutStack() const { return f && f->EvaluableWithOutStack();}
- Expression Destroy() { return r->Destroy(*this);}
- operator const Polymorphic * () const {return dynamic_cast<const Polymorphic *>(f);}
- bool operator==(const C_F0 & a) const {return f==a.f && r == a.r;}
- bool operator!=(const C_F0 & a) const {return f!=a.f || r != a.r;}
-// Type_Expr SetParam(const ListOfId * l,size_t & top) const ;
- bool MeshIndependent() const { return f ==0 ? f->MeshIndependent() : false;}
-private:
-friend class Block;
-friend class TableOfIdentifier;
- C_F0( Expression ff ): f(ff),r(0) {}
- };
-
-
-
-// for bison
-class CListOfInst;
-
-
- // a => b
- // f => t||f
- // t => t
- // (a =>b) <=> (!a || b )
-
-// warning ------------------
-class ForTypeVoid: public basicForEachType{public:
- ForTypeVoid():basicForEachType(typeid(void),0,0,0,0,0) {}
-};
-
-template<class T>
-class ForEachType: public basicForEachType{public:
- ForEachType(Function1 iv=0,Function1 id=0):basicForEachType(typeid(T),sizeof(T),0,0,iv,id) {
- if (sizeof(T) > sizeof(AnyTypeWithOutCheck) )
- {
- cout << " Sorry the " <<typeid(T).name() << " is too large ( " << sizeof(T)
- << " > " << sizeof(AnyTypeWithOutCheck) << " ) " << endl;
- throwassert(sizeof(T) <= sizeof(AnyTypeWithOutCheck) );
- }
- }
-};
-template<class T>
-class ForEachType<T*>: public basicForEachType{public:
- ForEachType(Function1 iv=0,Function1 id=0):basicForEachType(typeid(T),sizeof(T),0,0,iv,id) { }
-};
-
-template<class A,class B> AnyType UnRef(Stack,const AnyType &a) ;
-template<class A> AnyType Initialize(Stack,const AnyType &a) ;
-template<class A> AnyType Destroy(Stack,const AnyType &a) ;
-
-// the type of variable is pointer because we need to write in
-template<class T>
-class ForEachTypePtr: public basicForEachType { public:
- ForEachTypePtr();
- ForEachTypePtr(Function1 init,Function1 dl);
- ForEachTypePtr(Function1 dl);
-};
-
-template<class T>
-class ForEachTypePtr<T*>: public basicForEachType { public:
- ForEachTypePtr();
- ForEachTypePtr(Function1 init,Function1 dl);
- ForEachTypePtr(Function1 dl);
-};
-
-
-template<class T,int RTYPE=1>
-class ForEachTypePtrfspace: public ForEachTypePtr<T> { public:
- ForEachTypePtrfspace():ForEachTypePtr<T>() {}
- int TYPEOFID() const {return RTYPE;}
-};
-
-
-class ForTypeAnyType: public basicForEachType{public:
- ForTypeAnyType(): basicForEachType(typeid(AnyType),sizeof(AnyType)) {}
- bool CastingFrom(const basicForEachType * ) const {return true;}
- C_F0 CastTo(const C_F0 & e) const {return e;}
-};
-
-
-// for cast and get value associed to a pointer
-
-
-template<class A,class B>
- AnyType Cast(Stack,const AnyType &b) {
- return SetAny<A>(static_cast<A>(GetAny<B>(b)));}
-
-template<class A,class B,A F(const B &)>
- AnyType FCast(Stack s,const AnyType &b) {
- return SetAny<A>(Add2StackOfPtr2Free(s,F(GetAny<B>(b))));}
-
-template<class A>
- AnyType UnRef(Stack,const AnyType &a) {
- return SetAny<A>(*PGetAny<A>(a));}
-
-template<class A,class B>
- AnyType UnRef(Stack,const AnyType &a) {
- return SetAny<A>(*PGetAny<B>(a));}
-
-
-template<class A>
- AnyType UnRefCopyPtr(Stack s,const AnyType &a) {
- A ** ppa=PGetAny<A*>(a);
- A * pc = new A(**ppa);
- return SetAny<A*>(Add2StackOfPtr2Free(s,pc)) ;}
-
-
-template<class A> AnyType Initialize(Stack,const AnyType &x){
- A * a=PGetAny<A>(x);
- A *b=new A;//
- memcpy(a,b,sizeof(A));// bitcopy
- ::operator delete(b); // delete with no destruction
- return SetAny<A*>(a);
-}
-
-template<class A> AnyType InitializePtr(Stack stack,const AnyType &x){
- A * a=PGetAny<A>(x);
- SHOWVERB( cout << " init ptr " << typeid(A*).name() << (char *) a - (char*) stack<< endl);
- *a=0;
- return x;
-}
-
-template<class A> inline AnyType Delete(Stack,const AnyType &x){
- A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DESTROY " <<typeid(A).name() << " " << a << endl);
- (*a).~A();
- return Nothing;
-}
-
-template<class A> inline AnyType Destroy(Stack,const AnyType &x){
- A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DESTROY " <<typeid(A).name() << " " << a << endl);
- a->destroy();
- return Nothing;
-}
-
-template<class A> inline AnyType DestroyS(Stack,const AnyType &x){
- A a=GetAny<A>(x);
- SHOWVERB(cout << "DESTROY " <<typeid(A).name() << " " << a << endl);
- a.destroy();
- return Nothing;
-}
-
-template<class A> inline AnyType InitS(Stack,const AnyType &x){
- A a=GetAny<A>(x);
- SHOWVERB(cout << "InitS " <<typeid(A).name() << " " << a << endl);
- a.init();
- return Nothing;
-}
-template<class A> inline AnyType InitP(Stack,const AnyType &x){
- A *a=PGetAny<A>(x);
- SHOWVERB(cout << "InitP " <<typeid(A).name() << " " << a << endl);
- a->init();
- return Nothing;
-}
-
-
-template<class A> inline AnyType DestroyPtr(Stack,const AnyType &x) {
- const A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DestroyPtr " << typeid(A).name() << *a << endl);
- (*a)->destroy();
- // delete *a;
-
- return Nothing;
-};
-template<class A> inline AnyType DeletePtr(Stack,const AnyType &x) {
- const A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DeletePtr " << typeid(A).name() << *a << endl);
- // (*a)->destroy();
- delete *a;
-
- return Nothing;
-};
-
-template<> AnyType inline DestroyPtr<string *>(Stack,const AnyType &x) {
- string ** a=PGetAny<string*>(x);
- SHOWVERB( cout << "DestroyPtr " << typeid(string*).name() << *a << endl);
- delete *a;
- return Nothing;
-};
-
-
-
-template<class A> AnyType Initialize(Stack,const AnyType &x,const AnyType &y){
- A * a=PGetAny<A>(x);
- A *b=new A(GetAny<A>(x));//
- memcpy(a,b,sizeof(A));// bitcopy
- ::operator delete(b); // delete with no destruction
- return SetAny<A*>(a);
-}
-
-
-
-class E_F0_CFunc2 :public E_F0mps { public:
- CFunction2 f2;
- E_F0 *a,*b;
- AnyType operator()(Stack s) const {return f2(s,a,b);}
- E_F0_CFunc2( CFunction2 ff,E_F0 *aa,E_F0 *bb) : f2(ff),a(aa),b(bb){}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack() && b->EvaluableWithOutStack();} //
- operator aType () const { return atype<void>();}
-
-};
-
-class E_F0_CFunc4 :public E_F0mps { public:
- CFunction4 f4;
- E_F0 *a,*b,*c,*d;
- AnyType operator()(Stack s) const {return f4(s,a,b,c,d);}
- E_F0_CFunc4( CFunction4 ff,E_F0 *aa,E_F0 *bb,E_F0 *cc,E_F0 *dd)
- : f4(ff),a(aa),b(bb),c(cc),d(dd){}
- operator aType () const { return atype<void>();}
-
-};
-
-
-
-template<class R,class A>
- class E_F1_F :public E_F1 { public:
- typedef R (*func)(A) ;
- func f;
- E_F1_F(func ff) : f(ff) {}
- AnyType operator()(Stack s,AnyType & a) const
- {return SetAny<R>(f(GetAny<A>(a)));}
-};
-
-template<class R,class A0,class A1>
- class E_F2_F :public E_F2 { public:
- typedef R (*func)(const A0 &,const A1&) ;
- func f;
- E_F2_F(func ff) : f(ff) {}
- AnyType operator()(Stack s,AnyType & a0,AnyType & a1) const
- {return SetAny<R>(f(GetAny<A0>(a0),GetAny<A1>(a1)));}
-};
-
-template<class R,class TA0,bool RO=true>
- class E_F_F0 :public E_F0 { public:
- template <class T> struct remove_reference {typedef T type;};
-// template <class T> struct remove_reference<T&> {typedef T type;};
- template <class T> struct remove_reference<const T&> {typedef T type;};
- typedef typename remove_reference<TA0>::type A0;
-
-
- typedef R (*func)( TA0 ) ;
- func f;
- Expression a;
- E_F_F0(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>(f(GetAny<A0>( (*a)(s) )));}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack();} //
- bool MeshIndependent() const {return a->MeshIndependent();} //
- bool ReadOnly() const { return RO ;}
- int compare (const E_F0 *t) const {
- int rr;
- // cout << "cmp " << typeid(*this).name() << " and " << typeid(t).name() << endl;
- const E_F_F0* tt=dynamic_cast<const E_F_F0 *>(t);
- if (tt && f == tt->f) rr = a->compare(tt->a);
- else rr = E_F0::compare(t);
- return rr;
- } // to give a order in instuction
-
- int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ;
- virtual ostream & dump(ostream &ff) const { ff << typeid(*this).name() <<" f= " << ff << " a= "<< *a << ' ' ;return ff; }
-
-};
-
-// modif for xlc++ FH
-template<class R,class TA0,bool RO=true>
-class E_F_F0_Opt: public E_F_F0<R,TA0,RO> { public :
- size_t ia;
- E_F_F0_Opt(const E_F_F0<R,TA0,RO> &t,size_t iaa)
- : E_F_F0<R,TA0,RO>(t) , ia(iaa) {assert(iaa<2000000 && iaa >0);}
- AnyType operator()(Stack s) const
- {
- // A0 x = *static_cast<A0 *>(static_cast<void*>(static_cast<char *>(s)+ia));
- // cout << " opt f (" << x << " ) = " << ": " << ia << endl;
- return SetAny<R>( f( *static_cast<typename E_F_F0<R,TA0>::A0 *>(static_cast<void*>(static_cast<char *>(s)+ia)) ) );}
-
-};
-
-template<class R,class TA0,bool RO>
- int E_F_F0<R,TA0,RO>::Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n)
- {
- int rr = find(m);
- if (rr) return rr;
- return insert(new E_F_F0_Opt<R,TA0,RO>(*this,a->Optimize(l,m,n)),l,m,n);
- }
-// fin modif xlc++
-
-template<class A0>
- class E_VF_F0 :public E_F0 { public:
- typedef void (*func)( A0 ) ;
- func f;
- Expression a;
- E_VF_F0(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {f(GetAny<A0>( (*a)(s) ));return Nothing;}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack();} //
-
- bool MeshIndependent() const { return a->MeshIndependent(); }
-
-};
-
-inline int clexico(int i,int j) { return i==0 ? j : i;}
-inline int clexico(int i,int j,int k) { int ll=clexico(i,j); return ll==0 ? k : ll;}
-
-template<class R,class TA0,class TA1>
- class E_F_F0F0 :public E_F0 { public:
- template <class T> struct remove_reference {typedef T type;};
- template <class T> struct remove_reference<T&> {typedef T type;};
- typedef typename remove_reference<TA0>::type A0;
- typedef typename remove_reference<TA1>::type A1;
- typedef R (*func)( A0 , A1 ) ;
-
- func f;
- Expression a0,a1;
- E_F_F0F0(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)) ) );}
- bool EvaluableWithOutStack() const
- {return a0->EvaluableWithOutStack() && a1->EvaluableWithOutStack();} //
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent();} //
- int compare (const E_F0 *t) const {
- int rr;
- // cout << "cmp " << typeid(*this).name() << " and " << typeid(t).name() << endl;
- const E_F_F0F0* tt=dynamic_cast<const E_F_F0F0 *>(t);
- if (tt && f == tt->f) rr= clexico(a0->compare(tt->a0),a1->compare(tt->a1));
- else rr = E_F0::compare(t);
- return rr;
- } // to give a order in instuction
-
- int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ;
-
-};
-
-// modif for xlc++
-template<class R,class TA0,class TA1>
-class E_F_F0F0_Opt: public E_F_F0F0<R,TA0,TA1> { public :
- size_t ia,ib;
- E_F_F0F0_Opt(const E_F_F0F0<R,TA0,TA1> &t,size_t iaa,size_t ibb)
- : E_F_F0F0<R,TA0,TA1>(t) ,
- ia(iaa),ib(ibb) {}
- AnyType operator()(Stack s) const
- {
- //A0 aa =*static_cast<A0 *>(static_cast<void*>(static_cast<char *>(s)+ia));
- //A1 bb=*static_cast<A1 *>(static_cast<void*>(static_cast<char *>(s)+ib)) ;
- //cout << ia << " " << ib << "f( " << aa << "," << bb << " ) = "<< f(aa,bb) << endl;
- return SetAny<R>( f( *static_cast<typename E_F_F0F0<R,TA0,TA1>::A0 *>(static_cast<void*>(static_cast<char *>(s)+ia)) ,
- *static_cast<typename E_F_F0F0<R,TA0,TA1>::A1 *>(static_cast<void*>(static_cast<char *>(s)+ib)) ) );}
-
-};
-
-
-template<class R,class TA0,class TA1>
- int E_F_F0F0<R,TA0,TA1>::Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n)
- {
-
- int rr = find(m);
- if (rr) return rr;
-
- return insert(new E_F_F0F0_Opt<R,TA0,TA1>(*this,a0->Optimize(l,m,n),a1->Optimize(l,m,n)),l,m,n);
- }
-// add modif for xlc++
-
-
-
-template<class R,class A0>
- class E_F_F0_ :public E_F0 { public:
- typedef R (*func)(const A0& ) ;
- func f;
- Expression a;
- E_F_F0_(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>(f(GetAny<A0>( (*a)(s) )));}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack() ;} //
- bool MeshIndependent() const
- {return a->MeshIndependent();} //
-
-};
-
-template<class R,class A0>
- class E_F_F0s_ :public E_F0mps { public:
- typedef R (*func)(Stack stack,const A0& ) ;
- func f;
- Expression a;
- E_F_F0s_(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>(f(s,GetAny<A0>( (*a)(s) )));}
- bool MeshIndependent() const
- {return true;} //
-
- operator aType () const { return atype<R>();}
-
-};
-
-template<class R,class A0,class A1,class E=E_F0>
- class E_F_F0F0_ :public E { public:
- typedef R (*func)(const A0 &,const A1 & ) ;
- func f;
- Expression a0,a1;
- E_F_F0F0_(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)) ) );}
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent();} //
-
-};
-
-template<class R,class A0,class A1,class A2,class E=E_F0>
- class E_F_F0F0F0_ :public E { public:
- typedef R (*func)(const A0 &,const A1 & , const A2 &) ;
- func f;
- Expression a0,a1,a2;
- E_F_F0F0F0_(func ff,Expression aa0,Expression aa1,Expression aa2)
- : f(ff),a0(aa0),a1(aa1),a2(aa2) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)),GetAny<A2>((*a2)(s)) ) );}
- virtual size_t nbitem() const {return a2->nbitem(); }
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent()&& a2->MeshIndependent();} //
-
-};
-
-template<class R,class A0,class A1,class A2,class E=E_F0>
- class E_F_stackF0F0F0_ :public E_F0mps { public:
- typedef R (*func)(Stack, const A0 &,const A1 & , const A2 &) ;
- func f;
- Expression a0,a1,a2;
- E_F_stackF0F0F0_(func ff,Expression aa0,Expression aa1,Expression aa2)
- : f(ff),a0(aa0),a1(aa1),a2(aa2) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f(s, GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)),GetAny<A2>((*a2)(s)) ) );}
- virtual size_t nbitem() const {return a2->nbitem(); }
- bool MeshIndependent() const { return true;}
-};
-
-template<class R,class A0,class A1>
- class E_F_F0F0_NC :public E_F0 { public:
- typedef R (*func)( A0 &,const A1 & ) ;
- func f;
- Expression a0,a1;
- E_F_F0F0_NC(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)) ) );}
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent() ; } //
-
-};
-
-
-
-
- class E_F_StackF0F0 :public E_F0mps { public:
- typedef AnyType (*func)(Stack,Expression ,Expression ) ;
- func f;
- Expression a0,a1;
- E_F_StackF0F0(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) { }
- AnyType operator()(Stack s) const
- {return (*f)(s, a0 , a1) ;}
-
-};
-
-
-/*
- class E_F_F0F0_<AnyType,AnyType,AnyType> :public E_F0 { public:
- typedef AnyType (*func)(const AnyType &,const AnyType & ) ;
- func f;
- Expression a0,a1;
- E_F_F0F0_(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return f( (*a0)(s) , (*a1)(s) );}
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent() ; } //
-
-};
-*/
-
-class E_F2_func :public E_F2 { public:
- Function2 f;
- AnyType operator()(Stack s,AnyType & a,AnyType & b) const {return f(s,a,b);}
- E_F2_func( Function2 ff) : f(ff) {}
-};
-
-class E_F0_Func1 :public E_F0 { public:
- Function1 f;
- E_F0 *a;
- AnyType operator()(Stack s) const {return f(s,(*a)(s));}
- E_F0_Func1( Function1 f1,E_F0 *aa) : f(f1),a(aa){}
- bool EvaluableWithOutStack() const {return a->EvaluableWithOutStack();} //
- bool MeshIndependent() const {return a->MeshIndependent();} //
- int compare (const E_F0 *t) const {
- int rr;
- const E_F0_Func1* tt=dynamic_cast<const E_F0_Func1 *>(t);
- if (tt && f == tt->f) rr = a->compare(tt->a);
- else rr = E_F0::compare(t);
- if(tt && 0)
- {
- cout << "\n\t\t\t -------- " << (void *) f << " " << (void *) tt->f << " rr=" << a->compare(tt->a) << endl;
- cout << "\t\t\tcmp E_F0_Func1 " << rr <<" << " << *this << " cmp " << *t << " " << tt << ">>\n";
- }
- return rr;
- } // to give a order in instuction
- // int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) const; // build optimisation
-
- virtual ostream & dump(ostream &ff) const { ff << "E_F0_Func1 f= " << f << " a= "<< *a << ' ' ;return ff; }
-
-};
-class E_F0_Func2 :public E_F0 { public:
- Function2 f;
- E_F0 *a,*b;
- AnyType operator()(Stack s) const {return f(s,(*a)(s),(*b)(s));}
- E_F0_Func2( Function2 f1,E_F0 *aa,E_F0 *bb) : f(f1),a(aa),b(bb){}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack() &&b->EvaluableWithOutStack();} //
- bool MeshIndependent() const {return a->MeshIndependent() && b->MeshIndependent();} //
-
-};
-
-
-
-// the variable offset / stack (local variable)
-template<class R> class Value1:public E_F0
- {
- size_t offset;
- public:
- AnyType operator()(Stack s) const { return SetAny<R*>(static_cast<R *>(static_cast<void *>( static_cast<char *>(s)+offset)));}
- Value1(size_t o):offset(o) {}
-};
-
-// the variable globale
-template<class R> class GValue:public E_F0
- {
- mutable R v;
- public:
- AnyType operator()(Stack ) const { return SetAny<R*>(static_cast<R *>(static_cast<void *>(&v)));}
- GValue(R o):v(o) {}
- bool EvaluableWithOutStack() const {return true;} //
-
-};
-
-// a constante value
-template<class R> int ccompare(const R & a,const R& b){ return a==b ? 0 :( a<b ? -1 : +1);}
-template<class R> int ccompare(const complex<R> & a,const complex<R>& b){
- int c=ccompare(a.real(),b.real());
- return c==0 ? ccompare(a.imag(),b.imag()): c ;}
-
-template<class R> class EConstant:public E_F0
- {
- const R v;
- public:
- AnyType operator()(Stack ) const { /*cout << " ()" << v << endl*/;return SetAny<R>(v);}
- EConstant(const R & o):v(o) { /*cout << "New constant " << o << endl;*/}
- bool EvaluableWithOutStack() const {return true;} //
- operator aType () const { return atype<R>();}
- int compare (const E_F0 *t) const {
- int rr;
- const EConstant * tt=dynamic_cast<const EConstant *>(t);
- if (tt) rr = ccompare(v,tt->v);
- else rr = E_F0::compare(t);
- return rr;
- }
- ostream & dump(ostream &f) const { f << " ((" <<typeid(R).name() << ") " << v << ") " ;return f;}
-};
-
-
-
-
-
-// the variable offset / stack (local variable)
-
- class LocalVariable:public E_F0
- {
- size_t offset;
- aType t; // type of the variable just for check
- public:
- AnyType operator()(Stack s) const {
- SHOWVERB( cout << "\n\tget var " << offset << " " << t->name() << endl);
-// return PtrtoAny(static_cast<void *>(static_cast<char *>(s)+offset),t);}
- return PtrtoAny(Stack_offset<void>(s,offset),t);}
-
- LocalVariable(size_t o,aType tt):offset(o),t(tt) {throwassert(tt);
- SHOWVERB(cout << "\n--------new var " << offset << " " << t->name() << endl);
- }
-};
-
-
-class LocalVariableFES : public LocalVariable { public:
- size_t data;
- LocalVariableFES(size_t o,aType tt,const size_t & d)
- : LocalVariable(o,tt),data(d) {}
- size_t nbitem() const { return data;}
-};
-
-template <class U>
-class LocalVariablePlus : public LocalVariable { public:
- U data;
- LocalVariablePlus(size_t o,aType tt,const U & d)
- : LocalVariable(o,tt),data(d) {}
-};
-
-// global variable bof bof
-template<class T> class PValue:public E_F0
- {
- T * p;
- public:
- AnyType operator()(Stack ) const { return p;}
- PValue(T * pp):p(pp) {}
-};
-template<class R> class PPValue:public E_F0
- {
- R ** p;
- public:
- AnyType operator()(Stack ) const { return SetAny<R*>(*p);}
- PPValue(R ** pp):p(pp) {}
-};
-
-
-template<class R>
-Type_Expr CPValue(R & v)
- {
- throwassert(map_type[typeid(R*).name()]);
- return make_pair(map_type[typeid(R*).name()],new PValue<R>(&v));
- }
-template<class R>
-Type_Expr CPPValue(R *& v)
- {
- throwassert(map_type[typeid(R*).name()]);
- return make_pair(map_type[typeid(R*).name()],new PPValue<R>(&v));
- }
-
-template<class R >
-Type_Expr CConstant(const R & v)
- {
- throwassert(map_type[typeid(R).name()]);
- return make_pair(map_type[typeid(R).name()],new EConstant<R>(v));
- }
-
-
-class CC_F0 {
- Expression f;
- aType r;
-public:
- void operator=(const C_F0& c) { f=c.f;r=c.r;;}
- void operator=(const AC_F0& a) ; //{ f=new E_Array(a); f= atype<E_Array>();};
- void operator=(long ) {f=0;r=0;}
- void operator=(const CListOfInst& c);//{ C_FO cc=c;f=cc.f;r=cc.r}
- operator C_F0 () const {return C_F0(f,r);}
- bool Empty() const {return !f || f->Empty();}
- aType left() const {return r;}
- // operator const C_F0 &() const {return *this;}
-};
-
-
-class ListOfInst : public E_F0mps {
- int n;
- Expression * list;
- int * linenumber;
- const int nx;
- public:
- ListOfInst():n(0),list(0),linenumber(0),nx(10){}
- ListOfInst(int nn):n(0),list(0),linenumber(0),nx(nn?nn:10){}
- void Add(const C_F0 & ins);
- AnyType operator()(Stack s) const;
- operator aType () const { return n ? (aType) * (list[n-1]) : atype<void>();}
-
- Expression &operator[](int i){return list[i];}
- bool empty() const {return n==0;}
- int size() const {return n;}
- Expression * ptr() const {return list;}
- int * nlines() const {return linenumber;}
- // void destroy() { if (list) delete [] list; list=0;}
- ~ListOfInst(){ cout << " ----- ~ListOfInst " << endl;
- if(list) delete [] list;list=0;if(linenumber) delete[] linenumber; linenumber=0;}
-};
-
-class CListOfInst { private:
- ListOfInst * f;
- const basicForEachType *r;
- public:
- void operator=(const CC_F0 &a){
- f=new ListOfInst();
- if( !a.Empty() ) {
- f->Add(a);
- r=a.left(); }}
- CListOfInst & operator+=(const CC_F0 & a);//{ if( !a.Empty()){ f->Add(a);r=a.left();};return *this;}
- operator C_F0 () const { return C_F0(f,r);}
- void eval(Stack s) {(*f)(s);}
- int size() const {return f->size();}
- Expression * ptr() const {return f->ptr();}
- int * nlines() const { return f->nlines();}
-};
-
-
-AnyType FWhile(Stack ,E_F0 * test,E_F0 * ins);
-AnyType FFor(Stack s ,E_F0 * i0,E_F0 * i1,E_F0 * i2,E_F0 * ins);
-AnyType FIf(Stack s ,E_F0 * test,E_F0 * i1,E_F0 * i2,E_F0 * notuse);
-AnyType TTry(Stack s ,E_F0 * i0,E_F0 * i1,E_F0 * i2,E_F0 * notuse);
-
-
-
-extern TableOfIdentifier Global;
-void ShowType(ostream & );
-
-template<class T>
-inline C_F0 to(const C_F0 & a) { return map_type[typeid(T).name()]->CastTo(a);}
-
-
-/*
-inline C_F0 toBool(const C_F0 & a) {return ATYPE(bool)->CastTo(a);}
-inline C_F0 toInt(const C_F0 & a) {return ATYPE(int)->CastTo(a);}
-inline C_F0 toLong(const C_F0 & a) {return ATYPE(long)->CastTo(a);}
-inline C_F0 toDouble(const C_F0 & a) {return ATYPE(double)->CastTo(a);}
-inline C_F0 toComplex(const C_F0 & a) {return ATYPE(Complex)->CastTo(a);}
-*/
-inline C_F0 While(C_F0 test,C_F0 ins) {return C_F0(new E_F0_CFunc2(FWhile,to<bool>(test),ins),0);}
-inline C_F0 For(C_F0 i0,C_F0 i1,C_F0 i2,C_F0 ins) {return C_F0(new E_F0_CFunc4(FFor,i0,to<bool>(i1),i2,ins),0);}
-inline C_F0 Try(C_F0 i0,C_F0 i1,C_F0 i2) {return C_F0(new E_F0_CFunc4(TTry,i0,i1,i2,0),0);}
-inline C_F0 FIf(C_F0 i0,C_F0 i1,C_F0 i2) {return C_F0(new E_F0_CFunc4(FIf,to<bool>(i0),i1,i2,0),0);}
-inline C_F0 FIf(C_F0 i0,C_F0 i1) {return C_F0(new E_F0_CFunc4(FIf,to<bool>(i0),i1,0,0),0);}
-//inline C_F0 C_F0::PtrValue() const{
-// if (!(r && r->un_ptr)) { cerr << "PtrValue: Not a Left value " << *r << endl;CompileError();}
-// return C_F0(new E_F0_Func1(r->un_ptr->f,f),r->un_ptr->r);}
-
-
-
-class basicAC_F0 {
-// version de base d'un tableau d'un parametres
-// pour les operateurs unaire, binaire, ,
-// pas d'allocation
- friend class E_Array; // for mapping fonction
- protected:
- typedef const C_F0 const_C_F0;
- int nb;
- C_F0 *a;
- public:
- typedef map<const char *,C_F0,Keyless> maptype ;
- typedef maptype::iterator iterator;
- typedef maptype::const_iterator const_iterator;
- maptype * named_parameter;
- basicAC_F0 & operator=(int i) {throwassert(i==0);named_parameter=0,nb=0;return *this;} // pas de parametres
- basicAC_F0 & operator=(C_F0 & c) {named_parameter=0;nb=1;a=&c;return *this;}
- basicAC_F0 & operator=(pair<int,C_F0*> p) {named_parameter=0;nb=p.first;a=p.second;return *this;}
- const C_F0 & operator [] (int i) const {throwassert(a && i<nb);return a[i];}
- int size() const {return nb;}
- C_F0 * ptr() const {return a;}
- C_F0 find(const char * k) const {
- if (named_parameter) { const_iterator i=named_parameter->find(k) ;
- if (i == named_parameter->end() ) return C_F0();
- else return i->second;}
- else return C_F0();}
-
- struct name_and_type{
- const char * name;
- const type_info * type;
- } ;
-
- void SetNameParam(int n=0,name_and_type *l=0 , Expression * e=0) const ;
-};
-
-
-class AC_F0: public basicAC_F0 { // a Array of C_F0
-// tableau d'un parametres max 1024 parametres
-// avec allocation
- const static int MaxSize;
- // no constructor in this class (this class is in a union )
- public:
- AC_F0 & operator=(pair<const char *,const C_F0> p) {
- named_parameter=0; a=new C_F0[MaxSize]; nb=0;Add(p.first,p.second);return *this;}
- AC_F0 & operator+=(pair<const char *,const C_F0> p) {Add(p.first,p.second);return *this;}
-
- AC_F0 & operator=(long k) {throwassert(k==0);named_parameter=0;a=new C_F0[MaxSize]; nb=0;return *this;}
- AC_F0 & operator=(const C_F0& c) {named_parameter=0; a=new C_F0[MaxSize]; nb=0;a[nb++]=c;return *this;}
- AC_F0 & operator+=(const C_F0& c) {
- if ( ! (a&& nb<MaxSize))
- CompileError("Sorry number of parameters > 1024");
- a[nb++]=c;return *this;}
- AC_F0 & Add(const char * nm,const C_F0 &c) {
- if (!named_parameter) named_parameter=new maptype();
- iterator i=named_parameter->find(nm);
- if(i==named_parameter->end()) named_parameter->insert(make_pair(nm,c));
- else {cerr << " the named in the list already exists "<< nm <<endl; CompileError();}
- return *this;}
- int size() const {return nb;}
- const C_F0 & operator [] (int i) const {throwassert(a && i<nb);return a[i];}
- void destroy() {
-
- nb=0;
- if(named_parameter)
- delete named_parameter;
- if (a)
- delete [] a;
- a=0;named_parameter=0;}
-
-};
-
-class basicAC_F0_wa : public basicAC_F0 { public:
- basicAC_F0_wa(const C_F0 & e) {
- named_parameter=0;
- nb=1;
- a= new C_F0[nb];
- a[0]=e;
- }
- basicAC_F0_wa(const C_F0 & e,const C_F0 & ee) {
- named_parameter=0;
- nb=2;
- a= new C_F0[nb];
- a[0]=e;
- a[1]=ee;
- }
-
-
- basicAC_F0_wa(C_F0 e,const basicAC_F0 & b) {
- named_parameter=0;
- if (b.named_parameter) named_parameter = new maptype(*b.named_parameter);
- nb=1+b.size();
- a= new C_F0[nb];
- a[0]=e;
- for (int i=1;i<nb;i++) a[i]=b[i-1];}
- ~basicAC_F0_wa(){delete [] a;}
-
- basicAC_F0_wa(const basicAC_F0 & b) {
- named_parameter=0;
- if (b.named_parameter) named_parameter = new maptype(*b.named_parameter);
- nb=b.size();
- a= new C_F0[nb];
- for (int i=0;i<nb;i++) a[i]=b[i];}
-
- private:
- void operator=(const basicAC_F0 & b);
-};
-
-
-
-class E_Array :public E_F0 { public:
- basicAC_F0_wa *v;// the value
- E_Array(const basicAC_F0 & aa) : v(new basicAC_F0_wa(aa)) {throwassert(v);}
- AnyType operator()(Stack) const {
- cerr << " No evaluation of an E_array" << endl;
- throwassert(0);
- return Nothing;}
- const C_F0 & operator [] (int i) const {throwassert(v );return (*v)[i];}
- int size() const {return v->size();}
- size_t nbitem() const {return v->size();}
- void map(C_F0 (*mapping)(const C_F0 & )) const
- { for (int i=0;i<v->size();i++)
- v->a[i]=(*mapping)(v->a[i]);}
- virtual bool MeshIndependent() const {
- for (int i=0;i<v->size();i++)
- if (...
[truncated message content] |
|
From: <fab...@us...> - 2007-03-03 11:55:55
|
Revision: 115
http://fsem.svn.sourceforge.net/fsem/?rev=115&view=rev
Author: fabiandortu
Date: 2007-03-03 03:55:55 -0800 (Sat, 03 Mar 2007)
Log Message:
-----------
Updated symlinks...
Added Paths:
-----------
fsem/mesh/modules/Misc/AFunction_ext.hpp
fsem/mesh/modules/Misc/load.link
fsem/models/modules/Semi/load.link
fsem/models/modules/Temp/load.link
Added: fsem/mesh/modules/Misc/AFunction_ext.hpp
===================================================================
--- fsem/mesh/modules/Misc/AFunction_ext.hpp (rev 0)
+++ fsem/mesh/modules/Misc/AFunction_ext.hpp 2007-03-03 11:55:55 UTC (rev 115)
@@ -0,0 +1 @@
+link ../../../include-fsem/AFunction_ext.hpp
\ No newline at end of file
Property changes on: fsem/mesh/modules/Misc/AFunction_ext.hpp
___________________________________________________________________
Name: svn:special
+ *
Added: fsem/mesh/modules/Misc/load.link
===================================================================
--- fsem/mesh/modules/Misc/load.link (rev 0)
+++ fsem/mesh/modules/Misc/load.link 2007-03-03 11:55:55 UTC (rev 115)
@@ -0,0 +1 @@
+link ../../../include-freefem/load.link
\ No newline at end of file
Property changes on: fsem/mesh/modules/Misc/load.link
___________________________________________________________________
Name: svn:special
+ *
Added: fsem/models/modules/Semi/load.link
===================================================================
--- fsem/models/modules/Semi/load.link (rev 0)
+++ fsem/models/modules/Semi/load.link 2007-03-03 11:55:55 UTC (rev 115)
@@ -0,0 +1 @@
+link ../../../include-freefem/load.link
\ No newline at end of file
Property changes on: fsem/models/modules/Semi/load.link
___________________________________________________________________
Name: svn:special
+ *
Added: fsem/models/modules/Temp/load.link
===================================================================
--- fsem/models/modules/Temp/load.link (rev 0)
+++ fsem/models/modules/Temp/load.link 2007-03-03 11:55:55 UTC (rev 115)
@@ -0,0 +1 @@
+link ../../../include-freefem/load.link
\ No newline at end of file
Property changes on: fsem/models/modules/Temp/load.link
___________________________________________________________________
Name: svn:special
+ *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fab...@us...> - 2007-03-03 11:54:17
|
Revision: 114
http://fsem.svn.sourceforge.net/fsem/?rev=114&view=rev
Author: fabiandortu
Date: 2007-03-03 03:54:14 -0800 (Sat, 03 Mar 2007)
Log Message:
-----------
I changed the structure of the Freefem++ headers
It should now be easier to install Freefem++/FSEM
See the README file in root directory
Another commit will follow to set up symlink (cannot
change a file into a symlink in 1 commit with svn)
Modified Paths:
--------------
fsem/Makefile
fsem/README
fsem/include-freefem/README
fsem/mesh/modules/Misc/include
fsem/mesh/modules/fsem_Mod_MiscCppModules_Load.edp
fsem/models/modules/Semi/AFunction_ext.hpp
fsem/models/modules/Semi/include
fsem/models/modules/Temp/AFunction_ext.hpp
fsem/models/modules/Temp/include
fsem/models/modules/fsem_Mod_SemiCppModules_Load
fsem/patch/freefem++-2.8-2/README
Added Paths:
-----------
fsem/include-freefem/include/
fsem/include-freefem/include/AFunction.hpp
fsem/include-freefem/include/AFunction.hpp.README
fsem/include-freefem/include/AddNewFE.h
fsem/include-freefem/include/AnyType.hpp
fsem/include-freefem/include/BamgFreeFem.hpp
fsem/include-freefem/include/CGNL.hpp
fsem/include-freefem/include/CodeAlloc.hpp
fsem/include-freefem/include/DOperator.hpp
fsem/include-freefem/include/FESpace.hpp
fsem/include-freefem/include/FQuadTree.hpp
fsem/include-freefem/include/InitFunct.hpp
fsem/include-freefem/include/MatriceCreuse.hpp
fsem/include-freefem/include/MatriceCreuse_tpl.hpp
fsem/include-freefem/include/MeshPoint.hpp
fsem/include-freefem/include/Operator.hpp
fsem/include-freefem/include/QuadratureFormular.hpp
fsem/include-freefem/include/README
fsem/include-freefem/include/RNM.hpp
fsem/include-freefem/include/RNM_op.hpp
fsem/include-freefem/include/RNM_opc.hpp
fsem/include-freefem/include/RNM_tpl.hpp
fsem/include-freefem/include/RefCounter.hpp
fsem/include-freefem/include/Serialize.hpp
fsem/include-freefem/include/String.hpp
fsem/include-freefem/include/config-wrapper.h
fsem/include-freefem/include/config.h
fsem/include-freefem/include/environment.hpp
fsem/include-freefem/include/error.hpp
fsem/include-freefem/include/fem.hpp
fsem/include-freefem/include/fem3.hpp
fsem/include-freefem/include/ffstack.hpp
fsem/include-freefem/include/gmres.hpp
fsem/include-freefem/include/lex.hpp
fsem/include-freefem/include/lgfem.hpp
fsem/include-freefem/include/lgsolver.hpp
fsem/include-freefem/include/problem.hpp
fsem/include-freefem/include/rgraph.hpp
fsem/include-freefem/include/showverb.hpp
fsem/include-freefem/include/strversionnumber.hpp
fsem/include-freefem/include/throwassert.hpp
fsem/include-freefem/include/versionnumber.hpp
fsem/include-freefem/load.link
fsem/include-fsem/
fsem/include-fsem/AFunction_ext.hpp
fsem/patch/freefem++-2.8-2/patchfreefem
Removed Paths:
-------------
fsem/README.freefem
fsem/include-freefem/AFunction.hpp
fsem/include-freefem/AFunction.hpp.README
fsem/include-freefem/AddNewFE.h
fsem/include-freefem/AnyType.hpp
fsem/include-freefem/BamgFreeFem.hpp
fsem/include-freefem/CGNL.hpp
fsem/include-freefem/CodeAlloc.hpp
fsem/include-freefem/DOperator.hpp
fsem/include-freefem/FESpace.hpp
fsem/include-freefem/FQuadTree.hpp
fsem/include-freefem/InitFunct.hpp
fsem/include-freefem/MatriceCreuse.hpp
fsem/include-freefem/MatriceCreuse_tpl.hpp
fsem/include-freefem/MeshPoint.hpp
fsem/include-freefem/Operator.hpp
fsem/include-freefem/QuadratureFormular.hpp
fsem/include-freefem/RNM.hpp
fsem/include-freefem/RNM_op.hpp
fsem/include-freefem/RNM_opc.hpp
fsem/include-freefem/RNM_tpl.hpp
fsem/include-freefem/RefCounter.hpp
fsem/include-freefem/Serialize.hpp
fsem/include-freefem/String.hpp
fsem/include-freefem/config-wrapper.h
fsem/include-freefem/config.h
fsem/include-freefem/error.hpp
fsem/include-freefem/fem.hpp
fsem/include-freefem/fem3.hpp
fsem/include-freefem/ffstack.hpp
fsem/include-freefem/gmres.hpp
fsem/include-freefem/lex.hpp
fsem/include-freefem/lgfem.hpp
fsem/include-freefem/lgsolver.hpp
fsem/include-freefem/problem.hpp
fsem/include-freefem/rgraph.hpp
fsem/include-freefem/showverb.hpp
fsem/include-freefem/strversionnumber.hpp
fsem/include-freefem/throwassert.hpp
fsem/include-freefem/versionnumber.hpp
fsem/mesh/modules/Misc/AFunction_ext.hpp
fsem/mesh/modules/Misc/load.link
fsem/models/modules/AFunction_ext.hpp
fsem/models/modules/Semi/load.link
fsem/models/modules/Temp/load.link
Modified: fsem/Makefile
===================================================================
--- fsem/Makefile 2007-03-02 15:57:43 UTC (rev 113)
+++ fsem/Makefile 2007-03-03 11:54:14 UTC (rev 114)
@@ -12,3 +12,4 @@
clean:
cd models/modules/Semi; $(MAKE) clean;
cd models/modules/Temp; $(MAKE) clean;
+ cd mesh/modules/Misc; $(MAKE) clean;
Modified: fsem/README
===================================================================
--- fsem/README 2007-03-02 15:57:43 UTC (rev 113)
+++ fsem/README 2007-03-03 11:54:14 UTC (rev 114)
@@ -7,17 +7,55 @@
To install FSEM:
----------------
+0) In the sequel, we suppose that
+ * Freefem++ sources are available in $ffpp
+ * FSEM sources (the directory where you found this file) are available in $fsem
+
+ $ export ffpp=/home/fabian/tmp/freefem++-2.13
+ $ export fsem=/home/fabian/tmp/fsem/fsem
+
1) A patched version of FreeFEM++ has to be recompiled.
-See patch directory for details.
+ Note that the patch will most probably work on more
+ recent version of freefem++. Latest test was done on version 2.13.
-2) Run 'make' in FSEM's root directory.
-If you relocate FSEM, you have to run make again.
+ $ cd $fsem/patch/freefem++-2.8-2
+ $ ./patchfreefem $ffpp
+2) Compile Freefem++. You can read the doc of Freefem++,
+ but the following command should work:
+ $ cd $ffpp
+ $ ./configure --prefix=/usr/local --enable-download --enable-optim
+ $ make
+
+ become root here
+ $ make install
+ become normal user again
+
+3) Some files have to be synchronized between FSEM and Freefem++:
+
+ $ cp $ffpp/examples++-load/load.link $fsem/include-freefem
+ $ cd $ffpp/examples++-load/
+ $ tar xfz include.tar.gz
+ $ cp $ffpp/examples++-load/include/* $fsem/include-freefem/include
+ $ cp $ffpp/src/fflib/AFunction.hpp $fsem/include-freefem/include
+
+4) Run 'make' in FSEM's root directory.
+ If you relocate FSEM, you have to run make again.
+
+ $ cd $fsem
+ $ make clean
+ $ make
+
+5) check it out:
+
+ $ FreeFem++ fsem_main_Include.edp
+
+
To load FSEM:
-------------
-Just inlcude 'fsem_main_Include.edp' in the top of a Freefem input
+Just inlcude 'fsem_main_Include.edp' in the top of a Freefem++ input
file
For working examples, go in examples-tutorial/ directory.
Deleted: fsem/README.freefem
===================================================================
--- fsem/README.freefem 2007-03-02 15:57:43 UTC (rev 113)
+++ fsem/README.freefem 2007-03-03 11:54:14 UTC (rev 114)
@@ -1 +0,0 @@
-Based on patched (modules with more than 10 args) Freefem++ 2.7-2
Deleted: fsem/include-freefem/AFunction.hpp
===================================================================
--- fsem/include-freefem/AFunction.hpp 2007-03-02 15:57:43 UTC (rev 113)
+++ fsem/include-freefem/AFunction.hpp 2007-03-03 11:54:14 UTC (rev 114)
@@ -1,2837 +0,0 @@
-//file afonction.h
-#ifndef __AFONCTION__
-#define __AFONCTION__
-#include "showverb.hpp"
-
-
-#include <typeinfo>
-#include <cstddef>
-#include <iostream>
-#include <fstream>
-#include <cstring>
-#include "error.hpp"
-#include <map>
-#include <deque>
-#include <list>
-#include <vector>
-#include <queue>
-#include <complex>
-#include <string>
-#include <cstdlib>
-#include <algorithm>
-extern bool showCPU;
-#include <time.h>
-#include "CodeAlloc.hpp"
-
-inline double CPUtime(){
-#ifdef SYSTIMES
- struct tms buf;
- if (times(&buf)!=-1)
- return ((double)buf.tms_utime+(double)buf.tms_stime)/(long) sysconf(_SC_CLK_TCK);
- else
-#endif
- return ((double) clock())/CLOCKS_PER_SEC;
-}
-
-extern long verbosity; // level off printing
-
-
-extern bool withrgraphique;
-
-
-
-using namespace std;
-#include "ffstack.hpp"
-
-#include "AnyType.hpp"
-#include "String.hpp"
-
-
-class basicForEachType;
-class E_F1_funcT_Type;
-class E_F0; // une instruction exec time
-class C_F0; // une instruction complie time
-class ListOfInst;
-class Polymorphic;
-class OneOperator;
-typedef E_F0 * Expression; //
-class AC_F0;
-class basicAC_F0;
-typedef complex<double> Complex;
-
-typedef pair<aType, E_F0 *> Type_Expr ;// to store the type and the expression 29042005 FH
-
- int FindType(const char * name) ;
- void lgerror (const char* s) ;
- void CompileError(string msg="",aType r=0);
- void ExecError(string msg="");
-
-struct UnId {
- const char * id;
- aType r;
- Expression e;
- deque<UnId> * array; // to store a array
- aType re;
- bool ref; // a ref or non
- UnId() :id(0),r(0),e(0),array(0),re(0),ref(false) {}
- UnId(const char * idd) :id(idd),r(0),e(0),array(0),re(0),ref(false) {}
- UnId(const char * idd,const C_F0 & ee,aType rr,bool reff) ;
- UnId(deque<UnId> * d) : id(0),r(0),e(0),array(d?new deque<UnId>(*d):0),re(0),ref(false) {}
- UnId(const UnId & u) :
- id(u.id),r(u.r),e(u.e),
- array(u.array?new deque<UnId>(*u.array):0),
- re(u.re),ref(u.ref) {}
- // Modif 24032005
- void operator= (const UnId & u) {
- id=u.id;
- r=u.r;
- e=u.e;
- re=u.re;
- ref=u.ref;
- if(array) delete array;
- array=0;
- if(u.array) array= new deque<UnId>(*u.array);
- }
-
- ~UnId(){ if( array) delete array;} // Modif 24032005
-
-};
-
-typedef deque<UnId> ListOfId;
-// xxx is a type so xxx can't be a parameter
-#define ATYPE(xxx) map_type[typeid(xxx).name()]
-/* #define NEW_TYPE(type) map_type[typeid(type).name()] = new ForEachType<type >(0,0)
-//#define NEW_TYPE(type) map_type[typeid(type).name()] = new ForEachType<type >()
-#define NEW_TYPE_I(type,i,d) map_type[typeid(type).name()] = new ForEachType<type>(i,d)
-#define NEW_TYPE_Ptr(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type >()
-#define NEW_TYPE_PtrND(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type >(0)
-#define NEW_TYPE_PtrNIND(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type >(0,0)
-//#define NEW_TYPE_PtrI(type) map_type[typeid(type*).name()] = new ForEachTypePtr<type*>(Initialize<type>)
-*/
-
-
-
-
-extern Polymorphic * TheOperators, * TheRightOperators;
-
-// -------------
-extern C_F0 *pOne,*pZero,*pminusOne;
-
-
-typedef AnyType (* Function1)(Stack, const AnyType &);
-typedef AnyType (* Function2)(Stack, const AnyType &,const AnyType &);
-typedef AnyType (* CFunction2)(Stack, E_F0 *, E_F0 *);
-typedef AnyType (* CFunction4)(Stack, E_F0 *, E_F0 *, E_F0 *, E_F0 *);
-
-
-Expression NewExpression(Function1,Expression);
-Expression NewExpression(Function2,Expression,Expression);
-
-
-inline Type_Expr make_Type_Expr(aType t, E_F0 * e) {return make_pair(t,e);}
-inline Type_Expr make_Type_Expr( E_F0 * e,aType t) {return make_pair(t,e);}
-
-struct Keyless : binary_function<const char *,const char *, bool>
- {
- typedef const char * Key;
- bool operator()(const Key& x, const Key& y) const { return strcmp(x,y)<0;} };
-
-
-// un table Iden
-class TableOfIdentifier: public CodeAlloc {
- public:
- struct Value;
- typedef const char * Key;
- typedef map<Key,Value,Keyless> maptype;
- typedef pair<const Key,Value> pKV;
- typedef maptype::iterator iterator;
- typedef maptype::const_iterator const_iterator;
-
- struct Value :public Type_Expr {
- pKV * next; // link all the variable in reverse order to call delete on each variable
- bool del;
- Value(const Type_Expr & vv,pKV * n,bool dd=true) : Type_Expr(vv),next(n),del(dd) {}
- Value(aType t,E_F0 *f,pKV *n,bool dd=true): Type_Expr(t,f),next(n),del(dd) {}
- };// to store the type and the expression
- pKV * listofvar;
-
-// struct Keyless : binary_function<Key,Key, bool>
-// { bool operator()(const Key& x, const Key& y) const{ return strcmp(x,y)<0;} };
-
-
- maptype m;
- C_F0 Find(Key) const ;
- C_F0 Find(Key,const basicAC_F0 &) const ;
-
- const Type_Expr & New(Key k,const Type_Expr & v,bool del=true);
- void Add(Key k,Key op,OneOperator *p0,OneOperator *p1=0,
- OneOperator *p2=0,OneOperator *p3=0,OneOperator *p4=0,
- OneOperator *p5=0,OneOperator *p6=0) ;
- void clear();
-template<class T>
- C_F0 NewVar(Key k,aType t,size_t & top,const C_F0 &i) ;
-template<class T>
- C_F0 NewVar(Key k,aType t,size_t & top,const basicAC_F0 &args) ;
-template<class T,class U>
- C_F0 NewVar(Key k,aType t,size_t & top,const basicAC_F0 &args,const U & data) ;
-// C_F0 NewVar(Key k,aType t,size_t & top,const basicAC_F0 &args,const C_F0& f) ;
-template<class T>
- C_F0 NewVar(Key k,aType t,size_t & top) ;
- C_F0 NewID(aType t,Key k, C_F0 & c,size_t & top,bool del=true);
- C_F0 NewID(aType t,Key k, C_F0 & c,const ListOfId & l,size_t & top,bool del=true);
-template<class T>
- C_F0 NewFESpace(Key k,aType t,size_t & top,const basicAC_F0 &args);
- friend ostream & operator<<(ostream & f,const TableOfIdentifier & );
- C_F0 destroy();
- TableOfIdentifier() ; //: listofvar(0) {};
- ~TableOfIdentifier(); //
-};
-
-
-// for all the type of the language
-class basicForEachType : public CodeAlloc {
- const type_info * ktype; // the real type_info
- // const type_info *ktypefunc;// the type of code
- public:
- const size_t size;
-
-
- typedef OneOperator * CastFunc;
- typedef map<aType,CastFunc>::const_iterator const_cast_iterator;
-
- typedef const char * Key;
-
- // virtual void print(ostream &f,const void *p) const =0;
-
- friend ostream & operator<<(ostream & f,const basicForEachType & e)
- { f << '<' << e.name() << '>' ;return f;}
- void Show(ostream & f) const ;
- const char * name() const { return this ? ktype->name() :"NULL" ;}
- virtual bool CastingFrom(const basicForEachType * t) const ;
- // modif FH ----- A TESTER //
- virtual bool SametypeRight(const basicForEachType * t) const {return this == t || t == un_ptr_type;}
-// virtual Type_Expr init(const Type_Expr & te) const { return Type_Expr(0,0);}
- virtual int TYPEOFID() const {return 0;}
-// bool SametypeLeft(const basicForEachType * t) const {return t == this;}
- // bool To(const basicForEachType * t) const { throwassert(t && this);return un_ptr_type == this ? t->un_ptr_type == this : t == this;}
- virtual C_F0 CastTo(const C_F0 & e) const ;
- virtual void SetArgs(const ListOfId *lid) const ;// { cout << "SetArgs::\n " ;throwassert(lid==0 || lid->size()==0);}
- aType right() const {return un_ptr_type;};
- Expression RightValueExpr(Expression f) const;
- // Type_Expr NewVar(Key k,aType t,size_t & top,const C_F0 &i);
- virtual C_F0 Initialization(const Type_Expr & e) const ;
- virtual Expression Destroy(const C_F0 &) const ;
- virtual bool ExistDestroy() const {return destroy;}
- virtual Type_Expr SetParam(const C_F0 & c,const ListOfId * l,size_t & top) const;
- // { return make_pair<aType,const E_F0 *>(this,c.left());}
-
- protected:
- basicForEachType(const type_info & k ,const size_t ,
- const E_F1_funcT_Type * p=0,basicForEachType *rr=0,
- Function1 iv=0,Function1 id=0) ;
-/* inline basicForEachType(const type_info & k ,const type_info & kf ,const size_t ,
- const E_F1_funcT_Type * p=0,basicForEachType *rr=0,
- Function1 iv=0,Function1 id=0) ;*/
-
-public:
- const basicForEachType * un_ptr_type; // type of right exp
- private:
- // map<aType,CastFunc> mapofcast;
- OneOperator * casting; // list of operator for casting to this type
-
- const E_F1_funcT_Type * un_ptr; // is ptr -> get value function
-
-
- Function1 InitExp; // to init the ptr value
- Function1 destroy;// the destroy function
- TableOfIdentifier ti; // all polymorphisme of the Identifier
- public:
- // basicForEachType * FunctionType() const;// { return funct_type ? funct_type : (funct_type= new FuncForEachType(this));}
- C_F0 Find(const char * k) const; // {return ti->Find(k);}
- C_F0 Find(const char * k,const basicAC_F0 & args) const; // {return ti->Find(k);}
- void New(Key k,Type_Expr v,bool del=true){ti.New(k,v,del);}
-
- void Add(Key k,Key op,OneOperator *p0,OneOperator *p1=0,
- OneOperator *p2=0,OneOperator *p3=0,OneOperator *p4=0,
- OneOperator *p5=0,OneOperator *p6=0)
- {ti.Add(k,op,p0,p1,p2,p3,p4,p5,p6);}
-
- void AddCast(CastFunc f1,CastFunc f2=0,CastFunc f3=0,CastFunc f4=0,
- CastFunc f5=0,CastFunc f6=0,CastFunc f7=0,CastFunc f8=0);
- ostream & ShowTable(ostream & f) const { f << ti; return f;}
-
- // basicForEachType * funct_type;
- virtual ~basicForEachType();
-
-};
-
-
-template<typename T>
-inline basicForEachType * atype() {
- map<const string,basicForEachType *>::iterator ir=map_type.find(typeid(T).name());
- // basicForEachType * r=map_type[];
- if (ir == map_type.end()) { cerr << "Error: aType '" << typeid(T).name() << "', doesn't exist\n";
- ShowType(cerr);
- throw(ErrorExec("exit",1));}
- return ir->second;}
-
-
-// --------
-//typedef basicForEachType TheType;
-
-// const basicForEachType * ktype; // compilation time
-
-// class for all exp
-// a left exp is a pointer expression
-// -------
-// -- exec times le code is just E_F0*(fonction without args)
-class C_LF2;
-class C_LF1;
-
-// 3 types of function/expression 0,1,2 args
-class E_F0 :public CodeAlloc
- {
- public:
-
- struct kless : binary_function<Expression,Expression, bool>
- { bool operator()(const Expression& x, const Expression& y) const{
- //cout << x << " " << y << x->compare(y) << " ::: ";
- int r1 = x->compare(y);// , r2 = y->compare(x);
- //assert(r1+r2==0);
- return r1<0;} };
- typedef map< E_F0 *,int,kless> MapOfE_F0;
-
- virtual AnyType operator()(Stack) const =0;
- virtual bool Empty() const {return !this; }
- // virtual E_F0 * destroy(Stack ) const {return 0;}
- // virtual const E_F0 * Parameter(Stack ) const {return this;}
- virtual size_t nbitem() const {return 1;}
- virtual bool EvaluableWithOutStack() const {return false;} //
- virtual bool MeshIndependent() const {return true;} //
- virtual E_F0 * right_E_F0() const { return 0;}
- virtual bool ReadOnly() const { return true;} // the expression do not change the memory
- virtual ~E_F0() {}
- virtual int compare (const E_F0 *t) const { int r= (t==this) ? 0 : ( ( this<t) ?-1 : 1);
- //cout << "cmp " << typeid(*this).name() << r << endl;
- return r;} // to give a order in instuction
- virtual int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ; // build optimisation
- virtual AnyType operator()(Stack stack,AnyType *) const { return operator()(stack);} // call optim code
- virtual operator aType () const { assert(0);return 0;} // the type of the expression
- virtual ostream & dump(ostream &f) const { f << ' ' << typeid(*this).name() << ' ' << this << ' ' ;return f; }
- // for OPTIMIZATION
-
- int find(const MapOfE_F0 & m) ;
- int insert(Expression opt,deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ;
-
- };
-
-inline ostream & operator<<(ostream & f,const E_F0 &e) { if(&e) e.dump(f); else f << " --0-- " ;return f;}
-// a
-class E_F0mps : public E_F0 { public:
- virtual bool MeshIndependent() const {return false;} //
-};
-
-class E_F0info : public E_F0 { public:
- // not a real expression just to pass information
- virtual bool EvaluableWithOutStack() const {return true;} //
- virtual bool MeshIndependent() const {return true;} //
- AnyType operator()(Stack s) const {
- return SetAny<const E_F0 *>(this);}
- operator aType () const { return atype<Expression>();}
-
-
-};
-
-class E_F1 : public CodeAlloc{ public: virtual AnyType operator()(Stack,AnyType &) const =0;};
-class E_F2 : public CodeAlloc{ public: virtual AnyType operator()(Stack,AnyType &,AnyType &) const =0;};
-class E_FN : public CodeAlloc{ public: virtual AnyType operator()(Stack,size_t N,...) const =0;};
-
-// class to play with polymorphisme
-// ---------------------------------
-class basicAC_F0;
-class ArrayOfaType : public CodeAlloc{
- // class for the type of parameter
- aType tt[16];
- protected:
- bool ellipse;
- int n;
- aType * t; // array of type
- void operator=(const ArrayOfaType &); // no set operator
- public:
- // ArrayOfaType() :n(0),t(0),ellipse(false) {}
- explicit ArrayOfaType(bool ell=false)
- :n(0),t(0),ellipse(ell) {}
-
- explicit ArrayOfaType(const aType & a,bool ell=false)
- :n(1),t(tt),ellipse(ell) {t[0]=a;}
-
- explicit ArrayOfaType(const aType & a,const aType & b,bool ell=false)
- :n(2),t(tt),ellipse(ell) {t[0]=a,t[1]=b;}
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,bool ell=false)
- :n(3),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;}
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,bool ell=false)
- :n(4),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d;
- /* cout << * a << *b << * c << * d << " ---------" << endl; */}
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,bool ell=false)
- :n(5),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; }
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,bool ell=false)
- :n(6),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; }
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
- const aType & f,const aType & g,
- bool ell=false)
- :n(7),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; } // (6 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
- const aType & f,const aType & g,const aType & h,
- bool ell=false)
- :n(8),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; } // (7 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,
- const aType & f,const aType & g,const aType & h, const aType & i,
- bool ell=false)
- :n(9),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; } // (8 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d, const aType & e,
- const aType & f,const aType & g,const aType & h, const aType & i, const aType & j,
- bool ell=false)
- :n(10),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; } // (10 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k,bool ell=false)
- :n(11),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; } // (10 args) Added by Fabian Dortu
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, bool ell=false)
- :n(12),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; }
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m, bool ell=false)
- :n(13),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; }
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m, const aType & n, bool ell=false)
- :n(14),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; }
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m, const aType & n, const aType & o,bool ell=false)
- :n(15),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; }
-
- explicit ArrayOfaType(const aType & a,const aType & b,const aType & c,const aType & d,const aType & e,const aType & f,const aType & g,const aType & h, const aType & i, const aType & j, const aType & k, const aType & l, const aType & m, const aType & n, const aType & o, const aType & p, bool ell=false)
- :n(16),t(tt),ellipse(ell) {t[0]=a,t[1]=b;t[2]=c;t[3]=d; t[4]=e; t[5]=f; t[6]=g; t[7]=h; t[8]=i; t[9]=j; t[10]=k; t[11]=l; t[12]=m; t[13]=n; t[14]=o; t[15]=p; }
-
-
- ArrayOfaType(const basicAC_F0 & ) ;
- ArrayOfaType(const ArrayOfaType & ); //
- ArrayOfaType(const ListOfId * l);
- ~ArrayOfaType() { if(t && t != tt) delete [] t;t=0;n=0;}
- bool WithOutCast( const ArrayOfaType & a) const ;
- bool WithCast( const ArrayOfaType & a,int nbcast=100000) const ; // return the number of cast
- // exactly comparaison
- bool operator==( const ArrayOfaType & a) const {
- if (a.n != n || a.ellipse !=ellipse) return false;
- for (int i=0;i<n;i++)
- if (t[i] != a.t[i])
- return false;
- return true;}
-
- friend ostream & operator<<(ostream & f,const ArrayOfaType & a);
-};
-
-
-
-class OneOperator : public ArrayOfaType {
- friend class MakeVectSpaceN;
- friend class basicForEachType;
- const basicForEachType * r; // return type
- OneOperator *next; // to make a list of OneOperator
- public:
- int pref; // to try to solve ambiguity for binary operator
- // 10 for bool, 20 for int , 30 for long , 40, for float, 50 double, 60 for complex, 70 string
- // string+ 1 => string
- // 1+string => string
- OneOperator(aType rr) ;// : r(rr),ArrayOfaType(),next(0),pref(0) {throwassert(r);}
- OneOperator(aType rr,aType a) ;//: r(rr),ArrayOfaType(a,false),next(0),pref(0) {throwassert(rr && a );}
- OneOperator(aType rr,aType a,aType b);// : r(rr),ArrayOfaType(a,b,false),next(0),pref(0) {
- // throwassert(rr && a && b);}
- OneOperator(aType rr,aType a,aType b,aType c) ;
- //: r(rr),ArrayOfaType(a,b,c,false),next(0),pref(0) {throwassert(rr && a && b && c);}
- OneOperator(aType rr,aType a,aType b,aType c,aType d) ;
- //: r(rr),ArrayOfaType(a,b,c,d,false),next(0),pref(0) {throwassert(rr && a && b && c);}
-
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e) ;
- //: r(rr),ArrayOfaType(a,b,c,d,e,false),next(0),pref(0) {throwassert(rr && a && b && c && d);} // Added by Fabian Dortu (5 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f) ;
- //: r(rr),ArrayOfaType(a,b,c,d,e,f,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f);} // Added by Fabian Dortu (6 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g);
- // : r(rr),ArrayOfaType(a,b,c,d,e,f,g,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g);} // Added by Fabian Dortu (7 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h);
- // : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g && h);} // Added by Fabian Dortu (8 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i) ;
- //: r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g && h && i);} // Added by Fabian Dortu (9 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j);
- // : r(rr),ArrayOfaType(a,b,c,d,e,f,g,h,i,j,false),next(0),pref(0) {throwassert(rr && a && b && c && d && e && f && g && h && i && j);} // Added by Fabian Dortu (10 parameters)
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n);
- OneOperator(aType rr,aType a,aType b,aType c,aType d,aType e,aType f, aType g, aType h, aType i, aType j, aType k, aType l, aType m, aType n, aType o);
-
-
-
- OneOperator(aType rr,const ArrayOfaType &ta) ;
- //: r(rr),ArrayOfaType(ta),next(0),pref(0) {throwassert(rr);}
- OneOperator(aType rr,bool ellipse) ;
- //: r(rr),ArrayOfaType(ellipse),next(0),pref(0) {throwassert(rr );}
- OneOperator(aType rr,const ListOfId *l) ;
- //: r(rr),ArrayOfaType(l),next(0),pref(0) {throwassert(rr );}
-
- typedef pair<const OneOperator *,int> pair_find;
- void operator+=(OneOperator &a){throwassert(a.next==0);a.next=next;next=&a;}
- // a way to make none recurve delete good
- virtual ~OneOperator();
- pair_find Find(const ArrayOfaType & at) const ;
- pair_find FindWithOutCast(const ArrayOfaType & at) const ; // for
- OneOperator * FindSameR(const ArrayOfaType & at) ;
-
- void Show(const ArrayOfaType & at,ostream &f=cerr) const;
- void Show(ostream &f=cerr) const;
- operator aType () const { return r;}
- virtual E_F0 * code(const basicAC_F0 &) const =0;
- const OneOperator * Simple() const { return next||n?0:this;}
- friend ostream & operator<<(ostream & f,const OneOperator & a);
-
-};
-
-
-class Polymorphic: public E_F0mps {
- // a list of type
- // simple, array or function
- private:
- typedef const char * Key;
- typedef OneOperator * Value;
- // struct Keyless : binary_function<Key,Key, bool>
- // { bool operator()(const Key& x, const Key& y) const{ return strcmp(x,y)<0;} };
-
- typedef map<Key,Value,Keyless> maptype; //
- typedef maptype::const_iterator const_iterator; //
- typedef maptype::iterator iterator; //
- // remark the map is mutable because
- // a expression is const E_F0 *
- // So There is a incompatibility between
- // we save an expression in a variable
- // we have to add thing to a polymorphisme expression
- mutable maptype m; // all polymorphisme of the Identifier
- Expression e; // default expression
- public:
- Polymorphic() : m(),e(0) {}
-
-// by default Empty and do nothing
- virtual AnyType operator()(Stack ) const { return Nothing;}
- virtual bool Empty() const {return true;} // by default Empty
- void clear() { m.clear();}
- const OneOperator * Find(const char *op, const ArrayOfaType &at) const;
- const OneOperator * FindWithOutCast(const char *op,const ArrayOfaType &at) const;
- void Show(const char *op,const ArrayOfaType & at,ostream &f=cerr)const ;
- void Add(const char * op,OneOperator * p0 ,OneOperator * p1=0,OneOperator * p2=0,
- OneOperator * p3=0,OneOperator * p4=0,OneOperator * p5=0,
- OneOperator * p6=0,OneOperator * p7=0,OneOperator * p8=0,
- OneOperator * p9=0,OneOperator * pa=0,OneOperator * pb=0,
- OneOperator * pc=0,OneOperator * pd=0,OneOperator * pe=0
- ) const
- {Addp(op,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,pa,pb,pc,pd,pe,0);}
- void Add(const char * op,OneOperator ** pp) const ;
- private:
- void Addp(const char * op,OneOperator * pp,...) const ;
- friend ostream & operator<<(ostream & f,const Polymorphic & a);
-
-
-};
-
-
-
-
-// the type for polymorphisme of id
-
-
-
-// compile time expression
-class basicAC_F0;
- class C_F0 {
- friend class CC_F0;
- protected:
- Expression f; // the expression code
- aType r; // the expression type
-
- public:
- // the constructeur
- C_F0() :f(0),r(0) {}
- C_F0(const C_F0 & c):f(c.f),r(c.r) {}
- C_F0(const C_F0 & a,const C_F0 & b); // concatenation
- C_F0(const Type_Expr & a):r(a.first),f(a.second) {}
- C_F0(const Polymorphic *,const char *,const basicAC_F0 & );
- C_F0(const Polymorphic *,const char *, AC_F0 & );
- // function, array ..
- C_F0(const C_F0 & e,const char *op,const basicAC_F0 & p) ;
- C_F0(const C_F0 & e,const char *op, AC_F0 & p) ;
- C_F0(const C_F0 & e,const char *op,const C_F0 & ee) ;
- C_F0(const C_F0 & e,const char *op,const C_F0 & a,const C_F0 & b) ;
- C_F0(const C_F0 & e,const char *nm) ;
- // without parameter ex f()
- C_F0(const Polymorphic * pop,const char *op);
- // unary operator
- C_F0(const Polymorphic * pop,const char *op,const C_F0 & a);
- // binary operator
- C_F0(const Polymorphic * pop,const char *op,const C_F0 & a,const C_F0 & b);
- // ternary operator
- C_F0(const Polymorphic * pop,const char *op,const C_F0 & a,const C_F0 & b,const C_F0 & c);
-
-
- C_F0( Expression ff,aType rr ): f(ff),r(rr) {
- // if (!rr && ff) cerr << "Type Null" << endl;
- }
- // operator Expression() const {return f;}
- AnyType eval(Stack s) const {return (*f)(s);}
-
- Expression RightValue() const { return r->RightValueExpr(f);}
- Expression LeftValue() const;
-
- aType left() const {return r;}
- aType right() const {return r->right();}
- C_F0 RightExp() const { return C_F0(RightValue(),right());} // FH add 07/2005
- operator E_F0 * () const {return f;}
- bool Empty() const {return !f || f->Empty();}
- bool NotNull() const {return f;}
- int TYPEOFID() const { return r ? r->TYPEOFID(): 0;}
- int nbitem() const { return f ? f->nbitem() : 0;}
- bool EvaluableWithOutStack() const { return f && f->EvaluableWithOutStack();}
- Expression Destroy() { return r->Destroy(*this);}
- operator const Polymorphic * () const {return dynamic_cast<const Polymorphic *>(f);}
- bool operator==(const C_F0 & a) const {return f==a.f && r == a.r;}
- bool operator!=(const C_F0 & a) const {return f!=a.f || r != a.r;}
-// Type_Expr SetParam(const ListOfId * l,size_t & top) const ;
- bool MeshIndependent() const { return f ==0 ? f->MeshIndependent() : false;}
-private:
-friend class Block;
-friend class TableOfIdentifier;
- C_F0( Expression ff ): f(ff),r(0) {}
- };
-
-
-
-// for bison
-class CListOfInst;
-
-
- // a => b
- // f => t||f
- // t => t
- // (a =>b) <=> (!a || b )
-
-// warning ------------------
-class ForTypeVoid: public basicForEachType{public:
- ForTypeVoid():basicForEachType(typeid(void),0,0,0,0,0) {}
-};
-
-template<class T>
-class ForEachType: public basicForEachType{public:
- ForEachType(Function1 iv=0,Function1 id=0):basicForEachType(typeid(T),sizeof(T),0,0,iv,id) {
- if (sizeof(T) > sizeof(AnyTypeWithOutCheck) )
- {
- cout << " Sorry the " <<typeid(T).name() << " is too large ( " << sizeof(T)
- << " > " << sizeof(AnyTypeWithOutCheck) << " ) " << endl;
- throwassert(sizeof(T) <= sizeof(AnyTypeWithOutCheck) );
- }
- }
-};
-template<class T>
-class ForEachType<T*>: public basicForEachType{public:
- ForEachType(Function1 iv=0,Function1 id=0):basicForEachType(typeid(T),sizeof(T),0,0,iv,id) { }
-};
-
-template<class A,class B> AnyType UnRef(Stack,const AnyType &a) ;
-template<class A> AnyType Initialize(Stack,const AnyType &a) ;
-template<class A> AnyType Destroy(Stack,const AnyType &a) ;
-
-// the type of variable is pointer because we need to write in
-template<class T>
-class ForEachTypePtr: public basicForEachType { public:
- ForEachTypePtr();
- ForEachTypePtr(Function1 init,Function1 dl);
- ForEachTypePtr(Function1 dl);
-};
-
-template<class T>
-class ForEachTypePtr<T*>: public basicForEachType { public:
- ForEachTypePtr();
- ForEachTypePtr(Function1 init,Function1 dl);
- ForEachTypePtr(Function1 dl);
-};
-
-
-template<class T,int RTYPE=1>
-class ForEachTypePtrfspace: public ForEachTypePtr<T> { public:
- ForEachTypePtrfspace():ForEachTypePtr<T>() {}
- int TYPEOFID() const {return RTYPE;}
-};
-
-
-class ForTypeAnyType: public basicForEachType{public:
- ForTypeAnyType(): basicForEachType(typeid(AnyType),sizeof(AnyType)) {}
- bool CastingFrom(const basicForEachType * ) const {return true;}
- C_F0 CastTo(const C_F0 & e) const {return e;}
-};
-
-
-// for cast and get value associed to a pointer
-
-
-template<class A,class B>
- AnyType Cast(Stack,const AnyType &b) {
- return SetAny<A>(static_cast<A>(GetAny<B>(b)));}
-
-template<class A,class B,A F(const B &)>
- AnyType FCast(Stack s,const AnyType &b) {
- return SetAny<A>(Add2StackOfPtr2Free(s,F(GetAny<B>(b))));}
-
-template<class A>
- AnyType UnRef(Stack,const AnyType &a) {
- return SetAny<A>(*PGetAny<A>(a));}
-
-template<class A,class B>
- AnyType UnRef(Stack,const AnyType &a) {
- return SetAny<A>(*PGetAny<B>(a));}
-
-
-template<class A>
- AnyType UnRefCopyPtr(Stack s,const AnyType &a) {
- A ** ppa=PGetAny<A*>(a);
- A * pc = new A(**ppa);
- return SetAny<A*>(Add2StackOfPtr2Free(s,pc)) ;}
-
-
-template<class A> AnyType Initialize(Stack,const AnyType &x){
- A * a=PGetAny<A>(x);
- A *b=new A;//
- memcpy(a,b,sizeof(A));// bitcopy
- ::operator delete(b); // delete with no destruction
- return SetAny<A*>(a);
-}
-
-template<class A> AnyType InitializePtr(Stack stack,const AnyType &x){
- A * a=PGetAny<A>(x);
-SHOWVERB( cout << " init ptr " << typeid(A*).name() << (char *) a - (char*) stack<< endl);
- *a=0;
- return x;
-}
-
-template<class A> inline AnyType Delete(Stack,const AnyType &x){
- A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DESTROY " <<typeid(A).name() << " " << a << endl);
- (*a).~A();
- return Nothing;
-}
-
-template<class A> inline AnyType Destroy(Stack,const AnyType &x){
- A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DESTROY " <<typeid(A).name() << " " << a << endl);
- a->destroy();
- return Nothing;
-}
-
-template<class A> inline AnyType DestroyS(Stack,const AnyType &x){
- A a=GetAny<A>(x);
- SHOWVERB(cout << "DESTROY " <<typeid(A).name() << " " << a << endl);
- a.destroy();
- return Nothing;
-}
-
-template<class A> inline AnyType InitS(Stack,const AnyType &x){
- A a=GetAny<A>(x);
- SHOWVERB(cout << "InitS " <<typeid(A).name() << " " << a << endl);
- a.init();
- return Nothing;
-}
-template<class A> inline AnyType InitP(Stack,const AnyType &x){
- A *a=PGetAny<A>(x);
- SHOWVERB(cout << "InitP " <<typeid(A).name() << " " << a << endl);
- a->init();
- return Nothing;
-}
-
-
-template<class A> inline AnyType DestroyPtr(Stack,const AnyType &x) {
- const A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DestroyPtr " << typeid(A).name() << *a << endl);
- (*a)->destroy();
- // delete *a;
-
- return Nothing;
-};
-template<class A> inline AnyType DeletePtr(Stack,const AnyType &x) {
- const A * a=PGetAny<A>(x);
- SHOWVERB(cout << "DeletePtr " << typeid(A).name() << *a << endl);
- // (*a)->destroy();
- delete *a;
-
- return Nothing;
-};
-
-template<> AnyType inline DestroyPtr<string *>(Stack,const AnyType &x) {
- string ** a=PGetAny<string*>(x);
- SHOWVERB( cout << "DestroyPtr " << typeid(string*).name() << *a << endl);
- delete *a;
- return Nothing;
-};
-
-
-
-template<class A> AnyType Initialize(Stack,const AnyType &x,const AnyType &y){
- A * a=PGetAny<A>(x);
- A *b=new A(GetAny<A>(x));//
- memcpy(a,b,sizeof(A));// bitcopy
- ::operator delete(b); // delete with no destruction
- return SetAny<A*>(a);
-}
-
-
-
-class E_F0_CFunc2 :public E_F0mps { public:
- CFunction2 f2;
- E_F0 *a,*b;
- AnyType operator()(Stack s) const {return f2(s,a,b);}
- E_F0_CFunc2( CFunction2 ff,E_F0 *aa,E_F0 *bb) : f2(ff),a(aa),b(bb){}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack() && b->EvaluableWithOutStack();} //
- operator aType () const { return atype<void>();}
-
-};
-
-class E_F0_CFunc4 :public E_F0mps { public:
- CFunction4 f4;
- E_F0 *a,*b,*c,*d;
- AnyType operator()(Stack s) const {return f4(s,a,b,c,d);}
- E_F0_CFunc4( CFunction4 ff,E_F0 *aa,E_F0 *bb,E_F0 *cc,E_F0 *dd)
- : f4(ff),a(aa),b(bb),c(cc),d(dd){}
- operator aType () const { return atype<void>();}
-
-};
-
-
-
-template<class R,class A>
- class E_F1_F :public E_F1 { public:
- typedef R (*func)(A) ;
- func f;
- E_F1_F(func ff) : f(ff) {}
- AnyType operator()(Stack s,AnyType & a) const
- {return SetAny<R>(f(GetAny<A>(a)));}
-};
-
-template<class R,class A0,class A1>
- class E_F2_F :public E_F2 { public:
- typedef R (*func)(const A0 &,const A1&) ;
- func f;
- E_F2_F(func ff) : f(ff) {}
- AnyType operator()(Stack s,AnyType & a0,AnyType & a1) const
- {return SetAny<R>(f(GetAny<A0>(a0),GetAny<A1>(a1)));}
-};
-
-template<class R,class TA0,bool RO=true>
- class E_F_F0 :public E_F0 { public:
- template <class T> struct remove_reference {typedef T type;};
-// template <class T> struct remove_reference<T&> {typedef T type;};
- template <class T> struct remove_reference<const T&> {typedef T type;};
- typedef typename remove_reference<TA0>::type A0;
-
-
- typedef R (*func)( TA0 ) ;
- func f;
- Expression a;
- E_F_F0(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>(f(GetAny<A0>( (*a)(s) )));}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack();} //
- bool MeshIndependent() const {return a->MeshIndependent();} //
- bool ReadOnly() const { return RO ;}
- int compare (const E_F0 *t) const {
- int rr;
- // cout << "cmp " << typeid(*this).name() << " and " << typeid(t).name() << endl;
- const E_F_F0* tt=dynamic_cast<const E_F_F0 *>(t);
- if (tt && f == tt->f) rr = a->compare(tt->a);
- else rr = E_F0::compare(t);
- return rr;
- } // to give a order in instuction
-
- int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ;
- virtual ostream & dump(ostream &f) const { f << typeid(*this).name() <<" f= " << f << " a= "<< *a << ' ' ;return f; }
-
-};
-
-// modif for xlc++ FH
-template<class R,class TA0,bool RO=true>
-class E_F_F0_Opt: public E_F_F0<R,TA0,RO> { public :
- size_t ia;
- E_F_F0_Opt(const E_F_F0<R,TA0,RO> &t,size_t iaa)
- : E_F_F0<R,TA0,RO>(t) , ia(iaa) {assert(iaa<2000000 && iaa >0);}
- AnyType operator()(Stack s) const
- {
- // A0 x = *static_cast<A0 *>(static_cast<void*>(static_cast<char *>(s)+ia));
- // cout << " opt f (" << x << " ) = " << ": " << ia << endl;
- return SetAny<R>( f( *static_cast<typename E_F_F0<R,TA0>::A0 *>(static_cast<void*>(static_cast<char *>(s)+ia)) ) );}
-
-};
-
-template<class R,class TA0,bool RO>
- int E_F_F0<R,TA0,RO>::Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n)
- {
- int rr = find(m);
- if (rr) return rr;
- return insert(new E_F_F0_Opt<R,TA0,RO>(*this,a->Optimize(l,m,n)),l,m,n);
- }
-// fin modif xlc++
-
-template<class A0>
- class E_VF_F0 :public E_F0 { public:
- typedef void (*func)( A0 ) ;
- func f;
- Expression a;
- E_VF_F0(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {f(GetAny<A0>( (*a)(s) ));return Nothing;}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack();} //
-
- bool MeshIndependent() const { return a->MeshIndependent(); }
-
-};
-
-inline int clexico(int i,int j) { return i==0 ? j : i;}
-inline int clexico(int i,int j,int k) { int ll=clexico(i,j); return ll==0 ? k : ll;}
-
-template<class R,class TA0,class TA1>
- class E_F_F0F0 :public E_F0 { public:
- template <class T> struct remove_reference {typedef T type;};
- template <class T> struct remove_reference<T&> {typedef T type;};
- typedef typename remove_reference<TA0>::type A0;
- typedef typename remove_reference<TA1>::type A1;
- typedef R (*func)( A0 , A1 ) ;
-
- func f;
- Expression a0,a1;
- E_F_F0F0(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)) ) );}
- bool EvaluableWithOutStack() const
- {return a0->EvaluableWithOutStack() && a1->EvaluableWithOutStack();} //
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent();} //
- int compare (const E_F0 *t) const {
- int rr;
- // cout << "cmp " << typeid(*this).name() << " and " << typeid(t).name() << endl;
- const E_F_F0F0* tt=dynamic_cast<const E_F_F0F0 *>(t);
- if (tt && f == tt->f) rr= clexico(a0->compare(tt->a0),a1->compare(tt->a1));
- else rr = E_F0::compare(t);
- return rr;
- } // to give a order in instuction
-
- int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) ;
-
-};
-
-// modif for xlc++
-template<class R,class TA0,class TA1>
-class E_F_F0F0_Opt: public E_F_F0F0<R,TA0,TA1> { public :
- size_t ia,ib;
- E_F_F0F0_Opt(const E_F_F0F0<R,TA0,TA1> &t,size_t iaa,size_t ibb)
- : E_F_F0F0<R,TA0,TA1>(t) ,
- ia(iaa),ib(ibb) {}
- AnyType operator()(Stack s) const
- {
- //A0 aa =*static_cast<A0 *>(static_cast<void*>(static_cast<char *>(s)+ia));
- //A1 bb=*static_cast<A1 *>(static_cast<void*>(static_cast<char *>(s)+ib)) ;
- //cout << ia << " " << ib << "f( " << aa << "," << bb << " ) = "<< f(aa,bb) << endl;
- return SetAny<R>( f( *static_cast<typename E_F_F0F0<R,TA0,TA1>::A0 *>(static_cast<void*>(static_cast<char *>(s)+ia)) ,
- *static_cast<typename E_F_F0F0<R,TA0,TA1>::A1 *>(static_cast<void*>(static_cast<char *>(s)+ib)) ) );}
-
-};
-
-
-template<class R,class TA0,class TA1>
- int E_F_F0F0<R,TA0,TA1>::Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n)
- {
-
- int rr = find(m);
- if (rr) return rr;
-
- return insert(new E_F_F0F0_Opt<R,TA0,TA1>(*this,a0->Optimize(l,m,n),a1->Optimize(l,m,n)),l,m,n);
- }
-// add modif for xlc++
-
-
-
-template<class R,class A0>
- class E_F_F0_ :public E_F0 { public:
- typedef R (*func)(const A0& ) ;
- func f;
- Expression a;
- E_F_F0_(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>(f(GetAny<A0>( (*a)(s) )));}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack() ;} //
- bool MeshIndependent() const
- {return a->MeshIndependent();} //
-
-};
-
-template<class R,class A0>
- class E_F_F0s_ :public E_F0mps { public:
- typedef R (*func)(Stack stack,const A0& ) ;
- func f;
- Expression a;
- E_F_F0s_(func ff,Expression aa) : f(ff),a(aa) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>(f(s,GetAny<A0>( (*a)(s) )));}
- bool MeshIndependent() const
- {return true;} //
-
- operator aType () const { return atype<R>();}
-
-};
-
-template<class R,class A0,class A1,class E=E_F0>
- class E_F_F0F0_ :public E { public:
- typedef R (*func)(const A0 &,const A1 & ) ;
- func f;
- Expression a0,a1;
- E_F_F0F0_(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)) ) );}
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent();} //
-
-};
-
-template<class R,class A0,class A1,class A2,class E=E_F0>
- class E_F_F0F0F0_ :public E { public:
- typedef R (*func)(const A0 &,const A1 & , const A2 &) ;
- func f;
- Expression a0,a1,a2;
- E_F_F0F0F0_(func ff,Expression aa0,Expression aa1,Expression aa2)
- : f(ff),a0(aa0),a1(aa1),a2(aa2) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)),GetAny<A2>((*a2)(s)) ) );}
- virtual size_t nbitem() const {return a2->nbitem(); }
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent()&& a2->MeshIndependent();} //
-
-};
-
-template<class R,class A0,class A1,class A2,class E=E_F0>
- class E_F_stackF0F0F0_ :public E_F0mps { public:
- typedef R (*func)(Stack, const A0 &,const A1 & , const A2 &) ;
- func f;
- Expression a0,a1,a2;
- E_F_stackF0F0F0_(func ff,Expression aa0,Expression aa1,Expression aa2)
- : f(ff),a0(aa0),a1(aa1),a2(aa2) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f(s, GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)),GetAny<A2>((*a2)(s)) ) );}
- virtual size_t nbitem() const {return a2->nbitem(); }
- bool MeshIndependent() const { return true;}
-};
-
-template<class R,class A0,class A1>
- class E_F_F0F0_NC :public E_F0 { public:
- typedef R (*func)( A0 &,const A1 & ) ;
- func f;
- Expression a0,a1;
- E_F_F0F0_NC(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return SetAny<R>( f( GetAny<A0>((*a0)(s)) , GetAny<A1>((*a1)(s)) ) );}
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent() ; } //
-
-};
-
-
-
-
- class E_F_StackF0F0 :public E_F0mps { public:
- typedef AnyType (*func)(Stack,Expression ,Expression ) ;
- func f;
- Expression a0,a1;
- E_F_StackF0F0(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) { }
- AnyType operator()(Stack s) const
- {return (*f)(s, a0 , a1) ;}
-
-};
-
-
-/*
- class E_F_F0F0_<AnyType,AnyType,AnyType> :public E_F0 { public:
- typedef AnyType (*func)(const AnyType &,const AnyType & ) ;
- func f;
- Expression a0,a1;
- E_F_F0F0_(func ff,Expression aa0,Expression aa1)
- : f(ff),a0(aa0),a1(aa1) {}
- AnyType operator()(Stack s) const
- {return f( (*a0)(s) , (*a1)(s) );}
- bool MeshIndependent() const
- {return a0->MeshIndependent() && a1->MeshIndependent() ; } //
-
-};
-*/
-
-class E_F2_func :public E_F2 { public:
- Function2 f;
- AnyType operator()(Stack s,AnyType & a,AnyType & b) const {return f(s,a,b);}
- E_F2_func( Function2 ff) : f(ff) {}
-};
-
-class E_F0_Func1 :public E_F0 { public:
- Function1 f;
- E_F0 *a;
- AnyType operator()(Stack s) const {return f(s,(*a)(s));}
- E_F0_Func1( Function1 f1,E_F0 *aa) : f(f1),a(aa){}
- bool EvaluableWithOutStack() const {return a->EvaluableWithOutStack();} //
- bool MeshIndependent() const {return a->MeshIndependent();} //
- int compare (const E_F0 *t) const {
- int rr;
- const E_F0_Func1* tt=dynamic_cast<const E_F0_Func1 *>(t);
- if (tt && f == tt->f) rr = a->compare(tt->a);
- else rr = E_F0::compare(t);
- if(tt && 0)
- {
- cout << "\n\t\t\t -------- " << (void *) f << " " << (void *) tt->f << " rr=" << a->compare(tt->a) << endl;
- cout << "\t\t\tcmp E_F0_Func1 " << rr <<" << " << *this << " cmp " << *t << " " << tt << ">>\n";
- }
- return rr;
- } // to give a order in instuction
- // int Optimize(deque<pair<Expression,int> > &l,MapOfE_F0 & m, size_t & n) const; // build optimisation
-
- virtual ostream & dump(ostream &f) const { f << "E_F0_Func1 f= " << f << " a= "<< *a << ' ' ;return f; }
-
-};
-class E_F0_Func2 :public E_F0 { public:
- Function2 f;
- E_F0 *a,*b;
- AnyType operator()(Stack s) const {return f(s,(*a)(s),(*b)(s));}
- E_F0_Func2( Function2 f1,E_F0 *aa,E_F0 *bb) : f(f1),a(aa),b(bb){}
- bool EvaluableWithOutStack() const
- {return a->EvaluableWithOutStack() &&b->EvaluableWithOutStack();} //
- bool MeshIndependent() const {return a->MeshIndependent() && b->MeshIndependent();} //
-
-};
-
-
-
-// the variable offset / stack (local variable)
-template<class R> class Value1:public E_F0
- {
- size_t offset;
- public:
- AnyType operator()(Stack s) const { return SetAny<R*>(static_cast<R *>(static_cast<void *>( static_cast<char *>(s)+offset)));}
- Value1(size_t o):offset(o) {}
-};
-
-// the variable globale
-template<class R> class GValue:public E_F0
- {
- mutable R v;
- public:
- AnyType operator()(Stack ) const { return SetAny<R*>(static_cast<R *>(static_cast<void *>(&v)));}
- GValue(R o):v(o) {}
- bool EvaluableWithOutStack() const {return true;} //
-
-};
-
-// a constante value
-template<class R> int ccompare(const R & a,const R& b){ return a==b ? 0 :( a<b ? -1 : +1);}
-template<class R> int ccompare(const complex<R> & a,const complex<R>& b){
- int c=ccompare(a.real(),b.real());
- return c==0 ? ccompare(a.imag(),b.imag()): c ;}
-
-template<class R> class EConstant:public E_F0
- {
- const R v;
- public:
- AnyType operator()(Stack ) const { /*cout << " ()" << v << endl*/;return SetAny<R>(v);}
- EConstant(const R & o):v(o) { /*cout << "New constant " << o << endl;*/}
- bool EvaluableWithOutStack() const {return true;} //
- operator aType () const { return atype<R>();}
- int compare (const E_F0 *t) const {
- int rr;
- const EConstant * tt=dynamic_cast<const EConstant *>(t);
- if (tt) rr = ccompare(v,tt->v);
- else rr = E_F0::compare(t);
- return rr;
- }
- ostream & dump(ostream &f) const { f << " ((" <<typeid(R).name() << ") " << v << ") " ;return f;}
-};
-
-
-
-
-
-// the variable offset / stack (local variable)
-
- class LocalVariable:public E_F0
- {
- size_t offset;
- aType t; // type of the variable just for check
- public:
- AnyType operator()(Stack s) const {
- SHOWVERB( cout << "\n\tget var " << offset << " " << t->name() << endl);
-// return PtrtoAny(static_cast<void *>(static_cast<char *>(s)+offset),t);}
- return PtrtoAny(Stack_offset<void>(s,offset),t);}
-
- LocalVariable(size_t o,aType tt):offset(o),t(tt) {throwassert(tt);
- SHOWVERB(cout << "\n--------new var " << offset << " " << t->name() << endl);
- }
-};
-
-
-class LocalVariableFES : public LocalVariable { public:
- size_t data;
- LocalVariableFES(size_t o,aType tt,const size_t & d)
- : LocalVariable(o,tt),data(d) {}
- size_t nbitem() const { return data;}
-};
-
-template <class U>
-class LocalVariablePlus : public LocalVariable { public:
- U data;
- LocalVariablePlus(size_t o,aType tt,const U & d)
- : LocalVariable(o,tt),data(d) {}
-};
-
-// global variable bof bof
-template<class T> class PValue:public E_F0
- {
- T * p;
- public:
- AnyType operator()(Stack ) const { return p;}
- PValue(T * pp):p(pp) {}
-};
-template<class R> class PPValue:public E_F0
- {
- R ** p;
- public:
- AnyType operator()(Stack ) const { return SetAny<R*>(*p);}
- PPValue(R ** pp):p(pp) {}
-};
-
-
-template<class R>
-Type_Expr CPValue(R & v)
- {
- throwassert(map_type[typeid(R*).name()]);
- return make_pair(map_type[typeid(R*).name()],new PValue<R>(&v));
- }
-template<class R>
-Type_Expr CPPValue(R *& v)
- {
- throwassert(map_type[typeid(R*).name()]);
- return make_pair(map_type[typeid(R*).name()],new PPValue<R>(&v));
- }
-
-template<class R >
-Type_Expr CConstant(const R & v)
- {
- throwassert(map_type[typeid(R).name()]);
- return make_pair(map_type[typeid(R).name()],new EConstant<R>(v));
- }
-
-
-class CC_F0 {
- Expression f;
- aType r;
-public:
- void operator=(const C_F0& c) { f=c.f;r=c.r;;}
- void operator=(const AC_F0& a) ; //{ f=new E_Array(a); f= atype<E_Array>();};
- void operator=(long ) {f=0;r=0;}
- void operator=(const CListOfInst& c);//{ C_FO cc=c;f=cc.f;r=cc.r}
- operator C_F0 () const {return C_F0(f,r);}
- bool Empty() const {return !f || f->Empty();}
- aType left() const {return r;}
- // operator const C_F0 &() const {return *this;}
-};
-
-
-class ListOfInst : public E_F0mps {
- int n;
- Expression * list;
- int * linenumber;
- const int nx;
- public:
- ListOfInst():n(0),list(0),linenumber(0),nx(10){}
- ListOfInst(int nn):n(0),list(0),linenumber(0),nx(nn?nn:10){}
- void Add(const C_F0 & ins);
- AnyType operator()(Stack s) const;
- operator aType () const { return n ? (aType) * (list[n-1]) : atype<void>();}
-
- Expression &operator[](int i){return list[i];}
- bool empty() const {return n==0;}
- int size() const {return n;}
- Expression * ptr() const {return list;}
- int * nlines() const {return linenumber;}
- // void destroy() { if (list) delete [] list; list=0;}
- ~ListOfInst(){ cout << " ----- ~ListOfInst " << endl;
- if(list) delete [] list;list=0;if(linenumber) delete[] linenumber; linenumber=0;}
-};
-
-class CListOfInst { private:
- ListOfInst * f;
- const basicForEachType *r;
- public:
- void operator=(const CC_F0 &a){
- f=new ListOfInst();
- if( !a.Empty() ) {
- f->Add(a);
- r=a.left(); }}
- CListOfInst & operator+=(const CC_F0 & a);//{ if( !a.Empty()){ f->Add(a);r=a.left();};return *this;}
- operator C_F0 () const { return C_F0(f,r);}
- void eval(Stack s) {(*f)(s);}
- int size() const {return f->size();}
- Expression * ptr() const {return f->ptr();}
- int * nlines() const { return f->nlines();}
-};
-
-
-AnyType FWhile(Stack ,E_F0 * test,E_F0 * ins);
-AnyType FFor(Stack s ,E_F0 * i0,E_F0 * i1,E_F0 * i2,E_F0 * ins);
-AnyType FIf(Stack s ,E_F0 * test,E_F0 * i1,E_F0 * i2,E_F0 * notuse);
-AnyType TTry(Stack s ,E_F0 * i0,E_F0 * i1,E_F0 * i2,E_F0 * notuse);
-
-
-
-extern TableOfIdentifier Global;
-void ShowType(ostream & );
-
-template<class T>
-inline C_F0 to(const C_F0 & a) { return map_type[typeid(T).name()]->CastTo(a);}
-
-
-/*
-inline C_F0 toBool(const C_F0 & a) {return ATYPE(bool)->CastTo(a);}
-inline C_F0 toInt(const C_F0 & a) {return ATYPE(int)->CastTo(a);}
-inline C_F0 toLong(const C_F0 & a) {return ATYPE(long)->CastTo(a);}
-inline C_F0 toDouble(const C_F0 & a) {return ATYPE(double)->CastTo(a);}
-inline C_F0 toComplex(const C_F0 & a) {return ATYPE(Complex)->CastTo(a);}
-*/
-inline C_F0 While(C_F0 test,C_F0 ins) {return C_F0(new E_F0_CFunc2(FWhile,to<bool>(test),ins),0);}
-inline C_F0 For(C_F0 i0,C_F0 i1,C_F0 i2,C_F0 ins) {return C_F0(new E_F0_CFunc4(FFor,i0,to<bool>(i1),i2,ins),0);}
-inline C_F0 Try(C_F0 i0,C_F0 i1,C_F0 i2) {return C_F0(new E_F0_CFunc4(TTry,i0,i1,i2,0),0);}
-inline C_F0 FIf(C_F0 i0,C_F0 i1,C_F0 i2) {return C_F0(new E_F0_CFunc4(FIf,to<bool>(i0),i1,i2,0),0);}
-inline C_F0 FIf(C_F0 i0,C_F0 i1) {return C_F0(new E_F0_CFunc4(FIf,to<bool>(i0),i1,0,0),0);}
-//inline C_F0 C_F0::PtrValue() const{
-// if (!(r && r->un_ptr)) { cerr << "PtrValue: Not a Left value " << *r << endl;CompileError();}
-// return C_F0(new E_F0_Func1(r->un_ptr->f,f),r->un_ptr->r);}
-
-
-
-class basicAC_F0 {
-// version de base d'un tableau d'un parametres
-// pour les operateurs unaire, binaire, ,
-// pas d'allocation
- friend class E_Array; // for mapping fonction
- protected:
- typedef const C_F0 const_C_F0;
- int nb;
- C_F0 *a;
- public:
- ...
[truncated message content] |
|
From: <fab...@us...> - 2007-03-02 15:57:46
|
Revision: 113
http://fsem.svn.sourceforge.net/fsem/?rev=113&view=rev
Author: fabiandortu
Date: 2007-03-02 07:57:43 -0800 (Fri, 02 Mar 2007)
Log Message:
-----------
Added example in example-fundation to deal with Schwartz decomposition.
This turned-out to be useless to solve our problem.
The problem was: P1 elements give a completely wrong solution when
the mesh is strongly anisotropic (at a junction for example). When
using P0 elements, the solution is correct although it looks noisy.
Increasing the weight on the generation refinement helps to have
a smooth solution.
Modified Paths:
--------------
fsem/models/fsem_Mod_ComputeSemi.edp
Added Paths:
-----------
fsem/examples-fondation/schwartz-decomposition/
fsem/examples-fondation/schwartz-decomposition/README
fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat.edp
fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat_CI.edp
fsem/examples-fondation/schwartz-decomposition/schwarz_varf_2mat.edp
Added: fsem/examples-fondation/schwartz-decomposition/README
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/README (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/README 2007-03-02 15:57:43 UTC (rev 113)
@@ -0,0 +1,9 @@
+The purpose of the edp file in this directory is
+to find a way to avoid the solution artefact when the
+mesh is very anisotropic.
+
+We tried to decompose the domain using Schwartz decomposition. This does NOT work.
+
+Actually using P0 elements instead of P1 WORKS!!!!!
+Note that in order to refine the mesh, a P1 variable has to be given to the adaptmesh function.
+
Added: fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat.edp 2007-03-02 15:57:43 UTC (rev 113)
@@ -0,0 +1,57 @@
+int inside = 2; // inside boundary
+int outside = 1; // outside boundary
+border a(t=1,2){x=t;y=0;label=outside;};
+border b(t=0,1){x=2;y=t;label=outside;};
+border c(t=2,0){x=t ;y=1;label=outside;};
+border d(t=1,0){x = 1-t; y = t;label=inside;};
+border e(t=0, pi/2){ x= cos(t); y = sin(t);label=inside;};
+border e1(t=pi/2, 2*pi){ x= cos(t); y = sin(t);label=outside;};
+int n=4;
+
+mesh rectTh = buildmesh( a(5*n) + b(5*n) + c(10*n) + d(5*n));
+mesh circleTh = buildmesh( e(5*n) + e1(25*n) );
+mesh GloMesh = rectTh;
+
+plot(rectTh, circleTh, wait=1); // to see the 2 meshes
+
+
+//The space and problem definition is :
+fespace GloVhP1(GloMesh, P1);
+GloVhP1 U=0,V, uPrev;
+
+// edp definition
+varf Ka(U,V) = int2d(GloMesh)( dx(U)*dx(V)+dy(U)*dy(V) )
+ + on(inside,U = uPrev) + on(outside,U= 0 ) ;
+varf la(U,V) = int2d(GloMesh)( -V)
+ + on(inside,U = uPrev) + on(outside,U= 0 ) ;
+
+matrix A;
+GloVhP1 Fa;
+
+macro AssembleProblem()
+ A=Ka(GloVhP1,GloVhP1);
+ Fa = 0; /* reallocate Fa on current mesh */
+ Fa[] = la(0,GloVhP1);
+ U = 0; /* reallocate U on current mesh */
+ U[]=A^-1*Fa[];
+// EOM
+
+//The calculation loop:
+int i=0;
+for ( i=0 ;i< 10; i++)
+{
+ // Solve on rectTh
+ uPrev = U;
+ GloMesh = rectTh;
+ AssembleProblem;
+
+ // Solve on circleTh
+ uPrev = U;
+ GloMesh = circleTh;
+ AssembleProblem;
+
+ plot(U,uPrev,wait=true);
+
+
+};
+
Added: fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat_CI.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat_CI.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/schwarz_varf_1mat_CI.edp 2007-03-02 15:57:43 UTC (rev 113)
@@ -0,0 +1,231 @@
+// Schartz decomposition example on highy anisotropic mesh
+
+int inside = 2; // inside boundary
+int outside = 1; // outside boundary
+int junction =3;
+int back = 4;
+/* TOTAL domain top substrate
+ *
+ * 0 R 0 R 0 R
+ * 0 |-----------| 0 |----c-----|
+ * | | d2 b2
+ * -Xj |...........| |..........|
+ * | | d1 b1
+ * -Xj-dx1 |___________| | | -Xj-dx1 _____g_____
+ * | | | | | |
+ * -Xj-dx2 |___________| -Xj-dx2 |____a_____| | |
+ * | | h f
+ * | | | |
+ * -T |-----------| -T |----e----|
+ *
+ */
+
+real Err;
+real scaling = 10;
+
+real Xj = 10.0; // m
+Xj = Xj/scaling;
+real dx1 = 2.0;
+dx1 = dx1/scaling; // m
+real dx2 = 4.0;
+dx2 = dx2/scaling; // m
+
+real Ychar = 1.0 / 1000.0;
+
+real R = 40.0; //m
+real T = 40.0; //m
+real rad = 7.0;
+
+// top layer (very thin, 100 nm = 1e-7 m)
+border a(t=0,R){x=t;y=-Xj-dx2;label=inside;};
+border b1(t=-Xj-dx2,-Xj){x=R;y=t;label=outside;};
+border b2(t=-Xj,0){x=R;y=t;label=outside;};
+border c(t=R,0){x=t ;y=0;label=outside;};
+border d2(t=0,-Xj){x = 0; y = t;label=outside;};
+border d1(t=-Xj,-Xj-dx2){x = 0; y = t;label=outside;};
+border junc(t=0,R){x = t; y = -Xj;label=junction;};
+
+// bottom layer (very thick, 600 um = 6e-4 m)
+border e(t=0, R){ x= t; y = -T;label=back;};
+border f(t=-T, -Xj-dx1){ x= R; y = t;label=outside;};
+border g(t=R, 0){ x= t; y = -Xj-dx1;label=inside;};
+border h(t=-Xj-dx1, -T){ x= 0; y = t;label=outside;};
+
+// Single mesh (needed for comparison)
+border aa(t=0,R){x=t;y=-T;label=back;};
+border bb1(t=-T,-Xj){x=R;y=t;label=outside;};
+border bb2(t=-Xj,0){x=R;y=t;label=outside;};
+border cc(t=R,0){x=t ;y=0;label=outside;};
+border dd2(t=0,-Xj){x = 0; y = t;label=outside;};
+border dd1(t=-Xj,-T){x = 0; y = t;label=outside;};
+
+int n=4;
+mesh topTh = buildmesh( a(5*n) + b1(5*n) + b2(5*n) + c(5*n) + d2(5*n) + d1(5*n) + junc(5*n));
+mesh botTh = buildmesh( e(5*n) + f(5*n) + g(5*n) + h(5*n));
+mesh AllTh1 = buildmesh( aa(5*n) + bb1(5*n) + bb2(5*n) + cc(5*n) + dd2(5*n) + dd1(5*n)+ junc(5*n));
+mesh AllTh2 = buildmesh( aa(5*n) + bb1(5*n) + bb2(5*n) + cc(5*n) + dd2(5*n) + dd1(5*n)+ junc(5*n));
+
+mesh GloMesh = topTh;
+plot(topTh, botTh, wait=1); // to see the 2 meshes
+plot(AllTh2, wait=1);
+
+//The space and problem definition is :
+fespace GloVhP0(GloMesh, P0); // used for resolution
+fespace GloVhP1(GloMesh, P1); // used for adaptation
+GloVhP0 U=0,V, uPrev;
+GloVhP1 Up1;
+int i=0;
+GloVhP1 sourceAdapt; // Generation rate
+GloVhP1 TauAdapt; // Recombination lifetime
+GloVhP1 AdaptFunc;
+
+GloVhP0 source; // Generation rate
+GloVhP0 Tau; // Recombination lifetime
+
+// generation and recombination lifetime profile
+macro SourceProfile()
+ 10*(exp(y/T) * exp(-(x/rad)^2))
+// EOM
+
+macro TauProfile()
+ (exp(-((y+Xj)/(Ychar))^2) + 1)
+// EOM
+
+// Refines single mesh on generation only
+for ( i=0 ;i< 11; i++) {
+ // refines All
+ GloMesh = AllTh1;
+ sourceAdapt = SourceProfile;
+ AdaptFunc = sourceAdapt;
+ Err = (0.001/10 - 0.01)*i/10 + 0.01;
+ AllTh1 = adaptmesh(AllTh1, AdaptFunc, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(AdaptFunc, wait=0);
+ plot(AllTh1, wait=0);
+}
+
+
+// Refines single mesh on generation and Tau
+for ( i=0 ;i< 11; i++) {
+ // refines All
+ GloMesh = AllTh2;
+ sourceAdapt = SourceProfile;
+ TauAdapt = TauProfile;
+ AdaptFunc = sourceAdapt + TauAdapt;
+ Err = (0.001/10 - 0.01)*i/10 + 0.01;
+ AllTh2 = adaptmesh(AllTh2, AdaptFunc, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(AdaptFunc, wait=0);
+ plot(AllTh2, wait=0);
+}
+
+
+// Refines dual mesh
+for ( i=0 ;i< 11; i++) {
+ Err = (0.001/10 - 0.01)*i/10 + 0.01;
+
+ // refines top
+ GloMesh = topTh;
+ sourceAdapt = SourceProfile;
+ TauAdapt = TauProfile;
+ AdaptFunc = sourceAdapt + TauAdapt;
+ //AdaptFunc = Tau;
+ topTh = adaptmesh(topTh, AdaptFunc, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(AdaptFunc, wait=0);
+
+ // refines bottom
+ GloMesh = botTh;
+ sourceAdapt = SourceProfile;
+ TauAdapt = TauProfile;
+ AdaptFunc = sourceAdapt;
+ //AdaptFunc = source + Tau;
+ botTh = adaptmesh(botTh, AdaptFunc, err=Err, nbsmooth=5, nbvx=100000, iso=false);
+ plot(AdaptFunc, wait=0);
+
+ plot(topTh, botTh, wait=0);
+
+}
+
+// Classical edp definition
+varf Kaa(U,V) = int2d(GloMesh)( dx(U)*dx(V)+dy(U)*dy(V) )
+ +int2d(GloMesh) ( U * V / Tau);// + on(back,U= 0 ) ;
+varf laa(U,V) = int2d(GloMesh)( - source * V);
+
+
+// Schwartz edp definition
+varf Ka(U,V) = int2d(GloMesh)( dx(U)*dx(V)+dy(U)*dy(V) )
+ +int2d(GloMesh) ( U * V / Tau)
+ + on(inside,U = uPrev); // + on(back,U= 0 ) ;
+varf la(U,V) = int2d(GloMesh)( - source * V)
+ + on(inside,U = uPrev); // + on(back,U= 0 ) ;
+
+
+
+matrix A;
+GloVhP0 Fa;
+
+macro AssembleProblem()
+ source = SourceProfile;
+ Tau = 1;
+ A=Ka(GloVhP0,GloVhP0);
+ Fa = 0; /* reallocate Fa on current mesh */
+ Fa[] = la(0,GloVhP0);
+ U = 0; /* reallocate U on current mesh */
+ U[]=A^-1*Fa[];
+// EOM
+
+// Solve on AllTh1
+GloMesh = AllTh1;
+source = SourceProfile;
+Tau = 1;
+A=Kaa(GloVhP0,GloVhP0);
+Fa = 0; /* reallocate Fa on current mesh */
+Fa[] = laa(0,GloVhP0);
+U = 0; /* reallocate U on current mesh */
+U[]=A^-1*Fa[];
+cout << "Solution on normal mesh:" << endl;
+x=0; y=0;
+cout << "U(0,0) (NON schwartz AllTh1): " << U << endl;
+plot(U, wait=true);
+
+
+
+
+// Solve on AllTh2
+GloMesh = AllTh2;
+source = SourceProfile;
+Tau = 1;
+A=Kaa(GloVhP0,GloVhP0);
+Fa = 0; /* reallocate Fa on current mesh */
+Fa[] = laa(0,GloVhP0);
+U = 0; /* reallocate U on current mesh */
+U[]=A^-1*Fa[];
+cout << "Solution on normal mesh:" << endl;
+x=0; y=0;
+cout << "U(0,0) (NON schwartz AllTh2): " << U << endl;
+plot(U, wait=true);
+
+Up1 = U;
+plot(Up1, wait=true);
+
+
+cout << "Solution with Schwartz decomposition:"<< endl;
+// Solve Schwartz
+U=0; // start from nul initial solution
+uPrev=0;
+for ( i=0 ;i< 10; i++)
+{
+ // Solve on topTh
+ uPrev = U;
+ GloMesh = topTh;
+ AssembleProblem;
+
+ // Solve on botTh
+ uPrev = U;
+ GloMesh = botTh;
+ AssembleProblem;
+
+ plot(U,uPrev,wait=true);
+
+
+};
+x=0; y=0;
+cout << "U(0,0) (schwartz): " << uPrev << endl;
Added: fsem/examples-fondation/schwartz-decomposition/schwarz_varf_2mat.edp
===================================================================
--- fsem/examples-fondation/schwartz-decomposition/schwarz_varf_2mat.edp (rev 0)
+++ fsem/examples-fondation/schwartz-decomposition/schwarz_varf_2mat.edp 2007-03-02 15:57:43 UTC (rev 113)
@@ -0,0 +1,52 @@
+int inside = 2; // inside boundary
+int outside = 1; // outside boundary
+border a(t=1,2){x=t;y=0;label=outside;};
+border b(t=0,1){x=2;y=t;label=outside;};
+border c(t=2,0){x=t ;y=1;label=outside;};
+border d(t=1,0){x = 1-t; y = t;label=inside;};
+border e(t=0, pi/2){ x= cos(t); y = sin(t);label=inside;};
+border e1(t=pi/2, 2*pi){ x= cos(t); y = sin(t);label=outside;};
+int n=4;
+mesh th = buildmesh( a(5*n) + b(5*n) + c(10*n) + d(5*n));
+mesh TH = buildmesh( e(5*n) + e1(25*n) );
+plot(th,TH,wait=1); // to see the 2 meshes
+
+
+//The space and problem definition is :
+fespace vh(th,P1);
+fespace VH(TH,P1);
+vh u=0,v; VH U,V;
+int i=0;
+
+// Prob A
+varf Ka(U,V) = int2d(TH)( dx(U)*dx(V)+dy(U)*dy(V) )
+ + on(inside,U = u) + on(outside,U= 0 ) ;
+varf la(U,V) = int2d(TH)( -V)
+ + on(inside,U = u) + on(outside,U= 0 ) ;
+
+// Prob B
+varf Kb(u,v) = int2d(th)( dx(u)*dx(v)+dy(u)*dy(v) )
+ + on(inside ,u = U) + on(outside,u = 0 ) ;
+varf lb(u,v) = int2d(th)( -v)
+ + on(inside ,u = U) + on(outside,u = 0 ) ;
+
+matrix A;
+matrix B;
+VH Fa;
+vh Fb;
+
+//The calculation loop:
+for ( i=0 ;i< 10; i++)
+{
+ A=Ka(VH,VH);
+ Fa[] = la(0,VH);
+ U[]=A^-1*Fa[];
+
+ B=Kb(vh,vh);
+ Fb[] = lb(0,vh);
+ u[]=B^-1*Fb[];
+
+
+plot(U,u,wait=true);
+};
+
Modified: fsem/models/fsem_Mod_ComputeSemi.edp
===================================================================
--- fsem/models/fsem_Mod_ComputeSemi.edp 2007-02-28 12:14:49 UTC (rev 112)
+++ fsem/models/fsem_Mod_ComputeSemi.edp 2007-03-02 15:57:43 UTC (rev 113)
@@ -47,9 +47,12 @@
& \texttt{GloVarSemiELE}, \texttt{GloVarSemiHOL}*/
if(fsemVERBOSITY>3) {cout << endl << tab4 << "ComputeNP" << endl;}
+ ModNetDop(); // compute net doping
+ ShowMinMax(tab5 + " GloVarSemiDOPNET", GloVarSemiDOPNET[], ConvM2C^(-3), "cm-3");
+ ModTotDop(); // compute total doping
+ ShowMinMax(tab5 + " GloVarSemiDOPTOT", GloVarSemiDOPTOT[], ConvM2C^(-3), "cm-3");
+
if(ModUsrNP==ModCSTNPDDSG) { // DDSG: compute ELE and HOL in function of RhoN, RhoP and Psi
-
-
real RhoNMin = abs(GloVarSemiDDSGRhoN[].min);
real RhoPMin = abs(GloVarSemiDDSGRhoP[].min);
@@ -60,8 +63,7 @@
// reduces the emergence of negative carriers.
GloVarSemiDDSGRhoN = (GloVarSemiDDSGRhoN<=0)?RhoNMin:GloVarSemiDDSGRhoN;
GloVarSemiDDSGRhoP = (GloVarSemiDDSGRhoP<=0)?RhoPMin:GloVarSemiDDSGRhoP;
-
-
+
if(ModUsrSecFormalism) {
ModDDSGEle2();
ModDDSGHol2();
@@ -76,12 +78,10 @@
endl;
cout <<tab4<< "(Slotboom variables and PHI)" << endl;
-
- ShowMinMax(tab5 + " GloVarSemiDOPNET", GloVarSemiDOPNET[], ConvM2C^(-3), "cm-3");
ShowMinMax(tab5 + " GloVarSemiDDSGRhoN", GloVarSemiDDSGRhoN[], 1, "adim");
ShowMinMax(tab5 + " GloVarSemiDDSGRhoP", GloVarSemiDDSGRhoP[], 1, "adim");
ShowMinMax(tab5 + " GloVarSemiPOT", GloVarSemiPOT[], 1, "V");
- } else {
+ } else { // NOT a DDSG resolution
ShowMinMax(tab5 + " GloVarSemiELE", GloVarSemiELE[], ConvM2C^(-3), "cm-3");
ShowMinMax(tab5 + " GloVarSemiHOL", GloVarSemiHOL[], ConvM2C^(-3), "cm-3");
@@ -107,7 +107,6 @@
ShowMinMax(tab5 + " GloVarSemiELE*", GloVarSemiELE[], ConvM2C^(-3), "cm-3");
ShowMinMax(tab5 + " GloVarSemiHOL*", GloVarSemiHOL[], ConvM2C^(-3), "cm-3");
-
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|