Opened 4 years ago
Last modified 4 years ago
#2627 new Bug
sea-ice bug when using conduction flux instead of solar/non-solar
Reported by: | clem | Owned by: | systeam |
---|---|---|---|
Priority: | high | Milestone: | |
Component: | SI3 | Version: | v4.0.* |
Severity: | major | Keywords: | |
Cc: |
Description
Context
There is a series of bugs related to sea-ice when using conduction flux as an input instead of regular solar and non-solar fluxes. It is only tested without really being used in NEMO forced setup. It affects simulations using Jules interface as done by the Met-Office
Analysis
1) In forced mode, when emulating the conduction flux, one should calculate this flux by calling the routine blk_ice_qcn. It is not the case.
2) The heat budget is not designed for dealing with conduction fluxes. So, in iceupdate.F90 it is wrong to state that qt_atm_oi = qns_tot + qsr_tot
Fix
--
1)
--
In icesbc.F90, replace these lines:
IF( ln_cndflx .AND. .NOT.ln_cndemulate ) & & CALL blk_ice_qcn ( ln_virtual_itd, t_su, t_bo, h_s, h_i )
by
IF( ln_cndflx .AND. ln_cndemulate ) & & CALL blk_ice_qcn ( ln_virtual_itd, t_su, t_bo, h_s, h_i )
Also, in icethd_dh.F90, replace these lines:
IF( ln_cndflx .AND. .NOT.ln_cndemulate ) THEN ! DO ji = 1, npti zq_top(ji) = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) END DO
by
IF( ln_cndflx ) THEN ! DO ji = 1, npti zq_top(ji) = MAX( 0._wp, qml_ice_1d(ji) * rdt_ice ) END DO
And finally, I do not see why we need to pass 2 times in icethd_zdf_bl99 when conduction flux is emulated. I would suppose that once conduction flux has been evaluated in blk_ice_qcn, it is not necessary to go through the bl99 routine 2 times. But I need some input from Martin on that.
Should we replace:
ELSEIF( ln_cndflx .AND. ln_cndemulate ) THEN ! Conduction flux is emulated CALL ice_thd_zdf_BL99( np_cnd_EMU ) CALL ice_thd_zdf_BL99( np_cnd_ON )
by
ELSEIF( ln_cndflx .AND. ln_cndemulate ) THEN ! Conduction flux is emulated CALL ice_thd_zdf_BL99( np_cnd_ON )
--
2)
--
qns_ice and qsr_ice made no sense when forcing with conduction fluxes. There is 2 solutions and I am still unsure whether we should change the surface heat budget in the ice code to concur with the "conductive flux" formulation or to simulate a qns_ice+qsr_ice from qcn and qml. I think the final solution is to change the ice code.
I guess the right solution for qt_atm_oi is something like (though I am not sure):
qt_atm_oi = ( 1 - a ) * ( qns_oce + qsr_oce ) + qemp_oce & & + a * ( qcn_ice + qml_ice + qtr_ice_top ) + qemp_ice
Commit History (2)
Changeset | Author | Time | ChangeLog |
---|---|---|---|
14595 | clem | 2021-03-05T23:36:50+01:00 | trunk: solve ticket #2627. |
14590 | clem | 2021-03-05T14:21:05+01:00 | 4.0-HEAD: solve ticket #2627 to allow simulations with conductive fluxes instead of normal fluxes on top of sea ice (MetO requirement). I do not think I tackled all the issues but this is the best I can do without having a proper configuration to test it. |
Change History (3)
comment:1 Changed 4 years ago by clem
comment:2 Changed 4 years ago by clem
In 14590:
comment:3 Changed 4 years ago by clem
In 14595:
Well, I misunderstood the logical ln_cndemulate. So, forget about the point 1) and only focus on point 2). For precaution, in addition to the correction in iceupdate.F90, one should also change sbccpl.F90 to "fake" a non-solar flux as: