Download trac3d_2.procedur

Back to the list

   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