************************************************************************ ************************************************************************ ******************************************************************** * * xfem02.dgibi * * calcul avec elements xfem (XQ4R) * d'une plaque elasto plastique en traction * avec fissure droite * * création : bp, le 24.09.2009 * ajout g_theta : bp, 08.06.2010 * ******************************************************************** *opti echo 1 ; *graph = vrai; opti trac PSC ; opti EPTR 5; graph = faux; fllong = faux; ******************************************************* *** Options de calcul : 2D ******************************************************* *** Maillage : Plaque rectangulaire saine * dimensions * bord droit, gauche, hauteur b= 0.050 ; bg = -0.25 * b ; hb1= 0.6 * b ; hgoup= 0.35 * b; * finesse * ici, nx1 doit etre un multiple de 2 et de 5 nx1 = 20; si(fllong); nx1 = 40; fins; dx1 = (b-bg) / (flot nx1) ; na1 = enti (b / dx1); na6 = nx1 - na1; na2 = 2; ha1 = (flot na2) * dx1; * demi-zone centrale pa1 = (0.) (0.*ha1) ; pa2 = (b ) (0.*ha1) ; pa3 = (b) (ha1) ; pa4 = (0.) (ha1) ; pa5 = (bg) (ha1) ; pa6 = (bg) (0.*ha1) ; da61 = (da6 et da1); da34 = (da3 et da4); * zone de transition dx2 = (2.*dx1); nb3 = na1 / 2; nb4 = na6 / 2; db34 = db3 et db4; nb34 = nb3 + nb4; * procedure maillage 2 pour 1 entre 2 lignes : lgros et lfine lfine = da34; lgros = db34; if1 = 1; ig1 = 1; logpm2 = vrai; repe bmotif1 nbmotif1; if1 = if1 + 1; if1 = if1 + 1; ig1 = ig1 + 1; si(logpm2); logpm2 = faux; sino; logpm2 = vrai; finsi; si(&bmotif1 ega 1); motif1 = geo1; sino; motif1 = motif1 et geo1; fins; fin bmotif1; * on recupere motif1 sb1 = motif1; * zone "grossiere" pc3 = (b) (hgoup); pc5 = (bg) (hgoup); pd3 = ( b) (hb1); pd5 = (bg) (hb1); * symetrie et assemblages * satot = sa1 et sa2; * sbtot = (sb1 et sc1 et sd1) et (sb2 et sc2 et sd2); satot = (sa1 et sb1) et (sa2 et sb2); sbtot = (sc1 et sd1) et (sc2 et sd2); stot0 = satot et sbtot; mess 'maillage central ext total' ; ******************************************************* *** Maillage de la fissure * longueur de la fissure a0 = 0.025 ; * finesse du maillage de la fissure na0 = 10; da0 = a0 / (flot na0) ; * maillage ptip0 = (bg) (0.); ptip1 = (a0) (0.); * table (+ pratique pour gérer la propa) TXFEM . 0 . 'POINTE1' = ptip1; TXFEM . 0 . 'FISSURE' = lcrack0; * creation des level set psi0 phi0 = PSIPHI satot lcrack0 'DEUX' ptip1; PAS (0.2*dx1) dx1 PAS dx1 (5.*dx1) a0 ); si(graph); *opti isov lign; *opti isov surf; finsi; ******************************************************* *** Modeles et materiaux * definition des models elementaires * enrichissement * constructionsion des blocages des ddl X-fem non actifs dans * les éléments de transition. * on crée le ou les materiau et on les assemble Ey1 = 5.520E+8 '/' 2.627E-3 ; nu1 = 0.3 ; rho1= 7800. ; 0.000E+0 2.627E-3 2.967E-3 3.276E-3 3.585E-3 5.129E-3 8.221E-3 1.132E-2 1.442E-2 1.754E-2 3.334E-2 5.006E-2 6.914E-2 9.391E-2 1.314E-1 1.956E-1 3.134E-1 5.336E-1) ; 0.000E+0 5.520E+2 5.530E+2 5.540E+2 5.550E+2 5.600E+2 5.700E+2 5.800E+2 5.900E+2 6.000E+2 6.500E+2 7.000E+2 7.500E+2 8.000E+2 8.500E+2 9.000E+2 9.500E+2 1.000E+3) * 1.E6 ; si graph ; fins ; * apres cela on assemble mod1tot = mod1a et mod1b; mat1tot = mata et matb ; ******************************************************* *** CL et chargement * on bloque les depl de corps rigides pgouptot = pgoup1 et pgoup2; cl1tot = cl1x et cl1y; * deplacement impose * evolution du0 = 0.10E-3 ; *ufin0 = 0.5E-3 ; ufin0 = 1.E-3 ; tval0 = uval0 * 1.E-2 ; dtval0 = du0 * 1.E-2 ; * chpoint * chargement si(graph); dess uev0 tdess1; finsi; ******************************************************* *** MISE EN CHARGE AVEC PASAPAS *** * temps de mise en charge * Initialisation de la table TAB1.'MODELE' = mod1tot; TAB1.'CARACTERISTIQUES' = mat1tot; TAB1.'BLOCAGES_MECANIQUES' = cl1tot et(Rel1x . 0) ; TAB1.'CHARGEMENT' = uimp1; TAB1.'PRECISION' = 1E-05; TAB1.'PRECISINTER' = 1E-05; *TAB1. 'TEMPS0' = 0. ; *TAB1. 'PROCESSEURS' = 'MONO'; TAB1.'TEMPS_CALCULES' = tcalc0 ; TAB1.'TEMPS_SAUVES' = tcalc0 ; * Resolution non-lineaire ****** PASAPAS TAB1; * Mise a Jour de la table TXFEM (a terme devra etre inclus dans PASAPAS) i = 0 ; repe BOUX0 (Ncalc0 - 1); i = i + 1; TXFEM . i = TXFEM . (i - 1); Che1X . i = Che1X . (i - 1); fin BOUX0; * calcul de l integrale J ***** * * J local * si (fllong); * SUPTAB = TABL ; * SUPTAB.'OBJECTIF' = MOT 'J'; * SUPTAB.'PSI' = psi0; * SUPTAB.'PHI' = phi0; * SUPTAB.'FRONT_FISSURE' = ptip1 ; * SUPTAB.'SOLUTION_PASAPAS' = TAB1; * SUPTAB.'COUCHE' = 2; * G_THETA SUPTAB; * si(graph); * q7 = (SUPTAB . 'CHAMP_THET1') ; * vq7 = VECT q7 AZUR ; * trac vq7 (stot0 et lcrack0); * fins; * fins; * calcul de l integrale J global JTAB.'PSI' = psi0; JTAB.'PHI' = phi0; JTAB.'FRONT_FISSURE' = ptip1 ; JTAB.'SOLUTION_PASAPAS' = TAB1; *definition dun champ_theta perso pour calcul de j global si(graph); * trac (exco 'UX' monch1) (stot0 et lcrack0); fins; JTAB.'CHAMP_THETA' = monch1; G_THETA JTAB; ******************************************************* *** PROPAGATION élémentaire de fissure *** *rem: + tard, prevoir procedure surtout pour le 3d NBPROPA = 2; da1 = 1.5 * dx1; repe BPROPA NBPROPA; i = i + 1; *** Maillage de la fissure *** TXFEM . i . 'POINTE1' = ptip1; TXFEM . i . 'FISSURE' = lcrack1; *** Actualisations *** * des level set psi1 phi1 = PSIPHI satot lcrack1 'DEUX' ptip1 ; si(graph); *opti isov lign; *opti isov surf; finsi; * du modele, de la rigidite,... (inutile pour le materiau) * des blocages des ddl X-fem non actifs dans * les éléments de transition. mod1tot = mod1a et mod1b; TAB1.'MODELE' = mod1tot; TAB1.'BLOCAGES_MECANIQUES' = cl1tot et (Rel1x . i) ; *** resolution non-lineaire PASaPAS *** TAB1.'TEMPS_CALCULES' = tcalc1 ; TAB1.'TEMPS_SAUVES' = tcalc1 ; TAB1.'REEQUILIBRAGE' = VRAI ; PASAPAS TAB1; *** calcul de l integrale J global (le contour ne change pas) *** JTAB.'PSI' = psi1; JTAB.'PHI' = phi1; JTAB.'FRONT_FISSURE' = ptip1 ; *JTAB.'CHAMP_THETA' = JTAB.'CHAMP_THET1'; JTAB.'CHAMP_THETA' = monch1; * on utilise la reprise car le contour ne change pas G_THETA JTAB; * si (fllong); * *** calcul de l integrale J local, de K1, de K2 *** * * a chaque propa il faut une nouvelle table, car le contour change... * SUPTAB = TABL ; * SUPTAB.'OBJECTIF' = MOT 'J'; * SUPTAB.'PSI' = psi1; * SUPTAB.'PHI' = phi1; * SUPTAB.'FRONT_FISSURE' = ptip1 ; * SUPTAB.'SOLUTION_PASAPAS' = TAB1; * SUPTAB.'COUCHE' = 2; * * G_THETA SUPTAB; * q7 = (SUPTAB . 'CHAMP_THET1') ; * * si(graph); * vq7 = VECT q7 AZUR ; * trac vq7 (stot0 et lcrack1); * fins; * fins; * i etant l indice de la table de PASAPAS TAB1, * il faut l'incrementer avant et apres chaque appel a pasapas i = i + 1; TXFEM . i = TXFEM . (i - 1); Che1X . i = Che1X . (i - 1); fin BPROPA; ****************************************************** *** POST TRAITEMENT *** * courbe J global - t (le contour ne change pas) *** si(graph); finsi; * courbe force ouverture **************************** ipost = -1; Npost = i; repe BPOST1 (Npost + 1); ipost = ipost + 1; u1i = TAB1 . 'DEPLACEMENTS' . ipost; frea1i = TAB1 . 'REACTIONS' . ipost; fin BPOST1; si(graph); finsi; * quelques tracés **************************** u1i = TAB1 . 'DEPLACEMENTS' . i; var1i = TAB1 . 'VARIABLES_INTERNES' . i; sig1i = TAB1 . 'CONTRAINTES' . i; si(graph); finsi; * *opti donn 5 ; fin;
© Cast3M 2003 - Tous droits réservés.
Mentions légales