prlin4
C PRLIN4 SOURCE GOUNAND 21/06/02 21:17:28 11022 $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : PRLIN4 C DESCRIPTION : * Dans PRLIN4, on explicite ce que l'on va vraiment devoir * calculer dans TATRAV C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : C APPELE PAR : PRLIN2 C*********************************************************************** C ENTREES : C SORTIES : C TRAVAIL : C C*********************************************************************** C VERSION : v1, 19/12/2005, version initiale C HISTORIQUE : v1, 19/12/2005, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC TNLIN *-INC SLCOMP POINTEUR MYCOMP.COMP -INC SMLENTI POINTEUR LDAT.MLENTI POINTEUR POWCOF.MLENTI *-INC SMTNLIN * INTEGER IMPR,IRET * * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans prlin4' SEGACT TABVDC SEGACT TATRAV*MOD NUMVPR=TABVDC.VVARPR(/1) NUMVDU=TABVDC.VVARDU(/1) NUMDER=TABVDC.ILCPR(/1)-1 NUMOP=TABVDC.ILCPR(/2) JLCOF=TATRAV.VVCOF(/1) * Mises à zéro préalables JGCOF=TATRAV.LVCOF(/1) DO IJGCOF=1,JGCOF TATRAV.LVCOF(IJGCOF)=.FALSE. ENDDO JGVD=TATRAV.LVD(/1) DO IJGVD=1,JGVD TATRAV.LVD(IJGVD)=.FALSE. TATRAV.LDVD(IJGVD)=.FALSE. ENDDO KGVD=TATRAV.LFFVD(/1) DO IKGVD=1,KGVD TATRAV.LFFVD(IKGVD)=.FALSE. TATRAV.LDFFVD(IKGVD)=.FALSE. ENDDO * * Que va-t-on devoir calculer ? On le tagge a 1. * Parmi les coeffs DO IJLCOF=1,JLCOF POWCOF=TABVDC.VLCOF(IJLCOF) SEGACT POWCOF DO IPC=1,POWCOF.LECT(/1) IPOW=POWCOF.LECT(IPC) IF (IPOW.NE.0) THEN TATRAV.LVCOF(IPC)=.TRUE. ENDIF ENDDO SEGDES POWCOF ENDDO * Parmi les datas et leurs dérivées DO IJGCOF=1,JGCOF IF (TATRAV.LVCOF(IJGCOF).EQV..TRUE.) THEN MYCOMP=TABVDC.VCOMP(IJGCOF) LDAT =TABVDC.VLDAT(IJGCOF) SEGACT MYCOMP NDAT=MYCOMP.DERCOF(/1) SEGACT LDAT DO IDAT=1,NDAT LDER =MYCOMP.DERCOF(IDAT) IJGVD=LDAT.LECT(IDAT) * IKGVD=TABVDC.DJSVD(IJGVD) IF (LDER.EQ.0) THEN TATRAV.LVD(IJGVD)=.TRUE. * TATRAV.LFFVD(IKGVD)=.TRUE. ELSEIF (LDER.EQ.1) THEN TATRAV.LDVD(IJGVD)=.TRUE. * TATRAV.LDFFVD(IKGVD)=.TRUE. ELSEIF (LDER.EQ.2) THEN TATRAV.LVD(IJGVD)=.TRUE. * TATRAV.LFFVD(IKGVD)=.TRUE. TATRAV.LDVD(IJGVD)=.TRUE. * TATRAV.LDFFVD(IKGVD)=.TRUE. ELSE WRITE(IOIMP,*) 'Erreur grave 1' GOTO 9999 ENDIF ENDDO SEGDES LDAT SEGDES MYCOMP ENDIF ENDDO * Parmi les variables et leurs dérivées DO IOP=1,NUMOP DO IDER=0,NUMDER DO IVARPR=1,NUMVPR IILCPR=TABVDC.ILCPR(IDER+1,IOP,IVARPR) IF (IILCPR.NE.0) THEN IJGVD=TABVDC.VVARPR(IVARPR) IF (IDER.EQ.0) THEN TATRAV.LVD(IJGVD)=.TRUE. ELSE TATRAV.LDVD(IJGVD)=.TRUE. ENDIF ENDIF ENDDO DO IVARDU=1,NUMVDU IILCDU=TABVDC.ILCDU(IDER+1,IOP,IVARDU) IF (IILCDU.NE.0) THEN IJGVD=TABVDC.VVARDU(IVARDU) IF (IDER.EQ.0) THEN TATRAV.LVD(IJGVD)=.TRUE. ELSE TATRAV.LDVD(IJGVD)=.TRUE. ENDIF ENDIF ENDDO ENDDO ENDDO * Parmi les fonctions de forme DO IJGVD=1,JGVD IF (TATRAV.LVD(IJGVD).EQV..TRUE.) THEN IKGVD=TABVDC.DJSVD(IJGVD) TATRAV.LFFVD(IKGVD)=.TRUE. IF (TABVDC.MVD(IJGVD).EQ.0) THEN TATRAV.LVD(IJGVD)=.FALSE. ENDIF ENDIF IF (TATRAV.LDVD(IJGVD).EQV..TRUE.) THEN IKGVD=TABVDC.DJSVD(IJGVD) TATRAV.LDFFVD(IKGVD)=.TRUE. IF (TABVDC.MVD(IJGVD).EQ.0) THEN TATRAV.LDVD(IJGVD)=.FALSE. ENDIF ENDIF ENDDO * * Fin... * SEGDES,TATRAV SEGDES,TABVDC * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine prlin4' RETURN * * End of subroutine PRLIN4 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales