14 #include "inc_openmp.h" 36 ATM_Uabs, ATM_POTT, Z1, &
46 real(RP),
intent(in) :: atm_uabs(
ia,
ja)
47 real(RP),
intent(in) :: atm_pott(
ia,
ja)
48 real(RP),
intent(in) :: z1 (
ia,
ja)
49 real(RP),
intent(in) :: sfc_temp(
ia,
ja)
50 real(RP),
intent(in) :: z0m (
ia,
ja)
51 real(RP),
intent(in) :: z0h (
ia,
ja)
52 real(RP),
intent(in) :: z0e (
ia,
ja)
53 real(RP),
intent(out) :: cm (
ia,
ja)
54 real(RP),
intent(out) :: ch (
ia,
ja)
55 real(RP),
intent(out) :: ce (
ia,
ja)
56 real(RP),
intent(out) :: r10m (
ia,
ja)
57 real(RP),
intent(out) :: r2h (
ia,
ja)
58 real(RP),
intent(out) :: r2e (
ia,
ja)
74 private :: atmos_phy_sf_bulkcoef_uno
75 private :: atmos_phy_sf_bulkcoef_beljaars
76 private :: fm_unstable
77 private :: fh_unstable
85 character(len=H_SHORT),
private :: atmos_phy_sf_bulkcoef_type =
'BH91' 87 real(RP),
private :: atmos_phy_sf_bulkcoef_cm_max = 2.5e-3_rp
88 real(RP),
private :: atmos_phy_sf_bulkcoef_ch_max = 1.0e+0_rp
89 real(RP),
private :: atmos_phy_sf_bulkcoef_ce_max = 1.0e+0_rp
90 real(RP),
private :: atmos_phy_sf_bulkcoef_cm_min = 1.0e-5_rp
91 real(RP),
private :: atmos_phy_sf_bulkcoef_ch_min = 1.0e-5_rp
92 real(RP),
private :: atmos_phy_sf_bulkcoef_ce_min = 1.0e-5_rp
102 namelist / param_atmos_phy_sf_bulkcoef / &
103 atmos_phy_sf_bulkcoef_type, &
104 atmos_phy_sf_bulkcoef_cm_max, &
105 atmos_phy_sf_bulkcoef_ch_max, &
106 atmos_phy_sf_bulkcoef_ce_max, &
107 atmos_phy_sf_bulkcoef_cm_min, &
108 atmos_phy_sf_bulkcoef_ch_min, &
109 atmos_phy_sf_bulkcoef_ce_min
119 read(
io_fid_conf,nml=param_atmos_phy_sf_bulkcoef,iostat=ierr)
121 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 122 elseif( ierr > 0 )
then 123 write(*,*)
'xxx Not appropriate names in namelist PARAM_ATMOS_PHY_SF_BULKCOEF. Check!' 128 select case( atmos_phy_sf_bulkcoef_type )
134 write(*,*)
'xxx invalid bulk scheme (', trim(atmos_phy_sf_bulkcoef_type),
'). CHECK!' 142 subroutine atmos_phy_sf_bulkcoef_uno( &
143 ATM_Uabs, ATM_POTT, Z1, &
154 real(RP),
intent(in) :: ATM_Uabs(
ia,
ja)
155 real(RP),
intent(in) :: ATM_POTT(
ia,
ja)
156 real(RP),
intent(in) :: Z1 (
ia,
ja)
157 real(RP),
intent(in) :: SFC_TEMP(
ia,
ja)
158 real(RP),
intent(in) :: Z0M (
ia,
ja)
159 real(RP),
intent(in) :: Z0H (
ia,
ja)
160 real(RP),
intent(in) :: Z0E (
ia,
ja)
161 real(RP),
intent(out) :: Cm (
ia,
ja)
162 real(RP),
intent(out) :: Ch (
ia,
ja)
163 real(RP),
intent(out) :: Ce (
ia,
ja)
164 real(RP),
intent(out) :: R10M (
ia,
ja)
165 real(RP),
intent(out) :: R2H (
ia,
ja)
166 real(RP),
intent(out) :: R2E (
ia,
ja)
169 real(RP),
parameter :: tPrn = 0.74_rp
170 real(RP),
parameter :: LFb = 9.4_rp
171 real(RP),
parameter :: LFbp = 4.7_rp
172 real(RP),
parameter :: LFdm = 7.4_rp
173 real(RP),
parameter :: LFdh = 5.3_rp
175 real(RP) :: RiB (
ia,
ja)
176 real(RP) :: RiBT(
ia,
ja)
177 real(RP) :: C0 (
ia,
ja)
178 real(RP) :: fm (
ia,
ja)
179 real(RP) :: fh (
ia,
ja)
180 real(RP) :: Psi (
ia,
ja)
181 real(RP) :: t0th(
ia,
ja)
182 real(RP) :: q0qe(
ia,
ja)
184 real(RP) :: C0_10m(
ia,
ja)
185 real(RP) :: fm_10m(
ia,
ja)
186 real(RP) :: C0_2m (
ia,
ja)
187 real(RP) :: fm_2m (
ia,
ja)
188 real(RP) :: fh_2m (
ia,
ja)
189 real(RP) :: Psi_2m(
ia,
ja)
191 real(RP) :: tmp1, tmp2, tmp3, Psi1
197 c0(i,j) = ( karman /
log( z1(i,j)/z0m(i,j) ) )**2
198 c0_10m(i,j) = ( karman /
log( 10.0_rp/z0m(i,j) ) )**2
199 c0_2m(i,j) = ( karman /
log( 2.0_rp/z0m(i,j) ) )**2
201 ribt(i,j) = grav * z1(i,j) * ( atm_pott(i,j) - sfc_temp(i,j) ) &
202 / ( atm_pott(i,j) * atm_uabs(i,j)**2 + eps )
210 if ( ribt(i,j) < 0.0_rp )
then 211 tmp1 = c0(i,j) * lfb * sqrt( z1(i,j)/z0m(i,j) ) * sqrt( abs(rib(i,j)) )
213 fm(i,j) = 1.0_rp - lfb * rib(i,j) / ( 1.0_rp + lfdm * tmp1 )
214 fh(i,j) = 1.0_rp - lfb * rib(i,j) / ( 1.0_rp + lfdh * tmp1 )
216 fm(i,j) = 1.0_rp / ( 1.0_rp + lfbp * rib(i,j) )**2
224 psi(i,j) = tprn * sqrt(fm(i,j)) / fh(i,j) *
log( z1(i,j)/z0m(i,j) )
226 t0th(i,j) = 1.0_rp / ( 1.0_rp + tprn *
log( z0m(i,j)/z0h(i,j) ) / psi(i,j) )
227 q0qe(i,j) = 1.0_rp / ( 1.0_rp + tprn *
log( z0m(i,j)/z0e(i,j) ) / psi(i,j) )
229 rib(i,j) = rib(i,j) * t0th(i,j)
235 if ( ribt(i,j) < 0.0_rp )
then 236 tmp1 = c0(i,j) * lfb * sqrt( z1(i,j)/z0m(i,j) ) * sqrt( abs(rib(i,j)) )
237 tmp2 = c0_10m(i,j) * lfb * sqrt( 10.0_rp/z0m(i,j) ) * sqrt( abs(rib(i,j)) )
238 tmp3 = c0_2m(i,j) * lfb * sqrt( 2.0_rp/z0m(i,j) ) * sqrt( abs(rib(i,j)) )
240 fm(i,j) = 1.0_rp - lfb * rib(i,j) / ( 1.0_rp + lfdm * tmp1 )
241 fh(i,j) = 1.0_rp - lfb * rib(i,j) / ( 1.0_rp + lfdh * tmp1 )
243 fm_10m(i,j) = 1.0_rp - lfb * rib(i,j) / ( 1.0_rp + lfdm * tmp2 )
244 fm_2m(i,j) = 1.0_rp - lfb * rib(i,j) / ( 1.0_rp + lfdm * tmp3 )
245 fh_2m(i,j) = 1.0_rp - lfb * rib(i,j) / ( 1.0_rp + lfdh * tmp3 )
247 fm(i,j) = 1.0_rp / ( 1.0_rp + lfbp * rib(i,j) )**2
250 fm_10m(i,j) = fm(i,j)
259 psi1 = tprn * sqrt(fm(i,j)) / fh(i,j) *
log( z1(i,j)/z0m(i,j) )
260 psi_2m(i,j) = tprn * sqrt(fm_2m(i,j)) / fh_2m(i,j) *
log( 2.0_rp/z0m(i,j) )
262 t0th(i,j) = 1.0_rp / ( 1.0_rp + tprn *
log( z0m(i,j)/z0h(i,j) ) / psi1 )
263 q0qe(i,j) = 1.0_rp / ( 1.0_rp + tprn *
log( z0m(i,j)/z0e(i,j) ) / psi1 )
269 cm(i,j) = c0(i,j) * fm(i,j)
270 ch(i,j) = c0(i,j) * fh(i,j) * t0th(i,j) / tprn
271 ce(i,j) = c0(i,j) * fh(i,j) * q0qe(i,j) / tprn
273 cm(i,j) = min( max( cm(i,j), atmos_phy_sf_bulkcoef_cm_min ), atmos_phy_sf_bulkcoef_cm_max )
274 ch(i,j) = min( max( ch(i,j), atmos_phy_sf_bulkcoef_ch_min ), atmos_phy_sf_bulkcoef_ch_max )
275 ce(i,j) = min( max( ce(i,j), atmos_phy_sf_bulkcoef_ce_min ), atmos_phy_sf_bulkcoef_ce_max )
281 r10m(i,j) =
log( 10.0_rp/z0m(i,j) ) /
log( z1(i,j)/z0m(i,j) ) &
282 / sqrt( fm_10m(i,j) / fm(i,j) )
284 tmp1 =
log( z0m(i,j)/z0h(i,j) ) /
log( z1(i,j)/z0m(i,j) )
286 r2h(i,j) = ( tmp1 + psi_2m(i,j) / tprn ) &
287 / ( tmp1 + psi(i,j) / tprn )
289 tmp2 =
log( z0m(i,j)/z0e(i,j) ) /
log( z1(i,j)/z0m(i,j) )
291 r2e(i,j) = ( tmp2 + psi_2m(i,j) / tprn ) &
292 / ( tmp2 + psi(i,j) / tprn )
294 r10m(i,j) = min( max( r10m(i,j), 0.0_rp ), 1.0_rp )
295 r2h(i,j) = min( max( r2h(i,j), 0.0_rp ), 1.0_rp )
296 r2e(i,j) = min( max( r2e(i,j), 0.0_rp ), 1.0_rp )
301 end subroutine atmos_phy_sf_bulkcoef_uno
304 subroutine atmos_phy_sf_bulkcoef_beljaars( &
305 ATM_Uabs, ATM_POTT, Z1, &
316 real(RP),
intent(in) :: ATM_Uabs(
ia,
ja)
317 real(RP),
intent(in) :: ATM_POTT(
ia,
ja)
318 real(RP),
intent(in) :: Z1 (
ia,
ja)
319 real(RP),
intent(in) :: SFC_TEMP(
ia,
ja)
320 real(RP),
intent(in) :: Z0M (
ia,
ja)
321 real(RP),
intent(in) :: Z0H (
ia,
ja)
322 real(RP),
intent(in) :: Z0E (
ia,
ja)
323 real(RP),
intent(out) :: Cm (
ia,
ja)
324 real(RP),
intent(out) :: Ch (
ia,
ja)
325 real(RP),
intent(out) :: Ce (
ia,
ja)
326 real(RP),
intent(out) :: R10M (
ia,
ja)
327 real(RP),
intent(out) :: R2H (
ia,
ja)
328 real(RP),
intent(out) :: R2E (
ia,
ja)
331 real(RP),
parameter :: RiB_min = 1.e-4_rp
332 real(RP),
parameter :: res_criteria = 1.e-6_rp
333 real(RP),
parameter :: dL = 1.e-10_rp
335 real(RP) :: RiB0(
ia,
ja)
336 real(RP) :: L (
ia,
ja)
337 real(RP) :: Lpls(
ia,
ja)
339 real(RP) :: LogZ1Z0M(
ia,
ja)
340 real(RP) :: LogZ1Z0H(
ia,
ja)
341 real(RP) :: LogZ1Z0E(
ia,
ja)
349 real(RP) :: res (
ia,
ja), dres
351 real(RP) :: fmUS_Z1L, fmUS_Z0ML, fhUS_Z1L, fhUS_Z0HL, fhUS_Z0EL
352 real(RP) :: fmS_Z1L, fmS_Z0ML, fhS_Z1L, fhS_Z0HL, fhS_Z0EL
354 real(RP) :: fmUS_10mL, fmUS_2mL, fhUS_2mL
355 real(RP) :: fmS_10mL, fmS_2mL, fhS_2mL
356 real(RP) :: fm (
ia,
ja)
357 real(RP) :: fh (
ia,
ja)
358 real(RP) :: fm_10m(
ia,
ja)
359 real(RP) :: fm_2m (
ia,
ja)
360 real(RP) :: fh_2m (
ia,
ja)
361 real(RP) :: Psi (
ia,
ja)
362 real(RP) :: Psi_2m(
ia,
ja)
364 integer,
parameter :: itelim = 100
367 real(RP) :: tmp1, tmp2, sw
371 karman2 = karman * karman
375 rib0(i,j) = grav * z1(i,j) * ( atm_pott(i,j) - sfc_temp(i,j) ) &
376 / ( atm_pott(i,j) * atm_uabs(i,j)**2 + eps )
377 rib0(i,j) = max( abs(rib0(i,j)), rib_min )
384 l(i,j) = z1(i,j) / rib0(i,j)
390 logz1z0m(i,j) =
log( z1(i,j) / z0m(i,j) )
391 logz1z0h(i,j) =
log( z1(i,j) / z0h(i,j) )
392 logz1z0e(i,j) =
log( z1(i,j) / z0e(i,j) )
403 fmus_z1l = fm_unstable( z1(i,j),l(i,j) )
404 fmus_z0ml = fm_unstable( z0m(i,j),l(i,j) )
406 fhus_z1l = fh_unstable( z1(i,j),l(i,j) )
407 fhus_z0hl = fh_unstable( z0h(i,j),l(i,j) )
408 fhus_z0el = fh_unstable( z0e(i,j),l(i,j) )
410 cmus(i,j) = karman2 / ( logz1z0m(i,j) - fmus_z1l + fmus_z0ml )**2
411 chus(i,j) = karman2 / ( logz1z0m(i,j) - fmus_z1l + fmus_z0ml ) / ( logz1z0h(i,j) - fhus_z1l + fhus_z0hl )
412 ceus(i,j) = karman2 / ( logz1z0m(i,j) - fmus_z1l + fmus_z0ml ) / ( logz1z0e(i,j) - fhus_z1l + fhus_z0el )
419 fms_z1l = fm_stable( z1(i,j),l(i,j) )
420 fms_z0ml = fm_stable( z0m(i,j),l(i,j) )
422 fhs_z1l = fh_stable( z1(i,j),l(i,j) )
423 fhs_z0hl = fh_stable( z0h(i,j),l(i,j) )
424 fhs_z0el = fh_stable( z0e(i,j),l(i,j) )
426 cms(i,j) = karman2 / ( logz1z0m(i,j) - fms_z1l + fms_z0ml )**2
427 chs(i,j) = karman2 / ( logz1z0m(i,j) - fms_z1l + fms_z0ml ) / ( logz1z0h(i,j) - fhs_z1l + fhs_z0hl )
428 ces(i,j) = karman2 / ( logz1z0m(i,j) - fms_z1l + fms_z0ml ) / ( logz1z0e(i,j) - fhs_z1l + fhs_z0el )
435 sw = 0.5_rp - sign(0.5_rp,l(i,j))
437 cm(i,j) = ( sw ) * cmus(i,j) &
438 + ( 1.0_rp-sw ) * cms(i,j)
439 ch(i,j) = ( sw ) * chus(i,j) &
440 + ( 1.0_rp-sw ) * chs(i,j)
441 ce(i,j) = ( sw ) * ceus(i,j) &
442 + ( 1.0_rp-sw ) * ces(i,j)
450 lpls(i,j) = l(i,j) + dl
457 fmus_z1l = fm_unstable( z1(i,j),lpls(i,j) )
458 fmus_z0ml = fm_unstable( z0m(i,j),lpls(i,j) )
460 fhus_z1l = fh_unstable( z1(i,j),lpls(i,j) )
461 fhus_z0hl = fh_unstable( z0h(i,j),lpls(i,j) )
462 fhus_z0el = fh_unstable( z0e(i,j),lpls(i,j) )
464 dcmus(i,j) = karman2 / ( logz1z0m(i,j) - fmus_z1l + fmus_z0ml )**2
465 dchus(i,j) = karman2 / ( logz1z0m(i,j) - fmus_z1l + fmus_z0ml ) / ( logz1z0h(i,j) - fhus_z1l + fhus_z0hl )
466 dceus(i,j) = karman2 / ( logz1z0m(i,j) - fmus_z1l + fmus_z0ml ) / ( logz1z0e(i,j) - fhus_z1l + fhus_z0el )
473 fms_z1l = fm_stable( z1(i,j),lpls(i,j) )
474 fms_z0ml = fm_stable( z0m(i,j),lpls(i,j) )
476 fhs_z1l = fh_stable( z1(i,j),lpls(i,j) )
477 fhs_z0hl = fh_stable( z0h(i,j),lpls(i,j) )
478 fhs_z0el = fh_stable( z0e(i,j),lpls(i,j) )
480 dcms(i,j) = karman2 / ( logz1z0m(i,j) - fms_z1l + fms_z0ml )**2
481 dchs(i,j) = karman2 / ( logz1z0m(i,j) - fms_z1l + fms_z0ml ) / ( logz1z0h(i,j) - fhs_z1l + fhs_z0hl )
482 dces(i,j) = karman2 / ( logz1z0m(i,j) - fms_z1l + fms_z0ml ) / ( logz1z0e(i,j) - fhs_z1l + fhs_z0el )
488 sw = 0.5_rp - sign(0.5_rp,lpls(i,j))
490 dcm(i,j) = ( sw ) * dcmus(i,j) &
491 + ( 1.0_rp-sw ) * dcms(i,j)
492 dch(i,j) = ( sw ) * dchus(i,j) &
493 + ( 1.0_rp-sw ) * dchs(i,j)
494 dce(i,j) = ( sw ) * dceus(i,j) &
495 + ( 1.0_rp-sw ) * dces(i,j)
503 res(i,j) = l(i,j) - z1(i,j) * cm(i,j)**1.5_rp / ( karman * ch(i,j) * rib0(i,j) )
505 dres = lpls(i,j) - z1(i,j) * dcm(i,j)**1.5_rp / ( karman * dch(i,j) * rib0(i,j) )
507 l(i,j) = l(i,j) - res(i,j) / ( dres - res(i,j) ) * dl
511 if( maxval( abs( res(
is:
ie,
js:
je) ) ) < res_criteria )
exit 520 fmus_z1l = fm_unstable( z1(i,j),l(i,j) )
521 fhus_z1l = fh_unstable( z1(i,j),l(i,j) )
522 fmus_10ml = fm_unstable( 10.0_rp,l(i,j) )
523 fmus_2ml = fm_unstable( 2.0_rp,l(i,j) )
524 fhus_2ml = fh_unstable( 2.0_rp,l(i,j) )
526 fms_z1l = fm_stable( z1(i,j),l(i,j) )
527 fhs_z1l = fh_stable( z1(i,j),l(i,j) )
528 fms_10ml = fm_stable( 10.0_rp,l(i,j) )
529 fms_2ml = fm_stable( 2.0_rp,l(i,j) )
530 fhs_2ml = fh_stable( 2.0_rp,l(i,j) )
533 sw = 0.5_rp - sign(0.5_rp,l(i,j))
537 + ( 1.0_rp-sw ) * fms_z1l )
538 fh(i,j) = ( sw ) * fhus_z1l &
539 + ( 1.0_rp-sw ) * fhs_z1l
540 fm_10m(i,j) = max(eps, &
542 + ( 1.0_rp-sw ) * fms_10ml )
543 fm_2m(i,j) = max(eps, &
545 + ( 1.0_rp-sw ) * fms_2ml )
546 fh_2m(i,j) = ( sw ) * fhus_2ml &
547 + ( 1.0_rp-sw ) * fhs_2ml
553 r10m(i,j) =
log( 10.0_rp/z0m(i,j) ) / logz1z0m(i,j) &
554 / sqrt( fm_10m(i,j) / fm(i,j) )
560 psi(i,j) = sqrt(fm(i,j)) / fh(i,j) * logz1z0m(i,j)
561 psi_2m(i,j) = sqrt(fm_2m(i,j)) / fh_2m(i,j) *
log( 2.0_rp/z0m(i,j) )
563 tmp1 =
log( z0m(i,j)/z0h(i,j) ) / logz1z0m(i,j)
565 r2h(i,j) = ( tmp1 + psi_2m(i,j) ) &
566 / ( tmp1 + psi(i,j) )
568 tmp2 =
log( z0m(i,j)/z0e(i,j) ) / logz1z0m(i,j)
570 r2e(i,j) = ( tmp2 + psi_2m(i,j) ) &
571 / ( tmp2 + psi(i,j) )
576 if ( ite > itelim )
then 577 if(
io_l )
write(
io_fid_log,*)
'Error: reach maximum iteration in the function of ATMOS_PHY_SF_bulkcoef_beljaars.' 582 cm(i,j) = min( max( cm(i,j), atmos_phy_sf_bulkcoef_cm_min ), atmos_phy_sf_bulkcoef_cm_max )
583 ch(i,j) = min( max( ch(i,j), atmos_phy_sf_bulkcoef_ch_min ), atmos_phy_sf_bulkcoef_ch_max )
584 ce(i,j) = min( max( ce(i,j), atmos_phy_sf_bulkcoef_ce_min ), atmos_phy_sf_bulkcoef_ce_max )
590 r10m(i,j) = min( max( r10m(i,j), 0.0_rp ), 1.0_rp )
591 r2h(i,j) = min( max( r2h(i,j), 0.0_rp ), 1.0_rp )
592 r2e(i,j) = min( max( r2e(i,j), 0.0_rp ), 1.0_rp )
597 end subroutine atmos_phy_sf_bulkcoef_beljaars
601 function fm_unstable( Z, L )
result(fmUS)
607 real(RP),
intent(in) :: Z
608 real(RP),
intent(in) :: L
615 sqsqr = ( 1.0_rp - 16.0_rp * r )**0.25_rp
618 fmus =
log( ( 1.0_rp+sqsqr )**2 * ( 1.0_rp+sqsqr*sqsqr ) * 0.125_rp ) &
619 - 2.0_rp * atan( sqsqr ) &
623 end function fm_unstable
627 function fh_unstable( Z, L )
result(fhUS)
632 real(RP),
intent(in) :: Z
633 real(RP),
intent(in) :: L
640 sqr = sqrt( 1.0_rp - 16.0_rp * r )
643 fhus = 2.0_rp *
log( ( 1.0_rp+sqr ) * 0.5_rp )
646 end function fh_unstable
650 function fm_stable( Z, L )
result(fmS)
655 real(RP),
intent(in) :: Z
656 real(RP),
intent(in) :: L
660 real(RP),
parameter :: a = 1.0_rp
661 real(RP),
parameter :: b = 0.667_rp
662 real(RP),
parameter :: c = 5.0_rp
663 real(RP),
parameter :: d = 0.35_rp
671 fms = - a*r - b*( r - c/d )*exp( -d*r ) - b*c/d
674 end function fm_stable
678 function fh_stable( Z, L )
result(fhS)
683 real(RP),
intent(in) :: Z
684 real(RP),
intent(in) :: L
688 real(RP),
parameter :: a = 1.0_rp
689 real(RP),
parameter :: b = 0.667_rp
690 real(RP),
parameter :: c = 5.0_rp
691 real(RP),
parameter :: d = 0.35_rp
699 fhs = 1.0_rp - ( 1.0_rp + 2.0_rp/3.0_rp * a*r )**1.5_rp - b*( r - c/d )*exp( -d*r ) - b*c/d
702 end function fh_stable
integer, public is
start point of inner domain: x, local
integer, public je
end point of inner domain: y, local
subroutine, public prc_mpistop
Abort MPI.
logical, public io_l
output log or not? (this process)
subroutine, public atmos_phy_sf_bulkcoef_setup
real(rp), parameter, public const_karman
von Karman constant
integer, public ia
of x whole cells (local, with HALO)
real(rp), public const_grav
standard acceleration of gravity [m/s2]
integer, public js
start point of inner domain: y, local
procedure(bc), pointer, public atmos_phy_sf_bulkcoef
subroutine, public log(type, message)
integer, public ie
end point of inner domain: x, local
real(rp), public const_eps
small number
logical, public io_lnml
output log or not? (for namelist, this process)
real(rp), public const_pi
pi
integer, public io_fid_conf
Config file ID.
module ATMOSPHERE / Physics Surface bulk coefficient
integer, public io_fid_log
Log file ID.
integer, public ja
of y whole cells (local, with HALO)