hotanp
C HOTANP SOURCE OF166741 24/10/07 21:15:23 12016 & DTPS,IPCHOT,IRET) *_______________________________________________________________________ * * ENTREES : * --------- * * IPCHE1 pointeur sur le MCHAML de sous type CONTRAINTES * IPCHE2 pointeur sur le MCHAML de sous type VARIABLES INTERNES * IPCHE3 pointeur sur le MCHAML de sous type CARACTERISTIQUES * IPMODL pointeur sur l'objet de type MMODEL * XPREC flottant (par defaut 1.D-3) * DTPS flottant increment de temps pour les modèles visqueux * * SORTIES : * --------- * * IPCHOT pointeur sur le MCHAML de sous type MATRICE de HOOKE * TANGENTE * IRET 1 ou 0 suivant succes ou pas * * Passage aux nouveaux CHAMELEM par JM CAMPENON le 05/91 * *_______________________________________________________________________ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMELEME -INC SMCOORD -INC SMMODEL -INC SMINTE -INC SMLREEL *- Nombre de points maximal pour stocker une courbe de traction PARAMETER (LTRAC=2*75) SEGMENT WRK1 REAL*8 DDHOOK(NSTRS,NSTRS) REAL*8 DDHOMU(NSTRS,NSTRS) ENDSEGMENT SEGMENT MIDON1 REAL*8 XMAT(NCXMAT) ENDSEGMENT * SEGMENT MIDON2 REAL*8 VAR(NVART) ENDSEGMENT * SEGMENT MIDON3 REAL*8 XCAR(NCART) ENDSEGMENT * DIMENSION TRAC(LTRAC) * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * CHARACTER*8 CMATE CHARACTER*(NCONCH) CONM PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) LOGICAL lsupva,lsupco * lsupva=.false. IRET = 0 * NHRM=NIFOUR KERRE=0 KPE =0 * * Verification du lieu support du MCHAML de contraintes * IF (ISUPCO.GT.1) RETURN * * Verification du lieu support du MCHAML de variables internes * IF (ISUPVA.GT.1) RETURN * * Verification du lieu support du MCHAML de materiau * IF (ISUPMA.GT.1) RETURN * * Activation du MMODEL * MMODEL=IPMODL SEGACT MMODEL NSOUS=KMODEL(/1) * * Creation du MCHELM de MATRICE DE HOOKE TANGENTE * N1=NSOUS L1=16 N3=6 SEGINI MCHELM IPCHOT=MCHELM TITCHE='MATRICE DE HOOKE' IFOCHE=IFOUR * * Boucle sur les sous zones du maillage * DO 100 ISOUS=1,NSOUS * * Traitement du modele * IPMOD1=KMODEL(ISOUS) IMODEL=IPMOD1 SEGACT IMODEL IPMAIL=IMAMOD CONM =CONMOD IMACHE(ISOUS) = IPMAIL CONCHE(ISOUS) = CONMOD * MELE=NEFMOD MELEME=IMAMOD SEGACT MELEME NBNN=NUM(/1) NBELEM=NUM(/2) NFOR=FORMOD(/2) NMAT=MATMOD(/2) C C COQUE INTEGREE OU PAS ? NPINT=INFMOD(1) * * Nature du materiau * IF (CMATE.EQ.' ') THEN SEGSUP MCHELM RETURN ENDIF * * Information sur l'element fini * MELE =INFELE(1) MFR =INFELE(13) IPPORE=0 IF(MFR.EQ.33) IPPORE=NBNN NBG =INFELE(6) NBGS =INFELE(4) NSTRS=INFELE(16) LW =INFELE(7) LHOOK=INFELE(10) LHOO2=LHOOK*LHOOK ICARA=INFELE(5) * MINTE=INFELE(11) MINTE=INFMOD(5) IPMIN1=MINTE * * Creation du tableau INFOS ( contraintes et variables internes ) * IF (IRTD.EQ.0) THEN SEGDES IMODEL,MMODEL SEGSUP MCHELM RETURN 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)=3 * * Creation du MCHAML de HOOKE TANGENTE * N2=1 SEGINI MCHAML ICHAML(ISOUS)=MCHAML NOMCHE(1)='MAHO' TYPCHE(1)='POINTEURLISTREEL' * IVAHOO=0 WRK1=0 MOCARA=0 NCARA=0 NCARF=0 MOMATR=0 NMATR=0 NMATF=0 MOVARI=0 NVARI=0 NVARF=0 IVACAR=0 IVAMAT=0 IVARI=0 IVACON=0 C SEGACT,MINTE * * Traitement des champ de CONTRAINTES * if(lnomid(4).ne.0) then nomid=lnomid(4) segact nomid mocont=nomid nstrs=lesobl(/2) nfac=lesfac(/2) lsupco=.false. else lsupco=.true. endif MOTERR(1:4)='CONT' MOTERR(5:8)=NOMTP(MELE) GOTO 9990 ENDIF * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 * IF (ISUPCO.EQ.1) THEN ENDIF * * Traitement des champ de VARIABLES INTERNES * if(lnomid(10).ne.0) then nomid=lnomid(10) segact nomid movari=nomid nvari=lesobl(/2) nvarf=lesfac(/2) lsupva=.false. else lsupva=.true. endif IF (MOVARI.EQ.0) THEN MOTERR(1:4)='VARI' MOTERR(5:8)=NOMTP(MELE) GOTO 9990 ENDIF NVART=NVARI+NVARF * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 * IF (ISUPVA.EQ.1) THEN ENDIF * * Creation du tableau INFOS (variables internes,caracteristiques) * IF (IRTE.EQ.0) GOTO 9990 * * Traitement des champs de materiaux * NBROBL=0 NBRFAC=0 IF (CMATE.EQ.'ISOTROPE') THEN IF (MAPL.EQ.1) THEN NBROBL=3 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' LESOBL(3)='SIGY' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ELSE IF (MAPL.EQ.3) THEN NBROBL=4 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' LESOBL(3)='LTR ' LESOBL(4)='LCS ' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ELSE IF (MAPL.EQ.15) THEN NBROBL=11 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' LESOBL(3)='ETA ' LESOBL(4)='MU ' LESOBL(5)='KL ' LESOBL(6)='GAMM' LESOBL(7)='DELT' LESOBL(8)='ALFA' LESOBL(9)='BETA' LESOBL(10)='K ' LESOBL(11)='H ' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ELSE IF (MAPL.EQ.4) THEN NBROBL=4 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' LESOBL(3)='SIGY' LESOBL(4)='H ' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ELSE IF (MAPL.EQ.5) THEN NBROBL=3 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' LESOBL(3)='ECRO' * NBTYPE=3 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' TYPE(2)='REAL*8' TYPE(3)='POINTEUREVOLUTIO' ELSE IF (MAPL.EQ.26) THEN NBROBL=3 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' LESOBL(3)='DC ' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ELSE IF (MAPL.EQ.38) THEN * pour le modele de gurson l'option est indisponible GOTO 9990 * ELSE IF (MAPL.EQ.43) THEN * modele visco-plastique parfait NBROBL=5 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' LESOBL(3)='SIGY' LESOBL(4)='N ' LESOBL(5)='K ' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ELSE NBROBL=2 SEGINI NOMID MOMATR=NOMID LESOBL(1)='YOUN' LESOBL(2)='NU ' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ENDIF ELSE MOTERR(1:8)=NOMAT(MATE) MOTERR(9:12)=NOMAC(MAPL) MOTERR(13:20)=NOMFR(MFR) INTERR(1)=IFOUR GOTO 9990 ENDIF * SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 IF(ISUPMA.EQ.1)THEN IF(IERR.NE.0)THEN ISUPMA=0 GOTO 9990 ENDIF ENDIF * NCXMAT=NMATT IF(MAPL.EQ.3) NCXMAT=NMATT+7 * * Traitement des champs de caracteristiques * MOCARA = 0 NBROBL = 0 NBRFAC = 0 IVECT = 0 * * Cas des coques * IF (MFR.EQ.3) THEN IF(IFOCHE.GE.-2.OR.IFOCHE.LE.2) THEN NBROBL=2 SEGINI NOMID MOCARA=NOMID LESOBL(1)='EPAI' LESOBL(2)='CALF' * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' ENDIF ENDIF * NCARA=NBROBL NCARF=NBRFAC NCART=NCARA+NCARF IF (MOCARA.NE.0) THEN SEGSUP,NOTYPE IF (IERR.NE.0) GOTO 9990 * IF(ISUPMA.EQ.1)THEN IF(IERR.NE.0)THEN ISUPMA=0 GOTO 9990 ENDIF ENDIF SEGDES NOMID ENDIF * * Recherche de la taille des MELVALs a allouer * N2PTEL=NBG N2EL=NBELEM NEL=N2EL NBPTEL=N2PTEL * N1PTEL=0 N1EL=0 SEGINI MELVAL IVAHOO=MELVAL IELVAL(1)=MELVAL * * On met la courbe de traction a zero * SEGINI WRK1 * * DANS LE CAS DE COQUES INTEGREES ,ON LES TRAITE COMMME LE * MASSIF CONTRAINTE PLANE * IF(NPINT.NE.0)THEN IF(MELE.EQ.28)THEN IFOURB=-2 MFR1=1 ENDIF ELSE MFR1=MFR IFOURB=IFOUR ENDIF * * En cas de materiau endommageable * IF (MAPL.EQ.26.OR.MAPL.EQ.29) GOTO 555 * * MFR= MASS COQU RAYL POUT CISTR LIQU TUYA LISP GOTO(1000,66,3000,66,66,66,66,66,66,66,66,66,66,66,66, * TUFI RAMA RACO SURF ICQ & 66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,1000),MFR1 66 CONTINUE MOTERR(1:8)=NOMFR(MFR) GOTO 9990 *_______________________________________________________________________ * * Formulation MASSIVE *_______________________________________________________________________ * 1000 CONTINUE DO 1001 IB=1,NEL DO 1002 IGAU=1,NBPTEL * IF(MAPL.EQ.5) THEN MPTVAL=IVAMAT MELVAL=IVAL(1) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) YYYY=VELCHE(IGMN,IBMN) * MELVAL=IVAL(3) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) IMMM=IELCHE(IGMN,IBMN) * IF(KERRE.NE.0) THEN KERIB=IB KERIG=IGAU ENDIF ENDIF * & LTRAC,IGAU,IB,MATE,MAPL,XPREC,DTPS, & IFOURB,LHOOK,DDHOOK,IRTD) * IF(IRTD.EQ.-1) THEN KPE=-1 KPEIB=IB KPEIG=IGAU ENDIF C JG=LHOO2 SEGINI MLREEL MELVAL=IVAHOO IELCHE(IGAU,IB)=MLREEL KO=0 DO 1005 IO=1,LHOOK DO 1006 JO=1,LHOOK KO=KO+1 1006 CONTINUE 1005 CONTINUE C*// SEGDES MLREEL 1002 CONTINUE 1001 CONTINUE GOTO 510 *_______________________________________________________________________ * * Cas des coques minces *_______________________________________________________________________ * 3000 CONTINUE DO 3001 IB=1,NEL DO 3002 IGAU=1,NBPTEL * IF(MAPL.EQ.5) THEN MPTVAL=IVAMAT * MELVAL=IVAL(1) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) YYYY=VELCHE(IGMN,IBMN) * MELVAL=IVAL(3) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) IMMM=IELCHE(IGMN,IBMN) * IF(KERRE.NE.0) THEN KERIB=IB KERIG=IGAU ENDIF ENDIF * MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) EPAIST=VELCHE(IGMN,IBMN) * MELVAL=IVAL(2) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) * * DOHOT3 se chargera de convertir les efforts generalises (IVACON) * et les variables internes generalisees (IVARI) en contraintes et * variables internes "locales" * CALL DOHOT3(IVAMAT,NMATT,IVACON,NSTRS,IVARI,NVART, & TRAC,LTRAC,ALPHA,EPAIST,IGAU,IB,MATE,MAPL, & XPREC,DTPS,IFOURB,LHOOK,DDHOOK,IRTD) * IF(IRTD.EQ.-1) THEN KPE=-1 KPEIB=IB KPEIG=IGAU ENDIF C JG=LHOO2 SEGINI MLREEL MELVAL=IVAHOO IELCHE(IGAU,IB)=MLREEL KO=0 DO 3014 IO=1,LHOOK DO 3015 JO=1,LHOOK KO=KO+1 3015 CONTINUE 3014 CONTINUE C*// SEGDES MLREEL 3002 CONTINUE 3001 CONTINUE GOTO 510 *_______________________________________________________________________ * * Cas des materiaux endommageables *_______________________________________________________________________ * 555 CONTINUE IF(MAPL.EQ.26) NMATT=NMATT+4 NCXMAT=NMATT SEGINI MIDON1 SEGINI MIDON2 SEGINI MIDON3 DO 2001 IB=1,NEL DO 2002 IGAU=1,NBPTEL * * On recupere les Cts du mat.,les var. int. et les carac. * MPTVAL=IVAMAT DO 2010 ICOMP=1,2 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XMAT(ICOMP)=VELCHE(IGMN,IBMN) 2010 CONTINUE C IF(MAPL.EQ.29) GOTO 2015 C DO 2011 ICOMP=3,6 XMAT(ICOMP)=0.D0 2011 CONTINUE MELVAL=IVAL(3) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XMAT(7)=VELCHE(IGMN,IBMN) * 2015 MPTVAL=IVARI DO 2020 ICOMP=1,NVART MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VAR(ICOMP)=VELCHE(IGMN,IBMN) 2020 CONTINUE * IF(MOCARA.NE.0) THEN MPTVAL=IVACAR DO 2030 ICOMP=1,NCART MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XCAR(ICOMP)=VELCHE(IGMN,IBMN) 2030 CONTINUE ENDIF * * Selon le modele de materiau endommageable * IF (KERRE.NE.0) GOTO 66 * * JG=LHOO2 SEGINI MLREEL MELVAL=IVAHOO IELCHE(IGAU,IB)=MLREEL KO=0 IF(NPINT.NE.0.AND.MFR.EQ.3)THEN DDHOOK(1,3)=DDHOOK(1,4) DDHOOK(2,3)=DDHOOK(2,4) DDHOOK(3,1)=DDHOOK(1,3) DDHOOK(3,2)=DDHOOK(2,3) DDHOOK(3,3)=DDHOOK(4,4) DO 2041 IO=1,LHOOK/2 IO1=LHOOK*(IO-1) IO2=LHOOK*(2+IO) DO 2043 JO=1,LHOOK/2 JO1=IO1+JO JO2=IO2+JO 2043 CONTINUE 2041 CONTINUE ELSE DO 2040 IO=1,LHOOK DO 2042 JO=1,LHOOK KO=KO+1 2042 CONTINUE 2040 CONTINUE ENDIF C*// SEGDES MLREEL 2002 CONTINUE 2001 CONTINUE * SEGSUP MIDON1 SEGSUP MIDON2 SEGSUP MIDON3 IF(MAPL.EQ.26) NMATT=NMATT-4 GOTO 510 *____________________________________________________________________* * * * DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE ISOUS * *____________________________________________________________________* * * 510 CONTINUE * IF(MAPL.EQ.26.OR.MAPL.EQ.29) GOTO 110 * * ERREUR le materiau n'est pas encore implente pour la * formulation MFR et l'option IFOUR * IF(IRTD.EQ.0) THEN MOTERR(1:8)=NOMAT(MATE) MOTERR(9:12)=NOMAC(MAPL) MOTERR(13:20)=NOMFR(MFR) INTERR(1)=IFOUR GOTO 9990 ENDIF * * Contraintes en dehors de la courbe de traction * IF(KPE.EQ.-1) THEN INTERR(1)=KPEIB INTERR(2)=KPEIG MOTERR(1:4)=NOMTP(MELE) GOTO 9990 ENDIF * * Probleme courbe de traction * IF(KERRE.NE.0) THEN INTERR(1)=KERIB INTERR(2)=KERIG MOTERR(1:4)=NOMTP(MELE) GOTO 9990 ENDIF * 110 CONTINUE SEGDES MCHAML IF (IVAHOO.NE.0) THEN MELVAL=IVAHOO SEGDES MELVAL ENDIF * IF (ISUPMA.EQ.1) THEN ELSE ENDIF NOMID=MOMATR SEGSUP,NOMID * IF (ISUPMA.EQ.1) THEN ELSE ENDIF NOMID=MOCARA IF (MOCARA.NE.0) SEGSUP,NOMID * IF (ISUPVA.EQ.1) THEN ELSE ENDIF NOMID=MOVARI IF (lsupva) SEGSUP,NOMID * IF (ISUPCO.EQ.1) THEN ELSE ENDIF NOMID=MOCONT IF (lsupco) SEGSUP,NOMID * SEGDES,MINTE SEGDES IMODEL C*// SEGDES MELEME SEGSUP WRK1 100 CONTINUE IRET = 1 SEGDES MMODEL,MCHELM RETURN * 9990 CONTINUE *_______________________________________________________________________ * * ERREUR DANS UNE SOUS ZONE, DESACTIVATION ET RETOUR *_______________________________________________________________________ * IRET = 0 * IF (ISUPMA.EQ.1) THEN ELSE ENDIF NOMID=MOMATR SEGSUP,NOMID * IF (ISUPMA.EQ.1) THEN ELSE ENDIF NOMID=MOCARA IF (MOCARA.NE.0) SEGSUP,NOMID * IF (ISUPVA.EQ.1) THEN ELSE ENDIF NOMID=MOVARI IF (lsupva.AND.MOVARI.NE.0) SEGSUP,NOMID * IF (ISUPCO.EQ.1) THEN ELSE ENDIF NOMID=MOCONT * IF (IVAHOO.NE.0) THEN MELVAL=IVAHOO SEGSUP MELVAL ENDIF IF (WRK1.NE.0) SEGSUP WRK1 SEGDES,MINTE SEGDES MELEME SEGDES IMODEL SEGSUP MCHAML * SEGDES MMODEL SEGSUP MCHELM RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales