Salome HOME
Homard executable
[modules/homard.git] / src / tool / ES_MED / eslmno.F
1       subroutine eslmno ( idfmed, nomamd,
2      >                    option,
3      >                    nbnoto, sdim, coonno, fameno,
4      >                    ulsort, langue, codret )
5 c ______________________________________________________________________
6 c
7 c                             H O M A R D
8 c
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c
17 c    HOMARD est une marque deposee d'Electricite de France
18 c
19 c Copyright EDF 1996
20 c Copyright EDF 1998
21 c Copyright EDF 2002
22 c Copyright EDF 2020
23 c ______________________________________________________________________
24 c
25 c  Entree-Sortie - Lecture d'un Maillage au format MED - NOeuds
26 c  -      -        -            -                        --
27 c ______________________________________________________________________
28 c .        .     .        .                                            .
29 c .  nom   . e/s . taille .           description                      .
30 c .____________________________________________________________________.
31 c . idfmed . e   .   1    . identificateur du fichier de               .
32 c .        .     .        . maillage de sortie                         .
33 c . nomamd . e   . char64 . nom du maillage MED                        .
34 c . option . e   .    1   . option de lecture du maillage              .
35 c .        .     .        . 1 : lecture integrale                      .
36 c .        .     .        . 2 : uniquement les coordonnees des noeuds  .
37 c . nbnoto . e   .   1    . nombre de noeuds                           .
38 c . sdim   . e   .   1    . dimension                                  .
39 c . coonno . e   . nbnoto . coordonnees des noeuds dans le calcul      .
40 c .        .     . *sdim  .                                            .
41 c . fameno . e   . nbnoto . famille des noeuds                         .
42 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
43 c . langue . e   .    1   . langue des messages                        .
44 c .        .     .        . 1 : francais, 2 : anglais                  .
45 c . codret . es  .    1   . code de retour des modules                 .
46 c .        .     .        . 0 : pas de probleme                        .
47 c .        .     .        . 1 : probleme                               .
48 c ______________________________________________________________________
49 c
50 c====
51 c 0. declarations et dimensionnement
52 c====
53 c
54 c 0.1. ==> generalites
55 c
56       implicit none
57       save
58 c
59       character*6 nompro
60       parameter ( nompro = 'ESLMNO' )
61 c
62 #include "nblang.h"
63 #include "consts.h"
64 c
65 c 0.2. ==> communs
66 c
67 #include "envex1.h"
68 c
69 c 0.3. ==> arguments
70 c
71       integer option
72 c
73       integer*8 idfmed
74       integer nbnoto, sdim
75       integer fameno(nbnoto)
76 c
77       character*64 nomamd
78 c
79       double precision coonno(nbnoto,sdim)
80 c
81       integer ulsort, langue, codret
82 c
83 c 0.4. ==> variables locales
84 c
85 #include "meddc0.h"
86 c
87       integer iaux
88       integer typnoe
89       integer numdt, numit
90       integer datype, chgt, tsf
91       integer nbfami
92 c
93       integer nbmess
94       parameter ( nbmess = 150 )
95       character*80 texte(nblang,nbmess)
96 c ______________________________________________________________________
97 c
98 c====
99 c 1. initialisations
100 c====
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 "esimpr.h"
110 c
111       texte(1,61) = '(''Coordonnees des'',i10,'' noeuds.'')'
112       texte(1,62) = '(''Familles des'',i10,'' noeuds.'')'
113       texte(1,63) = '(''Toutes les familles sont nulles.'')'
114 c
115       texte(2,61) = '(''Coordinates of the'',i10,'' nodes.'')'
116       texte(2,62) = '(''Families of the'',i10,'' nodes.'')'
117       texte(2,63) = '(''All the families are 0.'')'
118 c
119 #include "impr03.h"
120 c
121 #ifdef _DEBUG_HOMARD_
122       write (ulsort,90002) 'option', option
123 #endif
124 c
125       codret = 0
126 c
127       numdt = ednodt
128       numit = ednoit
129 c
130 c====
131 c 2. les coordonnees des noeuds
132 c    . les unites
133 c    . les coordonnees
134 c    . les numeros des familles
135 c    le tableau coonno est declare ainsi : coonno(nbnoto,sdim).
136 c    En fortran, cela correspond au stockage memoire suivant :
137 c    coonno(1,1), coonno(2,1), coonno(3,1), ..., coonno(nbnoto,1),
138 c    coonno(1,2), coonno(2,2), coonno(3,2), ..., coonno(nbnoto,2),
139 c    ...
140 c    coonno(1,sdim), coonno(2,sdim), ..., coonno(nbnoto,sdim)
141 c    on a ainsi toutes les abscisses, puis toutes les ordonnees, etc.
142 c    C'est ce que MED appelle le mode non entrelace.
143 c====
144 c
145       if ( codret.eq.0 ) then
146 c
147 #ifdef _DEBUG_HOMARD_
148       write (ulsort,texte(langue,3)) 'MMHCOR', nompro
149 #endif
150       call mmhcor ( idfmed, nomamd, numdt, numit,
151      >              ednoin, coonno, codret )
152 c
153       endif
154 c
155 c====
156 c 3. Les familles de noeuds
157 c    Par convention, si le tableau est absent, les familles sont
158 c    toutes nulles.
159 c====
160 #ifdef _DEBUG_HOMARD_
161       write (ulsort,90002) '3. familles de noeuds ; codret', codret
162 #endif
163 c
164       if ( option.eq.1 ) then
165 c
166 c 3.1. ==> Longueur du tableau des familles
167 c
168       if ( codret.eq.0 ) then
169 c
170       typnoe = 0
171       datype = edda04
172 #ifdef _DEBUG_HOMARD_
173       write (ulsort,texte(langue,3)) 'MMHNME', nompro
174 #endif
175       call mmhnme ( idfmed, nomamd, numdt, numit,
176      >              ednoeu, typnoe, datype, ednoda, chgt, tsf,
177      >              nbfami, codret )
178 c
179       endif
180 c
181 c 3.2. ==> Remplissage du tableau
182 c 3.2.1. ==> 0 par defaut
183 c
184       if ( nbfami.eq.0 ) then
185 c
186         if ( codret.eq.0 ) then
187 c
188 #ifdef _DEBUG_HOMARD_
189       write (ulsort,texte(langue,63))
190 #endif
191 c
192         do 32 , iaux = 1 , nbnoto
193           fameno(iaux) = 0
194    32   continue
195 c
196         endif
197 c
198       else
199 c
200 c 3.2.2. ==> lecture
201 c
202         if ( codret.eq.0 ) then
203 c
204 #ifdef _DEBUG_HOMARD_
205       write (ulsort,texte(langue,3)) 'MMHFNR', nompro
206 #endif
207         call mmhfnr ( idfmed, nomamd, numdt, numit,
208      >                ednoeu, typnoe,
209      >                fameno, codret )
210 c
211         endif
212 c
213       endif
214 c
215       endif
216 c
217 c====
218 c 4. la fin
219 c====
220 c
221       if ( codret.ne.0 ) then
222 c
223 #include "envex2.h"
224 c
225       write (ulsort,texte(langue,1)) 'Sortie', nompro
226       write (ulsort,texte(langue,2)) codret
227       if ( codret.ge.61 .and. codret.le.62 ) then
228         write (ulsort,texte(langue,codret)) nbnoto
229       endif
230       write (ulsort,texte(langue,80))
231 c
232       endif
233 c
234 #ifdef _DEBUG_HOMARD_
235       write (ulsort,texte(langue,1)) 'Sortie', nompro
236       call dmflsh (iaux)
237 #endif
238 c
239       end