Download @inclusi.procedur

Back to the list

   1 : * @INCLUSI  PROCEDUR  PASCAL    12/11/14    21:15:01     7568           
   2 : 'DEBP' @INCLUSI THO7U*'TABLE' DPAR1*'FLOTTANT' DREP1*'FLOTTANT' ;
   3 : *                                                                      *
   4 : *----------------------------------------------------------------------*
   5 : *                                                                      *
   6 : *              Pre-traitement Maillage Particules-Matrice              *
   7 : *                                                                      *
   8 : *----------------------------------------------------------------------*
   9 : *                                                                      *
  10 : *------------------------ Lecture des entrees -------------------------*
  11 : *                                                                      *
  12 : * Entrees :                                                            *
  13 : * ---------                                                            *
  14 : * THO7U  : Table maillage cube Voronoi ;                               *
  15 : * DPAR1  : Diametre des particules ;                                   *
  16 : * DREP1  : Distance de repulsion ;                                     *
  17 : * DENS1  : Densite de reference ;                                      *
  18 : * ITRA1  : Indicateur traces ;                                         *
  19 : 'ARGU' DENS1/'FLOTTANT' ;
  20 : 'SI' ('NON' ('EXIS' DENS1)) ;
  21 :   DENS1    = 0.25 * (('FLOT' ('NBNO' THO7U . 'MPT')) ** (-1. / 3.)) ;
  22 : 'FINS' ;
  23 : 'ARGU' ITRA1/'LOGIQUE' ;
  24 : 'SI' ('NON' ('EXIS' ITRA1)) ;
  25 :   ITRA1    = FAUX ;
  26 : 'FINS' ;
  27 : *                                                                      *
  28 : * Variables locales :                                                  *
  29 : * -------------------                                                  *
  30 : * VOR1  : Maillage aretes cellules de Voronoi ;                        *
  31 : * MPOI1  : Points centre des cellules ;                                *
  32 : * RPAR1  : Rayon des particules ;                                      *
  33 : * ELIGM1 : Epaisseur Minimale des ligaments de matrice ;               *
  34 : * FTET1  : Facteur de forme des tetraedres (rapport Cote/Hauteur       *
  35 : *          tetraedre regulier) ;                                       *
  36 : * DENSM1 : Densite minimale du maillage ~ demi-distance entre + petit  *
  37 : *          ligament de matrice possible (au facteur de forme Pres) ;   *
  38 : * XELIM1 : Facteur d'elimination noeuds des polyedres ;                *
  39 : * RELIM1 : Rayon d'elimination des noeuds sommets des cellules de      *
  40 : *          Voronoi ;                                                   *
  41 : * TOL1   : Tolerance ~ precision de la geometrie ;                     *
  42 : * 
  43 : * 
  44 : MVOR1    = THO7U . 'MAV' ;
  45 : MPOI1    = THO7U . 'MPT' ;
  46 : RPAR1    = 0.5 * DPAR1 ;
  47 : ELIGM1   = (0.5 * DREP1) - RPAR1 ;
  48 : FTET1    = 1.5 ** 0.5 ;
  49 : DENSM1   = FTET1 * ELIGM1 ;
  50 : XELIM1   = 0.2 ;
  51 : RELIM1   = XELIM1 * DENS1 ;
  52 : TOL1     = 1.E-3 * ELIGM1 ;
  53 : *                                                                      *
  54 : *------ Elimination Sommets "Tres Proches" Cellules de Voronoi --------*
  55 : *                                                                      *
  56 : * Elimination des petites aretes de la partition de Voronoi :          *
  57 : 'ELIM' MVOR1 RELIM1 ;
  58 : *                                                                      *
  59 : * Recollement des faces de la partition sur celle du cube unite :      *
  60 : PM1      = 0. 0. 0. ;
  61 : PM2      = 1. 0. 0. ;
  62 : PM3      = 1. 1. 0. ;
  63 : PM4      = 0. 1. 0. ;
  64 : PM5      = 0. 0. 1. ;
  65 : PM6      = 1. 0. 1. ;
  66 : PM7      = 1. 1. 1. ;
  67 : PM8      = 0. 1. 1. ;
  68 : 'DEPL' (THO7U . 'FACE1') 'PROJ' 'CYLI' (-1. * PM5) 'PLAN' PM1 PM2 PM3 ;
  69 : 'DEPL' (THO7U . 'FACE2') 'PROJ' 'CYLI' (-1. * PM4) 'PLAN' PM1 PM2 PM5 ;
  70 : 'DEPL' (THO7U . 'FACE3') 'PROJ' 'CYLI' (-1. * PM2) 'PLAN' PM1 PM4 PM5 ;
  71 : 'DEPL' (THO7U . 'FACE4') 'PROJ' 'CYLI' PM2 'PLAN' PM2 PM3 PM6 ;
  72 : 'DEPL' (THO7U . 'FACE5') 'PROJ' 'CYLI' PM4 'PLAN' PM3 PM4 PM7 ;
  73 : 'DEPL' (THO7U . 'FACE6') 'PROJ' 'CYLI' PM5 'PLAN' PM5 PM6 PM7 ;
  74 : *                                                                      *
  75 : VELE1    = 'VALE' 'ELEM' ;
  76 : 'OPTI' 'ELEM' 'CUB8' ;
  77 : MVCB1    = ((PM1 'DROI' 1 PM2) 'TRAN' 1 PM4) 'VOLU' 'TRAN' 1 PM5 ;
  78 : 'OPTI' 'ELEM' VELE1 ;
  79 : MSCB1    = 'ENVE' MVCB1 ;
  80 : MACB1    = 'ARET' MVCB1 ;
  81 : MPCB1    = 'CHAN' 'POI1' MVCB1 ;
  82 : *                                                                      *
  83 : *----------------------- Travail Preparatoire -------------------------*
  84 : *                                                                      *
  85 : *   1. "Nettoyer" les contours des faces + Reperage Faces Bord Cube ;  *
  86 : *   2. Reperer les aretes ;                                            *
  87 : *                                                                      *
  88 : * 1. Nettoyages des Faces + Reperage Faces Bord Cube :                 *
  89 : NBI1     = 'NBEL' MPOI1 ;
  90 : TIP8V    = 'TABL' ;
  91 : IPREMI1  = VRAI ;
  92 : 'REPE' BI1 NBI1 ;
  93 :   PCI1     = MPOI1 'POIN' &BI1 ;
  94 :   TIP8V . PCI1 = 'TABL' ;
  95 :   MPTI1    = THO7U . PCI1 . 'MPT' ;
  96 :   NBJ1     = NBNO MPTI1 ;
  97 :   IPREMJ1  = VRAI ;
  98 : *                                                                      *
  99 : * Boucle sur les faces des polyedres :                                 *
 100 :   'REPE' BJ1 NBJ1 ;
 101 :     PCJ1     = MPTI1 'POIN' &BJ1 ;
 102 :     CNTIJ1   = THO7U . PCI1 . PCJ1 . 'MAV' ;
 103 :     NBPCIJ1  = NBNO CNTIJ1 ;
 104 :     'SI' (NBPCIJ1 '<' 3) ;
 105 :       'ITER' BJ1 ;
 106 :     'FINS' ;
 107 : *                                                                      *
 108 : *   Si cette Face a deja ete traitee, on recopie puis on itere :       *
 109 :     'SI' ('EXIS' TIP8V PCJ1) ;
 110 :       TIP8V . PCI1 . PCJ1 = 'TABL' ;
 111 :       TIP8V . PCI1 . PCJ1 . 'MAV' = TIP8V . PCJ1 . PCI1 . 'MAV' ;
 112 :       TIP8V . PCI1 . PCJ1 . 'EXT' = TIP8V . PCJ1 . PCI1 . 'EXT' ;
 113 :       'SI' IPREMJ1 ;
 114 :         IPREMJ1  = FAUX ;
 115 :         TIP8V . PCI1 . 'MPT' = PCJ1 ;
 116 :         TIP8V . PCI1 . 'MAV' = TIP8V . PCJ1 . PCI1 . 'MAV' ;
 117 :       'SINO' ;
 118 :         TIP8V . PCI1 . 'MPT' = TIP8V . PCI1 . 'MPT' 'ET' PCJ1 ;
 119 :         TIP8V . PCI1 . 'MAV' = TIP8V . PCI1 . 'MAV'
 120 :           'ET' TIP8V . PCJ1 . PCI1 . 'MAV' ;
 121 :       'FINS' ;
 122 :       'ITER' BJ1 ;
 123 :     'FINS' ;
 124 : *                                                                      *
 125 : *   Sinon, on teste NBNO-NBEL pour det. presence aretes degenerees :   *
 126 : *   CNTIJ2 sera le contour valide de la Face.                          *
 127 :     'SI' (NBPCIJ1 'EGA' ('NBEL' CNTIJ1)) ;
 128 :       CNTIJ2   = CNTIJ1 ;
 129 :     'SINO' ;
 130 : *     Si aretes degenerees => reconstruction du contour :              *
 131 :       NBK1     = 'NBEL' CNTIJ1 ;
 132 :       IPREMK1  = VRAI ;
 133 :       'REPE' BK1 NBK1 ;
 134 :         ELK1     = CNTIJ1 'ELEM' &BK1 ;
 135 :         PSK1     = ELK1 'POIN' 1 ;
 136 :         PSK2     = ELK1 'POIN' 2 ;
 137 :         'SI' (PSK1 'NEG' PSK2) ;
 138 :           'SI' IPREMK1 ;
 139 :             IPREMK1  = FAUX ;
 140 :             CNTIJ2   = ELK1 ;
 141 :           'SINO' ;
 142 :             CNTIJ2   = CNTIJ2 'ET' ELK1 ;
 143 :           'FINS' ;
 144 :         'FINS' ;
 145 :       'FIN' BK1 ;
 146 :     'FINS' ;
 147 : *   On ordonne CNTIJ2 ;                                                *
 148 :     CNTIJ2   = CNTIJ2 'ELEM' 'COMP' (CNTIJ2 'POIN' 1)
 149 :                                     (CNTIJ2 'POIN' 1) ;
 150 : *                                                                      *
 151 : *   Construction d'un point ref. pour la Face Si Face situee sur les   *
 152 : *   Bords du Cube (PCJ2) :                                             *
 153 :     IEXT1    = 'NON' ('EXIS' THO7U PCJ1) ;
 154 :     'SI' IEXT1 ;
 155 :       NX0      = 0 ; NY0      = 0 ; NZ0      = 0 ;
 156 :       NX1      = 0 ; NY1      = 0 ; NZ1      = 0 ;
 157 :       NBK1     = NBNO CNTIJ2 ;
 158 :       'REPE' BK1 NBK1 ;
 159 :         PSK1     = CNTIJ2 'POIN' &BK1 ;
 160 :         XK1 YK1 ZK1 = PSK1 'COOR' ;
 161 :         'SI' (XK1 'EGA' 0.) ; NX0 = NX0 + 1 ; 'FINS' ;
 162 :         'SI' (YK1 'EGA' 0.) ; NY0 = NY0 + 1 ; 'FINS' ;
 163 :         'SI' (ZK1 'EGA' 0.) ; NZ0 = NZ0 + 1 ; 'FINS' ;
 164 :         'SI' (XK1 'EGA' 1.) ; NX1 = NX1 + 1 ; 'FINS' ;
 165 :         'SI' (YK1 'EGA' 1.) ; NY1 = NY1 + 1 ; 'FINS' ;
 166 :         'SI' (ZK1 'EGA' 1.) ; NZ1 = NZ1 + 1 ; 'FINS' ;
 167 :       'FIN' BK1 ;
 168 :       NMAX1    = 'MAXI' ('LECT' NX0 NY0 NZ0 NX1 NY1 NZ1) ;
 169 :       'SI' (NMAX1 'EGA' NX0) ;
 170 :         PRCIJ1   = PM1 ;
 171 :         PNCIJ1   = -1. 0. 0. ;
 172 :       'FINS' ;
 173 :       'SI' (NMAX1 'EGA' NX1) ;
 174 :         PRCIJ1   = PM2 ;
 175 :         PNCIJ1   =  1. 0. 0. ;
 176 :       'FINS' ;
 177 :       'SI' (NMAX1 'EGA' NY0) ;
 178 :         PRCIJ1   = PM1 ;
 179 :         PNCIJ1   = 0. -1. 0. ;
 180 :       'FINS' ;
 181 :       'SI' (NMAX1 'EGA' NY1) ;
 182 :         PRCIJ1   = PM4 ;
 183 :         PNCIJ1   =  0. 1. 0. ;
 184 :       'FINS' ;
 185 :       'SI' (NMAX1 'EGA' NZ0) ;
 186 :         PRCIJ1   = PM1 ;
 187 :         PNCIJ1   = 0. 0. -1. ;
 188 :       'FINS' ;
 189 :       'SI' (NMAX1 'EGA' NZ1) ;
 190 :         PRCIJ1   = PM5 ;
 191 :         PNCIJ1   =  0. 0. 1. ;
 192 :       'FINS' ;
 193 : *List NMAX1 ; List PRCIJ1 ; List PNCIJ1 ;
 194 : *Trac ((CNTIJ2 Coul Roug) Et A1) ;
 195 :       XR1 YR1 ZR1 = PNCIJ1 'COOR' ;
 196 :       PTCIJ1   = ZR1 XR1 YR1 ;
 197 :       PTCIJ2   = YR1 ZR1 XR1 ;
 198 :       PPCIJ1   = PRCIJ1 'PLUS' PTCIJ1 ;
 199 :       PPCIJ2   = PRCIJ1 'PLUS' PTCIJ2 ;
 200 :       PCJ2     = PCI1 'SYME' 'PLAN' PRCIJ1 PPCIJ1 PPCIJ2 ;
 201 : *Trac Qual ((CNTIJ2 Coul Rose) Et THO7U . PCI1 . Mav Et PCI1 Et PCJ2) ;
 202 :     'SINO' ;
 203 :       PCJ2     = PCJ1 ;
 204 :     'FINS' ;
 205 :     TIP8V . PCI1 . PCJ2 = 'TABL' ;
 206 :     TIP8V . PCI1 . PCJ2 . 'MAV' = CNTIJ2 ;
 207 :     TIP8V . PCI1 . PCJ2 . 'EXT' = IEXT1 ;
 208 :     'SI' IPREMJ1 ;
 209 :       IPREMJ1  = FAUX ;
 210 :       TIP8V . PCI1 . 'MPT' = 'MANU' 'POI1' PCJ2 ;
 211 :       TIP8V . PCI1 . 'MAV' = CNTIJ2 ;
 212 :     'SINO' ;
 213 :       TIP8V . PCI1 . 'MPT' = TIP8V . PCI1 . 'MPT' 'ET' PCJ2 ;
 214 :       TIP8V . PCI1 . 'MAV' = TIP8V . PCI1 . 'MAV' 'ET' CNTIJ2 ;
 215 :     'FINS' ;
 216 :   'FIN' BJ1 ;
 217 :   'SI' (('DIME' TIP8V . PCI1) '>' 0) ;
 218 :     'SI' IPREMI1 ;
 219 :       IPREMI1  = FAUX ;
 220 :       TIP8V . 'MPT' = 'MANU' 'POI1' PCI1 ;
 221 :       TIP8V . 'MAV' = TIP8V . PCI1 . 'MAV' ;
 222 :     'SINO' ;
 223 :       TIP8V . 'MPT' = TIP8V . 'MPT' 'ET' PCI1 ;
 224 :       TIP8V . 'MAV' = TIP8V . 'MAV' 'ET' TIP8V . PCI1 . 'MAV' ;
 225 :     'FINS' ;
 226 :   'FINS' ;
 227 : 'FIN' BI1 ;
 228 : MPOI1    = TIP8V . 'MPT' ;
 229 : *                                                                      *
 230 : * 2. Reperer les aretes par les 3 polyedres qui les definissent :      *
 231 : *                                                                      *
 232 : NBI1     = NBNO MPOI1 ;
 233 : THO7U    = 'TABL' ;
 234 : IPREMI1  = VRAI ;
 235 : 'REPE' BI1 NBI1 ;
 236 :   PCI1     = MPOI1 'POIN' &BI1 ;
 237 :   THO7U . PCI1 = 'TABL' ;
 238 :   MPTI1    = TIP8V . PCI1 . 'MPT' ;
 239 :   NBJ1     = NBNO MPTI1 ;
 240 :   IPREMJ1  = VRAI ;
 241 :   'REPE' BJ1 NBJ1 ;
 242 :     PCJ1     = MPTI1 'POIN' &BJ1 ;
 243 :     THO7U . PCI1 . PCJ1 = 'TABL' ;
 244 :     CNTIJ1   = TIP8V . PCI1 . PCJ1 . 'MAV' ;
 245 :     'SI' ('EXIS' THO7U PCJ1) ;
 246 :       MPTIJ2   = THO7U . PCJ1 . PCI1 . 'MPT' ;
 247 :       CNTIJ2   = THO7U . PCJ1 . PCI1 . 'MAV' ;
 248 :       THO7U . PCI1 . PCJ1 = THO7U . PCJ1 . PCI1 ;
 249 :     'SINO' ;
 250 :       MPTIJ1   = MPTI1 'DIFF' ('MANU' 'POI1' PCJ1) ;
 251 :       NBK1     = 'NBEL' CNTIJ1 ;
 252 :       IPREMK1  = VRAI ;
 253 :       'REPE' BK1 NBK1 ;
 254 :         ELK1     = CNTIJ1 'ELEM' &BK1 ;
 255 :         NBL1     = NBNO MPTIJ1 ;
 256 :         'REPE' BL1 NBL1 ;
 257 :           PCL1     = MPTIJ1 'POIN' &BL1 ;
 258 :           CNTIL1   = TIP8V . PCI1 . PCL1 . 'MAV' ;
 259 :           ELL1     = CNTIJ1 'INTE' CNTIL1 'NOVE' ;
 260 :           NBM1     = 'NBEL' ELL1 ;
 261 :           'SI' (NBM1 'NEG' 0) ;
 262 :             'REPE' BM1 NBM1 ;
 263 :               ELM1     = ELL1 'ELEM' &BM1 ;
 264 :               'SI' ((NBNO (ELK1 'DIFF' ELM1)) 'EGA' 0) ;
 265 :                 'SI' ('EXIS' THO7U . PCI1 . PCJ1 PCL1) ;
 266 :                   THO7U . PCI1 . PCJ1 . PCL1 . 'MAV' =
 267 :                     THO7U . PCI1 . PCJ1 . PCL1 . 'MAV' 'ET' ELK1 ;
 268 :                 'SINO' ;
 269 :                   THO7U . PCI1 . PCJ1 . PCL1 = 'TABL' ;
 270 :                   THO7U . PCI1 . PCJ1 . PCL1 . 'MAV' = ELK1 ;
 271 :                 'FINS' ;
 272 :                 'SI' IPREMK1 ;
 273 :                   IPREMK1  = FAUX ;
 274 :                   MPTIJ2   = 'MANU' 'POI1' PCL1 ;
 275 :                   CNTIJ2   = ELM1 ;
 276 :                 'SINO' ;
 277 :                   'SI' ('NON' ('DANS' PCL1 MPTIJ2)) ;
 278 :                     MPTIJ2   = MPTIJ2 'ET' PCL1 ;
 279 :                   'FINS' ;
 280 :                   CNTIJ2   = CNTIJ2 'ET' ELM1 ;
 281 :                 'FINS' ;
 282 :                 'ITER' BK1 ;
 283 :               'FINS' ;
 284 :             'FIN' BM1 ;
 285 :           'FINS' ;
 286 :         'FIN' BL1 ;
 287 :       'FIN' BK1 ;
 288 :       THO7U . PCI1 . PCJ1 . 'MPT' = MPTIJ2 ;
 289 :       THO7U . PCI1 . PCJ1 . 'MAV' = CNTIJ2 ;
 290 :     'FINS' ;
 291 :     'SI' IPREMJ1 ;
 292 :       IPREMJ1  = FAUX ;
 293 :       MPTI2    = 'MANU' 'POI1' PCJ1 ;
 294 :       MAVI2    = CNTIJ2 ;
 295 :     'SINO' ;
 296 :       MPTI2    = MPTI2 'ET' PCJ1 ;
 297 :       MAVI2    = MAVI2 'ET' CNTIJ2 ;
 298 :     'FINS' ;
 299 : *   Petit Test :                                                       *
 300 :     MTEST1   = CNTIJ2 'DIFF' CNTIJ1 ;
 301 :     'SI' (((NBNO MTEST1) + ('NBEL' MTEST1)) 'NEG' 0) ;
 302 :       'SAUT' 1 'LIGN' ;
 303 :       'TITR' ' ***** Probleme Reperage Aretes ' ;
 304 :       'TRAC' (CNTIJ1 'ET' (CNTIJ2 'COUL' 'ORAN')) ;
 305 :       'QUIT' BI1 ;
 306 :     'FINS' ;
 307 : *   Re-petit test : on verifie qu'en parcourant les points de MPTIJ2,  *
 308 : *                   on parcourt de facon ordonnee le contour :         *
 309 : *    'REPE' BX1 (NBNO MPTIJ2) ;
 310 : *      PX1      = MPTIJ2 'POIN' &BX1 ;
 311 : *    Trac Elem (CNTIJ1 Et (THO7U . PCI1 . PCJ1 . PX1 . Mav Coul Vert)) ;
 312 : *    'FIN' BX1 ;
 313 :   'FIN' BJ1 ;
 314 : * Stockage resultats boucle BI1 :                                      *
 315 :   THO7U . PCI1 . 'MPT' = MPTI2 ;
 316 :   THO7U . PCI1 . 'MAV' = MAVI2 ;
 317 :   'SI' IPREMI1 ;
 318 :     IPREMI1  = FAUX ;
 319 :     MPT2     = 'MANU' 'POI1' PCI1 ;
 320 :     MAV2     = MAVI2 ;
 321 :   'SINO' ;
 322 :     MPT2     = MPT2 'ET' PCI1 ;
 323 :     MAV2     = MAV2 'ET' MAVI2 ;
 324 :   'FINS' ;
 325 : 'FIN' BI1 ;
 326 : THO7U . 'MPT' = MPT2 ;
 327 : THO7U . 'MAV' = MAV2 ;
 328 : *                                                                      *
 329 : *----------------------------------------------------------------------*
 330 : *                                                                      *
 331 : *                      Maillage Particules-Matrice                     *
 332 : *                                                                      *
 333 : *----------------------------------------------------------------------*
 334 : *                                                                      *
 335 : * NBI1   : Nombre de particules du tirage :                            *
 336 : NBI1     = NBNO MPOI1 ;
 337 : *                                                                      *
 338 : * FDENS1 : Facteur densite locale d'elements = Nbr. moyen d'elements   *
 339 : *          Dans un ligament de matrice (1 Si Echec maillage, on recommence en pertubant position PCI1 :     *
 368 :   NBPOSI1  = 11 ;
 369 :   'REPE' BPOSI1 NBPOSI1 ;
 370 :     PPARI1   = PCI1 'PLUS' (RPAR1 * PM2) ;
 371 : *                                                                      *
 372 : * Boucle interne sur densite :                                         *
 373 : * => Si Echec maillage, on recommence en pertubant densite :           *
 374 :   NBDENS1  = 15 ;
 375 :   FDENSI1  = FDENS1 ;
 376 :   FPLUSI1  = 1.1 ;
 377 :   FMOINI1  = 0.9 ;
 378 :   'REPE' BDENS1 NBDENS1 ;
 379 : *   Parametres Maillage :                                              *
 380 :     'SI' (&BDENS1 'MULT' 2) ;
 381 :       FDENSI1  = (FPLUSI1 ** (&BDENS1 / 2)) * FDENSI1 ;
 382 :     'SINO' ;
 383 :       FDENSI1  = (FMOINI1 ** ((&BDENS1 - 1) / 2)) * FDENSI1 ;
 384 :     'FINS' ;
 385 :     DENSI1   = DENS1 / FDENSI1 ;
 386 :     DENSMI1  = 0.5 * DENSM1 * (1. / FDENSI1 + 1.) ;
 387 :     ELIGMI1  = DENSMI1 / FTET1 ;
 388 :     DPROXI1  = RPAR1 + (0.9 * ELIGMI1) ;
 389 :     DPROXI1  = 'MINI' ('PROG' DPROXI1 (0.5 * DREP1)) ;
 390 :     RPARJMI1 = 18. * ('MAXI' ('PROG' DENSM1 DENSMI1)) / PI ;
 391 :     DFHORI1  = ((RPAR1 ** 2) - (RPARJMI1 ** 2)) ** 0.5 ;
 392 :     RPARJMI1 = 18. * ('MAXI' ('PROG' DENSM1 DENSMI1)) / PI ;
 393 :     DAHORI1  = ((RPAR1 ** 2) - (RPARJMI1 ** 2)) ** 0.5 ;
 394 :     RPARJMI1 = 18. * ('MAXI' ('PROG' DENSM1 DENSMI1)) / PI ;
 395 :     DSHORI1  = ((RPAR1 ** 2) - (RPARJMI1 ** 2)) ** 0.5 ;
 396 : *                                                                      *
 397 : * On indente plus -/- BDENS1...                                        *
 398 : *                                                                      *
 399 : * Indice Stockage maillage :                                           *
 400 :   TMPARMAT . PCI1 = 'TABL' ;
 401 : * Indicateurs Cas Intersection :                                       *
 402 : * IFACI1  : Partciule PCI1 intersecte une Face ;                       *
 403 : * IAREI1  : Partciule PCI1 intersecte une Arete ;                      *
 404 : * ISOMI1  : Partciule PCI1 intersecte un Sommet ;                      *
 405 :   IFACI1   = FAUX ;
 406 :   IAREI1   = FAUX ;
 407 :   ISOMI1   = FAUX ;
 408 : * Indicateur Position Centre Particule :                               *
 409 : * IDANI1  : PCI1 est Dans le Cube Unite ;                              *
 410 : * IHORI1  : Particule Hors du Cube Unite Et n'intersecte pas Cube ;    *
 411 : *   Attention, un critere d'intersection permet de ne considerer que   *
 412 : *   les intersections "franches" du Cube ;                             *
 413 :   XCI1 YCI1 ZCI1 = PCI1 'COOR' ;
 414 :   LCI1     = 'PROG' XCI1 YCI1 ZCI1 ;
 415 :   IDANI1   = (('MINI' LCI1) '>EG' 0.) 'ET' (('MAXI' LCI1) '<EG' 1.) ;
 416 :   IHORI1   = 'NON' IDANI1 ;
 417 :   'SI' IHORI1 ;
 418 :     NBHORI1  = (NBNO MPCB1) + ('NBEL' MACB1) + ('NBEL' MSCB1) ;
 419 :     'REPE' BHORI1 NBHORI1 ;
 420 :       I1       = &BHORI1 ;
 421 :       'SI' (I1 '<' 9) ;
 422 :         PSCBI1   = MPCB1 'POIN' I1 ;
 423 :         DSCBPCI1 = 'NORM' (PCI1 'MOIN' PSCBI1) ;
 424 :         'SI' (DSCBPCI1 '<' DSHORI1) ;
 425 :           IHORI1   = FAUX ;
 426 :           'QUIT' BHORI1 ;
 427 :         'FINS' ;
 428 :       'SINO' ;
 429 :         I2       = &BHORI1 - 8 ;
 430 :         'SI' (I2 '<' 13) ;
 431 :           ACBI1    = MACB1 'ELEM' I2 ;
 432 :           PACBI1   = ACBI1 'POIN' 1 ;
 433 :           PACBI2   = ACBI1 'POIN' 2 ;
 434 :           PNACBI1  = PACBI2 'MOIN' PACBI1 ;
 435 :           PAPCI1   = PCI1 'MOIN' PACBI1 ;
 436 :           PPCACBI1 = PAPCI1 'MOIN' (('PSCA' PAPCI1 PNACBI1) * PNACBI1) ;
 437 :           DACBPCI1 = 'NORM' PPCACBI1 ;
 438 :           PPCACBI1 = PCI1 'MOIN' PPCACBI1 ;
 439 :           PSCAI1   = 'PSCA' PAPCI1 PNACBI1 ;
 440 :           'SI' ((DACBPCI1 '<' DAHORI1) 'ET' (PSCAI1 '>EG' 0.)
 441 :             'ET' (PSCAI1 '<EG' 1.));
 442 :             IHORI1   = FAUX ;
 443 :             'QUIT' BHORI1 ;
 444 :           'FINS' ;
 445 :         'SINO' ;
 446 :           I3       = &BHORI1 - 20 ;
 447 :           SCBI1    = MSCB1 'ELEM' I3 ;
 448 :           MPSCBI1  = 'CHAN' 'POI1' SCBI1 ;
 449 :           PSCBI1   = MPSCBI1 'POIN' 1 ;
 450 :           PSCBI2   = MPSCBI1 'POIN' 2 ;
 451 :           PSCBI3   = MPSCBI1 'POIN' 3 ;
 452 :           PTSCBI1  = PSCBI2 'MOIN' PSCBI1 ;
 453 :           PTSCBI2  = PSCBI3 'MOIN' PSCBI1 ;
 454 :           PNSCBI1  = 'PVEC' PTSCBI1 PTSCBI2 ;
 455 :           PNSCBI1  = PNSCBI1 / ('NORM' PNSCBI1) ;
 456 :           PSPCI1   = PCI1 'MOIN' PSCBI1 ;
 457 :           DSPCI1   = 'PSCA' PNSCBI1 PSPCI1 ;
 458 :           PPCSCBI1 = PCI1 'MOIN' (DSPCI1 * PNSCBI1) ;
 459 :           DSPCI1   = 'ABS' DSPCI1 ;
 460 :           MTDI1    = ('MANU' 'POI1' PPCSCBI1) 'INCL' SCBI1 'LARG'
 461 :             'NOID' ;
 462 :           ITDI1    = (NBNO MTDI1) 'EGA' 1 ;
 463 :           'SI' ((DSPCI1 '<' DFHORI1) 'ET' ITDI1) ;
 464 :             IHORI1   = FAUX ;
 465 :             'QUIT' BHORI1 ;
 466 :           'FINS' ;
 467 :         'FINS' ;
 468 :       'FINS' ;
 469 :     'FIN' BHORI1 ;
 470 :   'FINS' ;
 471 : * IPROXI1 : Particule a proximite d'une interface Sans la couper ;     *
 472 : *   => aplanissement particule pour avoir dist. min. avec interface ;  *
 473 : * IJUSI1  : la particule tangente une interface ;                      *
 474 :   IPROXI1  = FAUX ;
 475 :   IJUSI1   = FAUX ;
 476 : * Indicateurs Realisation Maillage :                                   *
 477 : * IPARI1  : Maillage de la particule ;                                 *
 478 : *   Si Faux => pas d'intersection => pas de particule a mailler ;      *
 479 : * IPROJFI1: Projection conique enveloppe Cellule sur Surface Particule *
 480 : *   suivant Projection de PCI1 sur une des surfaces intersectees ;     *
 481 :   IPARI1   = VRAI ;
 482 :   IPROJFI1 = FAUX ;
 483 :   IPROJAI1 = FAUX ;
 484 : * Boucle sur les faces :                                               *
 485 :   MPTI1    = THO7U . PCI1 . 'MPT' ;
 486 :   NBJ1     = NBNO MPTI1 ;
 487 :   IPREMJ1  = VRAI ;
 488 :   'REPE' BJ1 NBJ1 ;
 489 :     IFACJ1   = FAUX ;
 490 :     IAREJ1   = FAUX ;
 491 :     IDANJ1   = FAUX ;
 492 :     IPROXJ1  = FAUX ;
 493 :     IPROJAJ1 = FAUX ;
 494 :     PCJ1     = MPTI1 'POIN' &BJ1 ;
 495 :     TMPARMAT . PCI1 . PCJ1 = 'TABL' ;
 496 : *                                                                      *
 497 : *   Test intersection Face IJ :                                        *
 498 :     CNTIJ1   = THO7U . PCI1 .  PCJ1 . 'MAV' ;
 499 :     'SI' (&BPOSI1 'NEG' 1) ;
 500 :       PCI0     = PCI1 'MOIN' VDEPI1 ;
 501 :       PPCFIJX  = 0.5 * (PCI0 'PLUS' PCJ1) ;
 502 :       PNFIJ1   = PPCFIJX 'MOIN' PCI0 ;
 503 :       DCIFIJX  = 'NORM' PNFIJ1 ;
 504 :       PNFIJ1   = PNFIJ1 / DCIFIJX ;
 505 :       DVDEPI1  = VDEPI1 'PSCA' PNFIJ1 ;
 506 :       DCIFIJ1  = DCIFIJX - DVDEPI1 ;
 507 :       PPCFIJ1  = PPCFIJX 'PLUS' (VDEPI1 'MOIN' (DVDEPI1 * PNFIJ1)) ;
 508 :     'SINO' ;
 509 :       PPCFIJ1  = 0.5 * (PCI1 'PLUS' PCJ1) ;
 510 :       PNFIJ1   = PPCFIJ1 'MOIN' PCI1 ;
 511 :       DCIFIJ1  = 'NORM' PNFIJ1 ;
 512 :       PNFIJ1   = PNFIJ1 / DCIFIJ1 ;
 513 :     'FINS' ;
 514 :     IDANJ1   = (NBNO (('MANU' 'POI1' PPCFIJ1) 'INCL' CNTIJ1 'LARG'
 515 :       'NOID')) 'EGA' 1 ;
 516 :     'SI' ((DCIFIJ1 '<' RPAR1) 'ET' ('NON' IHORI1)) ;
 517 :       IFACJ1   = VRAI ;
 518 :       RPARJ1   = (RPAR1 * RPAR1 - (DCIFIJ1 * DCIFIJ1)) ** 0.5 ;
 519 :       RLIMJ1   = FLIM1 * RPARJ1 ;
 520 :       'SI' ((DCIFIJ1 '>EG' DFHORI1) 'ET' IDANJ1) ;
 521 :         IJUSI1   = VRAI ;
 522 :         VDEPI1   = 1.05 * (DCIFIJ1 - DFHORI1) * PNFIJ1 ;
 523 :         'TITR' ('CHAI' 'Particule ' &BI1 ' coupe Juste une Face') ;
 524 :         'QUIT' BDENS1 ;
 525 :       'FINS' ;
 526 :     'SINO' ;
 527 :       'SI' (DCIFIJ1 '<' DPROXI1) ;
 528 :         'SI' ('NON' IPROXI1) ;
 529 :           IPROXI1  = VRAI 'ET' IDANJ1 ;
 530 :         'FINS' ;
 531 :       'FINS' ;
 532 :     'FINS' ;
 533 : *   Densite relative a la distance a la Face :                         *
 534 :     LCNTIJ1  = 'MESU' CNTIJ1 ;
 535 :     'SI' (IFACJ1 'ET' IDANJ1) ;
 536 :       DENSJ1   = DENSI1 ;
 537 :     'SINO' ;
 538 :       DENSJ1   = FTET1 * (DCIFIJ1 - RPAR1) / FDENSI1 ;
 539 :       DENSJ1   = 'MAXI' ('PROG' DENSJ1 DENSMI1) ;
 540 :       DENSJ1   = 'MINI' ('PROG' DENSJ1 DENSI1) ;
 541 :     'FINS' ;
 542 : *                                                                      *
 543 : *   Face deja maillee ?                                                *
 544 :     'SI' ('EXIS' TMPARMAT PCJ1) ;
 545 :       MMATIJ1  = TMPARMAT . PCJ1 . PCI1 . 'MATR' ;
 546 :       IFACJ1   = 'EXIS' TMPARMAT . PCJ1 . PCI1 'PART' ;
 547 :       'SI' IFACJ1 ;
 548 :         MPARIJ1  = TMPARMAT . PCJ1 . PCI1 . 'PART' ;
 549 : Titr ' Face Particule deja Maillee !!!' ;
 550 : Trac MPARIJ1 ;
 551 :       'FINS' ;
 552 :       TMPARMAT . PCI1 . PCJ1 = TMPARMAT . PCJ1 . PCI1 ;
 553 :     'SINO' ;
 554 : *   Maillage Face IJ => on parcourt les aretes :                       *
 555 :       MPTIJ1   = THO7U . PCI1 . PCJ1 . 'MPT' ;
 556 : *                                                                      *
 557 : *     Maillage Aretes Matrice :                                        *
 558 : *     -------------------------                                        *
 559 : *                                                                      *
 560 : *     Boucle sur les aretes :                                          *
 561 :       NBK1     = NBNO MPTIJ1 ;
 562 :       IPREMK1  = VRAI ;
 563 :       'REPE' BK1 NBK1 ;
 564 :         IAREK1   = FAUX ;
 565 :         IPROJAK1 = FAUX ;
 566 :         PCK1     = MPTIJ1 'POIN' &BK1 ;
 567 :         TMPARMAT . PCI1 . PCJ1 . PCK1 = 'TABL' ;
 568 : *                                                                      *
 569 : *       Tests pour determiner Si l'arete est deja maillee :            *
 570 : *       IIK1     : Face IK maillee => arete IJK maillee ;              *
 571 : *       IKI1     : Face KI maillee => idem ;                           *
 572 : *       IKJ1     : Face KJ maillee => idem ;                           *
 573 : *       Note     : arete IJK pas forcement associee a IKJ Ou KIJ       *
 574 : *                  du fait du Elim & peut etre constituee de + de      *
 575 : *                  1 elt. => tests sur mesure aretes ;                 *
 576 : *       Iij11    : test Si mesure arete recuperee test Iij1 egale      *
 577 : *                  arete IJK ;                                         *
 578 : *       Iij10    : test Si mesure arete recuperee test Iij1 >egal      *
 579 : *                  arete IJK ;                                         *
 580 :         ELIJK1   = THO7U . PCI1 . PCJ1 . PCK1 . 'MAV' ;
 581 :         MESK1    = 'MESU' ELIJK1 ;
 582 :         TOLK1    = TOL1 * MESK1 ;
 583 : *       Face IK deja maillee ?                                         *
 584 :         IIK11    = FAUX ; IIK10    = FAUX ;
 585 :         IIK1     = 'EXIS' TMPARMAT . PCI1 PCK1 ;
 586 :         'SI' IIK1 ;
 587 :           IIK1     = 'EXIS' TMPARMAT . PCI1 . PCK1 PCJ1 ;
 588 :           'SI' IIK1 ;
 589 :             MMATIJK1 = TMPARMAT . PCI1 . PCK1 . PCJ1 . 'MATR' ;
 590 :             'SI' ('EXIS' TMPARMAT . PCI1 . PCK1 . PCJ1 'PART') ;
 591 :               IAREK1   = VRAI ;
 592 :               MPARIJK1 = TMPARMAT . PCI1 . PCK1 . PCJ1 . 'PART' ;
 593 :               MESKX1   = 'MESU' (MMATIJK1 'ET' MPARIJK1) ;
 594 :             'SINO' ;
 595 :               MESKX1   = 'MESU' MMATIJK1 ;
 596 :             'FINS' ;
 597 :             IIK11    = MESKX1 'EGA' MESK1 TOLK1 ;
 598 :             IIK10    = MESKX1 '>EG' MESK1 ;
 599 :             'SI' ('NON' (IIK11 'OU' IIK10)) ;
 600 :               ELIJK0   = THO7U . PCI1 . PCK1 . PCJ1 . 'MAV' ;
 601 :             'FINS' ;
 602 :           'SINO' ;
 603 :             MPTIK1   = TMPARMAT . PCI1 . PCK1 .'MPT' ;
 604 :             NBL1     = NBNO MPTIK1 ;
 605 :             'REPE' BL1 NBL1 ;
 606 :               PCL1     = MPTIK1 'POIN' &BL1 ;
 607 :               ELIKL1   = THO7U . PCI1 . PCK1 . PCL1 . 'MAV' ;
 608 :               MTEST1   = ELIKL1 'INTE' ELIJK1 'NOVE' ;
 609 :               IIK1     = ('NBEL' MTEST1) 'NEG' 0 ;
 610 :               'SI' IIK1 ;
 611 :                 MMATIJK1 = TMPARMAT . PCI1 . PCK1 . PCL1 . 'MATR' ;
 612 :                 'SI' ('EXIS' TMPARMAT . PCI1 . PCK1 . PCL1 'PART') ;
 613 :                   IAREK1   = VRAI ;
 614 :                   MPARIJK1 = TMPARMAT . PCI1 . PCK1 . PCL1 . 'PART' ;
 615 :                   MESKX1   = 'MESU' (MMATIJK1 'ET' MPARIJK1) ;
 616 :                 'SINO' ;
 617 :                   MESKX1   = 'MESU' MMATIJK1 ;
 618 :                 'FINS' ;
 619 :                 IIK11    = MESKX1 'EGA' MESK1 TOLK1 ;
 620 :                 IIK10    = MESKX1 '>EG' MESK1 ;
 621 :                 'SI' ('NON' (IIK11 'OU' IIK10)) ;
 622 :                   ELIJK0   = THO7U . PCI1 . PCK1 . PCL1 . 'MAV' ;
 623 :                 'FINS' ;
 624 :                 'QUIT' BL1 ;
 625 :               'FINS' ;
 626 :             'FIN' BL1 ;
 627 :           'FINS' ;
 628 :         'FINS' ;
 629 : *       Face KI deja maillee ?                                         *
 630 :         IKI11    = FAUX ; IKI10    = FAUX ;
 631 :         IKI1     = ('EXIS' TMPARMAT PCK1) 'ET' ('NON' IIK11) ;
 632 :         IKJ1     = IKI1 ;
 633 :         'SI' IKI1 ;
 634 :           IKI1     = 'EXIS' TMPARMAT . PCK1 PCI1 ;
 635 :         'FINS' ;
 636 :         'SI' IKI1 ;
 637 :           IKI1     = 'EXIS' TMPARMAT . PCK1 . PCI1 PCJ1 ;
 638 :           'SI' IKI1 ;
 639 :             MMATIJK1 = TMPARMAT . PCK1 . PCI1 . PCJ1 . 'MATR' ;
 640 :             'SI' ('EXIS' TMPARMAT . PCK1 . PCI1 . PCJ1 'PART') ;
 641 :               IAREK1   = VRAI ;
 642 :               MPARIJK1 = TMPARMAT . PCK1 . PCI1 . PCJ1 . 'PART' ;
 643 :               MESKX1   = 'MESU' (MMATIJK1 'ET' MPARIJK1) ;
 644 :             'SINO' ;
 645 :               MESKX1   = 'MESU' MMATIJK1 ;
 646 :             'FINS' ;
 647 :             IKI11    = MESKX1 'EGA' MESK1 TOLK1 ;
 648 :             IKI10    = MESKX1 '>EG' MESK1 ;
 649 :             'SI' ('NON' (IKI11 'OU' IKI10)) ;
 650 :               ELIJK0   = THO7U . PCK1 . PCI1 . PCJ1 . 'MAV' ;
 651 :             'FINS' ;
 652 :           'SINO' ;
 653 :             MPTKI1   = TMPARMAT . PCK1 . PCI1 .'MPT' ;
 654 :             NBL1     = NBNO MPTKI1 ;
 655 :             'REPE' BL1 NBL1 ;
 656 :               PCL1     = MPTKI1 'POIN' &BL1 ;
 657 :               ELKIL1   = THO7U . PCK1 . PCI1 . PCL1 . 'MAV' ;
 658 :               MTEST1   = ELKIL1 'INTE' ELIJK1 'NOVE' ;
 659 :               IKI1     = ('NBEL' MTEST1) 'NEG' 0 ;
 660 :               'SI' IKI1 ;
 661 :                 MMATIJK1 = TMPARMAT . PCK1 . PCI1 . PCL1 . 'MATR' ;
 662 :                 'SI' ('EXIS' TMPARMAT . PCK1 . PCI1 . PCL1 'PART') ;
 663 :                   IAREK1   = VRAI ;
 664 :                   MPARIJK1 = TMPARMAT . PCK1 . PCI1 . PCL1 . 'PART' ;
 665 :                   MESKX1   = 'MESU' (MMATIJK1 'ET' MPARIJK1) ;
 666 :                 'SINO' ;
 667 :                   MESKX1   = 'MESU' MMATIJK1 ;
 668 :                 'FINS' ;
 669 :                 IKI11    = MESKX1 'EGA' MESK1 TOLK1 ;
 670 :                 IKI10    = MESKX1 '>EG' MESK1 ;
 671 :                 'SI' ('NON' (IKI11 'OU' IKI10)) ;
 672 :                   ELIJK0   = THO7U . PCK1 . PCI1 . PCL1 . 'MAV' ;
 673 :                 'FINS' ;
 674 :                 'QUIT' BL1 ;
 675 :               'FINS' ;
 676 :             'FIN' BL1 ;
 677 :           'FINS' ;
 678 :         'FINS' ;
 679 : *       Face KJ deja maillee ?                                         *
 680 :         IKJ11    = FAUX ; IKJ10    = FAUX ;
 681 :         'SI' IKJ1 ;
 682 :           IKJ1     =  ('EXIS' TMPARMAT . PCK1 PCJ1)
 683 :             'ET' ('NON' IKI11) ;
 684 :         'FINS' ;
 685 :         'SI' IKJ1 ;
 686 :           IKJ1     = 'EXIS' TMPARMAT . PCK1 . PCJ1 PCI1 ;
 687 :           'SI' IKJ1 ;
 688 :             MMATIJK1 = TMPARMAT . PCK1 . PCJ1 . PCI1 . 'MATR' ;
 689 :             'SI' ('EXIS' TMPARMAT . PCK1 . PCJ1 . PCI1 'PART') ;
 690 :               IAREK1   = VRAI ;
 691 :               MPARIJK1 = TMPARMAT . PCK1 . PCJ1 . PCI1 . 'PART' ;
 692 :               MESKX1   = 'MESU' (MMATIJK1 'ET' MPARIJK1) ;
 693 :             'SINO' ;
 694 :               MESKX1   = 'MESU' MMATIJK1 ;
 695 :             'FINS' ;
 696 :             IKJ11    = MESKX1 'EGA' MESK1 TOLK1 ;
 697 :             IKJ10    = MESKX1 '>EG' MESK1 ;
 698 :             'SI' ('NON' (IKJ11 'OU' IKJ10)) ;
 699 :               ELIJK0   = THO7U . PCK1 . PCJ1 . PCI1 . 'MAV' ;
 700 :             'FINS' ;
 701 :           'SINO' ;
 702 :             MPTKJ1   = TMPARMAT . PCK1 . PCJ1 . 'MPT' ;
 703 :             NBL1     = NBNO MPTKJ1 ;
 704 :             'REPE' BL1 NBL1 ;
 705 :               PCL1     = MPTKJ1 'POIN' &BL1 ;
 706 :               ELKJL1   = THO7U . PCK1 . PCJ1 . PCL1 . 'MAV' ;
 707 :               MTEST1   = ELKJL1 'INTE' ELIJK1 'NOVE' ;
 708 :               IKJ1     = ('NBEL' MTEST1) 'NEG' 0 ;
 709 :               'SI' IKJ1 ;
 710 :                 MMATIJK1 = TMPARMAT . PCK1 . PCJ1 . PCL1 . 'MATR' ;
 711 :                 'SI' ('EXIS' TMPARMAT . PCK1 . PCJ1 . PCL1 'PART') ;
 712 :                   IAREK1   = VRAI ;
 713 :                   MPARIJK1 = TMPARMAT . PCK1 . PCJ1 . PCL1 . 'PART' ;
 714 :                   MESKX1   = 'MESU' (MMATIJK1 'ET' MPARIJK1) ;
 715 :                 'SINO' ;
 716 :                   MESKX1   = 'MESU' MMATIJK1 ;
 717 :                 'FINS' ;
 718 :                 IKJ11    = MESKX1 'EGA' MESK1 TOLK1 ;
 719 :                 IKJ10    = MESKX1 '>EG' MESK1 ;
 720 :                 'SI' ('NON' (IKJ11 'OU' IKJ10)) ;
 721 :                   ELIJK0   = THO7U . PCK1 . PCJ1 . PCL1 . 'MAV' ;
 722 :                 'FINS' ;
 723 :                 'QUIT' BL1 ;
 724 :               'FINS' ;
 725 :             'FIN' BL1 ;
 726 :           'FINS' ;
 727 :         'FINS' ;
 728 : *       Traitement des cas :                                           *
 729 :         IXX10    = IIK10 'OU' IKI10 'OU' IKJ10 ;
 730 :         IIJK1    = VRAI ;
 731 :         'SI' IIK11 ;
 732 :           IXX10    = FAUX ;
 733 :           IIJK1    = FAUX ;
 734 :         'FINS' ;
 735 :         'SI' IKI11 ;
 736 :           IXX10    = FAUX ;
 737 :           IIJK1    = FAUX ;
 738 :         'FINS' ;
 739 :         'SI' IKJ11 ;
 740 :           IXX10    = FAUX ;
 741 :           IIJK1    = FAUX ;
 742 :         'FINS' ;
 743 :         'SI' IXX10 ;
 744 :           PSK1     = (ELIJK1 'ELEM' 1) 'POIN' 1 ;
 745 :           PSK2     = (ELIJK1 'ELEM' ('NBEL' ELIJK1)) 'POIN' 2 ;
 746 :           MMATIJK1 = MMATIJK1 'ELEM' 'COMP' PSK1 PSK2 ;
 747 :           IIJK1    = FAUX ;
 748 :         'FINS' ;
 749 : *       Une partie de l'arete est-elle deja maillee ?                  *
 750 :         'SI' IIJK1 ;
 751 :           IPREME1  = VRAI ;
 752 :           'SI' (IIK1 'OU' IKI1 'OU' IKJ1) ;
 753 : *           Une partie de l'arete est maillee :                        *
 754 :             ELIJK1   = ELIJK1 'DIFF' ELIJK0 ;
 755 :             IPREME1  = FAUX ;
 756 :           'FINS' ;
 757 : *                                                                      *
 758 : *         Maillage Arete :                                             *
 759 : *         Iterations sur elts. arete du fait du Elim ;                 *
 760 :           NBELK1   = 'NBEL' ELIJK1 ;
 761 :           'REPE' BELK1 NBELK1 ;
 762 :             IAREE1   = FAUX ;
 763 :             IDANK1   = FAUX ;
 764 :             AIJK1    = ELIJK1 'ELEM' &BELK1 ;
 765 :             MESE1    = 'MESU' AIJK1 ;
 766 :             PSK1     = AIJK1 'POIN' 1 ;
 767 :             PSK2     = AIJK1 'POIN' 2 ;
 768 : *           PSK12N : vecteur norme PSK1-SK2 ;                          *
 769 :             PSK12N   = PSK2 'MOIN' PSK1 ;
 770 :             PSK12N   = PSK12N / ('NORM' PSK12N) ;
 771 : *           PSK1CI1 : vecteur PSK1-PCI1 ;                              *
 772 :             PSK1CI1  = PCI1 'MOIN' PSK1 ;
 773 : *           PNAKCI1 : normale a l'arete passant par PCI1 ;             *
 774 :             PNAKCI1  = PSK1CI1 'MOIN'
 775 :             ((PSK1CI1 'PSCA' PSK12N) * PSK12N) ;
 776 : *           PPCIAK1 : projete de PCI1 sur l'arete ;                    *
 777 :             PPCIAK1  = PCI1 'MOIN' PNAKCI1 ;
 778 : *           DCIAK1 : distance PCI1-arete ;                             *
 779 :             DCIAK1   = 'NORM' PNAKCI1 ;
 780 : *           DCISKi : distance PCI1-PSKi ;                              *
 781 :             DCISK1   = 'NORM' PSK1CI1 ;
 782 :             DCISK2   = 'NORM' (PCI1 'MOIN' PSK2) ;
 783 : *           DENSK0-DENSK1-DENSK2 : densites centre-extrem. arete ;     *
 784 :             DENSK0   = FTET1 * (DCIAK1 - RPAR1) / FDENSI1 ;
 785 :             DENSK1   = FTET1 * (DCISK1 - RPAR1) / FDENSI1 ;
 786 :             DENSK2   = FTET1 * (DCISK2 - RPAR1) / FDENSI1 ;
 787 :             DENSK0   = 'MAXI' ('PROG' DENSK0 DENSMI1) ;
 788 :             DENSK1   = 'MAXI' ('PROG' DENSK1 DENSMI1) ;
 789 :             DENSK2   = 'MAXI' ('PROG' DENSK2 DENSMI1) ;
 790 :             DENSK0   = 'MINI' ('PROG' DENSK0 DENSI1 (10. * DENSJ1)) ;
 791 :             DENSK1   = 'MINI' ('PROG' DENSK1 DENSI1 (10. * DENSJ1)) ;
 792 :             DENSK2   = 'MINI' ('PROG' DENSK2 DENSI1 (10. * DENSJ1)) ;
 793 : *           PSK1PPK1, PSK2PPK1 : vecteur pour test sur arete ;         *
 794 :             PSK1PPK1 = PPCIAK1 'MOIN' PSK1 ;
 795 :             PSK2PPK1 = PPCIAK1 'MOIN' PSK2 ;
 796 :             DSK1PPK1 = 'NORM' PSK1PPK1 ;
 797 :             DSK2PPK1 = 'NORM' PSK2PPK1 ;
 798 : *           IDANK1=VRAI, PPCIAK1 appartient au segment [PSK1,PSK2] :   *
 799 :             IDANK1   = (('PSCA' PSK1PPK1 PSK12N) '>EG' 0.)
 800 :                   'ET' (('PSCA' PSK2PPK1 PSK12N) '<EG' 0.) 
 801 :                   'ET' (DSK1PPK1 '<EG' MESE1)
 802 :                   'ET' (DSK2PPK1 '<EG' MESE1) ;
 803 : *           Tests Intersection Sommets :                               *
 804 :             IISK1    = DCISK1 '<' RPAR1 ;
 805 :             IISK2    = DCISK2 '<' RPAR1 ;
 806 :             ISOMI1   = IISK1 'OU' IISK2 ;
 807 : *           Test Intersection Arete :                                  *
 808 :             IAREE1   = (DCIAK1 '<' RPAR1) 'ET' (IDANK1 'OU' ISOMI1) ;
 809 :             IAREE1   = IAREE1 'ET' ('NON' IHORI1) ;
 810 :             'SI' IAREE1 ;
 811 : *             DPPKPKP0 : Dist. PPCIAK1-Points Intersec. Part-Arete     *
 812 :               DPPKPKP0 = (RPAR1 * RPAR1 - (DCIAK1 ** 2)) ** 0.5 ;
 813 : *             PSKP1, PSKP2 : Points Intersec. Part-Arete ;             *
 814 :               DPPKPKP1 = DPPKPKP0 / DSK1PPK1 ;
 815 :               DPPKPKP2 = DPPKPKP0 / DSK2PPK1 ;
 816 :               PSKP1    = PPCIAK1 'MOIN' (DPPKPKP1 * PSK1PPK1) ;
 817 :               PSKP2    = PPCIAK1 'MOIN' (DPPKPKP2 * PSK2PPK1) ;
 818 :               'SI' (DCIAK1 '>EG' DAHORI1) ;
 819 :                 IJUSI1   = VRAI ;
 820 :                 'SI' IDANI1 ;
 821 :                   VDEPI1   = -1.05 * (DCIAK1 - DAHORI1)
 822 :                     * PNAKCI1 / DCIAK1 ;
 823 :                 'SINO' ;
 824 :                   'SI' IDANJ1 ;
 825 :                     B1       = DCIFIJ1 ;
 826 :                     'SI' (DCIAK1 '<' B1) ;
 827 :                       B2       = 0. ;
 828 :                     'SINO' ;
 829 :                       B2       = ((DCIAK1 ** 2) - (B1 ** 2)) ** 0.5 ;
 830 :                     'FINS' ;
 831 :                     VDEPI1   = PNAKCI1 'PLUS' (DCIFIJ1 * PNFIJ1) ;
 832 :                     VDEPI1   = -1. * VDEPI1 / ('NORM' VDEPI1) ;
 833 :                   'SINO' ;
 834 :                     B2       = DCIFIJ1 ;
 835 :                     'SI' (DCIAK1 '<' B2) ;
 836 :                       B1       = 0. ;
 837 :                     'SINO' ;
 838 :                       B1       = ((DCIAK1 ** 2) - (B2 ** 2)) ** 0.5 ;
 839 :                     'FINS' ;
 840 :                     VDEPI1   = PNFIJ1 ;
 841 :                   'FINS' ;
 842 :                   ADEPI1   = ((DAHORI1 ** 2) - (B1 ** 2)) ** 0.5 ;
 843 :                   ADEPI1   = B2 - ADEPI1 ;
 844 :                   VDEPI1   = 1.05 * ADEPI1 * VDEPI1 ;
 845 :                 'FINS' ;
 846 :                 'TITR' ('CHAI' 'Particule ' &BI1 ' coupe Juste Arete') ;
 847 :                 'QUIT' BDENS1 ;
 848 :               'FINS' ;
 849 : *             Elements pour calcul densites :                          *
 850 :               DCJAK1   = ((DCIAK1 ** 2) - (DCIFIJ1 ** 2)) ** 0.5 ;
 851 :               XNECNTK1 = (LCNTIJ1 - MESK1) / (1.0 * DENSI1) ;
 852 :               THETK1   = 'ATG' (DPPKPKP0 / DCJAK1) ;
 853 :               THETK1   = THETK1 * PI / 180. ;
 854 : *             Determination du Cas projection contour :                *
 855 :               IPROJAK1 = (DCJAK1 '<' RLIMJ1) 'OU' ('NON' IDANJ1) ;
 856 :               'SI' ISOMI1 ;
 857 : *               Intersection sommets :                                 *
 858 : *               Calcul densite caracteristique :                       *
 859 :                 DENSKP0  = (1. * RPARJ1 * THETK1) / XNECNTK1 ;
 860 :                 DENSKP0  = 'MAXI' ('PROG' DENSKP0 DENSMI1) ;
 861 :                 DENSKP0  = 'MINI' ('PROG' DENSKP0 DENSK1) ;
 862 : *               Maillage :                                             *
 863 :                 'SI' (IISK1 'ET' IISK2) ;
 864 :                   'MESS' ' Intersection 2 sommets : pas encore... !' ;
 865 :                   'ERRE' 26 ;
 866 :                 'SINO' ;
 867 :                   'SI' IISK1 ;
 868 :                     PSKX PSKPX = PSK2 PSKP2 ;
 869 :                     PSK2 PSKP2 = PSK1 PSKP1 ;
 870 :                     PSK1 PSKP1 = PSKX PSKPX ;
 871 :                     DENSKX   = DENSK2 ;
 872 :                     DENSK2   = DENSK1 ;
 873 :                     DENSK1   = DENSKX ;
 874 :                   'FINS' ;
 875 :                   DENSKP1  = 1. / (0.5 / DENSKP0 + (0.5 / DENSK1)) ;
 876 : *                  DENSKP1  = 1. * (0.5 * DENSKP0 + (0.5 * DENSK1)) ;
 877 :                   PSOMI1   = PSK2 ;
 878 : *                  MMATIJK0 = PSK1 'DROI' PSKP1 'DINI' DENSK1
 879 : *                                               'DFIN' DENSKP0 ;
 880 : *                  MMATIJK0 = MMATIJK0 'COUL' 'JAUN' ;
 881 : *                  MPARIJK0 = PSKP1 'DROI' PSK2 'DINI' DENSKP0
 882 : *                                               'DFIN' DENSKP1 ;
 883 :                   DENSKPX  = 'NORM' (PSKP1 'MOIN' PSK1) ;
 884 :                   DENSKPX  = 'MAXI' ('PROG' DENSKPX DENSMI1) ;
 885 :                   DENSKPX  = 'MINI' ('PROG' DENSKPX DENSI1 ) ;
 886 :                   MMATIJK0 = PSK1 'DROI' PSKP1 'DINI' DENSKPX
 887 :                                                'DFIN' DENSKPX ;
 888 :                   MMATIJK0 = MMATIJK0 'COUL' 'JAUN' ;
 889 :                   MPARIJK0 = PSKP1 'DROI' PSK2 'DINI' DENSKPX
 890 :                                                'DFIN' DENSI1 ;
 891 :                 'FINS' ;
 892 :               'SINO' ;
 893 : *               Intersection uniquement Arete :                        *
 894 :                 'SI' IDANJ1 ;
 895 :                   DENSKP0  = (2. * RPARJ1 * (PI - THETK1)) / XNECNTK1 ;
 896 :                   DENSKP0  = 'MAXI' ('PROG' DENSKP0 DENSMI1) ;
 897 :                   DENSKP0  = 'MINI' ('PROG' DENSKP0 DENSI1) ;
 898 :                   DENSKP1  = DENSK1 ;
 899 :                   DENSKP2  = DENSK2 ;
 900 :                 'SINO' ;
 901 :                   DENSKP0  = (2. * RPARJ1 * THETK1) / XNECNTK1 ;
 902 :                   DENSKP0  = 'MAXI' ('PROG' DENSKP0 DENSMI1) ;
 903 :                   DENSKP0  = 'MINI' ('PROG' DENSKP0 DENSI1) ;
 904 :                   DCJSK1   = (DCISK1 ** 2 - (DCIFIJ1 ** 2)) ** 0.5 ;
 905 :                   DCJSK2   = (DCISK2 ** 2 - (DCIFIJ1 ** 2)) ** 0.5 ;
 906 :                   DENSKP1  = DENSK1 * DCJAK1 * RPARJ1 / (DCJSK1 ** 2) ;
 907 :                   DENSKP2  = DENSK2 * DCJAK1 * RPARJ1 / (DCJSK2 ** 2) ;
 908 :                   DENSKP1  = 'MAXI' ('PROG' DENSKP1 DENSMI1 DENSKP0) ;
 909 :                   DENSKP2  = 'MAXI' ('PROG' DENSKP2 DENSMI1 DENSKP0) ;
 910 :                   DENSKP1  = 'MINI' ('PROG' DENSK1 DENSKP1 DENSKP0) ;
 911 :                   DENSKP2  = 'MINI' ('PROG' DENSK2 DENSKP2 DENSKP0) ;
 912 :                 'FINS' ;
 913 :                 DENSKP1  = 1. / (0.5 / DENSKP0 + (0.5 / DENSKP1)) ;
 914 :                 DENSKP2  = 1. / (0.5 / DENSKP0 + (0.5 / DENSKP2)) ;
 915 : *               Maillage Aretes Matrice-Particule :                    *
 916 :                 DENSKX1  = 'NORM' (PSKP1 'MOIN' PSK1) ;
 917 :                 DENSKX1  = 'MAXI' ('PROG' DENSKX1 DENSMI1) ;
 918 :                 DENSKX1  = 'MINI' ('PROG' DENSKX1 DENSI1) ;
 919 :                 DENSKX2  = 'NORM' (PSKP2 'MOIN' PSK2) ;
 920 :                 DENSKX2  = 'MAXI' ('PROG' DENSKX2 DENSMI1) ;
 921 :                 DENSKX2  = 'MINI' ('PROG' DENSKX2 DENSI1) ;
 922 :                 DENSKPX1 = 'MINI' ('PROG' DENSKX1 DENSKP0) ;
 923 :                 DENSKPX2 = 'MINI' ('PROG' DENSKX2 DENSKP0) ;
 924 :                 DENSKPX0 = 'MINI' ('PROG' DENSI1 (2. * DENSKP0)) ;
 925 :                 MMATIJK0 = PSK1 'DROI' PSKP1 'DINI' DENSKX1
 926 :                                              'DFIN' DENSKPX1 ;
 927 :                 MMATIJK0 = MMATIJK0 'ET'
 928 :                   (PSKP2 'DROI' PSK2 'DINI' DENSKPX2 'DFIN' DENSKX2) ;
 929 :                 'SI' IPROJAK1 ;
 930 :                   MMATIJK0 = MMATIJK0 'COUL' 'JAUN' ;
 931 :                 'FINS' ;
 932 :                 MPARIJK0 = PSKP1 'DROI' PPCIAK1 'DINI' DENSKPX1
 933 :                                                 'DFIN' DENSKPX0 ;
 934 :                 MPARIJK0 = MPARIJK0 'ET'
 935 :                 (PPCIAK1 'DROI' PSKP2 'DINI' DENSKPX0 'DFIN' DENSKPX2) ;
 936 :               'FINS' ;
 937 :             'SINO' ;
 938 : *             Pas Intersection Arete :                                 *
 939 : *             Si Distance Sommet-PPCIAK1 > Densite calcule
 940 : *             Et Si PPCIAK1 sur l'arete => on maille en 2 parties :    *
 941 : *              'SI' IHORI1 ;
 942 : *                MMATIJK0 = PSK1 'DROI' PSK2 'DINI' DENSK1
 943 : *                                            'DFIN' DENSK2 ;
 944 : *              'SINO' ;
 945 :                 'SI' ((DSK1PPK1 '>EG' DENSK1) 
 946 :                  'ET' (DSK2PPK1 '>EG' DENSK2) 'ET' IDANK1) ;
 947 :                   MMATIJK0 = PSK1 'DROI' PPCIAK1 'DINI' DENSK1
 948 :                                                  'DFIN' DENSK0 ;
 949 :                   MMATIJK0 = MMATIJK0 'ET'
 950 :                     (PPCIAK1 'DROI' PSK2 'DINI' DENSK0 'DFIN' DENSK2) ;
 951 :                 'SINO' ;
 952 :                   MMATIJK0 = PSK1 'DROI' PSK2 'DINI' DENSK1
 953 :                                               'DFIN' DENSK2 ;
 954 :                 'FINS' ;
 955 :                 'SI' (DCIAK1 '<' DPROXI1) ;
 956 :                   IPROXI1  = VRAI 'ET' IDANK1 ;
 957 :                 'FINS' ;
 958 : *              'FINS' ;
 959 :             'FINS' ;
 960 :             'SI' IPREME1 ;
 961 :               IPREME1  = FAUX ;
 962 :               MMATIJK1 = MMATIJK0 ;
 963 :             'SINO' ; 
 964 :               MMATIJK1 = MMATIJK1 'ET' MMATIJK0 ;
 965 :             'FINS' ;
 966 :             'SI' IAREE1 ;
 967 :               PPCIAE0  = PPCIAK1 ;
 968 :               'SI' IAREK1 ;
 969 :                 MPARIJK1 = MPARIJK1 'ET' MPARIJK0 ;
 970 :               'SINO' ;
 971 :                 IAREK1   = VRAI ;
 972 :                 MPARIJK1 = MPARIJK0 ;
 973 :               'FINS' ;
 974 :             'FINS' ;
 975 :           'FIN' BELK1 ;
 976 :         'SINO' ;
 977 :           'SI' IAREK1 ;
 978 : *            'MESS' ' Arete intersectee Et deja maillee' ;
 979 :             AIJK1    = ELIJK1 ;
 980 :             MESE1    = 'MESU' AIJK1 ;
 981 :             PSK1     = AIJK1 'POIN' 1 ;
 982 :             PSK2     = AIJK1 'POIN' 2 ;
 983 : *           PSK12N : vecteur norme PSK1-SK2 ;                          *
 984 :             PSK12N   = PSK2 'MOIN' PSK1 ;
 985 :             PSK12N   = PSK12N / ('NORM' PSK12N) ;
 986 : *           PSK1CI1 : vecteur PSK1-PCI1 ;                              *
 987 :             PSK1CI1  = PCI1 'MOIN' PSK1 ;
 988 : *           PNAKCI1 : normale a l'arete passant par PCI1 ;             *
 989 :             PNAKCI1  = PSK1CI1 'MOIN'
 990 :             ((PSK1CI1 'PSCA' PSK12N) * PSK12N) ;
 991 : *           PPCIAK1 : projete de PCI1 sur l'arete ;                    *
 992 :             PPCIAK1  = PCI1 'MOIN' PNAKCI1 ;
 993 : *           DCIAK1 : distance PCI1-arete ;                             *
 994 :             DCIAK1   = 'NORM' PNAKCI1 ;
 995 :             DCJAK1   = ((DCIAK1 ** 2) - (DCIFIJ1 ** 2)) ** 0.5 ;
 996 :             IPROJAK1 = (DCJAK1 '<' RLIMJ1) 'OU' ('NON' IDANJ1) ;
 997 :             'SI' IPROJAK1 ;
 998 :               PPCIAE0  = PPCIAK1 ;
 999 :               MMATIJK1 = MMATIJK1 'COUL' 'JAUN' ;
1000 :             'FINS' ;
1001 :           'FINS' ;
1002 :         'FINS' ;
1003 : *       Stockage Arete Dans la table :                                 *
1004 :         TMPARMAT . PCI1 . PCJ1 . PCK1 . 'MATR' = MMATIJK1 ;
1005 :         'SI' IPREMK1 ;
1006 :           IPREMK1  = FAUX ;
1007 :           CNTMATJ1 = MMATIJK1 ;
1008 :           TMPARMAT . PCI1 . PCJ1 . 'MPT' = 'MANU' 'POI1' PCK1 ;
1009 :         'SINO' ;
1010 :           CNTMATJ1 = CNTMATJ1 'ET' MMATIJK1 ;
1011 :           TMPARMAT . PCI1 . PCJ1 . 'MPT' =
1012 :             TMPARMAT . PCI1 . PCJ1 . 'MPT' 'ET' PCK1 ;
1013 :         'FINS' ;
1014 :         'SI' IAREK1 ;
1015 :           TMPARMAT . PCI1 . PCJ1 . PCK1 . 'PART' = MPARIJK1 ;
1016 :           'SI' IAREJ1 ;
1017 :             CNTPARJ1 = CNTPARJ1 'ET' MPARIJK1 ;
1018 :           'SINO' ;
1019 :             IAREJ1   = VRAI ;
1020 :             CNTPARJ1 = MPARIJK1 ;
1021 :           'FINS' ;
1022 :           'SI' IPROJAK1 ;
1023 :             'SI' IPROJAJ1 ;
1024 :               'SI' ISOMI1 ;
1025 :                 PPCIAK0  = PSOMI1 ;
1026 :               'SINO' ;
1027 :                 'MESS'
1028 : ' ####" 2x Projection selon point sur aretes pour 1 meme contour ?' ;
1029 :                 'ERRE' 26 ;
1030 :               'FINS' ;
1031 :             'SINO' ;
1032 :               IPROJAJ1 = VRAI ;
1033 :               PPCIAK0  = PPCIAE0 ;
1034 :             'FINS' ;
1035 :           'FINS' ;
1036 :         'FINS' ;
1037 :       'FIN' BK1 ;
1038 : *                                                                      *
1039 : *     Maillage Surfaces Matrice/Particules :                           *
1040 : *     --------------------------------------                           *
1041 : *                                                                      *
1042 : *     Maillage surface IJ :                                            *
1043 :       IFACJ1   = IFACJ1 'ET' (IDANJ1 'OU' IAREJ1) ;
1044 :       'SI' IFACJ1 ;
1045 :         'SI' IAREJ1 ;
1046 : *         Construction Contour(s) Si intersection Arete-Sommet :       *
1047 :           'SI' ISOMI1 ;
1048 :             CNTMATJ2 = CNTMATJ1 'DIFF' (CNTMATJ1 'ELEM' 'JAUN') ;
1049 :             CNTPARJ2 = CNTMATJ2 'PROJ' 'CONI' PSOMI1
1050 :                                        'SPHE' PCI1 PPARI1 ;
1051 :           'SINO' ;
1052 :             'SI' IPROJAJ1 ;
1053 :               CNTMATJ2 = CNTMATJ1 'DIFF' (CNTMATJ1 'ELEM' 'JAUN') ;
1054 :               CNTPARJ2 = CNTMATJ2 'PROJ' 'CONI' PPCIAK0
1055 :                 'SPHE' PCI1 PPARI1 ;
1056 :             'SINO' ;
1057 :               CNTPARJ2 = CNTMATJ1 'PROJ' 'CONI' PPCFIJ1
1058 :                 'SPHE' PCI1 PPARI1 ;
1059 :             'FINS' ;
1060 :           'FINS' ;
1061 :           CNTPARJ1 = CNTPARJ1 'ET' CNTPARJ2 ;
1062 :           'ELIM' CNTPARJ1 TOL1 ;
1063 :           CNTPARJ1 = CNTPARJ1 'ELEM' 'COMP' (CNTPARJ1 'POIN' 1)
1064 :                                             (CNTPARJ1 'POIN' 1) ;
1065 :           CNTMATJ1 = CNTMATJ1 'ET' CNTPARJ2 ;
1066 : *         Appel a Surf pour intersection Arete(s)-Sommet :             *
1067 :           'OPTI' 'ERRE' 'CONT' ;
1068 :           TCCONJ1  = 'CCON' CNTMATJ1 ;
1069 :           'REPE' BCCONJ1 ('DIME' TCCONJ1) ;
1070 :             CNTMATJ0 = TCCONJ1 . &BCCONJ1 ;
1071 :             CNTMATJ0 = CNTMATJ0 'ELEM' 'COMP' (CNTMATJ0 'POIN' 1)
1072 :                                               (CNTMATJ0 'POIN' 1) ;
1073 :             'SI' IPROJAJ1 ;
1074 :               MMATIJ0  = 'SURF' CNTMATJ0 'PLAN' 0.9 ;
1075 :             'SINO' ;
1076 :               MMATIJ0  = 'SURF' CNTMATJ0 'PLAN' 0.9 ;
1077 :             'FINS' ;
1078 :             'SI' (&BCCONJ1 'EGA' 1) ;
1079 :               MMATIJ1  = MMATIJ0 ;
1080 :             'SINO' ;
1081 :               MMATIJ1  = MMATIJ1 'ET' MMATIJ0 ;
1082 :             'FINS' ;
1083 :           'FIN' BCCONJ1 ;
1084 :           MPARIJ1  = 'SURF' CNTPARJ1 'PLAN' 0.9 ;
1085 :           'OPTI' 'ERRE' 'NORM' ;
1086 :           IANNULS1 = ('EGA' ('TYPE' MMATIJ1) 'ANNULE')
1087 :                 'OU' ('EGA' ('TYPE' MPARIJ1) 'ANNULE') ;
1088 :           'SI' IANNULS1 ;
1089 :             'MESS' ' ##### Echec maillage surface (ANNULE) ! ' ;
1090 :             'ITER' BDENS1 ;
1091 :           'SINO' ;
1092 :             MTOTIJ1  = MMATIJ1 'ET' MPARIJ1 ;
1093 :             SCNTIJ1  = 'MESU' 'SURF' (THO7U . PCI1 . PCJ1 . 'MAV') ;
1094 :             STOTIJ1  = 'MESU' MTOTIJ1 ;
1095 :             'SI' ((SCNTIJ1 - STOTIJ1) '>' (1.E-5 * SCNTIJ1)) ;
1096 :               'MESS' ' ##### Echec maillage surface ! ';
1097 :               'ITER' BDENS1 ;
1098 :             'FINS' ;
1099 :           'FINS' ;
1100 :         'SINO' ;
1101 : *         Construction Contour(s) Si intersection Face :               *
1102 :           CNTMATJ1 = CNTMATJ1 'ELEM' 'COMP' (CNTMATJ1 'POIN' 1)
1103 :                                             (CNTMATJ1 'POIN' 1) ;
1104 :           CNTPARJ1 = CNTMATJ1 'PROJ' 'CONI' PPCFIJ1 'SPHE' PCI1 PPARI1 ;
1105 :           CNTMATJ1 = CNTMATJ1 'ET' ('INVE' CNTPARJ1) ;
1106 : *         Maillage Surface intersection Face :                         *
1107 :           'OPTI' 'ERRE' 'CONT' ;
1108 :           MMATIJ1  = 'SURF' CNTMATJ1 'PLAN' 0.9 ;
1109 :           MPARIJ1  = 'SURF' CNTPARJ1 'PLAN' 0.9 ;
1110 :           'OPTI' 'ERRE' 'NORM' ;
1111 :           IANNULS1 = ('EGA' ('TYPE' MMATIJ1) 'ANNULE')
1112 :                 'OU' ('EGA' ('TYPE' MPARIJ1) 'ANNULE') ;
1113 :           'SI' IANNULS1 ;
1114 :             'MESS' ' ##### Echec maillage surface (ANNULE) ! ' ;
1115 :             'ITER' BDENS1 ;
1116 :           'SINO' ;
1117 :             MTOTIJ1  = MMATIJ1 'ET' MPARIJ1 ;
1118 :             SCNTIJ1  = 'MESU' 'SURF' (THO7U . PCI1 . PCJ1 . 'MAV') ;
1119 :             STOTIJ1  = 'MESU' MTOTIJ1 ;
1120 :             'SI' ((SCNTIJ1 - STOTIJ1) '>' (1.E-5 * SCNTIJ1)) ;
1121 :               'MESS' ' ##### Echec maillage surface ! ';
1122 :               'ITER' BDENS1 ;
1123 :             'FINS' ;
1124 :           'FINS' ;
1125 :         'FINS' ;
1126 :       'SINO' ;
1127 : *       Construction Contour(s) aucune intersection :                  *
1128 :         CNTMATJ1 = CNTMATJ1 'ELEM' 'COMP' (CNTMATJ1 'POIN' 1)
1129 :                                           (CNTMATJ1 'POIN' 1) ;
1130 : *       Maillage Surface :                                             *
1131 :         'SI' IHORI1 ;
1132 :           CHDIJ1   = 'MANU' 'CHPO' CNTMATJ1 1 'DENS' DENSI1 ;
1133 :         'SINO' ;
1134 :           CHDIJ1   = 'MANU' 'CHPO' CNTMATJ1 1 'DENS' DENSJ1 ;
1135 :         'FINS' ;
1136 :         'OPTI' 'ERRE' 'CONT' ;
1137 :         MMATIJ1  = 'SURF' CHDIJ1 CNTMATJ1 'PLAN' 0.9 ;
1138 :         'OPTI' 'ERRE' 'NORM' ;
1139 :         IANNULS1 = 'EGA' ('TYPE' MMATIJ1) 'ANNULE' ;
1140 :         'SI' IANNULS1 ;
1141 :           'MESS' ' ##### Echec maillage surface (ANNULE) ! ' ;
1142 :           'ITER' BDENS1 ;
1143 :         'SINO' ;
1144 :           SCNTIJ1  = 'MESU' 'SURF' CNTMATJ1 ;
1145 :           SMATIJ1  = 'MESU' MMATIJ1 ;
1146 :           'SI' ((SCNTIJ1 - SMATIJ1) '>' (1.E-5 * SCNTIJ1)) ;
1147 :             'MESS' ' ##### Echec maillage surface ! ';
1148 :             'ITER' BDENS1 ;
1149 :           'FINS' ;
1150 :         'FINS' ;
1151 :       'FINS' ;
1152 :       'SI' IFACJ1 ;
1153 :         MMATIJ1  = MMATIJ1 'COUL' 'OLIV' ;
1154 :       'FINS' ;
1155 :       TMPARMAT . PCI1 . PCJ1 . 'MATR' = MMATIJ1 ;
1156 :     'FINS' ;
1157 : * Analyse du cas traite :                                              *
1158 :     'SI' IFACJ1 ;
1159 :       MPARIJ1  = MPARIJ1 'COUL' 'ORAN' ;
1160 :       TMPARMAT . PCI1 . PCJ1 . 'PART' = MPARIJ1 ;
1161 :       'SI' IFACI1 ;
1162 :         ENVPARI1 = ENVPARI1 'ET' MPARIJ1 ;
1163 :       'SINO' ;
1164 :         IFACI1   = VRAI ;
1165 :         ENVPARI1 = MPARIJ1 ;
1166 :       'FINS' ;
1167 :       'SI' IAREJ1 ;
1168 :         'SI' ('NON' IAREI1) ;
1169 :           IAREI1   = VRAI ;
1170 :         'FINS' ;
1171 :         'SI' ((DCIFIJ1 '<' RLIM1) 'OU' ('NON' IDANI1)) ;
1172 :           'SI' IPROJAJ1 ;
1173 :             MMATIJ1  = MMATIJ1 'COUL' 'ROSE' ;
1174 :             'SI' IPROJAI1 ;
1175 : *              PPCIAJ0  = PPCIAJ0 'PLUS' (PPCIAK0 'MOIN' PCI1) ;
1176 :             'SINO' ;
1177 :               IPROJAI1 = VRAI ;
1178 :               PPCIAJ0  = PPCIAK0 ;
1179 :             'FINS' ;
1180 :           'SINO' ;
1181 :             MMATIJ1  = MMATIJ1 'COUL' 'TURQ' ;
1182 :             'SI' IPROJFI1 ;
1183 :               IJUSI1   = VRAI ;
1184 :               PPCFIJ0  = PPCFIJ0 'PLUS' (PPCFIJ1 'MOIN' PCI1) ;
1185 :             'SINO' ;
1186 :               IPROJFI1 = VRAI ;
1187 :               PPCFIJ0  = PPCFIJ1 ;
1188 :             'FINS' ;
1189 :           'FINS' ;
1190 :         'FINS' ;
1191 :       'SINO' ;
1192 :         'SI' ((DCIFIJ1 '<' RLIM1) 'OU' ('NON' IDANI1)) ;
1193 :           MMATIJ1  = MMATIJ1 'COUL' 'TURQ' ;
1194 :           'SI' IPROJFI1 ;
1195 :             IJUSI1   = VRAI ;
1196 :             PPCFIJ0  = PPCFIJ0 'PLUS' (PPCFIJ1 'MOIN' PCI1) ;
1197 :           'SINO' ;
1198 :             IPROJFI1 = VRAI ;
1199 :             PPCFIJ0  = PPCFIJ1 ;
1200 :           'FINS' ;
1201 :         'FINS' ;
1202 :       'FINS' ;
1203 :     'FINS' ;
1204 : *   Stockage Surfaces Dans la table :                                  *
1205 :     'SI' IPREMJ1 ;
1206 :       IPREMJ1  = FAUX ;
1207 :       ENVMATI1 = MMATIJ1 ;
1208 :       TMPARMAT . PCI1 . 'MPT' = 'MANU' 'POI1' PCJ1 ;
1209 :     'SINO' ;
1210 :       ENVMATI1 = ENVMATI1 'ET' MMATIJ1 ;
1211 :       TMPARMAT . PCI1 . 'MPT' = TMPARMAT . PCI1 . 'MPT' 'ET' PCJ1 ;
1212 :     'FINS' ;
1213 :   'FIN' BJ1 ;
1214 : *                                                                      *
1215 : * Maillage Volumes Matrice-Particules :                                *
1216 : * -------------------------------------                                *
1217 : *                                                                      *
1218 : * Enveloppes Connexes Volumes a mailler :                              *
1219 :   'SI' IFACI1 ;
1220 :     'SI' ISOMI1 ;
1221 :       'MESS' '   - Intersections : Sommet' ;
1222 :       ENVMATI2 = ENVMATI1 'ELEM' 'DEFA' ;
1223 :       ENVPARI2 = ENVMATI2 'PROJ' 'CONI' PSOMI1 'SPHE' PCI1 PPARI1 ;
1224 :     'SINO' ;
1225 :       'SI' IAREI1 ;
1226 :         'MESS' '   - Intersections : Arete(s)' ;
1227 :       'SINO' ;
1228 :         'MESS' '   - Intersections : Face(s)' ;
1229 :       'FINS' ;
1230 :       'SI' IPROJFI1 ;
1231 :         'SI' IJUSI1 ;
1232 :           IJUSI1   = FAUX ;
1233 :           VDEPI1   = PPCFIJ0 'MOIN' PCI1 ;
1234 :           ADEPI1   = 'NORM' VDEPI1 ;
1235 :           VDEPI1   = VDEPI1 / ADEPI1 ;
1236 :           VDEPI1   = 1.05 * (ADEPI1 - DAHORI1) * VDEPI1 ;
1237 :           'TITR' ' 2x IPROJFI1 => IJUSI1' ;
1238 :           'QUIT' BDENS1 ;
1239 :         'SINO' ;
1240 :           ENVMATI2 = ENVMATI1 'DIFF' (ENVMATI1 'ELEM' 'TURQ') ;
1241 :           ENVPARI2 = ENVMATI2 'PROJ' 'CONI' PPCFIJ0 'SPHE' PCI1 PPARI1 ;
1242 :         'FINS' ;
1243 :       'SINO' ;
1244 :         'SI' IPROJAI1 ;
1245 :           ENVMATI2 = ENVMATI1 'DIFF' (ENVMATI1 'ELEM' 'ROSE') ;
1246 :           ENVPARI2 = ENVMATI2 'PROJ' 'CONI' PPCIAJ0 'SPHE' PCI1 PPARI1 ;
1247 :         'SINO' ;
1248 :           ENVPARI2 = ENVMATI1 'PROJ' 'CONI' PCI1 'SPHE' PCI1 PPARI1 ;
1249 :         'FINS' ;
1250 :       'FINS' ;
1251 :     'FINS' ;
1252 :     ENVPARI1 = ENVPARI1 'ET' ENVPARI2 ;
1253 :     'ELIM' (ENVPARI1 'ET' ENVMATI1) TOL1 ;
1254 :     'SI' IPROXI1 ;
1255 :       'MESS'
1256 : '   - ATTENTION : PROXIMITE particule-enveloppe cellule detectee' ;
1257 :       'MESS'
1258 : '     => Aplanissement zone surface particule trop proche cellule' ;
1259 :       ENVMATI3 = ENVMATI1 'ELEM' 'DEFA' ;
1260 :       ENVPARI3 = ENVPARI2 'ELEM' 'DEFA' ;
1261 :       MPASSI1  = ENVMATI3 'VOLU' 1 ENVPARI3 ;
1262 :       MPASSI1  = ('CHAN' 'LIGN' MPASSI1) 'DIFF'
1263 :         ('CHAN' 'LIGN' (ENVPARI3 'ET' ENVMATI3)) ;
1264 :       XM1 YM1 ZM1 = ENVMATI3 'COOR' ;
1265 :       XM1      = 'KPRO' XM1 MPASSI1 ;
1266 :       YM1      = 'KPRO' YM1 MPASSI1 ;
1267 :       ZM1      = 'KPRO' ZM1 MPASSI1 ;
1268 :       DX1 DY1 DZ1 = (XM1 - XCI1) (YM1 - YCI1) (ZM1 - ZCI1) ;
1269 :       DMPI1    = ((DX1 ** 2) + (DY1 ** 2) + (DZ1 ** 2)) ** 0.5 ;
1270 :       MASQI1   = DMPI1 'MASQ' 'INFE' DPROXI1 ;
1271 :       XP1 YP1 ZP1 = ENVPARI3 'COOR' ;
1272 :       XN1 YN1 ZN1 = (XP1 - XM1) (YP1 - YM1) (ZP1 - ZM1) ;
1273 :       XNXN1    = ((XN1 ** 2) + (YN1 ** 2) + (ZN1 ** 2)) ** 0.5 ;
1274 :       XN1 YN1 ZN1 = (XN1 / XNXN1) (YN1 / XNXN1) (ZN1 / XNXN1) ;
1275 :       DUI1     = (DPROXI1 - DMPI1) ;
1276 :       CHUXI1   = ((DUI1 * XN1) 'NOMC' 'UX') ;
1277 :       CHUYI1   = ((DUI1 * YN1) 'NOMC' 'UY') ;
1278 :       CHUZI1   = ((DUI1 * ZN1) 'NOMC' 'UZ') ;
1279 :       CHUXI1   = 'CHAN' 'ATTRIBUT' CHUXI1 'NATURE' 'DISCRET' ;
1280 :       CHUYI1   = 'CHAN' 'ATTRIBUT' CHUYI1 'NATURE' 'DISCRET' ;
1281 :       CHUZI1   = 'CHAN' 'ATTRIBUT' CHUZI1 'NATURE' 'DISCRET' ;
1282 :       CHUI1    = (CHUXI1 'ET' CHUYI1 'ET' CHUZI1) * MASQI1 ;
1283 :       'DEPL' ENVPARI1 'PLUS' CHUI1 ;
1284 :     'FINS' ;
1285 :     ENVMATI1 = ENVMATI1 'ET' ENVPARI2 ;
1286 : *    'ELIM' ENVMATI1 TOL1 ;
1287 :   'SINO' ;
1288 :     'MESS' '   - Intersections : AUCUNE' ;
1289 :     'SI' IDANI1 ;
1290 :       ENVPARI1 = ENVMATI1 'PROJ' 'CONI' PCI1 'SPHE' PCI1 PPARI1 ;
1291 :       PSK0     = THO7U . PCI1 . 'MAV' 'POIN' 1 ;
1292 :       ELMI1    = (ENVMATI1 'ELEM' 'APPU' 'LARG' PSK0) 'ELEM' 1 ;
1293 :       ELPI1    = ELMI1 'PROJ' 'CONI' PCI1 'SPHE' PCI1 PPARI1 ;
1294 :       'ELIM' (ELPI1 'ET' ENVPARI1) TOL1 ;
1295 : *     Si Particule proche Face Cellule (d Aplanissement zone surface particule trop proche cellule' ;
1302 :         ENVPARI3 = ENVPARI1 'DIFF' ELPI1 ;
1303 :         ENVMATI3 = ENVMATI1 'DIFF' ELMI1 ;
1304 :         MPASSI1  = ENVMATI3 'VOLU' 1 ENVPARI3 ;
1305 :         MPASSI1  = ('CHAN' 'LIGN' MPASSI1) 'DIFF'
1306 :           ('CHAN' 'LIGN' (ENVPARI3 'ET' ENVMATI3)) ;
1307 :         XM1 YM1 ZM1 = ENVMATI3 'COOR' ;
1308 :         XM1      = 'KPRO' XM1 MPASSI1 ;
1309 :         YM1      = 'KPRO' YM1 MPASSI1 ;
1310 :         ZM1      = 'KPRO' ZM1 MPASSI1 ;
1311 :         DX1 DY1 DZ1 = (XM1 - XCI1) (YM1 - YCI1) (ZM1 - ZCI1) ;
1312 :         DMPI1    = ((DX1 ** 2) + (DY1 ** 2) + (DZ1 ** 2)) ** 0.5 ;
1313 :         MASQI1   = DMPI1 'MASQ' 'INFE' DPROXI1 ;
1314 :         XP1 YP1 ZP1 = ENVPARI3 'COOR' ;
1315 :         XN1 YN1 ZN1 = (XP1 - XM1) (YP1 - YM1) (ZP1 - ZM1) ;
1316 :         XNXN1    = ((XN1 ** 2) + (YN1 ** 2) + (ZN1 ** 2)) ** 0.5 ;
1317 :         XN1 YN1 ZN1 = (XN1 / XNXN1) (YN1 / XNXN1) (ZN1 / XNXN1) ;
1318 :         DUI1     = (DPROXI1 - DMPI1) ;
1319 :         CHUXI1   = ((DUI1 * XN1) 'NOMC' 'UX') ;
1320 :         CHUYI1   = ((DUI1 * YN1) 'NOMC' 'UY') ;
1321 :         CHUZI1   = ((DUI1 * ZN1) 'NOMC' 'UZ') ;
1322 :         CHUXI1   = 'CHAN' 'ATTRIBUT' CHUXI1 'NATURE' 'DISCRET' ;
1323 :         CHUYI1   = 'CHAN' 'ATTRIBUT' CHUYI1 'NATURE' 'DISCRET' ;
1324 :         CHUZI1   = 'CHAN' 'ATTRIBUT' CHUZI1 'NATURE' 'DISCRET' ;
1325 :         CHUI1    = (CHUXI1 'ET' CHUYI1 'ET' CHUZI1) * MASQI1 ;
1326 :         'DEPL' ENVPARI3 'PLUS' CHUI1 ;
1327 :       'FINS' ;
1328 :       DENSX1   = ('MESU' ('CONT' ELMI1)) / 3. ;
1329 :       DENSX1   = 'MAXI' ('PROG' DENSX1 DENSMI1) ;
1330 :       DENSX1   = 'MINI' ('PROG' DENSX1 DENSI1) ;
1331 :       VXI1     = ELMI1 'VOLU' ELPI1 'DINI' DENSX1 'DFIN' DENSX1 ;
1332 :       VXI1     = VXI1 'CHAN' 'TET4' ;
1333 :       ENVMATI2 = (ENVMATI1 'ET' ENVPARI1) 'DIFF' ('ENVE' VXI1) ;
1334 :       ENVMATI1 = ENVMATI1 'ET' ENVPARI1 ;
1335 :       'ELIM' ENVMATI1 TOL1 ;
1336 :     'SINO' ;
1337 :       IPARI1   = FAUX ;
1338 :     'FINS' ;
1339 :   'FINS' ;
1340 : *                                                                      *
1341 : * Maillage Volume Matrice :                                            *
1342 :   'OPTI' 'ERRE' 'CONT' ;
1343 :   'SI' (IFACI1 'OU' ('NON' IPARI1)) ;
1344 :     MMATI1   = ('VOLU' ENVMATI1) 'COUL' 'OLIV' ;
1345 :   'SINO' ;
1346 :     MMATI1   = (('VOLU' ENVMATI2) 'ET' VXI1) 'COUL' 'OLIV' ;
1347 :   'FINS' ;
1348 :   'OPTI' 'ERRE' 'NORM' ;
1349 : * Test Resultat Volu :                                                 *
1350 :   IANNULV1 = 'EGA' ('TYPE' MMATI1) 'ANNULE' ;
1351 :   'SI' IANNULV1 ;
1352 :     'MESS' ' ##### ECHEC Maillage Volume Matrice (ANNULE) !' ;
1353 :   'SINO' ;
1354 : *   Test sur Enveloppes Resultat :                                     *
1355 :     MTESTI1  = ('ENVE' MMATI1) 'DIFF' ENVMATI1 ;
1356 :     'SI' ((NBNO MTESTI1) 'NEG' 0) ;
1357 :       'MESS' ' ##### ECHEC Maillage Volume Matrice !' ;
1358 :     'SINO' ;
1359 :       TMPARMAT . PCI1 . 'MATR' = MMATI1 ;
1360 :       IAFAIR1  = FAUX ;
1361 :     'FINS' ;
1362 :   'FINS' ;
1363 : *                                                                      *
1364 : * Maillage Volume Particule :                                          *
1365 :   'SI' IPARI1 ;
1366 :     'OPTI' 'ERRE' 'CONT' ;
1367 :     MPARI1   = ('VOLU' ENVPARI1) 'COUL' 'ORAN' ;
1368 :     'OPTI' 'ERRE' 'NORM' ;
1369 : *   Test Resultat Volu :                                               *
1370 :     IANNULV2 = 'EGA' ('TYPE' MPARI1) 'ANNULE' ;
1371 :     'SI' IANNULV2 ;
1372 :       'MESS' ' ##### ECHEC Maillage Volume particule (ANNULE) ' ;
1373 :     'SINO' ;
1374 : *     Test sur Enveloppes Resultat :                                   *
1375 :       MTESTI1  = ('ENVE' MPARI1) 'DIFF' ENVPARI1 ;
1376 :       'SI' ((NBNO MTESTI1) 'NEG' 0) ;
1377 :         'MESS' ' ##### ECHEC Maillage Volume particule ' ;
1378 :         IAFAIR1  = VRAI ;
1379 :       'SINO' ;
1380 :         TMPARMAT . PCI1 . 'PART' = MPARI1 ;
1381 :         IAFAIR1  = IAFAIR1 'OU' FAUX ;
1382 :       'FINS' ;
1383 :     'FINS' ;
1384 :     IANNULV1 = IANNULV1 'OU' IANNULV2 ;
1385 :   'FINS' ;
1386 : *                                                                      *
1387 :   'SI' ('NON' IAFAIR1) ;
1388 :     MOT1     = 'CHAI'
1389 :       ' ***** Particule No ' &BI1 ' / ' NBI1 ' : maillage REUSSI !' ;
1390 :     'MESS' MOT1 ;
1391 :     'QUIT' BDENS1 ;
1392 :   'SINO' ;
1393 :     MOT1     = 'CHAI'
1394 :       ' ##### Particule No ' &BI1 ' / ' NBI1 ' : maillage ECHOUE !' ;
1395 :     'MESS' MOT1 ;
1396 :     'SAUT' 1 'LIGN' ;
1397 :   'FINS' ;
1398 : *                                                                      *
1399 :   'FIN' BDENS1 ;
1400 : *                                                                      *
1401 :   'SI' IAFAIR1 ;
1402 :     'SI' (&BPOSI1 '>' 1) ;
1403 :       'DEPL' PCI1 'MOIN' VDEPI0 ;
1404 :     'FINS' ;
1405 :     'SI' (&BPOSI1 'EGA' NBPOSI1) ;
1406 :       'QUIT' BPOSI1 ;
1407 :     'FINS' ;
1408 :     IPERI1   = VRAI ;
1409 :     'SI' IJUSI1 ;
1410 :       'MESS'
1411 : '   - ATTENTION : Intersection PAS ASSEZ FRANCHE detectee' ;
1412 :         'MESS'
1413 : '     => Deplacement position particule' ;
1414 :       VDEPI1   = ('FLOT' &BPOSI1) * VDEPI1 ;
1415 :       PCI0     = PCI1 'PLUS' VDEPI1 ;
1416 :       IOKAY1   = VRAI ;
1417 :       'REPE' BJ1 NBJ1 ;
1418 :         PCJ0     = MPTI1 'POIN' &BJ1 ;
1419 :         'SI' (PCJ0 'DANS' MPOI1) ;
1420 :           'SI' (('NORM' (PCJ0 'MOIN' PCI0)) '<EG' DREP1) ;
1421 :             IOKAY1   = FAUX ;
1422 :             'QUIT' BJ1 ;
1423 :           'FINS' ;
1424 :         'FINS' ;
1425 :       'FIN' BJ1 ;
1426 :       'SI' IOKAY1 ;
1427 :         IPERI1   = FAUX ;
1428 :       'SINO' ;
1429 :         'MESS'
1430 : '   - ATTENTION : Deplacement calcule NON VALIDE ' ;
1431 :       'FINS' ;
1432 :     'SINO' ;
1433 :       'MESS'
1434 : '   - ATTENTION : ECHEC realisation maillage ' ;
1435 :     'FINS' ;
1436 :     'SI' IPERI1 ;
1437 :       'TITR' ' Perturbation position ' ;
1438 :       'MESS'
1439 : '     => Perturbation aleatoire position particule' ;
1440 :       NBPERT1  = NBI1 - NPERTI1 ;
1441 :       'SI' (NBPERT1 '<EG' 1) ;
1442 :         'QUIT' BPOSI1 ;
1443 :       'FINS' ;
1444 :       'REPE' BPERT1 NBPERT1 ;
1445 :         NPERTI1  = NPERTI1 + 1 ;
1446 :         PHII1    = XLPHI1 'EXTR' NPERTI1 ;
1447 :         THEI1    = XLTHE1 'EXTR' NPERTI1 ;
1448 :         XVDEPI1  = ('COS' PHII1) * ('COS' THEI1) ;
1449 :         YVDEPI1  = ('COS' PHII1) * ('SIN' THEI1) ;
1450 :         ZVDEPI1  = ('SIN' PHII1) ;
1451 :         VDEPI1   = XVDEPI1 YVDEPI1 ZVDEPI1 ;
1452 :         AMPI1    = XLAMP1 'EXTR' NPERTI1 ;
1453 :         'SI' (&BPOSI1 '>' 5) ;
1454 :           AMPI1    = ('FLOT' &BPOSI1) * AMPI1 ;
1455 :         'FINS' ;
1456 :         VDEPI1   = AMPI1 * VDEPI1 ;
1457 :         PCI0     = PCI1 'PLUS' VDEPI1 ;
1458 :         IOKAY1   = VRAI ;
1459 :         'REPE' BJ1 NBJ1 ;
1460 :           PCJ0     = MPTI1 'POIN' &BJ1 ;
1461 :           'SI' (PCJ0 'DANS' MPOI1) ;
1462 :             'SI' (('NORM' (PCJ0 'MOIN' PCI0)) '<EG' DREP1) ;
1463 :               IOKAY1   = FAUX ;
1464 :               'QUIT' BJ1 ;
1465 :             'FINS' ;
1466 :           'FINS' ;
1467 :         'FIN' BJ1 ;
1468 :         'SI' IOKAY1 ;
1469 :           'MESS'
1470 : '     i) Perturbation reussie apres ' &BPERT1 ' essai(s)' ;
1471 :           'QUIT' BPERT1 ;
1472 :         'FINS' ;
1473 :       'FIN' BPERT1 ;
1474 :     'FINS' ;
1475 : PCI0 = PCI1 Plus VDEPI1 ;
1476 :     'DEPL' PCI1 'PLUS' VDEPI1 ;
1477 :     VDEPI0   = VDEPI1 ;
1478 :   'SINO' ;
1479 :     'QUIT' BPOSI1 ;
1480 :   'FINS' ;
1481 :   'FIN' BPOSI1 ;
1482 : *                                                                      *
1483 : *--------------------------- Fin Maillage -----------------------------*
1484 : *                                                                      *
1485 :   'SI' IAFAIR1 ;
1486 :     'SAUT' 1 'LIGN' ;
1487 :     'MESS' '   - ATTENTION : ECHEC perturbations ' ;
1488 :     'SI' ('NON' IANNULV1) ;
1489 :       PSK1   = THO7U . PCI1 . 'MAV' 'POIN' 1 ;
1490 :       PSK2   = THO7U . PCI1 . 'MAV' 'POIN' 2 ;
1491 :       'TRAC' 'NCLK' 'FACE' (MMATI1 'ET' MPARI1) 'COUP' PCI1 PSK1 PSK2 ;
1492 :     'FINS' ;
1493 :     ISTOP1   = FAUX ;
1494 :     IESSA1   = VRAI ;
1495 :     'SI' FAUX ;
1496 : *    'SI' ('NEG' ('VALE' 'TRAC') 'PSC') ;
1497 :       ISTOP1 IESSA1 = 'CHOI'
1498 :       ' Erreur maillage : STOPer ou ESSAyer a nouveau ?' ISTOP1 IESSA1 ;
1499 :     'FINS' ;
1500 :     'SI' ISTOP1 ;
1501 :       'MESS' ' ****** ARET OPERATION MAILLAGE !!!' ;
1502 :       'QUIT' BESSA1 ;
1503 :     'SINO' ;
1504 :       'SI' IESSA1 ;
1505 :     'MESS'
1506 : '     => Re-initialisation du schema ' ;
1507 :         MPOI0   = MPOI1 'DIFF' ('MANU' 'POI1' PCI1) ;
1508 :         MPOI1   = PCI1 'ET' MPOI0 ;
1509 :         'ITER' BESSA1 ;
1510 :       'SINO' ;
1511 :         'ITER' BI1 ;
1512 :       'FINS' ;
1513 :     'FINS' ;
1514 :   'SINO' ;
1515 :     'SI' IPARI1 ;
1516 :       MTOTI1   = MMATI1 'ET' MPARI1 ;
1517 :     'SINO' ;
1518 :       MTOTI1   = MMATI1 ;
1519 :     'FINS' ;
1520 :     TMPARMAT . PCI1 . 'MAIL' = MTOTI1 ;
1521 :     'SI' IPREMI1 ;
1522 :       IPREMI1  = FAUX ;
1523 :       TMPARMAT . 'MPCP' = 'MANU' 'POI1' PCI1 ;
1524 :       TMPARMAT . 'MATR' = MMATI1 ;
1525 :       'SI' IPARI1 ;
1526 :         TMPARMAT . 'PART' = MPARI1 ;
1527 :       'FINS' ;
1528 :       TMPARMAT . 'MAIL' = MTOTI1 ;
1529 :     'SINO' ;
1530 :       TMPARMAT . 'MPCP' = TMPARMAT . 'MPCP' 'ET' PCI1 ;
1531 :       TMPARMAT . 'MATR' = TMPARMAT . 'MATR'  'ET' MMATI1 ;
1532 :       'SI' IPARI1 ;
1533 :         'SI' ('EXIS' TMPARMAT 'PART') ;
1534 :           TMPARMAT . 'PART' = TMPARMAT . 'PART'  'ET' MPARI1 ;
1535 :         'SINO' ;
1536 :           TMPARMAT . 'PART' = MPARI1 ;
1537 :         'FINS' ;
1538 :       'FINS' ;
1539 :       TMPARMAT . 'MAIL' = TMPARMAT . 'MAIL'  'ET' MTOTI1 ;
1540 :     'FINS' ;
1541 :     'SI' (&BI1 'EGA' NBI1) ;
1542 :       'QUIT' BESSA1 ;
1543 :     'FINS' ;
1544 :   'FINS' ;
1545 : *                                                                      *
1546 : 'FIN' BI1 ;
1547 : 'FIN' BESSA1 ;
1548 : MPAR1    = TMPARMAT . 'PART' ;
1549 : MMAT1    = TMPARMAT . 'MATR' ;
1550 : MTOT1    = TMPARMAT . 'MAIL' ;
1551 : 'ELIM' MTOT1 TOL1 ;
1552 : *                                                                      *
1553 : * Test Conformite Maillage Total :                                     *
1554 : X1 Y1 Z1 = MTOT1 'COOR' ;
1555 : MPFCB1   = (X1 'POIN' 'INFE' TOL1) 'ET' (X1 'POIN' 'SUPE' (1. - TOL1))
1556 :       'ET' (Y1 'POIN' 'INFE' TOL1) 'ET' (Y1 'POIN' 'SUPE' (1. - TOL1))
1557 :       'ET' (Z1 'POIN' 'INFE' TOL1) 'ET' (Z1 'POIN' 'SUPE' (1. - TOL1)) ;
1558 : ENVTOT1  = 'ENVE' MTOT1 ;
1559 : MSTOT1   = ENVTOT1 'ELEM' 'APPU' 'STRI' MPFCB1 ;
1560 : MTEST1   = ENVTOT1 'DIFF' MSTOT1 ;
1561 : *                                                                      *
1562 : 'SI' (((NBNO MTEST1) + ('NBEL' MTEST1)) 'EGA' 0) ;
1563 :   'SAUT' 1 'LIGN' ;
1564 :   'MESS'
1565 : '-------------------------- MAILLAGE REUSSI --------------------------'
1566 :     ;
1567 :   'SAUT' 1 'LIGN' ;
1568 :   'SI' ITRA1 ;
1569 :     FVOL     = 100. * ('MESU' MPAR1) / ('MESU' MTOT1) ;
1570 :     'TITR' ('CHAI' ' Maillage (Fvol = ' 'FORMAT' '(F5.1)' FVOL ' %) : '
1571 :       (NBNO TMPARMAT . 'MPCP') ' Particules / '
1572 :       (NBNO MTOT1) ' Noeuds / '
1573 :       ('NBEL' MTOT1) ' Elements') ;
1574 :     'TRAC' 'FACE' (MACB1 'ET' MMAT1) ;
1575 :     'TRAC' 'FACE' (MACB1 'ET' MPAR1) ;
1576 :     'TRAC' 'FACE' (MACB1 'ET' MTOT1) ;
1577 :   'FINS' ;
1578 : 'SINO' ;
1579 :   'SAUT' 1 'LIGN' ;
1580 :   'MESS'
1581 : '########################## MAILLAGE ECHOUE ##########################'
1582 :     ;
1583 :   'SAUT' 1 'LIGN' ;
1584 :   'SI' ITRA1 ; 'TRAC' (MSTOT1 'ET' (MTEST1 'COUL' 'ROSE')) ; 'FINS' ;
1585 : 'FINS' ;
1586 : *                                                                      *
1587 : 'FINP' TMPARMAT ;
1588 : *-------------------- FIN DE LA PROCEDURE INCLUSIO --------------------*
1589 :  

© Cast3M 2003 - All rights reserved.
Disclaimer