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.
thd_ice_2.F90 in branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2 – NEMO

source: branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90 @ 2590

Last change on this file since 2590 was 2590, checked in by trackstand2, 13 years ago

Merge branch 'dynamic_memory' into master-svn-dyn

  • Property svn:keywords set to Id
File size: 5.9 KB
Line 
1MODULE thd_ice_2
2#if defined key_lim2
3   !!======================================================================
4   !!                       ***  MODULE thd_ice_2  ***
5   !! LIM 2.0 sea-ice :   Ice thermodynamics in 1D
6   !!=====================================================================
7   !! History :
8   !!   2.0  !  02-11  (C. Ethe)  F90: Free form and module
9   !!----------------------------------------------------------------------
10   !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
11   !! $Id$
12   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
13   !!----------------------------------------------------------------------
14   !! * Modules used
15   USE par_ice_2
16
17   IMPLICIT NONE
18   PRIVATE
19
20   PUBLIC thd_ice_alloc_2 ! Routine called by nemogcm.F90
21
22   !! * Share Module variables
23   REAL(wp) , PUBLIC ::   & !!! ** ice-thermo namelist (namicethd) **
24      hmelt   = -0.15  ,  &  !: maximum melting at the bottom
25      hicmin  = 0.2    ,  &  !: ice th. corr. to max. ener. in brine pocket
26      hiclim  = 0.05   ,  &  !: minimum ice thickness
27      amax    = 0.999  ,  &  !: maximum lead fraction
28      swiqst  = 1.0    ,  &  !: energy stored in brine pocket (1) or not (0)
29      sbeta   = 1.0    ,  &  !: numerical scheme for diffusion in ice
30      parlat  = 0.0    ,  &  !: percent. of energy used for lateral ablation
31      hakspl  = 0.5    ,  &  !: slope of distr. for Hakkinen-Mellro's lat. melt
32      hibspl  = 0.5    ,  &  !: slope of distribution for Hibler's lat. melt
33      exld    = 2.0    ,  &  !: exponent for leads-closure rate
34      hakdif  = 1.0    ,  &  !: coefficient for diffusions of ice and snow
35      thth    = 0.2    ,  &  !: thick. for comp. of eq. thermal conduct
36      hnzst   = 0.1    ,  &  !: thick. of the surf. layer in temp. comp.
37      parsub  = 1.0    ,  &  !: switch for snow sublimation or not
38      alphs   = 1.0          !: coef. for snow density when snow-ice formation
39
40   REAL(wp), PUBLIC, DIMENSION(2)  ::  &  !:   
41      hiccrit = (/0.3,0.3/)  !: ice th. for lateral accretion in the NH (SH) (m)
42
43   REAL(wp) , PUBLIC ::   &  !:
44      uscomi,             &  !: inverse of minimum lead fraction
45      cnscg                  !: ratio  rcpsn/rcpic
46
47   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   &  !:
48      npb     ,   &   !: number of points where computations has to be done
49      npac            !: correspondance between the points
50
51   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   &  !:
52      qldif_1d    ,     &  !: corresponding to the 2D var  qldif
53      qcmif_1d    ,     &  !: corresponding to the 2D var  qcmif
54      thcm_1d     ,     &  !:    "                  "      thcm
55      fstbif_1d   ,     &  !:    "                  "      fstric
56      fltbif_1d   ,     &  !:    "                  "      ffltbif
57      fscbq_1d    ,     &  !:    "                  "      fscmcbq
58      qsr_ice_1d  ,     &  !:    "                  "      qsr_ice
59      fr1_i0_1d   ,     &  !:    "                  "      fr1_i0
60      fr2_i0_1d   ,     &  !:    "                  "      fr2_i0
61      qns_ice_1d  ,     &  !:    "                  "      qns_ice
62      qfvbq_1d    ,     &  !:    "                  "      qfvbq
63      sist_1d     ,     &  !:    "                  "      sist
64      tfu_1d      ,     &  !:    "                  "      tfu
65      sprecip_1d  ,     &  !:    "                  "      sprecip
66      h_snow_1d   ,     &  !:    "                  "      h_snow
67      h_ice_1d    ,     &  !:    "                  "      h_ice
68      frld_1d     ,     &  !:    "                  "      frld
69      qstbif_1d   ,     &  !:    "                  "      qstoif
70      fbif_1d     ,     &  !:    "                  "      fbif
71      rdmicif_1d  ,     &  !:    "                  "      rdmicif
72      rdmsnif_1d  ,     &  !:    "                  "      rdmsnif
73      qlbbq_1d    ,     &  !:    "                  "      qlbsbq
74      dmgwi_1d    ,     &  !:    "                  "      dmgwi
75      dvsbq_1d    ,     &  !:    "                  "      rdvosif
76      rdvomif_1d  ,     &  !:    "                  "      rdvomif
77      dvbbq_1d    ,     &  !:    "                  "      rdvobif
78      dvlbq_1d    ,     &  !:    "                  "      rdvolif
79      dvnbq_1d    ,     &  !:    "                  "      rdvolif
80      dqns_ice_1d ,     &  !:    "                  "      dqns_ice
81      qla_ice_1d  ,     &  !:    "                  "      qla_ice
82      dqla_ice_1d          !:    "                  "      dqla_ice
83
84   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   &  !:
85      tbif_1d              !: corresponding to the 2D var  tbif
86
87   !!======================================================================
88 CONTAINS
89
90   FUNCTION thd_ice_alloc_2()
91      USE in_out_manager, ONLY: ctl_warn
92      IMPLICIT none
93      INTEGER :: thd_ice_alloc_2
94      ! Local vars
95      INTEGER :: ierr(4)
96
97      ierr(:) = 0
98
99      ALLOCATE(npb(jpij), npac(jpij),                             &
100               qldif_1d(jpij), qcmif_1d(jpij), thcm_1d(jpij),     &
101               fstbif_1d(jpij), fltbif_1d(jpij), fscbq_1d(jpij),  &
102               qsr_ice_1d(jpij),fr1_i0_1d(jpij), fr2_i0_1d(jpij), Stat=ierr(1))
103
104      ALLOCATE(qns_ice_1d(jpij), qfvbq_1d(jpij), sist_1d(jpij), tfu_1d(jpij), &
105               sprecip_1d(jpij), h_snow_1d(jpij),h_ice_1d(jpij),frld_1d(jpij),&
106               qstbif_1d(jpij),  fbif_1d(jpij),  Stat=ierr(2))
107
108      ALLOCATE(rdmicif_1d(jpij), rdmsnif_1d(jpij), qlbbq_1d(jpij),   &
109               dmgwi_1d(jpij)  , dvsbq_1d(jpij)  , rdvomif_1d(jpij), &
110               dvbbq_1d(jpij)  , dvlbq_1d(jpij)  , dvnbq_1d(jpij)  , &
111               Stat=ierr(3))
112
113      ALLOCATE(dqns_ice_1d(jpij) ,qla_ice_1d(jpij), dqla_ice_1d(jpij), &
114               tbif_1d(jpij, jplayersp1), Stat=ierr(4))
115
116      thd_ice_alloc_2 = MAXVAL(ierr)
117
118      IF(thd_ice_alloc_2 /= 0)THEN
119         CALL ctl_warn('thd_ice_alloc_2: failed to allocate arrays.')
120      END IF
121
122   END FUNCTION thd_ice_alloc_2
123
124#endif
125END MODULE thd_ice_2
Note: See TracBrowser for help on using the repository browser.