1 | MODULE sbc_ice |
---|
2 | !!====================================================================== |
---|
3 | !! *** MODULE sbc_ice *** |
---|
4 | !! Surface module - LIM-3: parameters & variables defined in memory |
---|
5 | !!====================================================================== |
---|
6 | !! History : 3.0 ! 2006-08 (G. Madec) Surface module |
---|
7 | !! 3.2 ! 2009-06 (S. Masson) merge with ice_oce |
---|
8 | !! 4.0 ! 2011-01 (A. R. Porter, STFC Daresbury) dynamical allocation |
---|
9 | !!---------------------------------------------------------------------- |
---|
10 | #if defined key_lim3 || defined key_lim2 |
---|
11 | !!---------------------------------------------------------------------- |
---|
12 | !! 'key_lim2' or 'key_lim3' : LIM-2 or LIM-3 sea-ice model |
---|
13 | !!---------------------------------------------------------------------- |
---|
14 | USE par_oce ! ocean parameters |
---|
15 | # if defined key_lim3 |
---|
16 | USE par_ice ! LIM-3 parameters |
---|
17 | # endif |
---|
18 | # if defined key_lim2 |
---|
19 | USE par_ice_2 ! LIM-2 parameters |
---|
20 | # endif |
---|
21 | USE lib_mpp ! MPP library |
---|
22 | USE in_out_manager ! I/O manager |
---|
23 | |
---|
24 | IMPLICIT NONE |
---|
25 | PRIVATE |
---|
26 | |
---|
27 | PUBLIC sbc_ice_alloc ! called in iceini(_2).F90 |
---|
28 | |
---|
29 | # if defined key_lim2 |
---|
30 | LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .TRUE. !: LIM-2 ice model |
---|
31 | LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 |
---|
32 | # if defined key_lim2_vp |
---|
33 | CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'I' !: VP : 'I'-grid ice-velocity (B-grid lower left corner) |
---|
34 | # else |
---|
35 | CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'C' !: EVP: 'C'-grid ice-velocity |
---|
36 | # endif |
---|
37 | # endif |
---|
38 | # if defined key_lim3 |
---|
39 | LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 |
---|
40 | LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .TRUE. !: LIM-3 ice model |
---|
41 | CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'C' !: 'C'-grid ice-velocity |
---|
42 | # endif |
---|
43 | |
---|
44 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qns_ice !: non solar heat flux over ice [W/m2] |
---|
45 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice !: solar heat flux over ice [W/m2] |
---|
46 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qla_ice !: latent flux over ice [W/m2] |
---|
47 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqla_ice !: latent sensibility over ice [W/m2/K] |
---|
48 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqns_ice !: non solar heat flux over ice (LW+SEN+LA) [W/m2/K] |
---|
49 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tn_ice !: ice surface temperature [K] |
---|
50 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: alb_ice !: albedo of ice |
---|
51 | |
---|
52 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: utau_ice !: atmos-ice u-stress. VP: I-pt ; EVP: U,V-pts [N/m2] |
---|
53 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vtau_ice !: atmos-ice v-stress. VP: I-pt ; EVP: U,V-pts [N/m2] |
---|
54 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr1_i0 !: 1st Qsr fraction penetrating inside ice cover [-] |
---|
55 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr2_i0 !: 2nd Qsr fraction penetrating inside ice cover [-] |
---|
56 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_ice !: sublimation-snow budget over ice [kg/m2] |
---|
57 | |
---|
58 | # if defined key_lim3 |
---|
59 | REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tatm_ice !: air temperature |
---|
60 | # endif |
---|
61 | |
---|
62 | !!---------------------------------------------------------------------- |
---|
63 | !! NEMO/OPA 4.0 , NEMO Consortium (2011) |
---|
64 | !! $Id$ |
---|
65 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
66 | !!---------------------------------------------------------------------- |
---|
67 | CONTAINS |
---|
68 | |
---|
69 | INTEGER FUNCTION sbc_ice_alloc() |
---|
70 | !!---------------------------------------------------------------------- |
---|
71 | !! *** FUNCTION sbc_ice_alloc *** |
---|
72 | !!---------------------------------------------------------------------- |
---|
73 | ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) , & |
---|
74 | & qla_ice (jpi,jpj,jpl) , dqla_ice(jpi,jpj,jpl) , & |
---|
75 | & dqns_ice(jpi,jpj,jpl) , tn_ice (jpi,jpj,jpl) , & |
---|
76 | & alb_ice (jpi,jpj,jpl) , & |
---|
77 | & utau_ice(jpi,jpj) , vtau_ice(jpi,jpj) , & |
---|
78 | & fr1_i0 (jpi,jpj) , fr2_i0 (jpi,jpj) , & |
---|
79 | # if defined key_lim3 |
---|
80 | & emp_ice(jpi,jpj) , tatm_ice(jpi,jpj) , STAT= sbc_ice_alloc ) |
---|
81 | # else |
---|
82 | & emp_ice(jpi,jpj) , STAT= sbc_ice_alloc ) |
---|
83 | # endif |
---|
84 | ! |
---|
85 | IF( lk_mpp ) CALL mpp_sum ( sbc_ice_alloc ) |
---|
86 | IF( sbc_ice_alloc > 0 ) CALL ctl_warn('sbc_ice_alloc: allocation of arrays failed') |
---|
87 | END FUNCTION sbc_ice_alloc |
---|
88 | |
---|
89 | #else |
---|
90 | !!---------------------------------------------------------------------- |
---|
91 | !! Default option NO LIM 2.0 or 3.0 sea-ice model |
---|
92 | !!---------------------------------------------------------------------- |
---|
93 | LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 ice model |
---|
94 | LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 ice model |
---|
95 | CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = '-' !: no grid ice-velocity |
---|
96 | #endif |
---|
97 | |
---|
98 | !!====================================================================== |
---|
99 | END MODULE sbc_ice |
---|