jacopo
C JACOPO SOURCE PV090527 25/04/01 21:15:03 12222 C======================================================================= C ENTREES : C --------- C IPMODL= pointeur sur un MMODEL C C SORTIES : C -------- C C IPCHE = CHAMELEM contenant les JACOBIENS C IRET = 1 si succes 0 sinon C C Passage au nouveau Chamelem PAR S.RAMAHANDRY le 11/09/90 C CB215821 20/03/2017 : Ajout de la formulation DIFFUSION (MFR=73) C===================================================================== IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMMODEL -INC SMELEME -INC SMCOORD -INC SMINTE -INC TMPTVAL SEGMENT TRA REAL*8 XEL(3,NBNN),SHP(6,NBNN),XE(3,NBNN),BPSS(3,3) ENDSEGMENT C SEGMENT TR1 REAL*8 TH(NBN1),TXR(3,3,NBN1),XJ(3,3) ENDSEGMENT C SEGMENT INFO INTEGER INFELL(JG) ENDSEGMENT PARAMETER(UN=1.D0,XZER=0.D0) DIMENSION BPSS(3,3) CHARACTER*8 CMATE C SEGACT,MCOORD*NOMOD NHRM = NIFOUR IRET = 1 C C ACTIVATION DU MODELE C MMODEL= IPMODL NSOUS = KMODEL(/1) C C CREATION DU MCHELM C N1= NSOUS L1= 8 N3= 6 SEGINI,MCHELM IPCHE =MCHELM TITCHE='SCALAIRE' IFOCHE=IFOUR C____________________________________________________________________ C C DEBUT DE LA BOUCLE SUR LES DIFFERENTES ZONES C____________________________________________________________________ C DO 500 ISOUS=1,NSOUS C C ON RECUPERE L INFORMATION GENERALE C IMODEL=KMODEL(ISOUS) IPMAIL=IMAMOD IMACHE(ISOUS)=IPMAIL CONCHE(ISOUS)=CONMOD C C TRAITEMENT DU MODELE C MELE = NEFMOD MELEME= IMAMOD C____________________________________________________________________ C C INFORMATION SUR L'ELEMENT FINI C____________________________________________________________________ C if(infmod(/1).lt.7) then IF (IERR.NE.0) THEN SEGSUP,MCHELM IRET=0 RETURN ENDIF INFO=IPINF MELE = INFELL(1) MFR = INFELL(13) MINTE = INFELL(11) MINTE1= INFELL(12) segsup,info else MELE =INFELE(1) MFR =INFELE(13) MINTE=INFMOD(7) MINTE1=INFMOD(8) endif C INFCHE(ISOUS,1)= 0 INFCHE(ISOUS,2)= 0 INFCHE(ISOUS,3)= NHRM INFCHE(ISOUS,4)= MINTE INFCHE(ISOUS,5)= 0 INFCHE(ISOUS,6)= 5 C C INITIALISATION DE MINTE C NBPGAU=POIGAU(/1) C C ACTIVATION DU MELEME C NBNN =NUM(/1) NBELEM=NUM(/2) C C RECHERCHE DE LA TAILLE DES MELVAL A ALLOUER C N1PTEL=NBPGAU N1EL=NBELEM C C CREATION DU MCHAML DE LA SOUS ZONE C NJAC=1 N2 =1 SEGINI,MCHAML ICHAML(ISOUS)=MCHAML NSR=1 NCOSOR=NJAC SEGINI MPTVAL IVAJAC=MPTVAL C C 1 COMPOSANTE C ICOMP = 1 NOMCHE(ICOMP)='SCAL ' TYPCHE(ICOMP)='REAL*8' N2PTEL = 0 N2EL = 0 SEGINI,MELVAL IELVAL(ICOMP)= MELVAL IVAL(ICOMP) = MELVAL C C ERREUR FORMULATION INDISPONIBLE C IF(MFR.EQ.1.OR.MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9.OR.MFR.EQ.7 > .OR.MFR.EQ.13.OR.MFR.EQ.33.OR.MFR.EQ.35.OR.MFR.EQ.49 > .OR.MFR.EQ.73) 1 GOTO 44 MOTERR(1:8)=NOMFR(MFR) IRET=0 GOTO 9990 C 44 CONTINUE SEGINI,TRA C C ================== FORMULATION JOINT ======================= C C ----------------- Element JOT3 C IF(MFR.EQ.35) THEN IF(MELE.EQ.87) THEN DO 9000 IB=1,NBELEM DO 9002 IC=1,NBPGAU DO ID=1,6 DO IE=1,NBNN SHP(ID,IE)=SHPTOT(ID,IE,IC) ENDDO ENDDO IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4)='JOT3' RETURN ELSE IF(NOQUAL.EQ.2) THEN INTERR(1)=IB MOTERR(1:4)='JOT3' RETURN ENDIF NBNONN=NBNN/2 IRRT = 0 IF (DJAC.LT.XZER) THEN IRRT = 1 ELSE IF(DJAC.EQ.XZER) THEN IRRT = 2 ENDIF IF(IRRT.NE.0) THEN RETURN ENDIF MPTVAL=IVAJAC MELVAL = IVAL(1) IBMN=MIN(IB, VELCHE(/2)) IGMN=MIN(IC, VELCHE(/1)) VELCHE(IGMN,IBMN)=ABS(DJAC) 9002 CONTINUE 9000 CONTINUE C C ----------------- Element JOI4 C ELSE IF (MELE.EQ.88) THEN DO 8000 IB=1,NBELEM DO 8002 IC=1,NBPGAU DO ID=1,6 DO IE=1,NBNN SHP(ID,IE)=SHPTOT(ID,IE,IC) ENDDO ENDDO IF (NOQUAL.EQ.1) THEN INTERR(1)=IB MOTERR(1:4)='JOI4' RETURN ELSE IF(NOQUAL.EQ.2) THEN INTERR(1)=IB MOTERR(1:4)='JOI4' RETURN ENDIF NBNONN=NBNN/2 IRRT = 0 IF (DJAC.LT.XZER) THEN IRRT = 1 ELSE IF(DJAC.EQ.XZER) THEN IRRT = 2 ENDIF IF(IRRT.NE.0) THEN RETURN ENDIF MPTVAL=IVAJAC MELVAL = IVAL(1) IBMN=MIN(IB, VELCHE(/2)) IGMN=MIN(IC, VELCHE(/1)) VELCHE(IGMN,IBMN)=ABS(DJAC) 8002 CONTINUE 8000 CONTINUE ELSE RETURN ENDIF C C ================ FORMULATION MASSIVE ======================= C ELSE IF(MFR.EQ.1.OR.MFR.EQ.33.OR.MFR.EQ.73) THEN DO 1000 IB=1,NBELEM DO 1002 IC=1,NBPGAU DO ID=1,6 DO IE=1,NBNN SHP(ID,IE)=SHPTOT(ID,IE,IC) ENDDO ENDDO MPTVAL=IVAJAC MELVAL = IVAL(1) IBMN=MIN(IB, VELCHE(/2)) IGMN=MIN(IC, VELCHE(/1)) VELCHE(IGMN,IBMN)=ABS(DJAC) 1002 CONTINUE 1000 CONTINUE GOTO 520 C C ================ FORMULATION COQUE MINCE ===================== C ELSE IF(MFR.EQ.3.OR.MFR.EQ.9) THEN IDI2=IDIM-1 DO 3000 IB=1,NBELEM C IF(IDIM.EQ.2)THEN ELSE IF(IDIM.EQ.3) THEN ENDIF DO 3002 IC=1,NBPGAU DO ID=1,6 DO IE=1,NBNN SHP(ID,IE)=SHPTOT(ID,IE,IC) ENDDO ENDDO MPTVAL=IVAJAC MELVAL = IVAL(1) IBMN=MIN(IB, VELCHE(/2)) IGMN=MIN(IC,VELCHE(/1)) VELCHE(IGMN,IBMN)=ABS(DJAC) 3002 CONTINUE 3000 CONTINUE GOTO 520 C C ================ FORMULATION POUTRE ET TUYAU ==================== C ELSE IF(MFR.EQ.7.OR.MFR.EQ.13.OR.MFR.EQ.49) THEN IDI2=IDIM-1 DO 7000 IB=1,NBELEM C DO 7002 IC=1,NBPGAU MPTVAL=IVAJAC MELVAL = IVAL(1) IBMN=MIN(IB, VELCHE(/2)) IGMN=MIN(IC, VELCHE(/1)) VELCHE(IGMN,IBMN)=DJAC 7002 CONTINUE 7000 CONTINUE GOTO 520 C C ================ FORMULATION COQUE EPAISSE ==================== C ELSE IF(MFR.EQ.5) THEN C NBPGA1=MINTE1.POIGAU(/1) NBN1 =MINTE1.SHPTOT(/2) SEGINI,TR1 C C UNE PETITE HORREUR ON CONSIDERE LES EPAISSEURS CONSTANTES C DO 5010 IC=1,NBNN TH(IC)=UN 5010 CONTINUE DO 5000 IB=1,NBELEM C C DO 5002 IC=1,NBPGAU E=DZEGAU(IC) MPTVAL=IVAJAC MELVAL = IVAL(1) IBMN=MIN(IB, VELCHE(/2)) IGMN=MIN(IC, VELCHE(/1)) VELCHE(IGMN,IBMN)=ABS(DJAC) 5002 CONTINUE 5000 CONTINUE GOTO 520 ENDIF C--------------------------------------------------------------------- C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE ISOUS C--------------------------------------------------------------------- C 520 CONTINUE MPTVAL=IVAJAC SEGSUP,MPTVAL,TRA 500 CONTINUE SEGDES,MCOORD RETURN C 9990 CONTINUE * C------------------------------------------------------------------- C ERREUR DANS UNE ZONE , DESACTIVATION ET RETOUR C------------------------------------------------------------------- MPTVAL=IVAJAC SEGSUP,MPTVAL * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales