C IDVARI SOURCE BR232186 13/12/09 21:15:19 7841 SUBROUTINE IDVARI(MFR,IPMODL,IPCOMP,NBROBL,NBRFAC) *--------------------------------------------------------------------* * * * RECHERCHE DES NOMS DE COMPOSANTES DES VARIABLES INTERNES * * ________________________________________________________ * * * * ENTREES: * * * * MFR NUMERO DE LA FORMULATION * * IPMODL OBJET MODEL ELEMENTAIRE ( SEGMENT ACTIF ) * * * * SORTIES: * * * * IPCOMP POINTEUR SUR LES LISTES DE NOMS DE COMPOSANTES * * obligatoires et facultatives * * * * NBROBL nombre de composantes obligatoires * * * * NBRFAC nombre de composantes facultatives * * * *--------------------------------------------------------------------* * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC SMMODEL -INC CCOPTIO -INC CCHAMP * POINTEUR NOMID1.NOMID * CHARACTER*16 MOMODL(200) * NBROBL=0 NBRFAC=0 NOMID=0 MATEPL=0 C IMODEL=IPMODL IF( Lnomid(10).NE.0) THEN nomid=Lnomid(10) segini,nomid1=nomid nbrobl=nomid1.lesobl(/2) nbrfac=nomid1.lesfac(/2) ipcomp=nomid1 segdes nomid,nomid1 return endif NMAT=MATMOD(/2) MELE=NEFMOD C C COQUE INTEGREE OU PAS ? C IF(INFMOD(/1).NE.0)THEN NPINT=INFMOD(1) ELSE NPINT=0 ENDIF IF (FORMOD(1).NE.'MECANIQUE'.AND.FORMOD(1).NE.'POREUX') GOTO 1300 C*=====================================================================* C*= Formulation 'MECANIQUE' =* C*=====================================================================* CALL MODLIN(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1)) IF (IPLAC.EQ.0) GOTO 99 IF (IPLAC.NE.0) THEN IF (NMAT.GE.2) THEN CALL MODELA(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(2)) * * TEST POUR LE CAS 'SECTION' * IF (IPLAC.EQ.7) THEN MATEPL=41 GOTO 150 ENDIF * IF (IPLAC.EQ.0) THEN MATEPL=0 INMAT=2 ELSE IF (IPLAC.EQ.9.OR.IPLAC.EQ.10) THEN MATEPL=10 INMAT=3 ELSE MATEPL=0 INMAT=3 IF (IPLAC.NE.1.AND.IPLAC.NE.6. & AND.IPLAC.NE.2.AND.IPLAC.NE.11) GOTO 150 ENDIF ELSE IF (IPLAC.EQ.1) THEN MATEPL=0 GOTO 150 ENDIF GOTO 99 ENDIF * * Comportement type IMPEDANCE * ------------------------------ IF (NMAT.GE.INMAT) THEN CALL MODIMP(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.1 ) THEN * IMPEDANCE MATEPL=11 GO TO 150 ENDIF ENDIF * * Comportement non lineaire * ------------------------- IF (NMAT.GE.INMAT) THEN CALL MODNLI(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.0) GOTO 150 INMAT=INMAT+1 * * Debranchement suivant famille de modeles : * 100 => PLASTIQUE 200 => FLUAGE * 300 => VISCOPLASTIQUE 400 => ENDOMMAGEMENT * 500 => PLASTIQUE_ENDOM(MAGEMENT) 600 => NON_LINEAIRE * 700 => VISCO_EXTERNE 800 => IMPEDANCE * GOTO (100,200,300,400,500,600,700),IPLAC * * Comportement plastique * ---------------------- 100 CONTINUE IF (NMAT.GE.INMAT) THEN CALL MODPLA(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.0) THEN * ISOTROPE MATEPL=5 ELSE IF (IPLAC.EQ.1) THEN * ISOTROPE MATEPL=5 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.2) THEN * PARFAIT MATEPL=1 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.3) THEN * CINEMATIQUE MATEPL=4 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.4) THEN * DRUCKER-PRAGER MATEPL=15 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.5) THEN * DRUCKER-SIMPLE MATEPL=3 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.6) THEN * BETON MATEPL=9 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.7) THEN * CHABOCHE1 MATEPL=7 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.8) THEN * CHABOCHE2 MATEPL=12 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.9) THEN * TUYAU-FISSURE MATEPL=14 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.10) THEN * ENDOMMAGEABLE MATEPL=26 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.11) THEN * GAUVAIN MATEPL=16 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.12) THEN * LINESPRING MATEPL=2 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.13) THEN * UBIQUITOUS MATEPL=28 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.14) THEN * GLOBAL MATEPL=32 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.15) THEN * CAM-CLAY MATEPL=33 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.16) THEN * MOHR COULOMB MATEPL=34 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.17) THEN * JOINT_DILATANT MATEPL=35 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.18) THEN * BETON_AXI MATEPL=36 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.19) THEN * GURSON MATEPL=38 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.20) THEN * BETON_UNI MATEPL=39 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.21) THEN * ACIER_UNI MATEPL=40 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.51) THEN * ANCRAGE_ACIER MATEPL=93 INMAT=INMAT+1 * * SECTION * MATEPL=41 VOIR CI DESSUS * ELSE IF (IPLAC.EQ.23) THEN * OTTOSEN (BETON) MATEPL=42 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.24) THEN * MAZARS_FIB MATEPL=46 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.25) THEN * AMADEI_SAEB MATEPL=47 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.26) THEN * HUJEUX MATEPL=48 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.27) THEN * STEINBERG COCHRAN GUINAN MATEPL=49 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.28) THEN * ZERILLI ARMSTRONG MATEPL=5 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.29) THEN * PRESTON TONKS WALLACE MATEPL=52 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.30) THEN * BETOCYCL MATEPL=54 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.31) THEN * ROTATING CRACK MATEPL=55 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.32) THEN * JOINT_SOFT MATEPL=56 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.49) THEN * ANCRAGE_ELIGEHAUSEN MATEPL=91 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.69) THEN * BILI_EFFX MATEPL=150 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.33) THEN * BILI_MOMY MATEPL=57 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.34) THEN * BILI_EFFZ MATEPL=58 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.35) THEN * TAKEMO_MOMY MATEPL=59 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.36) THEN * TAKEMO_EFFZ MATEPL=60 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.37) THEN * BETON_INSA MATEPL=66 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.38) THEN * ECROUIS_INSA MATEPL=67 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.39) THEN * PARFAIT_INSA MATEPL=68 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.40) THEN * ALONSO MATEPL=69 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.41) THEN * PAKZAD MATEPL=71 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.42) THEN * INFILL_UNI MATEPL=72 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.43) THEN * CISAIL_NL MATEPL=73 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.44) THEN * FRAGILE_UNI MATEPL=78 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.45) THEN * BETON_BAEL MATEPL=79 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.46) THEN * PARFAIT_UNI MATEPL=80 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.50) THEN * ANCRAGE_PARFAIT MATEPL=92 INMAT=INMAT+1 * ELSE IF (IPLAC.EQ.47) THEN * STRUT_UNI MATEPL=83 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.48) THEN * HINTE MATEPL= 89 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.52) THEN * BETON_URGC MATEPL= 99 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.53) THEN * UNILATERAL MATEPL=104 INMAT=INMAT+1 * * BCN ELSE IF (IPLAC.EQ.54) THEN c MRS_LADE MATEPL=111 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.55) THEN c J2 MATEPL=112 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.56) THEN c RH_COULOMB MATEPL=113 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.57) THEN c VMT_FEFP MATEPL=114 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.58) THEN c RHMC_FEFP MATEPL=115 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.59) THEN c POWDER_FEFP MATEPL=116 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.60) THEN c POWDER_FEFP MATEPL=117 INMAT=INMAT+1 * BCN * ELSE IF (IPLAC.EQ.61) THEN * JOINT_COAT MATEPL=119 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.62) THEN * CONCRETE_UNI MATEPL=123 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.63) THEN * JOINT_COAT MATEPL=126 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.64) THEN * INCO MATEPL=129 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.65) THEN * DRUCKER_PRAGER2 MATEPL= 140 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.67) THEN * INTIMP MATEPL= 145 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.68) THEN * INTJOI MATEPL= 146 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.70) THEN * ISS_GRANGE MATEPL= 151 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.71) THEN * RUP_THER MATEPL= 152 INMAT=INMAT+1 C +BR ELSE IF (IPLAC.EQ.72) THEN * RICBET_UNI MATEPL= 160 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.73) THEN * BA1D MATEPL= 147 INMAT=INMAT+1 C -BR ENDIF ELSE * * Option par defaut * MATEPL=5 ENDIF GOTO 150 * * Comportement FLUAGE * ------------------- 200 CONTINUE IF (NMAT.GE.INMAT) THEN CALL MODFLU(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.0 ) THEN * NORTON MATEPL=19 ELSE IF (IPLAC.EQ.1 ) THEN * NORTON MATEPL=19 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.2 ) THEN * BLACKBURN MATEPL=20 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.3 ) THEN * RCCMR-316 MATEPL=22 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.4 ) THEN * RCCMR-304 MATEPL=23 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.5 ) THEN * LEMAITRE MATEPL=24 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.6 ) THEN * POLYNOMIAL MATEPL=21 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.7 ) THEN * BLACKBURN_2 MATEPL=61 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.8 ) THEN * CERAMIQUE MATEPL=65 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.9) THEN * MAXWELL MATEPL=74 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.10 ) THEN * COMETE MATEPL=84 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.11 ) THEN * X11 MATEPL=85 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.12 ) THEN * CCPL MATEPL=86 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.13 ) THEN * BPEL_RELAX MATEPL=95 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.14 ) THEN * BETON_URGC MATEPL=101 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.15 ) THEN * SODERBERG MATEPL=102 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.16 ) THEN * MAXOTT MATEPL=106 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.17 ) THEN * FBB1 MATEPL=127 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.18 ) THEN * FBB2 MATEPL=128 INMAT=INMAT+1 ENDIF ELSE MATEPL=19 ENDIF GOTO 150 * * Comportement VISCOPLASTIQUE * --------------------------- 300 CONTINUE IF (NMAT.GE.INMAT) THEN CALL MODVIS(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.0 ) THEN * CHABOCHE MATEPL=25 ELSE IF (IPLAC.EQ.1 ) THEN * GUIONNET MATEPL=17 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.2 ) THEN * CHABOCHE MATEPL=25 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.3 ) THEN * VISCODOMMAGE MATEPL=29 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.5 ) THEN * POUDRE_A MATEPL=44 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.6 ) THEN * POUDRE_B MATEPL=45 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.7 ) THEN * OHNO MATEPL=25 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.8 ) THEN * DDI MATEPL=63 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.9 ) THEN * KOCK MATEPL=70 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.10 ) THEN * NOUAILLAS_A MATEPL=76 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.11 ) THEN * NOUAILLAS_B MATEPL=77 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.12 ) THEN * VISK2 MATEPL=82 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.13 ) THEN * VISCOHINTE MATEPL=90 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.14 ) THEN * MISTRAL MATEPL=94 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.15 ) THEN * BETON_URGC MATEPL=100 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.16 ) THEN * LEMENDO MATEPL=103 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.17 ) THEN * FLUNOR2 MATEPL=105 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.18 ) THEN * GATT_MONERIE MATEPL=107 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.19 ) THEN * UO2 MATEPL=108 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.20 ) THEN * BETON_URGC_ENDO MATEPL=122 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.21 ) THEN * DOUBLE ENDOMMAGEMENT MATEPL=130 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.22 ) THEN * CHAB_SINH_R MATEPL=136 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.23 ) THEN * CHAB_SINH_X MATEPL=137 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.24 ) THEN * CHAB_NOR_R MATEPL=138 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.25 ) THEN * CHAB_NOR_X MATEPL=139 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.26 ) THEN * PELLET MATEPL=142 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.27 ) THEN * FLUTRA MATEPL=143 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.28 ) THEN * SYCO1 MATEPL=153 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.29 ) THEN * SYCO2 MATEPL=154 INMAT=INMAT+1 ENDIF ELSE MATEPL=25 ENDIF GOTO 150 * * Comportement type ENDOMMAGEMENT * --------------------------- 400 CONTINUE IF (NMAT.GE.INMAT) THEN CALL MODEND(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.0 ) THEN * MAZARS ( par défaut) MATEPL=30 ELSE IF (IPLAC.EQ.1 ) THEN * MAZARS MATEPL=30 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.2 ) THEN * UNILATERAL MATEPL=31 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.3 ) THEN * ROTATING_CRACK MATEPL=37 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.4 ) THEN * SIC_SIC MATEPL=88 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.5 ) THEN * MICROPLANS MATEPL=96 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.6 ) THEN * VISCOUNILATERAL MATEPL=97 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.7 ) THEN * MICROISO MATEPL=98 INMAT=INMAT+1 * BCN ELSE IF (IPLAC.EQ.8 ) THEN * MODIFIED VON MISES MATEPL=118 INMAT=INMAT+1 * BCN ELSE IF (IPLAC.EQ.9) THEN * CRUSH-CRACK MATEPL=124 INMAT=INMAT+1 * RDj ELSE IF (IPLAC.EQ.10) THEN * DAMAGE_TC - R. Faria & J. Oliver MATEPL= 125 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.11) THEN * SICSCAL MATEPL= 131 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.12) THEN * SICTENS MATEPL= 132 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.13) THEN * DESMORAT MATEPL=134 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.14) THEN * Fatigue damage model (fatsin) MATEPL=141 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.15) THEN * RICRAG MATEPL=144 INMAT=INMAT+1 C +BR ELSE IF (IPLAC.EQ.16) THEN * GLRC_DM MATEPL=157 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.17) THEN * RICBET MATEPL=158 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.18) THEN * RICCOQ MATEPL=159 INMAT=INMAT+1 C -BR ENDIF ELSE MATEPL=30 ENDIF GOTO 150 * * Comportement type PLASTIQUE_ENDOM(MAGEMENT) * ------------------------------------------- 500 CONTINUE IF (NMAT.GE.INMAT) THEN CALL MODPLE(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.0 ) THEN * PSURY ( par défaut) MATEPL=51 ELSE IF (IPLAC.EQ.1 ) THEN * PSURY MATEPL=51 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.2 ) THEN * ROUSSELIER MATEPL=62 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.3 ) THEN * GURSON2 MATEPL=64 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.4 ) THEN * DRAGON MATEPL=75 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.5 ) THEN * BETON_URGC MATEPL=120 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.6 ) THEN * BETON_INSA MATEPL=121 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.7 ) THEN * BETON_DYNAR_LMT MATEPL=133 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.8) THEN * ENDO_PLAS MATEPL = 135 INMAT = INMAT+1 ELSE IF (IPLAC.EQ.9) THEN * GERNAY MATEPL = 155 INMAT = INMAT+1 ELSE IF (IPLAC.EQ.10) THEN * WELLS MATEPL = 156 INMAT = INMAT+1 ENDIF ELSE MATEPL=51 ENDIF GOTO 150 * * Comportement type NON_LINEAIRE * ------------------------------ 600 CONTINUE IF (NMAT.GE.INMAT) THEN CALL MODENL(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.1 ) THEN * EQUIPLAS MATEPL=87 ENDIF ENDIF GO TO 150 * * Comportement type VISCO_EXTERNE * ------------------------------- 700 CONTINUE * Tous les modeles 'VISCO_EXTERNE' ont les 4 memes variables * internes pre-definies MATEPL = -101 GO TO 150 ENDIF GOTO 150 ENDIF GOTO 99 * 150 CONTINUE IF (MATEPL.EQ.19.OR.MATEPL.EQ.21) THEN CALL IDVAR1(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C ELSE IF (MATEPL.EQ.10.OR.MATEPL.EQ.11) THEN CALL IDVA13(MFR,IPMODL,IPCOMP,NBROBL,NBRFAC,MATEPL) C ELSE IF (MATEPL.EQ.20.OR.MATEPL.EQ.22.OR. . MATEPL.EQ.23.OR.MATEPL.EQ.61) THEN CALL IDVAR2(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C ELSE IF (MATEPL.EQ.84.OR.MATEPL.EQ.85.OR. . MATEPL.EQ.86.OR.MATEPL.EQ.102) THEN CALL IDVFLO(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C ELSE IF (MATEPL.EQ.24.OR.MATEPL.EQ.74.OR.MATEPL.EQ.95) THEN CALL IDVAR3(MATEPL,MFR,IFOUR,IPCOMP,NBROBL,NBRFAC) C ELSE IF (MATEPL.EQ.25.OR.MATEPL.EQ.63.OR.MATEPL.EQ.70.OR. & MATEPL.EQ.94.OR.MATEPL.EQ.107.OR. & MATEPL.EQ.108.OR.MATEPL.EQ.130.OR. & MATEPL.EQ.136.OR.MATEPL.EQ.137.OR. & MATEPL.EQ.138.OR.MATEPL.EQ.139.OR. & MATEPL.EQ.153.OR.MATEPL.EQ.154) THEN CALL IDVAR4(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C ELSE IF (MATEPL.EQ.30.OR.MATEPL.EQ.31.OR.MATEPL.EQ.37.OR. & MATEPL.EQ.88.OR. & MATEPL.EQ.96.OR.MATEPL.EQ.97.OR.MATEPL.EQ.98.OR. & MATEPL.EQ.118.OR.MATEPL.EQ.124.OR.MATEPL.EQ.125.OR. & MATEPL.EQ.131.OR.MATEPL.EQ.132.OR.MATEPL.EQ.134.OR. & MATEPL.EQ.141.OR.MATEPL.EQ.144.OR. & MATEPL.EQ.157.OR.MATEPL.EQ.158.OR. & MATEPL.EQ.159) THEN CALL IDVAR5(MATEPL,MFR,IFOUR,0,IPCOMP,NBROBL,NBRFAC) C C modeles ISPRA decembre 95 & BILIN_EFFX 2010 & ISS_GRANGE & RUP_THER C ELSE IF ((MATEPL.GE.54.AND.MATEPL.LE.60).OR. & (MATEPL.EQ.72.OR.MATEPL.EQ.73.OR. & MATEPL.EQ.91.OR.MATEPL.EQ.119.OR.MATEPL.EQ.126 & .OR.MATEPL.EQ.129.OR.MATEPL.EQ.150.OR.MATEPL.EQ.151 & .OR.MATEPL.EQ.152.OR.MATEPL.EQ.155.OR.MATEPL.EQ.156 & .OR.MATEPL.EQ.160)) THEN CALL IDVAR7(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C C modeles Nouaillas C ELSE IF (MATEPL.EQ.76) THEN CALL IDVAR8(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) ELSE IF (MATEPL.EQ.77) THEN CALL IDVAR9(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C visk2 ELSE IF (MATEPL.EQ.82) THEN CALL IDVA10(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C ELSE IF (MATEPL.EQ.89.OR.MATEPL.EQ.90) THEN CALL IDVA11(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) * BCN plastic and viscoplastic models ELSE IF ( MATEPL.EQ.111 . .OR.MATEPL.EQ.112.OR.MATEPL.EQ.113 . .OR.MATEPL.EQ.114.OR.MATEPL.EQ.115 . .OR.MATEPL.EQ.116.OR.MATEPL.EQ.117) THEN CALL IDVA12(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) * BCN ELSE * * ici tous les autres modeles * CALL IDVAR6(MATEPL,MFR,MELE,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) ENDIF nomid = ipcomp GO TO 999 C*=====================================================================* C*= Autres formulations que 'MECANIQUE' =* C*=====================================================================* 1300 CONTINUE IF (FORMOD(1).EQ.'LIAISON') THEN IF (CMATEE.EQ.'NEWMOD') THEN NBROBL = 1 NBRFAC = 0 SEGINI,NOMID LESOBL(1) = 'FLIA' ELSE NBROBL = 2 NBRFAC = 3 SEGINI,NOMID LESOBL(1) = 'FLIA' LESOBL(2) = 'SLIA' LESFAC(1) = 'VAEN' LESFAC(2) = 'VARE' LESFAC(3) = 'VAMA' ENDIF IPCOMP = NOMID SEGDES,NOMID GOTO 999 ENDIF GOTO 99 C*=====================================================================* C*= Autres cas : segment NOMID vide =* C*=====================================================================* 99 CONTINUE SEGINI NOMID IPCOMP=NOMID SEGDES NOMID 999 CONTINUE * * pour les elements xfem on utilise un MCHELM de TYPE 'ENRICHIS' avec * pour composantes H F1 F2 ... contenant des pointeurs vers des LISTreel * dont les valeurs sont les level set aux noeuds de l'EF enrichi * => on supprime cette partie (BP, le 23.09.2009) * IF ( MELE.EQ.263) then * ENDIF RETURN END