cupcfg
C CUPCFG SOURCE PV 20/03/30 21:17:04 10567 C======================================================================= C Sous-programme cupcfg (COLlaborateur UnPAquettage ConFiGuration) C Lit la configuration dans le buffer et l'integre a la configuration C pConfi si elle existe (pConfi different de 0 ou en alloue une en C copiant la config actuelle si pConfi=0 C======================================================================= integer i integer bufPos integer nNoCo,iNoCo integer lonBuf integer iDiDis,bkidim integer nbpts integer posAv,posAp -INC PPARAM -INC CCOPTIO -INC TMCOLAC -INC SMCOORD segment BUFFER character ffer(lonBuf) endsegment pointeur bu.BUFFER pointeur pConfi.MCOORD C write(ioimp,*) 'Entree dans CUPCFG' C write(ioimp,*)'Pointeur recu',pConfi nNoCo=0 iDiDis=0 C Paquettage de la configration tronquée et reordonnée selon la C liste de noeud listNoe lonBuf=bu.ffer(/2) call mpiupI( nNoCo,1, bu,bufPos) call mpiupI( iDiDis,1, bu,bufPos) bkidim=IDIM IDIM=iDiDis nbpts=nNoCo if(pConfi .eq. 0) then segini pConfi else C Attention, l'objet configuration sera completement ecrase if(pConfi.eq.mcoord) then C Ce n'est pas une bonne idee d'appeler cette fonction avec la C configuration actuelle segdes pConfi endif segact pConfi*mod if(pConfi.xcoor(/1).lt.(nNoCo*(iDiDis+1))) then segadj pConfi endif endif IDIM=bkidim call mpiupR( pConfi.xcoor(1),(iDiDis+1)*nNoCo, bu,bufPos) C Prise en compte des differences de dimensions if(IDIM.ne.iDiDis) then if(IDIM.lt.iDiDis) then C Compression do iNoCo=1,nNoCo posAv=(iDiDis+1)*(iNoCo-1) posAp=( IDIM+1)*(iNoCo-1) do i=1,IDIM pConfi.xcoor(posAp+i)=pConfi.xcoor(posAv+i) enddo pConfi.xcoor(posAp+IDIM+1)=pConfi.xcoor(posAv+iDiDis+1) enddo segadj pConfi else C Dilatation segadj pConfi do iNoCo=nNoCo,1,-1 posAv=(iDiDis+1)*(iNoCo-1) posAp=( IDIM+1)*(iNoCo-1) pConfi.xcoor(posAp+IDIM+1)=pConfi.xcoor(posAv+iDiDis+1) do i=IDIM,iDiDis+1,-1 pConfi.xcoor(posAp+i)=0 enddo do i=iDiDis,1,-1 pConfi.xcoor(posAp+i)=pConfi.xcoor(posAv+i) enddo enddo endif endif segdes pConfi if(pConfi.eq.mcoord) then segact pConfi endif C write(ioimp,*) 'Sortie de CUPCFG' end
© Cast3M 2003 - Tous droits réservés.
Mentions légales