UsesCase_MEDfield_5.f90
Aller à la documentation de ce fichier.
!* This file is part of MED.
!*
!* COPYRIGHT (C) 1999 - 2020 EDF R&D, CEA/DEN
!* MED is free software: you can redistribute it and/or modify
!* it under the terms of the GNU Lesser General Public License as published by
!* the Free Software Foundation, either version 3 of the License, or
!* (at your option) any later version.
!*
!* MED is distributed in the hope that it will be useful,
!* but WITHOUT ANY WARRANTY; without even the implied warranty of
!* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
!* GNU Lesser General Public License for more details.
!*
!* You should have received a copy of the GNU Lesser General Public License
!* along with MED. If not, see <http://www.gnu.org/licenses/>.
!*
!*
!*
!* Field use case 5 : read a field with following with computing steps
!*
program usescase_medfield_5
implicit none
include 'med.hf90'
integer cret
integer*8 fid
character(64) :: mname
! field name
character(64) :: finame = 'TEMPERATURE_FIELD'
! nvalues, local mesh, field type
integer nstep, nvals, lcmesh, fitype
integer ncompo
!geotype
integer geotp
integer, dimension(MED_N_CELL_FIXED_GEO) :: geotps
! mesh num dt, mesh num it
integer mnumdt, mnumit
integer csit, numit, numdt, it
real*8 dt
character(16) :: dtunit
! component name
character(16) :: cpname
! component unit
character(16) :: cpunit
real*8, dimension(:), allocatable :: values
geotps = med_get_cell_geometry_type
! open MED file
call mfiope(fid,'UsesCase_MEDfield_4.med',med_acc_rdonly, cret)
if (cret .ne. 0 ) then
print *,'ERROR : open file'
call efexit(-1)
endif
! ... we know that the MED file has only one field with one component ,
! a real code working would check ...
!
! if you know the field name, direct access to field informations
call mfdfin(fid,finame,mname,lcmesh,fitype,cpname,cpunit,dtunit,nstep,cret)
if (cret .ne. 0 ) then
print *,'ERROR : Field info by name ...'
call efexit(-1)
endif
print *, 'Mesh name :', mname
print *, 'Local mesh :', lcmesh
print *, 'Field type :', fitype
print *, 'Component name :', cpname
print *, 'Component unit :', cpunit
print *, 'Dtunit :', dtunit
print *, 'Nstep :', nstep
! Read field values for each computing step
do csit=1,nstep
call mfdcmi(fid,finame,csit,numdt,numit,dt,mnumdt,mnumit,cret)
if (cret .ne. 0 ) then
print *,'ERROR : Computing step info ...'
call efexit(-1)
endif
print *, 'csit :', csit
print *, 'numdt :', numdt
print *, 'numit :', numit
print *, 'dt :', dt
print *, 'mnumdt :', mnumdt
print *, 'mnumit :', mnumit
! ... In our case, we suppose that the field values are only defined on cells ...
do it=1,(med_n_cell_fixed_geo)
geotp = geotps(it)
call mfdnva(fid,finame,numdt,numit,med_cell,geotp,nvals,cret)
if (cret .ne. 0 ) then
print *,'ERROR : Read number of values ...'
call efexit(-1)
endif
print *, 'Number of values of type :', geotp, ' :', nvals
if (nvals .gt. 0) then
allocate(values(nvals),stat=cret )
if (cret > 0) then
print *,'Memory allocation'
call efexit(-1)
endif
call mfdrvr(fid,finame,numdt,numit,med_cell,geotp,&
med_full_interlace, med_all_constituent,values,cret)
if (cret .ne. 0 ) then
print *,'ERROR : Read fields values for cells ...'
call efexit(-1)
endif
print *, 'Fields values for cells :', values
deallocate(values)
endif
enddo
enddo
! close file
call mficlo(fid,cret)
if (cret .ne. 0 ) then
print *,'ERROR : close file'
call efexit(-1)
endif
end program usescase_medfield_5
usescase_medfield_5
program usescase_medfield_5
Definition UsesCase_MEDfield_5.f90:23
mfdcmi
subroutine mfdcmi(fid, fname, it, numdt, numit, dt, mnumdt, mnumit, cret)
Cette fonction permet de lire les informations caractérisant une étape de calcul : numéro de pas de t...
Definition medfield.f:311
mfdfin
subroutine mfdfin(fid, fname, mname, lmesh, type, cname, cunit, dtunit, nc, cret)
Cette fonction permet de lire les informations concernant le champ de nom fieldname.
Definition medfield.f:270
mfdnva
subroutine mfdnva(fid, fname, numdt, numit, etype, gtype, n, cret)
Cette fonction permet de lire le nombre de valeurs dans un champ pour une étape de calcul,...
Definition medfield.f:380
mfiope
subroutine mfiope(fid, name, access, cret)
Ouverture d'un fichier MED.
Definition medfile.f:42
mficlo
subroutine mficlo(fid, cret)
Fermeture d'un fichier MED.
Definition medfile.f:82
mfdrvr
subroutine mfdrvr(fid, fname, numdt, numit, etype, gtype, swm, cs, val, cret)
Definition medfield.f:461