58 double Jacsigma[3][2],Jactmp[3][2],m[6],mo[6],density,to[3],no[3],ll;
59 double dens[3],*n1,*n2,ps1,ps2,intpt[2],ux,uy,uz;
60 int8_t i0,i1,i2,j,nullDens;
61 static int8_t mmgErr=0;
71 Jacsigma[0][0] = 0.75*(pb->
b[7][0] - pb->
b[0][0]) + 0.75*(pb->
b[1][0] - pb->
b[8][0]) + 1.5*(pb->
b[8][0] - pb->
b[7][0]);
72 Jacsigma[1][0] = 0.75*(pb->
b[7][1] - pb->
b[0][1]) + 0.75*(pb->
b[1][1] - pb->
b[8][1]) + 1.5*(pb->
b[8][1] - pb->
b[7][1]);
73 Jacsigma[2][0] = 0.75*(pb->
b[7][2] - pb->
b[0][2]) + 0.75*(pb->
b[1][2] - pb->
b[8][2]) + 1.5*(pb->
b[8][2] - pb->
b[7][2]);
75 Jacsigma[0][1] = 0.75*(pb->
b[6][0] - pb->
b[0][0]) + 0.75*(pb->
b[3][0] - pb->
b[8][0]) + 1.5*(pb->
b[9][0] - pb->
b[7][0]);
76 Jacsigma[1][1] = 0.75*(pb->
b[6][1] - pb->
b[0][1]) + 0.75*(pb->
b[3][1] - pb->
b[8][1]) + 1.5*(pb->
b[9][1] - pb->
b[7][1]);
77 Jacsigma[2][1] = 0.75*(pb->
b[6][2] - pb->
b[0][2]) + 0.75*(pb->
b[3][2] - pb->
b[8][2]) + 1.5*(pb->
b[9][2] - pb->
b[7][2]);
80 Jacsigma[0][0] = 0.75*(pb->
b[1][0] - pb->
b[8][0]) + 0.75*(pb->
b[4][0] - pb->
b[5][0]) + 1.5*(pb->
b[3][0] - pb->
b[9][0]);
81 Jacsigma[1][0] = 0.75*(pb->
b[1][1] - pb->
b[8][1]) + 0.75*(pb->
b[4][1] - pb->
b[5][1]) + 1.5*(pb->
b[3][1] - pb->
b[9][1]);
82 Jacsigma[2][0] = 0.75*(pb->
b[1][2] - pb->
b[8][2]) + 0.75*(pb->
b[4][2] - pb->
b[5][2]) + 1.5*(pb->
b[3][2] - pb->
b[9][2]);
84 Jacsigma[0][1] = 0.75*(pb->
b[3][0] - pb->
b[8][0]) + 0.75*(pb->
b[2][0] - pb->
b[5][0]) + 1.5*(pb->
b[4][0] - pb->
b[9][0]);
85 Jacsigma[1][1] = 0.75*(pb->
b[3][1] - pb->
b[8][1]) + 0.75*(pb->
b[2][1] - pb->
b[5][1]) + 1.5*(pb->
b[4][1] - pb->
b[9][1]);
86 Jacsigma[2][1] = 0.75*(pb->
b[3][2] - pb->
b[8][2]) + 0.75*(pb->
b[2][2] - pb->
b[5][2]) + 1.5*(pb->
b[4][2] - pb->
b[9][2]);
89 Jacsigma[0][0] = 0.75*(pb->
b[7][0] - pb->
b[0][0]) + 0.75*(pb->
b[4][0] - pb->
b[5][0]) + 1.5*(pb->
b[9][0] - pb->
b[6][0]);
90 Jacsigma[1][0] = 0.75*(pb->
b[7][1] - pb->
b[0][1]) + 0.75*(pb->
b[4][1] - pb->
b[5][1]) + 1.5*(pb->
b[9][1] - pb->
b[6][1]);
91 Jacsigma[2][0] = 0.75*(pb->
b[7][2] - pb->
b[0][2]) + 0.75*(pb->
b[4][2] - pb->
b[5][2]) + 1.5*(pb->
b[9][2] - pb->
b[6][2]);
93 Jacsigma[0][1] = 0.75*(pb->
b[6][0] - pb->
b[0][0]) + 0.75*(pb->
b[2][0] - pb->
b[5][0]) + 1.5*(pb->
b[5][0] - pb->
b[6][0]);
94 Jacsigma[1][1] = 0.75*(pb->
b[6][1] - pb->
b[0][1]) + 0.75*(pb->
b[2][1] - pb->
b[5][1]) + 1.5*(pb->
b[5][1] - pb->
b[6][1]);
95 Jacsigma[2][1] = 0.75*(pb->
b[6][2] - pb->
b[0][2]) + 0.75*(pb->
b[2][2] - pb->
b[5][2]) + 1.5*(pb->
b[5][2] - pb->
b[6][2]);
103 fprintf(stdout,
" ## Warning:%s:%d: unable to move point (interpreg_ani failure).\n",
116 to[0] = p2->
c[0] - p1->
c[0];
117 to[1] = p2->
c[1] - p1->
c[1];
118 to[2] = p2->
c[2] - p1->
c[2];
120 ll = to[0]*to[0] + to[1]*to[1] + to[2]*to[2];
135 ps1 = n1[0]*no[0] + n1[1]*no[1] + n1[2]*no[2];
136 ps2 = n2[0]*no[0] + n2[1]*no[1] + n2[2]*no[2];
137 if ( fabs(ps1) > fabs(ps2) ) {
148 ps1 = n1[0]*no[0] + n1[1]*no[1] + n1[2]*no[2];
149 ps2 = n2[0]*no[0] + n2[1]*no[1] + n2[2]*no[2];
150 if ( fabs(ps1) > fabs(ps2) ) {
160 Jactmp[0][0] = m[0]*Jacsigma[0][0] + m[1]*Jacsigma[1][0] + m[2]*Jacsigma[2][0];
161 Jactmp[1][0] = m[1]*Jacsigma[0][0] + m[3]*Jacsigma[1][0] + m[4]*Jacsigma[2][0];
162 Jactmp[2][0] = m[2]*Jacsigma[0][0] + m[4]*Jacsigma[1][0] + m[5]*Jacsigma[2][0];
164 Jactmp[0][1] = m[0]*Jacsigma[0][1] + m[1]*Jacsigma[1][1] + m[2]*Jacsigma[2][1];
165 Jactmp[1][1] = m[1]*Jacsigma[0][1] + m[3]*Jacsigma[1][1] + m[4]*Jacsigma[2][1];
166 Jactmp[2][1] = m[2]*Jacsigma[0][1] + m[4]*Jacsigma[1][1] + m[5]*Jacsigma[2][1];
168 dens[0] = Jacsigma[0][0]*Jactmp[0][0] + Jacsigma[1][0]*Jactmp[1][0] + Jacsigma[2][0]*Jactmp[2][0];
169 dens[1] = Jacsigma[0][0]*Jactmp[0][1] + Jacsigma[1][0]*Jactmp[1][1] + Jacsigma[2][0]*Jactmp[2][1];
170 dens[2] = Jacsigma[0][1]*Jactmp[0][1] + Jacsigma[1][1]*Jactmp[1][1] + Jacsigma[2][1]*Jactmp[2][1];
172 density = dens[0]*dens[2] - dens[1]*dens[1];
176 fprintf(stderr,
"\n ## Warning: %s: at least 1 negative or null density.\n",
185 density = sqrt(density);
190 ux = 0.5*(p1->
c[0] + p2->
c[0]) - p0->
c[0];
191 uy = 0.5*(p1->
c[1] + p2->
c[1]) - p0->
c[1];
192 uz = 0.5*(p1->
c[2] + p2->
c[2]) - p0->
c[2];
194 intpt[0] = r[0][0]*ux + r[0][1]*uy + r[0][2]*uz;
195 intpt[1] = r[1][0]*ux + r[1][1]*uy + r[1][2]*uz;
205 if ( nullDens==3 )
return 0;
int MMG5_elementWeight(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, MMG5_pPoint p0, MMG5_Bezier *pb, double r[3][3], double gv[2])
int MMG5_interpreg_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt, int8_t i, double s, double mr[6])
int MMG5_intridmet(MMG5_pMesh mesh, MMG5_pSol met, MMG5_int ip1, MMG5_int ip2, double s, double v[3], double mr[6])
#define MG_GEO_OR_NOM(tag)
static const uint8_t MMG5_inxt2[6]
int MMG5_nortri(MMG5_pMesh mesh, MMG5_pTria pt, double *n)
Structure to store vertices of an MMG mesh.
Structure to store triangles of a MMG mesh.