C NOMATE SOURCE FANDEUR 14/01/22 21:15:17 7891 SUBROUTINE NOMATE(FORMOD,NFOR,MATMOD,NMAT,CMATE,IMATE,INATU) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) * le dernier numero de materiau utilise est le : 150 *--------------------------------------------------------------------* * * * * * D{TERMINER UN NUM{RO POUR UN MODELE DE MATERIAU * * _______________________________________________ * * * * ENTREES * * * * FORMOD Liste des formulations * * NFOR Nombre de formulations * * MATMOD Liste des mat{riaux * * NMAT Nombre de mat{riaux * * * * SORTIES * * * * CMATE Nom du materiau (isotrope, orthotrope....) * * IMATE Num{ro du mat{riau * * INATU Num{ro de nature * * * * NOMS DE MATERIAUX POSSIBLES * * * *--------------------------------------------------------------------* * 1/ 'THERMIQUE' * * * * 'ISOTROPE' * * 'ORTHOTROPE' * * 'ANISOTROPE' * * 'CONDUCTION' * * 'CONVECTION' * * 'ADVECTION' non lineaire de conduction * * 'PHASE' non lineaire de conduction * *--------------------------------------------------------------------* * 2/ 'MECANIQUE' OU 6/ 'POREUX' * * * * ELASTIQUE * * 'ISOTROPE' * * 'ORTHOTROPE' * * 'ANISOTROPE' * * 'POREUX' * * 'HOMOGENEISE' * * 'UNIDIRECTIONNEL' * * 'SECTION' * * 'ARMATURE' * * 'MODAL' * * 'STATIQUE' * * 'ZONE_COHESIVE' * * * * PLASTIQUE * * 'PARFAIT' INATU = 1 * * 'LINESPRING' INATU = 2 * * 'DRUCKER-SIMPLE' INATU = 3 * * 'CINEMATIQUE' INATU = 4 * * 'ISOTROPE' INATU = 5 * * 'CHABOCHE1' INATU = 7 * * 'BETON' INATU = 9 * * 'CHABOCHE2' INATU = 12 * * 'TUYAU-FISSURE' INATU = 14 * * 'DRUCKER-PRAGER' INATU = 15 * * 'GAUVAIN' INATU = 16 * * 'ENDOMMAGEABLE' INATU = 26 * * 'UBIQUITOUS' INATU = 28 * * 'GLOBAL' INATU = 32 * * 'CAM-CLAY' INATU = 33 * * 'COULOMB' INATU = 34 * * 'JOINT_DILATANT' INATU = 35 * * 'BETON_AXI' INATU = 36 * * 'GURSON' INATU = 38 * * 'BETON_UNI' INATU = 39 * * 'ACIER_UNI' INATU = 40 * * 'FRAGILE_UNI' INATU = 78 * * 'BETON_BAEL' INATU = 79 * * 'PARFAIT_UNI' INATU = 80 * * 'STRUT_UNI' INATU = 83 * 'CINEMATIQUE_ANCRAGE' INATU = 92 * * 'ACIER_ANCRAGE' INATU = 93 * * 'SECTION' INATU = 41 * * 'OTTOSEN' INATU = 42 * * 'MAZARS_FIB' INATU = 46 * * 'AMADEI' INATU = 47 * * 'HUJEUX' INATU = 48 * * 'STEINBERG' INATU = 49 * * 'ZERILLI' INATU = 50 * * 'PRESTON' INATU = 52 * * 'BETOCYCL' INATU = 54 * * 'ROTATING_CRACK' INATU = 55 * * 'JOINT_SOFT' INATU = 56 * * 'ANCRAGE_ELIGEHAUSEN' INATU = 91 * * 'BILI_MOMY' INATU = 57 * * 'BILI_EFFZ' INATU = 58 * * 'TAKEMO_MOMY' INATU = 59 * * 'TAKEMO_EFFZ' INATU = 60 * * 'BETON_INSA' INATU = 66 * * 'ECROUIS_DECOU' INATU = 67 * * 'PARFAIT_DECOU' INATU = 68 * * 'ALONSO' INATU = 69 * C +BR * 'BA1D' INATU = 147 C -BR * 'PAKZAD' INATU = 71 * * 'INFILL_UNI' INATU = 72 * * 'CISAIL_NL' INATU = 73 * * 'HINT' INATU = 89 * 'BETON_URGC' INATU = 99 * 'UNILATERAL' (Fibre) INATU = 104 * * 'INCO' INATU = 129 * * 'INTIMP' INATU = 145 * * 'RICJOI' INATU = 146 * * BCN * * 'MRS_LADE' INATU = 111 * * 'J2' INATU = 112 * * 'RH_COULOMB' INATU = 113 * * 'VMT_FEFP' INATU = 114 * * 'RHMC_FEFP' INATU = 115 * * 'POWDER_FEFP' INATU = 116 * * 'POWDERCAP_FEFP' INATU = 117 * * BCN * * 'JOINT_COAT' INATU = 119 * 'CONCRETE_UNI' INATU = 123 * * 'MUR_SHEAR' INATU = 126 * * 'DRUCKER_PRAGER2' INATU = 140 * * 'BILIN_EFFX' INATU = 150 * * 'ISS_GRANGE' INATU = 151 * * 'RUP_THER' INATU = 152 * C +BR * 'RICBET_UNI' INATU = 160 * C -BR * * * FLUAGE * * 'NORTON' INATU = 19 * * 'BLACKBURN' INATU = 20 * * 'POLYNOMIAL' INATU = 21 * * 'RCCMR-316' INATU = 22 * * 'RCCMR-304' INATU = 23 * * 'LEMAITRE' INATU = 24 * * 'BLACKBURN_2' INATU = 61 * * 'CERAMIQUE' INATU = 65 * * 'MAXWELL' INATU = 74 * * 'COMETE' INATU = 84 * * 'CCPL' INATU = 85 * * 'X11' INATU = 86 * * 'BPEL_RELAX' INATU = 95 * 'BETON_URGC' INATU = 101 * 'SODERBERG' INATU = 102 * * 'MAXOTT' INATU = 106 * * 'FBB1' INATU = 127 * * 'FBB2' INATU = 128 * * * * VISCOPLASTIQUE * * 'GUIONNET' INATU = 17 * * 'CHABOCHE' INATU = 25 * * 'VISCODOMMAGE' INATU = 29 * * 'PARFAIT' INATU = 43 * * 'POUDRE_A' INATU = 44 * * 'POUDRE_B' INATU = 45 * * 'OHNO' INATU = 53 * * 'DDI' INATU = 63 * * 'KOCKS' INATU = 70 * * 'NOUAILLAS_A' INATU = 76 * * 'NOUAILLAS_B' INATU = 77 * * 'VISK2' INATU = 82 * * 'VISCOHINT' INATU = 90 * * 'MISTRAL' INATU = 94 * * 'BETON_URGC' INATU = 100 * * 'BETON_URGC_ENDO' INATU = 122 * * 'LEMENDO' INATU = 103 * * 'FLUNOR2' INATU = 105 * * 'GATT_MONERIE' INATU = 107 * * 'UO2' INATU = 108 * * 'VISCODD' INATU = 130 * * 'CHAB_SINH_R' INATU = 136 * * 'CHAB_SINH_X' INATU = 137 * 'CHAB_NOR_R' INATU = 138 * 'CHAB_NOR_X' INATU = 139 * 'PELLET' INATU = 142 * 'FLUTRA' INATU = 143 * 'SYCO1' INATU = 153 * 'SYCO2' INATU = 154 * * * * ENDOMMAGEABLE * * 'MAZARS' INATU = 30 * * 'UNILATERAL' INATU = 31 * * 'ROTATING_CRACK' INATU = 37 * * 'SIC_SIC' INATU = 88 * * 'MICROPLANS' INATU = 96 * 'VISCOUNILATERAL' INATU = 97 * 'MICROISO' INATU = 98 * 'SICSCAL' INATU = 131 * 'SICTENS' INATU = 132 * 'FATSIN' INATU = 141 * 'RICRAG' INATU = 144 * * 'MVM' INATU = 118 * * 'CRUCRA' INATU = 124 * * 'DAMAGE_TC' INATU = 125 * * 'DESMORAT' INATU = 134 C + BR * 'GLRC_DM' INATU = 157 * * 'RICBET' INATU = 158 * * 'RICCOQ' INATU = 159 C -BR * * * PLASTIQUE_ENDOM(MAGEABLE) * * 'PSURY' INATU = 51 * * 'ROUSSELIER' INATU = 62 * * 'GURSON2' INATU = 64 * * 'DRAGON' INATU = 75 * * 'BETON_URGC' INATU = 120 * * 'BETON_INSA' INATU = 121 * * 'BETON_DYNAR_LMT' INATU = 133 * * 'ENDO_PLAS' INATU = 135 * * 'GERNAY' INATU = 155 * * 'WELLS' INATU = 156 * * * * ELASTIQUE NON_LINEAIRE * * 'EQUIPLAS' INATU = 87 * * 'UTILISATEUR' INATU = -1 * * VISCO_EXTERNE * * 'GENERAL' IVIEX = 1 INATU = -2 * * 'DRUCKER_PRAGER' IVIEX = 2 en sortie de NOMATE, * * 'COHESION' IVIEX = 3 INATU = -2 - IVIEX * * 'CONSOLIDATION' IVIEX = 4 ce qui permet de * * 'UTILISATEUR' IVIEX = 5 recuperer IVIEX * * * * 'IMPEDANCE' * * 'ELASTIQUE' * * 'VOIGT' * * 'MAXWELL' * *--------------------------------------------------------------------* * 3/ 'LIQUIDE ' * * 'ISOTROPE' * *--------------------------------------------------------------------* * 4/ 'CONVECTION' * * la formulation suffit * *--------------------------------------------------------------------* * 5/ 'MECANIQUE+LIQUIDE' * * la formulation suffit * *--------------------------------------------------------------------* * 6/ 'POREUX' VOIR 2/ * *--------------------------------------------------------------------* * 7/ 'DARCY' * * * * 'ISOTROPE' * * 'ORTHOTROPE' * * 'ANISOTROPE' * *--------------------------------------------------------------------* * 8/ 'CONTACT ' * * * * 'COULOMB' INATU=1 * * 'FROCABLE' INATU=2 * *--------------------------------------------------------------------* * 9/ 'RAYONNEMENT' * * imate=1 ancien rayonnement avec table * * imate=2 fac_a_fac * * imate=3 infini * * imate=4 cavite * * inatu 1 cavite toute simple * * inatu=2 cavite ferme * * inatu=3 cavite syme * * inatu=4 cavite convexe * * inatu=5 cavite syme convexe * * inatu=6 cavite ferme convexe * * inatu=7 cavite syme ferme * * inatu=8 cavite syme convexe ferme * *--------------------------------------------------------------------* * 10/ 'MAGNETODYNAMIQUE' * * * * 'POTENTIEL_VECTEUR' * * 'ISOTROPE' * * 'ORTHOTROPE' * *--------------------------------------------------------------------* * 11/ 'NAVIER_STOKES' * * * * 'NEWTONIEN' * * 'BINGHAM' * * 'VISCOPLASTIQUE' * *--------------------------------------------------------------------* * 12/ 'MELANGE' * * * * 'CEREM' * * 'ZTMAX' * * 'PARALLELE' * * 'SERIE' * * 'UTILISATEUR' * *--------------------------------------------------------------------* * 13/ 'EULER' * * * * 'NEWTONIEN' * *--------------------------------------------------------------------* * 14/ 'FISSURE' * * * * 'MASS' 'PARF' 'POISEU_BLASIUS' * * 'FILM' 'REEL' 'POISEU_COLEBROOK' * * 'FROTTEMENT1' * * 'FROTTEMENT2' * * 'FROTTEMENT3' * * 'FROTTEMENT4' * *--------------------------------------------------------------------* * 15/ 'LIAISON' * * * 'POINT_PLAN_FLUIDE' * * 'POINT_PLAN_FROTTEMENT' * * 'POINT_PLAN' * * 'POINT_POINT_FROTTEMENT' * * 'POINT_POINT_DEPLACEMENT_PLASTIQUE' * * 'POINT_POINT_ROTATION_PLASTIQUE' * * 'POINT_POINT' * * 'POINT_CERCLE_MOBILE' * * 'POINT_CERCLE_FROTTEMENT' * * 'POINT_CERCLE' * * 'CERCLE_PLAN_FROTTEMENT' * * 'CERCLE_CERCLE_FROTTEMENT' * * 'PROFIL_PROFIL_INTERIEUR' * * 'PROFIL_PROFIL_EXTERIEUR' * * 'LIGNE_LIGNE_FROTTEMENT' * * 'LIGNE_CERCLE_FROTTEMENT' * * 'PALIER_FLUIDE' * * 'NEWMARK' * *--------------------------------------------------------------------* * 16/ 'THERMOHYDRIQUE' * * * 'SCHREFLER' *----------------------------------------------------------------------* * 17/ 'ELECTROSTATIQUE' * * * * 'ISOTROPE' * * 'ORTHOTROPE' * * 'ANISOTROPE' * *----------------------------------------------------------------------* * 18/ 'DIFFUSION' * * * * 'ISOTROPE' * * 'ORTHOTROPE' * * 'ANISOTROPE' * * 'FICK' INATU = 0 * * 'SORET' INATU = 1 * * 'UTILISATEUR' INATU = -1 * *----------------------------------------------------------------------* * PPU MODIF POUR LES MATERIAUX UNIDIRECTIONELS EN PLASTIQUE * DECLARATIONS CHARACTER*16 MOMODL(200), FORFO1,FORFO2 * CHARACTER*16 FORMOD(NFOR),MATMOD(NMAT),LISTMT(3) CHARACTER*8 CMATE CHARACTER*12 CMAT1,CMAT2,CMAT3 INTEGER NFOR,NMAT DATA LISTMT / 'ISOTROPE ', & 'ORTHOTROPE ', & 'ANISOTROPE ' / * CMATE=' ' IMATE=0 INATU=0 icov=0 iray=0 INMAT=0 FORFO1=formod(1) IF( FORFO1.eq.'THERMIQUE' ) THEN CALL place ( matmod , nmat,icov,'CONVECTION') if( icov.ne.0) then FORFO1='CONVECTION' icov=2 CMATE='OK' endif call place ( matmod , nmat,iray,'RAYONNEMENT') if( iray.ne.0) then FORFO1='RAYONNEMENT' iray=2 CMATE='OK' endif ENDIF * IF (NFOR.EQ.1) THEN *--------------------------------------------------------------------* * 1/ Cas de la formulation 'THERMIQUE' OU 'DARCY' * *--------------------------------------------------------------------* * 1 2 3 4 5 6 7 8 IF (forfo1.EQ.'THERMIQUE' .OR. . forfo1.EQ.'DARCY') THEN INMAT=0 IF (NMAT.EQ.0) THEN * * par defaut la formulation est isotrope * CMATE='ISOTROPE' IMATE=1 ELSE CALL PLACE(LISTMT,3,IPLAC,MATMOD(1)) INMAT=INMAT+1 CMATE='ISOTROPE' IF (IPLAC.NE.0) THEN CMATE = MATMOD(1) IMATE=IPLAC END IF IF(forfo1.EQ.'THERMIQUE') THEN CALL MODTHE(MOMODL,NMOD) DO 4287 I=2,NMAT CALL PLACE(MOMODL,NMOD,ITROP,MATMOD(I)) IF(ITROP.NE.0) THEN INMAT=INMAT+1 ENDIF 4287 CONTINUE ENDIF END IF *--------------------------------------------------------------------* * 2/ Cas de la formulation 'MECANIQUE' OU 'POREUX' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'MECANIQUE'.OR. . forfo1.EQ.'POREUX') THEN INMAT=0 IF (NMAT.NE.0)THEN * * Comportement reversible * --------------------- CALL MODLIN(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1)) IF (IPLAC.EQ.1)THEN INMAT=INMAT+1 * * Materiau elastique lineaire ( seule option disponible ) * IF (NMAT.GT. INMAT) THEN * * On teste la "tropie de la formulation" * CALL MODELA(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,ITROP,MATMOD(2)) IF (ITROP.EQ.0) THEN CMATE = 'ISOTROPE' IMATE=1 ELSE INMAT=INMAT+1 CMATE = MOMODL(ITROP) IF (ITROP.LE.3) THEN IMATE=ITROP ELSE IF (ITROP.EQ.4) THEN IMATE=7 ELSE IF (ITROP.EQ.5) THEN IMATE=9 ELSE IF (ITROP.EQ.6) THEN IMATE=4 ELSE IF (ITROP.EQ.7) THEN IMATE=11 ELSE IF (ITROP.EQ.9.OR.ITROP.EQ.10) THEN INMAT=INMAT + 1 IMATE=ITROP ELSE IF (ITROP.EQ.11) THEN * on met 12 car 11 est deja pris IMATE=12 END IF END IF ELSE * * Option par defaut dans le cas elastique * CMATE = 'ISOTROPE' IMATE=1 ENDIF END IF END IF * * Comportement non lineaire * ------------------------- IF (IMATE.EQ.1) THEN * * >>>>>>>>>>> Dans le cas d'une formulation elastique isotrope * IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODNLI(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT)) IF (INLI.EQ.0) THEN * * Materiau non reconnu * CMATE=' ' IMATE=0 INATU=0 ELSE IF (INLI .EQ. 1) THEN * * Comportement plastique * ---------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODPLA(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.1) THEN * ISOTROPE INATU=5 ELSE IF (IMOD.EQ.2) THEN * PARFAIT INATU=1 ELSE IF (IMOD.EQ.3) THEN * CINEMATIQUE INATU=4 ELSE IF (IMOD.EQ.4) THEN * DRUCKER-PRAGER INATU=15 ELSE IF (IMOD.EQ.5) THEN * DRUCKER-SIMPLE INATU=3 ELSE IF (IMOD.EQ.6) THEN * BETON INATU=9 ELSE IF (IMOD.EQ.7) THEN * CHABOCHE1 INATU=7 ELSE IF (IMOD.EQ.8) THEN * CHABOCHE2 INATU=12 ELSE IF (IMOD.EQ.9) THEN * TUYAU-FISSURE INATU=14 ELSE IF (IMOD.EQ.10) THEN * ENDOMMAGEABLE INATU=26 ELSE IF (IMOD.EQ.11) THEN * GAUVAIN INATU=16 ELSE IF (IMOD.EQ.12) THEN * LINESPRING INATU=2 ELSE IF (IMOD.EQ.13) THEN * UBIQUITOUS INATU=28 ELSE IF (IMOD.EQ.14) THEN * GLOBAL INATU=32 ELSE IF (IMOD.EQ.15) THEN * CAM-CLAY INATU=33 ELSE IF (IMOD.EQ.16) THEN * MOHR COULOMB INATU=34 ELSE IF (IMOD.EQ.17) THEN * JOINT DILATANT INATU=35 ELSE IF (IMOD.EQ.18) THEN * BETON_AXI INATU=36 ELSE IF (IMOD.EQ.19) THEN * GURSON INATU=38 ELSE IF (IMOD.EQ.20) THEN * BETON_UNI INATU=39 ELSE IF (IMOD.EQ.21) THEN * ACIER_UNI INATU=40 ELSE IF (IMOD.EQ.51) THEN * ACIER_ANCRAGE INATU=93 ELSE IF (IMOD.EQ.23) THEN * OTTOSEN (BETON) INATU=42 ELSE IF (IMOD.EQ.24) THEN * MAZARS_FIB INATU=46 ELSE IF (IMOD.EQ.53) THEN * UNILATERAL (Fibre) INATU=104 ELSE IF (IMOD.EQ.44) THEN * FRAGILE_UNI INATU=78 * ELSE IF (IMOD.EQ.45) THEN * BETON_BAEL INATU=79 * ELSE IF (IMOD.EQ.46) THEN * PARFAIT_UNI INATU=80 * ELSE IF (IMOD.EQ.50) THEN * PARFAIT_ANCRAGE INATU=92 C +BR ELSE IF (IMOD.EQ.72) THEN * RICBET_UNI INATU=160 C -BR * ELSE IF (IMOD.EQ.47) THEN * STRUT_UNI INATU=83 * ELSE IF (IMOD.EQ.25) THEN * AMADEI-SAEB INATU=47 ELSE IF (IMOD.EQ.26) THEN * HUJEUX INATU=48 ELSE IF (IMOD.EQ.27) THEN * STEINBERG-COCHRAN-GUINAN INATU=49 ELSE IF (IMOD.EQ.28) THEN * ZERILLI-ARMSTRONG INATU=50 ELSE IF (IMOD.EQ.29) THEN * PRESTON-TONKS-WALLACE INATU=52 ELSE IF (IMOD.EQ.30) THEN * BETOCYCL INATU=54 ELSE IF (IMOD.EQ.31) THEN * ROTATING_CRACK INATU=55 ELSE IF (IMOD.EQ.32) THEN * JOINT_SOFT INATU=56 ELSE IF (IMOD.EQ.49) THEN * ANCRAGE_ELIGEHAUSEN INATU=91 ELSE IF (IMOD.EQ.33) THEN * BILI_MOMY INATU=57 ELSE IF (IMOD.EQ.34) THEN * BILI_EFFZ INATU=58 ELSE IF (IMOD.EQ.35) THEN * TAKEMO_MOMY INATU=59 ELSE IF (IMOD.EQ.36) THEN * TAKEMO_EFFZ INATU=60 ELSE IF (IMOD.EQ.37) THEN * BETON_INSA INATU=66 ELSE IF (IMOD.EQ.40) THEN * ALONSO INATU=69 ELSE IF (IMOD.EQ.41) THEN * PAKZAD INATU=71 ELSE IF (IMOD.EQ.42) THEN * INFILL_UNI INATU=72 ELSE IF (IMOD.EQ.43) THEN * CISAIL_NL INATU=73 ELSE IF (IMOD.EQ.48) THEN * HINTE INATU=89 ELSE IF (IMOD.EQ.52) THEN * BETON_URGC INATU=99 * BCN ELSE IF (IMOD.EQ.54) THEN * MRS_LADE INATU=111 ELSE IF (IMOD.EQ.55) THEN * J2 INATU=112 ELSE IF (IMOD.EQ.56) THEN * RH_COULOMB INATU=113 ELSE IF (IMOD.EQ.57) THEN * VMT_FEFP INATU=114 ELSE IF (IMOD.EQ.58) THEN * RHMC_FEFP INATU=115 ELSE IF (IMOD.EQ.59) THEN * POWDER_FEFP INATU=116 ELSE IF (IMOD.EQ.60) THEN * POWDERCAP_FEFP INATU=117 * BCN ELSE IF (IMOD.EQ.61) THEN * JOINT_COAT INATU=119 ELSE IF (IMOD.EQ.62) THEN * CONCRETE_UNI INATU=123 ELSE IF (IMOD.EQ.73) THEN * BA1D INATU=147 ELSE IF (IMOD.EQ.63) THEN * MUR_SHEAR INATU=126 ELSE IF (IMOD.EQ.64) THEN * INCO INATU=129 ELSE IF (IMOD.EQ.65) THEN * DRUCKER_PRAGER2 INATU=140 ELSE IF (IMOD.EQ.67) THEN * INTIMP INATU=145 ELSE IF (IMOD.EQ.68) THEN * INTJOI INATU=146 ELSE IF (IMOD.EQ.69) THEN * BILIN_EFFX INATU=150 ENDIF ELSE * * Option par defaut * INATU=5 ENDIF ELSE IF (INLI .EQ. 2) THEN * * Comportement FLUAGE * ------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * INMAT=INMAT+1 CALL MODFLU(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0 ) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.1 ) THEN * NORTON INATU=19 ELSE IF (IMOD.EQ.2 ) THEN * BLACKBURN INATU=20 ELSE IF (IMOD.EQ.3 ) THEN * RCCMR-316 INATU=22 ELSE IF (IMOD.EQ.4 ) THEN * RCCMR-304 INATU=23 ELSE IF (IMOD.EQ.5 ) THEN * LEMAITRE INATU=24 ELSE IF (IMOD.EQ.6 ) THEN * POLYNOMIAL INATU=21 ELSE IF (IMOD.EQ.7 ) THEN * BLACKBURN_2 INATU=61 ELSE IF (IMOD.EQ.8) THEN * CERAMIQUE INATU=65 ELSE IF (IMOD.EQ.9) THEN * MAXWELL INATU=74 ELSE IF (IMOD.EQ.10) THEN * COMETE INATU = 84 ELSE IF (IMOD.EQ.11) THEN * CCPL INATU = 85 ELSE IF (IMOD.EQ.12) THEN * X11 INATU = 86 ELSE IF (IMOD.EQ.13) THEN * BPEL_RELAX INATU = 95 ELSE IF (IMOD.EQ.14) THEN * BETON_URGC INATU = 101 ELSE IF (IMOD.EQ.15) THEN * SODERBERG INATU = 102 ELSE IF (IMOD.EQ.16) THEN * MAXOTT INATU = 106 ELSE IF (IMOD.EQ.17) THEN * FBB1 INATU = 127 ELSE IF (IMOD.EQ.18) THEN * FBB2 INATU = 128 ENDIF ELSE * * Option par defaut * INATU=19 ENDIF * ELSE IF (INLI .EQ. 3) THEN * * Comportement VISCOPLASTIQUE * --------------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODVIS(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0 ) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.1 ) THEN * GUIONNET INATU=17 ELSE IF (IMOD.EQ.2 ) THEN * CHABOCHE INATU=25 ELSE IF (IMOD.EQ.3 ) THEN * VISCODOMMAGE INATU=29 ELSE IF (IMOD.EQ.4 ) THEN * PARFAIT INATU = 43 ELSE IF (IMOD.EQ.5 ) THEN * POUDRE_A INATU = 44 ELSE IF (IMOD.EQ.6 ) THEN * POUDRE_B INATU = 45 ELSE IF (IMOD.EQ.7 ) THEN * OHNO INATU = 53 ELSE IF (IMOD.EQ.8 ) THEN * DDI INATU = 63 ELSE IF (IMOD.EQ.9 ) THEN * KOCK INATU = 70 ELSE IF (IMOD.EQ.10 ) THEN * NOUAILLAS_A INATU = 76 ELSE IF (IMOD.EQ.11 ) THEN * NOUAILLAS_B INATU = 77 ELSE IF (IMOD.EQ.12) THEN * VISK2 INATU = 82 ELSE IF (IMOD.EQ.13 ) THEN * VISCOHINTE INATU = 90 ELSE IF (IMOD.EQ.14) THEN * MISTRAL INATU = 94 ELSE IF (IMOD.EQ.15) THEN * BETON_URGC INATU = 100 ELSE IF (IMOD.EQ.16 ) THEN * LEMENDO INATU = 103 ELSE IF (IMOD.EQ.17) THEN * FLUNOR2 INATU = 105 ELSE IF (IMOD.EQ.18) THEN * GATT_MONERIE INATU = 107 ELSE IF (IMOD.EQ.19) THEN * UO2 INATU = 108 ELSE IF (IMOD.EQ.20) THEN * BETON_URGC_ENDO INATU = 122 ELSE IF (IMOD.EQ.21) THEN * LOI DE COMPORTEMENT VISQUEUSE AVEC DOUBLE ENDO INATU = 130 ELSE IF (IMOD.EQ.22) THEN * 'CHAB_SINH_R' INATU = 136 ELSE IF (IMOD.EQ.23) THEN * 'CHAB_SINH_X' INATU = 137 ELSE IF (IMOD.EQ.24) THEN * 'CHAB_NOR_R' INATU = 138 ELSE IF (IMOD.EQ.25) THEN * 'CHAB_NOR_X' INATU = 139 ELSE IF (IMOD.EQ.26) THEN * 'PELLET' INATU = 142 ELSE IF (IMOD.EQ.27) THEN * 'FLUTRA' INATU = 143 ELSE IF (IMOD.EQ.28) THEN * 'SYCO1' INATU = 153 ELSE IF (IMOD.EQ.29) THEN * 'SYCO2' INATU = 154 ENDIF ELSE * * Option par defaut: CHABOCHE * INATU=25 ENDIF * ELSE IF (INLI .EQ. 4) THEN * * Comportement type ENDOMMAGEMENT * ------------------------------- IF (NMAT.GT.INMAT) THEN INMAT=INMAT+1 CALL MODEND(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0 ) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.1 ) THEN * MAZARS INATU=30 ELSE IF (IMOD.EQ.2 ) THEN * UNILATERAL INATU=31 ELSE IF (IMOD.EQ.3 ) THEN * ROTATING_CRACK INATU=37 * ELSE IF (IMOD.EQ.4) THEN * SIC_SIC * INATU=88 ELSE IF (IMOD.EQ.5) THEN * MICROPLANS INATU=96 ELSE IF (IMOD.EQ.6) THEN * VISCOUNILATERAL INATU=97 ELSE IF (IMOD.EQ.7) THEN * MICROISO INATU=98 * BCN ELSE IF (IMOD.EQ.8) THEN * MODIFIED VON MISES INATU=118 ELSE IF (IMOD.EQ.9) THEN * CRUCRA INATU=124 ELSE IF (IMOD.EQ.10) THEN * DAMAGE_TC - R. Faria & J. Oliver INATU=125 * ELSE IF (IMOD.EQ.11) THEN * SICSCAL - modele scalaire SiCf/SiC ONERA * INATU=131 * ELSE IF (IMOD.EQ.12) THEN * SICTENS - modele pseudo tensoriel SiCf/SiC ONERA * INATU=132 ELSE IF (IMOD.EQ.13) THEN * DESMORAT INATU=134 ELSE IF (IMOD.EQ.14) THEN * FATSIN INATU=141 ELSE IF (IMOD.EQ.15) THEN * RICRAG2D INATU=144 C +BR ELSE IF (IMOD.EQ.16) THEN * GLRC_DM INATU=157 ELSE IF (IMOD.EQ.17) THEN * RICBET INATU=158 ELSE IF (IMOD.EQ.18) THEN * RICCOQ INATU=159 C -BR * ENDIF ELSE * * Option par defaut * INATU=30 ENDIF * ELSE IF (INLI .EQ. 5) THEN * * * Comportement PLASTIQUE ENDOM(MAGEABLE) * -------------------------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODPLE(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0 ) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.1 ) THEN * PSURY INATU=51 ELSE IF (IMOD.EQ.2 ) THEN * ROUSSELIER INATU=62 ELSE IF (IMOD.EQ.3 ) THEN * GURSON2 INATU=64 ELSE IF (IMOD.EQ.4 ) THEN * DRAGON INATU=75 ELSE IF (IMOD.EQ.5 ) THEN * BETON_URGC INATU=120 ELSE IF (IMOD.EQ.6 ) THEN * BETON_INSA INATU=121 ELSE IF (IMOD.EQ.7 ) THEN * BETON_DYNAR_LMT INATU=133 ELSE IF (IMOD.EQ.8) THEN * ENDO_PLAS INATU=135 ELSE IF (IMOD.EQ.9) THEN * GERNAY INATU=155 ENDIF ELSE * Par defaut INATU=51 ENDIF C ELSE IF (INLI.EQ.6) THEN C C Comportement ELASTIQUE NON_LINEAIRE C ----------------------------------- IF (NMAT.GT.INMAT) THEN C C Et si le materiau n'est pas totalement decode C CALL MODENL(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0 ) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.1 ) THEN * EQUIPLAS INATU=87 ELSE IF (IMOD.EQ.2) THEN C UTILISATEUR IF (NMAT.GT.INMAT) THEN INMAT=INMAT+1 INATU = -1 ELSE CALL ERREUR(952) RETURN ENDIF ENDIF C ELSE C Pas de comportement par defaut CMATE=' ' IMATE=0 INATU=0 ENDIF C ELSE IF (INLI.EQ.7) THEN C C Comportement VISCO_EXTERNE C -------------------------- IF (NMAT.GT.INMAT) THEN C C Et si le materiau n'est pas totalement decode C CALL MODVIX(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (NMAT.GT.INMAT) THEN INMAT=INMAT+1 INATU = -2-IMOD c* Permet de recuperer IMOD=IVIEX (>0) en sortie de NOMATE avant de fixer c* la valeur de INATU a -2 ELSE CALL ERREUR(952) RETURN ENDIF ENDIF ELSE C Pas de comportement par defaut CMATE=' ' IMATE=0 INATU=0 ENDIF ENDIF ENDIF * * ELSE IF (IMATE.EQ.2) THEN * * >>>>>>>>>>> Dans le cas d'une formulation elastique orthotrope * on se limite pour l'instant � * 2 comportements plastiques, * 1 comportement viscoplastique, * 1 comportement endommageable, * + le comportement 'NON_LINEAIRE' 'UTILISATEUR' * IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODNLI(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT)) c mistral : IF (INLI.NE.1.AND.INLI.NE.3.AND.INLI.NE.4.AND. & INLI.NE.6) THEN c mistral. * * Materiau non reconnu * CMATE=' ' IMATE=0 INATU=0 * ELSE IF (INLI.EQ.1) THEN * * Comportement plastique * ---------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODPLA(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.16) THEN * MOHR COULOMB INATU=34 ELSE IF (IMOD.EQ.38) THEN * ECROUIS_INSA INATU=67 ELSE IF (IMOD.EQ.39) THEN * PARFAIT_INSA INATU=68 ELSE IF (IMOD.EQ.70) THEN * ISS_GRANGE INATU=151 ELSE IF (IMOD.EQ.71) THEN * RUP_THER INATU=152 ELSE CMATE=' ' imate=0 inatu=0 ENDIF ENDIF c mistral : ELSE IF (INLI.EQ.3) THEN * * Comportement VISCOPLASTIQUE * --------------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODVIS(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0 ) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.14) THEN * MISTRAL INATU = 94 ELSE CMATE=' ' IMATE=0 INATU=0 ENDIF ENDIF c mistral. ELSE IF(INLI.EQ.4) THEN * * Comportement endommageable * -------------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODEND(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.4) THEN * SIC_SIC INATU=88 ELSE IF (IMOD.EQ.11) THEN * SICSCAL - mod�le scalaire SiCf/SiC ONERA INATU=131 ELSE IF (IMOD.EQ.12) THEN * SICTENS - mod�le pseudo tensoriel SiCf/SiC ONERA INATU=132 ELSE CMATE=' ' IMATE=0 INATU=0 ENDIF ENDIF C ELSE IF (INLI.EQ.6) THEN C C Comportement NON_LINEAIRE C ------------------------- IF (NMAT.GT.INMAT) THEN C C Et si le materiau n'est pas totalement decode C CALL MODENL(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.2) THEN C UTILISATEUR IF (NMAT.GT.INMAT) THEN INMAT=INMAT+1 INATU = -1 ELSE CALL ERREUR(952) RETURN ENDIF ELSE C Autres cas non autorises CMATE=' ' IMATE=0 INATU=0 ENDIF ELSE C Pas de comportement par defaut CMATE=' ' IMATE=0 INATU=0 ENDIF ENDIF ENDIF * * ELSE IF (IMATE.EQ.3) THEN C C >>>>>>>>>>> Dans le cas d'une formulation elastique anisotrope C on se limite pour l'instant au comportement C 'NON_LINEAIRE' 'UTILISATEUR' C IF (NMAT.GT.INMAT) THEN C C Et si le materiau n'est pas totalement decode C CALL MODNLI(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT)) IF (INLI.NE.6) THEN C C Materiau non reconnu C CMATE=' ' IMATE=0 INATU=0 C ELSE C C Comportement NON_LINEAIRE C ------------------------- IF (NMAT.GT.INMAT) THEN C C Et si le materiau n'est pas totalement decode C CALL MODENL(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.2) THEN C UTILISATEUR IF (NMAT.GT.INMAT) THEN INMAT=INMAT+1 INATU = -1 ELSE CALL ERREUR(952) RETURN ENDIF ELSE C Autres cas non autorises CMATE=' ' IMATE=0 INATU=0 ENDIF ELSE C Pas de comportement par defaut CMATE=' ' IMATE=0 INATU=0 ENDIF ENDIF ENDIF C C ELSE IF (IMATE.EQ.4) THEN * * >>>>>>>>>>> Dans le cas d'une formulation elastique unidirectionnelle * on se limite pour l'instant � quelques comportements * plastiques et visqueux * + le comportement 'NON_LINEAIRE' 'UTILISATEUR' * IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODNLI(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT)) IF (INLI.NE.1.AND.INLI.NE.2.AND.INLI.NE.6) THEN * * Materiau non reconnu * CMATE=' ' IMATE=0 INATU=0 * ELSE IF(INLI.EQ.1) THEN * * Comportement plastique * ---------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODPLA(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.70) THEN * ISS_GRANGE INATU=151 ELSE IF (IMOD.EQ.71) THEN * RUP_THER INATU=152 ELSE IF (IMOD.EQ.1) THEN * ISOTROPE INATU=5 ELSE IF (IMOD.EQ.2) THEN * PARFAIT INATU=1 ELSE IF (IMOD.EQ.3) THEN * CINEMATIQUE INATU=4 ELSE IF (IMOD.EQ.21) THEN * ACIER_UNI INATU=40 ENDIF ELSE * * Option par defaut * INATU=5 ENDIF * ELSE IF(INLI.EQ.2) THEN * * Comportement FLUAGE * ------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODFLU(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.9) THEN * MAXWELL INATU=74 ENDIF ELSE * * Option par defaut * INATU=74 ENDIF C ELSE IF (INLI.EQ.6) THEN C C Comportement NON_LINEAIRE C ------------------------- IF (NMAT.GT.INMAT) THEN C C Et si le materiau n'est pas totalement decode C CALL MODENL(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.2) THEN C UTILISATEUR IF (NMAT.GT.INMAT) THEN INMAT=INMAT+1 INATU = -1 ELSE CALL ERREUR(952) RETURN ENDIF ELSE C Autres cas non autorises CMATE=' ' IMATE=0 INATU=0 ENDIF ELSE C Pas de comportement par defaut CMATE=' ' IMATE=0 INATU=0 ENDIF ENDIF ENDIF * * MODAL et STATIQUE * ELSE IF (IMATE.EQ.9.OR.IMATE.EQ.10) THEN IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODNLI(MOMODL,NMOD) * INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT)) IF (INLI.EQ.0) THEN * * Materiau non reconnu * CMATE=' ' IMATE=0 INATU=0 ELSE IF (INLI .EQ. 1) THEN IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODPLA(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.1) THEN * ISOTROPE INATU=5 ELSE IF (IMOD.EQ.2) THEN * PARFAIT INATU=1 ELSE IF (IMOD.EQ.3) THEN INATU = 3 ENDIF * CINEMATIQUE ENDIF ENDIF ENDIF * * >>>>>>>>>>> CAS DES POUTRES A FORMULATION SECTION * ELSE IF (IMATE.EQ.11) THEN * IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODNLI(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT)) IF (INLI.NE.1) THEN * * Materiau non reconnu * CMATE=' ' IMATE=0 INATU=0 ELSE * * Comportement plastique * ---------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODPLA(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.22) THEN * SECTION INATU=41 ELSE * * cas non autorise * CMATE=' ' IMATE=0 INATU=0 ENDIF * ENDIF ENDIF ENDIF * ************************* * cas 'ZONE_COHESIVE' * ************************* * ELSE IF (IMATE.EQ.12) THEN * * >>>>>>>>>>> Dans le cas d'une formulation elastique zone_cohesive * on se limite pour l'instant � quelques comportements * plastique_endo * + le comportement 'NON_LINEAIRE' 'UTILISATEUR' * IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODNLI(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,INLI,MATMOD(INMAT)) IF (INLI.NE.5.AND.INLI.NE.6) THEN * * Materiau non reconnu * CMATE=' ' IMATE=0 INATU=0 * ELSE IF(INLI.EQ.5) THEN * * Comportement plastique_endo * -------------------------- IF (NMAT.GT.INMAT) THEN * * Et si le materiau n'est pas totalement decode * CALL MODPLE(MOMODL,NMOD) INMAT= INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (IMOD.EQ.10) THEN * WELLS INATU=156 ENDIF ELSE * * Option par defaut * INATU=156 ENDIF * C ELSE IF (INLI.EQ.6) THEN C C Comportement NON_LINEAIRE C ------------------------- IF (NMAT.GT.INMAT) THEN C C Et si le materiau n'est pas totalement decode C CALL MODENL(MOMODL,NMOD) INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.2) THEN C UTILISATEUR IF (NMAT.GT.INMAT) THEN INMAT=INMAT+1 INATU = -1 ELSE CALL ERREUR(952) RETURN ENDIF ELSE C Autres cas non autorises CMATE=' ' IMATE=0 INATU=0 ENDIF ELSE C Pas de comportement par defaut CMATE=' ' IMATE=0 INATU=0 ENDIF ENDIF ENDIF ** ELSE IF (IMATE.EQ.13) THEN ENDIF c c ------------------------ IMPEDANCE -------------------------- IF (IMATE.EQ.0.AND.NMAT.GE.INMAT) THEN C Et si le materiau n'est pas totalement decode IMOD = 0 IMO2 = 0 CALL MODIMP(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(INMAT)) IF (IMOD.EQ.0) THEN * CMATE=' ' * IMATE=0 * INATU=0 ELSE IF (NMAT.GT.1) THEN INMAT=INMAT+1 CALL PLACE(MOMODL,NMOD,IMO2,MATMOD(INMAT)) ENDIF ENDIF IF (IMOD.EQ.1.AND.(IMO2.EQ.2.or.IMO2.EQ.0)) THEN CMATE='IMPELAST' IMATE=31 ELSEIF (IMOD.EQ.1.AND.IMO2.EQ.3) THEN CMATE='IMPVOIGT' IMATE=32 ELSEIF (IMOD.EQ.1.AND.IMO2.EQ.4) THEN CMATE='IMPMAXWE' IMATE=33 ELSEIF (IMOD.EQ.1.AND.IMO2.EQ.5) THEN CMATE='IMPCOMPL' IMATE=34 ELSE * CMATE=' ' * IMATE=0 * INATU=0 ENDIF ELSE ENDIF *--------------------------------------------------------------------* * 3/ CAS DE LA FORMULATION 'LIQUIDE ' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'LIQUIDE') THEN INMAT=0 IF (NMAT.EQ.0) THEN CMATE='ISOTROPE' IMATE=1 ELSE IF (NMAT.EQ.1) THEN CALL PLACE(LISTMT,3,IPLAC,MATMOD(1)) INMAT=INMAT+1 IF (IPLAC.EQ.1) THEN CMATE = MATMOD(1) IMATE=1 ENDIF ENDIF *--------------------------------------------------------------------* * 4/ CAS DE LA FORMULATION 'CONVECTION' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'CONVECTION') THEN IF (NMAT.NE.0)THEN CALL MODCON(MOMODL,NMOD) if( nmat.gt.2) then CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(3)) IF (IPLAC.EQ.0)THEN INMAT=INMAT+1 CMATE = 'CONVECTI' IMATE=1 ELSE INMAT=INMAT+1 CMATE = MOMODL(IPLAC) IMATE=IPLAC ENDIF endif inmat=inmat+2 ELSE INMAT=INMAT+2 CMATE = 'CONVECTI' IMATE=1 ENDIF * *--------------------------------------------------------------------* * 9/ CAS DE LA FORMULATION 'RAYONNEMENT' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'RAYONNEMENT') THEN INMAT=0 CMATE='RAYONNEM' IMATE=1 if(NMAT.ne.0) then call modray(momodl,nmod) call place (momodl,nmod,iplac,matmod(3)) if( iplac.eq.1)then imate=2 inmat=1 elseif( iplac.eq.2) then imate=3 inmat=1 elseif(iplac.eq.3) then imate=4 iplacf=0 iplacs=0 iplacc=0 call place(matmod,nmat,iplacf,'FERME') call place(matmod,nmat,iplacs,'SYMETRIE') call place (matmod,nmat,iplacc,'CONVEXE') icas=0 if( iplacf.ne.0) icas=icas+1 if( iplacs.ne.0) icas=icas+1 if( iplacc.ne.0) icas=icas+1 * inmat=inmat+icas if( icas.eq.0) then inatu= 1 inmat=1 elseif(icas.eq.1)then inmat=2 if(iplacf.ne.0) then inatu=2 elseif(iplacs.ne.0) then inatu=3 else inatu=4 endif elseif( icas.eq.2) then inmat=3 if(iplacf.eq.0) then inatu=5 elseif(iplacs.eq.0) then inatu=6 else inatu=7 endif else inmat=4 inatu=8 endif endif endif CALL place (matmod,nmat,iplac,'TRAYO') if(iplac.ne.0) inmat=inmat+1 * comme il y a le mot isotrope et le mot rayonnement si modele thermique inmat=inmat+2 * write(6,*) ' inmat ' , inmat * *--------------------------------------------------------------------* * 11/ CAS DE LA FORMULATION 'NAVIER_STOKES' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'NAVIER_STOKES') THEN INMAT=1 CMATE='NEWTONIE' IMATE=1 * *--------------------------------------------------------------------* * 13/ CAS DE LA FORMULATION 'EULER' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'EULER') THEN INMAT=1 CMATE='NEWTONIE' IMATE=1 * *--------------------------------------------------------------------* * 10/ CAS DE LA FORMULATION 'MAGNETODYNAMIQUE' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'MAGNETODYNAMIQUE') THEN INMAT=0 IF(NMAT.NE.0) THEN IF(MATMOD(1).EQ.'POTENTIEL_VECTEU') THEN CMATE='CORFOU ' IMATE=1 INMAT=INMAT+1 ELSE CALL PLACE(LISTMT,3,IPLAC,MATMOD(1)) IF(IPLAC.NE.0) THEN CMATE=LISTMT(IPLAC) IMATE=IPLAC INMAT=INMAT+1 ENDIF ENDIF IF(NMAT.GT.INMAT) THEN CALL PLACE(LISTMT,3,IPLAC,MATMOD(2)) IF(IPLAC.NE.0) THEN CMATE=LISTMT(IPLAC) IMATE=IPLAC INMAT=INMAT+1 ENDIF ENDIF ELSE CMATE='CORFOU ' IMATE=1 INMAT=INMAT+1 ENDIF * *--------------------------------------------------------------------* * 8/ CAS DE LA FORMULATION 'CONTACT' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'CONTACT') THEN INMAT=1 imate=0 inatu=0 * imate=1 unilateral; imate=2 maintenu; inatu=0 pas de frottement * inatu=1 coulomb; inatu=2 frocable 88 continue CALL MOCONT(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(inmat)) if(iplac.eq.1) then CMATE='UNILATERAL' imate=1 elseif (IPLAC.EQ.2) THEN CMATE='PERMANENT' imate=2 elseif (IPLAC.EQ.3) THEN inatu=1 elseif (iplac.eq.4) then inatu=1 elseif(iplac.eq.5) then inatu=2 endif inmat=inmat+1 if(inmat.le.nmat) go to 88 *--------------------------------------------------------------------* * 12/ CAS DE LA FORMULATION 'MELANGE' * * on renvoie le premier modele trouve !!! * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'MELANGE') THEN IF (NMAT.GE.1)THEN CALL MODMEL(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(1)) IF (IPLAC.EQ.0)THEN CMATE = 'PARALLELE' IPLAC = 3 ELSE CMATE = MOMODL(IPLAC) ENDIF IMATE = IPLAC * on ne decortique pas plus pour l instant INMAT = NMAT ELSE * il y a un probleme INMAT = -1 ENDIF * *--------------------------------------------------------------------* * 14/ CAS DE LA FORMULATION 'FISSURE' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'FISSURE') THEN INMAT=0 IF (NMAT.NE.0) THEN * mode de condensation CALL MODCDE(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLA1,MATMOD(1)) CALL PLACE(MOMODL,NMOD,IPLA2,MATMOD(2)) CALL PLACE(MOMODL,NMOD,IPLA3,MATMOD(3)) IF (IPLA1.EQ.0.AND.IPLA2.EQ.0.AND.IPLA3.EQ.0)THEN CMAT1='MA' ELSE INMAT=INMAT+1 IF (IPLA1.GT.0) CMAT1=MATMOD(1)(1:2) IF (IPLA2.GT.0) CMAT1=MATMOD(2)(1:2) IF (IPLA3.GT.0) CMAT1=MATMOD(3)(1:2) END IF * * comportement de la vapeur CALL MODVAP(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLA1,MATMOD(1)) CALL PLACE(MOMODL,NMOD,IPLA2,MATMOD(2)) CALL PLACE(MOMODL,NMOD,IPLA3,MATMOD(3)) IF (IPLA1.EQ.0.AND.IPLA2.EQ.0.AND.IPLA3.EQ.0)THEN CMAT2='PA' ELSE INMAT=INMAT+1 IF (IPLA1.GT.0) CMAT2=MATMOD(1)(1:2) IF (IPLA2.GT.0) CMAT2=MATMOD(2)(1:2) IF (IPLA3.GT.0) CMAT2=MATMOD(3)(1:2) END IF * * lois de frottement CALL MODFRT(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLA1,MATMOD(1)) CALL PLACE(MOMODL,NMOD,IPLA2,MATMOD(2)) CALL PLACE(MOMODL,NMOD,IPLA3,MATMOD(3)) IF (IPLA1.EQ.0.AND.IPLA2.EQ.0.AND.IPLA3.EQ.0)THEN CMAT3='BLAS' ELSE INMAT=INMAT+1 IF (IPLA1.GT.0) CMAT3=MATMOD(1)(8:11) IF (IPLA2.GT.0) CMAT3=MATMOD(2)(8:11) IF (IPLA3.GT.0) CMAT3=MATMOD(3)(8:11) END IF * CMATE = CMAT1(1:2)//CMAT2(1:2) CMATE = CMATE(1:4)//CMAT3(1:4) IMATE=1 INATU=1 ELSE * * par defaut vapeur=gaz parfait, condensation= en masse, * frottement=canal lisse * CMATE = 'MAPABLAS' IMATE=1 INATU=1 END IF *--------------------------------------------------------------------* * 15/ CAS DE LA FORMULATION 'LAISON' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'LIAISON') THEN IMOD = 0 IMO2 = 0 CALL MODLIA(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IMOD,MATMOD(1)) IF (IMOD.EQ.0) THEN CMATE=' ' IMATE=0 INATU=0 ELSE IF (NMAT.GT.1) THEN CALL PLACE(MOMODL,NMOD,IMO2,MATMOD(2)) ENDIF ENDIF IF (IMOD.EQ.1.AND.IMO2.EQ.3) THEN CMATE='PO_PL_FL' IMATE=1 ELSEIF (IMOD.EQ.1.AND.IMO2.EQ.2) THEN CMATE='PO_PL_FR' IMATE=2 ELSEIF (IMOD.EQ.1.AND.IMO2.EQ.0) THEN CMATE='PO_PL' IMATE=3 ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.2) THEN CMATE='PO_PO_FR' IMATE=4 ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.5) THEN CMATE='PO_PO_DP' IMATE=5 ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.6) THEN CMATE='PO_PO_RP' IMATE=6 ELSEIF (IMOD.EQ.4.AND.IMO2.EQ.0) THEN CMATE='PO_PO' IMATE=7 ELSEIF (IMOD.EQ.8.AND.IMO2.EQ.9) THEN CMATE='PO_CE_MO' IMATE=8 ELSEIF (IMOD.EQ.8.AND.IMO2.EQ.2) THEN CMATE='PO_CE_FR' IMATE=9 ELSEIF (IMOD.EQ.8.AND.IMO2.EQ.0) THEN CMATE='PO_CE' IMATE=10 ELSEIF (IMOD.EQ.11.AND.IMO2.EQ.2) THEN CMATE='CE_PL_FR' IMATE=11 ELSEIF (IMOD.EQ.12.AND.IMO2.EQ.2) THEN CMATE='CE_CE_FR' IMATE=12 ELSEIF (IMOD.EQ.10.AND.IMO2.EQ.13) THEN CMATE='PR_PR_IN' IMATE=13 ELSEIF (IMOD.EQ.10.AND.IMO2.EQ.14) THEN CMATE='PR_PR_EX' IMATE=14 ELSEIF (IMOD.EQ.15.AND.IMO2.EQ.2) THEN CMATE='LI_LI_FR' IMATE=15 ELSEIF (IMOD.EQ.16.AND.IMO2.EQ.2) THEN CMATE='LI_CE_FR' IMATE=16 ELSEIF (IMOD.EQ.17.AND.IMO2.EQ.22) THEN CMATE='PA_FL_RO' IMATE=17 ELSEIF (IMOD.EQ.18.AND.IMO2.EQ.19) THEN CMATE='COUP_DEP' IMATE=18 ELSEIF (IMOD.EQ.18.AND.IMO2.EQ.20) THEN CMATE='COUP_VIT' IMATE=19 ELSEIF (IMOD.EQ.21.AND.IMO2.EQ.0) THEN CMATE='POLYNOMI' IMATE=20 ELSEIF (IMOD.EQ.23.AND.IMO2.EQ.24) THEN CMATE='NEWMOD' IMATE=23 ELSE CMATE=' ' IMATE=0 INATU=0 ENDIF INMAT = NMAT *--------------------------------------------------------------------* * 16/ CAS DE LA FORMULATION 'THERMOHYDRIQUE' * *--------------------------------------------------------------------* ELSE IF (forfo1.EQ.'THERMOHYDRIQUE') THEN INMAT=0 IF (NMAT.NE.0)THEN IF(MATMOD(1).NE.'SCHREFLER') THEN CMATE=' ' IMATE=0 INATU=0 ELSE INMAT=1 CMATE='SCHREFLER' IMATE=1 ENDIF ELSE INMAT=INMAT+1 CMATE = 'SCHREFLER' IMATE=1 ENDIF * *----------------------------------------------------------------------* * 17/ CAS DE LA FORMULATION 'ELECTROSTATIQUE' * *----------------------------------------------------------------------* ELSE IF ( forfo1.EQ.'ELECTROSTATIQUE' ) THEN INMAT = 0 INATU = 0 * Par defaut la formulation est isotrope IF (NMAT.EQ.0) THEN CMATE = 'ISOTROPE' IMATE = 1 ELSE INMAT = INMAT+1 CALL PLACE(LISTMT,3,IPLAC,MATMOD(INMAT)) C Recuperation de la "tropie" IF (IPLAC.NE.0) THEN CMATE = MATMOD(INMAT) IMATE = IPLAC INMAT = INMAT+1 ELSE CMATE = 'ISOTROPE' IMATE = 1 ENDIF ENDIF * *----------------------------------------------------------------------* * 18/ CAS DE LA FORMULATION 'DIFFUSION' * *----------------------------------------------------------------------* ELSE IF ( forfo1.EQ.'DIFFUSION' ) THEN INMAT = 0 INATU = 0 * Par defaut la formulation est isotrope IF (NMAT.EQ.0) THEN CMATE = 'ISOTROPE' IMATE = 1 ELSE INMAT = INMAT+1 CALL PLACE(LISTMT,3,IPLAC,MATMOD(INMAT)) C Recuperation de la "tropie" IF (IPLAC.NE.0) THEN CMATE = MATMOD(INMAT) IMATE = IPLAC INMAT = INMAT+1 ELSE CMATE = 'ISOTROPE' IMATE = 1 ENDIF IF (NMAT.GE.INMAT) THEN CALL MODDIF(MOMODL,NMOD) CALL PLACE(MOMODL,NMOD,IPLAC,MATMOD(INMAT)) IF (IPLAC.EQ.0) THEN CMATE = ' ' IMATE = 0 ELSE INMAT = INMAT+1 C FICK (lineaire) IF (IPLAC.EQ.1) THEN INATU = 0 C SORET (non lineaire) ELSE IF (IPLAC.EQ.2) THEN INATU = 1 C UTILISATEUR (non lineaire) ELSE IF (IPLAC.EQ.3) THEN INATU = -1 IF (NMAT.NE.INMAT) THEN CMATE = ' ' IMATE = 0 INATU = 0 CALL ERREUR(952) RETURN ENDIF ENDIF ENDIF ENDIF ENDIF * ENDIF * ELSE IF (NFOR.EQ.2) THEN *--------------------------------------------------------------------* * 5/ CAS DE LA FORMULATION 'LIQUIDE '+ 'MECANIQUE' * *--------------------------------------------------------------------* FORFO2=formod(2) IF ( ( forfo1.EQ.'LIQUIDE '.AND. & FORFO2.EQ.'MECANIQUE ' ).OR. & ( FORFO2.EQ.'LIQUIDE '.AND. & FORFO1.EQ.'MECANIQUE ') ) THEN * * La formulation suffit * INMAT=0 CMATE='LIQ+MECA' IMATE=1 ENDIF *--------------------------------------------------------------------* * 6/ CAS DE LA FORMULATION 'POREUX' VOIR 2/ * *--------------------------------------------------------------------* * 7/ CAS DE LA FORMULATION 'DARCY' VOIR 1/ * *--------------------------------------------------------------------* ENDIF * IF (NMAT.GT.INMAT) THEN * write(6,*) ' inmat nmat ' , inmat , nmat CMATE=' ' IMATE=0 INATU=0 END IF RETURN END