* fichier : xfem3d_01.dgibi ************************************************************************ ************************************************************************ ******************************************************* *opti echo 0; MESS '' ; MESS ' CALCUL ELASTIQUE DE PROPAGATION STATIQUE DE FISSURE '; MESS '' ; ******************************************************* *** Options *** options de calcul *** options de trace graph = faux ; * graph = vrai ; * opti 'TRAC' X ; ******************************************************* *** Maillage : cube sain 1 x 1 x 1 * finesse de la discretisation * n1 = 36; * n1 = 24; * n1 = 12; n1 = 8; * geoemtrie L1 = 1. ; dx1 = (L1) / (flot n1) ; * face avant (a) pa1 = (-0.5*L1) 0. (-0.5*L1) ; pa2 = ( 0.5*L1) 0. (-0.5*L1) ; pa3 = ( 0.5*L1) 0. ( 0.5*L1) ; pa4 = (-0.5*L1) 0. ( 0.5*L1) ; * repartition 0.25 // 0.5 // 0.25 vz1 = 0. 0. (0.25*L1); * volume = cube ex = 1. 0. 0.; ey = 0. 1. 0.; ez = 0. 0. 1.; ny1 = n1; dx1elim = 1.E-5*dx1; ELIM vol1 vol2 dx1elim; ELIM vol1 vol3 dx1elim; vol23 = vol2 et vol3; vol0 = vol1 et vol23; * qq recup eye1 = 100. -50. 30. ; eye2 = 0. -0. 100. ; si(graph); fins; ********************************************************** * tables et indice de propagation it = 0; *********************************************************** *** Maillage de la fissure *** fissure semi elliptique aplatie a0 = 0.50; rapab0 = 0.2; b0 = a0 * rapab0; bbord = 0.20; * finesse du maillage de la fissure da0 = dx1 / 4.; na0 = enti (a0 / da0); nb0 = enti (b0 / da0); * da000 = rapab0 * da0; da000 = da0; * points de base pf1 = a0 0. 0. ; pf2 = a0 bbord 0. ; pf4 = (-1.*a0) bbord 0. ; pf5 = (-1.*a0) 0. 0. ; pf0 = 0. 0. 0.; pf3 = 0. bbord 0.; * lignes de base * profil elliptique vy2 = b0 * ((un2 - ((x2/a0)**2))**0.5); * surface reglee * tres important si(graph); trac eye2 sfron1; fins; pcrack1.it = lfron1; crack1.it = sfron1 ; si(graph); fins; *opti donn 5 ; ********************************************************** *** MODELE & MATERIAU *** ********************************************************** * coef elastique Ey0 = 2.E11; nu0 = 0.3 ; rho0= 7800. ; mu0 = (0.5 * Ey0) / (1. + nu0) ; Estar0 = Ey0 / (1. - (nu0**2)); * Loi de Paris (on convertit C : mm -> m) mParis = 3.; CParis = 1.E-9 * 1.E-3; ********************************************************** *** Modele & materiau *** * * zone de propagation (X-FEM) * constructionsion des blocages des ddl X-fem non actifs dans * les éléments de transition. * * elements standards * mod1tot = mod1 et mod23; mat1tot = mat1 et mat23 ; ********************************************************** *** CL et DEPLACEMENTS IMPOSES *** ********************************************************** syy0 = -100.E6; *** MODE I *** * CL mode I cl1tot = (cl1 ET cl2 ET cl3) ; * chargement mode I for1tot = for1 et for2; si(graph); (con0 et pcrack1.it) 'CACH'; fins; *** matrice elastique et assemblage K1tot = Rig1tot et cl1tot et (Rel1x . it); ******************************************************* * INITIALISATIONS POUR LA BOUCLE TEMPORELLE ******************************************************* logda = FAUX; ******************************************************* * BOUCLE TEMPORELLE POUR FAIRE PROPAGER LA FISSURE ******************************************************* *nt1=n1; nt1=2; REPE BT1 nt1; it = it + 1; ******************************************************* * PROPAGATION ÉLÉMENTAIRE DE FISSURE ******************************************************* si(logda); *** Angle de propagation *** * angle * modif pour etre tranquille K2G = (masK2) + ((un1 - masK2) * K2G); tet0c = K1G / K2G; tet8c = (tet0c**2) + (8. * un1); tet1c = tet0c - ( sgnK2 * (tet8c**0.5) ); tet1c = 2. * (atg (0.25 * tet1c)); tet1c = (0. * masK2 ) + ((un1 - masK2) * tet1c); * on recupere la direction du repere local de la fissure (CHPOINT) ETIP1 = KTAB . 'UTILTET1' . 'DIRECTION1'; ETIP2 = KTAB . 'UTILTET1' . 'DIRECTION2'; * on fait tourner de l'angle critique DA1VEC = ((cos tet1c) * ETIP1) + ((sin tet1c) * ETIP2); *trac (vect DA1VEC) (pcrack1 . it et con0); *** vitesse de propagation *** K1eff = ( (K1G**2) + (K2G**2) )**0.5; K1eff = ( (K1G**2) + (K2G**2) + ((Estar0/mu0)*(K3G**2)) )**0.5; * Passage en MPa.m^0.5 K1eff = K1eff * 1.E-6; * quel est le dn correspondant a da1min ? dadn = CParis * (K1min**mParis); dn = da1min / dadn; dadn = (CParis * dn) * (K1eff**mParis) ; DA1VEC = dadn * DA1VEC; *** on cree un maillage par translation **** *** quelques chpo utiles *** * on calcul la distance signee a la paroi * on cree un chpoint permettant de savoir si un point est a l interieur *** Etape 1 : traitement des segments "a cheval" sur le bord *** * boucle sur les segments de pcrk1 dismall1 = 1.E-6 * da0; icrk1 = 0; repe Bcrk1 ncrk1; icrk1 = icrk1 + 1; * recup des segments et des points * test pour savoir si a cheval si((abs(un1a - un1b)) >eg 0.5); si(un1a < 0.5); * il faut ramener le point pt1a v1a = phi1a / (phi1a - phi1b); sino; * il faut ramener le point pt1b v1b = phi1b / (phi1b - phi1a); fins; fins; fin Bcrk1; *** Etape 2 : traitement des points encore a l'exterieur *** * mise a jour de uncrk1 icrk1 = 0; repe Bcrk2 ncrk1; icrk1 = icrk1 + 1; * recup des segments et des points * pt1a a l exterieur ? si(un1a < 0.5); * distance signée associée * il faut ramener le point pt1a v1a = phi1a / (phi0a - phi1a); fins; fin Bcrk2; * sans oublier le dernier point du dernier segment * pt1a a l exterieur ? si(un1a < 0.5); * recup des segments et des points du front precedent * distance signée associée * il faut ramener le point pt1a v1a = phi1a / (phi0a - phi1a); fins; *** si tous les points du front sont sortis * c est qu on a tout cassé !!! => on quitte *** Etape 3 : points sur le bord qui sont entrés a linterieur *** * mise a jour de dis1 * 1er point du 1er segment si((abs phi0a) <eg dismall1); si((abs phi1a) > dismall1); v1a = phi1a / (phi1b - phi1a) ; fins; fins; * dernier point du dernier segment si((abs phi0b) <eg dismall1); si((abs phi1b) > dismall1); v1b = phi1b / (phi1a - phi1b) ; fins; fins; *** on recupere le vrai nouveau front *** si((flot (it / 2)) ega ((flot it) / 2.)); sinon; fins; *** on maille la surface fissuree *** nregl1 = 1 + (enti (da1min / da0)); *** on retraite la surface fissuree cree au debut *** ELIM sfiss1 dismall1; crack1 . it = sfiss1 et crack1 . (it - 1) ; *** fin de l avancee du maillage du front ********************** *** Actualisations *** * ...des level set si(graph); fins; * ...du modele, de la rigidite,... (inutile pour le materiau) * ... des blocages des ddl X-fem non actifs dans * les éléments de transition. K1tot = Rig1tot et cl1tot et (Rel1x . it) ; ******************************************************* * PAS DE PROPA ******************************************************* sino; crack1 . it = crack1 . (it - 1); pcrack1 . it = pcrack1 . (it - 1); fins; **************************** *** resolution *** si(graph); * amp1 = 25.; amp1 = 10.; TRAC sig1 mod1tot def1 eye1; TRAC def2 eye1; def3 = def1 finsi; *** Calcul des FIC par methode integrale G_THETA *** KTAB .'PSI' = psi1; KTAB .'PHI' = phi1; KTAB .'FRONT_FISSURE' = pcrack1 . it ; KTAB .'MODELE' = mod1tot; KTAB .'CARACTERISTIQUES' = mat1tot; KTAB .'SOLUTION_RESO' = u1 . it; KTAB .'CHARGEMENTS_MECANIQUES' = for1tot; KTAB . 'COUCHE' = 1; * KTAB . 'COUCHE' = 2; G_THETA KTAB; Kchpo1 = KTAB . 'CHPO_RESULTATS' ; TKchpo1 . it = Kchpo1; TK1ev . it = K1ev; TK2ev . it = K2ev; TK3ev . it = K3ev; * K1eqpr = ((K1pr**2) + (K2pr**2))**0.5; K1eqpr = ( (K1pr**2) + (K2pr**2) + ((Estar0/mu0)*(K3pr**2)) )**0.5; si(it ega 1); fins; dadnev = CParis * (K1eqev**mParis); GTAB .'PSI' = psi1; GTAB .'PHI' = phi1; GTAB .'FRONT_FISSURE' = pcrack1 . it ; GTAB .'MODELE' = mod1tot; GTAB .'CARACTERISTIQUES' = mat1tot; GTAB .'SOLUTION_RESO' = u1 . it; GTAB .'CHARGEMENTS_MECANIQUES' = for1tot; GTAB .'COUCHE' = 1; G_THETA GTAB; Jchpo1 = GTAB . CHPO_RESULTATS; dess Jev1; *** Increment de propagation *** logda = VRAI; * increment manuel da1min = 1.4 * dx1; * OPTI DONN 5 echo 1 trac X; * ON VERIFIE QUE LA FORMULE D'IRWIN EST VERIFIE A LA TOLERANCE PRES GEV1 = ((1.-(NU0**2))/EY0*((K1EV**2) + (K2EV**2))) + ((K3EV**2)/(2.*MU0)) ; TOL1 = 0.05 ; SAUT 'LIGNE' ; MESS 'ERREUR SUR LA FORMULE D''IRWIN :' ERR1 ; SAUT 'LIGNE' ; SI (ERR1 >EG CRI1) ; MESS 'ERREUR : L''ERREUR SUR LA FORMULE D''IRWIN A L''ITERATION' ; FINSI ; FIN BT1; FIN ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales