Validation et maintenance ========================= La réflexion sur les tests de validation et d'identification peut être amorcée très tôt, avant même le développement proprement dit. On peut distinguer: * les fichiers de commande (souvent simple, utilisant par exemple SIMU_POINT_MAT) permettant d'identifier certains paramètres (à l'aide de MACR_RECAL). * les tests à restituer: il doivent permettre de valider le comportement dans tous ses aspects, pour une gamme de valeur de paramètres couvrant correctement le domaine de validité. Certains tests sont quasiment obligatoires: * les tests de robustesse et d'invariance par rapport à une rotation, un changement d'unité (COMP001, COMP002, COMP003) * les tests vérifiant la bonne prise en compte des variables de commandes (COMP008, COMP010) De plus le développeur peut être amené à corriger ou analyser son comportement suite à une anomalie rencontrée lors d'une étude. Dans ce cas, en plus des techniques habituelles de débogage, il est possible d'utiliser une fonctionnalité mise en œuvre en cas d'échec d'intégration du comportement: les premiers points en échec produisent un petit fichier de commandes permettant de rejouer la scène avec SIMU_POINT_MAT, pour mieux analyser le problème, essayer d'autres méthodes. Il suffit de recopier la définition du matériau; toutes les autres données (contraintes, déformations, variables internes initiales, et incrément de déformation permettent de simuler le comportement à l'instant et au point où l'échec s'est produit. Par exemple pour le test forma03c: #----------------------------------------------------------------------- # test pour analyser l'échec d'intégration sur la maille , point <3> #----------------------------------------------------------------------- DEBUT() # recopier DEFI_MATERIAU(...) # COURBE DE TRACTION CTRAC = LIRE_FONCTION(UNITE=21,NOM_PARA='EPSI',PROL_DROITE='CONSTANT',) MAT=DEFI_MATERIAU(ELAS=_F(E=200000.,NU=0.3),TRACTION=_F(SIGM=CTRAC)) LIST=DEFI_LIST_REEL(DEBUT=1.944000000000000E+02 , INTERVALLE=_F(JUSQU_A= 2.187000000000000E+02 , NOMBRE=1)) DEFLIST = DEFI_LIST_INST( DEFI_LIST=_F(LIST_INST=LIST,), ECHEC=_F(SUBD_NIVEAU=10,SUBD_PAS=4),) EXX=DEFI_FONCTION(NOM_PARA='INST', VALE=( 1.944000000000000E+02 , -9.407813329102166E-04, 2.187000000000000E+02,7.373776084156800E+06)) EYY=DEFI_FONCTION(NOM_PARA='INST', VALE=( 1.944000000000000E+02 , 1.718362911427018E-04, 2.187000000000000E+02, -5.221483651275956E+06)) EZZ=DEFI_FONCTION(NOM_PARA='INST', VALE=(1.944000000000000E+02, 0.000000000000000E+00, 2.187000000000000E+02,-9.224110429927666E+05)) EXY=DEFI_FONCTION(NOM_PARA='INST', VALE=( 1.944000000000000E+02 , 3.621278829822514E-04, 2.187000000000000E+02, -4.710098874951571E+06)) RESU=SIMU_POINT_MAT ( INFO=1, MATER=MAT, INCREMENT=_F(LIST_INST=DEFLIST), EPSI_IMPOSE=_F(EPXX=EXX, EPYY=EYY,EPZZ=EZZ,EPXY=EXY), SUPPORT='ELEMENT', MODELISATION='C_PLAN', EPSI_INIT=_F( EPXX=-9.407813329102166E-04, EPYY=1.718362911427018E-04, EPZZ= 0.000000000000000E+00, EPXY=3.621278829822514E-04, EPXZ=0.000000000000000E+00, EPYZ= 0.000000000000000E+00 ), SIGM_INIT=_F( SIXX=-1.887253339740370E+02, SIYY=-2.497632316081525E+01, SIZZ= 0.000000000000000E+00, SIXY=7.537194347798921E+01, SIXZ=0.000000000000000E+00, SIYZ= 0.000000000000000E+00 ), VARI_INIT=_F(VALE=(3.931095545774485E-05, 1.000000000000000E+00,)), COMPORTEMENT=_F(RELATION='VMIS_ISOT_TRAC',ITER_INTE_MAXI=20,), NEWTON=_F(REAC_ITER=1),) FIN()