109 ( kinit,omsg,tpdom,tpmxl,tptfl,tpatm,tpblkw,tpblki,tpsit,tpsil,tpbud )
119 INTEGER,
INTENT(in) :: &
121 CHARACTER(*),
INTENT(in) :: &
123 TYPE(t_dom),
DIMENSION(np),
INTENT(in) :: &
125 TYPE(t_mxl),
DIMENSION(np),
INTENT(in) :: &
127 TYPE(t_tfl),
DIMENSION(np),
INTENT(in) :: &
129 TYPE(t_atm),
DIMENSION(np),
INTENT(in) :: &
131 TYPE(t_blk),
DIMENSION(np),
INTENT(in) :: &
133 TYPE(t_blk),
DIMENSION(nt,np),
INTENT(in) :: &
135 TYPE(t_sit),
DIMENSION(nt,np),
INTENT(in) :: &
137 TYPE(t_vtp),
DIMENSION(nl,nt,np),
INTENT(in) :: &
139 TYPE(t_bud),
DIMENSION(np),
INTENT(inout) :: &
145 zenthalpy0,zhiit0,zbiit0,zhii0,zhio0, &
146 zhli0,zhlo0,zwio0,zwlo0,zwii0,zwli0,zcio0,zclo0, &
148 REAL,
DIMENSION(np) :: &
150 REAL,
DIMENSION(np) :: &
151 zenthalpy2,zhiit2,zbiit2, &
152 znli2,zniit2,zhli2,zhlo2,zwii2,zwli2,zwater2,zsalt2
153 REAL,
DIMENSION(nt,np) :: &
154 zenthalpys,zenthalpyi,zmsi,zmsn
163 WRITE(noutlu,*)
' **** glt_updbud_r ****'
164 WRITE(noutlu,*) omsg,
' (energy fluxes in W.m-2)'
165 WRITE(noutlu,*) omsg,
' (water and salt fluxes in kg.m-2.day-1)'
172 zfsit(:) = sum( tpsit(:,:)%fsi,dim=1 )
173 zmsi(:,:) = rhoice * tpsit(:,:)%fsi * tpsit(:,:)%hsi
174 zmsn(:,:) = tpsit(:,:)%rsn * tpsit(:,:)%fsi * tpsit(:,:)%hsn
199 zniit2(:) = tpatm(:)%sop * &
200 sum( tpsit(:,:)%fsi*tpsil(nl,:,:)%ent, dim=1 )
208 sum( tpsit(:,:)%fsi* &
209 ( tpblki(:,:)%nsf+tpblki(:,:)%swa ), dim=1 )
212 tpmxl(:)%qml*zfsit(:)
214 tpbud(:)%nii = zniit2(:)
215 tpbud(:)%hii = zhiit2(:)+zniit2(:)
216 tpbud(:)%bii = zbiit2(:)
219 zwii2(:) = zfsit(:)*( tpatm(:)%sop + tpatm(:)%lip ) + &
220 sum( tpsit(:,:)%fsi*tpblki(:,:)%eva, dim=1 )
221 tpbud(:)%wii = zwii2(:)*xday2sec
224 IF ( nprinto>=1 )
THEN
227 zhiit0 =
glt_avg_r( tpdom,tpbud(:)%hii,0 )
228 zbiit0 =
glt_avg_r( tpdom,tpbud(:)%bii,0 )
229 zhii0 = zhiit0 + zbiit0
232 zwii0 =
glt_avg_r( tpdom,tpbud(:)%wii,0 )
236 '--------------------------------------------------------------------'
237 WRITE(noutlu,*)
' Incoming ENERGY under sea ice :', &
239 WRITE(noutlu,*)
' Incoming ENERGY top of sea ice :', &
241 WRITE(noutlu,*)
' Total incoming ENERGY on sea ice :', &
244 '--------------------------------------------------------------------'
245 WRITE(noutlu,*)
' Total incoming WATER on sea ice :', &
248 '--------------------------------------------------------------------'
261 ( tpmxl(:)%qml+tpblkw(:)%nsf+tpblkw(:)%swa )
262 IF ( nsnwrad==1 )
THEN
263 znli2(:) = ( 1.-zfsit(:) )* &
265 ( -xmhofusn0 )*tpatm(:)%sop
269 tpbud(:)%nli = znli2(:)
270 tpbud(:)%hli = zhli2(:)+znli2(:)
273 zwli2(:) = ( 1.-zfsit(:) )* &
274 ( tpatm(:)%sop + tpatm(:)%lip + tpblkw(:)%eva )*xday2sec
275 tpbud(:)%wli = zwli2(:)
278 IF ( nprinto>=1 )
THEN
281 zhli0 =
glt_avg_r( tpdom,tpbud(:)%hli,0 )
283 WRITE(noutlu,*)
' Total incoming ENERGY (on leads) :', &
286 '--------------------------------------------------------------------'
290 zwli0 =
glt_avg_r( tpdom,tpbud(:)%wli,0 )
292 WRITE(noutlu,*)
' Total incoming WATER (on leads) :', &
295 '--------------------------------------------------------------------'
308 tpbud(:)%hio = tptfl(:)%lio+tptfl(:)%tio
310 IF ( nprinto>=1 )
THEN
311 zhio0 =
glt_avg_r( tpdom,tpbud(:)%hio,0 )
313 WRITE(noutlu,*)
' Total outgoing ENERGY (under sea ice) :', &
316 '--------------------------------------------------------------------'
322 zwio0 =
glt_avg_r( tpdom,tptfl(:)%wio,0 )*xday2sec
324 WRITE(noutlu,*)
' Total outgoing WATER (under sea ice) :', &
327 '--------------------------------------------------------------------'
335 zsalt2(:) = tptfl(:)%sio
336 zcio0 =
glt_avg_r( tpdom,zsalt2,0 )*xday2sec
338 WRITE(noutlu,*)
' Total outgoing SALT (under sea ice) :', &
341 '--------------------------------------------------------------------'
350 zhlo2(:) = tptfl(:)%llo+tptfl(:)%tlo
352 tpbud(:)%hlo = zhlo2(:)
354 IF ( nprinto>=1 )
THEN
355 zhlo0 =
glt_avg_r( tpdom,tpbud(:)%hlo,0 )
357 WRITE(noutlu,*)
' Total outgoing ENERGY (under leads) :', &
360 '--------------------------------------------------------------------'
364 zwlo0 =
glt_avg_r( tpdom,tptfl%wlo,0 )*xday2sec
366 WRITE(noutlu,*)
' Total outgoing WATER (under leads) :', &
369 '--------------------------------------------------------------------'
395 zenthalpyi(:,:) = zenthalpyi(:,:) + &
396 sf3tinv(jl) * zmsi(:,:) * tpsil(jl,:,:)%ent
400 zmsn(:,:) * sum( tpsil(nilay+1:nl,:,:)%ent,dim=1 )/float(nslay)
402 zenthalpy2(:) = sum( zenthalpys(:,:)+zenthalpyi(:,:), dim=1 )
408 tpbud(:)%eni = zenthalpy2(:)
409 tpbud(:)%enn = zenthalpy2(:)
411 tpbud(:)%enn = zenthalpy2(:)
414 IF ( nprinto>=1 )
THEN
415 zenthalpy0 =
glt_avg_r( tpdom, tpbud(:)%enn-tpbud(:)%eni,0 ) / dtt
418 ' D(enthalpy) from beg. of time step :', &
421 '--------------------------------------------------------------------'
432 zwater2(:) = xday2sec*( &
433 sum( zmsi(:,:)*( 1.-1.e-3*tpsit(:,:)%ssi ), dim=1 ) + &
434 sum( zmsn(:,:), dim=1 ) )
440 tpbud(:)%fwi = zwater2(:)
442 tpbud(:)%fwn = zwater2(:)
444 IF ( nprinto>=1 )
THEN
445 zwater0 =
glt_avg_r( tpdom,tpbud(:)%fwn-tpbud(:)%fwi,0 ) / dtt
447 WRITE(noutlu,*)
' D(water) from beg. of time step :', &
450 '--------------------------------------------------------------------'
459 zsalt2(:) = xday2sec* &
460 sum( zmsi(:,:)*1.e-3*tpsit(:,:)%ssi, dim=1 )
465 tpbud(:)%isi = zsalt2(:)
467 tpbud(:)%isn = zsalt2(:)
469 IF ( nprinto>=1 )
THEN
470 zsalt0 =
glt_avg_r( tpdom,tpbud(:)%isn-tpbud(:)%isi,0 ) / dtt
472 WRITE(noutlu,*)
' D(salt) from beg. of time step :', &
475 '--------------------------------------------------------------------'
489 WRITE(noutlu,*)
' Total incoming energy (leads+ice) :', &
491 WRITE(noutlu,*)
' D(enthalpy) + outg. ENERGY :', &
492 zenthalpy0+zhio0+zhlo0
493 WRITE(noutlu,*)
' ENERGY BALANCE :', &
494 zenthalpy0+zhio0+zhlo0-(zhii0+zhli0)
496 '--------------------------------------------------------------------'
497 WRITE(noutlu,*)
' Total incoming + outgoing water (leads+ice) :', &
498 zwii0+zwli0-zwio0-zwlo0
499 WRITE(noutlu,*)
' WATER BALANCE :', &
500 zwii0+zwli0-zwio0-zwlo0-zwater0
502 '--------------------------------------------------------------------'
503 WRITE(noutlu,*)
' SALT BALANCE :', &
506 '--------------------------------------------------------------------'
subroutine glt_updbud_r(kinit, omsg, tpdom, tpmxl, tptfl, tpatm, tpblkw, tpblki, tpsit, tpsil, tpbud)