64 int n,nlay,ilist,ilisto,ilistck;
65 MMG5_int k,ip,npf,ntf,iel,jel,*perm,*invperm,*adja,*list,vper[4];
74 u[0] = u[1] = u[2] = 0.0;
83 ilist = ilisto = ilistck = 0;
85 for (k=1; k<=
mesh->ne; k++)
86 mesh->tetra[k].mark = 0;
89 for(k=1; k<=
mesh->ne; k++) {
91 if ( !
MG_EOK(pt) || !pt->
xt )
continue;
92 pxt = &
mesh->xtetra[pt->
xt];
113 "\n ## Error: %s: no triangle with reference %d in the mesh.\n"
121 for(n=0; n<nlay; n++) {
125 for(k=ilistck+1; k<=ilisto; k++) {
127 adja = &
mesh->adja[4*(iel-1)+1];
131 if ( !jel )
continue;
132 pt1 = &
mesh->tetra[jel];
135 assert( ilist <= mesh->ne );
165 for(k=1; k<=ilist; k++) {
167 pt = &
mesh->tetra[iel];
168 adja = &
mesh->adja[4*(iel-1)+1];
169 if (pt->
xt) pxt = &
mesh->xtetra[pt->
xt];
181 if ( !jel )
continue;
182 pt1 = &
mesh->tetra[jel];
186 else if ( !jel || ( !
mesh->tetra[jel].mark ) ) ntf++;
191 if ( !LS_mesh(lsst,npf,0,ntf,ilist) ) {
192 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_mesh. Exiting.\n",
201 LS_setPar(lsst, (
mesh->info.imprim > 0), 0);
205 for(k=1; k<=
mesh->np; k++) {
209 p0 = &
mesh->point[k];
211 if ( !LS_addVer(lsst,ip,p0->
c,p0->
ref) ) {
212 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_addVer. Exiting.\n",
222 for(k=1; k<=ilist; k++) {
224 pt = &
mesh->tetra[iel];
227 vper[i] = perm[pt->
v[i]];
229 if (!LS_addTet(lsst,(
int)k,(
int*)vper,0) ) {
230 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_addTet. Exiting.\n",
241 for(k=1; k<=ilist; k++) {
243 pt = &
mesh->tetra[iel];
244 adja = &
mesh->adja[4*(iel-1)+1];
245 if (pt->
xt) pxt = &
mesh->xtetra[pt->
xt];
258 if ( !LS_addTri(lsst,(
int)ntf,(
int*)vper,refdirnh) ) {
259 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_addTri. Exiting.\n",
268 else if ( !jel || (!
mesh->tetra[jel].mark) ) {
273 if ( !LS_addTri(lsst,(
int)ntf,(
int*)vper,refdirh) ) {
274 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_addTri. Exiting.\n",
285 if ( (abs(
mesh->info.imprim) > 4 ||
mesh->info.ddebug) && (ilist+npf+ntf > 0) )
286 printf(
"Number of packed tetra %d, points %" MMG5_PRId
287 ", triangles %" MMG5_PRId
"\n",ilist,npf,ntf);
290 if ( !LS_setBC(lsst,Dirichlet,refdirnh,
'f',LS_tri,NULL) ) {
291 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_set BC. Exiting.\n",
299 if ( !LS_setBC(lsst,Dirichlet,refdirh,
'v',LS_tri,u) ) {
300 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_set BC. Exiting.\n",
310 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_setLame. Exiting.\n",
319 if ( !LS_newSol(lsst) ) {
320 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_newSol. Exiting.\n",
328 for(k=1; k<=
mesh->np; k++) {
332 if ( !LS_addSol(lsst,ip,&disp->
m[3*k]) ) {
333 fprintf(stderr,
"\n ## Error: %s: problem in fn LS_addSol. Exiting.\n",