subroutine utsuar ( disare, > hetare, merare, filare, > ancare, nouare, > nbarre ) c ______________________________________________________________________ c c H O M A R D c c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D c c Version originale enregistree le 18 juin 1996 sous le numero 96036 c aupres des huissiers de justice Simart et Lavoir a Clamart c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014 c aupres des huissiers de justice c Lavoir, Silinski & Cherqui-Abrahmi a Clamart c c HOMARD est une marque deposee d'Electricite de France c c Copyright EDF 1996 c Copyright EDF 1998 c Copyright EDF 2002 c Copyright EDF 2020 c ______________________________________________________________________ c c UTilitaire - SUppression des ARetes c -- -- -- c ______________________________________________________________________ c c Attention : toutes les aretes n'ont pas forcement une mere ! c celles crees en interne a des tetraedres/triangles c sont de la premiere generation, meme si elles c sont a des niveaux > 1 c ______________________________________________________________________ c . . . . . c . nom . e/s . taille . description . c .____________________________________________________________________. c . disare . e . nouvar . indicateurs de disparition des aretes . c . hetare . es . nouvar . historique de l'etat des aretes . c . merare . es . nouvar . mere des aretes . c . filare . es . nouvar . premiere fille des aretes . c . ancare . s . nouvar . anciens numeros des aretes conservees . c . nouare . s .0:nouvar. nouveaux numeros des aretes conservees . c . nbarre . s . 1 . nombre d'aretes restantes . c ______________________________________________________________________ c c==== c 0. declarations et dimensionnement c==== c c 0.1. ==> generalites c implicit none save c cgn character*6 nompro cgn parameter ( nompro = 'UTSUAR' ) c c 0.2. ==> communs c #include "nombar.h" #include "nouvnb.h" c c 0.3. ==> arguments c integer hetare(nouvar), merare(nouvar), filare(nouvar) integer disare(nouvar), ancare(nouvar) integer nouare(0:nouvar) integer nbarre c c 0.4. ==> variables locales c integer larete, lamere, gdmere, etgmer integer cmptr, e1, e2, et c ______________________________________________________________________ c c==== c 1. fabrication des tableaux ancare et nouare c==== c cmptr = 0 nouare(0) = 0 c c 1.1 generation des tableaux reciproques c do 100 , larete = 1 , nbarpe c if ( disare(larete).ne.0 ) then c nouare(larete) = 0 hetare(larete) = 10 * int( hetare(larete) / 10 ) + 5 c else c cmptr = cmptr + 1 ancare(cmptr) = larete nouare(larete) = cmptr c endif c 100 continue c c 1.2 nombre d'entites restantes apres suppression c (pour la remise a jour du nombre d'entites du maillage) c nbarre = cmptr c c==== c 2. modification des etats des meres eventuelles des aretes disparues c==== c do 200 , larete = 1 , nbarpe c if ( disare(larete).ne.0 ) then c c mise a zero de l'etat actuel de la mere c lamere = merare(larete) c if ( lamere.ne.0 ) then hetare(lamere) = hetare(lamere) - mod(hetare(lamere),10) endif c endif c 200 continue c c==== c 3. modification des etats des eventuelles grand-meres des aretes c==== c do 300 , larete = 1 , nbarpe c if ( disare(larete).ne.0 ) then c lamere = merare(larete) c if ( lamere.ne.0 ) then c gdmere = merare(lamere) c if ( gdmere.ne.0 ) then c c 3.1 verification de l'etat de la grand-mere c etgmer = mod( hetare(gdmere) , 10 ) c if ( etgmer.ne.2 ) then c c 3.1.1 verification de l'etat des soeurs de la mere c e1 = mod( hetare(filare(gdmere)) , 10 ) e2 = mod( hetare(filare(gdmere)+1) , 10 ) et = e1 + e2 c c 3.1.2 attribution de l'etat 'coupee en 2' a l'entite c if ( et .eq. 0 ) then hetare(gdmere) = hetare(gdmere) > - mod(hetare(gdmere),10) > + 2 endif c endif c endif c endif c endif c 300 continue c end