SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modi_glt_updsal_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_updsal_r =========================
41 ! =======================================================================
42 !
43 ! Goal:
44 ! -----
45 ! This module contains a subroutine that is used to update sea ice
46 ! salinity, taking into account desalination processes.
47 !
48 ! Method:
49 ! --------
50 ! Vancoppenolle et al., O. Modelling (2009)
51 ! We assume that the sea ice gltools_enthalpy does not change. Implicitly,
52 ! it means that the temperature of sea ice will increase if
53 ! desalination occurs. The temperature change will be taken into
54 ! account at the next time step, in glt_vhdiff_r routine.
55 !
56 ! Created : 2010/03 (D. Salas y Melia)
57 !
58 ! --------------------- BEGIN MODULE modi_glt_updsal_r ----------------------
59 !
60 !THXS_SFX!MODULE modi_glt_updsal_r
61 !THXS_SFX!INTERFACE
62 !THXS_SFX!!
63 !THXS_SFX!SUBROUTINE glt_updsal_r( gsmelt,tpmxl,tpsit,tptfl )
64 !THXS_SFX! USE modd_types_glt
65 !THXS_SFX! USE modd_glt_param
66 !THXS_SFX! LOGICAL, DIMENSION(nt,np), INTENT(in) :: &
67 !THXS_SFX! gsmelt
68 !THXS_SFX! TYPE(t_mxl), DIMENSION(np), INTENT(in) :: &
69 !THXS_SFX! tpmxl
70 !THXS_SFX! TYPE(t_sit), DIMENSION(nt,np), INTENT(inout) :: &
71 !THXS_SFX! tpsit
72 !THXS_SFX! TYPE(t_tfl), DIMENSION(np), INTENT(inout) :: &
73 !THXS_SFX! tptfl
74 !THXS_SFX!END SUBROUTINE glt_updsal_r
75 !THXS_SFX!!
76 !THXS_SFX!END INTERFACE
77 !THXS_SFX!END MODULE modi_glt_updsal_r
78 !
79 ! ---------------------- END MODULE modi_glt_updsal_r -----------------------
80 !
81 !
82 !
83 ! -----------------------------------------------------------------------
84 ! ------------------------- SUBROUTINE glt_updsal_r -------------------------
85 !
86 SUBROUTINE glt_updsal_r( gsmelt,tpmxl,tpsit,tptfl )
87 !
89  USE modd_types_glt
90  USE modd_glt_param
91  USE modi_glt_salflx_r
93 !
94  IMPLICIT NONE
95 !
96  LOGICAL, DIMENSION(nt,np), INTENT(in) :: &
97  gsmelt
98  TYPE(t_mxl), DIMENSION(np), INTENT(in) :: &
99  tpmxl
100  TYPE(t_sit), DIMENSION(nt,np), INTENT(inout) :: &
101  tpsit
102  TYPE(t_tfl), DIMENSION(np), INTENT(inout) :: &
103  tptfl
104 !
105 ! .. Local variables
106 !
107  REAL, DIMENSION(np) :: &
108  zqsalt
109  REAL, DIMENSION(nt,np) :: &
110  zdssi,zssieq,zqsalt2,zssi
111 !
112 !
113 !
114 ! 1. Initialization
115 ! ==================
116 !
117  zdssi(:,:) = 0.
118  zssi(:,:) = tpsit(:,:)%ssi
119 !
120 !
121 !
122 ! 2. Desalination of sea ice
123 ! ===========================
124 !
125 ! In both cases, these processes are used only if salinity is greater than
126 ! the equilibrium salinity (no re-salination !)
127 !
128 ! .. Summer
129 ! Criterion is: surface melting
130 !
131  zssieq(:,:) = ssisummer0/ssw0 * spread( tpmxl(:)%sml,1,nt )
132  WHERE( tpsit(:,:)%ssi > zssieq(:,:) .AND. gsmelt(:,:) )
133  zdssi(:,:) = &
134  ( zssieq(:,:) - tpsit(:,:)%ssi )*dtt / ( ssisummer_ts * xday2sec )
135  tpsit(:,:)%ssi = max( tpsit(:,:)%ssi + zdssi(:,:), zssieq(:,:) )
136  ENDWHERE
137 !
138 ! .. Winter
139 ! Criterion is: surface temperature is less than bottom temperature
140 !
141  zssieq(:,:) = ssiwinter0/ssw0 * spread( tpmxl(:)%sml,1,nt )
142  WHERE( tpsit(:,:)%ssi > zssieq(:,:) .AND. &
143  tpsit(:,:)%tsf < spread( tpmxl(:)%mlf,1,nt ) )
144  zdssi(:,:) = &
145  ( zssieq(:,:) - tpsit(:,:)%ssi )*dtt / ( ssiwinter_ts * xday2sec )
146  tpsit(:,:)%ssi = max( tpsit(:,:)%ssi + zdssi(:,:), zssieq(:,:) )
147  ENDWHERE
148  zdssi(:,:) = tpsit(:,:)%ssi - zssi(:,:)
149 !
150 !
151 !
152 ! 3. Flux to the ocean
153 ! =====================
154 !
155 ! .. Salt flux in g.m-2.s-1
156 !
157  zqsalt2(:,:) = -rhoice*tpsit(:,:)%fsi*tpsit(:,:)%hsi*zdssi(:,:)
158  zqsalt(:) = sum( zqsalt2(:,:), dim=1 ) / dtt
159 !
160 ! .. The salt flux is associated to a water flux (in kg.m-2.s-1)
161 !
162  IF ( nleviti==0 ) THEN
163  tptfl%wio = tptfl%wio - 1.e-3*zqsalt(:)
164  ENDIF
165 !
166 ! .. Update virtual water flux (concentration/dilution) in kg.m-2.s-1
167 !
168  CALL glt_salflx_r( -zqsalt2,tpmxl,tptfl )
169 !
170 ! .. Salt flux in kg.m-2.s-1
171 !
172  tptfl(:)%sio = tptfl(:)%sio + 1.e-3 * zqsalt(:)
173 !
174 END SUBROUTINE glt_updsal_r
175 !
176 ! ---------------------- END SUBROUTINE glt_updsal_r ------------------------
177 ! -----------------------------------------------------------------------
subroutine glt_updsal_r(gsmelt, tpmxl, tpsit, tptfl)
subroutine glt_salflx_r(pqsalt, tpmxl, tptfl, pdmass, psalt)