C VARI SOURCE CHAT 06/08/24 22:12:43 5529 SUBROUTINE VARI *_______________________________________________________________________ * * Calcul d'un champ variable * ( MCHAML, CHPOINT ) * * * 1 ère Possibilité * °°°°°°°°°°°°°°°°° * * Variation d'un champ en fonction d'une loi de variation * * CHEL2 = VARI ! MODL1 CHEL1 EVOL1 ! (MOT1) ; * ! MODL1 CHPO1 EVOL1 ! * ou * CHPO2 = VARI CHPO1 EVOL1 (MOT2); * * CHEL1 Champ donne, type MCHAML * CHPO1 Champ donne, type CHPOINT * EVOL1 Objet definissant la loi de variation, type EVOLUTION * MODL1 Modele de calcul, type MMODEL * MOT1 Objet de type MOT precisant le support du champ scalaire * MOT2 Nom a donner a la composante du CHPOINT resultat * * * 2 eme Possibilité * °°°°°°°°°°°°°°°°° * * Variation d'un champ/element ayant un ou des composante(s) * de type EVOLUTION ou NUAGE en fonction d'un champ/point * ou d'un champ/element. Ce champ/point ou champ/element * ne doit avoir qu'une seul composante de nom quelconque. * (Exemple d'application : variation des caracteristiques * de matériaux en fonction de la température). * * CHEL2 = VARI 'NUAG' MODL1 CHEL1 CHEP1 (MOT1) ; * * CHEL1 Champ donne, type MCHAML * CHEP1 Champ donne, type CHPOINT ou MCHAML * MODL1 Modele de calcul, type MMODEL * MOT1 Objet de type MOT precisant le support du champ. * Si il est absent, le support du champ CHEL2 * sera le support RIGIDITE * *______________________________________________________________________ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCOPTIO -INC SMCOORD * CHARACTER*8 MOCHAM(5),MOFLUI(21) CHARACTER*(4) MOT2 CHARACTER*4 MONUAG(1) CHARACTER*72 CHAR DATA MOFLUI/'CPLIQ ','HLS ','HVS ','LATENT ', & 'PSATT ','PVAP ','ROLIQ ','ROVAP ', & 'TLIQUID ','TSATP ','ZVAP ','TODIFF ', C!! & 'TOCOND '/ & 'TOCOND ','DHVDT ','DHVDP ','DHLDP ', & 'DPSAT ','DZVDP ','DZVDT ','DRVDP ', & 'DRVDT '/ DATA MONUAG/'NUAG'/ DATA MOCHAM/'NOEUD ','GRAVITE ','RIGIDITE','MASSE ', & 'STRESSES'/ * INUAGE = 0 IFLUI = 0 MICHE = 1 IPCHA1 = 0 IPMODL = 0 * * On cherche une des entrées des tables de l'eau * CALL LIRMOT(MOFLUI,21,IFLUI,0) IF (IERR.NE.0) GOTO 666 IF (IFLUI.NE.0) THEN CALL VARIO(IFLUI) ELSE * * On cherche la présence du mot clé NUAG * CALL LIRMOT(MONUAG,1,INUAGE,0) IF (IERR.NE.0) GOTO 666 * * Lecture d'un premier objet (CHPOINT, MMODEL) * CALL LIROBJ('MMODEL',IPMODL,INUAGE,IRETM) IF(IERR.NE.0) RETURN IF(IRETM.EQ.0) GOTO 110 CALL LIROBJ('MCHAML ',IRET,INUAGE,IPOLI1) IF(IERR.NE.0) RETURN IF(IPOLI1.EQ.0) GOTO 110 MICHE=0 IF(INUAGE.EQ.1) GOTO 300 GO TO 200 * 110 CALL LIROBJ('CHPOINT ',IRET,0,IPOLI1) IF(IPOLI1.EQ.0) GOTO 120 GO TO 200 C C PAS D OPERANDE CORRECTE TROUVE C 120 CALL QUETYP(MOTERR(1:8),0,IRETOU) IF(IRETOU.NE.0) THEN CALL ERREUR (39) ELSE CALL ERREUR(533) ENDIF RETURN * 200 IRE1=IRET * * Lecture d'un objet EVOLUTION * CALL LIROBJ('EVOLUTIO',IRET,1,IPOLI2) IF(IERR.NE.0) RETURN IRE2=IRET GOTO 310 * 300 IRE1=IRET * * Lecture d'un objet CHPOINT ou MCHAML (variation NUAGE) * CALL LIROBJ('MCHAML ',IRET,0,IPOLI2) IF(IERR.NE.0) RETURN IF(IPOLI2.NE.0) THEN MICHE2=0 IRE2=IRET GOTO 320 ENDIF CALL LIROBJ('CHPOINT ',IRET,1,IPOLI2) IF(IERR.NE.0) RETURN MICHE2=1 IRE2=IRET GOTO 320 * 310 CONTINUE IF (MICHE.EQ.1.AND.IPMODL.EQ.0) THEN * * Le resultat est un CHPOINT * Lecture optionnelle d'un mot (nom de composante) * CALL LIRCHA(MOT2,0,IRETOU) IF(IERR.NE.0) RETURN CALL VARIPO(IRE1,IRE2,MOT2,IRET) IF(IRET.NE.0) CALL ECROBJ('CHPOINT ',IRET) RETURN ENDIF * * Lecture optionnelle d'un nom de support * 320 JEMIL=0 CALL LIRMOT(MOCHAM,5,JEMIL,0) IF(JEMIL.EQ.0.) JEMIL=3 * * Lecture optionnelle d'un sous-type * CALL LIRCHA(CHAR,0,IRETOU) IF(IERR.NE.0) RETURN IF (IRETOU.EQ.0) CHAR=' ' * * Le resultat sera un MCHAML * IF(INUAGE.EQ.0) THEN CALL VARICA(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL) ELSE CALL VARINU(IRE1,IRE2,IPMODL,IRET,MICHE2,JEMIL,CHAR) ENDIF IF(IRET.NE.0) THEN CALL ECROBJ('MCHAML',IRET) ENDIF ENDIF 666 CONTINUE RETURN END