MED fichier: Fichier source de test11.f90

MED fichier

- Documentation MED
- Guides d'utilisation
- Guides de référence

test11.f90
Aller à la documentation de ce fichier.
1 !* This file is part of MED.
2 !*
3 !* COPYRIGHT (C) 1999 - 2019 EDF R&D, CEA/DEN
4 !* MED is free software: you can redistribute it and/or modify
5 !* it under the terms of the GNU Lesser General Public License as published by
6 !* the Free Software Foundation, either version 3 of the License, or
7 !* (at your option) any later version.
8 !*
9 !* MED is distributed in the hope that it will be useful,
10 !* but WITHOUT ANY WARRANTY; without even the implied warranty of
11 !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 !* GNU Lesser General Public License for more details.
13 !*
14 !* You should have received a copy of the GNU Lesser General Public License
15 !* along with MED. If not, see <http://www.gnu.org/licenses/>.
16 !*
17
18
19 ! ******************************************************************************
20 ! * - Nom du fichier : test11.f90
21 ! *
22 ! * - Description : lecture de champs de resultats MED
23 ! *
24 ! *****************************************************************************
25
26 program test11
27
28 implicit none
29 include 'med.hf90'
30
31
32 integer*8 fid
33 integer cret,ret,lret,retmem
34 integer USER_INTERLACE,USER_MODE
35 character*64 :: maa,nomcha,pflname,nomlien,locname
36 character*200 desc
37 character*255 argc
38 character*16, allocatable, dimension(:) :: comp,unit
39 character*16 dtunit
40 integer mdim,ncomp,ncha,npro,nln,pflsize,nval
41 integer, allocatable, dimension(:) :: pflval
42 integer ngauss,nloc
43 integer t1,t2,t3,typcha,type,type_geo
44 real*8, allocatable, dimension(:) :: refcoo, gscoo, wg
45 character*255 lien
46 integer i,j
47 integer getFieldsOn
48 integer nstep, stype, atype,sdim
49 character*16 nomcoo(3)
50 character*16 unicoo(3)
51 integer lmesh, ncst
52 character*64 :: giname, isname
53 integer nsmc, sgtype
54
55 parameter(user_interlace = med_full_interlace)
56 parameter(user_mode = med_compact_pflmode)
57
58 cret=0;ret=0;lret=0;retmem=0
59 print *,"Indiquez le fichier med a decrire : "
60 !!read(*,'(A)') argc
61 argc="test10.med"
62
63 ! ** ouverture du fichier **
64 call mfiope(fid,argc,med_acc_rdonly, ret)
65 if (ret .ne. 0) call efexit(-1)
66
67 ! ** info sur le premier maillage **
68 if (ret.eq.0) then
69 call mmhmii(fid,1,maa,sdim,mdim,type,desc,dtunit,stype,nstep,atype,nomcoo,unicoo,ret)
70 endif
71 if (ret.ne.0) then
72 print *, "Erreur a la lecture des informations sur le maillage : ", &
73 & maa,mdim,type,desc
74 call efexit(-1)
75 endif
76
77 write (*,'(/A,A,A,I1)') "Maillage de nom |",trim(maa),"| et de dimension ",mdim
78
79 ! ** combien de champs dans le fichier **
80 call mfdnfd(fid,ncha,ret)
81 if (ret.ne.0) then
82 print *, "Impossible de lire le nombre de champs : ",ncha
83 call efexit(-1)
84 endif
85
86 write (*,'(A,I1/)') "Nombre de champs : ",ncha
87
88
89 ! ** lecture de tous les champs associes a <maa> **
90 do i=1,ncha
91 lret = 0
92 write(*,'(A,I5)') "- Champ numero : ",i
93
94 ! ** combien de composantes **
95 call mfdnfc(fid,i,ncomp,ret)
96 ! print *,ncomp,ret
97 if (ret.ne.0) then
98 print *, "Erreur a la lecture du nombre de composantes : ",ncomp
99 cret = -1
100 endif
101
102 ! ** allocation memoire de comp et unit **
103 allocate(comp(ncomp),unit(ncomp),stat=retmem)
104 if (retmem .ne. 0) then
105 print *, "Erreur a l'allocation mémoire de comp et unit : "
106 call efexit(-1)
107 endif
108
109 ! ** Info sur les champs
110 call mfdfdi(fid,i,nomcha,maa,lmesh,typcha,comp,unit,dtunit,ncst,ret)
111 if (ret .ne. 0) then
112 print *, "Erreur a la demande d'information sur les champs : ",nomcha,typcha,comp,unit,ncomp,ncst
113 cret = -1
114 continue
115 endif
116
117 write(*,'(/5X,A,A)') 'Nom du champ : ', trim(nomcha)
118 write(*,'(/5X,A,A)') 'Nom du maillage : ',trim(maa)
119 write(*,'(5X,A,I5)') 'Type du champ : ', typcha
120 write(*,'(5X,A,I1)') 'Nombre de composantes = ',ncomp
121 do j=1,ncomp
122 write(*,'(5X,A,I1,A,A,A,A)') 'Composante ',j,' : ',trim(comp(j)),' ',trim(unit(j))
123 enddo
124 write(*,'(5X,A,I1)') 'Nombre de pas de temps = ',ncst
125 print *,""
126
127 deallocate(comp,unit)
128
129 lret = getfieldson(fid, nomcha, typcha, ncomp, med_node, user_interlace, ncst)
130 ! print *,lret
131
132 if (lret .eq. 0) then
133 lret = getfieldson(fid, nomcha, typcha, ncomp, med_cell, user_interlace, ncst)
134 else
135 print *, "Erreur a la lecture des champs aux noeuds "; cret = -1; continue
136 endif
137
138 if (lret .eq. 0) then
139 lret = getfieldson(fid, nomcha, typcha, ncomp, med_descending_face,user_interlace, ncst)
140 else
141 print *,"Erreur a la lecture des champs aux mailles "; cret = -1; continue
142 endif
143
144 if (lret .eq. 0) then
145 lret = getfieldson(fid, nomcha, typcha, ncomp, med_descending_edge,user_interlace, ncst)
146 else
147 print *,"Erreur a la lecture des champs aux faces "; cret = -1; continue
148 endif
149
150 if (lret .eq. 0) then
151 lret = getfieldson(fid, nomcha, typcha, ncomp, med_node_element,user_interlace, ncst)
152 else
153 print *,"Erreur a la lecture des champs aux aretes "; cret = -1; continue
154 endif
155
156 if (lret .ne. 0) then
157 print *,"Erreur a la lecture des champs aux noeuds des mailles "; cret = -1
158 endif
159
160 enddo
161
162
163 call mpfnpf(fid,nval,ret)
164 write (*,'(5X,A,I2)') 'Nombre de profils stockés : ', nval
165
166 if (nval .gt. 0 ) then
167 do i=1,nval
168 call mpfpfi(fid,i,pflname,nval,ret)
169 write (*,'(5X,A,I2,A,A,A,I2)') 'Profil n ',i,' : ',pflname, ' et de taille',nval
170 enddo
171 endif
172
173
174 ! ** Interrogation des liens **
175 call mlnnln(fid,nln,ret)
176 if (ret.ne.0) then
177 print *,"Erreur a la lecture du nombre de liens : " &
178 & ,nln
179 cret = -1;
180 else
181 print *,""
182 write (*,'(5X,A,I5)') "Nombre de liens stockes : ",nln;print *,"";print *,""
183 do i=1,nln
184 call mlnlni(fid, i, nomlien, nval, ret)
185 if (ret.ne.0) then
186 print *,"Erreur a la demande d'information sur le lien n° : ",i
187 cret = -1;continue;
188 endif
189 write (*,'(5X,A,I4,A,A,A,I4)') "- Lien n°",i," de nom |",trim(nomlien),"| et de taille ",nval
190 !! allocate
191 lien = ""
192 call mlnlir(fid,nomlien,lien,ret)
193 if (ret.ne.0) then
194 print *,"Erreur a la lecture du lien : ", lien,nval,nomlien
195 ret = -1;
196 else
197 write (*,'(5X,A,A,A)') "|",trim(lien),"|";print *,"";print *,""
198 endif
199 !!deallocate
200 end do
201 endif
202
203
204 ! ** Interrogation des localisations des points de GAUSS **
205 call mlcnlc(fid,nloc,ret)
206 if (ret.ne.0) then
207 print *,"Erreur a la lecture du nombre de points de Gauss : " &
208 & ,nloc
209 cret = -1;
210 else
211 print *,"Nombre de localisations stockees : ",nloc;print *,"";print *,""
212 do i=1,nloc
213 call mlclci(fid, i, locname, type_geo, sdim, ngauss, giname, isname, nsmc, sgtype, ret)
214 if (ret.ne.0) then
215 print *,"Erreur a la demande d'information sur la localisation n° : ",i
216 cret = -1;continue;
217 endif
218 write (*,'(5X,A,I4,A,A,A,I4,A,I4)') "- Loc n°",i," de nom |",trim(locname) &
219 &,"| et nbr. de pts Gauss ",ngauss,"| et dans un espace de dimension ",sdim
220 t1 = mod(type_geo,100)*sdim
221 t2 = ngauss*sdim
222 t3 = ngauss
223 allocate(refcoo(t1),stat=retmem)
224 if (retmem .ne. 0) then
225 print *, "Erreur a l'allocation mémoire de refcoo : "
226 call efexit(-1)
227 endif;
228 allocate(gscoo(t2),stat=retmem)
229 if (retmem .ne. 0) then
230 print *, "Erreur a l'allocation mémoire de gscoo : "
231 call efexit(-1)
232 endif;
233 allocate(wg(t3),stat=retmem)
234 if (retmem .ne. 0) then
235 print *, "Erreur a l'allocation mémoire de wg : "
236 call efexit(-1)
237 endif;
238 call mlclor(fid, locname,user_interlace,refcoo,gscoo,wg, ret )
239 if (ret.ne.0) then
240 print *,"Erreur a la lecture des valeurs de la localisation : " &
241 & ,locname
242 cret = -1;
243 else
244 write (*,'(5X,A,I4)') "Coordonnees de l'element de reference de type ",type_geo
245 do j=1,t1
246 write (*,'(5X,E20.8)') refcoo(j)
247 enddo
248 print *,""
249 write (*,'(5X,A)') "Localisation des points de GAUSS : "
250 do j=1,t2
251 write (*,'(5X,E20.8)') gscoo(j)
252 enddo
253 print *,""
254 write (*,'(5X,A)') "Poids associes aux points de GAUSS "
255 do j=1,t3
256 write (*,'(5X,E20.8)') wg(j)
257 enddo
258 print *,""
259 endif
260 deallocate(refcoo)
261 deallocate(gscoo)
262 deallocate(wg)
263 enddo
264 endif
265
266 call mficlo(fid,ret)
267 !print *,ret
268
269 call efexit(cret)
270
271 end program test11
272
273
274 integer function getfieldson(fid, nomcha, typcha, ncomp, entite, stockage, ncst)
275 implicit none
276 include 'med.hf90'
277
278 integer*8 fid
279 integer ::typcha,ncomp,entite,stockage, ncst
280 character(LEN=*) nomcha
281
282 integer :: j,k,l,m,n,nb_geo,cret,ret,retmem,nvl,nref
283 integer :: nbpdtnor,pflsize,ngauss,ngroup,nent,nprofile
284 integer, allocatable, dimension(:) :: pflval
285 integer, allocatable, dimension(:) :: vale
286 integer :: numdt,numo,lnsize,nbrefmaa
287 real*8, allocatable, dimension(:) :: valr
288 real*8 dt
289 logical local
290 character*64 :: pflname,locname,maa_ass
291 character*16 :: dt_unit
292 character*255:: lien
293 integer USER_MODE
294
295 integer,pointer,dimension(:) :: type_geo
296 integer,target :: typ_noeud(1) = (/ med_none /)
297
298 integer :: MY_NOF_CELL_TYPE = 17
299 integer :: MY_NOF_DESCENDING_FACE_TYPE = 5
300 integer :: MY_NOF_DESCENDING_EDGE_TYPE = 2
301
302 integer,target :: typmai(17) = (/ med_point1,med_seg2, &
303 & med_seg3,med_tria3, &
304 & med_quad4,med_tria6, &
305 & med_quad8,med_tetra4, &
306 & med_pyra5,med_penta6, &
307 & med_hexa8,med_tetra10, &
308 & med_pyra13,med_penta15, &
309 & med_hexa20,med_polygon,&
310 & med_polyhedron/)
311
312 integer,target :: typfac(5) = (/med_tria3,med_tria6, &
313 & med_quad4,med_quad8,med_polygon/)
314 integer,target ::typare(2) = (/med_seg2,med_seg3/)
315
316 character(LEN=15),pointer,dimension(:) :: AFF
317 character(LEN=15),target,dimension(17) :: FMED_GEOMETRIE_MAILLE_AFF = (/&
318 & "MED_POINT1 ",&
319 & "MED_SEG2 ",&
320 & "MED_SEG3 ",&
321 & "MED_TRIA3 ",&
322 & "MED_QUAD4 ",&
323 & "MED_TRIA6 ",&
324 & "MED_QUAD8 ",&
325 & "MED_TETRA4 ",&
326 & "MED_PYRA5 ",&
327 & "MED_PENTA6 ",&
328 & "MED_HEXA8 ",&
329 & "MED_TETRA10 ",&
330 & "MED_PYRA13 ",&
331 & "MED_PENTA15 ",&
332 & "MED_HEXA20 ",&
333 & "MED_POLYGON ",&
334 & "MED_POLYHEDRON " /)
335
336 character(LEN=15),target,dimension(5) :: FMED_GEOMETRIE_FACE_AFF = (/&
337 & "MED_TRIA3 ",&
338 & "MED_TRIA6 ",&
339 & "MED_QUAD4 ",&
340 & "MED_QUAD8 ",&
341 & "MED_POLYGON " /)
342
343 character(LEN=15),target,dimension(2) :: FMED_GEOMETRIE_ARETE_AFF = (/&
344 & "MED_SEG2 ",&
345 & "MED_SEG3 " /)
346
347 character(LEN=15),target,dimension(1) :: FMED_GEOMETRIE_NOEUD_AFF = (/ &
348 & "(AUCUN) "/)
349
350
351 character(LEN=20),target,dimension(0:4) :: FMED_ENTITE_MAILLAGE_AFF =(/ &
352 & "MED_CELL ", &
353 & "MED_DESCENDING_FACE ", &
354 & "MED_DESCENDING_EDGE ", &
355 & "MED_NODE ", &
356 & "MED_NODE_ELEMENT "/)
357
358 parameter(user_mode = med_compact_stmode )
359
360 !! write (*,'(A0)') FMED_GEOMETRIE_NOEUD_AFF(1)
361 !! write (*,'(A0)') FMED_GEOMETRIE_MAILLE_AFF(1)
362 !! write (*,'(A0)') FMED_GEOMETRIE_FACE_AFF(1)
363 !! write (*,'(A0)') FMED_GEOMETRIE_ARETE_AFF(1)
364
365 locname=''
366 nbpdtnor=0;pflsize=0;ngauss=0;nent=0
367 numdt = 0;numo=0;retmem=0
368 cret=0;ret=0
369
370 nullify(type_geo)
371 nullify(aff)
372
373
374 select case (entite)
375 case (med_node)
376 type_geo => typ_noeud
377 nb_geo = 1
378 aff => fmed_geometrie_noeud_aff
379 case (med_cell)
380 type_geo => typmai
381 nb_geo = 17
382 aff => fmed_geometrie_maille_aff
383 case (med_node_element)
384 type_geo => typmai
385 nb_geo = 17
386 aff => fmed_geometrie_maille_aff
387 case (med_descending_face)
388 type_geo => typfac;
389 nb_geo = 5
390 aff => fmed_geometrie_face_aff
391 case (med_descending_edge)
392 type_geo => typare
393 nb_geo = my_nof_descending_edge_type
394 aff => fmed_geometrie_arete_aff
395 end select
396
397 do k=1,nb_geo
398
399 ! ** Combien de (PDT,NOR) a lire **
400 nbpdtnor = ncst
401 if(nbpdtnor < 1 ) continue
402
403 do j=1,ncst
404
405 call mfdcsi(fid,nomcha,j,numdt,numo,dt,ret)
406 !print *,ret
407 if (ret.ne.0) then
408 print *, "Erreur a la demande d'information sur (pdt,nor) : " &
409 & ,nomcha,entite, numdt, numo, dt
410 cret = -1
411 end if
412
413 call mfdnpf(fid,nomcha,numdt,numo,entite,type_geo(k),pflname,locname,nprofile,ret)
414 !print *,ret
415 if (ret.ne.0) then
416 print *, "Erreur a la lecture du nombre de profil : " &
417 & ,nomcha,entite, type_geo(k),numdt, numo
418 cret = -1
419 call efexit(cret)
420 end if
421
422 do l=1,nprofile
423
424 ! ** Combien de valeurs à lire ? **
425 call mfdnvp(fid,nomcha,numdt,numo,entite,type_geo(k),l,user_mode,pflname,pflsize,locname,ngauss,nent,ret)
426 !print *,ret
427 if (ret.ne.0) then
428 print *,"Erreur a la lecture du nombre de valeurs du champ : " &
429 & ,nomcha,entite,type_geo(k), &
430 & numdt, numo
431 cret = -1; continue
432 endif
433 !write(*,'(5X,A,I5,A)') 'Il y a ', nent ,' valeurs a lire '
434
435 write(*,'(5X,A,I2,A,I2,A,I2,A,E10.5,A)') 'Séquence de calcul n° ',l,' (',numdt,',',numo,'), dt=(',dt,')'
436 write(*,'(5X,A,I5,A,I2,A,A,A,A,A,A,I2,A,A)') &
437 & 'Il y a ',nent,' valeurs en mode ',user_mode, &
438 & '. Chaque entite ',trim(fmed_entite_maillage_aff(entite)), &
439 & ' de type geometrique ',trim(aff(k)),' associes au profil |',&
440 & trim(pflname)//'| a ',ngauss,' valeur(s) par entité, et une localization de nom |',trim(locname)//'|'
441
442 ! **Lecture des valeurs du champ **
443 if (typcha .eq. med_float64) then
444 allocate(valr(ncomp*nent*ngauss),stat=retmem)
445
446 call mfdrpr(fid,nomcha,numdt,numo,entite,type_geo(k),user_mode, &
447 & pflname,stockage,med_all_constituent,valr,ret)
448 !print *,ret
449 if (ret.ne.0) then
450 print *,"Erreur a la lecture des valeurs du champ : ", &
451 & nomcha,valr,stockage,med_all_constituent, &
452 & pflname,user_mode,entite,type_geo(k),numdt,numo
453 cret = -1;
454 call efexit(cret)
455 endif
456 else
457 allocate(vale(ncomp*nent*ngauss),stat=retmem)
458
459 call mfdipr(fid,nomcha,numdt,numo,entite,type_geo(k),user_mode, &
460 & pflname,stockage,med_all_constituent,vale,ret)
461 !print *,ret
462 if (ret.ne.0) then
463 print *,"Erreur a la lecture des valeurs du champ : ",&
464 & nomcha,vale,stockage,med_all_constituent, &
465 & pflname,user_mode,entite,type_geo(k),numdt,numo
466 cret = -1;
467 endif
468
469 endif
470
471 if (ngauss .gt. 1 ) then
472 write (*,'(5X,A,A,A)') "- Modèle de localisation des ", &
473 & "points de Gauss de nom ", trim(locname)
474 end if
475
476 if ( entite .eq. med_node_element ) then
477 ngroup = mod(type_geo(k),100)
478 else
479 ngroup = ngauss
480 end if
481
482 select case (stockage)
483 case (med_full_interlace)
484 write(*,'(5X,A)') "- Valeurs :"; write(*,'(5X,A)') ""
485 do m=0,nent-1
486 write(*,*) "|"
487 do n=0,(ngroup*ncomp-1)
488 if (typcha .eq. med_float64) then
489 write (*,'(1X,E20.5,1X)') valr( m*ngroup*ncomp+n +1 )
490 else
491 write (*,'(1X,I8,1X)') vale( m*ngroup*ncomp+n +1 )
492 end if
493 enddo
494 enddo
495 case (med_no_interlace)
496 write(*,'(5X,A)') "- Valeurs :"; write(*,'(5X,A)') ""
497 do m=0,ncomp-1
498 write(*,*) "|"
499 do n=0,nent-1
500 if (typcha .eq. med_float64) then
501 write (*,'(1X,E20.5,1X)') valr(m*nent+n +1)
502 else
503 write (*,'(1X,I8,1X)') vale(m*nent+n +1)
504 endif
505 enddo
506 enddo
507 end select
508
509 write(*,*) "|"
510 if (typcha .eq. med_float64) then
511 deallocate(valr)
512 else
513 deallocate(vale)
514 endif
515
516 !* Profils
517 if (pflname .eq. med_no_profile) then
518 !write(*,'(5X,A)') 'Pas de profil'
519 else
520 write(*,'(5X,A,A)') 'Profil :',pflname
521 call mpfpsn(fid,pflname,pflsize,ret)
522 if (ret .ne. 0) then
523 print *,"Erreur a la lecture du nombre de valeurs du profil : ", &
524 & pflname,pflsize
525 cret = -1;continue
526 endif
527 write(*,'(5X,A,I5)') 'Taille du profil : ',pflsize
528
529 ! ** allocation memoire de pflval **
530 allocate(pflval(pflsize),stat=retmem)
531 if (retmem .ne. 0) then
532 print *, "Erreur a l'allocation mémoire de pflsize : "
533 call efexit(-1)
534 endif
535
536 call mpfprr(fid,pflname,pflval,ret)
537 if (cret .ne. 0) write(*,'(I1)') cret
538 if (ret .ne. 0) then
539 print *,"Erreur a la lecture du profil : ", &
540 & pflname,pflval
541 cret = -1;continue
542 endif
543 write(*,'(5X,A)') 'Valeurs du profil : '
544 do m=1,pflsize
545 write (*,'(5X,I6)') pflval(m)
546 enddo
547
548 deallocate(pflval)
549
550 endif
551
552 enddo
553
554 enddo
555
556 enddo
557
558 print *,""
559 getfieldson=ret
560
561 end function getfieldson
med_float64
double med_float64
Definition: med.h:332
getfieldson
integer function getfieldson(fid, nomcha, typcha, ncomp, entite, stockage, ncst)
Definition: test11.f90:275
mfdfdi
subroutine mfdfdi(fid, it, fname, mname, lmesh, type, cname, cunit, dtunit, nc, cret)
Definition: medfield.f:248
mfdcsi
subroutine mfdcsi(fid, fname, it, numdt, numit, dt, cret)
Definition: medfield.f:290
mpfnpf
subroutine mpfnpf(fid, n, cret)
Definition: medprofile.f:39
mfdnfd
subroutine mfdnfd(fid, n, cret)
Definition: medfield.f:180
mmhmii
subroutine mmhmii(fid, it, name, sdim, mdim, mtype, desc, dtunit, stype, nstep, atype, aname, aunit, cret)
Definition: medmesh.f:110
mpfpfi
subroutine mpfpfi(fid, it, pname, psize, cret)
Definition: medprofile.f:61
mfdnvp
subroutine mfdnvp(fid, fname, numdt, numit, etype, gtype, pit, stm, pname, psize, lname, nip, n, cret)
Definition: medfield.f:406
mfdnpf
subroutine mfdnpf(fid, fname, numdt, numit, etype, gtype, dpname, dlname, n, cret)
Definition: medfield.f:354
mfdipr
subroutine mfdipr(fid, fname, numdt, numit, etype, gtype, stm, pname, swm, cs, val, cret)
Definition: medfield.f:528
mlnlni
subroutine mlnlni(fid, it, mname, lsize, cret)
Definition: medlink.f:60
test11
program test11
Definition: test11.f90:26
mlnnln
subroutine mlnnln(fid, n, cret)
Definition: medlink.f:38
mfiope
subroutine mfiope(fid, name, access, cret)
Definition: medfile.f:42
mpfpsn
subroutine mpfpsn(fid, pname, psize, cret)
Definition: medprofile.f:79
mpfprr
subroutine mpfprr(fid, pname, profil, cret)
Definition: medprofile.f:97
mlclor
subroutine mlclor(fid, lname, swm, ecoo, ipcoo, wght, cret)
Definition: medlocalization.f:106
mlnlir
subroutine mlnlir(fid, mname, lname, cret)
Definition: medlink.f:102
mfdrpr
subroutine mfdrpr(fid, fname, numdt, numit, etype, gtype, stm, pname, swm, cs, val, cret)
Definition: medfield.f:505
mlclci
subroutine mlclci(fid, it, lname, gtype, sdim, nip, giname, isname, nsmc, sgtype, cret)
Definition: medlocalization.f:64
mlcnlc
subroutine mlcnlc(fid, n, cret)
Definition: medlocalization.f:41
mficlo
subroutine mficlo(fid, cret)
Definition: medfile.f:82
mfdnfc
subroutine mfdnfc(fid, ind, n, cret)
Definition: medfield.f:202