Current state
The FESOM2 melt pond scheme (src/ice_meltponds.F90, src/ice_thermo_cpl.F90) is implemented as an albedo parameterisation only. The state variables apnd (pond area fraction), hpnd (pond depth), and ipnd (lid thickness) are tracked exclusively to compute a more realistic surface albedo via meltpond_albedo. There is no coupling of pond water to the ocean freshwater budget.
What fpond is — and isn't
meltpond_area returns fpond = (volpn - volpn_init) / dt, explicitly documented as a "diagnostic pond freshwater flux". It is computed but never used to correct the ocean surface forcing. In ice_thermo_cpl.F90, fpond is discarded after the call.
Where pond water goes (or doesn't)
Pond water can disappear from the model state without any corresponding freshwater flux to the ocean in at least three situations:
- Ice too thin / too much snow:
apnd = hpnd = ipnd = 0 — pond water reset to zero
- Freeboard cap exceeded:
volpn truncated to maintain positive freeboard — excess water discarded
- Complete ice melt-out:
aice < puny triggers the same reset — all pond water vanishes
Meanwhile, the total ice melt is already counted as ocean freshwater flux:
fwice = -dhgrowth * rhoice ! ALL melt → ocean, including fraction retained in ponds
fw = PmEocn*rhofwt + fwice + fwsnw
So during active pond growth, fw overcounts the freshwater reaching the ocean by fpond. When ponds later drain or reset, the water simply disappears — there is no compensating flux.
The question
Should FESOM2's coupled configuration implement proper melt pond freshwater coupling?
In the real ocean–ice system, melt pond water eventually reaches the ocean through:
- Drainage through the ice (brine channels, cracks) — occurs progressively during summer
- Release at ice melt-out — pond water enters the ocean when the ice floe breaks up
- Overflow at ice edges — ponds spill laterally when they exceed the freeboard
In a fully coupled ESM context (FESOM2 + AWI-CM), the freshwater budget closure affects:
- Surface salinity in ice-covered regions during summer — affects mixed layer stability and autumn convection
- Sea ice formation onset in autumn — biased by artificially high/low surface salinity
- AMOC and deep water formation — sensitive to Arctic/subarctic freshwater anomalies in long integrations
A simple but physically reasonable implementation would:
- Subtract the pond growth rate from the ocean freshwater flux during pond formation:
fw = fw - fpond * rhofresh / rhowat
- Add a drainage parameterisation: a fraction of
hpnd drains to the ocean each timestep (e.g., following the Flocco et al. or Icepack meltpond_topo approach)
- Ensure that when ponds reset (ice melt-out, freeboard cap), the pond volume is transferred to
fw rather than discarded
Related
- The Icepack library (already used in FESOM2 for the icepack-coupled branch) includes a more complete
meltpond_topo scheme with explicit drainage to the ocean — this could be the reference implementation.
- Fix F from the internal QA report (2026-06-25) flagged the
fpond omission from fw; on closer inspection the omission is intentional given the albedo-only design, but the issue is real for a coupled configuration.
Current state
The FESOM2 melt pond scheme (
src/ice_meltponds.F90,src/ice_thermo_cpl.F90) is implemented as an albedo parameterisation only. The state variablesapnd(pond area fraction),hpnd(pond depth), andipnd(lid thickness) are tracked exclusively to compute a more realistic surface albedo viameltpond_albedo. There is no coupling of pond water to the ocean freshwater budget.What
fpondis — and isn'tmeltpond_areareturnsfpond = (volpn - volpn_init) / dt, explicitly documented as a "diagnostic pond freshwater flux". It is computed but never used to correct the ocean surface forcing. Inice_thermo_cpl.F90,fpondis discarded after the call.Where pond water goes (or doesn't)
Pond water can disappear from the model state without any corresponding freshwater flux to the ocean in at least three situations:
apnd = hpnd = ipnd = 0— pond water reset to zerovolpntruncated to maintain positive freeboard — excess water discardedaice < punytriggers the same reset — all pond water vanishesMeanwhile, the total ice melt is already counted as ocean freshwater flux:
So during active pond growth,
fwovercounts the freshwater reaching the ocean byfpond. When ponds later drain or reset, the water simply disappears — there is no compensating flux.The question
Should FESOM2's coupled configuration implement proper melt pond freshwater coupling?
In the real ocean–ice system, melt pond water eventually reaches the ocean through:
In a fully coupled ESM context (FESOM2 + AWI-CM), the freshwater budget closure affects:
A simple but physically reasonable implementation would:
fw = fw - fpond * rhofresh / rhowathpnddrains to the ocean each timestep (e.g., following the Flocco et al. or Icepackmeltpond_topoapproach)fwrather than discardedRelated
meltpond_toposcheme with explicit drainage to the ocean — this could be the reference implementation.fpondomission fromfw; on closer inspection the omission is intentional given the albedo-only design, but the issue is real for a coupled configuration.