1 : * TRAC3D_2 PROCEDUR ANIS 94/08/25 21:15:07 1255 2 : *---------------------------------------------------------------------- 3 : * 4 : * PROCEDURE TRAC3D_2 5 : * 6 : * 7 : * CONSTRUCTION D UN MAILLAGE ET D'UN CHAMPS SOIT DE DEPLACEMENTS, SOIT 8 : * DE CONTRAINTES, SOIT DE DEFORMATIONS OU SOIT DE PRESSION 3D A PARTIR 9 : * D UN MAILLAGE 2D ET D UN CHAMPS, RESPECTIVEMENT DE DEPLACEMENTS, DE 10 : * CONTRAINTES, DE DEFORMATIONS OU DE PRESSION FOURIER 11 : * 12 : *---------------------------------------------------------------------- 13 : * 14 : * ENTREE DANS L'ORDRE 15 : * entree : 16 : * ZZMAIL OBJET MAILLAGE 2D A TRANSMETTRE SI ON TRAVAILLE AVEC 17 : * DES CHPOINTS 18 : * ZZCHPU1 CHPOINT DE DEPLACEMENTS, DE CONTRAINTES, DE 19 : * DEFORMATIONS OU DE PRESSION ISSU DU CALCUL FOURIER 20 : * ZZCHPU2 MCHAML DE CONTRAINTES OU DE DEFORMATIONS ISSU 21 : * DU CALCUL FOURIER 22 : * MODL1 MODELE A TRANSMETTRE SI ON TRAVAILLE AVEC DES MCHAML 23 : * ZANGL ANGLE DE ROTATION EN DEGREES POUR LA CONSTRUCTION 24 : * DU MAILLAGE 3D 25 : * ZM NOMBRE DE DECOUPAGES SUR L'ANGLE ZANGL 26 : * ZN NUMERO DE L HARMONIQUE (O POUR FOUR 0 OU AXIS) 27 : * on ne fait pas de distinction entre ZN positif 28 : * ou negatif 29 : * 30 : * sortie : 31 : * TAB1 : TABLE 32 : * .'MAILLAGE' : MAILLAGE 33 : * .'DEPLACEMENT': CHPOINT 34 : * .'CONTRAINTE' : CHPOINT OU MCHAML 35 : * .'DEFORMATION': CHPOINT OU MCHAML 36 : * .'FLUIDE' : CHPOINT 37 : * .'MODELE' : MODELE CORRESPONDANT AU MCHAML 38 : *---------------------------------------------------------------------- 39 : 'DEBPROC' TRAC3D_2 40 : ZZMAIL/'MAILLAGE' ZZCHPU1/'CHPOINT' ZZCHPU2/'MCHAML' 41 : MODL0/'MMODEL' ZANGL *'FLOTTANT' ZM*'ENTIER' ZN*'ENTIER' ; 42 : *---------------------------------------------------------------------- 43 : * 44 : *==== TEST SUR LA NATURE DU CHAMPS ==================================== 45 : CHELEM = 'EGA' 'MCHAML ' ('TYPE' ZZCHPU2) ; 46 : CHPO1 = 'EGA' 'CHPOINT ' ('TYPE' ZZCHPU1) ; 47 : MMO1 = 'EGA' 'MMODEL ' ('TYPE' MODL0) ; 48 : 'SI' ((CHPO1 'ET' CHELEM) 'OU' (('NON' CHPO1) 'ET' ('NON' CHELEM))) ; 49 : 'ERREUR' 50 : 'IL FAUT FOURNIR UN CHPOINT OU UN MCHAML' ; 51 : QUITTER TRAC3D_2 ; 52 : 'FINSI' ; 53 : *====================================================================== 54 : *===== NPO NOMBRE DE NOEUDS DANS LES ELEMENTS ========================= 55 : *===== EE : DENOMBREMENT DES TYPES D ELEMENTS DIFFERENTS ============== 56 : *===== OU DE SOUS ZONES ELEMENTAIRES ================================== 57 : *===== ZON1 : TABLE CONTENANT LES MODELES ET LES MAILLAGES DES ======== 58 : *===== SOUS ZONES ===================================================== 59 : *===== MASSI1 : TABLE BINAIRE DEFINISSANT LES ZONES MASSIVES ========== 60 : *===== ELEM3G : SUPPORT GEOMETRIQUE DES ELEMENTS EN BIDIM ============= 61 : *===== ELEM4G : SUPPORT GEOMETRIQUE DES ELEMENTS EN TRIDIM ============ 62 : *===== ELEM4F : FORMULATION CHOISIE POUR LE TRIDIMENSIONNEL =========== 63 : *==== TABLE CONTENANT LES DIFFERENTES ZONES DU MODELE ================= 64 : *====================================================================== 65 : ELEM4G = 'TABLE' ; ELEM4F = 'TABLE' ; 66 : ELEM3G = 'TABLE' ; MASSI1 = 'TABLE' ; 67 : NPO = 'TABLE' ; ZON1 = 'TABLE' ; 68 : EE = 0 ; 69 : *=== SI MCHAML, ON L APPLIQUE AUX NOEUDS ET ON REPERE LES ZONES ======= 70 : 'SI' CHELEM ; 71 : 'SI' ('NON' MMO1) ; 72 : 'ERREUR' 73 : 'IL FAUT FOURNIR UN MODELE AVEC LE MCHAML' ; 74 : QUITTER TRAC3D_2 ; 75 : 'FINSI' ; 76 : ZON1 = 'EXTR' MODL0 'ZONE' ; 77 : NBZ0 = (('DIME' ZON1)/2) ; 78 : ZZMAIL = 'EXTR' MODL0 'MAIL' ; 79 : ZZCHPU0 = 'CHAN' 'NOEUD' MODL0 ZZCHPU2 ; 80 : 'REPETER' B000 NBZ0 ; 81 : EE = EE + 1 ; 82 : ELEM1 = ZON1. (2*EE) 'ELEM' 'TYPE' ; 83 : 'SI' (( 'EXISTE' ELEM1 'TRI6') 'OU' ( 'EXISTE' ELEM1 'QUA8')) ; 84 : 'ERREUR' 85 : 'ELEMENT TRI6 OU QUA8 NON PREVU PAR LA PROCEDURE' ; 86 : 'FINSI' ; 87 : 'SI' ( 'EXISTE' ELEM1 'SEG2' ) ; 88 : NPO. EE = 2 ; 89 : MASSI1. EE = FAUX ; 90 : ELEM4G. EE = 'MOT' 'QUA4' ; 91 : ELEM4F. EE = 'MOT' 'COQ4' ; 92 : 'FINSI' ; 93 : 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ; 94 : MASSI1. EE = VRAI ; 95 : NPO. EE = 3 ; 96 : ELEM4G. EE = 'MOT' 'PRI6' ; 97 : ELEM4F. EE = 'MOT' 'PRI6' ; 98 : 'FINSI' ; 99 : 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ; 100 : MASSI1. EE = VRAI ; 101 : NPO. EE = 4 ; 102 : ELEM4G. EE = 'MOT' 'CUB8' ; 103 : ELEM4F. EE = 'MOT' 'CUB8' ; 104 : 'FINSI' ; 105 : 'FIN' B000 ; 106 : *=== SI CHPOINT,ON REPERE LES ZONES CONSTITUEES D ELEMENTS DIFFERENTS = 107 : 'SINON' ; 108 : ZZCHPU0 = ZZCHPU1; 109 : ELEM1 = ZZMAIL 'ELEM' 'TYPE' ; 110 : 'SI' (( 'EXISTE' ELEM1 'TRI6') 'OU' ( 'EXISTE' ELEM1 'QUA8')) ; 111 : 'ERREUR' 112 : 'ELEMENT TRI6 OU QUA8 NON PREVU PAR LA PROCEDURE' ; 113 : 'FINSI' ; 114 : 'SI' ( 'EXISTE' ELEM1 'SEG2' ) ; 115 : EE = EE + 1 ; 116 : NPO. EE = 2 ; 117 : MASSI1. EE = FAUX ; 118 : ELEM3G. EE = 'MOT' 'SEG2' ; 119 : ELEM4G. EE = 'MOT' 'QUA4' ; 120 : 'FINSI' ; 121 : 'SI' ( 'EXISTE' ELEM1 'TRI3' ) ; 122 : EE = EE + 1 ; 123 : NPO. EE = 3 ; 124 : MASSI1. EE = VRAI ; 125 : ELEM3G. EE = 'MOT' 'TRI3' ; 126 : ELEM4G. EE = 'MOT' 'PRI6' ; 127 : 'FINSI' ; 128 : 'SI' ( 'EXISTE' ELEM1 'QUA4' ) ; 129 : EE = EE + 1 ; 130 : NPO. EE = 4 ; 131 : MASSI1. EE = VRAI ; 132 : ELEM3G. EE = 'MOT' 'QUA4' ; 133 : ELEM4G. EE = 'MOT' 'CUB8' ; 134 : 'FINSI' ; 135 : NBZ0 = EE ; 136 : 'FINSI' ; 137 : *==== TEST SUR LE CONTENU DU CHAMPS: CONTRAINTE, DEPLACEMENT ..======= 138 : IDEPL = 'EXISTE' ZZCHPU0 'UR' ; 139 : ICONT = ('EXISTE' ZZCHPU0 'N11') 'OU' ('EXISTE' ZZCHPU0 'SMRR') ; 140 : IDEFO = ('EXISTE' ZZCHPU0 'EPSS') 'OU' ('EXISTE' ZZCHPU0 'EPRR') ; 141 : IFLUI = 'EXISTE' ZZCHPU0 'P' ; 142 : 'SI' (IFLUI 'ET' IDEPL) ; 143 : 'ERREUR' 144 : 'FORMULATION FLUIDE OU MECANIQUE ' ; 145 : QUITTER TRAC3D_2 ; 146 : 'FINSI' ; 147 : *====== SI CAS DE FIGURE NON PREVU PAR LA PROCEDURE =================== 148 : 'SI' (('NON' ICONT) 'ET' ('NON' IDEPL) 'ET' 149 : ('NON' IDEFO) 'ET' ('NON' IFLUI)) ; 150 : 'ERREUR' 151 : 'ON FOURNIT UN CHAMPS DE DEFORMATION OU 152 : DE CONTRAINTE OU DE DEPLACEMENT EN FOURIER' ; 153 : QUITTER TRAC3D_2 ; 154 : 'FINSI' ; 155 : *======= TEST SI DES POINTS DE LA STRUCTURE SONT SUR L AXE ============ 156 : 'SI' (('MINI' 'ABS' ('COOR' 1 ZZMAIL)) < 1.e-5) ; 157 : AXE = VRAI ; 158 : 'SINON' ; 159 : AXE = FAUX ; 160 : 'FINSI' ; 161 : *======= CHANGEMENT DE LA NATURE DU CHPOINT =========================== 162 : 'SI' (IDEPL 'OU' IFLUI ) ; 163 : ZZCHPU0 = 'CHANGER' 'ATTRIBUT' ZZCHPU0 'NATURE' 'DIFFUS' ; 164 : 'FINSI' ; 165 : *====================================================================== 166 : *===== BOUCLE SUR LE NOMBRE DE TYPE D ELEMENTS ======================== 167 : *===== SI PAS DE MCHAML, ON BOUCLE SUR LE NOMBRES DE TYPES ============ 168 : *===== D ELEMENTS ===================================================== 169 : *====================================================================== 170 : MM = 0 ; 171 : 'REPETER' BOUC0 NBZ0 ; 172 : MM = MM + 1 ; 173 : 'SI' CHELEM ; 174 : MODL1 = ZON1. (2*MM - 1) ; 175 : ZZCHPU = 'REDU' ZZCHPU0 MODL1 ; 176 : ELE1 = ELEM4F. MM ; 177 : 'SINON' ; 178 : ZON1. (2*MM) = ZZMAIL 'ELEM' ELEM3G. MM ; 179 : ZZCHPU = 'REDU' ZZCHPU0 ZON1. (2*MM) ; 180 : 'FINSI' ; 181 : ELE4 = ELEM4G. MM ; 182 : MASSI = MASSI1. MM ; 183 : *======== LISTE DES COMPOSANTES DE CONTRAINTE ========================= 184 : 'SI' ICONT ; 185 : 'SI' MASSI ; 186 : COMPN = 'MOTS' 'SMRR' 'SMZZ' 'SMTT' 'SMRZ' 'SMRT' 'SMZT' ; 187 : 'SINON' ; 188 : COMPN = 'MOTS' 'N11' 'N22' 'M11' 'M22' 'N12' 'M12' ; 189 : 'FINSI' ; 190 : 'FINSI' ; 191 : *======== LISTE DES COMPOSANTES DE DEFORMATION ======================== 192 : 'SI' IDEFO ; 193 : 'SI' MASSI ; 194 : COMPN = 'MOTS' 'EPRR' 'EPZZ' 'EPTT' 'GARZ' 'GART' 'GAZT' ; 195 : 'SINON' ; 196 : COMPN = 'MOTS' 'EPSS' 'EPTT' 'RTSS' 'RTTT' 'GAST' 'RTST' ; 197 : 'FINSI' ; 198 : 'FINSI' ; 199 : *========== PASSAGE EN DIMENSION 3 ==================================== 200 : 'OPTI' 'DIME' 3; 201 : *===== OPERATIONS DE TRANSLATION SUR LE MAILLAGE ET LE CHAMPS INITIAUX 202 : *===== POUR NE PAS LES AFFECTER PAR LA PROCEDURE ===================== 203 : 'SI' CHELEM ; 204 : MODL2 ZCHPU = MODL1 ZZCHPU 'PLUS' (0. 0. 0.) ; 205 : MAIL1 = 'EXTR' ZCHPU 'MAIL' ; 206 : 'SINON' ; 207 : ZCHPU = ZZCHPU 'PLUS' (0. 0. 0.) ; 208 : MAIL1 = 'EXTR' ZCHPU 'MAIL' 'NOMU' ; 209 : 'FINSI' ; 210 : ZZMAIL1 = ZON1. (2*MM) 'PLUS' (0. 0. 0.) ; 211 : 'ELIM' ZZMAIL1 MAIL1 .0001 ; 212 : ZMAIL = ZZMAIL1 'ELEM' 'APPUYE' 'STRICTEMENT' MAIL1 ; 213 : 'OPTI' 'MODE' 'FOUR' ZN ; 214 : *============== EXTRACTION DES DEPLACEMENTS =========================== 215 : 'SI' IDEPL ; 216 : CHPUR0='EXCO' 'UR' ZCHPU; 217 : CHPUZ0='EXCO' 'UZ' ZCHPU; 218 : 'SI' ('EXISTE' ZCHPU 'UT') ; 219 : CHPUT0='EXCO' 'UT' ZCHPU; 220 : 'SINON' ; 221 : CHPUT0='MANU' 'CHPO' ZMAIL 1 'UT' 0. 'NATURE' 'DIFFUS'; 222 : 'FINSI' ; 223 : 'FINSI' ; 224 : *============ EXTRACTION DES CONTRAINTES OU DEFORMATIONS ============== 225 : 'SI' (ICONT 'OU' IDEFO) ; 226 : COMP1 = 'MOTS' 'N11' 'EPSS' 'SMRR' 'EPRR' ; 227 : COMP2 = 'MOTS' 'N22' 'EPTT' 'SMZZ' 'EPZZ' ; 228 : COMP3 = 'MOTS' 'N12' 'GAST' 'SMRT' 'GART' ; 229 : COMP4 = 'MOTS' 'M11' 'RTSS' 'SMTT' 'EPTT' ; 230 : COMP5 = 'MOTS' 'M22' 'RTTT' 'SMRZ' 'GARZ' ; 231 : COMP6 = 'MOTS' 'M12' 'RTST' 'SMZT' 'GAZT' ; 232 : COMP7 = COMP3 'ET' COMP6 ; 233 : 'SI' ('EXISTE' ('EXCO' COMP7 ZCHPU 'NOID')) ; 234 : CHPN120='EXCO' COMP3 ZCHPU 'NOID' ; 235 : CHPM120='EXCO' COMP6 ZCHPU 'NOID' ; 236 : 'SINON' ; 237 : *============= SI CALCUL AXISYMETRIQUE, ON RAJOUTE UNE COMPOSANTE ===== 238 : 'SI' (('EXISTE' ZCHPU 'N11') 'ET' 239 : ( 'NON' ('EXISTE' ZCHPU 'N12'))) ; 240 : CHPN120='MANU' 'CHPO' ZMAIL 1 'N12' 0. 'NATURE' 'DIFFUS'; 241 : CHPM120='MANU' 'CHPO' ZMAIL 1 'M12' 0. 'NATURE' 'DIFFUS'; 242 : 'FINSI' ; 243 : 'SI' (('EXISTE' ZCHPU 'EPSS') 'ET' 244 : ( 'NON' ('EXISTE' ZCHPU 'GAST'))); 245 : CHPN120='MANU' 'CHPO' ZMAIL 1 'GAST' 0. 'NATURE' 'DIFFUS'; 246 : CHPM120='MANU' 'CHPO' ZMAIL 1 'RTST' 0. 'NATURE' 'DIFFUS'; 247 : 'FINSI' ; 248 : 'SI' (('EXISTE' ZCHPU 'EPRR') 'ET' 249 : ( 'NON' ('EXISTE' ZCHPU 'GART'))) ; 250 : CHPN120='MANU' 'CHPO' ZMAIL 1 'GART' 0. 'NATURE' 'DIFFUS'; 251 : CHPM120='MANU' 'CHPO' ZMAIL 1 'GAZT' 0. 'NATURE' 'DIFFUS'; 252 : 'FINSI' ; 253 : 'SI' (('EXISTE' ZCHPU 'SMRR') 'ET' 254 : ( 'NON' ('EXISTE' ZCHPU 'SMRT'))) ; 255 : CHPN120='MANU' 'CHPO' ZMAIL 1 'SMRT' 0. 'NATURE' 'DIFFUS'; 256 : CHPM120='MANU' 'CHPO' ZMAIL 1 'SMZT' 0. 'NATURE' 'DIFFUS'; 257 : 'FINSI' ; 258 : 'FINSI' ; 259 : CHPN110='EXCO' COMP1 ZCHPU 'NOID' ; 260 : CHPN220='EXCO' COMP2 ZCHPU 'NOID' ; 261 : CHPM110='EXCO' COMP4 ZCHPU 'NOID' ; 262 : CHPM220='EXCO' COMP5 ZCHPU 'NOID' ; 263 : 'FINSI' ; 264 : *====================================================================== 265 : *====== SI ON TRAITE UN MCHAML ======================================== 266 : *=== IN : TABLE CONTENANT LES INFORMATIONS DU MCHML =================== 267 : *=== IN.II : REPERAGE DU JJ COMPOSANTE ================================ 268 : *=== IN.JJ.II: REPERAGE DU II ELEMENT ================================ 269 : *=== IN.JJ.II.LL: REPERAGE DE LA VALEUR AU LL POINT DE L ELEMENT II === 270 : *====================================================================== 271 : 'SI' CHELEM ; 272 : NN = 'NBEL' ZON1. (2*MM) ; 273 : IN = TABLE ; 274 : JJ = 0 ; 275 : *====== BOUCLE SUR LES COMPOSANTES ==================================== 276 : 'REPETER' BC1 6 ; 277 : JJ = JJ + 1 ; 278 : COMP0 = 'EXTR' COMPN JJ ; 279 : IN. JJ = TABLE ; 280 : II = 0 ; 281 : *====== BOUCLE SUR LE NOMBRE D ELEMENTS =============================== 282 : 'REPETER' BC2 NN ; 283 : II = II + 1 ; 284 : IN. JJ . II = TABLE ; 285 : LL = 0 ; 286 : *====== BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ================= 287 : 'REPETER' BC22 (NPO.MM) ; 288 : LL = LL + 1 ; 289 : IN. JJ . II . LL = 'EXTR' ZCHPU COMP0 1 II LL ; 290 : 'FIN' BC22 ; 291 : *====== FIN BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ============= 292 : 'FIN' BC2 ; 293 : *====== FIN BOUCLE SUR LE NOMBRE D ELEMENTS =========================== 294 : 'FIN' BC1 ; 295 : *====== FIN BOUCLE SUR LES COMPOSANTES ================================ 296 : 'FINSI' ; 297 : *============ EXTRACTION DES VARIABLES DU FLUIDE ====================== 298 : 'SI' IFLUI ; 299 : CHPP0 = 'EXCO' 'P' ZCHPU 'P' ; 300 : CHPPI0 = 'EXCO' 'PI' ZCHPU 'PI' ; 301 : CHPPUZ0 = 'EXCO' 'UZ' ZCHPU 'NOID' 'UZ' ; 302 : 'FINSI' ; 303 : *=========== CHOIX DU NOUVEAU TYPE D ELEMENT ========================== 304 : *=== SEG2 ------> QUA4 ET TRI3 ----> PRI6 ET QUA4 ------> CUB8 ======== 305 : *====================================================================== 306 : 'OPTI' 'ELEM' ELE4 'MODE' 'TRID' ; 307 : ZA0=0. 0. 0.;ZAX=1. 0. 0.;ZAZ=0. 0. 1.; 308 : 'DEPLA' ZMAIL 'TOUR' 90 ZA0 ZAX; 309 : *====================================================================== 310 : *===== LES COMPOSANTES DES DEPLACEMENTS DEVIENNENT DES SCALAIRES CAR == 311 : *===== ETANT EXPRIMEES DANS LE REPERE GLOBAL, ON UTILISE 'COLINEAIRE'== 312 : *====================================================================== 313 : 'SI' IDEPL ; 314 : CHPUR0='NOMC' 'SCAL' CHPUR0 ; 315 : CHPUZ0='NOMC' 'SCAL' CHPUZ0 ; 316 : CHPUT0='NOMC' 'SCAL' CHPUT0 ; 317 : 'FINSI' ; 318 : K=0; 319 : *====================================================================== 320 : *== TMAIL3D : TABLE CONTENANT LE MAILLAGE DES GENERATRICES SUCCESSIVES= 321 : *== TMAIL3D : TABLE CONTENANT LE CHPOINT APPUYE SUR LES GENERATRICES == 322 : *== OU LE MCHAML APPUYE SUR LES ELEMENTS DU MAILLAGE ================== 323 : *====================================================================== 324 : TMAIL3D='TABLE'; TDEP3D = 'TABLE' ; 325 : *====================================================================== 326 : *=== DTHETA : INCREMENT DE L ANGLE DE ROTATION DU MAILLAGE INITIAL === 327 : *====================================================================== 328 : DTHETA=ZANGL / ZM; 329 : *====================================================================== 330 : *=== DEBUT DE LA BOUCLE DE ROTATION =================================== 331 : *=== LES COMPOSANTES VARIENT EN COS(NT) OU SIN(NT) AVEC N LE NUMERO DE 332 : *=== L HARMONIQUE EN FOURIER ET T L ANGLE FORME AVEC LA CONFIGURATION 333 : *=== INITIALE ========================================================= 334 : *====================================================================== 335 : 'SI' ((1-(ZANGL/360)) '<' 0.005 ) ; 336 : ZMM = ZM ; 337 : 'SINON' ; 338 : ZMM = ZM + 1 ; 339 : 'FINSI' ; 340 : 'REPETER' BOU1 ZMM ; 341 : K= K + 1; 342 : THETA= (K - 1)* (DTHETA); 343 : COSNT= 'COS' ( ZN *THETA ); 344 : SINNT= 'SIN' ( ZN *THETA ); 345 : COST = 'COS' THETA ; 346 : SINT = 'SIN' THETA ; 347 : *====== CHAMPS DE DEPLACEMENT ========================================== 348 : 'SI' IDEPL ; 349 : CHPUXK = 'COLI' CHPUR0 (COSNT*COST) CHPUT0 (SINNT*SINT*-1); 350 : CHPUYK = 'COLI' CHPUR0 (COSNT*SINT) CHPUT0 (SINNT*COST); 351 : CHPUZK = CHPUZ0*COSNT; 352 : CHPUXKK= 'NOMC' UX CHPUXK; 353 : CHPUYKK= 'NOMC' UY CHPUYK; 354 : CHPUZKK= 'NOMC' UZ CHPUZK; 355 : CHPUK = CHPUXKK 'ET' CHPUYKK 'ET' CHPUZKK ; 356 : 'DETR' CHPUXKK;'DETR' CHPUYKK;'DETR' CHPUZKK; 357 : 'FINSI' ; 358 : *====== CHAMPS DE CONTRAINTES OU DE DEFORMATIONS ======================= 359 : 'SI' (ICONT 'OU' IDEFO) ; 360 : CHPN11K = CHPN110*COSNT ; 361 : CHPN22K = CHPN220*COSNT ; 362 : CHPN12K = CHPN120*SINNT ; 363 : CHPM11K = CHPM110*COSNT ; 364 : CHPM22K = CHPM220*COSNT ; 365 : CHPM12K = CHPM120*SINNT ; 366 : CHPUK = CHPN11K 'ET' CHPN22K 'ET' CHPN12K 'ET' CHPM11K 367 : 'ET' CHPM22K 'ET' CHPM12K; 368 : 'FINSI' ; 369 : *====== CHAMPS DE VARIABLES FLUIDES =================================== 370 : 'SI' IFLUI ; 371 : CHPPK = CHPP0*COSNT ; 372 : CHPPIK = CHPPI0*COSNT ; 373 : CHPUK = CHPPK 'ET' CHPPIK ; 374 : 'SI' ('EXISTE' ZCHPU 'UZ') ; 375 : CHPPUZK = CHPPUZ0*COSNT ; 376 : CHPUK = CHPUK 'ET' CHPPUZK; 377 : 'FINSI' ; 378 : 'FINSI' ; 379 : *====================================================================== 380 : *=== ROTATION DU MAILLAGE ET TRANSLATION FICTIVE POUR NE PAS ========== 381 : *=== L AFFECTER PAR LES OPERATIONS D ELIMINATION ====================== 382 : *====================================================================== 383 : 'DEPLA' ZMAIL 'TOUR' DTHETA ZA0 ZAZ; 384 : 'SI' CHELEM ; 385 : MODL3 TDEP3D.K = MODL2 CHPUK 'PLUS' (0. 0. 0.) ; 386 : ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' ; 387 : 'SINON' ; 388 : TDEP3D.K = CHPUK 'PLUS' (0. 0. 0.) ; 389 : ZMAIL2 = 'EXTRAIRE' (TDEP3D.K) 'MAIL' 'NOMU'; 390 : 'FINSI' ; 391 : TMAIL3D.K= ZMAIL 'PLUS' (0. 0. 0. ) ; 392 : 'ELIM' (TMAIL3D.K) ZMAIL2 .001 ; 393 : *=== SI CHPOINT, ON SAUVE LE CHAMPS CORRESPONDANT A L ANGLE THETA ===== 394 : 'SI' ('NON' CHELEM) ; 395 : 'SI' (K 'EGA' 1) ; ; 396 : DEP3D = TDEP3D.K ; 397 : 'SINON' ; 398 : DEP3D = DEP3D 'ET' (TDEP3D.K) ; 399 : 'FINSI' ; 400 : 'FINSI' ; 401 : 'SI' (K '>' 1) ; 402 : *==== GENERATION DU MAILLAGE ENTRE GENERATRICES ======================= 403 : 'SI' ( 'NON' MASSI) ; 404 : MAIL3D1 = (TMAIL3D.(K - 1)) 'REGL' 1 (TMAIL3D. K) ; 405 : 'SINON' ; 406 : MAIL3D1 = (TMAIL3D.(K - 1)) 'VOLU' 1 (TMAIL3D. K) ; 407 : 'FINSI' ; 408 : 'SI' ('EGA' K 2) ; 409 : MAIL3D = MAIL3D1 ; 410 : 'SINON' ; 411 : MAIL3D= MAIL3D 'ET' MAIL3D1; 412 : 'FINSI' ; 413 : *==== SI MCHAML,ON LE RECONSTRUIT SUR LES ELEMENTS DU NOUVEAU MAILLAGE = 414 : *==== MAILLAGE ET DEFINITION D UN MODELE ============================== 415 : 'SI' CHELEM ; 416 : MOD1 = 'MODL' MAIL3D1 'MECANIQUE' ELE1 ; 417 : JJ = 0 ; 418 : *====== BOUCLE SUR LES COMPOSANTES ==================================== 419 : 'REPETER' BC3 6 ; 420 : JJ = JJ + 1 ; 421 : 'SI' (JJ '<' 5 ) ; 422 : ALPHA = COSNT ;BETA = BETA1 ; 423 : 'SINON' ; 424 : ALPHA = SINNT ;BETA = BETA2 ; 425 : 'FINSI' ; 426 : COMP0 = 'EXTR' COMPN JJ ; 427 : II = 0 ; 428 : *====== BOUCLE SUR LE NOMBRE D ELEMENTS =============================== 429 : 'REPETER' BC4 NN ; 430 : II = II + 1 ; 431 : LL = 0 ; 432 : CHAM = TABLE ; 433 : *====== BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ================= 434 : 'REPETER' BC44 (2*(NPO.MM)) ; 435 : LL = LL + 1 ; 436 : 'SI' ( LL '<' ((NPO.MM) + 1 )) ; 437 : CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' 438 : COMP0 II LL ((IN . JJ . II . LL)*BETA) ; 439 : 'SINON' ; 440 : 'SI' MASSI ; 441 : PP = LL - (NPO.MM) ; 442 : 'SINON' ; 443 : PP = 2*(NPO.MM) + 1 - LL ; 444 : 'FINSI' ; 445 : CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' 446 : COMP0 II LL ((IN . JJ . II . PP)*ALPHA) ; 447 : 'FINSI' ; 448 : 'SI' ('EGA' LL 1) ; 449 : CHAMTOT = CHAM. LL ; 450 : 'SINON' ; 451 : CHAMTOT = CHAMTOT + CHAM. LL ; 452 : 'FINSI' ; 453 : 'FIN' BC44 ; 454 : *====== FIN BOUCLE SUR LE NOMBRE DE POINTS DANS L ELEMENT ============= 455 : 'SI' (('EGA' II 1) 'ET' ('EGA' JJ 1) 456 : 'ET' ('EGA' K 2)) ; 457 : DEP3D = CHAMTOT ; 458 : 'SINON' ; 459 : DEP3D = DEP3D + CHAMTOT ; 460 : 'FINSI' ; 461 : 'FIN' BC4 ; 462 : *====== FIN BOUCLE SUR LE NOMBRE D ELEMENTS =========================== 463 : 'FIN' BC3 ; 464 : 'MENAGE' ; 465 : *====== FIN BOUCLE SUR LES COMPOSANTES ================================ 466 : 'FINSI' ; 467 : 'FINSI' ; 468 : BETA1 = COSNT ; BETA2 = SINNT ; 469 : 'FIN' BOU1; 470 : *====================================================================== 471 : *====== FIN BOUCLE SUR LE NOMBRE DE ROTATIONS ========================= 472 : *====== CE TEST PERMET DE COMPLETER L'OBJET =========================== 473 : *====== LORSQUE L'ANGLE EST EGAL A 360 ================================ 474 : *====================================================================== 475 : 'SI' ((1-(ZANGL/360)) '<' 0.005 ); 476 : 'SI' ( 'NON' MASSI) ; 477 : MAIL3D1 = ((TMAIL3D.(K)) 'REGL' 1 (TMAIL3D.1)) ; 478 : 'SINON' ; 479 : MAIL3D1 = (TMAIL3D.K ) 'VOLU' 1 (TMAIL3D.1); 480 : 'FINSI' ; 481 : MAIL3D= MAIL3D 'ET' MAIL3D1; 482 : 'SI' CHELEM ; 483 : MOD1 = 'MODL' MAIL3D1 'MECANIQUE' ELE1 ; 484 : JJ = 0 ; 485 : 'REPETER' BC5 6 ; 486 : JJ = JJ + 1 ; 487 : COMP0 = 'EXTR' COMPN JJ ; 488 : 'SI' (JJ '<' 5) ; 489 : ALPHA = BETA1 ; BETA = COS 0. ; 490 : 'SINON' ; 491 : ALPHA = BETA2 ; BETA = SIN 0. ; 492 : 'FINSI' ; 493 : II = 0 ; 494 : 'REPETER' BC6 NN ; 495 : II = II + 1 ; 496 : LL = 0 ; 497 : CHAM = TABLE ; 498 : 'REPETER' BC66 (2*(NPO.MM)) ; 499 : LL = LL + 1 ; 500 : 'SI' ( LL '<' ((NPO.MM) + 1 )) ; 501 : CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' 502 : COMP0 II LL ((IN . JJ . II . LL)*ALPHA) ; 503 : 'SINON' ; 504 : 'SI' MASSI ; 505 : PP = LL - (NPO.MM) ; 506 : 'SINON' ; 507 : PP = 2*(NPO.MM) + 1 - LL ; 508 : 'FINSI' ; 509 : CHAM. LL = 'MANU' 'CHAM' MOD1 'POSI' 'NOEUD' 510 : COMP0 II LL ((IN. JJ . II . PP)*BETA) ; 511 : 'FINSI' ; 512 : 'SI' ('EGA' LL 1) ; 513 : CHAMTOT = CHAM. LL ; 514 : 'SINON' ; 515 : CHAMTOT = CHAMTOT + CHAM. LL ; 516 : 'FINSI' ; 517 : 'FIN' BC66 ; 518 : DEP3D = DEP3D + CHAMTOT ; 519 : 'FIN' BC6 ; 520 : 'FIN' BC5 ; 521 : 'FINSI' ; 522 : 'FINSI'; 523 : 'SI' ( 'EGA' MM 1) ; DEP3DI = DEP3D ; MAIL3DI = MAIL3D ; 524 : 'SINON'; DEP3DI = DEP3DI + DEP3D ;MAIL3DI = MAIL3DI 'ET' MAIL3D ; 525 : 'FINSI' ; 526 : DEP3D = DEP3DI ;MAIL3D = MAIL3DI ; 527 : *====== FIN BOUCLE SUR LE NOMBRE DE ZONES DU MODELE =================== 528 : 'FIN' BOUC0 ; 529 : *====================================================================== 530 : *=============== FIN DU TEST COMPLETANT LA STRUCTURE ================== 531 : *===== NETTOYAGE DU MAILLAGE SI IL EXISTE DES POINTS ================== 532 : *===== APPARTENANTS A L AXE DE ROTATION =============================== 533 : *====================================================================== 534 : 'SI' CHELEM ; 535 : 'ELIM' MAIL3DI 1.E-4 ; 536 : MODLF = 'MODL' MAIL3D 'MECANIQUE' 'PRI6' 'CUB8' 'COQ4'; 537 : 'SINON' ; 538 : 'SI' AXE ; 539 : GEO1 = MAIL3D 'POIN' 'DROIT' ZA0 ZAZ 1.E-5 ; 540 : CH1 = 'REDU' DEP3D GEO1 ; CH2 = CH1/ZM ; 541 : DEP3D = DEP3D - CH1 + CH2 ; 542 : 'DETR' CH1 ; 'DETR' CH2 ; 543 : DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DISCRET' ; 544 : DEP3DI = 'CHANGER' 'ATTRIBUT' DEP3DI 'NATURE' 'DISCRET' ; 545 : 'ELIM' MAIL3D 1.E-4 ; 546 : DEP3D = 'CHANGER' 'ATTRIBUT' DEP3D 'NATURE' 'DIFFUS' ; 547 : MAIL3D = 'REGE' MAIL3D ; 548 : 'FINSI' ; 549 : 'FINSI' ; 550 : *====================================================================== 551 : *======= SAUVEGARDE DES RESULTATS DANS UNE TABLE COMPRENANT =========== 552 : *======= LE MAILLAGE TRIDIMENSIONNEL ET UN CHAMPS ASSOCIE ============= 553 : *====================================================================== 554 : TAB1 = 'TABLE' ; 555 : TAB1. 'MAILLAGE' = MAIL3D ; 556 : 'SI' IDEPL ; 557 : TAB1. 'DEPLACEMENT' = DEP3D ; 558 : 'FINSI' ; 559 : 'SI' ICONT ; 560 : TAB1. 'CONTRAINTE' = DEP3D ; 561 : 'FINSI' ; 562 : 'SI' IDEFO ; 563 : TAB1. 'DEFORMATION' = DEP3D ; 564 : 'FINSI' ; 565 : 'SI' IFLUI ; 566 : TAB1. 'FLUIDE' = DEP3D ; 567 : 'FINSI' ; 568 : 'SI' CHELEM ; 569 : TAB1. 'MODELE' = MODLF ; 570 : 'FINSI' ; 571 : *============== FIN DE LA PROCEDURE =================================== 572 : 'FINPROC' TAB1 ; 573 :
© Cast3M 2003 - All rights reserved.
Disclaimer