C EPSI SOURCE PV 12/03/21 21:15:01 7323 SUBROUTINE EPSI *_______________________________________________________________________ * * OPERATEUR DEFORMATIONS * * ESP=EPSI ( II ) MODL1 ( CAR1 ) (MAT1) CHP1 ; * * OU * * ESP = EPSI MODL1 GRAD2 ( CAR1 ) | ('GEOM') | ; * | 'DEPL' | * * II MOT CLE INDIQUANT QUE L ON VEUT EPS2 * MODL1 MODELE DE CALCUL, TYPE MMODEL * CAR1 CHAMP PAR ELEMENT DE CARACTERISTIQUE, TYPE MCHAML * CHP1 CHPOINT DE DEPLACEMENT * MAT1 CHAMP PAR ELEMENT DE MATERIAU OU DE HOOKE (FACULTATIF) * GEOM/DEPL MOT CLE INDIQUANT QUE GRAD2 EST UN GRADIENT DE * TRANSFORMATION/DEPLACEMENT * * 20/3/12 mot cle noer indiquant qu'on nen sort pas si erreur. On rend alors * un entier qui vaut le numero de l'erreur *----------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC CCOPTIO -INC SMCHAML CHARACTER*4 MOEPS2(5) DATA MOEPS2 / 'II ','GEOM','DEPL','LINE','NOER'/ C IPMODEL MODELE MMODEL C IPCHP1 CHAMPOINT DEPLACEMENTS C IPCHA1 CHAMELEM CARACTERISTIQUE C IPEPSI CHAMELEM DEFORMATIONS kerr=0 IPCHE1=0 IPCHA1=0 IPCHE2=0 IPCHA2=0 C C LECTURE D'UN MOT-CLE SI NECESSAIRE C ireps2=0 CALL LIRMOT(MOEPS2,5,IREPS2,0) ireps3=0 CALL LIRMOT(MOEPS2,5,IREPS3,0) IF (IERR.NE.0) GOTO 666 noer=0 if (ireps2.eq.5) then noer=1 ireps2=ireps3 endif if (ireps3.eq.5) then noer=1 endif C C LECTURE DU MODELE C CALL LIROBJ('MMODEL',IPMODL,1,IRT1) IF (IERR.NE.0) GOTO 666 C C ON LIT UN CHAMP/POINT C CALL LIROBJ('CHPOINT ',ICHP1,0,IRT1) IF (IRT1.NE.0) THEN C C ON LIT UN 2eme CHAMP/POINT qui est le deplacement pour avoir la C configuratyion courante C ichp2=0 CALL LIROBJ('CHPOINT ',ICHP2,0,IRT1) C C ON LIT UN 1 ER CHAMP/ELEMENT (FACULTATIF ) C CALL LIROBJ ('MCHAML',IPCHA1,0,IRT1) IF (Ierr.NE.0) GOTO 666 if (ipcha1.ne.0) then call reduaf(ipcha1,ipmodl,ipcha,0,iret,kerr) if (iret.ne.1) call erreur(kerr) if (ierr.ne.0) return ipcha1=ipcha endif C C ON LIT UN 2 IEME CHAMP/ELEMENT (FACULTATIF ) C CALL LIROBJ ('MCHAML',IPCHA2,0,IRT2) IF (IERR.NE.0) GOTO 666 if (ipcha2.ne.0) then call reduaf(ipcha2,ipmodl,ipcha,0,iret,kerr) if (iret.ne.1) call erreur(kerr) if (ierr.ne.0) return ipcha2=ipcha endif C IF(IPCHA1.NE.0.OR.IPCHA2.NE.0)THEN CALL RNGCHA(IPCHA1,IPCHA2,'CARACTERISTIQUES', & 'MATRICE DE HOOKE',IPCHE1,IPCHE2) IF(IERR.NE.0) GOTO 666 IF (IPCHE2.EQ.0)THEN IMAT=1 ELSE IMAT=2 ENDIF ELSE IMAT=0 IPCHE1=0 IPCHE2=0 ENDIF C C CALCUL DES DEFORMATIONS USUELLES C CALL EPSI1(IREPS2,IPMODL,ICHP1,IPCHE1,IPCHE2,IMAT, & IPEPSI,IRET,ichp2,noer,kerr) C ELSE C C GRADIENT GEOMETRIE OU DEPLACEMENT ? C IMIL=0 IF (IREPS2.EQ.3) IMIL=1 C C ON LIT UN CHAMP/ELEMENT DE GRADIENTS C CALL LIROBJ ('MCHAML',IPCHA1,1,IRT1) IF (IERR.NE.0) GOTO 666 C C ON LIT UN 2 IEME CHAMP/ELEMENT (CARACTERISTIQUES-FACULTATIF) C CALL LIROBJ ('MCHAML',IPCHA2,0,IRT2) IF (IERR.NE.0) GOTO 666 C IF (IPCHA1.NE.0.OR.IPCHA2.NE.0) THEN CALL RNGCHA(IPCHA1,IPCHA2,'GRADIENT', & 'CARACTERISTIQUES',IPCHE1,IPCHE2) ** Actuellement IPCHE2 n'est pas utilise. Seul IPCHE1 est verifie. ** IF (IPCHE1.EQ.0.OR.IPCHE2.EQ.0) THEN IF (IPCHE1.EQ.0) THEN MOTERR(1:8)='MCHAML' MOTERR(9:16)='GRADIENT' MOTERR(17:24)='CARACTERI' CALL ERREUR(141) ENDIF IF (IERR.NE.0) GOTO 666 ENDIF C C CALCUL DES DEFORMATIONS LOGARITHMIQUES C CALL EPSLN1(IPMODL,IPCHE1,IPCHE2,IPEPSI,IMIL) IF (IERR.NE.0) GOTO 666 IRET=1 C ENDIF C C ECRITURE DU MCHAML DE DEFORMATIONS RESULTAT C IF (IRET.EQ.1.and.kerr.eq.0) call ecrOBJ ('MCHAML',IPEPSI) if (kerr.ne.0) call ecrent(kerr) 666 CONTINUE RETURN END