Skip to content

cpl(__oifs): coupled-slab ice surface temperature + sea-ice-thickness exchange - #957

Open
JanStreffing wants to merge 1 commit into
mainfrom
oifs-coupled-slab-ice-surftemp
Open

cpl(__oifs): coupled-slab ice surface temperature + sea-ice-thickness exchange#957
JanStreffing wants to merge 1 commit into
mainfrom
oifs-coupled-slab-ice-surftemp

Conversation

@JanStreffing

Copy link
Copy Markdown
Collaborator

What

Adds the FESOM side of OIFS coupled-slab sea-ice coupling. Under coupled-slab mode (LNEMOLIMTEMP=.false., LNEMOLIMTHK=.true.) the atmosphere solves the ice-tile skin temperature itself, using slab conduction through the coupled ice/snow thickness rather than a fixed nominal slab. This wires FESOM to feed that scheme and to book the growth flux consistently.

Changes (all #ifdef __oifs / __ifsinterface)

  • Send effective sea-ice thickness as a new coupled field sit_feom (cpl_send slot 8, nsend 7→8 under __oifs; gen_forcing_couple). Sent grid-mean (per-ice × concentration), weighted convention like ist/alb, so the atmosphere's slab conduction uses the real ice thickness.
  • ist_ref anchor — remember the ice surface temperature as actually transmitted at the OASIS send (the temperature the atmosphere evaluated its ice-tile flux at), captured only on real transmissions.
  • ice_surftemp: dQ/dT-linearized (implicit) skin solve anchored at ist_ref, zlam = 4·ε·σ·tref³ + turbulent sensitivity. Unconditionally stable regardless of snow/ice insulation; leaves the fixed point unchanged where the surface tracks the coupling temperature. It sets the internal skin temperature used for albedo / melt-pond state only.
  • Growth budget: the atmosphere owns the surface energy balance in coupled-slab mode, so Qatmice = -a2ihf (received atmosphere flux) directly.

Compatibility

Inert for non-OIFS builds. For OIFS builds, sit_feom is defined via oasis_def_var as an extra send; OASIS leaves it uncoupled (a no-op put) wherever the namcouple does not reference it, so this does not require a coordinated namcouple change to remain runnable — only a namcouple that adds sit_feom needs a FESOM that provides it.

Validation

Multi-year AWI-ESM3 (FESOM2-CORE3-cavity + OIFS-48r1) coupled spin-ups run stably with this + the OIFS receive-side; the implicit solve holds through the polar-night temperature range with no cold runaway.

… exchange

Under OIFS coupled-slab mode (LNEMOLIMTEMP=.false., LNEMOLIMTHK=.true.) the
atmosphere solves the ice-tile skin temperature itself, using slab conduction
through the coupled ice/snow thickness. This adds the FESOM side of that
coupling:

- Send the effective sea-ice thickness to the atmosphere as a new coupled
  field sit_feom (cpl_send slot 8, nsend 7->8 under __oifs) so the atmosphere's
  slab conduction uses the real ice thickness instead of a fixed nominal.
  Sent grid-mean (per-ice * concentration), weighted convention like ist/alb.

- ist_ref anchor: remember the ice surface temperature as actually transmitted
  at the OASIS send (the temperature the atmosphere evaluated its ice-tile flux
  at), captured only on real transmissions.

- ice_surftemp: replace the explicit skin update with a dQ/dT-linearized
  (implicit) solve anchored at ist_ref, zlam = 4*eps*sigma*tref**3 + turbulent
  sensitivity. This is unconditionally stable regardless of snow/ice insulation
  and leaves the fixed point unchanged where the surface tracks the coupling
  temperature. It sets the internal skin temperature used for albedo/melt-pond
  state only.

- Growth budget: the atmosphere owns the surface energy balance in coupled-slab
  mode, so Qatmice = -a2ihf (the received atmosphere flux) directly.

Inert for non-OIFS builds (all changes are #ifdef __oifs / __ifsinterface).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant