7 hprogram,hsurf,hfile,kluout,pfield)
40 USE modi_get_type_dim_n
44 USE yomhook
,ONLY : lhook, dr_hook
45 USE parkind1
,ONLY : jprb
57 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
58 CHARACTER(LEN=7),
INTENT(IN) :: hsurf
59 CHARACTER(LEN=28),
INTENT(IN) :: hfile
60 INTEGER,
INTENT(IN) :: kluout
61 REAL,
DIMENSION(:,:,:),
POINTER :: pfield
65 REAL,
DIMENSION(:),
POINTER :: zfield
67 REAL,
DIMENSION(:,:),
ALLOCATABLE:: zfield_2d
70 REAL(KIND=JPRB) :: zhook_handle
76 INTEGER::id_file,id_var
78 INTEGER,
DIMENSION(:),
ALLOCATABLE::ivardimsid
79 INTEGER::ilendim,ilendim1,ilendim2
81 SELECT CASE (trim(hsurf))
82 CASE (
'TG',
'WG',
'WGI')
85 CALL
abor1_sfx(
'PREP_ISBA_NETCDF: '//trim(hsurf)//
" initialization not implemented !")
92 IF (lhook) CALL dr_hook(
'PREP_ISBA_NETCDF',0,zhook_handle)
103 ierror=nf_open(hfile,nf_nowrite,id_file)
107 ierror=nf_inq_varid(id_file,trim(hsurf),id_var)
111 ierror=nf_inq_varndims(id_file,id_var,invardims)
112 if (ierror/=nf_noerr) CALL
handle_err_cdf(ierror,
"can't get variable dimensions number")
115 ALLOCATE(ivardimsid(invardims))
116 ierror=nf_inq_vardimid(id_file,id_var,ivardimsid)
117 if (ierror/=nf_noerr) CALL
handle_err_cdf(ierror,
"can't get variable dimensions ids")
121 SELECT CASE (invardims)
124 ierror=nf_inq_dimlen(id_file,ivardimsid(1),ilendim)
125 if (ierror/=nf_noerr) CALL
handle_err_cdf(ierror,
"can't get variable dimensions lengths")
127 ierror=nf_inq_dimlen(id_file,ivardimsid(1),ilendim1)
128 if (ierror/=nf_noerr) CALL
handle_err_cdf(ierror,
"can't get variable dimensions lengths")
129 ierror=nf_inq_dimlen(id_file,ivardimsid(2),ilendim2)
130 if (ierror/=nf_noerr) CALL
handle_err_cdf(ierror,
"can't get variable dimensions lengths")
132 ilendim=ilendim1*ilendim2
135 CALL
abor1_sfx(
'PREP_ISBA_NETCDF: incorrect number of dimensions for variable '//trim(hsurf))
139 IF(ilendim/=il) CALL
abor1_sfx(
'PREP_ISBA_NETCDF: incorrect number of points '// &
140 'in netcdf file for variable '//trim(hsurf))
143 ierror=nf_get_var_double(id_file,id_var,zfield)
147 ierror=nf_close(id_file)
149 ALLOCATE(pfield(il,inlayers,1))
153 pfield(:,jj,1)=zfield
161 IF (lhook) CALL dr_hook(
'PREP_ISBA_NETCDF',1,zhook_handle)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine prep_isba_netcdf(DTCO, U, HPROGRAM, HSURF, HFILE, KLUOUT, PFIELD)
subroutine handle_err_cdf(status, line)
subroutine abor1_sfx(YTEXT)