* FIXHC PROCEDUR BR232186 16/12/05 21:39:28 9238 **************************************************** * Procedure de tracking par resolution d'un probleme * de conduction thermique stationnaire * Application au modele E-FEM * Version : * Fixed global tracking * Creation : * Francesco RICCARDI 22/08/2016 * Benjamin RICHARD * Contact : * Francesco.Riccardi[at]cea.fr * Benjamin.Richard[at]cea.fr * Institution : * CEA\DEN\DANS\DM2S\SEMT\EMSI **************************************************** * Voir notice TRACKING pour plus d'informations **************************************************** * *******----DEBUT Procedure FIXHC----******* * * Indice d'evolution nn = nn-1; * Modeles MODEL1 = TAB2. 'MODELE'; * Modele et materiau EFEM MODEL11 = MODELS. 1; SURFACE1 = MODELS. 2; MATr1 = TAB2. 'WTABLE'. 'CARACTERISTIQUES'; * Resistance en traction * Coordonnees de la geometrie * Maximum des contraintes principales SIG1 = TAB2. 'CONTINUATION'. 'CONTRAINTES'; * Variables internes : NFLA *TRAC FLAG MODEL11; * Nombre de root elements NROOTS = TAB2. 'NROOTS'; *LIST NROOTS; * Nombre maximum de fissures MAXR = TAB2. 'NRMAX'; * *----- Debut algorithme de tracking --------------------------- * * Cas1 : on fixe le nombre de fissures SI ((SIGMAX > 0) ET (NROOTS < MAXR)); * Cas2 : on fixe le pas de temps *SI ((SIGMAX > 0) ET (NN < (TAB2. 'NPAS_TRACKING'))); * Cas3 : pas de limitations *SI (SIGMAX > 0); * Points ou la contrainte depasse la resistance en traction SI (VFLAG EGA 0); NLIM = 1; SINON; SI (VFLAG EGA 0); NLIM = 0; SINON; FINSI; FINSI; * On ordonne les possibles root elements par contrainte decr Prr = TABLE; Prr. 'coor_x' = TABLE; Prr. 'coor_y' = TABLE; Srr = TABLE; Trr = TABLE; ff = 0; REPETER ORDINE (NROOTS + NLIM); ff = (ff + 1); SI ((NROOTS > 0) ET (ff <EG NROOTS)); Prr. 'coor_x'. ff = Prr. 'coor_y'. ff = Srr. ff = 0; SINON; Srr. ff = SIGMAX1; DIFF1 = XAX * SIGMAX1; SIGMAX0 = (SIGMAX0 - DIFF1); FINSI; FIN ORDINE; * *\\\\ Resolution du probleme de conduction ////* * * Cosinus des tangentes * Champ vectoriel des tangentes *SIGMA22 = MANU 'CHML' MODEL11 'SI22' 1. 'TYPE' *'CONTRAINTES PRINCIPALES' 'STRESSES'; *PRIN12 = (SIGMA22 ET COS2X ET COS2Y ET COS2Z); *VECTAN = VECT PRIN12 MODEL11 0.001 'SI22'; * Modele thermique * Perturbation conductivite numerique TTPETIT = 1.E-6; * Tenseur conductivite anisotrope KXX=(COS2X**2)+((COS2X**0)*TTPETIT); KYY=(COS2Y**2)+((COS2Y**0)*TTPETIT); KXY=TTX*TTY; PX = 1.0 0.; * Matrice de rigidite * Conditions aux limites CLTH = CLT1; * Temperature imposee VBC = TAB2. 'BCSTH'; DETH = DE1; * Assemblage KTHTOT = KTH ET CLTH; *Resolution TAB2. 'RESTH' = RESTH; *TRAC RESTH SURFACE1; * *\\\\ Extraction des isovaleurs ////* * i = 0; REPETER BOUCLEEL (NROOTS + NLIM); i = i + 1; PPP = (Prr. 'coor_x'. i) (Prr. 'coor_y'. i); ELACTIF = 0; TRACCIA = FAUX; * Verification des elements ***On a trois cas : ***ELACTIF = 0 : possibles elements root*** ***ELACTIF = 1 : elements appartenant a une isovaleur*** ***ELACTIF = 2 : elements a negliger*** SI (i <EG NROOTS); ELACTIF = 1; TRACCIA = VRAI; SINON; * CHECK1 : on verifie si PPP appartient a une isovaleur active ELACTIF = 1; FINSI; FINSI; * CHECK2 : les elements root doivent etre bien separes SI (ELACTIF EGA 0); SI (NROOTS EGA 0); TRACCIA = VRAI; SINON; CHECK2 = NEW_MESH ELEM 'APPUYE' 'LARGEMENT' (Trr. i) 'NOVERIF'; TRACCIA = VRAI; SINON; ELACTIF = 2; FINSI; FINSI; FINSI; * Isovaleurs SI (TRACCIA EGA VRAI); TG = ((TA + TB + TC) / 3.); * Extraction des elements traverses par l'isovaleur T01 = T0 - T0G; * CHECK3 : les isovaleurs doivent etre bien separees * Si le seul element en commun est EL0 alors on continue SI (i > NROOTS); ELACTIF = 2; FINSI; FINSI; SI (ELACTIF EGA 1); NEW_MESH = NEW_MESH ET (TAB2. 'MESH_ISO'. i); FINSI; SI (ELACTIF EGA 0); NEW_MESH = NEW_MESH ET MESH_EL; TAB2. 'NROOTS' = (TAB2. 'NROOTS') + 1; TAB2. 'ISOTOT'. (TAB2. 'NROOTS') = ISOVG; TAB2. 'MESH_ISO'. (TAB2. 'NROOTS') = MESH_EL; TAB2. 'PROOTS'. (TAB2. 'NROOTS') = PPP; 'CONTENANT' PPP; FINSI; FINSI; DROOTS = (TAB2. 'NROOTS') - NROOTS; SI (DROOTS EGA 1); QUIT BOUCLEEL; FINSI; SI (i EGA (NROOTS + NLIM)); QUIT BOUCLEEL; FINSI; FIN BOUCLEEL; TAB2. 'MESH' = NEW_MESH; * *\\\\ Creation des chamelem ////* * 'TYPE' 'CONTRAINTES PRINCIPALES' 'STRESSES'; i=0; repeter BOUCLEB nlm1; i = i + 1; CHP = CHPX * CHPY; CHM = CHM + CHP; fin BOUCLEB; * Abscisses des points d'entree des fissures 'CONTRAINTES PRINCIPALES' 'STRESSES'; * Ordonnees des points d'entree des fissures CHIY = CHIX; * Composante x des normales CHNX = CHIX; * Composante y des normales CHNY = CHIX; j = 0; * Debut de la boucle sur les root elements REPETER BOUCLE1 (TAB2. 'NROOTS'); j = j + 1; ROOTj = TAB2. 'EROOTS'. j; MESHj = TAB2. 'MESH_ISO'. j; CHIXj = CHIX * 0.; CHIYj = CHIY * 0.; CHNXj = CHNX * 0.; CHNYj = CHNY * 0.; SINON; PINI = PFIN; FINSI; * Debut de la boucle sur les elements de l'isovaleur j i = 0; REPETER BOUCLE2 NUMEL; i = i + 1; SI (i EGA 1); ELi = ROOTj; MTEST = ROOTj; SEGi = SEG1; STEST = SEG1; PTEST = PINI; SINON; MTEST = MTEST ET ELi; SI (i > 2); STEST = STEST ET SEGi; FINSI; SI (PTEST1 EGA PINI); PTEST = PTEST2; SINON; PTEST = PTEST1; FINSI; FINSI; * Calcul de la tangente et de la normale a la fissure LL = (((XP1 - XP2) ** 2) + ((YP1 - YP2) ** 2)) ** 0.5; SI (YP1 > YP2); TY = (YP1 - YP2) / LL; TX = (XP1 - XP2) / LL; SINON; TY = (YP2 - YP1) / LL; TX = (XP2 - XP1) / LL; FINSI; SI (YP1 EGA YP2); TY = 0.; TX = -1.; FINSI; NX = TY; NY = -1.*TX; CH = CHPX * CHPY; CHIXj = CHIXj + (CH * XTEST); CHIYj = CHIYj + (CH * YTEST); CHNXj = CHNXj + (CH * NX); CHNYj = CHNYj + (CH * NY); * Pour le pas suivant SI (i < NUMEL); FINSI; FIN BOUCLE2; CHIX = CHIX + CHIXj; CHIY = CHIY + CHIYj; CHNX = CHNX + CHNXj; CHNY = CHNY + CHNYj; FIN BOUCLE1; MATr2 = MATE MODEL11 YOUN E11 NU NU11 FT P11 XNX CHNX XNY CHNY IND1 CHM XIE CHIX YIE CHIY; MATr1 = MATr2; TAB2. 'WTABLE'. 'CARACTERISTIQUES' = MATR1; FINSI; FINP MATR1;
© Cast3M 2003 - Tous droits réservés.
Mentions légales