CSIM4 (non-delta-Eddington) branch of ice_optics_SIS2
(SIS_optics.F90:371-409, Apache-2.0) — snow/ice albedo + the
Beer’s-law vertical partition of absorbed shortwave into the
surface, snow, per-layer ice, and transmitted-to-ocean terms.
The delta-Eddington branch (SIS_optics.F90 do_deltaEdd, spectral
direct/diffuse albedo bands) is deliberately NOT ported — CSIM4 is
SIS2’s non-delta-Eddington default and the only branch this PR
needs.
Everything pure + !$acc routine seq: called from inside the
per-column do concurrent driver in rdb_ice_column.
module~~rdb_ice_optics~~UsesGraph
module~rdb_ice_optics
rdb_ice_optics
module~rdb_constants
rdb_constants
module~rdb_ice_optics->module~rdb_constants
module~rdb_ice_enthalpy
rdb_ice_enthalpy
module~rdb_ice_optics->module~rdb_ice_enthalpy
pic_types
pic_types
module~rdb_constants->pic_types
module~rdb_ice_enthalpy->module~rdb_constants
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
module~~rdb_ice_optics~~UsedByGraph
module~rdb_ice_optics
rdb_ice_optics
module~rdb_ice_column
rdb_ice_column
module~rdb_ice_column->module~rdb_ice_optics
module~rdb_ice_basal_flux
rdb_ice_basal_flux
module~rdb_ice_basal_flux->module~rdb_ice_column
module~rdb_ice_state
rdb_ice_state
module~rdb_ice_basal_flux->module~rdb_ice_state
module~rdb_ice_evp
rdb_ice_evp
module~rdb_ice_evp->module~rdb_ice_column
module~rdb_ice_evp->module~rdb_ice_state
module~rdb_ice_frazil_uptake
rdb_ice_frazil_uptake
module~rdb_ice_frazil_uptake->module~rdb_ice_column
module~rdb_ice_frazil_uptake->module~rdb_ice_state
module~rdb_ice_init
rdb_ice_init
module~rdb_ice_init->module~rdb_ice_column
module~rdb_ice_init->module~rdb_ice_state
module~rdb_ice_state->module~rdb_ice_column
module~rdb_ice_thermo_driver
rdb_ice_thermo_driver
module~rdb_ice_thermo_driver->module~rdb_ice_column
module~rdb_ice_thermo_driver->module~rdb_ice_state
module~rdb_ice_transport
rdb_ice_transport
module~rdb_ice_transport->module~rdb_ice_column
module~rdb_ice_transport->module~rdb_ice_state
module~rdb_ice_itd
rdb_ice_itd
module~rdb_ice_transport->module~rdb_ice_itd
module~rdb_ocean_halo_state
rdb_ocean_halo_state
module~rdb_ice_transport->module~rdb_ocean_halo_state
module~rdb_ocean_console_stats
rdb_ocean_console_stats
module~rdb_ocean_console_stats->module~rdb_ice_column
module~rdb_ocean_diag_fills
rdb_ocean_diag_fills
module~rdb_ocean_diag_fills->module~rdb_ice_column
module~rdb_ocean_state
rdb_ocean_state
module~rdb_ocean_diag_fills->module~rdb_ocean_state
module~rdb_config
rdb_config
module~rdb_config->module~rdb_ice_init
module~rdb_driver
rdb_driver
module~rdb_driver->module~rdb_ocean_console_stats
module~rdb_driver->module~rdb_config
module~rdb_ocean_dyn
rdb_ocean_dyn
module~rdb_driver->module~rdb_ocean_dyn
module~rdb_ocean_engine
rdb_ocean_engine
module~rdb_driver->module~rdb_ocean_engine
module~rdb_driver->module~rdb_ocean_state
module~rdb_ice_atm_forcing
rdb_ice_atm_forcing
module~rdb_ice_atm_forcing->module~rdb_ice_state
module~rdb_ice_itd->module~rdb_ice_state
module~rdb_ice_ocean_coupler
rdb_ice_ocean_coupler
module~rdb_ice_ocean_coupler->module~rdb_ice_state
module~rdb_ice_ocean_coupler->module~rdb_ocean_halo_state
module~rdb_ice_snow
rdb_ice_snow
module~rdb_ice_snow->module~rdb_ice_state
module~rdb_ocean_api
rdb_ocean_api
module~rdb_ocean_api->module~rdb_ocean_diag_fills
module~rdb_ocean_api->module~rdb_config
module~rdb_ocean_diag_derived
rdb_ocean_diag_derived
module~rdb_ocean_api->module~rdb_ocean_diag_derived
module~rdb_ocean_api->module~rdb_ocean_dyn
module~rdb_ocean_api->module~rdb_ocean_engine
module~rdb_handle
rdb_handle
module~rdb_ocean_api->module~rdb_handle
module~rdb_ocean_diag_derived->module~rdb_ocean_diag_fills
module~rdb_ocean_diag_derived->module~rdb_ocean_state
module~rdb_ocean_dyn->module~rdb_ocean_console_stats
module~rdb_ocean_dyn->module~rdb_ocean_halo_state
module~rdb_ocean_engine->module~rdb_ice_basal_flux
module~rdb_ocean_engine->module~rdb_ice_evp
module~rdb_ocean_engine->module~rdb_ice_frazil_uptake
module~rdb_ocean_engine->module~rdb_ice_init
module~rdb_ocean_engine->module~rdb_ice_thermo_driver
module~rdb_ocean_engine->module~rdb_ice_transport
module~rdb_ocean_engine->module~rdb_ocean_diag_fills
module~rdb_ocean_engine->module~rdb_config
module~rdb_ocean_engine->module~rdb_ice_atm_forcing
module~rdb_ocean_engine->module~rdb_ice_itd
module~rdb_ocean_engine->module~rdb_ice_ocean_coupler
module~rdb_ocean_engine->module~rdb_ice_snow
module~rdb_ocean_engine->module~rdb_ocean_diag_derived
module~rdb_ocean_engine->module~rdb_ocean_dyn
module~rdb_ocean_engine->module~rdb_ocean_halo_state
module~rdb_ocean_engine->module~rdb_ocean_state
module~rdb_decomp
rdb_decomp
module~rdb_ocean_engine->module~rdb_decomp
module~rdb_ocean_data_forcing
rdb_ocean_data_forcing
module~rdb_ocean_engine->module~rdb_ocean_data_forcing
module~rdb_ocean_data_input
rdb_ocean_data_input
module~rdb_ocean_engine->module~rdb_ocean_data_input
module~rdb_ocean_setup
rdb_ocean_setup
module~rdb_ocean_engine->module~rdb_ocean_setup
module~rdb_ocean_stability_audit
rdb_ocean_stability_audit
module~rdb_ocean_engine->module~rdb_ocean_stability_audit
module~rdb_state
rdb_state
module~rdb_ocean_engine->module~rdb_state
module~rdb_ocean_halo_state->module~rdb_ice_state
module~rdb_ocean_state->module~rdb_ice_state
module~rdb_ocean_state->module~rdb_config
module~rdb_ocean_state->module~rdb_ocean_dyn
module~rdb_ocean_state->module~rdb_decomp
module~rdb_ocean_state->module~rdb_ocean_data_forcing
module~rdb_ocean_state->module~rdb_ocean_data_input
module~rdb_ocean_z_init
rdb_ocean_z_init
module~rdb_ocean_state->module~rdb_ocean_z_init
module~rdb_config_schema
rdb_config_schema
module~rdb_config_schema->module~rdb_config
module~rdb_decomp->module~rdb_config
module~rdb_handle->module~rdb_config
module~rdb_handle->module~rdb_ocean_engine
module~rdb_handle->module~rdb_ocean_state
module~rdb_ocean_data_forcing->module~rdb_config
module~rdb_ocean_data_forcing->module~rdb_ocean_halo_state
module~rdb_ocean_data_forcing->module~rdb_ocean_data_input
module~rdb_ocean_data_input->module~rdb_config
module~rdb_ocean_setup->module~rdb_config
module~rdb_ocean_setup->module~rdb_ocean_dyn
module~rdb_ocean_setup->module~rdb_ocean_halo_state
module~rdb_ocean_setup->module~rdb_ocean_state
module~rdb_ocean_setup->module~rdb_decomp
module~rdb_ocean_stability_audit->module~rdb_config
module~rdb_ocean_z_init->module~rdb_config
module~rdb_state->module~rdb_config
module~rdb_halo
rdb_halo
module~rdb_halo->module~rdb_decomp
module~rdb_ocean_fold_exchange
rdb_ocean_fold_exchange
module~rdb_ocean_fold_exchange->module~rdb_decomp
module~rdb_ocean_halo
rdb_ocean_halo
module~rdb_ocean_halo->module~rdb_decomp
module~rdb_ocean_restart_io
rdb_ocean_restart_io
module~rdb_ocean_restart_io->module~rdb_decomp
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Variables
Type
Visibility Attributes
Name
Initial
real(kind=wp),
public,
parameter
::
ICE_ALB_ICE
=
0.5826_wp
Cold bare-ice albedo (non-slab default) — SIS2 ICE_ALBEDO.
real(kind=wp),
public,
parameter
::
ICE_ALB_SNOW
=
0.85_wp
Cold-snow albedo — SIS2 SNOW_ALBEDO.
real(kind=wp),
public,
parameter
::
ICE_OPT_DEP_ICE
=
0.67_wp
E-folding optical depth of penetrating SW in ice (m) — SIS2
ICE_OPTICAL_DEPTH.
real(kind=wp),
public,
parameter
::
ICE_PEN_ICE
=
0.3_wp
Fraction of absorbed SW that penetrates below the surface skin
for bare ice — SIS2 ICE_SW_PEN_FRAC.
real(kind=wp),
public,
parameter
::
ICE_SNOW_PATCH
=
0.02_wp
Thin-snow masking depth (m) — inline 0.02 at
SIS_optics.F90:373; kept as a named constant here.
real(kind=wp),
public,
parameter
::
ICE_T_RANGE_MELT
=
1.0_wp
Temperature range (degC) over which the melting-albedo
reduction ramps in — SIS2 T_RANGE_MELT.
Subroutines
CSIM4 albedo + Beer’s-law vertical SW partition
(SIS_optics.F90:371-409). Exact port; inline literals
0.1235/0.075 (melt-albedo reductions) and 5.0/0.5
(thin-ice atan ramp) and 0.06 (thin-ice albedo floor) stay
inline per SIS2 (SIS_optics.F90:378-384).
Read more…
Arguments
Type
Intent Optional Attributes
Name
integer,
intent(in)
::
nk
Number of ice layers (declared first — decl-order).
real(kind=wp),
intent(in)
::
hs
Snow thickness (m).
real(kind=wp),
intent(in)
::
hi
Ice thickness (m).
real(kind=wp),
intent(in)
::
ts
Skin/surface temperature stand-in (degC).
real(kind=wp),
intent(in)
::
sal_ice_top
Bulk salinity of the top ice layer (PSU) — sets the
melt-onset freezing temperature.
real(kind=wp),
intent(out)
::
albedo
Combined snow+ice broadband albedo (nondim).
real(kind=wp),
intent(out)
::
abs_sfc
Fraction of absorbed SW deposited at the surface skin.
real(kind=wp),
intent(out)
::
abs_snow
Fraction of absorbed SW deposited in the snow (always 0
in the CSIM4 branch — SIS2 keeps the term for symmetry
with the delta-Eddington branch).
real(kind=wp),
intent(out)
::
abs_ice_lay (nk)
Fraction of absorbed SW deposited per ice layer, TOP-DOWN
(abs_ice_lay(1) = top ice layer).
real(kind=wp),
intent(out)
::
abs_ocn
Fraction of absorbed SW transmitted through to the ocean.
real(kind=wp),
intent(out)
::
abs_int
Fraction of absorbed SW deposited in the ice interior
(pen - sw_frac_top after the Beer’s-law drain).
real(kind=wp),
intent(out)
::
pen
Fraction of the total (post-albedo) SW that penetrates
below the surface skin.