C IDVARI SOURCE FD218221 24/02/07 21:15:14 11834 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 PPARAM -INC CCOPTIO -INC CCHAMP * -INC SMMODEL POINTEUR NOMID1.NOMID * CHARACTER*16 MOMODL(200) * IMODEL=IPMODL nomid=imodel.lnomid(10) IF (nomid.NE.0) THEN segini,nomid1=nomid nbrobl=nomid1.lesobl(/2) nbrfac=nomid1.lesfac(/2) segdes nomid,nomid1 ipcomp=nomid1 return endif IPCOMP = 0 NBROBL = 0 NBRFAC = 0 NOMID = 0 C NMAT = imodel.MATMOD(/2) 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 C MATEPL = 0 C 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 non lineaire * ------------------------- 20 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,800),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.83) THEN * OTTOVARI (BETON) MATEPL=148 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 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 ELSE IF (IPLAC.EQ.74) THEN * ACLJ MATEPL=161 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.75) THEN * DP_SOL MATEPL=162 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.76) THEN * OUGLOVA MATEPL=175 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.77) THEN * IWPR3D_SOL MATEPL=164 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.78) THEN * NORTON MATEPL=181 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.79) THEN * POLYNOMIAL MATEPL=182 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.80) THEN * BLACKBURN MATEPL=183 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.81) THEN * BLACKBURN_2 MATEPL=184 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.82) THEN * LEMAITRE MATEPL=185 INMAT=INMAT+1 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 ELSE IF (IPLAC.EQ.19 ) THEN * KELVIN MATEPL=174 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 * ONERA MATEPL=25 ELSE IF (IPLAC.EQ.1 ) THEN * GUIONNET MATEPL=17 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.2 ) THEN * ONERA 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 * NOUAILHAS_A MATEPL=76 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.11 ) THEN * NOUAILHAS_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 ELSE IF (IPLAC.EQ.30 ) THEN * CHABOCHE MATEPL=165 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.31 ) THEN * FLDO3D SELLIER MATEPL=187 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.32 ) THEN * INCL3D SELLIER MATEPL=188 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.33 ) THEN * ENDO3D SELLIER MATEPL=189 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.34 ) THEN * FLUISO3D SELLIER MATEPL=190 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.35 ) THEN * FLUORTHO3D SELLIER MATEPL=191 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 ELSE IF (IPLAC.EQ.19) THEN * CONCYC MATEPL=163 INMAT=INMAT+1 ELSE IF (IPLAC.EQ.20) THEN * EFEM MATEPL=177 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 * * Comportement type IMPEDANCE * ------------------------------ 800 CONTINUE IF (NMAT.GE.INMAT) THEN CALL MODIMP(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.3.) THEN MATEPL = 11 GO TO 150 ELSEIF(IPLAC.LT.0.OR.IPLAC.GT.4) THEN GOTO 99 ELSE MATEPL = 10 GOTO 150 ENDIF ENDIF GOTO 150 ENDIF * 150 CONTINUE C C COQUE INTEGREE OU PAS ? IF (INFMOD(/1).NE.0)THEN NPINT=INFMOD(1) ELSE NPINT=0 ENDIF C MELE=NEFMOD C 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) if (matepl.eq.11.and.inmat.lt.nmat) then inmat = inmat + 1 goto 20 endif 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.OR. . MATEPL.EQ.174) 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.OR. & MATEPL.EQ.165 .OR. & MATEPL .EQ.187 .OR. MATEPL.EQ.188 .OR. c sellier & MATEPL .EQ.189 .OR. MATEPL.EQ.190 .OR. & MATEPL .EQ.191) 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.OR.MATEPL.EQ.163.OR. & MATEPL.EQ.177) 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.OR.MATEPL.EQ.162.OR.MATEPL.EQ.164)) THEN CALL IDVAR7(MATEPL,MFR,IFOUR,NPINT,IPCOMP,NBROBL,NBRFAC) C C modeles Nouailhas 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 if (ierr.ne.0) return nomid = ipcomp GOTO 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 GOTO 999 ELSE IF (FORMOD(1).EQ.'DIFFUSION') THEN IF (CMATEE.EQ.'VISQUEUS') THEN if (ifour.eq.2) then NBROBL = 3 else NBROBL = 2 endif NBRFAC = 0 SEGINI,NOMID LESOBL(1) = 'VI1X' LESOBL(2) = 'VI1Y' if (ifour.eq.0) LESOBL(2) = 'VI1Z' if (ifour.eq.2) LESOBL(3) = 'VI1Z' ELSE GOTO 99 ENDIF GOTO 999 ENDIF GOTO 99 C*=====================================================================* C*= Autres cas : segment NOMID vide =* C*=====================================================================* 99 CONTINUE SEGINI,NOMID 999 CONTINUE SEGDES,NOMID IPCOMP = NOMID * * 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