SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modi_glt_icetrans_r.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !GLT_LIC The GELATO model is a seaice model used in stand-alone or embedded mode.
6 !GLT_LIC It has been developed by Meteo-France. The holder of GELATO is Meteo-France.
7 !GLT_LIC
8 !GLT_LIC This software is governed by the CeCILL-C license under French law and biding
9 !GLT_LIC by the rules of distribution of free software. See the CeCILL-C_V1-en.txt
10 !GLT_LIC (English) and CeCILL-C_V1-fr.txt (French) for details. The CeCILL is a free
11 !GLT_LIC software license, explicitly compatible with the GNU GPL
12 !GLT_LIC (see http://www.gnu.org/licenses/license-list.en.html#CeCILL)
13 !GLT_LIC
14 !GLT_LIC The CeCILL-C licence agreement grants users the right to modify and re-use the
15 !GLT_LIC software governed by this free software license. The exercising of this right
16 !GLT_LIC is conditional upon the obligation to make available to the community the
17 !GLT_LIC modifications made to the source code of the software so as to contribute to
18 !GLT_LIC its evolution.
19 !GLT_LIC
20 !GLT_LIC In consideration of access to the source code and the rights to copy, modify
21 !GLT_LIC and redistribute granted by the license, users are provided only with a limited
22 !GLT_LIC warranty and the software's author, the holder of the economic rights, and the
23 !GLT_LIC successive licensors only have limited liability. In this respect, the risks
24 !GLT_LIC associated with loading, using, modifying and/or developing or reproducing the
25 !GLT_LIC software by the user are brought to the user's attention, given its Free
26 !GLT_LIC Software status, which may make it complicated to use, with the result that its
27 !GLT_LIC use is reserved for developers and experienced professionals having in-depth
28 !GLT_LIC computer knowledge. Users are therefore encouraged to load and test the
29 !GLT_LIC suitability of the software as regards their requirements in conditions enabling
30 !GLT_LIC the security of their systems and/or data to be ensured and, more generally, to
31 !GLT_LIC use and operate it in the same conditions of security.
32 !GLT_LIC
33 !GLT_LIC The GELATO sofware is cureently distibuted with the SURFEX software, available at
34 !GLT_LIC http://www.cnrm.meteo.fr/surfex. The fact that you download the software deemed that
35 !GLT_LIC you had knowledge of the CeCILL-C license and that you accept its terms.
36 !GLT_LIC Attempts to use this software in a way not complying with CeCILL-C license
37 !GLT_LIC may lead to prosecution.
38 !GLT_LIC
39 ! =======================================================================
40 ! ======================= MODULE modi_glt_icetrans_r ========================
41 ! =======================================================================
42 !
43 ! Goal:
44 ! -----
45 ! This module contains a subroutine that computes the fraction of
46 ! solar short wave radiation SWI (absorbed by sea ice) that :
47 ! - is absorbed at the surface if there is snow
48 ! - is absorbed in a snowless ice slab
49 ! - crosses sea ice and goes to the ocean
50 !
51 ! Method:
52 ! -------
53 ! Then the short wave flux crossing sea ice, tptfl%lio is updated.
54 !
55 ! Created : 1996 (D. Salas y Melia)
56 ! Modified: 2001/07 (D. Salas y Melia)
57 ! Rewriting: part of the job formerly done by thermo_ice
58 ! routine is now done here.
59 ! Modified: 2003/11 (D. Salas y Melia)
60 ! Now solar radiation is no longer stored in brine pockets, but
61 ! directly contributes to heating the different layers of the
62 ! ice slab
63 ! Modified: 2009/06 (D. Salas y Melia)
64 ! Reduced grid
65 ! Modified: 2009/11 (D. Salas y Melia)
66 ! Surface and vertical temperature profile trends are no longer
67 ! outputs of this routine. The absorbed flux, level by level,
68 ! is sent out instead - this is more convenient to handle
69 ! for the solar transmission + vertical diffusion scheme
70 ! afterwards.
71 !
72 ! --------------------- BEGIN MODULE modi_glt_icetrans_r --------------------
73 !
74 !THXS_SFX!MODULE modi_glt_icetrans_r
75 !THXS_SFX!INTERFACE
76 !THXS_SFX!!
77 !THXS_SFX!SUBROUTINE glt_icetrans_r( tpblki,tpmxl,tptfl,tpsit,tpdia,pswtra )
78 !THXS_SFX! USE modd_types_glt
79 !THXS_SFX! USE modd_glt_param
80 !THXS_SFX! TYPE(t_blk), DIMENSION(nt,np), INTENT(in) :: &
81 !THXS_SFX! tpblki
82 !THXS_SFX! TYPE(t_mxl), DIMENSION(np), INTENT(in) :: &
83 !THXS_SFX! tpmxl
84 !THXS_SFX! TYPE(t_tfl), DIMENSION(np), INTENT(inout) :: &
85 !THXS_SFX! tptfl
86 !THXS_SFX! TYPE(t_sit), DIMENSION(nt,np), INTENT(in) :: &
87 !THXS_SFX! tpsit
88 !THXS_SFX! TYPE(t_dia), DIMENSION(np), INTENT(inout) :: &
89 !THXS_SFX! tpdia
90 !THXS_SFX! REAL, DIMENSION(nl,nt,np), INTENT(out) :: &
91 !THXS_SFX! pswtra
92 !THXS_SFX!END SUBROUTINE glt_icetrans_r
93 !THXS_SFX!!
94 !THXS_SFX!END INTERFACE
95 !THXS_SFX!END MODULE modi_glt_icetrans_r
96 !
97 ! --------------------- END MODULE modi_glt_icetrans_r ----------------------
98 !
99 !
100 !
101 ! -----------------------------------------------------------------------
102 ! ------------------------ SUBROUTINE glt_icetrans_r ------------------------
103 !
104 ! * If pqsw is the solar flux at the ice-air interface, only part
105 ! of it, (1 - I0) * qsw is absorbed by the top of the ice slab.
106 !
107 ! - If the ice is snow covered, I0 = 0.
108 ! - If there is no snow layer and hsi > hsi0, then
109 ! I0 = 0.17
110 ! - If there is no snow layer and hsi < hsi0, then
111 ! I0 = 1 - 0.83*hsi/hsi0,
112 ! with:
113 ! hsi0 = 0.1 m
114 !
115 SUBROUTINE glt_icetrans_r( tpblki,tpmxl,tptfl,tpsit,tpdia,pswtra )
116 !
118  USE modd_types_glt
119  USE modd_glt_param
120 !
121  IMPLICIT NONE
122 !
123 !* Arguments
124 !
125  TYPE(t_blk), DIMENSION(nt,np), INTENT(in) :: &
126  tpblki
127  TYPE(t_mxl), DIMENSION(np), INTENT(in) :: &
128  tpmxl
129  TYPE(t_tfl), DIMENSION(np), INTENT(inout) :: &
130  tptfl
131  TYPE(t_sit), DIMENSION(nt,np), INTENT(in) :: &
132  tpsit
133  TYPE(t_dia), DIMENSION(np), INTENT(inout) :: &
134  tpdia
135  REAL, DIMENSION(nl,nt,np), INTENT(out) :: &
136  pswtra
137 !
138 !* Local variables
139 !
140  INTEGER :: &
141  jk,jl
142  REAL, DIMENSION(nilay+1) :: &
143  zaux
144  REAL, DIMENSION(np) :: &
145  zfsit,zalbm,zswnet
146  REAL, DIMENSION(nt,np) :: &
147  zqsw2si,ztraml,zdmsn3,zqmelt
148 !
149 !
150 !
151 ! 1. Initialize parameters and arrays
152 ! ====================================
153 !
154 ! .. Trends
155 !
156  pswtra(:,:,:) = 0.
157 !
158 !
159 ! 2. Compute the transmission, storage and surface absorbed fractions
160 ! ===================================================================
161 !
162 ! .. Compute heat storage and transmission through sea ice.
163 ! -->> ztraml is the proportion of ISW continuing to the mixed layer
164 !
165 ! Case 1: a snow layer, or no ice
166 ! -->> No heat storage inside sea ice
167 ! -->> No heat transmission through the ice to the mixed layer
168 ! -->> Warm up snow layer
169 ! -->> If melting point is exceeded, melt part of the snow
170 ! -->> Deliver meltwater to the mixed layer
171 !
172 ! .. Transmitted SW to the sea ice part of the slab: generally this
173 ! is the incoming SW at the slab's upper surface, but it may be
174 ! modified if there is snow.
175 !
176  zqsw2si(:,:) = tpblki(:,:)%swa
177 !
178  WHERE ( tpsit(:,:)%hsn>epsil1 )
179  pswtra(nilay+1,:,:) = tpblki(:,:)%swa
180  zqsw2si(:,:) = 0.
181  ztraml(:,:) = 0.
182  ENDWHERE
183 !
184  WHERE ( tpsit(:,:)%hsn<=epsil1 )
185  ztraml(:,:) = exp( -kappa*tpsit(:,:)%hsi )
186  ENDWHERE
187 !
188 ! WHERE ( tpsit(:,:)%hsn>epsil1 .AND. zvtpn(nilay+1,:,:)>tice_m )
189 ! zqmelt(:,:) = cpice0 * tpsit(:,:)%rsn * tpsit(:,:)%hsn * &
190 ! ( zvtpn(nilay+1,:,:)-tice_m ) / dtt
191 ! zhsnn(:,:) = tpsit(:,:)%hsn - &
192 ! dtt*hofusni0*zqmelt(:,:)*rhoice/tpsit(:,:)%rsn
193 ! ENDWHERE
194 ! WHERE ( zhsnn(:,:)<0. )
195 ! zqsw2si(:,:) = -hofusn0*tpsit(:,:)%rsn*zhsnn(:,:) / &
196 ! ( rhoice * dtt )
197 ! zhsnn = 0.
198 !! ztraml(:,:) = exp( -kappa*tpsit(:,:)%hsi )
199 !! tpsit(:,:)%rsn = rhosnwmin
200 ! ENDWHERE
201 !!
202 !! Case 2 : ice without a snow layer (after being in case 1 the ice/snow
203 !! pack can be in case 1)
204 !!
205 ! WHERE ( zhsnn<=epsil1 )
206 ! ztraml(:,:) = exp( -kappa*tpsit(:,:)%hsi )
207 ! ENDWHERE
208 !
209 !
210 !
211 ! 3. Update sea ice heat storage and heat transm. to the ocean
212 ! ============================================================
213 !
214 ! .. Ancillary array
215 !
216  DO jl=1,nilay+1
217  zaux(jl) = exp( -kappa*depth(jl) )
218  END DO
219 !
220 ! .. Impact on mixed layer (transmitted radiative flux)
221 !
222  tptfl(:)%lio = tptfl(:)%lio + &
223  sum( tpsit(:,:)%fsi*ztraml(:,:)*zqsw2si(:,:), dim=1 )
224 !
225 ! * Compute the trend on vertical temperature profile due to
226 ! solar short wave absorption
227 !
228  DO jl = 1,nilay
229  WHERE ( tpsit(:,:)%hsi>epsil1 .AND. tpsit(:,:)%hsn<=epsil1 )
230  pswtra(jl,:,:) = zqsw2si(:,:)* &
231  ( zaux(jl+1)**tpsit(:,:)%hsi - &
232  zaux(jl)**tpsit(:,:)%hsi &
233  )
234  ENDWHERE
235  END DO
236 !
237 END SUBROUTINE glt_icetrans_r
238 !
239 ! ---------------------- END SUBROUTINE glt_icetrans_r ----------------------
240 ! -----------------------------------------------------------------------
subroutine glt_icetrans_r(tpblki, tpmxl, tptfl, tpsit, tpdia, pswtra)