C VARI SOURCE CB215821 20/11/25 13:41:55 10792 *_______________________________________________________________________ * * Calcul d'un champ variable * ( MCHAML, CHPOINT ) * * * 1 ere Possibilite * ----------------- * Variation d'un champ en fonction d'une loi de variation * * CHEL2 = VARI MODL1 ! CHEL1 ! EVOL1 (MOT1) ; * ! CHPO1 ! * 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 Possibilite * ----------------- * 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 materiaux en fonction de la temperature) * * 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. * S'il est absent, le support du champ CHEL2 * sera le support RIGIDITE *_______________________________________________________________________ SUBROUTINE VARI IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO CHARACTER*8 MOCHAM(5),MOFLUI(23) CHARACTER*4 MONUAG(1) CHARACTER*(LOCOMP) MOT2 CHARACTER*72 CHAR DATA MOCHAM/'NOEUD ','GRAVITE ','RIGIDITE','MASSE ', & 'STRESSES'/ DATA MOFLUI/'CPLIQ ','HLS ','HVS ','LATENT ', & 'PSATT ','PVAP ','ROLIQ ','ROVAP ', & 'TLIQUID ','TSATP ','ZVAP ','TODIFF ', & 'TOCOND ','DHVDT ','DHVDP ','DHLDP ', & 'DPSAT ','DZVDP ','DZVDT ','DRVDP ', & 'DRVDT ','MULIQ ','LBDALIQ '/ DATA MONUAG/'NUAG'/ IFLUI = 0 INUAGE = 0 IPMODL = 0 IRET = 0 MICHE = 0 * ----------- * On cherche une des entrees des tables de l'eau * ----------- CALL LIRMOT(MOFLUI,23,IFLUI,0) IF (IERR.NE.0) RETURN * =========== * SYNTAXE 3 : Appel aux tables de l'eau * =========== IF (IFLUI.NE.0) THEN CALL VARIO(IFLUI) RETURN ENDIF * ----------- * On cherche la presence du mot-cle NUAG * ----------- CALL LIRMOT(MONUAG,1,INUAGE,0) IF (IERR.NE.0) RETURN * =========== * SYNTAXE 2 : 'VARI' 'NUAGE' * =========== IF (INUAGE.EQ.1) THEN *- Lecture du modele : CALL LIROBJ('MMODEL ',IPMODL,1,iretou) CALL ACTOBJ('MMODEL ',IPMODL,1) IF (IERR.NE.0) RETURN *- Lecture du 1er MCHAML decrivant la fonction a appliquer ("NUAGE") : CALL LIROBJ('MCHAML ',IRE1a,1,iretou) CALL ACTOBJ('MCHAML ',IRE1a,1) IF (IERR.NE.0) RETURN CALL REDUAF(IRE1a,IPMODL,IRE1,0,IR,KER) IF(IR .NE. 1) CALL ERREUR(KER) IF(IERR .NE. 0) RETURN *- Lecture du 2e CHAMP (MCHAML ou CHPOINT) entree de la fonction : CALL LIROBJ('MCHAML ',IRE2a,0,iretou) IF (IERR.NE.0) RETURN IF (iretou.EQ.1) THEN CALL ACTOBJ('MCHAML ',IRE2a,1) CALL REDUAF(IRE2a,IPMODL,IRE2,0,IR,KER) IF(IR .NE. 1) CALL ERREUR(KER) IF(IERR .NE. 0) RETURN ELSE CALL LIROBJ('CHPOINT ',IRE2,1,iretou) CALL ACTOBJ('CHPOINT ',IRE2,1) IF (IERR.NE.0) RETURN MICHE = 1 ENDIF *- Lecture optionnelle du support du champ resultat : JEMIL = 0 CALL LIRMOT(MOCHAM,5,JEMIL,0) IF (IERR.NE.0) RETURN IF (JEMIL.EQ.0) JEMIL = 3 *- Lecture optionnelle d'un sous-type pour le champ resultat : iretou = 0 CHAR = ' ' CALL LIRCHA(CHAR,0,iretou) IF (IERR.NE.0) RETURN IF (iretou.EQ.0) CHAR = ' ' *- Calcul du MCHAML resultat IRET : CALL VARINU(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL,CHAR) *- Ecriture du resultat sauf en cas d'erreur : IF (IRET.NE.0) THEN CALL ACTOBJ('MCHAML ',IRET,1) CALL ECROBJ('MCHAML ',IRET) ENDIF * =========== * SYNTAXE 1 : 'VARI' ... EVOL1 ; * =========== * ELSE IF (INUAGE.EQ.0) THEN ELSE *- Lecture du premier objet (MMODEL ou CHPOINT) : CALL LIROBJ('MMODEL ',IPMODL,0,iretou) IF (IERR.NE.0) RETURN C- ------------- C- Syntaxe 1.1 : VARI modl1 champ1 evol1 ... ; C- ------------- * IF (IPMODL.NE.0) THEN IF (iretou.NE.0) THEN CALL ACTOBJ('MMODEL ',IPMODL,1) *- Lecture du champ d'entree (MCHAML ou CHPOINT) : CALL LIROBJ('MCHAML ',IRE1,0,iretou) IF (IERR.NE.0) RETURN IF (iretou.EQ.0) THEN CALL LIROBJ('CHPOINT ',IRE1,1,iretou) CALL ACTOBJ('CHPOINT ',IRE1,1) IF (IERR.NE.0) RETURN MICHE = 1 ELSE CALL ACTOBJ('MCHAML ',IRE1,1) ENDIF *- Lecture d'une EVOLUTION donnant la fonction a appliquer : CALL LIROBJ('EVOLUTIO',IRE2,1,iretou) CALL ACTOBJ('EVOLUTIO',IRE2,1) IF (IERR.NE.0) RETURN *- Lecture optionnelle du support du champ resultat : JEMIL = 0 CALL LIRMOT(MOCHAM,5,JEMIL,0) IF (IERR.NE.0) RETURN IF (JEMIL.EQ.0) JEMIL = 3 *- Calcul du MCHAML resultat IRET : CALL VARICA(IRE1,IRE2,IPMODL,IRET,MICHE,JEMIL) *- Ecriture du resultat sauf en cas d'erreur : IF (IRET.NE.0) THEN CALL ACTOBJ('MCHAML ',IRET,1) CALL ECROBJ('MCHAML ',IRET) ENDIF C- ------------- C- Syntaxe 1.2 : VARI chpo1 evol1 ... ; C- ------------- ELSE * IF (IPMODL.EQ.0) THEN *- Lecture du CHPOINT d'entree : CALL LIROBJ('CHPOINT ',IRE1,1,iretou) CALL ACTOBJ('CHPOINT ',IRE1,1) IF (IERR.NE.0) RETURN *- Lecture d'une EVOLUTION donnant la fonction a appliquer : CALL LIROBJ('EVOLUTIO',IRE2,1,iretou) CALL ACTOBJ('EVOLUTIO',IRE2,1) IF (IERR.NE.0) RETURN *- Lecture optionnelle du nom de la composante resultat MOT2 = ' ' CALL LIRCHA(MOT2,0,iretou) IF (IERR.NE.0) RETURN IF (iretou.EQ.0) MOT2 = ' ' *- Calcul du CHPOINT resultat IRET : CALL VARIPO(IRE1,IRE2,MOT2,IRET) *- Ecriture du CHPOINT resultat sauf en cas d'erreur : IF (IRET.NE.0) THEN CALL ACTOBJ('CHPOINT ',IRET,1) CALL ECROBJ('CHPOINT ',IRET) ENDIF ENDIF ENDIF END