48 character(len=100),
intent(in) :: anfdatname
50 real(dp),
intent(out) :: dxi, deta, z_sl
52 integer(i4b) :: i, j, kc, kt, kr, n
56 integer(i4b) :: ncid, ncv
60 integer(i2b),
dimension(0:IMAX,0:JMAX) :: maske_conv, n_cts_conv
61 real(sp) :: time_conv, dummy_conv, z_sl_conv, &
62 v_tot_conv, a_grounded_conv, a_floating_conv, &
64 xi_conv(0:imax), eta_conv(0:jmax), &
65 sigma_level_c_conv(0:kcmax), sigma_level_t_conv(0:ktmax), &
66 sigma_level_r_conv(0:krmax)
67 real(sp),
dimension(0:IMAX,0:JMAX) :: lambda_conv, phi_conv, &
69 temp_s_conv, as_perp_conv, &
70 zs_conv, zm_conv, zb_conv, zl_conv, h_c_conv, h_t_conv, h_conv, &
71 q_bm_conv, q_tld_conv, &
74 dzs_dtau_conv, dzm_dtau_conv, dzb_dtau_conv, dzl_dtau_conv, &
75 dh_c_dtau_conv, dh_t_dtau_conv, dh_dtau_conv, &
76 vx_b_g_conv, vy_b_g_conv, vz_b_conv, vh_b_conv, &
77 vx_s_g_conv, vy_s_g_conv, vz_s_conv, vh_s_conv, &
78 temp_b_conv, temph_b_conv, &
79 p_b_w_conv, h_w_conv, q_gl_g_conv
80 real(sp),
dimension(0:IMAX,0:JMAX,0:KCMAX) :: vx_c_conv, vy_c_conv, vz_c_conv, &
81 temp_c_conv, age_c_conv
82 real(sp),
dimension(0:IMAX,0:JMAX,0:KTMAX) :: vx_t_conv, vy_t_conv, vz_t_conv, &
83 omega_t_conv, age_t_conv
84 real(sp),
dimension(0:IMAX,0:JMAX,0:KRMAX) :: temp_r_conv
88 call
check( nf90_open(anfdatpath//
'/'//trim(anfdatname), nf90_nowrite, ncid) )
90 call
check( nf90_inq_varid(ncid,
'time', ncv) )
91 call
check( nf90_get_var(ncid, ncv, time_conv) )
93 if ( nf90_inq_varid(ncid,
'delta_ts', ncv) == nf90_noerr )
then
94 call
check( nf90_get_var(ncid, ncv, dummy_conv) )
95 else if ( nf90_inq_varid(ncid,
'glac_index', ncv) == nf90_noerr )
then
96 call
check( nf90_get_var(ncid, ncv, dummy_conv) )
101 call
check( nf90_inq_varid(ncid,
'z_sl', ncv) )
102 call
check( nf90_get_var(ncid, ncv, z_sl_conv) )
104 call
check( nf90_inq_varid(ncid,
'xi', ncv) )
105 call
check( nf90_get_var(ncid, ncv, xi_conv) )
107 call
check( nf90_inq_varid(ncid,
'eta', ncv) )
108 call
check( nf90_get_var(ncid, ncv, eta_conv) )
110 call
check( nf90_inq_varid(ncid,
'sigma_level_c', ncv) )
111 call
check( nf90_get_var(ncid, ncv, sigma_level_c_conv) )
113 call
check( nf90_inq_varid(ncid,
'sigma_level_t', ncv) )
114 call
check( nf90_get_var(ncid, ncv, sigma_level_t_conv) )
116 call
check( nf90_inq_varid(ncid,
'sigma_level_r', ncv) )
117 call
check( nf90_get_var(ncid, ncv, sigma_level_r_conv) )
119 call
check( nf90_inq_varid(ncid,
'lon', ncv) )
120 call
check( nf90_get_var(ncid, ncv, lon_conv) )
122 call
check( nf90_inq_varid(ncid,
'lat', ncv) )
123 call
check( nf90_get_var(ncid, ncv, lat_conv) )
125 call
check( nf90_inq_varid(ncid,
'lambda', ncv) )
126 call
check( nf90_get_var(ncid, ncv, lambda_conv) )
128 call
check( nf90_inq_varid(ncid,
'phi', ncv) )
129 call
check( nf90_get_var(ncid, ncv, phi_conv) )
131 call
check( nf90_inq_varid(ncid,
'temp_s', ncv) )
132 call
check( nf90_get_var(ncid, ncv, temp_s_conv) )
134 call
check( nf90_inq_varid(ncid,
'as_perp', ncv) )
135 call
check( nf90_get_var(ncid, ncv, as_perp_conv) )
137 call
check( nf90_inq_varid(ncid,
'maske', ncv) )
138 call
check( nf90_get_var(ncid, ncv, maske_conv) )
140 call
check( nf90_inq_varid(ncid,
'n_cts', ncv) )
141 call
check( nf90_get_var(ncid, ncv, n_cts_conv) )
143 call
check( nf90_inq_varid(ncid,
'zs', ncv) )
144 call
check( nf90_get_var(ncid, ncv, zs_conv) )
146 call
check( nf90_inq_varid(ncid,
'zm', ncv) )
147 call
check( nf90_get_var(ncid, ncv, zm_conv) )
149 call
check( nf90_inq_varid(ncid,
'zb', ncv) )
150 call
check( nf90_get_var(ncid, ncv, zb_conv) )
152 call
check( nf90_inq_varid(ncid,
'zl', ncv) )
153 call
check( nf90_get_var(ncid, ncv, zl_conv) )
155 call
check( nf90_inq_varid(ncid,
'H_c', ncv) )
156 call
check( nf90_get_var(ncid, ncv, h_c_conv) )
158 call
check( nf90_inq_varid(ncid,
'H_t', ncv) )
159 call
check( nf90_get_var(ncid, ncv, h_t_conv) )
161 call
check( nf90_inq_varid(ncid,
'H', ncv) )
162 call
check( nf90_get_var(ncid, ncv, h_conv) )
164 call
check( nf90_inq_varid(ncid,
'H_R', ncv) )
165 call
check( nf90_get_var(ncid, ncv, h_r_conv) )
167 call
check( nf90_inq_varid(ncid,
'vx_c', ncv) )
168 call
check( nf90_get_var(ncid, ncv, vx_c_conv) )
170 call
check( nf90_inq_varid(ncid,
'vy_c', ncv) )
171 call
check( nf90_get_var(ncid, ncv, vy_c_conv) )
173 call
check( nf90_inq_varid(ncid,
'vz_c', ncv) )
174 call
check( nf90_get_var(ncid, ncv, vz_c_conv) )
176 call
check( nf90_inq_varid(ncid,
'vx_t', ncv) )
177 call
check( nf90_get_var(ncid, ncv, vx_t_conv) )
179 call
check( nf90_inq_varid(ncid,
'vy_t', ncv) )
180 call
check( nf90_get_var(ncid, ncv, vy_t_conv) )
182 call
check( nf90_inq_varid(ncid,
'vz_t', ncv) )
183 call
check( nf90_get_var(ncid, ncv, vz_t_conv) )
185 call
check( nf90_inq_varid(ncid,
'temp_c', ncv) )
186 call
check( nf90_get_var(ncid, ncv, temp_c_conv) )
188 call
check( nf90_inq_varid(ncid,
'omega_t', ncv) )
189 call
check( nf90_get_var(ncid, ncv, omega_t_conv) )
191 call
check( nf90_inq_varid(ncid,
'temp_r', ncv) )
192 call
check( nf90_get_var(ncid, ncv, temp_r_conv) )
194 call
check( nf90_inq_varid(ncid,
'Q_bm', ncv) )
195 call
check( nf90_get_var(ncid, ncv, q_bm_conv) )
197 call
check( nf90_inq_varid(ncid,
'Q_tld', ncv) )
198 call
check( nf90_get_var(ncid, ncv, q_tld_conv) )
200 call
check( nf90_inq_varid(ncid,
'am_perp', ncv) )
201 call
check( nf90_get_var(ncid, ncv, am_perp_conv) )
203 call
check( nf90_inq_varid(ncid,
'qx', ncv) )
204 call
check( nf90_get_var(ncid, ncv, qx_conv) )
206 call
check( nf90_inq_varid(ncid,
'qy', ncv) )
207 call
check( nf90_get_var(ncid, ncv, qy_conv) )
209 call
check( nf90_inq_varid(ncid,
'age_c', ncv) )
210 call
check( nf90_get_var(ncid, ncv, age_c_conv) )
212 call
check( nf90_inq_varid(ncid,
'age_t', ncv) )
213 call
check( nf90_get_var(ncid, ncv, age_t_conv) )
215 call
check( nf90_inq_varid(ncid,
'dzs_dtau', ncv) )
216 call
check( nf90_get_var(ncid, ncv, dzs_dtau_conv) )
218 call
check( nf90_inq_varid(ncid,
'dzm_dtau', ncv) )
219 call
check( nf90_get_var(ncid, ncv, dzm_dtau_conv) )
221 call
check( nf90_inq_varid(ncid,
'dzb_dtau', ncv) )
222 call
check( nf90_get_var(ncid, ncv, dzb_dtau_conv) )
224 call
check( nf90_inq_varid(ncid,
'dzl_dtau', ncv) )
225 call
check( nf90_get_var(ncid, ncv, dzl_dtau_conv) )
227 call
check( nf90_inq_varid(ncid,
'dH_c_dtau', ncv) )
228 call
check( nf90_get_var(ncid, ncv, dh_c_dtau_conv) )
230 call
check( nf90_inq_varid(ncid,
'dH_t_dtau', ncv) )
231 call
check( nf90_get_var(ncid, ncv, dh_t_dtau_conv) )
233 call
check( nf90_inq_varid(ncid,
'dH_dtau', ncv) )
234 call
check( nf90_get_var(ncid, ncv, dh_dtau_conv) )
236 if ( nf90_inq_varid(ncid,
'vx_b_g', ncv) == nf90_noerr )
then
237 call
check( nf90_get_var(ncid, ncv, vx_b_g_conv) )
242 if ( nf90_inq_varid(ncid,
'vy_b_g', ncv) == nf90_noerr )
then
243 call
check( nf90_get_var(ncid, ncv, vy_b_g_conv) )
248 if ( nf90_inq_varid(ncid,
'vz_b', ncv) == nf90_noerr )
then
249 call
check( nf90_get_var(ncid, ncv, vz_b_conv) )
254 if ( nf90_inq_varid(ncid,
'vh_b', ncv) == nf90_noerr )
then
255 call
check( nf90_get_var(ncid, ncv, vh_b_conv) )
260 if ( nf90_inq_varid(ncid,
'vx_s_g', ncv) == nf90_noerr )
then
261 call
check( nf90_get_var(ncid, ncv, vx_s_g_conv) )
266 if ( nf90_inq_varid(ncid,
'vy_s_g', ncv) == nf90_noerr )
then
267 call
check( nf90_get_var(ncid, ncv, vy_s_g_conv) )
272 if ( nf90_inq_varid(ncid,
'vz_s', ncv) == nf90_noerr )
then
273 call
check( nf90_get_var(ncid, ncv, vz_s_conv) )
278 if ( nf90_inq_varid(ncid,
'vh_s', ncv) == nf90_noerr )
then
279 call
check( nf90_get_var(ncid, ncv, vh_s_conv) )
284 if ( nf90_inq_varid(ncid,
'temp_b', ncv) == nf90_noerr )
then
285 call
check( nf90_get_var(ncid, ncv, temp_b_conv) )
290 if ( nf90_inq_varid(ncid,
'temph_b', ncv) == nf90_noerr )
then
291 call
check( nf90_get_var(ncid, ncv, temph_b_conv) )
296 if ( nf90_inq_varid(ncid,
'p_b_w', ncv) == nf90_noerr )
then
297 call
check( nf90_get_var(ncid, ncv, p_b_w_conv) )
302 if ( nf90_inq_varid(ncid,
'H_w', ncv) == nf90_noerr )
then
303 call
check( nf90_get_var(ncid, ncv, h_w_conv) )
308 if ( nf90_inq_varid(ncid,
'q_gl_g', ncv) == nf90_noerr )
then
309 call
check( nf90_get_var(ncid, ncv, q_gl_g_conv) )
317 write(6,
'(/1x,a)')
'topography3_nc: End-of-file condition while reading *.nc.'
318 write(6,
'(1x,a)')
' Some variables will be undefined.'
322 call
check( nf90_close(ncid) )
326 z_sl =
real(z_sl_conv,dp)
328 h_r =
real(h_r_conv,dp)
331 xi(i) =
real(xi_conv(i),dp)
335 eta(j) =
real(eta_conv(j),dp)
341 maske(j,i) = maske_conv(i,j)
342 n_cts(j,i) = n_cts_conv(i,j)
343 zs(j,i) =
real(zs_conv(i,j),dp)
344 zm(j,i) =
real(zm_conv(i,j),dp)
345 zb(j,i) =
real(zb_conv(i,j),dp)
346 zl(j,i) =
real(zl_conv(i,j),dp)
347 h_c(j,i) =
real(H_c_conv(i,j),dp)
348 h_t(j,i) =
real(H_t_conv(i,j),dp)
349 q_bm(j,i) =
real(Q_bm_conv(i,j),dp)/year_sec
350 q_tld(j,i) =
real(Q_tld_conv(i,j),dp)/year_sec
351 am_perp(j,i) =
real(am_perp_conv(i,j),dp)/year_sec
352 qx(j,i) =
real(qx_conv(i,j),dp)/year_sec
353 qy(j,i) =
real(qy_conv(i,j),dp)/year_sec
354 dzs_dtau(j,i) =
real(dzs_dtau_conv(i,j),dp)/year_sec
355 dzm_dtau(j,i) =
real(dzm_dtau_conv(i,j),dp)/year_sec
356 dzb_dtau(j,i) =
real(dzb_dtau_conv(i,j),dp)/year_sec
357 dzl_dtau(j,i) =
real(dzl_dtau_conv(i,j),dp)/year_sec
358 dh_c_dtau(j,i) =
real(dH_c_dtau_conv(i,j),dp)/year_sec
359 dh_t_dtau(j,i) =
real(dH_t_dtau_conv(i,j),dp)/year_sec
360 vx_b_g(j,i) =
real(vx_b_g_conv(i,j),dp)/year_sec
361 vy_b_g(j,i) =
real(vy_b_g_conv(i,j),dp)/year_sec
362 vz_b(j,i) =
real(vz_b_conv(i,j),dp)/year_sec
363 vx_s_g(j,i) =
real(vx_s_g_conv(i,j),dp)/year_sec
364 vy_s_g(j,i) =
real(vy_s_g_conv(i,j),dp)/year_sec
365 vz_s(j,i) =
real(vz_s_conv(i,j),dp)/year_sec
366 temp_b(j,i) =
real(temp_b_conv(i,j),dp)
367 temph_b(j,i) =
real(temph_b_conv(i,j),dp)
368 p_b_w(j,i) =
real(p_b_w_conv(i,j),dp)
369 h_w(j,i) =
real(H_w_conv(i,j),dp)
370 q_gl_g(j,i) =
real(q_gl_g_conv(i,j),dp)/year_sec
373 temp_r(kr,j,i) =
real(temp_r_conv(i,j,kr),dp)
377 vx_t(kt,j,i) =
real(vx_t_conv(i,j,kt),dp)/year_sec
378 vy_t(kt,j,i) =
real(vy_t_conv(i,j,kt),dp)/year_sec
379 vz_t(kt,j,i) =
real(vz_t_conv(i,j,kt),dp)/year_sec
380 omega_t(kt,j,i) =
real(omega_t_conv(i,j,kt),dp)
381 age_t(kt,j,i) =
real(age_t_conv(i,j,kt),dp)*year_sec
385 vx_c(kc,j,i) =
real(vx_c_conv(i,j,kc),dp)/year_sec
386 vy_c(kc,j,i) =
real(vy_c_conv(i,j,kc),dp)/year_sec
387 vz_c(kc,j,i) =
real(vz_c_conv(i,j,kc),dp)/year_sec
388 temp_c(kc,j,i) =
real(temp_c_conv(i,j,kc),dp)
389 age_c(kc,j,i) =
real(age_c_conv(i,j,kc),dp)*year_sec
397 open(23, iostat=ios, &
398 file=inpath//
'/grl/'//zl0_file, &
399 recl=16384, status=
'old')
401 if (ios /= 0) stop
' topography3_nc: Error when opening the zl0 file!'
403 do n=1, 6;
read(23,
'(a)') ch_dummy;
end do
406 read(23,*) (zl0(j,i), i=0,imax)
409 close(23, status=
'keep')
418 call
geo_coord(phi(j,i), lambda(j,i), xi(i), eta(j))
436 area(j,i) = sq_g11_g(j,i)*sq_g22_g(j,i)*dxi*deta