]> SALOME platform Git repositories - modules/homard.git/blob - src/tool/Decision/deitrd.F
Salome HOME
Copyright update 2022
[modules/homard.git] / src / tool / Decision / deitrd.F
1       subroutine deitrd ( nivmin,
2      >                    decare, decfac,
3      >                    aretri, hettri, filtri, nivtri,
4      >                    trsupp, trindi,
5      >                    ulsort, langue, codret)
6 c ______________________________________________________________________
7 c
8 c                             H O M A R D
9 c
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c
18 c    HOMARD est une marque deposee d'Electricite de France
19 c
20 c Copyright EDF 1996
21 c Copyright EDF 1998
22 c Copyright EDF 2002
23 c Copyright EDF 2020
24 c ______________________________________________________________________
25 c
26 c traitement des DEcisions - Initialisation de l'indicateur entier
27 c                --          -
28 c                          - cas des TRiangles - Deraffinement
29 c                                    --          -
30 c ______________________________________________________________________
31 c .        .     .        .                                            .
32 c .  nom   . e/s . taille .           description                      .
33 c .____________________________________________________________________.
34 c . nivmin . e   .   1    . niveau min a ne pas depasser en deraffinemt.
35 c . decare .  s  .0:nbarto. decisions des aretes                       .
36 c . decfac .  s  . -nbquto. decision sur les faces (quad. + tri.)      .
37 c .        .     . :nbtrto.                                            .
38 c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
39 c . hettri . e   . nbtrto . historique de l'etat des triangles         .
40 c . filtri . e   . nbtrto . premier fils des triangles                 .
41 c . nivtri . e   . nbtrto . niveau des triangles                       .
42 c . trsupp . e   . nbtrto . support pour les triangles                 .
43 c . trindi . e   . nbtrto . valeurs entieres pour les triangles        .
44 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
45 c . langue . e   .    1   . langue des messages                        .
46 c .        .     .        . 1 : francais, 2 : anglais                  .
47 c . codret . es  .    1   . code de retour des modules                 .
48 c .        .     .        . 0 : pas de probleme                        .
49 c .        .     .        . 2 : probleme dans le traitement            .
50 c ______________________________________________________________________
51 c
52 c====
53 c 0. declarations et dimensionnement
54 c====
55 c
56 c 0.1. ==> generalites
57 c
58       implicit none
59       save
60 c
61       character*6 nompro
62       parameter ( nompro = 'DEITRD' )
63 c
64 #include "nblang.h"
65 c
66 c 0.2. ==> communs
67 c
68 #include "envex1.h"
69 #include "nombar.h"
70 #include "nombtr.h"
71 #include "nombqu.h"
72 #include "impr02.h"
73 c
74 c 0.3. ==> arguments
75 c
76       integer nivmin
77       integer decare(0:nbarto), decfac(-nbquto:nbtrto)
78       integer aretri(nbtrto,3), hettri(nbtrto), filtri(nbtrto)
79       integer nivtri(nbtrto)
80       integer trsupp(nbtrto), trindi(nbtrto)
81 c
82       integer ulsort, langue, codret
83 c
84 c 0.4. ==> variables locales
85 c
86       integer areloc, etat
87       integer letria
88       integer fille1
89       integer iaux
90 c
91       integer nbmess
92       parameter (nbmess = 30 )
93       character*80 texte(nblang,nbmess)
94 c ______________________________________________________________________
95 c
96 c====
97 c 1. initialisation
98 c====
99 c
100 c 1.1. ==> Les messages
101 c
102 #include "impr01.h"
103 c
104 #ifdef _DEBUG_HOMARD_
105       write (ulsort,texte(langue,1)) 'Entree', nompro
106       call dmflsh (iaux)
107 #endif
108 c
109 #include "impr05.h"
110 #include "derco1.h"
111 c
112       codret = 0
113 c
114 c====
115 c 2. traitement des indicateurs portant sur les triangles
116 c====
117 c
118 #ifdef _DEBUG_HOMARD_
119       write(ulsort,texte(langue,4)) mess14(langue,3,2)
120 #endif
121 cgn      write(ulsort,*)'trindi :'
122 cgn      write(ulsort,1789)(letria, trindi(letria),letria = 1, nbtrto)
123 cgn 1789   format(5(i3,' : ',i4,', '))
124 c
125 #ifdef _DEBUG_HOMARD_
126       write(ulsort,texte(langue,6))
127 #endif
128 c
129       iaux = 0
130 c
131       do 21 , letria = 1, nbtrto
132 c
133         etat = mod(hettri(letria),10)
134         if ( etat.eq.4 .or.
135      >       etat.eq.6 .or. etat.eq.7 .or. etat.eq.8 ) then
136 #ifdef _DEBUG_HOMARD_
137       write (ulsort,*) 'tria ',letria,', etat = ',etat
138 #endif
139           fille1 = filtri(letria)
140           if ( trsupp(fille1)  .ne.0 .and.
141      >         trsupp(fille1+1).ne.0 .and.
142      >         trsupp(fille1+2).ne.0 .and.
143      >         trsupp(fille1+3).ne.0 ) then
144             if ( trindi(fille1)  .eq.-1  .and.
145      >           trindi(fille1+1).eq.-1 .and.
146      >           trindi(fille1+2).eq.-1 .and.
147      >           trindi(fille1+3).eq.-1 ) then
148               if ( nivtri(letria).lt.nivmin ) then
149                 iaux = iaux + 4
150               else
151                 decfac(letria) = -1
152 #ifdef _DEBUG_HOMARD_
153       write (ulsort,texte(langue,30))'decfac',
154      >letria,decfac(letria),' '
155 #endif
156                 do 22 , areloc = 1, 3
157                   decare(aretri(letria,areloc)) = -1
158 #ifdef _DEBUG_HOMARD_
159       write (ulsort,texte(langue,30))'decare',aretri(letria,areloc),
160      >  decare(aretri(letria,areloc)),' (une de ses aretes)'
161 #endif
162    22           continue
163               endif
164             endif
165           endif
166         endif
167 c
168    21 continue
169 c
170 cgn      write(ulsort,*)'a la fin de 3.1'
171 cgn      write(ulsort,*)'decfac :'
172 cgn      write(ulsort,1789)(letria, decfac(letria),letria = 1, nbtrto)
173 c
174       if ( iaux.ne.0 ) then
175         write(ulsort,texte(langue,10))
176         write(ulsort,texte(langue,4)) mess14(langue,3,2)
177         write(ulsort,texte(langue,8)) nivmin
178         write(ulsort,texte(langue,9)) iaux
179       endif
180 c
181 c====
182 c 3. la fin
183 c====
184 c
185       if ( codret.ne.0 ) then
186 c
187 #include "envex2.h"
188 c
189       write (ulsort,texte(langue,1)) 'Sortie', nompro
190       write (ulsort,texte(langue,2)) codret
191 c
192       endif
193 c
194 #ifdef _DEBUG_HOMARD_
195       write (ulsort,texte(langue,1)) 'Sortie', nompro
196       call dmflsh (iaux)
197 #endif
198 c
199       end