Go to the documentation of this file.
48 real(RP),
private,
allocatable :: WSTR (:,:)
49 real(RP),
private,
allocatable :: QVEF (:,:)
50 real(RP),
private,
allocatable :: SR (:,:)
51 real(RP),
private,
allocatable :: ATMOS_W(:,:)
99 log_info(
"OCEAN_driver_setup",*)
'Setup'
111 log_error(
"OCEAN_driver_setup",*)
'OCEAN_DYN_TYPE is invalid: ', trim(
ocean_dyn_type)
116 case (
'FIXED-TEMP' )
119 log_error(
"OCEAN_driver_setup",*)
'OCEAN_SFC_TYPE is invalid: ', trim(
ocean_sfc_type)
129 log_error(
"OCEAN_driver_setup",*)
'OCEAN_ICE_TYPE is invalid: ', trim(
ocean_ice_type)
135 case (
'NAKAJIMA00' )
144 log_error(
"OCEAN_driver_setup",*)
'OCEAN_ALB_TYPE is invalid: ', trim(
ocean_alb_type)
161 log_error(
"OCEAN_driver_setup",*)
'OCEAN_RGN_TYPE is invalid: ', trim(
ocean_rgn_type)
171 allocate( atmos_w(
oia,
oja) )
179 atmos_w(:,:) = 0.0_rp
200 log_info(
"OCEAN_driver_finalize",*)
'Finalize'
218 case (
'NAKAJIMA00' )
235 deallocate( atmos_w )
257 hydrometeor_lhv => atmos_hydrometeor_lhv, &
258 hydrometeor_lhs => atmos_hydrometeor_lhs, &
291 bulkflux_diagnose_scales
367 logical,
intent(in) :: force
371 real(rp) :: atmos_uabs (
oia,
oja)
372 real(rp) :: sfc_temp (
oia,
oja)
374 real(rp) :: sfc_z0m (
oia,
oja)
375 real(rp) :: sfc_z0h (
oia,
oja)
376 real(rp) :: sfc_z0e (
oia,
oja)
377 real(rp) :: subsfc_temp (
oia,
oja)
378 real(rp) :: tc_dz (
oia,
oja)
379 real(rp) :: sflx_mw (
oia,
oja)
380 real(rp) :: sflx_mu (
oia,
oja)
381 real(rp) :: sflx_mv (
oia,
oja)
382 real(rp) :: sflx_sh (
oia,
oja)
383 real(rp) :: sflx_lh (
oia,
oja)
384 real(rp) :: sflx_qv (
oia,
oja)
385 real(rp) :: ocean_sflx_qv(
oia,
oja)
390 real(rp) :: sflx_hbalance(
oia,
oja)
391 real(rp) :: sflx_gh (
oia,
oja)
392 real(rp) :: sflx_water (
oia,
oja)
393 real(rp) :: sflx_engi (
oia,
oja)
394 real(rp) :: ice_mass (
oia,
oja)
395 logical :: exists_ice (
oia,
oja)
400 integer ::
k, i, j, iq, idir, irgn
425 exists_ice(i,j) = .false.
426 if( exists_ocean(i,j) .AND.
ocean_ice_frac(i,j) > 0.0_rp ) exists_ice(i,j) = .true.
485 case (
'NAKAJIMA00' )
489 sfc_albedo(:,:,:,:) )
498 sfc_albedo(:,:,:,:) )
507 if ( exists_ocean(i,j) )
then
547 case (
'FIXED-TEMP' )
571 sfc_albedo(:,:,:,:), &
583 ocean_sflx_qv(:,:), &
602 if ( exists_ocean(i,j) )
then
616 call file_history_in(
ocean_u10(:,:),
'OCEAN_OCN_U10',
'Wind velocity u at 10 m on open ocean surface',
'm/s' )
617 call file_history_in(
ocean_v10(:,:),
'OCEAN_OCN_V10',
'Wind velocity v at 10 m on open ocean surface',
'm/s' )
618 call file_history_in(
ocean_t2(:,:),
'OCEAN_OCN_T2',
'Air temperature at 2m on open ocean surface',
'K' )
619 call file_history_in(
ocean_q2(:,:),
'OCEAN_OCN_Q2',
'Specific humidity at 2m on open ocean surface',
'kg/kg' )
628 if ( exists_ocean(i,j) )
then
640 ocean_sflx_qv(i,j) = ocean_sflx_qv(i,j) * sfc_frac
678 case (
'NAKAJIMA00' )
681 sfc_albedo(:,:,:,:) )
685 sfc_albedo(:,:,:,:) )
704 case (
'MILLER92',
'MOON07' )
740 case (
'FIXED-TEMP' )
745 if ( exists_ocean(i,j) )
then
775 sfc_albedo(:,:,:,:), &
804 if ( exists_ocean(i,j) )
then
820 if ( exists_ocean(i,j) )
then
829 ocean_sflx_qv(i,j) = ocean_sflx_qv(i,j) + sflx_qv(i,j) *
ocean_ice_frac(i,j)
854 if ( exists_ocean(i,j) )
then
855 ocean_sfc_albedo(i,j,idir,irgn) =
ocean_sfc_albedo(i,j,idir,irgn) + sfc_albedo(i,j,idir,irgn) *
ocean_ice_frac(i,j)
872 if ( exists_ocean(i,j) )
then
873 sflx_hbalance(i,j) = sflx_gh(i,j) + sflx_engi(i,j)
882 sflx_hbalance(:,:), &
900 if ( exists_ocean(i,j) )
then
902 sflx_water(i,j) = 0.0_rp
903 sflx_engi(i,j) = 0.0_rp
911 call file_history_in( u10(:,:),
'OCEAN_ICE_U10',
'Wind velocity u at 10 m on sea ice surface',
'm/s' )
912 call file_history_in( v10(:,:),
'OCEAN_ICE_V10',
'Wind velocity v at 10 m on sea ice surface',
'm/s' )
913 call file_history_in( t2(:,:),
'OCEAN_ICE_T2',
'Air temperature at 2m on sea ice surface',
'K' )
914 call file_history_in( q2(:,:),
'OCEAN_ICE_Q2',
'Specific humidity at 2m on sea ice surface',
'kg/kg' )
923 if ( exists_ocean(i,j) )
then
938 mask = exists_ocean(:,:) )
950 if ( exists_ocean(i,j) )
then
967 ocean_grid_cartesc_real_vol(:,:,:), &
968 ocean_grid_cartesc_real_totvol )
1033 real(rp) :: mass_flux(
oia,
oja)
1034 real(rp) :: engi_flux(
oia,
oja)
1035 real(rp) :: mass_supl(
oia,
oja)
1036 real(rp) :: engi_supl(
oia,
oja)
1038 real(rp) :: sflx_gh(
oia,
oja)
1040 real(rp) :: ocean_temp_ks(
oia,
oja)
1070 if ( exists_ocean(i,j) )
then
1083 exists_ocean(:,:), &
1093 if ( exists_ocean(i,j) )
then
1106 exists_ocean(:,:), &
1122 if ( exists_ocean(i,j) )
then
1142 exists_ocean(:,:), &
1144 ocean_temp_ks(:,:), &
1167 if ( exists_ocean(i,j) )
then
1273 logical,
intent(in) :: countup
1295 exists_ocean(:,:), &
integer, parameter, public n_rad_dir
subroutine, public ocean_dyn_offline_setup
Setup.
subroutine, public ocean_dyn_slab(OKMAX, OKS, OKE, OIA, OIS, OIE, OJA, OJS, OJE, OCEAN_TEMP_t, OCEAN_SFLX_G, OCEAN_SFLX_water, calc_flag, dt, NOWDAYSEC, OCEAN_TEMP, MASS_SUPL, ENGI_SUPL)
Slab ocean model.
real(rp), dimension(:,:), allocatable, public ocean_ocn_z0m
surface roughness length for momentum, open ocean [m]
subroutine, public ocean_phy_roughness_seaice(OIA, OIS, OIE, OJA, OJS, OJE, Z0M, Z0H, Z0E)
real(rp), dimension(:,:), allocatable, public ocean_sflx_mv
ocean surface v-momentum flux [kg/m/s2]
module ocean / dynamics / offline
subroutine, public ocean_phy_albedo_const(OIA, OIS, OIE, OJA, OJS, OJE, SFC_albedo)
subroutine, public ocean_driver_update
Ocean step.
character(len=h_short), public ocean_ice_type
real(dp), public time_nowdaysec
second of current time [sec]
real(rp), dimension(:,:), allocatable, public ocean_sflx_mu
ocean surface u-momentum flux [kg/m/s2]
subroutine, public prc_abort
Abort Process.
integer, parameter, public i_r_direct
real(rp), dimension(:,:), allocatable, public atmos_pbl
real(rp), dimension(:,:), allocatable, public ocean_ice_temp
sea ice temperature [K]
real(rp), dimension(:,:), pointer, public ocean_oflx_water
ocean-ice surface water mass flux [kg/m2/s]
real(rp), public ocean_grid_cartesc_real_totarea
total area
real(rp), dimension(:,:), allocatable, public atmos_sflx_engi
subroutine, public ocean_phy_ice_adjustment(OIA, OIS, OIE, OJA, OJS, OJE, calc_flag, OCEAN_DEPTH, OCEAN_TEMP, ICE_TEMP, ICE_MASS, MASS_FLUX, ENGI_FLUX, MASS_SUPL, ENGI_SUPL)
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0e
ocean surface roughness length for vapor [m]
character(len=h_short), public ocean_alb_type
module ocean / physics / ice / simple
real(rp), dimension(:,:), allocatable, public ocean_sflx_mw
ocean surface w-momentum flux [kg/m/s2]
real(rp), dimension(:,:,:), allocatable, public ocean_salt_t
tendency of OCEAN_OCN_SALT
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_z1
Height of the lowermost grid from surface (cell center) [m].
subroutine, public ocean_driver_finalize
Finalize.
integer, parameter, public i_r_diffuse
real(rp), dimension(:,:), allocatable, public ocean_ice_rlmo
real(rp), dimension(:,:), allocatable, public ocean_q2
ocean surface water vapor at 2m [kg/kg]
subroutine, public ocean_surface_get
Get surface boundary from other model.
subroutine, public ocean_phy_albedo_nakajima00_setup
integer, parameter, public i_r_ir
real(rp), dimension(:,:), allocatable, target, public ocean_ustar
ocean surface friction velocity [m/s]
real(rp), public const_eps
small number
subroutine, public ocean_phy_albedo_const_setup
subroutine, public ocean_phy_roughness_const(OIA, OIS, OIE, OJA, OJS, OJE, Z0M, Z0H, Z0E)
real(rp), dimension(:,:,:), allocatable, public ocean_temp_t
tendency of OCEAN_OCN_TEMP
subroutine, public prof_rapstart(rapname_base, level, disable_barrier)
Start raptime.
real(rp), dimension(:,:), allocatable, public atmos_cossza
module atmosphere / hydrometeor
real(rp), dimension(:,:), allocatable, public ocean_ice_wstar
module ocean / physics / surface roughness length / moon07
real(rp), dimension(:,:), allocatable, public ocean_ice_qstar
subroutine, public atmos_phy_ch_driver_ocean_flux(SFLX_QTRC)
Driver.
real(rp), dimension(:,:), allocatable, public ocean_v10
ocean surface velocity v at 10m [m/s]
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0m
ocean surface roughness length for momentum [m]
logical, public atmos_hydrometeor_dry
subroutine, public cpl_phy_sfc_fixed_temp_setup
Setup.
module ocean / physics / surface albedo / nakajima00
subroutine, public ocean_phy_tc_seaice_setup
real(rp), dimension(:,:,:), allocatable, public ocean_sflx_qtrc
ocean surface tracer flux [kg/m2/s]
module ocean / grid / cartesianC
real(rp), dimension(:,:), allocatable, public ocean_grid_cartesc_real_area
area of grid cell
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), allocatable, public ocean_sflx_sh
ocean surface sensible heat flux [J/m2/s]
real(rp), dimension(:,:), pointer, public ocean_ocn_tstar
real(rp), dimension(:,:), pointer, public ocean_ocn_ustar
subroutine, public ocean_dyn_slab_setup(DEPTH)
Setup.
subroutine, public ocean_surface_set(countup)
Put surface boundary to other model.
subroutine, public ocean_phy_roughness_moon07_setup
real(rp), dimension(:,:), pointer, public ocean_oflx_gh
ocean-ice surface water heat flux [J/m2/s]
real(rp), dimension(:,:), allocatable, target, public ocean_sflx_gh
ocean surface water heat flux [J/m2/s]
character(len=h_short), public ocean_sfc_type
real(rp), dimension(:,:,:), allocatable, public ocean_vvel_t
tendency of OCEAN_OCN_VVEL
real(rp), dimension(:,:), pointer, public ocean_ocn_qstar
subroutine, public ocean_phy_roughness_miller92_setup
subroutine, public ocean_phy_roughness_miller92(OIA, OIS, OIE, OJA, OJS, OJE, Uabs, Z0M, Z0H, Z0E)
real(rp), dimension(:,:), allocatable, public ocean_engi_supl
real(rp), dimension(:,:), allocatable, public atmos_sflx_water
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0h
ocean surface roughness length for heat [m]
real(rp), dimension(:,:,:), allocatable, public ocean_uvel_t
tendency of OCEAN_OCN_UVEL
subroutine, public ocean_phy_albedo_nakajima00(OIA, OIS, OIE, OJA, OJS, OJE, cosSZA, SFC_albedo)
real(rp), dimension(:,:,:), allocatable, public ocean_uvel
ocean zonal velocity [m/s]
character(len=h_short), public ocean_dyn_type
subroutine, public ocean_phy_albedo_seaice_setup
real(rp), dimension(:,:,:,:), allocatable, public atmos_sflx_rad_dn
module ocean / physics / surface thermal conductivity
subroutine, public cpl_putocn(SFC_TEMP, SFC_albedo, SFC_Z0M, SFC_Z0H, SFC_Z0E, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_LH, SFLX_GH, SFLX_QTRC, U10, V10, T2, Q2, mask, countup)
real(rp), dimension(:,:), allocatable, public atmos_sfc_dens
real(rp), dimension(:,:), allocatable, public ocean_ice_temp_t
tendency of OCEAN_ICE_TEMP
real(rp), public const_huge
huge number
character(len=h_short), public ocean_rgn_type
module ocean / physics / surface albedo
subroutine, public ocean_driver_calc_tendency(force)
Calculate tendency.
real(rp), dimension(:), allocatable, public ocean_grid_cartesc_cdz
z-length of control volume [m]
real(rp), dimension(:,:), allocatable, target, public ocean_tstar
ocean surface tempreture scale [K]
real(dp), public time_dtsec_ocean
time interval of ocean step [sec]
real(rp), dimension(:,:), allocatable, public atmos_temp
module ocean / grid / cartesianC / index
logical, public atmos_sw_phy_ch
subroutine, public ocean_phy_tc_seaice(OIA, OIS, OIE, OJA, OJS, OJE, ICE_MASS, ICE_FRAC, mask, TC_dz)
real(rp), dimension(:,:), pointer, public ocean_ocn_rlmo
subroutine, public ocean_phy_albedo_seaice(OIA, OIS, OIE, OJA, OJS, OJE, SFC_albedo)
real(rp), dimension(:,:), allocatable, target, public ocean_wstar
ocean surface convective velocity scale [m/s]
module ocean / physics / surface roughness length
real(rp), dimension(:,:), allocatable, public ocean_mass_supl
real(rp), dimension(:,:), pointer, public ocean_oflx_engi
ocean-ice surface internal energy flux [J/m2/s]
real(rp), dimension(:,:), allocatable, target, public ocean_sflx_water
ocean surface water mass flux [kg/m2/s]
subroutine, public ocean_phy_ice_simple(OIA, OIS, OIE, OJA, OJS, OJE, iflx_water, iflx_hbalance, subsfc_temp, TC_dz, ICE_TEMP, ICE_MASS, ICE_FRAC, calc_flag, dt, ICE_TEMP_t, ICE_MASS_t, sflx_G, sflx_water, sflx_RHOE)
Slab ocean model.
subroutine, public ocean_dyn_offline(OKMAX, OKS, OKE, OIA, OIS, OIE, OJA, OJS, OJE, calc_flag, dt, NOWDAYSEC, OCEAN_TEMP)
Slab ocean model.
real(rp), dimension(:,:), allocatable, public ocean_ice_tstar
logical, dimension(:,:), allocatable, public landuse_exists_ocean
ocean calculation flag
module ATMOSPHERE / Physics Chemistry
real(rp), dimension(:,:), allocatable, public ocean_ice_mass
sea ice mass [kg]
real(rp), dimension(:,:,:), allocatable, public ocean_grid_cartesc_real_vol
volume of grid cell
real(rp), dimension(:,:,:), allocatable, public ocean_vvel
ocean meridional velocity [m/s]
logical, public statistics_checktotal
calc&report variable totals to logfile?
module coupler / surface-atmospehre
subroutine, public ocean_driver_setup
Setup.
real(rp), dimension(:,:), allocatable, target, public ocean_sflx_engi
ocean surface internal energy flux [J/m2/s]
integer, parameter, public i_r_vis
subroutine, public ocean_phy_ice_setup
real(rp), dimension(:,:), allocatable, public atmos_v
subroutine, public cpl_getatm_ocn(TEMP, PRES, W, U, V, DENS, QV, PBL, SFC_DENS, SFC_PRES, SFLX_rad_dn, cosSZA, SFLX_water, SFLX_ENGI)
real(rp), dimension(:,:,:,:), allocatable, public ocean_sfc_albedo
ocean surface albedo (direct/diffuse,IR/near-IR/VIS) (0-1)
real(rp), dimension(:,:), allocatable, public atmos_dens
subroutine, public ocean_phy_roughness_seaice_setup
subroutine, public cpl_phy_sfc_fixed_temp(IA, IS, IE, JA, JS, JE, TMPA, PRSA, WA, UA, VA, RHOA, QVA, LH, Z1, PBL, RHOS, PRSS, RFLXD, TMPS, WSTR, QVEF, ALBEDO, Rb, Z0M, Z0H, Z0E, calc_flag, dt, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, QVFLX, GFLX, Ustar, Tstar, Qstar, Wstar, RLmo, U10, V10, T2, Q2)
real(rp), dimension(:,:), allocatable, public ocean_sfc_temp
ocean surface skin temperature [K]
real(rp), public lhf
latent heat of fusion for use [J/kg]
subroutine, public ocean_phy_roughness_const_setup
subroutine, public ocean_phy_ice_fraction(OIA, OIS, OIE, OJA, OJS, OJE, ICE_MASS, ICE_FRAC)
subroutine, public prof_rapend(rapname_base, level, disable_barrier)
Save raptime.
module ocean / grid / cartesianC / real
real(rp), dimension(:,:), allocatable, target, public ocean_rlmo
ocean surface inversed Obukhov length [1/m]
real(rp), dimension(:,:), allocatable, public ocean_ice_frac
area fraction of sea ice [1]
real(rp), dimension(:,:), allocatable, public ocean_sflx_lh
ocean surface latent heat flux [J/m2/s]
real(rp), dimension(:,:,:), allocatable, public ocean_salt
ocean salinity [PSU]
real(rp), dimension(:,:), allocatable, public ocean_ice_mass_t
tendency of OCEAN_ICE_MASS
real(rp), dimension(:,:), allocatable, public atmos_pres
integer, parameter, public n_rad_rgn
real(rp), dimension(:,:), allocatable, public ocean_u10
ocean surface velocity u at 10m [m/s]
real(rp), dimension(:,:), allocatable, public atmos_u
real(rp), dimension(:,:), pointer, public ocean_ocn_wstar
module ocean / physics / surface roughness length / miller92
real(rp), dimension(:,:), allocatable, target, public ocean_qstar
ocean surface moisture scale [kg/kg]
real(rp), public cv_water
CV for water [J/kg/K].
real(rp), dimension(:,:), allocatable, public ocean_t2
ocean surface temperature at 2m [K]
real(rp), public ocean_grid_cartesc_real_totvol
total volume
real(rp), public cv_ice
CV for ice [J/kg/K].
subroutine, public ocean_phy_roughness_moon07(OIA, OIS, OIE, OJA, OJS, OJE, Uabs, Z1, mask, Z0M, Z0H, Z0E)
real(rp), dimension(:,:), allocatable, public atmos_sfc_pres
module ocean / dynamics / slab
subroutine, public ocean_vars_check(force)
Budget monitor for ocean.
module coupler / surface fixed temp model
real(rp), dimension(:,:,:), allocatable, public ocean_temp
ocean temperature [K]
real(rp), dimension(:,:), allocatable, public ocean_ice_ustar
real(rp), dimension(:,:), allocatable, public atmos_qv