* COQ2MAS PROCEDUR PASCAL 14/01/23 21:15:02 7911 ************************************************************************* * * * Génère un maillage volumique à partir d'un modèle * de coques multicouches * ************************************************************************** * * * FLAGDEFO = FAUX; FLAGCONT = FAUX; FLAGVARI = FAUX; FLAGRELA = FAUX; * TAB1 = TABLE; FINSI; * * On regarde si la table TAB1 existe sinon on la crée * On la complète le cas échéant * SI (EXISTE TAB1); * SI (EXISTE TAB1 'DEPLACEMENTS'); FLAGDEFO = VRAI; SINON; FLAGDEFO = FAUX; NDEFO = 0; FINSI; * SI (EXISTE TAB1 'CONTRAINTES'); FLAGCONT = VRAI; SINON; FLAGCONT = FAUX; NCONT = 0; FINSI; * * SI (EXISTE TAB1 'VARIABLES_INTERNES'); FLAGVARI = VRAI; SINON; FLAGVARI = FAUX; NVARI = 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 (NON (EXISTE TAB1 'MODELE')); TAB1. 'MODELE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'MATERIAU')); TAB1. 'MATERIAU' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'MAILLAGE_FIBRE_MOYENNE')); TAB1. 'MAILLAGE_FIBRE_MOYENNE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'MAILLAGE_FIBRE_INFERIEURE')); TAB1. 'MAILLAGE_FIBRE_INFERIEURE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'MAILLAGE_FIBRE_SUPERIEURE')); TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'MAILLAGE_VOLUMIQUE')); TAB1. 'MAILLAGE_VOLUMIQUE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'DEPLACEMENTS_FIBRE_MOYENNE')); TAB1. 'DEPLACEMENTS_FIBRE_MOYENNE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'VARI_FIBRE_MOYENNE')); TAB1. 'VARI_FIBRE_MOYENNE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'CONTRAINTES_FIBRE_MOYENNE')); TAB1. 'CONTRAINTES_FIBRE_MOYENNE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'CONTRAINTES_FIBRE_SUPERIEURE')); TAB1. 'CONTRAINTES_FIBRE_SUPERIEURE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'CONTRAINTES_FIBRE_INFERIEURE')); TAB1. 'CONTRAINTES_FIBRE_INFERIEURE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'CONTRAINTES_VOLUMIQUE')); TAB1. 'CONTRAINTES_VOLUMIQUE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'DEPLACEMENTS_FIBRE_INFERIEURE')); TAB1. 'DEPLACEMENTS_FIBRE_INFERIEURE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'DEPLACEMENTS_FIBRE_SUPERIEURE')); TAB1. 'DEPLACEMENTS_FIBRE_SUPERIEURE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'DEPLACEMENTS_VOLUMIQUE')); TAB1. 'DEPLACEMENTS_VOLUMIQUE' = TABLE; FINSI; * SI (NON (EXISTE TAB1 'NORMALE')); TAB1. 'NORMALE' = TABLE; FINSI; * SINON; * TAB1 = TABLE; TAB1. 'MODELE' = TABLE; TAB1. 'MATERIAU' = TABLE; TAB1. 'MAILLAGE_FIBRE_MOYENNE' = TABLE; TAB1. 'MAILLAGE_FIBRE_INFERIEURE' = TABLE; TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' = TABLE; TAB1. 'MAILLAGE_VOLUMIQUE' = TABLE; TAB1. 'DEPLACEMENTS_FIBRE_MOYENNE' = TABLE; TAB1. 'DEPLACEMENTS_FIBRE_INFERIEURE' = TABLE; TAB1. 'DEPLACEMENTS_FIBRE_SUPERIEURE' = TABLE; TAB1. 'DEPLACEMENTS_VOLUMIQUE' = TABLE; TAB1. 'NORMALE' = TABLE; TAB1. 'VARI_FIBRE_MOYENNE' = TABLE; TAB1. 'CONTRAINTES_FIBRE_MOYENNE' = TABLE; TAB1. 'CONTRAINTES_FIBRE_INFERIEURE' = TABLE; TAB1. 'CONTRAINTES_FIBRE_SUPERIEURE' = TABLE; TAB1. 'CONTRAINTES_VOLUMIQUE' = TABLE; * FINSI; * SI FLAGDEFO; REPETER LAB3 NDEFO; i3 = (INDEX (TAB1. 'DEPLACEMENTS')) . &lab3 ; TAB1. 'DEPLACEMENTS_FIBRE_MOYENNE' . i3 = TABLE; TAB1. 'DEPLACEMENTS_FIBRE_INFERIEURE' . i3 = TABLE; TAB1. 'DEPLACEMENTS_FIBRE_SUPERIEURE' . i3 = TABLE; TAB1. 'DEPLACEMENTS_VOLUMIQUE' . i3 = TABLE; FIN LAB3; FINSI; SI FLAGCONT; REPETER LAB3 NCONT; i3 = (INDEX (TAB1. 'CONTRAINTES')) . &lab3 ; TAB1. 'CONTRAINTES_FIBRE_MOYENNE' . i3 = TABLE; TAB1. 'CONTRAINTES_FIBRE_INFERIEURE' . i3 = TABLE; TAB1. 'CONTRAINTES_FIBRE_SUPERIEURE' . i3 = TABLE; TAB1. 'CONTRAINTES_VOLUMIQUE' . i3 = TABLE; FIN LAB3; FINSI; SI FLAGVARI; REPETER LAB3 NVARI; i3 = (INDEX (TAB1. 'VARIABLES_INTERNES')) . &lab3 ; TAB1. 'VARI_FIBRE_MOYENNE' . i3 = TABLE; FIN LAB3; 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; * * On ne crée les maillages que s'ils n'existent pas * SI (NON (EXISTE TAB1.'MAILLAGE_FIBRE_MOYENNE' I1)); * MESHCOUI = ZONMOD.(2*I1); MODCOUI = ZONMOD.((2*I1) - 1); * SINON; FINSI; * TAB1. 'MODELE' . I1 = MODCOUI; TAB1. 'MATERIAU' . I1 = MATCOUI; TAB1. 'NORMALE' . I1 = VVJP; TAB1. 'MAILLAGE_FIBRE_MOYENNE' . I1 = MESHMOY; TAB1. 'MAILLAGE_FIBRE_INFERIEURE' . I1 = MESHINF; TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' . I1 = MESHSUP; TAB1. 'MAILLAGE_VOLUMIQUE'. I1 = MESHVOL; * SI FLAGRELA; REPETER LAB100 NNN1; I100 = &LAB100; BLCOQ3D = BLCOQJ; SINON; BLCOQ3D = BLCOQ3D ET BLCOQJ; FINSI; FIN LAB100; FINSI; * SI (I1 EGA 1); TAB1. 'MODELE' . 'TOTAL' = MODCOUI; TAB1. 'MATERIAU' . 'TOTAL' = MATCOUI; * TAB1. 'NORMALE' . 'TOTAL' = VVJP; TAB1. 'MAILLAGE_FIBRE_MOYENNE' . 'TOTAL' = MESHMOY; TAB1. 'MAILLAGE_FIBRE_INFERIEURE' . 'TOTAL' = MESHINF; TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' . 'TOTAL' = MESHSUP; TAB1. 'MAILLAGE_VOLUMIQUE'. 'TOTAL' = MESHVOL; SINON; TAB1. 'MODELE' . 'TOTAL' = TAB1. 'MODELE' . 'TOTAL' et MODCOUI; TAB1. 'MATERIAU' . 'TOTAL' = TAB1. 'MATERIAU' . 'TOTAL' et MATCOUI; * TAB1. 'NORMALE' . 'TOTAL' = * TAB1. 'NORMALE' . 'TOTAL' et VVJP; TAB1. 'MAILLAGE_FIBRE_MOYENNE' . 'TOTAL' = TAB1. 'MAILLAGE_FIBRE_MOYENNE' . 'TOTAL' et MESHMOY; TAB1. 'MAILLAGE_FIBRE_INFERIEURE' . 'TOTAL' = TAB1. 'MAILLAGE_FIBRE_INFERIEURE' . 'TOTAL' et MESHSUP; TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' . 'TOTAL' = TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' . 'TOTAL' et MESHINF; TAB1. 'MAILLAGE_VOLUMIQUE'. 'TOTAL' = TAB1. 'MAILLAGE_VOLUMIQUE'. 'TOTAL' et MESHVOL; FINSI; * FINSI; * * Transport des contraintes * SI FLAGCONT; MODCOUI = TAB1 . 'MODELE' . I1; MATCOUI = TAB1 . 'MATERIAU' . I1; REPETER LAB21 NCONT; i21 = (INDEX (TAB1.'CONTRAINTES')). &LAB21; * (TAB1. 'MAILLAGE_FIBRE_MOYENNE' . I1); TAB1. 'CONTRAINTES_FIBRE_MOYENNE' . i21 . I1 = CONJM3D; SI (I1 EGA 1); TAB1. 'CONTRAINTES_FIBRE_MOYENNE' . i21 . 'TOTAL' = CONJM3D; SINON; TAB1. 'CONTRAINTES_FIBRE_MOYENNE' . i21 . 'TOTAL' = (TAB1. 'CONTRAINTES_FIBRE_MOYENNE' . i21 . 'TOTAL') ET CONJM3D; FINSI; (TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' . I1); TAB1. 'CONTRAINTES_FIBRE_SUPERIEURE' . i21 . I1 = CONJS3D; SI (I1 EGA 1); TAB1. 'CONTRAINTES_FIBRE_SUPERIEURE' . i21 . 'TOTAL' = CONJS3D; SINON; TAB1. 'CONTRAINTES_FIBRE_SUPERIEURE' . i21 . 'TOTAL' = (TAB1. 'CONTRAINTES_FIBRE_SUPERIEURE' . i21 . 'TOTAL') ET CONJS3D; FINSI; (TAB1. 'MAILLAGE_FIBRE_INFERIEURE' . I1); TAB1. 'CONTRAINTES_FIBRE_INFERIEURE' . i21 . I1 = CONJi3D; SI (I1 EGA 1); TAB1. 'CONTRAINTES_FIBRE_INFERIEURE' . i21 . 'TOTAL' = CONJi3D; SINON; TAB1. 'CONTRAINTES_FIBRE_INFERIEURE' . i21 . 'TOTAL' = (TAB1. 'CONTRAINTES_FIBRE_INFERIEURE' . i21 . 'TOTAL') ET CONJI3D; FINSI; * TAB1. 'CONTRAINTES_VOLUMIQUE' . i21 . I1 = CONJS3D ET CONJI3D; SI (I1 EGA 1); TAB1. 'CONTRAINTES_VOLUMIQUE' . i21 . 'TOTAL' = CONJS3D ET CONJI3D; SINON; TAB1. 'CONTRAINTES_VOLUMIQUE' . i21. 'TOTAL' = (TAB1. 'CONTRAINTES_VOLUMIQUE' . i21 . 'TOTAL') ET CONJS3D ET CONJI3D; FINSI; FIN LAB21; FINSI; * * * Transport des variables internes * SI FLAGVARI; MODCOUI = TAB1 . 'MODELE' . I1; MATCOUI = TAB1 . 'MATERIAU' . I1; REPETER LAB22 NVARI; i22 = (INDEX (TAB1.'VARIABLES_INTERNES')). &LAB22; (TAB1. 'MAILLAGE_FIBRE_MOYENNE' . I1); TAB1. 'VARI_FIBRE_MOYENNE' . i22 . I1 = VARJ3D; SI (I1 EGA 1); TAB1. 'VARI_FIBRE_MOYENNE' . i22 . 'TOTAL' = VARJ3D; SINON; TAB1. 'VARI_FIBRE_MOYENNE' . i22 . 'TOTAL' = (TAB1. 'VARI_FIBRE_MOYENNE' . i22 . 'TOTAL') ET VARJ3D; FINSI; FIN LAB22; FINSI; * * Calcul des deformees sur le 3D * SI FLAGDEFO; * VECOP = TAB1. 'NORMALE' . I1; MODCOUI = TAB1 . 'MODELE' . I1; MATCOUI = TAB1 . 'MATERIAU' . I1; SINON; FINSI; (TAB1. 'MAILLAGE_FIBRE_MOYENNE' . I1)); TRAN MESHORI (TAB1. 'MAILLAGE_FIBRE_INFERIEURE' . I1)); TRAN MESHORI (TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' . I1)); * REPETER LAB2 NDEFO; i2 = (INDEX (TAB1.'DEPLACEMENTS')). &LAB2; * NATURE DIFFUS; NATURE DIFFUS; * (TAB1. 'MAILLAGE_FIBRE_MOYENNE' . I1); DEPMOY = DEPTM + DEPMOY = DEPMOY + TAB1. 'DEPLACEMENTS_FIBRE_MOYENNE' . i2 . I1 = DEPMOY; SI (I1 EGA 1); TAB1. 'DEPLACEMENTS_FIBRE_MOYENNE' . i2 . 'TOTAL' = DEPMOY; SINON; TAB1. 'DEPLACEMENTS_FIBRE_MOYENNE' . i2. 'TOTAL' = (TAB1. 'DEPLACEMENTS_FIBRE_MOYENNE' . i2 . 'TOTAL') ET DEPMOY; FINSI; * * (TAB1. 'MAILLAGE_FIBRE_INFERIEURE' . I1); DEPINF = DEPTI + DEPINF = DEPINF + TAB1. 'DEPLACEMENTS_FIBRE_INFERIEURE' . i2 . I1 = DEPINF; SI (I1 EGA 1); TAB1. 'DEPLACEMENTS_FIBRE_INFERIEURE' . i2 . 'TOTAL' = DEPINF; SINON; TAB1. 'DEPLACEMENTS_FIBRE_INFERIEURE' . i2. 'TOTAL' = (TAB1. 'DEPLACEMENTS_FIBRE_INFERIEURE' . i2 . 'TOTAL') ET DEPINF; FINSI; * * (TAB1. 'MAILLAGE_FIBRE_SUPERIEURE' . I1); DEPSUP = DEPTS + DEPSUP = DEPSUP + TAB1. 'DEPLACEMENTS_FIBRE_SUPERIEURE' . i2 . I1 = DEPSUP; SI (I1 EGA 1); TAB1. 'DEPLACEMENTS_FIBRE_SUPERIEURE' . i2 . 'TOTAL' = DEPSUP; SINON; TAB1. 'DEPLACEMENTS_FIBRE_SUPERIEURE' . i2. 'TOTAL' = (TAB1. 'DEPLACEMENTS_FIBRE_SUPERIEURE' . i2 . 'TOTAL') ET DEPSUP; FINSI; * TAB1. 'DEPLACEMENTS_VOLUMIQUE' . i2 . I1 = DEPSUP ET DEPINF; SI (I1 EGA 1); TAB1. 'DEPLACEMENTS_VOLUMIQUE' . i2 . 'TOTAL' = DEPSUP ET DEPINF; SINON; TAB1. 'DEPLACEMENTS_VOLUMIQUE' . i2. 'TOTAL' = (TAB1. 'DEPLACEMENTS_VOLUMIQUE' . i2 . 'TOTAL') ET DEPSUP ET DEPINF; FINSI; * FIN LAB2; * FINSI; * * Fin de la boucle sur la sous-zone * FIN LAB1; * MESH3D = TAB1. 'MAILLAGE_VOLUMIQUE'. 'TOTAL'; * SI FLAGRELA; TAB1.'RELATION_3D' = BLCOQ3D; FINSI; * 'FINPROC' MESH3D; *
© Cast3M 2003 - Tous droits réservés.
Mentions légales