C RESMMO SOURCE FANDEUR 14/01/22 21:15:17 7891 SUBROUTINE RESMMO (ICOLAC,ITLACC,IMAX1,IDEB) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) *--------------------------------------------------------------------* * * * Restauration des pointeurs issus de la pile des MODELEs. * * * *--------------------------------------------------------------------* C*********************************************************************** C HISTORIQUE : 06/11/98 : rajout de la restitution de la table C pour le modele 'NAVIER_STOKES' C On ne fait pas comme MILL car on ne comprend pas C sa modification (en fait, on ne comprend pas C pourquoi elle n'est pas faite dans tous les C objets (cf. restch.eso pour les CHPOINTs)) C C*********************************************************************** -INC CCOPTIO -INC SMMODEL -INC TMCOLAC character*8 cmate character*8 ityp1 * character*20 m_mode character*550 m_libe logical b_z * * Boucle sur les MODELEs contenus dans la pile: * ITLAC1 = KCOLA(1) ITLAC2 = KCOLA(10) ITLAC3 = KCOLA(40) DO 10 IEL=IDEB,IMAX1 MMODEL = ITLAC(IEL) IF (MMODEL.EQ.0) GOTO 10 SEGACT,MMODEL NSOUMO = KMODEL(/1) DO 20 ISOU=1,NSOUMO IMODEL=KMODEL(ISOU) IF (IMODEL.NE.0) THEN SEGACT,IMODEL*MOD IVA = ABS(IMAMOD) * * MILL MODIF DU 11 / 6 / 92 * * IF (IVA.NE.0) IMAMOD=ITLAC1.ITLAC(IVA) IF (IMAMOD.LT.0) IMAMOD=ITLAC1.ITLAC(IVA) C cas 'NAVIER_STOKES' : INFMOD(2) contient une table NFOR=FORMOD(/2) MN3=INFMOD(/1) do 715 iou=1,ivamod(/1) ityp1=tymode(iou) call typfil(ityp1,j) iva=abs(ivamod(iou)) if(j.le.0) go to 715 itlac4=KCOLA(J) if( ivamod(iou).le.0) ivamod(iou)=itlac4.itlac(iva) 715 continue IF (NFOR.GT.0) THEN IF ((FORMOD(1).EQ.'NAVIER_STOKES') .OR. * (FORMOD(1).EQ.'DARCY').OR. * (FORMOD(1).EQ.'EULER')) THEN IF (MN3.GT.1) THEN IVA=ABS(INFMOD(2)) IF(IVA.NE.0) INFMOD(2)=ITLAC2.ITLAC(IVA) ENDIF ENDIF do iou=3,mn3 if(infmod(iou).lt.0) then iva=abs(infmod(iou)) infmod(iou)=itlac3.itlac(iva) endif enddo ENDIF if(mn3.lt.8.and.(formod(1).eq.'MECANIQUE'.or. * formod(1).eq.'POREUX'))then mn3=8 nfor=formod(/2) nmat=matmod(/2) nobmod=ivamod(/1) segadj imodel call prquoi(imodel) CALL NOMATE(FORMOD,NFOR,MATMOD,NMAT,CMATE,IMATE,INATU) IF (CMATE.EQ.' ') THEN SEGSUP,IMODEL SEGSUP,MMODEL CALL ERREUR(251) RETURN ELSE CMATEE=CMATE IMATEE=IMATE INATUU=INATU ENDIF * initialisation des nomid IF (FORMOD(1).NE.'NAVIER_STOKES'.AND.FORMOD(1).NE.'EULER' & .AND.formod(1).ne.'MELANGE') THEN if(cmate.ne.'MODAL'.and.cmate.ne.'STATIQUE') then lucvar=0 lucmat=0 lucmaf=0 luparx=0 call inomid(imodel,' ',iret,lucvar,lucmat, * lucmaf,luparx) endif ENDIF endif if (NFOR.eq.1) then if (nobmod.eq.0) goto 200 noblib = 0 if (formod(1).NE.'MECANIQUE' .AND. & formod(1).NE.'POREUX') GOTO 210 if (inatuu.ge.0) goto 200 CALL PLACE(tymode,nobmod,noblib,'LMEEXT ') if (noblib.eq.0) goto 200 goto 220 210 continue if (formod(1).NE.'DIFFUSION') goto 200 CALL PLACE(tymode,nobmod,noblib,'LDIEXT ') if (noblib.eq.0) goto 200 c* goto 220 220 continue m_ptre = ivamod(noblib) if (m_ptre.le.0) then call erreur(21) return endif C*TMP Option non disponible pour l'instant call erreur(251) return call queval(ivamod(noblib+1),'MOT',ier,lgmot,r_z, & m_libe,b_z,i_z) lglib = INDEX(m_libe,'=')-1 lgmod = lgmot-liglib-1 m_mode = m_libe(lglib+2:lgmot)//CHAR(0) m_libe = m_libe(1:lglib)//CHAR(0) C** CALL PTRLOI(m_libe,lglib,m_mode,lgmod,m_ptre) if (m_ptre.le.0) thEN call erreur(21) return endif ivamod(noblib) = m_ptre 200 continue endif SEGDES,IMODEL ENDIF 20 CONTINUE SEGDES,MMODEL 10 CONTINUE RETURN END