$$$$ TRAC3D_2 * 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 ==================================== CHELEM = 'EGA' 'MCHAML ' ('TYPE' ZZCHPU2) ; CHPO1 = 'EGA' 'CHPOINT ' ('TYPE' ZZCHPU1) ; MMO1 = 'EGA' 'MMODEL ' ('TYPE' MODL0) ; 'SI' ((CHPO1 'ET' CHELEM) 'OU' (('NON' CHPO1) 'ET' ('NON' CHELEM))) ; 'ERREUR' 'IL FAUT FOURNIR UN CHPOINT OU UN MCHAML' ; QUITTER TRAC3D_2 ; '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' ; QUITTER TRAC3D_2 ; 'FINSI' ; ZON1 = 'EXTR' MODL0 'ZONE' ; NBZ0 = (('DIME' ZON1)/2) ; ZZMAIL = 'EXTR' MODL0 'MAIL' ; ZZCHPU0 = 'CHAN' 'NOEUD' MODL0 ZZCHPU2 ; 'REPETER' B000 NBZ0 ; EE = EE + 1 ; ELEM1 = ZON1. (2*EE) 'ELEM' 'TYPE' ; '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 ; ELEM4G. EE = 'MOT' 'QUA4' ; ELEM4F. EE = 'MOT' 'COQ4' ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ; MASSI1. EE = VRAI ; NPO. EE = 3 ; ELEM4G. EE = 'MOT' 'PRI6' ; ELEM4F. EE = 'MOT' 'PRI6' ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ; MASSI1. EE = VRAI ; NPO. EE = 4 ; ELEM4G. EE = 'MOT' 'CUB8' ; ELEM4F. EE = 'MOT' 'CUB8' ; 'FINSI' ; 'FIN' B000 ; *=== SI CHPOINT,ON REPERE LES ZONES CONSTITUEES D ELEMENTS DIFFERENTS = 'SINON' ; ZZCHPU0 = ZZCHPU1; ELEM1 = ZZMAIL 'ELEM' 'TYPE' ; '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 ; ELEM3G. EE = 'MOT' 'SEG2' ; ELEM4G. EE = 'MOT' 'QUA4' ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ; EE = EE + 1 ; NPO. EE = 3 ; MASSI1. EE = VRAI ; ELEM3G. EE = 'MOT' 'TRI3' ; ELEM4G. EE = 'MOT' 'PRI6' ; 'FINSI' ; 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ; EE = EE + 1 ; NPO. EE = 4 ; MASSI1. EE = VRAI ; ELEM3G. EE = 'MOT' 'QUA4' ; ELEM4G. EE = 'MOT' 'CUB8' ; '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 ' ; QUITTER TRAC3D_2 ; '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 ============ 'SI' (('MINI' 'ABS' ('COOR' 1 ZZMAIL)) < 1.e-5) ; 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) ; ZZCHPU = 'REDU' ZZCHPU0 MODL1 ; ELE1 = ELEM4F. MM ; 'SINON' ; ZON1. (2*MM) = ZZMAIL 'ELEM' ELEM3G. MM ; ZZCHPU = 'REDU' ZZCHPU0 ZON1. (2*MM) ; 'FINSI' ; ELE4 = ELEM4G. MM ; MASSI = MASSI1. MM ; *======== LISTE DES COMPOSANTES DE CONTRAINTE ========================= 'SI' ICONT ; 'SI' MASSI ; COMPN = 'MOTS' 'SMRR' 'SMZZ' 'SMTT' 'SMRZ' 'SMRT' 'SMZT' ; 'SINON' ; COMPN = 'MOTS' 'N11' 'N22' 'M11' 'M22' 'N12' 'M12' ; 'FINSI' ; 'FINSI' ; *======== LISTE DES COMPOSANTES DE DEFORMATION ======================== 'SI' IDEFO ; 'SI' MASSI ; COMPN = 'MOTS' 'EPRR' 'EPZZ' 'EPTT' 'GARZ' 'GART' 'GAZT' ; 'SINON' ; COMPN = 'MOTS' 'EPSS' 'EPTT' 'RTSS' 'RTTT' 'GAST' 'RTST' ; 'FINSI' ; 'FINSI' ; *========== PASSAGE EN DIMENSION 3 ==================================== 'OPTI' 'DIME' 3; *===== OPERATIONS DE TRANSLATION SUR LE MAILLAGE ET LE CHAMPS INITIAUX *===== POUR NE PAS LES AFFECTER PAR LA PROCEDURE ===================== 'SI' CHELEM ; MODL2 ZCHPU = MODL1 ZZCHPU 'PLUS' (0. 0. 0.) ; MAIL1 = 'EXTR' ZCHPU 'MAIL' ; 'SINON' ; ZCHPU = ZZCHPU 'PLUS' (0. 0. 0.) ; MAIL1 = 'EXTR' ZCHPU 'MAIL' 'NOMU' ; 'FINSI' ; ZZMAIL1 = ZON1. (2*MM) 'PLUS' (0. 0. 0.) ; 'ELIM' ZZMAIL1 MAIL1 .0001 ; ZMAIL = ZZMAIL1 'ELEM' 'APPUYE' 'STRICTEMENT' MAIL1 ; 'OPTI' 'MODE' 'FOUR' ZN ; *============== EXTRACTION DES DEPLACEMENTS =========================== 'SI' IDEPL ; CHPUR0='EXCO' 'UR' ZCHPU; CHPUZ0='EXCO' 'UZ' ZCHPU; 'SI' ('EXISTE' ZCHPU 'UT') ; CHPUT0='EXCO' 'UT' ZCHPU; 'SINON' ; CHPUT0='MANU' 'CHPO' ZMAIL 1 'UT' 0. 'NATURE' 'DIFFUS'; 'FINSI' ; 'FINSI' ; *============ EXTRACTION DES CONTRAINTES OU DEFORMATIONS ============== 'SI' (ICONT 'OU' IDEFO) ; COMP1 = 'MOTS' 'N11' 'EPSS' 'SMRR' 'EPRR' ; COMP2 = 'MOTS' 'N22' 'EPTT' 'SMZZ' 'EPZZ' ; COMP3 = 'MOTS' 'N12' 'GAST' 'SMRT' 'GART' ; COMP4 = 'MOTS' 'M11' 'RTSS' 'SMTT' 'EPTT' ; COMP5 = 'MOTS' 'M22' 'RTTT' 'SMRZ' 'GARZ' ; COMP6 = 'MOTS' 'M12' 'RTST' 'SMZT' 'GAZT' ; COMP7 = COMP3 'ET' COMP6 ; 'SI' ('EXISTE' ('EXCO' COMP7 ZCHPU 'NOID')) ; CHPN120='EXCO' COMP3 ZCHPU 'NOID' ; CHPM120='EXCO' COMP6 ZCHPU 'NOID' ; 'SINON' ; *============= SI CALCUL AXISYMETRIQUE, ON RAJOUTE UNE COMPOSANTE ===== 'SI' (('EXISTE' ZCHPU 'N11') 'ET' ( 'NON' ('EXISTE' ZCHPU 'N12'))) ; CHPN120='MANU' 'CHPO' ZMAIL 1 'N12' 0. 'NATURE' 'DIFFUS'; CHPM120='MANU' 'CHPO' ZMAIL 1 'M12' 0. 'NATURE' 'DIFFUS'; 'FINSI' ; 'SI' (('EXISTE' ZCHPU 'EPSS') 'ET' ( 'NON' ('EXISTE' ZCHPU 'GAST'))); CHPN120='MANU' 'CHPO' ZMAIL 1 'GAST' 0. 'NATURE' 'DIFFUS'; CHPM120='MANU' 'CHPO' ZMAIL 1 'RTST' 0. 'NATURE' 'DIFFUS'; 'FINSI' ; 'SI' (('EXISTE' ZCHPU 'EPRR') 'ET' ( 'NON' ('EXISTE' ZCHPU 'GART'))) ; CHPN120='MANU' 'CHPO' ZMAIL 1 'GART' 0. 'NATURE' 'DIFFUS'; CHPM120='MANU' 'CHPO' ZMAIL 1 'GAZT' 0. 'NATURE' 'DIFFUS'; 'FINSI' ; 'SI' (('EXISTE' ZCHPU 'SMRR') 'ET' ( 'NON' ('EXISTE' ZCHPU 'SMRT'))) ; CHPN120='MANU' 'CHPO' ZMAIL 1 'SMRT' 0. 'NATURE' 'DIFFUS'; CHPM120='MANU' 'CHPO' ZMAIL 1 'SMZT' 0. 'NATURE' 'DIFFUS'; 'FINSI' ; 'FINSI' ; CHPN110='EXCO' COMP1 ZCHPU 'NOID' ; CHPN220='EXCO' COMP2 ZCHPU 'NOID' ; CHPM110='EXCO' COMP4 ZCHPU 'NOID' ; CHPM220='EXCO' COMP5 ZCHPU 'NOID' ; '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 ; NN = 'NBEL' ZON1. (2*MM) ; IN = TABLE ; JJ = 0 ; *====== BOUCLE SUR LES COMPOSANTES ==================================== 'REPETER' BC1 6 ; JJ = JJ + 1 ; COMP0 = 'EXTR' COMPN JJ ; 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 ; IN. JJ . II . LL = 'EXTR' ZCHPU COMP0 1 II LL ; '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 ; CHPP0 = 'EXCO' 'P' ZCHPU 'P' ; CHPPI0 = 'EXCO' 'PI' ZCHPU 'PI' ; CHPPUZ0 = 'EXCO' 'UZ' ZCHPU 'NOID' 'UZ' ; 'FINSI' ; *=========== CHOIX DU NOUVEAU TYPE D ELEMENT ========================== *=== SEG2 ------> QUA4 ET TRI3 ----> PRI6 ET QUA4 ------> CUB8 ======== *====================================================================== 'OPTI' 'ELEM' ELE4 'MODE' 'TRID' ; ZA0=0. 0. 0.;ZAX=1. 0. 0.;ZAZ=0. 0. 1.; 'DEPLA' ZMAIL 'TOUR' 90 ZA0 ZAX; *====================================================================== *===== LES COMPOSANTES DES DEPLACEMENTS DEVIENNENT DES SCALAIRES CAR == *===== ETANT EXPRIMEES DANS LE REPERE GLOBAL, ON UTILISE 'COLINEAIRE'== *====================================================================== 'SI' IDEPL ; CHPUR0='NOMC' 'SCAL' CHPUR0 ; CHPUZ0='NOMC' 'SCAL' CHPUZ0 ; CHPUT0='NOMC' 'SCAL' CHPUT0 ; '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 ; CHPUXK = 'COLI' CHPUR0 (COSNT*COST) CHPUT0 (SINNT*SINT*-1); CHPUYK = 'COLI' CHPUR0 (COSNT*SINT) CHPUT0 (SINNT*COST); CHPUZK = CHPUZ0*COSNT; CHPUXKK= 'NOMC' UX CHPUXK; CHPUYKK= 'NOMC' UY CHPUYK; CHPUZKK= 'NOMC' UZ CHPUZK; CHPUK = CHPUXKK 'ET' CHPUYKK 'ET' CHPUZKK ; 'DETR' CHPUXKK;'DETR' CHPUYKK;'DETR' 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 ; MODL3 TDEP3D.K = MODL2 CHPUK 'PLUS' (0. 0. 0.) ; ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' ; 'SINON' ; TDEP3D.K = CHPUK 'PLUS' (0. 0. 0.) ; ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' 'NOMU'; 'FINSI' ; TMAIL3D.K= ZMAIL 'PLUS' (0. 0. 0. ) ; 'ELIM' (TMAIL3D.K) ZMAIL2 .001 ; *=== 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) ; MAIL3D1 = (TMAIL3D.(K - 1)) 'REGL' 1 (TMAIL3D. K) ; 'SINON' ; MAIL3D1 = (TMAIL3D.(K - 1)) 'VOLU' 1 (TMAIL3D. K) ; '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 ; MOD1 = 'MODE' MAIL3D1 'MECANIQUE' ELE1 ; 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' ; COMP0 = 'EXTR' COMPN JJ ; 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 )) ; CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' COMP0 II LL ((IN . JJ . II . LL)*BETA) ; 'SINON' ; 'SI' MASSI ; PP = LL - (NPO.MM) ; 'SINON' ; PP = 2*(NPO.MM) + 1 - LL ; 'FINSI' ; CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' 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) ; MAIL3D1 = ((TMAIL3D.(K)) 'REGL' 1 (TMAIL3D.1)) ; 'SINON' ; MAIL3D1 = (TMAIL3D.K ) 'VOLU' 1 (TMAIL3D.1); 'FINSI' ; MAIL3D= MAIL3D 'ET' MAIL3D1; 'SI' CHELEM ; MOD1 = 'MODE' MAIL3D1 'MECANIQUE' ELE1 ; JJ = 0 ; 'REPETER' BC5 6 ; JJ = JJ + 1 ; COMP0 = 'EXTR' COMPN JJ ; '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 )) ; CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' COMP0 II LL ((IN . JJ . II . LL)*ALPHA) ; 'SINON' ; 'SI' MASSI ; PP = LL - (NPO.MM) ; 'SINON' ; PP = 2*(NPO.MM) + 1 - LL ; 'FINSI' ; CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' 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 ; 'ELIM' MAIL3DI 1.E-4 ; MODLF = 'MODE' MAIL3D 'MECANIQUE' 'PRI6' 'CUB8' 'COQ4'; 'SINON' ; 'SI' AXE ; GEO1 = MAIL3D 'POIN' 'DROIT' ZA0 ZAZ 1.E-5 ; CH1 = 'REDU' DEP3D GEO1 ; CH2 = CH1/ZM ; DEP3D = DEP3D - CH1 + CH2 ; 'DETR' CH1 ; 'DETR' CH2 ; DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DISCRET' ; DEP3DI = 'CHANGER' 'ATTRIBUT' DEP3DI 'NATURE' 'DISCRET' ; 'ELIM' MAIL3D 1.E-4 ; DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DIFFUS' ; MAIL3D = 'REGE' MAIL3D ; '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 ;