* POUT2MAS PROCEDUR PV090527 24/04/02 21:15:23 11875 ************************************************************************* * * * Génère un maillage volumique à partir d'un modèle de poutre * (section, tuyau, poutre) * ************************************************************************** * * * * SI (NON (EXISTE MOTCLE)); FINSI; * * Option par défaut * NCIRCP = 8; NCIRCT = 8; NEPAIT = 1; NY = 1; NZ = 1; FLAGPOUT = 'CIRCULAIRE'; AMPDEF = 1.; FLAGDEFO = FAUX; FLAGVAIS = FAUX; FLAGVONS = FAUX; FLAGRELA = FAUX; FLAGMATS = FAUX; * SI (EXISTE TAB1); * SI (EXISTE TAB1 'AMPLITUDE_DEFORMEES'); AMPDEF = TAB1.'AMPLITUDE_DEFORMEES'; FINSI; * SI (EXISTE TAB1 'TUYAU'); SI (EXISTE (TAB1.'TUYAU') 'NCIRC'); NCIRCT = (TAB1.'TUYAU').'NCIRC'; SINON; NCIRCT = 8; FINSI; * SI (EXISTE (TAB1.'TUYAU') 'EPAI'); NEPAIT = (TAB1.'TUYAU').'EPAI'; SINON; NEPAIT = 1; FINSI; * FINSI; * SI (EXISTE TAB1 'POUTRE'); SI (EXISTE (TAB1.'POUTRE') 'NCIRC'); NCIRCP = (TAB1.'POUTRE').'NCIRC'; SINON; NCIRCP = 8; FINSI; SI (EXISTE (TAB1.'POUTRE') 'NY'); NY = (TAB1.'POUTRE').'NY'; SINON; NY = 1; FINSI; SI (EXISTE (TAB1.'POUTRE') 'NZ'); NZ = (TAB1.'POUTRE').'NZ'; SINON; NZ = 1; FINSI; SI (EXISTE (TAB1.'POUTRE') 'RECTANGULAIRE'); FLAGPOUT = 'RECTANGULAIRE'; SINON; FLAGPOUT = 'CIRCULAIRE'; FINSI; FINSI; * SI (EXISTE TAB1 'DEPLACEMENTS'); FLAGDEFO = VRAI; TAB1. 'DEFORMEES'= TABLE; TAB1. 'DEPLACEMENTS_3D'= TABLE; DEP3D= TABLE; SINON; FLAGDEFO = FAUX; NDEFO = 0; FINSI; * * Si on veut creer les relations pour les sections au droit des noeuds * SI (EXISTE TAB1 'RELATION_3D'); SI (EGA (TAB1.'RELATION_3D') VRAI); FLAGRELA = VRAI; SINON; FLAGRELA = FAUX; FINSI; SINON; FLAGRELA = FAUX; FINSI; * * si on fournit MATS * SI (EXISTE TAB1 'MATS'); FLAGMATS = VRAI; SINON; FLAGMATS = FAUX; NMATS = 0; FINSI; * * si on fournit VAIS * SI (EXISTE TAB1 'VAIS'); FLAGVAIS = VRAI; TAB1. 'VAIS_3D'= TABLE; VAI3D= TABLE; SINON; FLAGVAIS = FAUX; NVAIS = 0; FINSI; * * si on fournit VONS * SI (EXISTE TAB1 'VONS'); FLAGVONS = VRAI; TAB1. 'VONS_3D'= TABLE; VON3D= TABLE; SINON; FLAGVONS = FAUX; NVONS = 0; FINSI; * FINSI; * * Fin de la lecture de la table d'entrée * * Génération du maillage * * * On boucle sur les zones * REPETER LAB1 NBZONE; * I1= &LAB1; MESHPOUI = ZONMOD.(2*I1); MODPOUI = ZONMOD.((2*I1) - 1); * * SI (NB2 > 0); * * On boucle sur les éléments * REPETER LAB2 NB2; I2 = &LAB2; VECXPOJ = POFIPOJ MOINS PODEPOJ; VECXPOJ = VECXPOJ/(NORME VECXPOJ); ** VECYPOJ = EXTR MATPOUI VECT 1 I2 1; VECYPOJ = VECYPOJ/(NORME VECYPOJ); VECYPOJ = VECYPOJ MOINS ((VECYPOJ PSCAL VECXPOJ)*VECXPOJ); SI (VECXPOJ PSCAL (1. 0. 0.) > 1.D-10); SINON; FINSI; FINSI; * * * Cas du modèle à fibre * SI (EXISTE MATPOUI 'MODS'); * * SINON; * * Cas des tuyaux * SI ((EXISTE MATPOUI 'EPAI') ET (EXISTE MATPOUI 'RAYO') ); * * P1S = (RAYTUY - (0.5 * EPATUY)) 0. 0.; P2S = (RAYTUY + (0.5 * EPATUY)) 0. 0.; * * ZONSEC = TABLE; ZONSEC.1 = MESHSEC; ZONSEC.2 = MESHSEC; * * * Fin cas des tuyaux * SINON; * * Cas des poutres * SI ((EXISTE MATPOUI 'INRY') ET (EXISTE MATPOUI 'INRZ') ); * * * SI (EGA FLAGPOUT 'CIRCULAIRE'); * RAYO = ((2.D0*(INRY + INRZ))/PI)**0.25; P1S = RAYO 0. 0.; P2S = 0. RAYO 0.; P3S = ((-1.)*RAYO) 0. 0.; P4S = 0. ((-1.)*RAYO) 0.; * NDISCR = ENTIER (NCIRCP/4); * ZONSEC = TABLE; ZONSEC.1 = MESHSEC; ZONSEC.2 = MESHSEC; * SINON; LX = (144.*(INRZ**3)/INRY)**(1./8.); LY = (144.*(INRY**3)/INRZ)**(1./8.); P1S = (0.5*LX) ((-0.5)*LY) 0.; P2S = ((-0.5)*LX) ((-0.5)*LY) 0.; ZONSEC = TABLE; ZONSEC.1 = MESHSEC; ZONSEC.2 = MESHSEC; * FINSI; * FINSI; * Fin test poutre FINSI; * Fin test tuyau FINSI; * Fin test fibre * * I20 = &lab20; * MESHSECJ = ZONSEC.(2*I20); MODSECJ = ZONSEC.(2*I20 - 1); * MESHSECF = DEDU MESHSECJ ((0. 0. 0.) et (0. 0. 1.) et (1. 0. 0.) et (0. 1. 0.)) * * Génération du volume * SI (EGA MOTCLE 'GAUSS'); VOL3DJ = MESHSECF; SINON; REPETER LAB3 Ntype; SI (EGA EleType SEG2); * Cas des SEGS SINON; * Cas des TRIS et QUAS SI ((EGA EleType TRI3) OU (EGA EleType QUA4)); SINON; * Cas des POJS REPETER LAB4 NBMESH; SI (&LAB4 EGA 1); SINON; MESHVol = MESHVol ET MESHVola; FINSI; FIN LAB4; * FINSI; FINSI; * * VOL3DJ = MESHVol; SINON; VOL3DJ = VOL3DJ et MESHVol; FINSI; * FIN LAB3; FINSI; * VOL3DJJ = VOL3DJ; SINON; VOL3DJJ = VOL3DJJ ET VOL3DJ; FINSI; * * Transfert des MATS sur le 3D * SI FLAGMATS; * 1 1 1 'MATS'; * SI (EGA MOTCLE 'GAUSS'); SINON; mess 'Option disponible seulement pour GAUSS'; FINSI; * * MAT3D = MATJ ; SINON; MAT3D = MAT3D ET MATJ; FINSI; FINSI; * * Fin pour MATS * Transfert des VAIS sur le 3D * SI FLAGVAIS; * REPETER LAB6 NVAIS; i6 = (INDEX (TAB1.'VAIS')).&LAB6; * 1 1 1 'VAIS'; VAIJ0 = * SI (EGA MOTCLE 'GAUSS'); SINON; mess 'Option disponible seulement pour GAUSS'; FINSI; * * SI (NON (EXISTE VAI3D i6)); VAI3D . i6= VAIJ ; SINON; VAI3D. i6 =(VAI3D. i6) ET VAIJ; FINSI; * FIN LAB6; * FINSI; * * Fin pour VAIS * * * Transfert des VONS sur le 3D * SI FLAGVONS; * REPETER LAB6 NVONS; i6 = (INDEX (TAB1.'VONS')).&LAB6; * 1 1 1 VONS; * SI (EGA MOTCLE 'GAUSS'); SINON; mess 'Option disponible seulement pour GAUSS'; FINSI; * * SI (NON (EXISTE VON3D i6)); VON3D . i6= VONJ ; SINON; VON3D. i6 =(VON3D. i6) ET VONJ; FINSI; * FIN LAB6; * FINSI; * * Fin du VONS * * * Ecriture des RELA pour les poutres * SI FLAGRELA; BLPOUT3D = BLPOUTJ ; SINON; BLPOUT3D = BLPOUT3D ET BLPOUTJ ; FINSI; FINSI; * * * Fin RELA pour les poutres * FIN LAB20; * * Calcul des deformees sur le 3D * SI FLAGDEFO; * REPETER LAB5 NDEFO; i5 = (INDEX (TAB1.'DEPLACEMENTS')). &LAB5; * * NATURE DISCRET; NATURE DISCRET; NATURE DISCRET; * UX (0.5*(DEPXINI + DEPXFIN)) UY (0.5*(DEPYINI + DEPYFIN)) UZ (0.5*(DEPZINI + DEPZFIN)) NATURE DISCRET; * DEPJ = DEPJ0 ET - ((0.5*(ROTZINI + ROTZFIN))*(COOUY - COOUY0)) ) SCAL UX NATURE DISCRET); DEPJ = (DEPJ) ET - ((0.5*(ROTXINI + ROTXFIN))*(COOUZ - COOUZ0)) ) SCAL UY NATURE DISCRET) ; DEPJ = (DEPJ) ET - ((0.5*(ROTYINI + ROTYFIN))*(COOUX - COOUX0)) ) SCAL UZ NATURE DISCRET) ; * * SI (NON (EXISTE DEP3D i5)); DEP3D . i5= DEPJ ; SINON; DEP3D. i5 =(DEP3D. i5) ET DEPJ; FINSI; * FIN LAB5; * FINSI; * * Fin calcul des deformees sur le modele 3D * MESH3D = VOL3DJJ; SINON; MESH3D = MESH3D ET VOL3DJJ; FINSI; * * Fin boucle sur les éléments * FIN LAB2; * FINSI; * * * Fin boucle sur les sous zones * FIN LAB1; * * On stocke les résultats sur le maillage 3D * SI FLAGDEFO; REPETER LAB6 NDEFO; i6 = &lab6; (TAB1.'DEPLACEMENTS_3D'). i6 = DEP3D.i6; FIN LAB6; FINSI; SI FLAGVAIS; REPETER LAB6 NVAIS; i6 = &lab6; (TAB1.'VAIS_3D'). i6 = VAI3D.i6; FIN LAB6; FINSI; SI FLAGVONS; REPETER LAB6 NVONS; i6 = &lab6; (TAB1.'VONS_3D'). i6 = VON3D.i6; FIN LAB6; FINSI; SI FLAGMATS; TAB1.'MATS_3D' = MAT3D; FINSI; SI FLAGRELA; TAB1.'RELATION_3D' = BLPOUT3D; FINSI; * 'FINPROC' MESH3D; *
© Cast3M 2003 - Tous droits réservés.
Mentions légales