rdb_ice_atm_forcing Module

Fills ocean_sea_ice_t’s coupleable seam (atm_sf0/atm_dsfdt/atm_sw_dn/atm_fprec) from the &ocean_ice_nml scalar restoring knobs. SF(T) = lambda(T - T_air) => sf_0 = -lambdaT_air (upward-positive SEB intercept), dsf_dt = lambda (thermostat slope), sw_dn = sw_down (uniform), atm_fprec = snowfall (uniform, PR 26). The seam is identical whether this filler, a bulk formula, or a live coupler fills it – that is what makes the model coupleable (PLAN_ICE_PR3c S”coupleable seam”; PLAN_PR26_snowfall.md S13 fixes atm_fprec’s shape/units/lifecycle for PR-55 to fill from data).

v1 SCALAR/UNIFORM: every physical cell gets the same (sf_0, dsf_dt, sw_dn, fprec). 2D-field / file inputs are the bulk-flux subsystem’s job (deferred). Ghost rows are filled too (harmless – ice_thermo_columns only steps physical cells). Default-off byte- identity: never called unless ice%enable.


Uses

  • module~~rdb_ice_atm_forcing~~UsesGraph module~rdb_ice_atm_forcing rdb_ice_atm_forcing module~rdb_constants rdb_constants module~rdb_ice_atm_forcing->module~rdb_constants module~rdb_ice_state rdb_ice_state module~rdb_ice_atm_forcing->module~rdb_ice_state pic_types pic_types module~rdb_constants->pic_types module~rdb_ice_state->module~rdb_constants iso_fortran_env iso_fortran_env module~rdb_ice_state->iso_fortran_env module~rdb_grid rdb_grid module~rdb_ice_state->module~rdb_grid module~rdb_ice_column rdb_ice_column module~rdb_ice_state->module~rdb_ice_column module~rdb_ice_enthalpy rdb_ice_enthalpy module~rdb_ice_state->module~rdb_ice_enthalpy module~rdb_mem_report rdb_mem_report module~rdb_ice_state->module~rdb_mem_report module~rdb_grid->module~rdb_constants module~rdb_ice_column->module~rdb_constants module~rdb_ice_column->module~rdb_ice_enthalpy module~rdb_ice_mass rdb_ice_mass module~rdb_ice_column->module~rdb_ice_mass module~rdb_ice_optics rdb_ice_optics module~rdb_ice_column->module~rdb_ice_optics module~rdb_ice_enthalpy->module~rdb_constants module~rdb_mem_report->module~rdb_constants module~rdb_mem_report->iso_fortran_env pic_logger pic_logger module~rdb_mem_report->pic_logger pic_strings pic_strings module~rdb_mem_report->pic_strings module~rdb_ice_mass->module~rdb_constants module~rdb_ice_mass->module~rdb_ice_enthalpy module~rdb_ice_optics->module~rdb_constants module~rdb_ice_optics->module~rdb_ice_enthalpy

Used by

  • module~~rdb_ice_atm_forcing~~UsedByGraph module~rdb_ice_atm_forcing rdb_ice_atm_forcing module~rdb_ocean_engine rdb_ocean_engine module~rdb_ocean_engine->module~rdb_ice_atm_forcing module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_engine module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_engine module~rdb_ocean_api rdb_ocean_api module~rdb_ocean_api->module~rdb_ocean_engine module~rdb_ocean_api->module~rdb_handle

Subroutines

public pure subroutine ice_atm_forcing_restoring(ice, air_temp, restore_lambda, sw_down, snowfall)

Outer shim: forward the four seam arrays + four scalars to the device kernel. No registry indirection here, but keep the shim+_impl split for the explicit-shape device-kernel discipline.

Arguments

Type IntentOptional Attributes Name
type(ocean_sea_ice_t), intent(inout) :: ice
real(kind=wp), intent(in) :: air_temp
real(kind=wp), intent(in) :: restore_lambda
real(kind=wp), intent(in) :: sw_down
real(kind=wp), intent(in) :: snowfall

private pure subroutine ice_atm_forcing_restoring_impl(sf0, dsfdt, sw, fpr, air_temp, restore_lambda, sw_down, snowfall, nx, ny)

Full-array fill (incl. ghosts). Explicit-shape + decl-order (dims first). Runs on device-resident seam arrays (mapped by ice%enter_data).

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: sf0(nx,ny)
real(kind=wp), intent(inout) :: dsfdt(nx,ny)
real(kind=wp), intent(inout) :: sw(nx,ny)
real(kind=wp), intent(inout) :: fpr(nx,ny)
real(kind=wp), intent(in) :: air_temp
real(kind=wp), intent(in) :: restore_lambda
real(kind=wp), intent(in) :: sw_down
real(kind=wp), intent(in) :: snowfall
integer, intent(in) :: nx
integer, intent(in) :: ny