From 462124234ac3f8cd42f49fb1bb5036173cdeaa0c Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Fri, 8 Apr 2022 15:53:20 -0400 Subject: [PATCH] drivers/nemo_concepts: let 'ktherm=-1' only disable thermodynamics When CICE learned to disable the thermodynamics in 83686a3f (Implement box model test from 2001 JCP paper (#151), 2018-10-22), it was not envisioned that this capability would be used with 'calc_strair = .true.'. This currently does not work (the atmospheric stresses are always zero). This is because they are computed in 'icepack_atmo::icepack_atm_boundary', called from 'icepack_therm_vertical::icepack_step_therm1', itself called from 'ice_step_mod::step_therm1', a call which is skipped if thermodynamics is disabled ('ktherm<0'). Adjust the logic in ice_step to always call 'step_therm1', and update Icepack to a commit in which some parts of the computation in 'icepack_step_therm1' are only done if 'ktherm >= 0', while others (namely the computation of the atmospheric stresses) are always done. --- cicecore/drivers/direct/nemo_concepts/CICE_RunMod.F90 | 8 +++----- icepack | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/cicecore/drivers/direct/nemo_concepts/CICE_RunMod.F90 b/cicecore/drivers/direct/nemo_concepts/CICE_RunMod.F90 index c9875d769..a500ffd5f 100644 --- a/cicecore/drivers/direct/nemo_concepts/CICE_RunMod.F90 +++ b/cicecore/drivers/direct/nemo_concepts/CICE_RunMod.F90 @@ -215,22 +215,20 @@ subroutine ice_step !$OMP PARALLEL DO PRIVATE(iblk) do iblk = 1, nblocks - if (ktherm >= 0) then - !----------------------------------------------------------------- ! Scale radiation fields !----------------------------------------------------------------- - if (calc_Tsfc) call prep_radiation (iblk) + if (calc_Tsfc .and. ktherm >= 0) call prep_radiation (iblk) !----------------------------------------------------------------- ! thermodynamics and biogeochemistry !----------------------------------------------------------------- - call step_therm1 (dt, iblk) ! vertical thermodynamics + call step_therm1 (dt, iblk) ! vertical thermodynamics + if (ktherm >= 0) then call biogeochemistry (dt, iblk) ! biogeochemistry call step_therm2 (dt, iblk) ! ice thickness distribution thermo - endif enddo ! iblk diff --git a/icepack b/icepack index 5e0abbaeb..a22e199c7 160000 --- a/icepack +++ b/icepack @@ -1 +1 @@ -Subproject commit 5e0abbaebb53ed57efe106804c12ecef2aa3dfcb +Subproject commit a22e199c75fc8b72e9fe108a8d196ec125b43767