New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
icethd_zdf.F90 in NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/ICE – NEMO

source: NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/ICE/icethd_zdf.F90 @ 12808

Last change on this file since 12808 was 12377, checked in by acc, 4 years ago

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

  • Property svn:keywords set to Id
File size: 6.4 KB
Line 
1MODULE icethd_zdf
2   !!======================================================================
3   !!                       ***  MODULE icethd_zdf ***
4   !!   sea-ice: master routine for vertical heat diffusion in sea ice
5   !!======================================================================
6   !! History :  4.0  !  2018     (C. Rousset)      Original code SI3
7   !!----------------------------------------------------------------------
8#if defined key_si3
9   !!----------------------------------------------------------------------
10   !!   'key_si3'                                       SI3 sea-ice model
11   !!----------------------------------------------------------------------
12   !!  ice_thd_zdf      : select the appropriate routine for vertical heat diffusion calculation
13   !!  ice_thd_zdf_BL99 : heat diffusion from Bitz and Lipscomb 1999
14   !!  ice_thd_zdf_init : initialization
15   !!----------------------------------------------------------------------
16   USE dom_oce         ! ocean space and time domain
17   USE phycst          ! physical constants (ocean directory)
18   USE ice             ! sea-ice: variables
19   USE icethd_zdf_BL99 ! sea-ice: vertical diffusion (Bitz and Lipscomb, 1999)
20   !
21   USE in_out_manager  ! I/O manager
22   USE lib_mpp         ! MPP library
23   USE lib_fortran     ! fortran utilities (glob_sum + no signed zero)
24
25   IMPLICIT NONE
26   PRIVATE
27
28   PUBLIC   ice_thd_zdf        ! called by icethd
29   PUBLIC   ice_thd_zdf_init   ! called by icestp
30
31   INTEGER ::   nice_zdf       ! Choice of the type of vertical heat diffusion formulation
32   !                                 ! associated indices:
33   INTEGER, PARAMETER ::   np_BL99 = 1   ! Bitz and Lipscomb (1999)
34!! INTEGER, PARAMETER ::   np_XXXX = 2
35
36   !!** namelist (namthd_zdf) **
37   LOGICAL ::   ln_zdf_BL99    ! Heat diffusion follows Bitz and Lipscomb (1999)
38
39   !!----------------------------------------------------------------------
40   !! NEMO/ICE 4.0 , NEMO Consortium (2018)
41   !! $Id$
42   !! Software governed by the CeCILL license (see ./LICENSE)
43   !!----------------------------------------------------------------------
44CONTAINS
45
46   SUBROUTINE ice_thd_zdf
47      !!-------------------------------------------------------------------
48      !!                ***  ROUTINE ice_thd_zdf  ***
49      !!
50      !! ** Purpose :   select the appropriate routine for the computation
51      !!              of vertical diffusion
52      !!-------------------------------------------------------------------
53      !
54      SELECT CASE ( nice_zdf )      ! Choose the vertical heat diffusion solver
55      !
56      !                             !-------------!     
57      CASE( np_BL99 )               ! BL99 solver !
58         !                          !-------------!
59         IF( .NOT.ln_cndflx ) THEN                           ! No conduction flux ==> default option
60            CALL ice_thd_zdf_BL99( np_cnd_OFF )
61         ELSEIF( ln_cndflx .AND. .NOT.ln_cndemulate ) THEN   ! Conduction flux as surface boundary condition ==> Met Office default option
62            CALL ice_thd_zdf_BL99( np_cnd_ON  )
63         ELSEIF( ln_cndflx .AND.      ln_cndemulate ) THEN   ! Conduction flux is emulated
64            CALL ice_thd_zdf_BL99( np_cnd_EMU )
65            CALL ice_thd_zdf_BL99( np_cnd_ON  )
66         ENDIF
67         !
68      END SELECT
69      !
70   END SUBROUTINE ice_thd_zdf
71   
72   
73   SUBROUTINE ice_thd_zdf_init
74      !!-----------------------------------------------------------------------
75      !!                   ***  ROUTINE ice_thd_zdf_init ***
76      !!                 
77      !! ** Purpose :   Physical constants and parameters associated with
78      !!                ice thermodynamics
79      !!
80      !! ** Method  :   Read the namthd_zdf namelist and check the parameters
81      !!                called at the first timestep (nit000)
82      !!
83      !! ** input   :   Namelist namthd_zdf
84      !!-------------------------------------------------------------------
85      INTEGER  ::   ios, ioptio   ! Local integer
86      !!
87      NAMELIST/namthd_zdf/ ln_zdf_BL99, ln_cndi_U64, ln_cndi_P07, rn_cnd_s, rn_kappa_i
88      !!-------------------------------------------------------------------
89      !
90      READ  ( numnam_ice_ref, namthd_zdf, IOSTAT = ios, ERR = 901)
91901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namthd_zdf in reference namelist' )
92      READ  ( numnam_ice_cfg, namthd_zdf, IOSTAT = ios, ERR = 902 )
93902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namthd_zdf in configuration namelist' )
94      IF(lwm) WRITE( numoni, namthd_zdf )
95      !
96      IF(lwp) THEN                          ! control print
97         WRITE(numout,*)
98         WRITE(numout,*) 'ice_thd_zdf_init: Ice vertical heat diffusion'
99         WRITE(numout,*) '~~~~~~~~~~~~~~~~'
100         WRITE(numout,*) '   Namelist namthd_zdf:'
101         WRITE(numout,*) '      Bitz and Lipscomb (1999) formulation                    ln_zdf_BL99  = ', ln_zdf_BL99
102         WRITE(numout,*) '      thermal conductivity in the ice (Untersteiner 1964)     ln_cndi_U64  = ', ln_cndi_U64
103         WRITE(numout,*) '      thermal conductivity in the ice (Pringle et al 2007)    ln_cndi_P07  = ', ln_cndi_P07
104         WRITE(numout,*) '      thermal conductivity in the snow                        rn_cnd_s     = ', rn_cnd_s
105         WRITE(numout,*) '      extinction radiation parameter in sea ice               rn_kappa_i   = ', rn_kappa_i
106      ENDIF
107      !
108      IF ( ( ln_cndi_U64 .AND. ln_cndi_P07 ) .OR. ( .NOT. ln_cndi_U64 .AND. .NOT. ln_cndi_P07 ) ) THEN
109         CALL ctl_stop( 'ice_thd_zdf_init: choose 1 and only 1 formulation for thermal conduction (ln_cndi_U64 or ln_cndi_P07)' )
110      ENDIF
111      !                             !== set the choice of ice vertical thermodynamic formulation ==!
112      ioptio = 0 
113      IF( ln_zdf_BL99 ) THEN   ;   ioptio = ioptio + 1   ;   nice_zdf = np_BL99   ;   ENDIF   ! BL99 thermodynamics (linear liquidus + constant thermal properties)
114!!    IF( ln_zdf_XXXX ) THEN   ;   ioptio = ioptio + 1   ;   nice_zdf = np_XXXX   ;   ENDIF
115      IF( ioptio /= 1 )   CALL ctl_stop( 'ice_thd_init: one and only one ice thermo option has to be defined ' )
116      !
117   END SUBROUTINE ice_thd_zdf_init
118
119#else
120   !!----------------------------------------------------------------------
121   !!   Default option       Dummy Module             No SI3 sea-ice model
122   !!----------------------------------------------------------------------
123#endif
124
125   !!======================================================================
126END MODULE icethd_zdf
Note: See TracBrowser for help on using the repository browser.