* 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