SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modi_glt_precip_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_precip_r ========================
41 ! =======================================================================
42 !
43 ! Goal:
44 ! -----
45 ! This module contains a subroutine that takes the physical effect
46 ! of precipitations on sea ice. Depending on the kind of precipitation,
47 ! snow accumulation can take place, the density of the snow layer
48 ! increasing in time; or if it rains, the bottom of the snow layer
49 ! can be transformed into ice...
50 ! Note that the physics treated by this routine is altered by
51 ! nrn2ice flag (for the time being local to this routine)
52 ! ==> If put to 1, the rain is transformed into ice as it
53 ! comes in contact with the surface snow, if snow has reached its
54 ! maximum density. However, perfect gltools_enthalpy conservation is not
55 ! ensured with this method.
56 ! ==> If put to 0, if snow has reached its maximum density, more
57 ! rain goes to the mixed layer in an energy conservating way.
58 !
59 !
60 ! Method:
61 ! -------
62 ! Based on Douville (1995)
63 !
64 ! Created : 1996/10 (D. Salas y Melia)
65 ! Later on modified for rewriting.
66 ! Modified: 2009/06 (D. Salas y Melia)
67 ! Reduced grid
68 ! Modified: 2009/07 (D. Salas y Melia)
69 ! Second possible treatment for rain / snow layer interactions.
70 ! Overwhelming energy due to rainfall does not go to the
71 ! mixed layer, but more logically to the heat diffusion scheme
72 ! Modified: 2009/12 (D. Salas y Melia)
73 ! New treatment of energy (gltools_enthalpy replaces temperature as
74 ! a reference variable)
75 ! Modified: (A. Voldoire)
76 ! new ice/water fluxes interface CALL
77 !
78 ! --------------------- BEGIN MODULE modi_glt_precip_r ----------------------
79 !
80 !THXS_SFX!MODULE modi_glt_precip_r
81 !THXS_SFX!INTERFACE
82 !THXS_SFX!!
83 !THXS_SFX!SUBROUTINE glt_precip_r( orain,osnow,tpmxl,tpatm,tpsit,tpsil,tptfl,tpdia, &
84 !THXS_SFX! pqmelt )
85 !THXS_SFX! USE modd_types_glt
86 !THXS_SFX! USE modd_glt_param
87 !THXS_SFX! LOGICAL, DIMENSION(np), INTENT(in) :: &
88 !THXS_SFX! orain,osnow
89 !THXS_SFX! TYPE(t_mxl), DIMENSION(np), INTENT(in) :: &
90 !THXS_SFX! tpmxl
91 !THXS_SFX! TYPE(t_atm), DIMENSION(np), INTENT(in) :: &
92 !THXS_SFX! tpatm
93 !THXS_SFX! TYPE(t_sit), DIMENSION(nt,np), INTENT(inout) :: &
94 !THXS_SFX! tpsit
95 !THXS_SFX! TYPE(t_vtp), DIMENSION(nl,nt,np), INTENT(inout) :: &
96 !THXS_SFX! tpsil
97 !THXS_SFX! TYPE(t_tfl), DIMENSION(np), INTENT(inout) :: &
98 !THXS_SFX! tptfl
99 !THXS_SFX! TYPE(t_dia), DIMENSION(np), INTENT(inout) :: &
100 !THXS_SFX! tpdia
101 !THXS_SFX! REAL, DIMENSION(nt,np), INTENT(inout) :: &
102 !THXS_SFX! pqmelt
103 !THXS_SFX!END SUBROUTINE glt_precip_r
104 !THXS_SFX!!
105 !THXS_SFX!END INTERFACE
106 !THXS_SFX!END MODULE modi_glt_precip_r
107 !
108 ! ---------------------- END MODULE modi_glt_precip_r -----------------------
109 !
110 !
111 !
112 ! -----------------------------------------------------------------------
113 ! ------------------------ SUBROUTINE glt_precip_r --------------------------
114 !
115 ! * Subroutine which takes physical effects of precipitations over ice
116 ! or snow into account, except the case of rain over non snow covered
117 ! sea ice.
118 !
119 SUBROUTINE glt_precip_r( orain,osnow,tpmxl,tpatm,tpsit,tpsil,tptfl,tpdia, &
120  pqmelt )
121 !
123  USE modd_types_glt
124  USE modd_glt_param
126  USE modi_glt_updtfl_r
127 !
128  IMPLICIT NONE
129 !
130  LOGICAL, DIMENSION(np), INTENT(in) :: &
131  orain,osnow
132  TYPE(t_mxl), DIMENSION(np), INTENT(in) :: &
133  tpmxl
134  TYPE(t_atm), DIMENSION(np), INTENT(in) :: &
135  tpatm
136  TYPE(t_sit), DIMENSION(nt,np), INTENT(inout) :: &
137  tpsit
138  TYPE(t_vtp), DIMENSION(nl,nt,np), INTENT(inout) :: &
139  tpsil
140  TYPE(t_tfl), DIMENSION(np), INTENT(inout) :: &
141  tptfl
142  TYPE(t_dia), DIMENSION(np), INTENT(inout) :: &
143  tpdia
144  REAL, DIMENSION(nt,np), INTENT(inout) :: &
145  pqmelt
146 !
147  INTEGER :: &
148  jk,jl,jp
149  INTEGER, PARAMETER :: &
150  nrn2ice=0
151  REAL, DIMENSION(np) :: &
152  zpcps,zpcpr,zfsit,zwork,zqm
153  REAL, DIMENSION(nt,np) :: &
154  zrsn,zhsn,zmsn,zt,zdmwat,zent,zentsn,zsalt
155  real,dimension(np) :: zei1,zei2,zes1,zes2
156 ! real,dimension(nl,nt,np) :: zenth
157 !
158 !
159 !
160 ! 1. Array initializations
161 ! ========================
162 !
163 ! .. 3D real arrays
164 !
165  pqmelt(:,:) = 0.
166  zdmwat(:,:) = 0.
167 ! CALL glt_aventh(tpsit,tpsil,zei1,zes1)
168 !print*,'rsn =',tpsit%rsn
169 !print*,'hsn =',tpsit%hsn
170 !print*,'msn =',tpsit%hsn*tpsit%rsn
171 !print*,'hsi =',tpsit%hsi
172 !print*,'Enthalpie avant =',zei1+zes1
173 !do jk=1,nt
174 ! do jl=1,nilay
175 ! zenth(jl,jk,:) = rhoice*tpsit(jk,:)%hsi*tpsit(jk,:)%fsi*sf3tinv(jl)* &
176 ! tpsil(jl,jk,:)%ent
177 ! end do
178 ! zenth(jl,jk,:) = tpsit(jk,:)%rsn * tpsit(jk,:)%fsi * tpsit(jk,:)%hsn * &
179 ! tpsil(nilay+1,jk,:)%ent
180 !end do
181 
182 !
183 ! .. Save snow density before new computations
184 !
185  zrsn(:,:) = tpsit(:,:)%rsn
186 !
187 ! .. We assume that new snow massic gltools_enthalpy is the massic gltools_enthalpy of
188 ! snow (salinity=0) of temperature tsf
189 !
190  zsalt(:,:) = 0.
191  zentsn(:,:) = tpsil(nl,:,:)%ent
192  DO jl=nilay+1,nl
193  WHERE( tpsit(:,:)%esi .AND. tpsit(:,:)%hsn<epsil1 )
194  tpsil(jl,:,:)%ent = zentsn(:,:)
195  ENDWHERE
196  END DO
197 !
198 !
199 !
200 ! 2. Snow aging includes snow density increase
201 ! ============================================
202 !
203 ! .. The density increase is exponential towards rhosnwmax
204 !
205  WHERE ( tpsit(:,:)%esi )
206  tpsit(:,:)%rsn = rhosnwmax + &
207  (tpsit(:,:)%rsn-rhosnwmax)*exp(-tauf*dtt/xday2sec)
208  tpsit(:,:)%hsn = &
209  tpsit(:,:)%hsn * zrsn(:,:) / tpsit(:,:)%rsn
210  ENDWHERE
211 !
212  WHERE ( .NOT.tpsit(:,:)%esi )
213  tpsit(:,:)%rsn = rhosnwmin
214  tpsit(:,:)%hsn = 0.
215  ENDWHERE
216 !
217 !
218 !
219 ! 3. Effect of precipitations
220 ! ===========================
221 !
222 ! 3.1. Snow and rain amounts in kg.m-2
223 ! -------------------------------------
224 !
225  zpcps(:) = dtt * tpatm(:)%sop
226  zpcpr(:) = dtt * tpatm(:)%lip
227 !
228 ! .. Now in case there is precipitation, update tpsit
229  tpdia(:)%s_pr = 0.
230  tpdia(:)%o_pr = 0.
231 !
232  DO jk = 1,nt
233 !
234 !
235 ! 3.2. Precipitation is rain
236 ! --------------------------
237 !
238 ! .. The superficial snow layer absorbs rain and its density increases.
239 ! But as rain is transformed into ice, some latent heat is released.
240 ! If there is no snow layer, the rain is just drained through the ice.
241 !
242 ! .. New snow thickness and density reference
243 !
244  zhsn(jk,:) = tpsit(jk,:)%hsn
245  zrsn(jk,:) = tpsit(jk,:)%rsn
246  zmsn(jk,:) = zhsn(jk,:)*zrsn(jk,:)
247 !
248  zwork(:) = 0.
249 ! print*,'avant =',tpsil(nilay+1,jk,:)%ent
250  WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
251  zhsn(jk,:)>epsil1 )
252 !
253 ! .. Density increase without increase in snow layer thickness
254  tpsit(jk,:)%rsn = &
255  ( zmsn(jk,:) + zpcpr(:) ) / zhsn(jk,:)
256  zwork(:) = zpcpr(:)*tpsit(jk,:)%fsi / dtt
257  ENDWHERE
258 ! print*,'apres =',tpsil(nilay+1,jk,:)%ent
259 ! print*,'fact =',zmsn(jk,:) / ( zmsn(jk,:)+zpcpr(:) )
260  tpdia(:)%o_pr = tpdia(:)%o_pr + zpcpr(:)*tpsit(jk,:)%fsi / dtt - zwork(:)
261  tpdia(:)%s_pr = tpdia(:)%s_pr + zwork(:)
262 !
263 !
264 ! .. If there is no snow layer on ice: water goes directly to the ocean
265 ! (it is assumed this happens not by percolation through sea ice, but goes
266 ! to the leads)
267 !
268  WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
269  zhsn(jk,:)<=epsil1 )
270  tptfl(:)%wlo = tptfl(:)%wlo + &
271  tpsit(jk,:)%fsi*zpcpr(:)/dtt
272  ENDWHERE
273 !
274 !
275 ! 3.3. Handle case where snow density > max. density (Method I)
276 ! --------------------------------------------------------------
277 !
278 ! .. If calculated snow density is more than maximum density, but still
279 ! less than rhoice, then part of the snow is transformed into ice, and
280 ! the rest remains at rhosnwmax.
281 ! - this is rather physical, however it creates a slight energetic
282 ! inconsistency (sea ice thickness increases without any temperature
283 ! change, modifying the gltools_enthalpy stored in sea ice)
284 ! ==> it should be decided by a namelist parameter whether we do
285 ! this or decide to deliver the precipitation water to the mixed
286 ! layer
287 !
288  IF ( nrn2ice == 1 ) THEN ! Transform snow into ice
289 !
290  WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
291  tpsit(jk,:)%hsn>epsil1 .AND. &
292  tpsit(jk,:)%rsn>rhosnwmax .AND. tpsit(jk,:)%rsn<rhoice )
293  tpsit(jk,:)%hsi = tpsit(jk,:)%hsi + tpsit(jk,:)%hsn* &
294  (tpsit(jk,:)%rsn-rhosnwmax)/(rhoice-rhosnwmax)
295  tpsit(jk,:)%hsn = tpsit(jk,:)%hsn* &
296  (rhoice-tpsit(jk,:)%rsn)/(rhoice-rhosnwmax)
297  tpsit(jk,:)%rsn = rhosnwmax
298  ENDWHERE
299 !
300 ! .. If calculated snow density is more than ice density, then all the
301 ! snow is turned into sea ice
302 !
303  WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
304  tpsit(jk,:)%hsn>epsil1 .AND. tpsit(jk,:)%rsn>rhoice )
305  tpsit(jk,:)%hsi = tpsit(jk,:)%hsi + tpsit(jk,:)%hsn
306  tpsit(jk,:)%hsn = 0.
307  tpsit(jk,:)%rsn = rhosnwmin
308  ENDWHERE
309 !
310 ! .. pqmelt contributes to melting snow, not ice (goes to the mixed layer
311 ! instead)
312 !
313  WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. pqmelt(jk,:)>0. )
314  tpsit(jk,:)%hsn = tpsit(jk,:)%hsn - &
315  dtt*pqmelt(jk,:) / ( xmhofusn0*tpsit(jk,:)%rsn )
316  pqmelt(jk,:) = -amin1( 0.,tpsit(jk,:)%hsn )* &
317  xmhofusn0*tpsit(jk,:)%rsn / dtt
318  ENDWHERE
319 !
320 ! zqmelt should go to the mixed layer in this case, not to the surface of sea
321 ! ice !
322 !
323  WHERE ( orain(:) .AND. &
324  (.NOT. tpsit(jk,:)%esi .OR. tpsit(jk,:)%hsn<epsil1) )
325  tpsit(jk,:)%hsn = 0.
326  tpsit(jk,:)%rsn = rhosnwmin
327  ENDWHERE
328 !
329 !
330 ! 3.4. Handle case where snow density > max. density (Method II)
331 ! -------------------------------------------------------------
332 !
333 ! We do not transform snow into ice (in excess rain goes to the ocean)
334 !
335  ELSE
336 !
337  WHERE ( orain(:) .AND. tpsit(jk,:)%esi .AND. &
338  tpsit(jk,:)%hsn>epsil1 .AND. tpsit(jk,:)%rsn>rhosnwmax )
339  zdmwat(jk,:) = -zhsn(jk,:)*tpsit(jk,:)%fsi* &
340  ( tpsit(jk,:)%rsn-rhosnwmax )
341  tpsit(jk,:)%rsn = rhosnwmax
342 ! pqmelt(jk,:) = &
343 ! zhsn(jk,:)*( tpsit(jk,:)%rsn-zrsn(jk,:) ) * &
344 ! ( xmhofusn0 + tpmxl(:)%hco ) / dtt
345  ENDWHERE
346  tpdia(:)%s_pr = tpdia(:)%s_pr + zdmwat(jk,:) / dtt
347  tpdia(:)%o_pr = tpdia(:)%o_pr - zdmwat(jk,:) / dtt
348 !
349  ENDIF
350 !
351 !
352 ! 3.5. Precipitation is snow
353 ! --------------------------
354 !
355  zwork(:) = 0.
356  WHERE ( osnow(:) .AND. tpsit(jk,:)%esi )
357 !
358 ! .. Total mass of snow (current snow layer + new snowfalls)
359  zqm(:) = &
360  tpsit(jk,:)%hsn*tpsit(jk,:)%rsn + zpcps(:)
361 !
362 ! .. Total snow thickness (current snow layer + new snowfalls)
363  tpsit(jk,:)%hsn = &
364  tpsit(jk,:)%hsn + zpcps(:)/rhosnwmin
365 !
366 ! .. New density is the ratio of new snow mass over new snow thickness
367  tpsit(jk,:)%rsn = &
368  zqm(:) / tpsit(jk,:)%hsn
369  zwork(:) = zpcps(:) * tpsit(jk,:)%fsi / dtt
370  ENDWHERE
371  tpdia(:)%s_prsn = tpdia(:)%s_prsn + zwork(:)
372 !
373  zwork(:) = 0.
374  WHERE ( osnow(:) .AND. .NOT.tpsit(jk,:)%esi )
375  tpsit(jk,:)%hsn = 0.
376  tpsit(jk,:)%rsn = rhosnwmin
377  zwork(:) = zpcps(:) * tpsit(jk,:)%fsi / dtt
378  ENDWHERE
379  tpdia(:)%o_prsn = tpdia(:)%o_prsn + zwork(:)
380 !
381 ! .. The change in snow density due to rainfall is not related to a change
382 ! in snow thickness, but to a liquid water input. Here the temperature of
383 ! liquid precipitation is unknown, so we suppose that the gltools_enthalpy of snow
384 ! does not change. To achieve this, we have to modify the snow gltools_enthalpy per
385 ! mass unit to avoid a change in snow layer enthalpy.
386 !
387 do jp=1,np
388 if ( orain(jp) .AND. tpsit(jk,jp)%esi .AND. &
389  tpsit(jk,jp)%hsn>epsil1 ) then
390 ! print*,'essai'
391  DO jl=nilay+1,nl
392 !! WHERE( orain(:) .AND. tpsit(jk,:)%esi .AND. &
393 !! tpsit(jk,:)%hsn>epsil1 )
394 !! tpsil(jl,jk,:)%ent = tpsil(jl,jk,:)%ent * &
395 !! zrsn(jk,:) / tpsit(jk,:)%rsn
396 !print*,'avant =',tpsil(jl,jk,jp)%ent
397  tpsil(jl,jk,jp)%ent = &
398  tpsil(jl,jk,jp)%ent* ( zmsn(jk,jp) + zpcps(jp) ) / &
399  ( tpsit(jk,jp)%rsn * tpsit(jk,jp)%hsn )
400 !print*,'apres =',tpsil(jl,jk,jp)%ent
401 !! ENDWHERE
402 !!
403  END DO
404 endif
405 end do
406 !
407 !
408 ! .. Without any information about rain temperature, we assume that rain falls
409 ! at 0C (i.e. gltools_enthalpy = 0), hence total snow gltools_enthalpy does not change (i.e.
410 ! new snow massic gltools_enthalpy is:
411 ! enth_snow = enth_snow_old * mass_snow_old / (mass_snow_old + mass_rain)
412 ! tpsil(nilay+1,jk,:)%ent = tpsil(nilay+1,jk,:)%ent * &
413 ! zmsn(jk,:) / ( zmsn(jk,:)+zpcpr(:) )
414 !
415  END DO
416 !
417 !
418 ! 3.6. Collect water that goes to the mixed layer
419 ! ------------------------------------------------
420 !
421 ! glt_updtfl_r cannot be used here, since rain has no energy as in input
422 ! (see updbud.f90), just consider the water flux
423 ! ok since the gltools_enthalpy flux is now optional in glt_updtfl_r
424 !
425 ! This is tricky... in excess rain has to go to the %wlo flux to be transmitted
426 ! to the ocean (if the ocean model assumes levitating sea ice).
427 ! If this flux is put in %wio, it won't be transmitted to the ocean and water
428 ! (coming from the atmosphere) will be lost.
429 !
430  IF ( nrn2ice==0 ) THEN
431  CALL glt_updtfl_r('FW2O',tpmxl,tptfl,zdmwat)
432  ENDIF
433 !
434 !
435 ! 4. Correct to avoid further problems due to computer precision
436 ! ==============================================================
437 !
438  zt(:,:) = tpsit(:,:)%rsn
439  tpsit(:,:)%rsn = amax1( zt(:,:),rhosnwmin )
440  zt(:,:) = tpsit(:,:)%rsn
441  tpsit(:,:)%rsn = amin1( zt(:,:),rhosnwmax )
442  zt(:,:) = tpsit(:,:)%hsn
443  tpsit(:,:)%hsn = amax1( zt(:,:),0. )
444 !
445 !
446 ! 5. AR5 diagnostics
447 ! ===================
448 !
449 ! .. Compute total sea ice concentration
450 !
451  zfsit(:) = sum( tpsit(:,:)%fsi ,dim=1 )
452 !
453 ! .. Rain flux falling on the sea ice part of the grid cell
454 !
455  tpdia(:)%lip = zfsit(:)*tpatm(:)%lip
456 !
457 ! .. Snow flux falling on the sea ice part of the grid cell
458 !
459  tpdia(:)%sop = zfsit(:)*tpatm(:)%sop
460 !CALL glt_aventh(tpsit,tpsil,zei2,zes2)
461 !print*,'Enthalpie apres =',zei2+zes2
462 !print*,'Delta Enthalpie =',(zei2+zes2-zei1-zes1)/dtt
463 !print*,'Delta Enthalpie neige =',(zes2-zes1)/dtt
464 !print*,'rsn=',tpsit(:,:)%rsn
465 !print*,'hsn=',tpsit(:,:)%hsn
466 !print*,'msn =',tpsit%hsn*tpsit%rsn
467 !print*,zpcpr
468 !print*,'hsi=',tpsit(:,:)%hsi
469 !do jk=1,nt
470 !print*,'jk=',jk
471 ! do jl=1,nilay
472 !print*,'d ent jl =',jl, &
473 ! ( rhoice*tpsit(jk,:)%hsi*tpsit(jk,:)%fsi*sf3tinv(jl)* &
474 ! tpsil(jl,jk,:)%ent - zenth(jl,jk,:) )/dtt
475 ! end do
476 !print*,'d ent snow=', &
477 ! ( tpsit(jk,:)%rsn * tpsit(jk,:)%fsi * tpsit(jk,:)%hsn * &
478 ! tpsil(nilay+1,jk,:)%ent-zenth(nilay+1,jk,:) )/dtt
479 !end do
480 !
481 END SUBROUTINE glt_precip_r
482 !
483 ! ---------------------- END SUBROUTINE glt_precip_r ------------------------
484 ! -----------------------------------------------------------------------
subroutine glt_updtfl_r(hflag, tpmxl, tptfl, pdmass, pent, psalt)
subroutine glt_precip_r(orain, osnow, tpmxl, tpatm, tpsit, tpsil, tptfl, tpdia, pqmelt)