Architecture de DEFI_COMPOR =========================== Illustration sur un exemple : test SSNV194 ------------------------------------------ Partons d'un exemple (test ssnv194). Modélisation A : un petit agrégat comportant 10 grains : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ACIER=DEFI_MATERIAU(ELAS=_F(E=145200.0,NU=0.3,), MONO_VISC1=_F(N=10.0, K=40.0,C=1.0,), MONO_ISOT1=_F(R_0=75.5, Q=9.77, B=19.34), MONO_CINE1=_F(D=36.68,),); MONO1 =DEFI_COMPOR(MONOCRISTAL=(_F( MATER=ACIER,ELAS='ELAS', ECOULEMENT='MONO_VISC1', ECRO_ISOT='MONO_ISOT1', ECRO_CINE='MONO_CINE1', FAMI_SYST_GLIS='BCC24',),),); ORIEN=AFFE_CARA_ELEM(MODELE=TROISD, MASSIF=( _F(GROUP_MA='GM1',ANGL_EULER=(-150.646,33.864,55.646,),), _F(GROUP_MA='GM2',ANGL_EULER=(-137.138,41.5917,142.138,),), _F(GROUP_MA='GM3',ANGL_EULER=(-166.271,35.46958,171.271,),), _F(GROUP_MA='GM4',ANGL_EULER=(-77.676,15.61819,154.676,),), _F(GROUP_MA='GM5',ANGL_EULER=(-78.6463,33.864,155.646,),), _F(GROUP_MA='GM6',ANGL_EULER=(-65.1378,41.5917,142.138,),), _F(GROUP_MA='GM7',ANGL_EULER=(-94.2711,35.46958,71.271,),), _F(GROUP_MA='GM8',ANGL_EULER=(-5.67599,15.61819,154.676,),), _F(GROUP_MA='GM9',ANGL_EULER=(-6.64634,33.864,155.646,),), _F(GROUP_MA='GM10',ANGL_EULER=(6.86224,41.5917,142.138,),), ),); SOLNL=STAT_NON_LINE(MODELE=...,CHAM_MATER=..., EXCIT=_..., CARA_ELEM=ORIEN, COMPORTEMENT=_F(RELATION='MONOCRISTAL', COMPOR=MONO1, ),) Modélisations B et C : polycristal comportant 10 grains : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Un point matériel, 10 grains de fractions volumiques identiques :math:`(0.1)` , et d'orientations similaires à celles de la modélisation A (ce qui permet de retrouver la même solution moyenne) : MONO1=DEFI_COMPOR(MONOCRISTAL=(... identique à la modélisation A) COMPORP=DEFI_COMPOR(POLYCRISTAL=( _F(MONOCRISTAL=COMPORT,FRAC_VOL=0.1,ANGL_EULER=(-150.646,33.864,55.646,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-137.138,41.5917,142.138,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-166.271,35.46958,171.271,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-77.676,15.61819,154.676,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-78.6463,33.864,155.646,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-65.1378,41.5917,142.138,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-94.2711,35.46958,71.271,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-5.67599,15.61819,154.676,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(-6.64634,33.864,155.646,),), _F(MONOCRISTAL=MONO1,FRAC_VOL=0.1,ANGL_EULER=(6.86224,41.5917,142.138,),), ), LOCALISATION ='BETA',DL=0.,DA=0., MU_LOCA=145200./2.6, ); **Modélisation B:(maillage comportant un seul élément)** **…** SOLNL=STAT_NON_LINE(MODELE=TROISD, CHAM_MATER=MAT2, EXCIT=(_F(CHARGE=TRAC, FONC_MULT=COEF, TYPE_CHARGE='FIXE_CSTE',),), INCREMENT=(_F(LIST_INST=LINST,),), COMPORTEMENT=(_F(RELATION='POLYCRISTAL', COMPOR=COMPORP2, DEFORMATION='PETIT', ALGO_INTE='RUNGE_KUTTA', TOUT='OUI', RESI_INTE_RELA=1.E-6 ),), NEWTON=(_F(PREDICTION='EXTRAPOLE', MATRICE='ELASTIQUE', REAC_ITER=0,),), CONVERGENCE=(_F(ITER_GLOB_MAXI=50, RESI_GLOB_RELA=1.E-4 ),),); **Modélisation C:(point matériel)** SOLNL=SIMU_POINT_MAT(COMPORTEMENT=_F(RELATION='POLYCRISTAL', COMPOR=COMPORP, ALGO_INTE='RUNGE_KUTTA',), NEWTON=_F(MATRICE='ELASTIQUE',REAC_ITER=0), MATER =..., NB_VARI_TABLE=6, INCREMENT=..., EPSI_IMPOSE=... ); Description de DEFI_COMPOR -------------------------- Structure : ~~~~~~~~~~~ La routine OP0050 a pour but de produire la structure de données décrite dans [:ref:`D4.06.24 `] : les objets composant cette SD sont différents suivant que l'on traite un monocristal (routine OP5901) ou un polycristal (routine OP5902). Ajout d'un comportement cristallin au catalogue de DEFI_MATERIAU / DEFI_COMPOR ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Si le nouveau comportement cristallin utilise des paramètres matériau différents de ceux qui sont déjà disponibles dans les mots-clés MONO_* de DEFI_MATERIAU il suffit d'introduire ces nouveaux paramètres de comportement, soit sous un seul mot-clé (cas des comportements MONO_DD_*, soit en séparant les coefficients relatifs à l'écrouissage isotrope, à l'écrouissage cinématique, et à l'écoulement (cf. MONO_ISOT*, MONO_CINE*, MONO_VISC*, ) . Ces paramètres seront exploités dans l'intégration (routines LCMMAT, LCMMAP), et les mot-clés facteurs correspondants seront utilisés dans DEFI_COMPOR. Exemple: catalogue de DEFI_MATERIAU .. code-block:: text MONO_DD_CFC =FACT(statut='f', regles=( UN_PARMI('H','H1'), PRESENT_PRESENT('H1','H2','H3','H4','H5'), PRESENT_ABSENT('H','H1','H2','H3','H4','H5'),), GAMMA0 =SIMP(statut='f',typ='R',defaut=0.001, unités : s**-1"), TAU_F =SIMP(statut='o',typ='R',fr="en unite de contraintes ex 20 MPa"), A =SIMP(statut='f',typ='R',defaut=0.13,fr="paramètre A, sans unité"), B =SIMP(statut='f',typ='R',defaut=0.005,fr="paramètre B, sans unité"), N =SIMP(statut='f',typ='R',defaut=200.,fr="paramètre n, sans unité"), Y =SIMP(statut='o',typ='R',fr="en unité de longueur ex 2.5 A"), ALPHA=SIMP(statut='f',typ='R',defaut=0.35,fr="paramètre alpha"), BETA =SIMP(statut='o',typ='R',fr="paramètre b, en unite de longueur"), ...), Ceci permet de décrire chaque coefficient, son caractère facultatif (avec une éventuelle valeur par défaut) ou obligatoire (pour plus de précisions, se reporter à [:ref:`d5.01.01 `] ) . Le catalogue de DEFI_COMPOR est, suivant les cas : **MONOCRISTAL** =FACT(statut='f', max=5, MATER =SIMP(statut='o', typ=mater_sdaster, max=1), ECOULEMENT=SIMP(statut='o',typ='TXM',into=('MONO_VISC1', 'MONO_VISC2', 'MONO_DD_CFC', 'MONO_DD_CC',...), fr="type d'écoulement viscoplastique"), ELAS =SIMP(statut='f', typ='TXM',), # cas d'un comportement de type MONO_VISC* b_non_dd=BLOC(condition="ECOULEMENT=='MONO_VISC1' or ECOULEMENT=='MONO_VISC2', ECRO_ISOT=SIMP(statut='f', typ='TXM', max=1, fr="Donner le type d'écrouissage isotrope"), ECRO_CINE=SIMP(statut='f', typ='TXM', max=1, fr="Donner type d'écrouissage cinématique"), FAMI_SYST_GLIS=SIMP(statut='f',typ='TXM', into=('OCTAEDRIQUE','BCC24','CUBIQUE1','CUBIQUE2', 'ZIRCONIUM','UNIAXIAL','UTILISATEUR'),), b_util =BLOC(condition="FAMI_SYST_GLIS=='UTILISATEUR' ", TABL_SYST_GLIS =SIMP(statut='f', typ=table_sdaster,),),), # cas d'un comportement de type DD b_dd_cc=BLOC(condition="ECOULEMENT=='MONO_DD_CC'", FAMI_SYST_GLIS=SIMP(statut='f',typ='TXM',into=('CUBIQUE1','UTILISATEUR',), b_util=BLOC(condition="FAMI_SYST_GLIS=='UTILISATEUR'", TABL_SYST_GLIS=SIMP(statut='f', typ=table_sdaster),),),), MATR_INTER =SIMP(statut='f', typ=table_sdaster, max=1,), ROTA_RESEAU=SIMP(statut='f',typ='TXM',max=1,into=('NON','POST','CALC'), defaut='NON',fr="rotation de reseau : NON, POST, CALC"), **POLYCRISTAL** =FACT(statut='f', max='**', regles=(UN_PARMI('ANGL_REP','ANGL_EULER'),), MONOCRISTAL=SIMP(statut='o', typ=compor_sdaster, max=1), FRAC_VOL =SIMP(statut='o', typ='R', fr="fraction volumique»), ANGL_REP=SIMP(statut='f',typ='R',max=3,fr="angles nautiques en degrés"), ANGL_EULER=SIMP(statut='f',typ='R',max=3,fr="angles d'Euler en degrés"), b_poly =BLOC( condition = "POLYCRISTAL!=None", MU_LOCA =SIMP(statut='o',typ='R',max=1), LOCALISATION=SIMP(statut='f', typ='TXM', max=1, into=('BZ', 'BETA',), fr=tr("Donner le nom de la règle de localisation")), b_beta =BLOC( condition = "LOCALISATION=='BETA'", DL =SIMP(statut='o',typ='R',max=1), DA =SIMP(statut='o',typ='R',max=1),), ), L'architecture des routines OP5901 et OP5902 est simple, et consiste à remplir la structure de données sd_compor, destinée à préparer les calculs. Pour cela, plusieurs informations sont déduites des données de l'utilisateur : * Pour le monocristal : * le nombre de systèmes de glissement, soit en faisant appel à la routine **LCMMSG** , qui définit les familles de systèmes de glissement pré-établies, soit en lisant la table fournie pour chaque famille (qui est elle-même stockée dans la sd_compor) * le nombre de variables internes qui se déduit du nombre de systèmes de glissements total, qui sera associé au comportement MONOCRISTAL dans COMPORTEMENT. * Pour le polycristal : * les différents monocristaux relatifs à chaque grain, avec la fraction volumique et l'orientation * le règle de localisation et ses paramètres. * Le nombre de variables internes total, déduit des monocristaux et du nombre de grains, qui sera associé au comportement POLYCRISTAL dans COMPORTMENT. L'ajout d'un comportement cristallin se réduit donc, dans DEFI_COMPOR, à la modification du catalogue pour la partie MONOCRISTAL (pour la vérification syntaxique). L'ajout d'une famille de systèmes de glissement se traduit également pas une modification du catalogue de DEFI_COMPOR, avec d'éventuels blocs pour gérer les possibilités d'association entre lois d'écoulement et familles de systèmes de glissement. Pour la partie POLYCRISTAL, l'ajout d'un comportement cristallin ne modifie pas le catalogue de DEFI_COMPOR, Une des seules modifications consisterait en l'ajout d'une règle de localisation. On peut imprimer la structure de données produite à l'aide de IMPR_CO.