1 SUBROUTINE read_map2d(filename, varname, timestep, inverse, varout)
13 CHARACTER(len=*),
INTENT(IN) :: filename
14 CHARACTER(len=*),
INTENT(IN) :: varname
15 INTEGER,
INTENT(IN) :: timestep
16 LOGICAL,
INTENT(IN) :: inverse
18 REAL,
DIMENSION(klon),
INTENT(OUT) :: varout
22 INTEGER :: nid, nvarid, ierr
23 INTEGER,
DIMENSION(3) :: start, count
24 CHARACTER(len=20) :: modname=
'read_map2D'
26 REAL,
DIMENSION(nbp_lon,nbp_lat) :: var_glo2D
27 REAL,
DIMENSION(nbp_lon,nbp_lat) :: var_glo2D_tmp
28 REAL,
DIMENSION(klon_glo) :: var_glo1D
31 IF (is_mpi_root .AND. is_omp_root)
THEN
32 ierr = nf90_open(trim(filename), nf90_nowrite, nid)
33 IF (ierr /= nf90_noerr)
CALL write_err_mess(
'Problem in opening file')
35 ierr = nf90_inq_varid(nid, trim(varname), nvarid)
36 IF (ierr /= nf90_noerr)
CALL write_err_mess(
'The variable is absent in file')
38 start=(/1,1,timestep/)
40 ierr = nf90_get_var(nid, nvarid, var_glo2d,start,count)
41 IF (ierr /= nf90_noerr)
CALL write_err_mess(
'Problem in reading varaiable')
43 ierr = nf90_close(nid)
44 IF (ierr /= nf90_noerr)
CALL write_err_mess(
'Problem in closing file')
48 var_glo2d_tmp(:,:) = var_glo2d(:,:)
50 var_glo2d(:,j) = var_glo2d_tmp(:,
nbp_lat-j+1)
57 WRITE(
lunout,*)
'in read_map2D, filename = ', trim(filename)
58 WRITE(
lunout,*)
'in read_map2D, varname = ', trim(varname)
59 WRITE(
lunout,*)
'in read_map2D, timestep = ', timestep
63 CALL scatter(var_glo1d, varout)
69 CHARACTER(len=*),
INTENT(IN) :: err_mess
71 WRITE(
lunout,*)
'Error in read_map2D, filename = ', trim(filename)
72 WRITE(
lunout,*)
'Error in read_map2D, varname = ', trim(varname)
73 WRITE(
lunout,*)
'Error in read_map2D, timestep = ', timestep
subroutine read_map2d(filename, varname, timestep, inverse, varout)
subroutine write_err_mess(err_mess)
subroutine abort_physic(modname, message, ierr)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout