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_da.F90 in branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3 – NEMO

source: branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icethd_da.F90 @ 8531

Last change on this file since 8531 was 8531, checked in by clem, 7 years ago

changes in style - part6 - more clarity (still not finished)

File size: 11.6 KB
RevLine 
[8422]1MODULE icethd_da
2   !!======================================================================
3   !!                       ***  MODULE icethd_da ***
4   !! LIM-3 sea-ice :  computation of lateral melting in the ice
5   !!======================================================================
[8486]6   !! History :  4.0  ! 2016-03 (C. Rousset)  original code
[8422]7   !!---------------------------------------------------------------------
8#if defined key_lim3
9   !!----------------------------------------------------------------------
10   !!   'key_lim3'                                      LIM-3 sea-ice model
11   !!----------------------------------------------------------------------
[8486]12   !!   ice_thd_da    : sea ice lateral melting
[8422]13   !!----------------------------------------------------------------------
14   USE par_oce        ! ocean parameters
15   USE phycst         ! physical constants (ocean directory)
[8486]16   USE ice            ! sea-ice: variables
17   USE ice1D          ! sea-ice: thermodynamic 1D variables
[8422]18   !
[8531]19   USE in_out_manager ! I/O manager
[8422]20   USE lib_mpp        ! MPP library
21   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 
22
23   IMPLICIT NONE
24   PRIVATE
25
[8531]26   PUBLIC   ice_thd_da        ! called by icethd.F90
27   PUBLIC   ice_thd_da_init   ! called by icestp.F90
[8422]28
[8531]29   ! ** namelist (namthd_da) **
30   REAL(wp) ::   rn_beta     ! coef. beta for lateral melting param.
31   REAL(wp) ::   rn_dmin     ! minimum floe diameter for lateral melting param.
32
[8422]33   !!----------------------------------------------------------------------
[8486]34   !! NEMO/ICE 4.0 , NEMO Consortium (2017)
[8422]35   !! $Id: icethd_da.F90 5123 2015-03-04 16:06:03Z clem $
36   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
37   !!----------------------------------------------------------------------
38CONTAINS
39
40   SUBROUTINE ice_thd_da
41      !!-------------------------------------------------------------------
42      !!                ***  ROUTINE ice_thd_da  ***   
43      !!   
44      !! ** Purpose :   computes sea ice lateral melting
45      !!
46      !! ** Method  :   dA/dt = - P * W   [s-1]
47      !!                   W = melting velocity [m.s-1]
48      !!                   P = perimeter of ice-ocean lateral interface normalized by grid cell area [m.m-2]
49      !!
50      !!                   W = m1 * (Tw -Tf)**m2                    --- originally from Josberger 1979 ---
51      !!                      (Tw - Tf) = elevation of water temp above freezing
[8498]52      !!                      m1 and m2 = (1.6e-6 , 1.36) best fit from field experiment near the coast of Prince Patrick Island
53      !!                                                                                           (Perovich 1983) => static ice
54      !!                      m1 and m2 = (3.0e-6 , 1.36) best fit from MIZEX 84 experiment
55      !!                                                                                (Maykut and Perovich 1987) => moving ice
[8422]56      !!
57      !!                   P = N * pi * D                           --- from Rothrock and Thorndike 1984 ---
58      !!                      D = mean floe caliper diameter
59      !!                      N = number of floes = ice area / floe area(average) = A / (Cs * D**2)
60      !!                         A = ice concentration
61      !!                         Cs = deviation from a square (square:Cs=1 ; circle:Cs=pi/4 ; floe:Cs=0.66)
62      !!
63      !!                   D = Dmin * ( Astar / (Astar-A) )**beta   --- from Lupkes et al., 2012 (eq. 26-27) ---
64      !!                                                             
65      !!                      Astar = 1 / ( 1 - (Dmin/Dmax)**(1/beta) )
66      !!                      Dmin = minimum floe diameter (recommended to be 8m +- 20%)
[8498]67      !!                      Dmax = maximum floe diameter (recommended to be 300m,
68      !!                                                    but it does not impact melting much except for Dmax<100m)
[8422]69      !!                      beta = 1.0 +-20% (recommended value)
70      !!                           = 0.3 best fit for western Fram Strait and Antarctica
71      !!                           = 1.4 best fit for eastern Fram Strait
72      !!
73      !! ** Tunable parameters  :   We propose to tune the lateral melting via 2 parameters
74      !!                               Dmin [6-10m]   => 6  vs 8m = +40% melting at the peak (A~0.5)
75      !!                                                 10 vs 8m = -20% melting
76      !!                               beta [0.8-1.2] => decrease = more melt and melt peaks toward higher concentration
77      !!                                                                  (A~0.5 for beta=1 ; A~0.8 for beta=0.2)
78      !!                                                 0.3 = best fit for western Fram Strait and Antarctica
79      !!                                                 1.4 = best fit for eastern Fram Strait
80      !!
81      !! ** Note   :   Former and more simple formulations for floe diameters can be found in Mai (1995),
82      !!               Birnbaum and Lupkes (2002), Lupkes and Birnbaum (2005). They are reviewed in Lupkes et al 2012
83      !!               A simpler implementation for CICE can be found in Bitz et al (2001) and Tsamados et al (2015)
84      !!
85      !! ** References
86      !!    Bitz, C. M., Holland, M. M., Weaver, A. J., & Eby, M. (2001).
87      !!              Simulating the ice‐thickness distribution in a coupled climate model.
88      !!              Journal of Geophysical Research: Oceans, 106(C2), 2441-2463.
89      !!    Josberger, E. G. (1979).
90      !!              Laminar and turbulent boundary layers adjacent to melting vertical ice walls in salt water
91      !!              (No. SCIENTIFIC-16). WASHINGTON UNIV SEATTLE DEPT OF ATMOSPHERIC SCIENCES.
92      !!    Lüpkes, C., Gryanik, V. M., Hartmann, J., & Andreas, E. L. (2012).
93      !!              A parametrization, based on sea ice morphology, of the neutral atmospheric drag coefficients
94      !!              for weather prediction and climate models.
95      !!              Journal of Geophysical Research: Atmospheres, 117(D13).
96      !!    Maykut, G. A., & Perovich, D. K. (1987).
97      !!              The role of shortwave radiation in the summer decay of a sea ice cover.
98      !!              Journal of Geophysical Research: Oceans, 92(C7), 7032-7044.
99      !!    Perovich, D. K. (1983).
100      !!              On the summer decay of a sea ice cover. (Doctoral dissertation, University of Washington).
101      !!    Rothrock, D. A., & Thorndike, A. S. (1984).
102      !!              Measuring the sea ice floe size distribution.
103      !!              Journal of Geophysical Research: Oceans, 89(C4), 6477-6486.
104      !!    Tsamados, M., Feltham, D., Petty, A., Schroeder, D., & Flocco, D. (2015).
105      !!              Processes controlling surface, bottom and lateral melt of Arctic sea ice in a state of the art sea ice model.
106      !!              Phil. Trans. R. Soc. A, 373(2052), 20140167.
107      !!---------------------------------------------------------------------
108      INTEGER  ::   ji     ! dummy loop indices
109      REAL(wp)            ::   zastar, zdfloe, zperi, zwlat, zda
110      REAL(wp), PARAMETER ::   zdmax = 300._wp
111      REAL(wp), PARAMETER ::   zcs   = 0.66_wp
112      REAL(wp), PARAMETER ::   zm1   = 3.e-6_wp
113      REAL(wp), PARAMETER ::   zm2   = 1.36_wp
114      !
115      REAL(wp), DIMENSION(jpij) ::   zda_tot
116      !!---------------------------------------------------------------------
[8486]117      !
[8422]118      zastar = 1._wp / ( 1._wp - (rn_dmin / zdmax)**(1._wp/rn_beta) )
119      DO ji = 1, nidx   
120         ! --- Calculate reduction of total sea ice concentration --- !
121         zdfloe = rn_dmin * ( zastar / ( zastar - at_i_1d(ji) ) )**rn_beta         ! Mean floe caliper diameter [m]
[8498]122         !
123         zperi  = at_i_1d(ji) * rpi / ( zcs * zdfloe )                             ! Mean perimeter of the floe [m.m-2]
124         !                                                                         !    = N*pi*D = (A/cs*D^2)*pi*D
[8422]125         zwlat  = zm1 * ( MAX( 0._wp, sst_1d(ji) - ( t_bo_1d(ji) - rt0 ) ) )**zm2  ! Melt speed rate [m/s]
[8498]126         !
[8422]127         zda_tot(ji) = MIN( zwlat * zperi * rdt_ice, at_i_1d(ji) )                 ! sea ice concentration decrease (>0)
128     
129         ! --- Distribute reduction among ice categories and calculate associated ice-ocean fluxes --- !
130         IF( a_i_1d(ji) > 0._wp ) THEN
131            ! decrease of concentration for the category jl
132            !    each category contributes to melting in proportion to its concentration
133            zda = MIN( a_i_1d(ji), zda_tot(ji) * a_i_1d(ji) / at_i_1d(ji) )
134           
135            ! Contribution to salt flux
136            sfx_lam_1d(ji) = sfx_lam_1d(ji) + rhoic *  ht_i_1d(ji) * zda * sm_i_1d(ji) * r1_rdtice
137           
138            ! Contribution to heat flux into the ocean [W.m-2], (<0) 
139            hfx_thd_1d(ji) = hfx_thd_1d(ji) - zda * r1_rdtice * ( ht_i_1d(ji) * r1_nlay_i * SUM( e_i_1d(ji,1:nlay_i) )  &
140                                                                + ht_s_1d(ji) * r1_nlay_s * SUM( e_s_1d(ji,1:nlay_s) ) ) 
141           
142            ! Contribution to mass flux
143            wfx_lam_1d(ji) =  wfx_lam_1d(ji) + zda * r1_rdtice * ( rhoic * ht_i_1d(ji) + rhosn * ht_s_1d(ji) )
144           
145            ! new concentration
146            a_i_1d(ji) = a_i_1d(ji) - zda
[8486]147
[8422]148            ! ensure that ht_i = 0 where a_i = 0
149            IF( a_i_1d(ji) == 0._wp ) THEN
150               ht_i_1d(ji) = 0._wp
151               ht_s_1d(ji) = 0._wp
152            ENDIF
153         ENDIF
154      END DO
155      !
156   END SUBROUTINE ice_thd_da
[8531]157
158   SUBROUTINE ice_thd_da_init
159      !!-----------------------------------------------------------------------
160      !!                   ***  ROUTINE ice_thd_da_init ***
161      !!                 
162      !! ** Purpose :   Physical constants and parameters associated with
163      !!                ice thermodynamics
164      !!
165      !! ** Method  :   Read the namthd_da namelist and check the parameters
166      !!                called at the first timestep (nit000)
167      !!
168      !! ** input   :   Namelist namthd_da
169      !!-------------------------------------------------------------------
170      INTEGER  ::   ios   ! Local integer output status for namelist read
171      !!
172      NAMELIST/namthd_da/ rn_beta, rn_dmin
173      !!-------------------------------------------------------------------
174      !
175      REWIND( numnam_ice_ref )              ! Namelist namthd_da in reference namelist : Ice thermodynamics
176      READ  ( numnam_ice_ref, namthd_da, IOSTAT = ios, ERR = 901)
177901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_da in reference namelist', lwp )
178
179      REWIND( numnam_ice_cfg )              ! Namelist namthd_da in configuration namelist : Ice thermodynamics
180      READ  ( numnam_ice_cfg, namthd_da, IOSTAT = ios, ERR = 902 )
181902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namthd_da in configuration namelist', lwp )
182      IF(lwm) WRITE ( numoni, namthd_da )
183      !
184      !
185      IF(lwp) THEN                          ! control print
186         WRITE(numout,*) 'ice_thd_da_init: Ice lateral melting'
187         WRITE(numout,*) '~~~~~~~~~~~~~~~'
188         WRITE(numout,*) '   Namelist namthd_da:'
189         WRITE(numout,*) '      Coef. beta for lateral melting param.               rn_beta = ', rn_beta
190         WRITE(numout,*) '      Minimum floe diameter for lateral melting param.    rn_dmin = ', rn_dmin
191      ENDIF
192      !
193   END SUBROUTINE ice_thd_da_init
194 
[8422]195#else
196   !!----------------------------------------------------------------------
197   !!   Default option         Dummy Module          No LIM-3 sea-ice model
198   !!----------------------------------------------------------------------
199#endif
[8486]200
[8422]201   !!======================================================================
202END MODULE icethd_da
Note: See TracBrowser for help on using the repository browser.