52 MMG5_int k,iel,jel,n,npf,nef,ip,nlay,refdirh,refdirnh,ilist,ilisto,ilistck;
53 MMG5_int vper[3],*perm,*list,*adja,*invperm;
62 ilist = ilisto = ilistck = 0;
71 for(k=1; k<=
mesh->nt; k++)
72 mesh->tria[k].flag = 0;
75 for (k=1; k<=
mesh->nt; k++) {
77 if ( !
MG_EOK(pt) )
continue;
98 for (n=0; n<nlay; n++) {
102 for (k=ilistck+1; k<=ilisto; k++) {
104 adja = &
mesh->adja[3*(iel-1)+1];
106 for (i=0; i<3; i++) {
108 if ( !jel )
continue;
109 pt1 = &
mesh->tria[jel];
113 assert ( ilist <= mesh->nt );
117 for (j=0; j<3; j++) {
130 "\n ## Error: %s: no triangle with reference %d in the mesh.\n"
151 for (k=1; k<=ilist; k++) {
153 pt = &
mesh->tria[iel];
154 adja = &
mesh->adja[3*(iel-1)+1];
156 for (i=0; i<3; i++) {
167 if ( !jel )
continue;
168 pt1 = &
mesh->tria[jel];
172 else if ( !jel || !
MG_GET(
mesh->tria[jel].flag,0) ) nef++;
177 if ( !LS_mesh(lsst,npf,nef,ilist,0) ) {
178 fprintf(stdout,
" ## Problem in function LS_mesh. Exiting.\n");
185 LS_setPar(lsst, (
mesh->info.imprim > 0),0);
189 for (k=1; k<=
mesh->np; k++) {
193 p0 = &
mesh->point[k];
196 if ( !LS_addVer(lsst,ip,p0->
c,p0->
ref) ) {
197 fprintf(stdout,
" ## Problem in fn LS_addVer. Exiting.\n");
205 for (k=1; k<=ilist; k++) {
207 pt = &
mesh->tria[iel];
210 vper[i] = perm[pt->
v[i]];
212 if (!LS_addTri(lsst,(
int)k,(
int*)vper,0) ) {
213 fprintf(stdout,
" ## Problem in fn LS_addTet. Exiting.\n");
222 for (k=1; k<=ilist; k++) {
224 pt = &
mesh->tria[iel];
225 adja = &
mesh->adja[3*(iel-1)+1];
227 for (i=0; i<3; i++) {
239 if ( !LS_addEdg(lsst,(
int)nef,(
int*)vper,refdirnh) ) {
240 fprintf(stdout,
" ## Problem in fn LS_addEdg. Exiting.\n");
247 else if ( !jel || !
MG_GET(
mesh->tria[jel].flag,0) ) {
252 if ( !LS_addEdg(lsst,(
int)nef,(
int*)vper,refdirh) ) {
253 fprintf(stdout,
" ## Problem in fn LS_addEdg. Exiting.\n");
262 if ( (abs(
mesh->info.imprim) > 4 ||
mesh->info.ddebug) && (ilist+npf+nef > 0) )
263 printf(
"Number of packed triangles %" MMG5_PRId
", points %" MMG5_PRId
", edges %" MMG5_PRId
"\n",ilist,npf,nef);
272 if ( !LS_setBC(lsst,Dirichlet,refdirnh,
'f',LS_edg,NULL) ) {
273 fprintf(stdout,
" ## Problem in fn LS_set BC. Exiting.\n");
279 if ( !LS_setBC(lsst,Dirichlet,refdirh,
'v',LS_edg,u) ) {
280 fprintf(stdout,
" ## Problem in fn LS_set BC. Exiting.\n");
288 fprintf(stdout,
" ## Problem in fn LS_setLame. Exiting.\n");
295 if ( !LS_newSol(lsst) ) {
296 fprintf(stdout,
" ## Problem in fn LS_CreaSol. Exiting.\n");
302 for(k=1; k<=
mesh->np; k++) {
305 if ( !LS_addSol(lsst,ip,&disp->
m[2*k]) ) {
306 fprintf(stdout,
" ## Problem in fn LS_addSol. Exiting.\n");