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