prlin
C PRLIN SOURCE GOUNAND 24/11/12 21:15:08 12076 IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : PRLIN C DESCRIPTION : Lecture des données et écriture des résultats C pour nlin 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 : PRLIN2 C APPELES (E/S) : LIROBJ, ECROBJ C APPELE PAR : PILOT ou KOPS C*********************************************************************** C SYNTAXE GIBIANE : C ENTREES : C SORTIES : * MATLIN (type MATRIK) : matrice de rigidité. C*********************************************************************** C VERSION : v3.1, 30/07/04, possiblité de travailler C dans l'espace de référence C VERSION : v3, 10/05/04, refonte complète (modif SMTNLIN) C lois de comportement C VERSION : v2, 22/09/03, refonte complète (modif SMTNLIN) C VERSION : v1, 22/08/03, version initiale C HISTORIQUE : v1, 22/08/03, création C HISTORIQUE : 20/05/2021 : ajout mot-cle CHAM 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 CCGEOME -INC PPARAM -INC CCOPTIO -INC SMELEME POINTEUR CGEOM2.MELEME POINTEUR CSGEO2.MELEME -INC SMTABLE POINTEUR TABCPR.MTABLE POINTEUR TABCDU.MTABLE C-INC SMLMOTS C POINTEUR MOTSCL.MLMOTS -INC SMRIGID POINTEUR MATLIN.MRIGID -INC SMCHPOI -INC SMCHAML * *dbg INTEGER OOOVAL * CHARACTER*4 LGDISC CHARACTER*4 METING INTEGER LAXI INTEGER LERF LOGICAL LERJ INTEGER LCHAM INTEGER IMPR,IRET * PARAMETER (NMOT0=2,NMOT1=2,NMOT2=1,NMOT3=2,NMOT4=1,NMOT5=2) CHARACTER*4 MOTCL0(NMOT0),MOTCL1(NMOT1) CHARACTER*4 MOTCL2(NMOT2),MOTCL3(NMOT3) CHARACTER*4 MOTCL4(NMOT4),MOTCL5(NMOT5) DATA MOTCL0/'TJAC','TPG '/ DATA MOTCL1/'EREF','ERF1'/ DATA MOTCL2/'ERRJ'/ DATA MOTCL3/'CRES','MATK'/ * DATA MOTCL4/'MREG','NMRE'/ DATA MOTCL4/'MREG'/ DATA MOTCL5/'CHPO','CHAM'/ * * Executable statements * IMPR=0 IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans prlin' *dbg NSEGAV=OOOVAL(2,1) * * Lecture du mot-cle pour les subroutines de test * Pas à destination des utilisateurs * IF (IRAN.EQ.1) THEN CALL TESTJA RETURN ELSEIF (IRAN.EQ.2) THEN CALL TESTPG RETURN ENDIF * * Lecture de la famille d'espaces de discrétisations * pour la géométrie * IF (IRET.NE.4) GOTO 9999 * * Lecture du maillage de QUAF * IF (IRET.EQ.0) GOTO 9999 * * Lecture du maillage surfacique de QUAF (optionnel) * IF (IRET.EQ.0) THEN CSGEO2=0 ENDIF * * Lecture de la table des coefficients du système d'équations * pour la variable primale IF (IRET.EQ.0) GOTO 9999 * Lecture de la table des coefficients du système d'équations * pour la variable duale IF (IRET.EQ.0) GOTO 9999 C* C* Lecture du mot-cle pour l'axisymétrique C* Inutile, on peut l'introduire explicitement avec C* les coefficients. Ca paraît plus propre C* C JGM=3 C JGN=4 C SEGINI MOTSCL C MOTSCL.MOTS(1)='AXIS' C MOTSCL.MOTS(2)='AXI1' C MOTSCL.MOTS(3)='AXI2' C CALL LIRMOT(MOTSCL.MOTS,MOTSCL.MOTS(/2),IRAN,0) C IF (IFOMOD.EQ.0.AND.IRAN.EQ.0) THEN C WRITE(IOIMP,*) 'En axi, on attend un des mots-cles :' C SEGPRT,MOTSCL C GOTO 9999 C ELSEIF (IFOMOD.NE.0.AND.IRAN.NE.0) THEN C WRITE(IOIMP,*) 'Le mot-cle ',MOTSCL.MOTS(IRAN), C $ ' necessite OPTI MODE AXIS.' C GOTO 9999 C ENDIF C LAXI=IRAN C SEGSUP MOTSCL * LAXI=IFOMOD * * Lecture du mot-cle pour si on discrétise dans l'espace de référence * ou dans l'espace de référence avec le volume des éléments normalisé * à 1 * DATA MOTCL1/'EREF','ERF1'/ * * * Lecture du mot-cle pour si on capture les erreurs de changement de * signe du Jacobien * DATA MOTCL2/'ERRJ'/ * IF (IRAN.EQ.0) THEN LERJ=.FALSE. ELSEIF (IRAN.EQ.1) THEN LERJ=.TRUE. ELSE GOTO 9999 ENDIF * * Lecture du mot-cle pour l'assemblage compatible avec RESO * DATA MOTCL3/'CRES','MATK'/ * * * Lecture du mot-cle pour accélération de NLIN si maillage régulier * DATA MOTCL4/'MREG'/ * * IMREG=1 * IF (IMREG.EQ.1) WRITE(IOIMP,*) 'MAILLAGE REGULIER' * * Lecture du mot-cle pour accélération de NLIN si maillage régulier * DATA MOTCL5/'CHPO','CHAM'/ * LCHAM=LCHAM-1 * write(ioimp,*) 'LCHAM=',LCHAM IF (LCHAM.EQ.-1) LCHAM=0 * IF (LCHAM.EQ.1) then * WRITE(IOIMP,*) 'OUTPUT de MCHAMLs' * else * WRITE(IOIMP,*) 'OUTPUT de CHPOINT' * ENDIF * * Lecture de la famille de méthodes d'intégration * IF (IERR.NE.0) GOTO 9999 IF (IRET.EQ.0) THEN METING=' ' ENDIF C WRITE(IOIMP,*) 'LAXI=',LAXI C WRITE(IOIMP,*) 'LERF=',LERF C WRITE(IOIMP,*) 'LERJ=',LERJ C WRITE(IOIMP,*) 'METING=',METING * * Fin des lectures * $ LERJ,IRESO,IMREG,LCHAM, $ MATLIN,ICHLIN, $ IMPR,IRET) IF (IERR.NE.0) RETURN IF (IRET.NE.0) THEN IF (LERJ) GOTO 9666 GOTO 9999 ENDIF IF ((ICHLIN.EQ.0).AND.(MATLIN.EQ.0)) THEN WRITE(IOIMP,*) 'Nothing was computed, check your tables' GOTO 9999 ENDIF * l'ordre des retours sera normalement, mat chpo = NLIN ... IF (ICHLIN.NE.0) THEN IF (LCHAM.EQ.1) THEN ELSE ENDIF ENDIF IF (MATLIN.NE.0) THEN IF (IRESO.EQ.2) THEN ELSE ENDIF ENDIF *dbg NSEGAP=OOOVAL(2,1) *dbg NSEGD=NSEGAP-NSEGAV *dbg WRITE(IOIMP,*) 'NLIN : ',NSEGD,' segments crees ', *dbg $ ' MAT=',MATLIN,' CHP=',CHPLIN * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9666 CONTINUE RETURN 9999 CONTINUE MOTERR(1:8)='prlin ' RETURN * * End of subroutine PRLIN * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales