Changeset 5489
- Timestamp:
- 08/23/10 07:54:04 (15 years ago)
- Location:
- issm/trunk/src/c/objects/Bamg
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Bamg/GeometricalEdge.cpp
r5447 r5489 31 31 ISSMASSERT(theta>-1e-12 && theta<1+1e-12); 32 32 33 if (TgA()) 34 if (TgB()) // interpolation d'hermite35 {cb = theta*theta*(3-2*theta);36 37 38 33 if (TgA()){ 34 if (TgB()){ //Hermite interpolation 35 cb = theta*theta*(3-2*theta); 36 ca = 1-cb; 37 cta = (1-theta)*(1-theta)*theta; 38 ctb = (theta-1)*theta*theta ; 39 39 } 40 else { // 1-t*t, t-t*t, t*t 41 double t = theta; 42 cb = t*t; 43 ca = 1-cb; 44 cta= t-cb; 45 ctb=0; 46 } 47 else 48 if (TgB()){ 49 double t = 1-theta; 50 ca = t*t; 51 cb = 1-ca; 52 ctb= -t+ca; 53 cta=0; 54 } 55 else { 56 ca =(1-theta),cb = theta,cta=ctb=0; // lagrange P1 57 } 58 return A*ca + B*cb + tg[0]* cta + tg[1] * ctb; 40 else { 41 double t = theta; 42 cb = t*t; 43 ca = 1-cb; 44 cta= t-cb; 45 ctb=0; 46 } 47 } 48 else{ 49 if (TgB()){ 50 double t = 1-theta; 51 ca = t*t; 52 cb = 1-ca; 53 ctb= -t+ca; 54 cta=0; 55 } 56 else { // lagrange P1 57 ca =(1-theta); 58 cb = theta; 59 cta=ctb=0; 60 } 61 } 62 return A*ca + B*cb + tg[0]*cta + tg[1]*ctb; 59 63 } 60 64 /*}}}1*/ -
issm/trunk/src/c/objects/Bamg/Mesh.cpp
r5461 r5489 5047 5047 x += xstep; 5048 5048 B = e->F(k ? x : 1-x); 5049 MBs= background ? BTh.MetricAt(B) : Metric(1-x, MA, x,MB);5049 MBs= background ? BTh.MetricAt(B) : Metric(1-x,MA,x,MB); 5050 5050 AB = A-B; 5051 lSubEdge[kk]= (ledge +=(MAs(AB)+MBs(AB))/2);5051 lSubEdge[kk]= (ledge+=(MAs(AB)+MBs(AB))/2); 5052 5052 } 5053 5053 } 5054 5054 5055 double lcurveb = lcurve+ ledge;5056 5057 / /Now, create corresponding points5058 while (lcurve<=s && s <= lcurveb && nbv <nbvend){5055 double lcurveb = lcurve+ledge; 5056 5057 /*Now, create corresponding points*/ 5058 while (lcurve<=s && s<=lcurveb && nbv<nbvend){ 5059 5059 5060 5060 double ss = s-lcurve; 5061 5061 5062 5062 /*Find the SubEdge containing ss using Dichotomy*/ 5063 5064 5063 int kk0=-1,kk1=NbSubEdge-1,kkk; 5065 5064 double ll0=0,ll1=ledge,llk; -
issm/trunk/src/c/objects/Bamg/Metric.cpp
r5400 r5489 51 51 /*Original code from Frederic Hecht <hecht@ann.jussieu.fr> (BAMG v1.01, Metric.cpp/EigenMetric)*/ 52 52 53 /*Compute metric (linear combination of ma and mb)*/ 53 54 Metric mab(a*ma.a11+b*mb.a11,a*ma.a21+b*mb.a21,a*ma.a22+b*mb.a22); 55 56 /*Get Eigen values and vectors*/ 54 57 EigenMetric vab(mab); 55 56 58 R2 v1(vab.v.x,vab.v.y); 57 59 R2 v2(-v1.y,v1.x); 58 60 59 60 double h1 = a / ma(v1) + b /mb(v1);61 double h2 = a / ma(v2) + b /mb(v2);62 vab.lambda1 = 1 /(h1*h1);63 vab.lambda2 = 1 /(h2*h2);64 *this =vab;61 /*Modify eigen values (a+b=1)*/ 62 double h1 = a/ma(v1) + b/mb(v1); 63 double h2 = a/ma(v2) + b/mb(v2); 64 vab.lambda1 = 1/(h1*h1); 65 vab.lambda2 = 1/(h2*h2); 66 *this=vab; 65 67 } 66 68 /*}}}1*/ -
issm/trunk/src/c/objects/Bamg/Metric.h
r5400 r5489 46 46 Metric operator/(double c) const {double c2=1/(c*c);return Metric(a11*c2,a21*c2,a22*c2);} 47 47 operator D2xD2(){ return D2xD2(a11,a21,a21,a22);} 48 double operator()(R2 x) const { return sqrt(x.x*x.x*a11+2*x.x*x.y*a21+x.y*x.y*a22);}; 48 double operator()(R2 x) const { return sqrt(x.x*x.x*a11+2*x.x*x.y*a21+x.y*x.y*a22);}; // length of x in metric sqrt(<Mx,x>) 49 49 double operator()(R2 x,R2 y) const { return x.x*y.x*a11+(x.x*x.y+x.y*y.x)*a21+x.y*y.y*a22;}; 50 50
Note:
See TracChangeset
for help on using the changeset viewer.