41 USE modi_get_type_dim_n
61 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
62 CHARACTER(LEN=7),
INTENT(IN) :: HSURF
63 CHARACTER(LEN=28),
INTENT(IN) :: HFILE
64 INTEGER,
INTENT(IN) :: KLUOUT
65 REAL,
DIMENSION(:,:,:),
POINTER :: PFIELD
69 REAL,
DIMENSION(:),
ALLOCATABLE :: ZNATURE
70 REAL,
DIMENSION(:),
ALLOCATABLE :: ZFIELD, ZFIELD0
73 REAL(KIND=JPRB) :: ZHOOK_HANDLE
80 INTEGER::ID_FILE,ID_VAR
82 INTEGER,
DIMENSION(:),
ALLOCATABLE::IVARDIMSID
83 INTEGER::ILENDIM,ILENDIM1,ILENDIM2
85 SELECT CASE (
trim(hsurf))
86 CASE (
'TG',
'WG',
'WGI')
89 CALL abor1_sfx(
'PREP_ISBA_NETCDF: '//
trim(hsurf)//
" initialization not implemented !")
96 IF (
lhook)
CALL dr_hook(
'PREP_ISBA_NETCDF',0,zhook_handle)
107 ierror=nf90_open(hfile,nf90_nowrite,id_file)
111 ierror=nf90_inq_varid(id_file,
trim(hsurf),id_var)
115 ierror=nf90_inquire_variable(id_file,id_var,ndims=invardims)
116 if (ierror/=nf90_noerr)
CALL handle_err_cdf(ierror,
"can't get variable dimensions number")
118 ALLOCATE(ivardimsid(invardims))
119 ierror=nf90_inquire_variable(id_file,id_var,dimids=ivardimsid)
120 if (ierror/=nf90_noerr)
CALL handle_err_cdf(ierror,
"can't get variable dimensions ids")
122 ALLOCATE(zfield(u%NDIM_NATURE))
124 SELECT CASE (invardims)
127 ierror=nf90_inquire_dimension(id_file,ivardimsid(1),len=ilendim)
128 if (ierror/=nf90_noerr)
CALL handle_err_cdf(ierror,
"can't get variable dimensions lengths")
130 ierror=nf90_inquire_dimension(id_file,ivardimsid(1),len=ilendim1)
131 if (ierror/=nf90_noerr)
CALL handle_err_cdf(ierror,
"can't get variable dimensions lengths")
132 ierror=nf90_inquire_dimension(id_file,ivardimsid(2),len=ilendim2)
133 if (ierror/=nf90_noerr)
CALL handle_err_cdf(ierror,
"can't get variable dimensions lengths")
135 ilendim=ilendim1*ilendim2
138 CALL abor1_sfx(
'PREP_ISBA_NETCDF: incorrect number of dimensions for variable '//
trim(hsurf))
142 IF(ilendim/=u%NDIM_NATURE)
CALL abor1_sfx(
'PREP_ISBA_NETCDF: incorrect number of points '// &
143 'in netcdf file for variable '//
trim(hsurf))
146 ierror=nf90_get_var(id_file,id_var,zfield)
150 ierror=nf90_close(id_file)
157 ALLOCATE(znature(u%NDIM_FULL))
164 ALLOCATE(zfield0(u%NDIM_FULL))
168 IF (znature(ji)/=0.)
THEN 170 zfield0(ji) = zfield(icpt)
177 DEALLOCATE(znature,zfield)
178 ALLOCATE(pfield(il,inlayers,1))
184 pfield(:,jj,1)=pfield(:,1,1)
192 IF (
lhook)
CALL dr_hook(
'PREP_ISBA_NETCDF',1,zhook_handle)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
static const char * trim(const char *name, int *n)
subroutine prep_isba_netcdf(DTCO, U, HPROGRAM, HSURF, HFILE, KLUOUT, PFIELD)
subroutine handle_err_cdf(status, line)
character(len=6) cinterp_type
subroutine abor1_sfx(YTEXT)