Download creer_3d.procedur

Back to the list

   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