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]);
102 if (
mesh->info.ddebug ) {
103 fprintf(stdout,
" ## Warning:%s:%d: unable to move point (interpreg_ani failure).\n",
113 p1 = &
mesh->point[pt->
v[i0]];
114 p2 = &
mesh->point[pt->
v[i1]];
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];
133 n1 = &
mesh->xpoint[p1->
xp].n1[0];
134 n2 = &
mesh->xpoint[p1->
xp].n2[0];
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) ) {
146 n1 = &
mesh->xpoint[p2->
xp].n1[0];
147 n2 = &
mesh->xpoint[p2->
xp].n2[0];
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);
187 p1 = &
mesh->point[pt->
v[i0]];
188 p2 = &
mesh->point[pt->
v[i1]];
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;