1# -*- coding: utf-8 -*- 2# TITRE TEST META_LEMA_ANI 3D UTILISANT SIMU_POINT_MAT similaire aux tests COMP001xxx 3 4 5# COPYRIGHT (C) 1991 - 2013 EDF R&D WWW.CODE-ASTER.ORG 6# 7# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY 8# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY 9# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR 10# (AT YOUR OPTION) ANY LATER VERSION. 11# 12# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 13# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF 14# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU 15# GENERAL PUBLIC LICENSE FOR MORE DETAILS. 16# 17# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE 18# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, 19# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. 20 21 22 23DEBUT(CODE=_F(NIV_PUB_WEB='INTERNET',VISU_EFICAS='NON'),DEBUG=_F(SDVERI='NON'), 24IGNORE_ALARM='CALCULEL_28', IMPR_MACRO='OUI', 25) 26# SDVERI='NON' car la verification est trop couteuse en CPU 27 28import os 29#os.system("CXXFLAGS='-g' mfront --obuild meta_lema_ani.mfront --interface=aster --debug") 30os.system("mfront --obuild meta_lema_ani.mfront --interface=aster") 31os.system("mv src/libAsterBehaviour.so meta_lema_ani.so") 32 33 34# def des materiaux 35MATA = [None]*2 36MATF = [None]*2 37compor=[None]*2 38#unite en Pa 39C_Pa = 1.e+6 40RYOUNG=80000 41RNU=0.35 42# unites Pa 43#MATA[0]=DEFI_MATERIAU(ELAS_META=_F(E = 80000.*C_Pa, 44 #NU = 0.35, 45 #F_ALPHA = 0., 46 #C_ALPHA = 0., 47 #PHASE_REFE = 'FROID', 48 #EPSF_EPSC_TREF = 0.,), 49 #META_LEMA_ANI=_F( 50 #F1_A=2.40*C_Pa, F2_A=0.20*C_Pa, C_A=9.40*C_Pa, 51 #F1_M=0.0, F2_M=0.80E-04, C_M=0.99E-04, 52 #F1_N=4.40, F2_N=3.0, C_N=6.1, 53 #F1_Q=19900., F2_Q=21000., C_Q=6200., 54 #F_MRR_RR=1., C_MRR_RR=1., 55 #F_MTT_TT=1., C_MTT_TT=1., 56 #F_MZZ_ZZ=1., C_MZZ_ZZ=1., 57 #F_MRT_RT=0.75, C_MRT_RT=0.75, 58 #F_MRZ_RZ=0.75, C_MRZ_RZ=0.75, 59 #F_MTZ_TZ=0.75, C_MTZ_TZ=0.75,),), 60 61## unites Pa 62#MATA[1]=DEFI_MATERIAU(ELAS_META=_F(E = 80000., 63 #NU = 0.35, 64 #F_ALPHA = 0., 65 #C_ALPHA = 0., 66 #PHASE_REFE = 'FROID', 67 #EPSF_EPSC_TREF = 0.,), 68 #META_LEMA_ANI=_F( 69 #F1_A=2.40, F2_A=0.20, C_A=9.40, 70 #F1_M=0.0, F2_M=0.80E-04, C_M=0.99E-04, 71 #F1_N=4.40, F2_N=3.0, C_N=6.1, 72 #F1_Q=19900., F2_Q=21000., C_Q=6200., 73 #F_MRR_RR=1., C_MRR_RR=1., 74 #F_MTT_TT=1., C_MTT_TT=1., 75 #F_MZZ_ZZ=1., C_MZZ_ZZ=1., 76 #F_MRT_RT=0.75, C_MRT_RT=0.75, 77 #F_MRZ_RZ=0.75, C_MRZ_RZ=0.75, 78 #F_MTZ_TZ=0.75, C_MTZ_TZ=0.75,),), 79#compor[0]='META_LEMA_ANI' 80 81C_Pa=1.e6 82MATF[0]=DEFI_MATERIAU( 83 ELAS=_F( E=80000.*C_Pa, NU=0.35, ALPHA=0.), 84 85 UMAT=_F( NB_VALE=26, 86 C1 =80000.*C_Pa, 87 C2 =0.35, 88 C3 =2.40*C_Pa, ## F1_A=2.40, 89 C4 =0.20*C_Pa, ## F2_A=0.20, 90 C5 =9.40*C_Pa, ## C_A=9.40, 91 C6 =0.0, ## F1_M=0.0, 92 C7 =0.80E-04, ## F2_M=0.80E-04, 93 C8 =0.99E-04, ## C_M=0.99E-04, 94 C9 =4.40, ## F1_N=4.40, 95 C10 =3.0, ## F2_N=3.0, 96 C11 =6.1, ## C_N=6.1, 97 C12 =19900., ## F1_Q=19900., 98 C13 =21000., ## F2_Q=21000., 99 C14 =6200., ## C_Q=6200., 100 C15 =1., ## F_MRR_RR 101 C16 =1., ## F_MTT_TT 102 C17 =1., ## F_MZZ_ZZ 103 C18 =0.75, ## F_MRT_RT 104 C19 =0.75, ## F_MTZ_TZ 105 C20 =0.75, ## F_MRZ_RZ 106 C21 =1., ## C_MRR_RR 107 C22 =1., ## C_MTT_TT 108 C23 =1., ## C_MZZ_ZZ 109 C24 =0.75, ## C_MRT_RT 110 C25 =0.75, ## C_MRZ_RZ 111 C26 =0.75, ## C_MTZ_TZ 112 ),) 113 114 115MATF[1]=DEFI_MATERIAU( 116 ELAS=_F( E=80000., NU=0.35, ALPHA=0.), 117 118 UMAT=_F( NB_VALE=26, 119 C1 =80000., 120 C2 =0.35, 121 C3 =2.40, ## F1_A=2.40, 122 C4 =0.20, ## F2_A=0.20, 123 C5 =9.40, ## C_A=9.40, 124 C6 =0.0, ## F1_M=0.0, 125 C7 =0.80E-04, ## F2_M=0.80E-04, 126 C8 =0.99E-04, ## C_M=0.99E-04, 127 C9 =4.40, ## F1_N=4.40, 128 C10 =3.0, ## F2_N=3.0, 129 C11 =6.1, ## C_N=6.1, 130 C12 =19900., ## F1_Q=19900., 131 C13 =21000., ## F2_Q=21000., 132 C14 =6200., ## C_Q=6200., 133 C15 =1., ## F_MRR_RR 134 C16 =1., ## F_MTT_TT 135 C17 =1., ## F_MZZ_ZZ 136 C18 =0.75, ## F_MRT_RT 137 C19 =0.75, ## F_MTZ_TZ 138 C20 =0.75, ## F_MRZ_RZ 139 C21 =1., ## C_MRR_RR 140 C22 =1., ## C_MTT_TT 141 C23 =1., ## C_MZZ_ZZ 142 C24 =0.75, ## C_MRT_RT 143 C25 =0.75, ## C_MRZ_RZ 144 C26 =0.75, ## C_MTZ_TZ 145 ),) 146 147compor[1]='MFRONT' 148 149################################################################################## 150#Discretisation du calcul. nbequi = nombre de calculs "equivalents" : Pa, Rot 151Ncal = 4 152N_pas = 2*[5] + [5, 10] 153nbequi=2 154# les differents calculs effectues 155label_cal=['_Pa_','_rot_'] + 2* ['_N'] 156#pointeur materiau 157P_imat = [0] + [1] + (Ncal-2)*[1] 158 159#parametres vitesse de sollicitation 160vitesse = 1.e-2 161t_0 = 5.e-2/(8.0*vitesse) 162# calibrage des deformations maximum dans l'extension 93 163calibrage = 5.0e-1; 164 165# liste d'archivage 166temps_ar=DEFI_LIST_REEL( VALE =[t_0*i for i in range(9)],) 167 168# angles utilises pour la rotation : non permise pour META_LEMA_ANI en attendant que m soit en repere cartesien 169angle2=30. 170angle0=0. 171angles=[angle0,angle2] + (Ncal-2)*[angle0] 172 173## les precisions sur chaque TEST_RESU 174prec_ecart=[[1.E-10, 1.E-10, 0.02, 1.E-10], 175 [1.E-10, 1.E-10, 0.02, 1.E-10], 176 [1.E-10, 1.E-10, 1.E-10, 1.E-10]] 177vale_calc=[ 178 [0.0E+00, 0.0E+00, 0.0190015638553, 0.0E+00], 179 [0.00 , 0.0, 0.0112942150369, 0.0E+00], 180 [0.0E+00, 0.0E+00, 0.0E+00, 0.0E+00], 181 ] 182 183 184prec_tgt=2.e-2 185prec_zero=[1.E-10, 0.01, 0.01] 186 187 188# coefficients pour ch_param2 pour calculer l'erreur sur le cas "Pa" 189coef_para=[1.,C_Pa,C_Pa] 190CALIB_E=RYOUNG 191CALIB_NU=RNU 192 193# utilitaires divers : calcul de l'erreur, renommage 194INCLUDE(UNITE=91) 195 196# definition de la temperature imposee et des phase metallurgiques 197 198TEMP=DEFI_CONSTANTE(VALE=700.) 199 200phase1=DEFI_CONSTANTE(VALE=1) 201 202phase0=DEFI_CONSTANTE(VALE=0) 203 204# definition du chargement 3D 205 206INCLUDE(UNITE=93) 207 208tempsar=DEFI_LIST_REEL( VALE =[t_0*i for i in range(9)],) 209 210 211 212################################################################################### 213# TEST 3D MFRONT 214################################################################################## 215 216# les quantites extraites du calcul 217ch_param=['V7','VMIS','TRACE','SIXX','SIYY','SIZZ','SIXY','SIXZ','SIYZ'] 218ch_param2=['V7','VMIS','TRACE'] 219# resultats 220RESM=[None]*Ncal 221R_SI=[None]*len(ch_param) 222 223#Boucle sur l'ensemble des calculs 224for i in range(Ncal): 225 N = N_pas[i] 226 imat = P_imat[i] 227 temps=DEFI_LIST_REEL(DEBUT=0.0, 228 INTERVALLE=(_F(JUSQU_A=t_0,NOMBRE=N,), 229 _F(JUSQU_A=2.0*t_0,NOMBRE=N,), 230 _F(JUSQU_A=3.0*t_0,NOMBRE=N,), 231 _F(JUSQU_A=4.0*t_0,NOMBRE=N,), 232 _F(JUSQU_A=5.0*t_0,NOMBRE=N,), 233 _F(JUSQU_A=6.0*t_0,NOMBRE=N,), 234 _F(JUSQU_A=7.0*t_0,NOMBRE=N,), 235 _F(JUSQU_A=8.0*t_0,NOMBRE=N,),),); 236 237# Resout le pb a deformation imposee 238 RESM[i]=SIMU_POINT_MAT( 239 240 COMPORTEMENT=_F(RELATION='MFRONT', 241 LIBRAIRIE='meta_lema_ani.so', 242 NOM_ROUTINE='astermetalemani', 243 NB_VARI=14, 244 ), 245 246 ANGLE=angles[i], 247 #SUPPORT='ELEMENT', 248 AFFE_VARC=( 249 _F(V1=phase1,V2=phase0,V3=phase0,V4=phase0,NOM_VARC='M_ZIRC',), 250 _F(VALE_FONC=TEMP, 251 VALE_REF=700., 252 NOM_VARC='TEMP',),), 253 NEWTON=_F(MATRICE='TANGENTE', 254 REAC_ITER=1,), 255 CONVERGENCE=_F(ITER_GLOB_MAXI=50,), 256 MATER = MATF[imat], 257 INCREMENT=_F(LIST_INST=temps), 258 ARCHIVAGE = _F(LIST_INST = tempsar), 259 EPSI_IMPOSE=_F(EPXX=eps_def[0], EPYY=eps_def[1], EPZZ=eps_def[2], 260 EPXY=eps_def[3], EPXZ=eps_def[4], EPYZ=eps_def[5]), 261 ); 262 DETRUIRE(CONCEPT=_F(NOM=temps)) 263 #IMPR_TABLE(TABLE=RESF[i]) 264# DETRUIRE(CONCEPT=_F(NOM=DEFLIST)) 265# On renomme les composantes en fonction de l'ordre de discretisation 266 R_SI=RENOMME(i,N_pas,label_cal,ch_param,RESM,R_SI) 267 268# TEST_RESU sur les erreurs relatives 269TEST_ECART(ch_param2,label_cal,N_pas,Ncal,nbequi,R_SI,prec_ecart,vale_calc,prec_zero,coef_para) 270 271############################################################################### 272# impressions 273for i in range(len(ch_param)): 274 IMPR_TABLE(TABLE=R_SI[i]) 275 DETRUIRE(CONCEPT=_F(NOM=R_SI[i])) 276 277 278 279 280 281 282FIN(); 283# 284