117 ( kinit,omsg,tpdom,tpmxl,tptfl,tpatm,tpblkw,tpblki,tpsit,tpsil,tpbud )
127 INTEGER,
INTENT(in) :: &
129 CHARACTER(*),
INTENT(in) :: &
131 TYPE(t_dom),
DIMENSION(nx,ny),
INTENT(in) :: &
133 TYPE(t_mxl),
DIMENSION(nx,ny),
INTENT(in) :: &
135 TYPE(t_tfl),
DIMENSION(nx,ny),
INTENT(in) :: &
137 TYPE(t_atm),
DIMENSION(nx,ny),
INTENT(in) :: &
139 TYPE(t_blk),
DIMENSION(nx,ny),
INTENT(in) :: &
141 TYPE(t_blk),
DIMENSION(nt,nx,ny),
INTENT(in) :: &
143 TYPE(t_sit),
DIMENSION(nt,nx,ny),
INTENT(in) :: &
145 TYPE(t_vtp),
DIMENSION(nl,nt,nx,ny),
INTENT(in) :: &
147 TYPE(t_bud),
DIMENSION(nx,ny),
INTENT(inout) :: &
153 zenthalpy0,zhiit0,zbiit0,zhii0,zhio0, &
154 zhli0,zhlo0,zwio0,zwlo0,zwii0,zwli0,zcio0,zclo0, &
156 REAL,
DIMENSION(nx,ny) :: &
158 REAL,
DIMENSION(nx,ny) :: &
159 zenthalpy2,zhiit2,zbiit2, &
160 znli2,zniit2,zhli2,zhlo2,zwii2,zwli2,zwater2,zsalt2
161 REAL,
DIMENSION(nt,nx,ny) :: &
162 zenthalpys,zenthalpyi,zmsi,zmsn
171 WRITE(noutlu,*)
' **** glt_updbud ****'
172 WRITE(noutlu,*) omsg,
' (energy fluxes in W.m-2)'
173 WRITE(noutlu,*) omsg,
' (water and salt fluxes in kg.m-2.day-1)'
180 zfsit(:,:) = sum( tpsit(:,:,:)%fsi,dim=1 )
181 zmsi(:,:,:) = rhoice * tpsit(:,:,:)%fsi * tpsit(:,:,:)%hsi
182 zmsn(:,:,:) = tpsit(:,:,:)%rsn * tpsit(:,:,:)%fsi * tpsit(:,:,:)%hsn
207 zniit2(:,:) = tpatm(:,:)%sop * &
208 sum( tpsit(:,:,:)%fsi*tpsil(nl,:,:,:)%ent, dim=1 )
216 sum( tpsit(:,:,:)%fsi* &
217 ( tpblki(:,:,:)%nsf+tpblki(:,:,:)%swa ), dim=1 )
220 tpmxl(:,:)%qml*zfsit(:,:)
222 tpbud(:,:)%nii = zniit2(:,:)
223 tpbud(:,:)%hii = zhiit2(:,:)+zniit2(:,:)
224 tpbud(:,:)%bii = zbiit2(:,:)
227 zwii2(:,:) = zfsit(:,:)* ( tpatm(:,:)%sop + tpatm(:,:)%lip ) + &
228 sum( tpsit(:,:,:)%fsi*tpblki(:,:,:)%eva, dim=1 )
229 tpbud(:,:)%wii = zwii2(:,:)*xday2sec
232 IF ( nprinto>=1 )
THEN
235 zhiit0 =
glt_avg( tpdom,tpbud(:,:)%hii,0 )
236 zbiit0 =
glt_avg( tpdom,tpbud(:,:)%bii,0 )
237 zhii0 = zhiit0 + zbiit0
240 zwii0 =
glt_avg( tpdom,tpbud(:,:)%wii,0 )
244 '--------------------------------------------------------------------'
245 WRITE(noutlu,*)
' Incoming ENERGY under sea ice :', &
247 WRITE(noutlu,*)
' Incoming ENERGY top of sea ice :', &
249 WRITE(noutlu,*)
' Total incoming ENERGY on sea ice :', &
252 '--------------------------------------------------------------------'
253 WRITE(noutlu,*)
' Total incoming WATER on sea ice :', &
256 '--------------------------------------------------------------------'
269 ( tpmxl(:,:)%qml+tpblkw(:,:)%nsf+tpblkw(:,:)%swa )
270 IF ( nsnwrad==1 )
THEN
271 znli2(:,:) = ( 1.-zfsit(:,:) )* &
273 ( -xmhofusn0 )*tpatm(:,:)%sop
277 tpbud(:,:)%nli = znli2(:,:)
278 tpbud(:,:)%hli = zhli2(:,:)+znli2(:,:)
281 zwli2(:,:) = ( 1.-zfsit(:,:) )* &
282 ( tpatm(:,:)%sop + tpatm(:,:)%lip + tpblkw(:,:)%eva )*xday2sec
283 tpbud(:,:)%wli = zwli2(:,:)
286 IF ( nprinto>=1 )
THEN
289 zhli0 =
glt_avg( tpdom,tpbud(:,:)%hli,0 )
291 WRITE(noutlu,*)
' Total incoming ENERGY (on leads) :', &
294 '--------------------------------------------------------------------'
298 zwli0 =
glt_avg( tpdom,tpbud(:,:)%wli,0 )
300 WRITE(noutlu,*)
' Total incoming WATER (on leads) :', &
303 '--------------------------------------------------------------------'
316 tpbud(:,:)%hio = tptfl(:,:)%lio+tptfl(:,:)%tio
318 IF ( nprinto>=1 )
THEN
319 zhio0 =
glt_avg( tpdom,tpbud(:,:)%hio,0 )
321 WRITE(noutlu,*)
' Total outgoing ENERGY (under sea ice) :', &
324 '--------------------------------------------------------------------'
330 zwio0 =
glt_avg( tpdom,tptfl(:,:)%wio,0 )*xday2sec
332 WRITE(noutlu,*)
' Total outgoing WATER (under sea ice) :', &
335 '--------------------------------------------------------------------'
343 zsalt2(:,:) = tptfl(:,:)%sio
344 zcio0 =
glt_avg( tpdom,zsalt2,0 )*xday2sec
346 WRITE(noutlu,*)
' Total outgoing SALT (under sea ice) :', &
349 '--------------------------------------------------------------------'
358 zhlo2(:,:) = tptfl(:,:)%llo+tptfl(:,:)%tlo
360 tpbud(:,:)%hlo = zhlo2(:,:)
362 IF ( nprinto>=1 )
THEN
363 zhlo0 =
glt_avg( tpdom,tpbud(:,:)%hlo,0 )
365 WRITE(noutlu,*)
' Total outgoing ENERGY (under leads) :', &
368 '--------------------------------------------------------------------'
372 zwlo0 =
glt_avg( tpdom,tptfl%wlo,0 )*xday2sec
374 WRITE(noutlu,*)
' Total outgoing WATER (under leads) :', &
377 '--------------------------------------------------------------------'
401 zenthalpyi(:,:,:) = 0.
403 zenthalpyi(:,:,:) = zenthalpyi(:,:,:) + &
404 sf3tinv(jl) * zmsi(:,:,:) * tpsil(jl,:,:,:)%ent
407 zenthalpys(:,:,:) = &
408 zmsn(:,:,:) * sum( tpsil(nilay+1:nl,:,:,:)%ent,dim=1 )/float(nslay)
410 zenthalpy2(:,:) = sum( zenthalpys(:,:,:)+zenthalpyi(:,:,:), dim=1 )
416 tpbud(:,:)%eni = zenthalpy2(:,:)
417 tpbud(:,:)%enn = zenthalpy2(:,:)
419 tpbud(:,:)%enn = zenthalpy2(:,:)
422 IF ( nprinto>=1 )
THEN
423 zenthalpy0 =
glt_avg( tpdom, tpbud(:,:)%enn-tpbud(:,:)%eni,0 ) / dtt
426 ' D(enthalpy) from beg. of time step :', &
429 '--------------------------------------------------------------------'
440 zwater2(:,:) = xday2sec*( &
441 sum( zmsi(:,:,:)*( 1.-1.e-3*tpsit(:,:,:)%ssi ), dim=1 ) + &
442 sum( zmsn(:,:,:), dim=1 ) )
448 tpbud(:,:)%fwi = zwater2(:,:)
450 tpbud(:,:)%fwn = zwater2(:,:)
452 IF ( nprinto>=1 )
THEN
453 zwater0 =
glt_avg( tpdom,tpbud(:,:)%fwn-tpbud(:,:)%fwi,0 ) / dtt
455 WRITE(noutlu,*)
' D(water) from beg. of time step :', &
458 '--------------------------------------------------------------------'
467 zsalt2(:,:) = xday2sec* &
468 sum( zmsi(:,:,:)*1.e-3*tpsit(:,:,:)%ssi, dim=1 )
473 tpbud(:,:)%isi = zsalt2(:,:)
475 tpbud(:,:)%isn = zsalt2(:,:)
477 IF ( nprinto>=1 )
THEN
478 zsalt0 =
glt_avg( tpdom,tpbud(:,:)%isn-tpbud(:,:)%isi,0 ) / dtt
480 WRITE(noutlu,*)
' D(salt) from beg. of time step :', &
483 '--------------------------------------------------------------------'
497 WRITE(noutlu,*)
' Total incoming energy (leads+ice) :', &
499 WRITE(noutlu,*)
' D(enthalpy) + outg. ENERGY :', &
500 zenthalpy0+zhio0+zhlo0
501 WRITE(noutlu,*)
' ENERGY BALANCE :', &
502 zenthalpy0+zhio0+zhlo0-(zhii0+zhli0)
504 '--------------------------------------------------------------------'
505 WRITE(noutlu,*)
' Total incoming + outgoing water (leads+ice) :', &
506 zwii0+zwli0-zwio0-zwlo0
507 WRITE(noutlu,*)
' WATER BALANCE :', &
508 zwii0+zwli0-zwio0-zwlo0-zwater0
510 '--------------------------------------------------------------------'
511 WRITE(noutlu,*)
' SALT BALANCE :', &
514 '--------------------------------------------------------------------'
subroutine glt_updbud(kinit, omsg, tpdom, tpmxl, tptfl, tpatm, tpblkw, tpblki, tpsit, tpsil, tpbud)