122 ( tpdom,tpmxl,tpatm,tpblki,tpbud,tpdia,tptfl,tpsit,tpsil )
135 USE modi_glt_vhdiff_r
139 USE modi_glt_updasn_r
140 USE modi_glt_icetrans_r
141 USE modi_glt_sublim_r
142 USE modi_glt_precip_r
143 USE modi_glt_snowice_r
144 USE modi_glt_updhsn_r
145 USE modi_glt_updhsi_r
146 USE modi_glt_lmltsi_r
147 USE modi_glt_updbud_r
148 USE modi_glt_updice_r
149 USE modi_glt_updsnow_r
150 USE modi_glt_icevsp_r
151 USE modi_gltools_chkglo_r
153 USE modi_glt_updsal_r
163 TYPE(t_dom),
DIMENSION(np),
INTENT(in) :: &
165 TYPE(t_mxl),
DIMENSION(np),
INTENT(in) :: &
167 TYPE(t_atm),
DIMENSION(np),
INTENT(in) :: &
169 TYPE(t_blk),
DIMENSION(nt,np),
INTENT(in) :: &
174 TYPE(t_bud),
DIMENSION(np),
INTENT(inout) :: &
176 TYPE(t_dia),
DIMENSION(np),
INTENT(inout) :: &
178 TYPE(t_tfl),
DIMENSION(np),
INTENT(inout) :: &
180 TYPE(t_sit),
DIMENSION(nt,np),
INTENT(inout) :: &
182 TYPE(t_vtp),
DIMENSION(nl,nt,np),
INTENT(inout) :: &
189 LOGICAL,
DIMENSION(np) :: &
191 LOGICAL,
DIMENSION(nt,np) :: &
196 zwork0,zicondt,zicondb,zidhi,zidhs,zinrg,zsnow_a,zemp_a,&
197 zice_a,zemps_a,zsalt_a,zsalf_a
198 real,
dimension(np) :: zei1,zes1,zei2,zes2
199 REAL,
DIMENSION(np) :: &
201 REAL,
DIMENSION(nt,np) :: &
202 zcondb,zqtopmelt,znsftop,zdcondt,zqmelt,zmlf3
203 REAL,
DIMENSION(nl,nt,np) :: &
204 zswtra,zdhmelt,zvsp,zent
205 TYPE(t_blk),
DIMENSION(np) :: &
214 WRITE(noutlu,*)
'**** LEVEL 4 - SUBROUTINE THERMO_ICE_R'
224 grain(:) = ( tpatm(:)%lip>epsil1 )
225 gsnow(:) = ( tpatm(:)%sop>epsil1 )
254 zemps(:) = tptfl(:)%cio
256 IF ( nupdbud==1 )
THEN
257 CALL
glt_updsnow_r(0,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
258 CALL
glt_updice_r(0,
' BEGINNING THERMO_ICE ', tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
269 IF ( nicesub==1 )
THEN
270 CALL
glt_sublim_r( tpmxl,tpblki,tpsit,tpsil,tptfl,tpdia )
273 tpdia(:)%subcio = tptfl(:)%cio - zemps(:)
274 zemps(:) = tptfl(:)%cio
276 IF ( nupdbud==1 )
THEN
277 CALL
glt_updbud_r( 0,
'After glt_sublim_r / Before PRECIP_R:', &
278 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
279 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a, &
280 -1*tpdia(:)%sus, -1*(tpdia(:)%suw+tpdia(:)%sui))
282 tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
295 CALL
glt_precip_r( grain,gsnow,tpmxl,tpatm,tpsit,tpsil,tptfl,tpdia,zqmelt )
297 IF ( nupdbud==1 )
THEN
298 CALL
glt_updbud_r( 0,
'After glt_precip_r / Before ICETRANS_R:', &
299 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
300 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a, &
301 -1*(tpdia(:)%s_pr+tpdia(:)%s_prsn), -1*(tpdia(:)%o_pr+tpdia(:)%o_prsn))
302 CALL
glt_updice_r(1,
' AFTER glt_precip_r ', tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
327 zmlf3(:,:) = spread( tpmxl(:)%mlf,1,nt )
332 WHERE ( tpsit(:,:)%hsi<epsil1 )
333 tpsit(:,:)%tsf = zmlf3(:,:)
338 WHERE ( tpsit(:,:)%hsi<epsil1 )
339 tpsil(jl,:,:)%ent = -cpsw*mu*zvsp(jl,:,:)
344 WHERE( tpsit(:,:)%hsi<epsil1 )
345 tpsil(nilay+1,:,:)%ent = -xmhofusn0
350 IF ( nupdbud==1 )
THEN
351 CALL
glt_updbud_r( 0,
'After glt_icetrans_r / Before VHDIFF_R:', &
352 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
353 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
354 CALL
glt_updice_r(1,
' AFTER glt_icetrans_r ', tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
367 znsftop(:,:) = tpblki(:,:)%nsf + zqmelt(:,:)
371 zdcondt(:,:) = tpblki(:,:)%dfl
381 zwork2 = dtt*sum( tpsit(:,:)%fsi*znsftop, dim=1 )
383 zent(:,:,:) = tpsil(:,:,:)%ent
386 ( tpdom,tpmxl%mlf,zdcondt,tpsit,tpdia, &
387 znsftop,zswtra,zent,zvsp,zcondb,zqtopmelt,zdhmelt,osmelt )
389 tpsil(:,:,:)%ent = zent(:,:,:)
394 IF ( nupdbud==1 )
THEN
395 CALL
glt_updbud_r( 0,
'After glt_vhdiff_r / Before UPDHSN_R:', &
396 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
397 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
398 CALL
glt_updice_r(1,
' AFTER glt_vhdiff_r ', tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
412 CALL
glt_updhsn_r( osmelt,zdhmelt,tpmxl,tptfl,tpsit,tpsil,tpdia )
414 IF ( nupdbud==1 )
THEN
415 CALL
glt_updbud_r( 0,
'After glt_updhsn_r / Before SNOWICE_R:', &
416 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
417 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
418 CALL
glt_updice_r(1,
' AFTER glt_updhsn_r ', tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
429 tpdia(:)%snicio = tptfl(:)%cio - zemps(:)
430 zemps(:) = tptfl(:)%cio
432 IF ( nupdbud==1 )
THEN
433 CALL
glt_updbud_r( 0,
'After glt_snowice_r / Before UPDHSI_R:', &
434 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
435 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
436 CALL
glt_updice_r(1,
' AFTER SNOWICE_R', tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
454 CALL
glt_updhsi_r( zcondb,zqtopmelt,zdhmelt,tpmxl,tpdia,tptfl,tpsit,tpsil )
456 tpdia(:)%hsicio = tptfl(:)%cio - zemps(:)
457 zemps(:) = tptfl(:)%cio
461 IF ( nupdbud==1 )
THEN
462 CALL
glt_updbud_r( 0,
'After glt_updhsi_r / Before UPDASN_R:', &
463 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
464 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
466 tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
475 CALL
glt_updasn_r( osmelt,tpatm,tpblki,zvsp,tpsit,tpdia )
479 IF ( nupdbud==1 )
THEN
480 CALL
glt_updbud_r( 0,
'After glt_updasn_r / before LMLTSI_R:', &
481 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
482 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
484 tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
497 tpdia(:)%lmlcio = tptfl(:)%cio - zemps(:)
498 zemps(:) = tptfl(:)%cio
500 IF ( nupdbud==1 )
THEN
501 CALL
glt_updbud_r( 0,
'After glt_lmltsi_r / Before UPDSAL_R:', &
502 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
503 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
505 tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
517 tpdia(:)%salcio = tptfl(:)%cio - zemps(:)
518 zemps(:) = tptfl(:)%cio
529 IF ( nupdbud==1 )
THEN
530 CALL
glt_updbud_r( 0,
'After glt_updsal_r = End of THERMO_ICE_R:', &
531 tpdom,tpmxl,tptfl,tpatm,tzdum,tpblki,tpsit,tpsil,tpbud )
532 CALL
glt_updsnow_r(1,
' Snow ', tpdom, tptfl, tpsit, zsnow_a, zemp_a)
534 tpdom, tpsit, zsalt_a, zice_a, tptfl, zemps_a, zsalf_a)
547 WRITE(noutlu,*)
'**** LEVEL 4 - END SUBROUTINE THERMO_ICE_R'
subroutine glt_thermo_ice_r(tpdom, tpmxl, tpatm, tpblki, tpbud, tpdia, tptfl, tpsit, tpsil)
subroutine glt_vhdiff_r(tpdom, pmlf, pderiv, tpsit, tpdia, pnsftop, pswtra, pent, pvsp, pcondb, pqtopmelt, pdhmelt, gsmelt)
subroutine glt_updsal_r(gsmelt, tpmxl, tpsit, tptfl)
subroutine glt_updasn_r(gsmelt, tpatm, tpblki, pvsp, tpsit, tpdia)
subroutine glt_updice_r(kinit, omsg, tpdom, tpsit, psalt_a, pice_a, tptfl, pemps_a, psalf_a)
subroutine glt_updsnow_r(kinit, omsg, tpdom, tptfl, tpsit, psnow_a, pemp_a, paddterm, paddterm2)
subroutine glt_updhsi_r(pcondb, pqtopmelt, pdhmelt, tpmxl, tpdia, tptfl, tpsit, tpsil)
subroutine glt_lmltsi_r(tpmxl, tpsil, tpsit, tpdia, tptfl)
subroutine glt_sublim_r(tpmxl, tpblki, tpsit, tpsil, tptfl, tpdia)
subroutine glt_icevsp_r(tpsit, pvsp)
subroutine glt_snowice_r(tpmxl, tpsil, tptfl, tpsit, tpdia)
subroutine glt_icetrans_r(tpblki, tpmxl, tptfl, tpsit, tpdia, pswtra)
subroutine glt_precip_r(orain, osnow, tpmxl, tpatm, tpsit, tpsil, tptfl, tpdia, pqmelt)
subroutine glt_updhsn_r(gsmelt, pdhmelt, tpmxl, tptfl, tpsit, tpsil, tpdia)
subroutine glt_updbud_r(kinit, omsg, tpdom, tpmxl, tptfl, tpatm, tpblkw, tpblki, tpsit, tpsil, tpbud)