* TRAC3D_2 PROCEDUR FANDEUR 14/10/10 21:15:27 8178 *---------------------------------------------------------------------- * * PROCEDURE TRAC3D_2 * * * CONSTRUCTION D UN MAILLAGE ET D'UN CHAMPS SOIT DE DEPLACEMENTS, SOIT * DE CONTRAINTES, SOIT DE DEFORMATIONS OU SOIT DE PRESSION 3D A PARTIR * D UN MAILLAGE 2D ET D UN CHAMPS, RESPECTIVEMENT DE DEPLACEMENTS, DE * CONTRAINTES, DE DEFORMATIONS OU DE PRESSION FOURIER * *---------------------------------------------------------------------- * * ENTREE DANS L'ORDRE * entree : * ZZMAIL OBJET MAILLAGE 2D A TRANSMETTRE SI ON TRAVAILLE AVEC * DES CHPOINTS * ZZCHPU1 CHPOINT DE DEPLACEMENTS, DE CONTRAINTES, DE * DEFORMATIONS OU DE PRESSION ISSU DU CALCUL FOURIER * ZZCHPU2 MCHAML DE CONTRAINTES OU DE DEFORMATIONS ISSU * DU CALCUL FOURIER * MODL1 MODELE A TRANSMETTRE SI ON TRAVAILLE AVEC DES MCHAML * ZANGL ANGLE DE ROTATION EN DEGREES POUR LA CONSTRUCTION * DU MAILLAGE 3D * ZM NOMBRE DE DECOUPAGES SUR L'ANGLE ZANGL * ZN NUMERO DE L HARMONIQUE (O POUR FOUR 0 OU AXIS) * on ne fait pas de distinction entre ZN positif * ou negatif * * sortie : * TAB1 : TABLE * .'MAILLAGE' : MAILLAGE * .'DEPLACEMENT': CHPOINT * .'CONTRAINTE' : CHPOINT OU MCHAML * .'DEFORMATION': CHPOINT OU MCHAML * .'FLUIDE' : CHPOINT * .'MODELE' : MODELE CORRESPONDANT AU MCHAML *---------------------------------------------------------------------- 'DEBPROC' TRAC3D_2 ZZMAIL/'MAILLAGE' ZZCHPU1/'CHPOINT' ZZCHPU2/'MCHAML' MODL0/'MMODEL' ZANGL *'FLOTTANT' ZM*'ENTIER' ZN*'ENTIER' ; *---------------------------------------------------------------------- * *==== TEST SUR LA NATURE DU CHAMPS ==================================== 'SI' ((CHPO1 'ET' CHELEM) 'OU' (('NON' CHPO1) 'ET' ('NON' CHELEM))) ; 'ERREUR' 'IL FAUT FOURNIR UN CHPOINT OU UN MCHAML' ; 'FINSI' ; *====================================================================== *===== NPO NOMBRE DE NOEUDS DANS LES ELEMENTS ========================= *===== EE : DENOMBREMENT DES TYPES D ELEMENTS DIFFERENTS ============== *===== OU DE SOUS ZONES ELEMENTAIRES ================================== *===== ZON1 : TABLE CONTENANT LES MODELES ET LES MAILLAGES DES ======== *===== SOUS ZONES ===================================================== *===== MASSI1 : TABLE BINAIRE DEFINISSANT LES ZONES MASSIVES ========== *===== ELEM3G : SUPPORT GEOMETRIQUE DES ELEMENTS EN BIDIM ============= *===== ELEM4G : SUPPORT GEOMETRIQUE DES ELEMENTS EN TRIDIM ============ *===== ELEM4F : FORMULATION CHOISIE POUR LE TRIDIMENSIONNEL =========== *==== TABLE CONTENANT LES DIFFERENTES ZONES DU MODELE ================= *====================================================================== ELEM4G = 'TABLE' ; ELEM4F = 'TABLE' ; ELEM3G = 'TABLE' ; MASSI1 = 'TABLE' ; NPO = 'TABLE' ; ZON1 = 'TABLE' ; EE = 0 ; *=== SI MCHAML, ON L APPLIQUE AUX NOEUDS ET ON REPERE LES ZONES ======= 'SI' CHELEM ; 'SI' ('NON' MMO1) ; 'ERREUR' 'IL FAUT FOURNIR UN MODELE AVEC LE MCHAML' ; 'FINSI' ; 'REPETER' B000 NBZ0 ; EE = EE + 1 ; 'SI' (( 'EXISTE' ELEM1 'TRI6') 'OU' ( 'EXISTE' ELEM1 'QUA8')) ; 'ERREUR' 'ELEMENT TRI6 OU QUA8 NON PREVU PAR LA PROCEDURE' ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'SEG2' ) ; NPO. EE = 2 ; MASSI1. EE = FAUX ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ; MASSI1. EE = VRAI ; NPO. EE = 3 ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ; MASSI1. EE = VRAI ; NPO. EE = 4 ; 'FINSI' ; 'FIN' B000 ; *=== SI CHPOINT,ON REPERE LES ZONES CONSTITUEES D ELEMENTS DIFFERENTS = 'SINON' ; ZZCHPU0 = ZZCHPU1; 'SI' (( 'EXISTE' ELEM1 'TRI6') 'OU' ( 'EXISTE' ELEM1 'QUA8')) ; 'ERREUR' 'ELEMENT TRI6 OU QUA8 NON PREVU PAR LA PROCEDURE' ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'SEG2' ) ; EE = EE + 1 ; NPO. EE = 2 ; MASSI1. EE = FAUX ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ; EE = EE + 1 ; NPO. EE = 3 ; MASSI1. EE = VRAI ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ; EE = EE + 1 ; NPO. EE = 4 ; MASSI1. EE = VRAI ; 'FINSI' ; NBZ0 = EE ; 'FINSI' ; *==== TEST SUR LE CONTENU DU CHAMPS: CONTRAINTE, DEPLACEMENT ..======= IDEPL = 'EXISTE' ZZCHPU0 'UR' ; ICONT = ('EXISTE' ZZCHPU0 'N11') 'OU' ('EXISTE' ZZCHPU0 'SMRR') ; IDEFO = ('EXISTE' ZZCHPU0 'EPSS') 'OU' ('EXISTE' ZZCHPU0 'EPRR') ; IFLUI = 'EXISTE' ZZCHPU0 'P' ; 'SI' (IFLUI 'ET' IDEPL) ; 'ERREUR' 'FORMULATION FLUIDE OU MECANIQUE ' ; 'FINSI' ; *====== SI CAS DE FIGURE NON PREVU PAR LA PROCEDURE =================== 'SI' (('NON' ICONT) 'ET' ('NON' IDEPL) 'ET' ('NON' IDEFO) 'ET' ('NON' IFLUI)) ; 'MESS' 'ON FOURNIT UN CHAMP DE DEFORMATION OU DE' 'CONTRAINTE OU DE DEPLACEMENT EN FOURIER' ; 'ERREUR' 'TRAC3D_2' ; 'FINSI' ; *======= TEST SI DES POINTS DE LA STRUCTURE SONT SUR L AXE ============ AXE = VRAI ; 'SINON' ; AXE = FAUX ; 'FINSI' ; *======= CHANGEMENT DE LA NATURE DU CHPOINT =========================== 'SI' (IDEPL 'OU' IFLUI ) ; ZZCHPU0 = 'CHANGER' 'ATTRIBUT' ZZCHPU0 'NATURE' 'DIFFUS' ; 'FINSI' ; *====================================================================== *===== BOUCLE SUR LE NOMBRE DE TYPE D ELEMENTS ======================== *===== SI PAS DE MCHAML, ON BOUCLE SUR LE NOMBRES DE TYPES ============ *===== D ELEMENTS ===================================================== *====================================================================== MM = 0 ; 'REPETER' BOUC0 NBZ0 ; MM = MM + 1 ; 'SI' CHELEM ; MODL1 = ZON1. (2*MM - 1) ; ELE1 = ELEM4F. MM ; 'SINON' ; 'FINSI' ; ELE4 = ELEM4G. MM ; MASSI = MASSI1. MM ; *======== LISTE DES COMPOSANTES DE CONTRAINTE ========================= 'SI' ICONT ; 'SI' MASSI ; 'SINON' ; 'FINSI' ; 'FINSI' ; *======== LISTE DES COMPOSANTES DE DEFORMATION ======================== 'SI' IDEFO ; 'SI' MASSI ; 'SINON' ; 'FINSI' ; 'FINSI' ; *========== PASSAGE EN DIMENSION 3 ==================================== *===== OPERATIONS DE TRANSLATION SUR LE MAILLAGE ET LE CHAMPS INITIAUX *===== POUR NE PAS LES AFFECTER PAR LA PROCEDURE ===================== 'SI' CHELEM ; 'SINON' ; 'FINSI' ; 'ELIM' ZZMAIL1 MAIL1 .0001 ; *============== EXTRACTION DES DEPLACEMENTS =========================== 'SI' IDEPL ; 'SI' ('EXISTE' ZCHPU 'UT') ; 'SINON' ; 'FINSI' ; 'FINSI' ; *============ EXTRACTION DES CONTRAINTES OU DEFORMATIONS ============== 'SI' (ICONT 'OU' IDEFO) ; COMP7 = COMP3 'ET' COMP6 ; 'SINON' ; *============= SI CALCUL AXISYMETRIQUE, ON RAJOUTE UNE COMPOSANTE ===== 'SI' (('EXISTE' ZCHPU 'N11') 'ET' ( 'NON' ('EXISTE' ZCHPU 'N12'))) ; 'FINSI' ; 'SI' (('EXISTE' ZCHPU 'EPSS') 'ET' ( 'NON' ('EXISTE' ZCHPU 'GAST'))); 'FINSI' ; 'SI' (('EXISTE' ZCHPU 'EPRR') 'ET' ( 'NON' ('EXISTE' ZCHPU 'GART'))) ; 'FINSI' ; 'SI' (('EXISTE' ZCHPU 'SMRR') 'ET' ( 'NON' ('EXISTE' ZCHPU 'SMRT'))) ; 'FINSI' ; 'FINSI' ; 'FINSI' ; *====================================================================== *====== SI ON TRAITE UN MCHAML ======================================== *=== IN : TABLE CONTENANT LES INFORMATIONS DU MCHML =================== *=== IN.II : REPERAGE DU JJ COMPOSANTE ================================ *=== IN.JJ.II: REPERAGE DU II ELEMENT ================================ *=== IN.JJ.II.LL: REPERAGE DE LA VALEUR AU LL POINT DE L ELEMENT II === *====================================================================== 'SI' CHELEM ; IN = TABLE ; JJ = 0 ; *====== BOUCLE SUR LES COMPOSANTES ==================================== 'REPETER' BC1 6 ; JJ = JJ + 1 ; IN. JJ = TABLE ; II = 0 ; *====== BOUCLE SUR LE NOMBRE D ELEMENTS =============================== 'REPETER' BC2 NN ; II = II + 1 ; IN. JJ . II = TABLE ; LL = 0 ; *====== BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ================= 'REPETER' BC22 (NPO.MM) ; LL = LL + 1 ; 'FIN' BC22 ; *====== FIN BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ============= 'FIN' BC2 ; *====== FIN BOUCLE SUR LE NOMBRE D ELEMENTS =========================== 'FIN' BC1 ; *====== FIN BOUCLE SUR LES COMPOSANTES ================================ 'FINSI' ; *============ EXTRACTION DES VARIABLES DU FLUIDE ====================== 'SI' IFLUI ; 'FINSI' ; *=========== CHOIX DU NOUVEAU TYPE D ELEMENT ========================== *=== SEG2 ------> QUA4 ET TRI3 ----> PRI6 ET QUA4 ------> CUB8 ======== *====================================================================== ZA0=0. 0. 0.;ZAX=1. 0. 0.;ZAZ=0. 0. 1.; *====================================================================== *===== LES COMPOSANTES DES DEPLACEMENTS DEVIENNENT DES SCALAIRES CAR == *===== ETANT EXPRIMEES DANS LE REPERE GLOBAL, ON UTILISE 'COLINEAIRE'== *====================================================================== 'SI' IDEPL ; 'FINSI' ; K=0; *====================================================================== *== TMAIL3D : TABLE CONTENANT LE MAILLAGE DES GENERATRICES SUCCESSIVES= *== TMAIL3D : TABLE CONTENANT LE CHPOINT APPUYE SUR LES GENERATRICES == *== OU LE MCHAML APPUYE SUR LES ELEMENTS DU MAILLAGE ================== *====================================================================== TMAIL3D='TABLE'; TDEP3D = 'TABLE' ; *====================================================================== *=== DTHETA : INCREMENT DE L ANGLE DE ROTATION DU MAILLAGE INITIAL === *====================================================================== DTHETA=ZANGL / ZM; *====================================================================== *=== DEBUT DE LA BOUCLE DE ROTATION =================================== *=== LES COMPOSANTES VARIENT EN COS(NT) OU SIN(NT) AVEC N LE NUMERO DE *=== L HARMONIQUE EN FOURIER ET T L ANGLE FORME AVEC LA CONFIGURATION *=== INITIALE ========================================================= *====================================================================== 'SI' ((1-(ZANGL/360)) '<' 0.005 ) ; ZMM = ZM ; 'SINON' ; ZMM = ZM + 1 ; 'FINSI' ; 'REPETER' BOU1 ZMM ; K= K + 1; THETA= (K - 1)* (DTHETA); COSNT= 'COS' ( ZN *THETA ); SINNT= 'SIN' ( ZN *THETA ); COST = 'COS' THETA ; SINT = 'SIN' THETA ; *====== CHAMPS DE DEPLACEMENT ========================================== 'SI' IDEPL ; CHPUZK = CHPUZ0*COSNT; CHPUK = CHPUXKK 'ET' CHPUYKK 'ET' CHPUZKK ; 'FINSI' ; *====== CHAMPS DE CONTRAINTES OU DE DEFORMATIONS ======================= 'SI' (ICONT 'OU' IDEFO) ; CHPN11K = CHPN110*COSNT ; CHPN22K = CHPN220*COSNT ; CHPN12K = CHPN120*SINNT ; CHPM11K = CHPM110*COSNT ; CHPM22K = CHPM220*COSNT ; CHPM12K = CHPM120*SINNT ; CHPUK = CHPN11K 'ET' CHPN22K 'ET' CHPN12K 'ET' CHPM11K 'ET' CHPM22K 'ET' CHPM12K; 'FINSI' ; *====== CHAMPS DE VARIABLES FLUIDES =================================== 'SI' IFLUI ; CHPPK = CHPP0*COSNT ; CHPPIK = CHPPI0*COSNT ; CHPUK = CHPPK 'ET' CHPPIK ; 'SI' ('EXISTE' ZCHPU 'UZ') ; CHPPUZK = CHPPUZ0*COSNT ; CHPUK = CHPUK 'ET' CHPPUZK; 'FINSI' ; 'FINSI' ; *====================================================================== *=== ROTATION DU MAILLAGE ET TRANSLATION FICTIVE POUR NE PAS ========== *=== L AFFECTER PAR LES OPERATIONS D ELIMINATION ====================== *====================================================================== 'DEPLA' ZMAIL 'TOUR' DTHETA ZA0 ZAZ; 'SI' CHELEM ; ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' ; 'SINON' ; ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' 'NOMU'; 'FINSI' ; *=== SI CHPOINT, ON SAUVE LE CHAMPS CORRESPONDANT A L ANGLE THETA ===== 'SI' ('NON' CHELEM) ; 'SI' (K 'EGA' 1) ; ; DEP3D = TDEP3D.K ; 'SINON' ; DEP3D = DEP3D 'ET' (TDEP3D.K) ; 'FINSI' ; 'FINSI' ; 'SI' (K '>' 1) ; *==== GENERATION DU MAILLAGE ENTRE GENERATRICES ======================= 'SI' ( 'NON' MASSI) ; 'SINON' ; 'FINSI' ; 'SI' ('EGA' K 2) ; MAIL3D = MAIL3D1 ; 'SINON' ; MAIL3D= MAIL3D 'ET' MAIL3D1; 'FINSI' ; *==== SI MCHAML,ON LE RECONSTRUIT SUR LES ELEMENTS DU NOUVEAU MAILLAGE = *==== MAILLAGE ET DEFINITION D UN MODELE ============================== 'SI' CHELEM ; JJ = 0 ; *====== BOUCLE SUR LES COMPOSANTES ==================================== 'REPETER' BC3 6 ; JJ = JJ + 1 ; 'SI' (JJ '<' 5 ) ; ALPHA = COSNT ;BETA = BETA1 ; 'SINON' ; ALPHA = SINNT ;BETA = BETA2 ; 'FINSI' ; II = 0 ; *====== BOUCLE SUR LE NOMBRE D ELEMENTS =============================== 'REPETER' BC4 NN ; II = II + 1 ; LL = 0 ; CHAM = TABLE ; *====== BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ================= 'REPETER' BC44 (2*(NPO.MM)) ; LL = LL + 1 ; 'SI' ( LL '<' ((NPO.MM) + 1 )) ; COMP0 II LL ((IN . JJ . II . LL)*BETA) ; 'SINON' ; 'SI' MASSI ; PP = LL - (NPO.MM) ; 'SINON' ; PP = 2*(NPO.MM) + 1 - LL ; 'FINSI' ; COMP0 II LL ((IN . JJ . II . PP)*ALPHA) ; 'FINSI' ; 'SI' ('EGA' LL 1) ; CHAMTOT = CHAM. LL ; 'SINON' ; CHAMTOT = CHAMTOT + CHAM. LL ; 'FINSI' ; 'FIN' BC44 ; *====== FIN BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ============= 'SI' (('EGA' II 1) 'ET' ('EGA' JJ 1) 'ET' ('EGA' K 2)) ; DEP3D = CHAMTOT ; 'SINON' ; DEP3D = DEP3D + CHAMTOT ; 'FINSI' ; 'FIN' BC4 ; *====== FIN BOUCLE SUR LE NOMBRE D ELEMENTS =========================== 'FIN' BC3 ; 'MENAGE' ; *====== FIN BOUCLE SUR LES COMPOSANTES ================================ 'FINSI' ; 'FINSI' ; BETA1 = COSNT ; BETA2 = SINNT ; 'FIN' BOU1; *====================================================================== *====== FIN BOUCLE SUR LE NOMBRE DE ROTATIONS ========================= *====== CE TEST PERMET DE COMPLETER L'OBJET =========================== *====== LORSQUE L'ANGLE EST EGAL A 360 ================================ *====================================================================== 'SI' ((1-(ZANGL/360)) '<' 0.005 ); 'SI' ( 'NON' MASSI) ; 'SINON' ; 'FINSI' ; MAIL3D= MAIL3D 'ET' MAIL3D1; 'SI' CHELEM ; JJ = 0 ; 'REPETER' BC5 6 ; JJ = JJ + 1 ; 'SI' (JJ '<' 5) ; ALPHA = BETA1 ; BETA = COS 0. ; 'SINON' ; ALPHA = BETA2 ; BETA = SIN 0. ; 'FINSI' ; II = 0 ; 'REPETER' BC6 NN ; II = II + 1 ; LL = 0 ; CHAM = TABLE ; 'REPETER' BC66 (2*(NPO.MM)) ; LL = LL + 1 ; 'SI' ( LL '<' ((NPO.MM) + 1 )) ; COMP0 II LL ((IN . JJ . II . LL)*ALPHA) ; 'SINON' ; 'SI' MASSI ; PP = LL - (NPO.MM) ; 'SINON' ; PP = 2*(NPO.MM) + 1 - LL ; 'FINSI' ; COMP0 II LL ((IN. JJ . II . PP)*BETA) ; 'FINSI' ; 'SI' ('EGA' LL 1) ; CHAMTOT = CHAM. LL ; 'SINON' ; CHAMTOT = CHAMTOT + CHAM. LL ; 'FINSI' ; 'FIN' BC66 ; DEP3D = DEP3D + CHAMTOT ; 'FIN' BC6 ; 'FIN' BC5 ; 'FINSI' ; 'FINSI'; 'SI' ( 'EGA' MM 1) ; DEP3DI = DEP3D ; MAIL3DI = MAIL3D ; 'SINON'; DEP3DI = DEP3DI + DEP3D ;MAIL3DI = MAIL3DI 'ET' MAIL3D ; 'FINSI' ; DEP3D = DEP3DI ;MAIL3D = MAIL3DI ; *====== FIN BOUCLE SUR LE NOMBRE DE ZONES DU MODELE =================== 'FIN' BOUC0 ; *====================================================================== *=============== FIN DU TEST COMPLETANT LA STRUCTURE ================== *===== NETTOYAGE DU MAILLAGE SI IL EXISTE DES POINTS ================== *===== APPARTENANTS A L AXE DE ROTATION =============================== *====================================================================== 'SI' CHELEM ; 'SINON' ; 'SI' AXE ; DEP3D = DEP3D - CH1 + CH2 ; DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DISCRET' ; DEP3DI = 'CHANGER' 'ATTRIBUT' DEP3DI 'NATURE' 'DISCRET' ; DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DIFFUS' ; 'FINSI' ; 'FINSI' ; *====================================================================== *======= SAUVEGARDE DES RESULTATS DANS UNE TABLE COMPRENANT =========== *======= LE MAILLAGE TRIDIMENSIONNEL ET UN CHAMPS ASSOCIE ============= *====================================================================== TAB1 = 'TABLE' ; TAB1. 'MAILLAGE' = MAIL3D ; 'SI' IDEPL ; TAB1. 'DEPLACEMENT' = DEP3D ; 'FINSI' ; 'SI' ICONT ; TAB1. 'CONTRAINTE' = DEP3D ; 'FINSI' ; 'SI' IDEFO ; TAB1. 'DEFORMATION' = DEP3D ; 'FINSI' ; 'SI' IFLUI ; TAB1. 'FLUIDE' = DEP3D ; 'FINSI' ; 'SI' CHELEM ; TAB1. 'MODELE' = MODLF ; 'FINSI' ; *============== FIN DE LA PROCEDURE =================================== 'FINPROC' TAB1 ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales