93 ( tpind,tpdom,tpml,tptfl,tpblkw,tpblki,tpsit,tpbud,tpdia,pcumdia )
98 USE modi_gltools_avevai
100 USE modi_gltools_outdia
102 USE modi_gltools_glterr
105 TYPE(t_ind),
INTENT(inout) :: &
107 TYPE(t_dom),
DIMENSION(nxglo,nyglo),
INTENT(in) :: &
109 TYPE(t_mxl),
DIMENSION(nxglo,nyglo),
INTENT(in) :: &
111 TYPE(t_tfl),
DIMENSION(nxglo,nyglo),
INTENT(in) :: &
113 TYPE(t_blk),
DIMENSION(nxglo,nyglo),
INTENT(in) :: &
115 TYPE(t_blk),
DIMENSION(nt,nxglo,nyglo),
INTENT(in) :: &
117 TYPE(t_sit),
DIMENSION(nt,nxglo,nyglo),
INTENT(in) :: &
119 TYPE(t_bud),
DIMENSION(nxglo,nyglo),
INTENT(in) :: &
121 TYPE(t_dia),
DIMENSION(nxglo,nyglo),
INTENT(inout) :: &
123 REAL,
DIMENSION(ndiamax,nxglo,nyglo),
INTENT(inout) :: &
132 LOGICAL,
DIMENSION(nxglo,nyglo) :: &
135 zai,zaj,zcslat,zdilat,zdilon,zdjlat,zdjlon
137 zehn,zehs,zshn,zshs,zvhn,zvhs,zwhn,zwhs, &
138 zfram,zbering,zncwest,znceast,znorthb
139 REAL,
DIMENSION(nxglo,nyglo) :: &
140 zfsit,zhsit,zhsnt,zmsnt
141 REAL,
DIMENSION(nxglo,nyglo) :: &
143 REAL,
DIMENSION(nt,nxglo,nyglo) :: &
149 #if ! defined in_surfex
163 WRITE(noutlu,*)
' *** LEVEL 3 - SUBROUTINE WRIDIAG_GLT'
165 WRITE(noutlu,*)
' --> Write diagnostic files'
178 tpind%nts = tpind%nts + 1
189 tpdia(:,:)%sic = tpdia(:,:)%sic + zfsit(:,:)
190 tpdia(:,:)%sit = tpdia(:,:)%sit + zhsit(:,:)
197 IF ( ndiap1==1 )
THEN
201 zwork2(:,:) = tpdia(:,:)%uvl
203 tznam =
t_def(
" ",
" ", yword,
" ",
"U",
"VECTOR" )
208 zwork2(:,:) = tpdia(:,:)%vvl
210 tznam =
t_def(
" ",
" ", yword,
" ",
"V",
"VECTOR" )
215 zwork2(:,:) = zhsit(:,:)*float( tpdom(:,:)%tmk )
217 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
222 zwork2(:,:) = zhsnt(:,:)*float( tpdom(:,:)%tmk )
224 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
229 zwork2(:,:) = zmsnt(:,:)*float( tpdom(:,:)%tmk )
231 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
236 zwork2(:,:) = zfsit(:,:)*float( tpdom(:,:)%tmk )
238 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
243 WHERE( zfsit(:,:)>xfsic )
247 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
252 WHERE( abs( tpsit(:,:,:)%tsf-tice_m ) < epsil1 )
253 zwork3(:,:,:) = tpsit(:,:,:)%fsi
256 sum( zwork3(:,:,:),dim=1 )*float( tpdom(:,:)%tmk )
258 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
264 ( sum( tpsit(:,:,:)%fsi*tpsit(:,:,:)%tsf,dim=1 ) + &
265 ( 1.-zfsit(:,:) )*tpml(:,:)%tml )*float( tpdom(:,:)%tmk )
267 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
273 ( sum( tpsit(:,:,:)%fsi*tpsit(:,:,:)%asn,dim=1 ) + &
274 ( 1.-zfsit(:,:) )*albw )*float( tpdom(:,:)%tmk )
276 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
281 WHERE( tpdom(:,:)%tmk==1 .AND. zfsit(:,:)>=xiok )
283 sum( tpsit(:,:,:)%fsi*tpsit(:,:,:)%asn, dim=1 ) / zfsit(:,:)
288 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
290 ( tpind,tznam,tpdom,zwork2,pcumdia,pwgt=tpdia%sic )
294 IF ( nicesal==1 )
THEN
295 WHERE( tpdom(:,:)%tmk==1 .AND. zfsit(:,:)>=xiok )
297 sum( tpsit(:,:,:)%fsi*tpsit(:,:,:)%hsi*tpsit(:,:,:)%ssi, dim=1 )
302 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
304 ( tpind,tznam,tpdom,zwork2,pcumdia,pwgt=tpdia%sit )
309 IF ( niceage==1 )
THEN
310 WHERE( tpdom(:,:)%tmk==1 .AND. zfsit(:,:)>=xiok )
312 sum( tpsit(:,:,:)%fsi*tpsit(:,:,:)%age, dim=1 ) / &
313 ( xyear2day*xday2sec )
318 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
320 ( tpind,tznam,tpdom,zwork2,pcumdia,pwgt=tpdia%sic )
325 IF ( nmponds==1 )
THEN
326 WHERE( tpdom(:,:)%tmk==1 .AND. zfsit(:,:)>=xiok )
328 sum( tpsit(:,:,:)%fsi*tpsit(:,:,:)%vmp, dim=1 )
333 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
335 ( tpind,tznam,tpdom,zwork2,pcumdia,pwgt=tpdia%sic )
380 IF ( ndiap2==1 )
THEN
384 zwork2(:,:) = tpdia(:,:)%qoi*float( tpdom(:,:)%tmk )
386 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
391 zwork2(:,:) = tpbud(:,:)%nli*float(tpdom(:,:)%tmk)
393 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
398 zwork2(:,:) = tpbud(:,:)%nii
400 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
406 zwork2(:,:) = tpbud(:,:)%hii-tpbud(:,:)%nii
408 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
414 zwork2(:,:) = (tpbud(:,:)%hli-tpbud(:,:)%nli)*float(tpdom(:,:)%tmk)
416 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
421 zwork2(:,:) = tpblkw(:,:)%swa*float( tpdom(:,:)%tmk )
423 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
428 zwork2(:,:) = tpdia(:,:)%the
430 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
436 ( tpbud(:,:)%enn-tpbud(:,:)%eni ) / dtt - tpdia(:,:)%the
438 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
443 zwork2(:,:) = tptfl(:,:)%wio
445 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
450 zwork2(:,:) = tptfl(:,:)%wlo*float( tpdom(:,:)%tmk )
452 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
457 zwork2(:,:) = tptfl(:,:)%cio
459 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
464 zwork2(:,:) = tptfl(:,:)%sio
466 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
471 zwork2(:,:) = tptfl(:,:)%lio
473 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
478 zwork2(:,:) = tptfl(:,:)%tio
480 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
485 zwork2(:,:) = tptfl(:,:)%llo*float( tpdom(:,:)%tmk )
487 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
492 zwork2(:,:) = tptfl(:,:)%tlo*float( tpdom(:,:)%tmk )
494 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
499 zwork2(:,:) = tpdia(:,:)%dsa*float( tpdom(:,:)%tmk )
501 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
506 zwork2(:,:) = tpdia(:,:)%dsn*float( tpdom(:,:)%tmk )
508 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
513 zwork2(:,:) = tpdia(:,:)%dsi*float( tpdom(:,:)%tmk )
515 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
520 zwork2(:,:) = tpdia(:,:)%dds*float( tpdom(:,:)%tmk )
522 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
527 zwork2(:,:) = tpdia(:,:)%ddn*float( tpdom(:,:)%tmk )
529 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
534 zwork2(:,:) = tpdia(:,:)%ddi*float( tpdom(:,:)%tmk )
536 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
541 zwork2(:,:) = tpdia(:,:)%dwi*float( tpdom(:,:)%tmk )
543 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
548 zwork2(:,:) = tpdia(:,:)%ifw*float( tpdom(:,:)%tmk )
550 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
555 zwork2(:,:) = tpdia(:,:)%lsi*float( tpdom(:,:)%tmk )
557 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
562 zwork2(:,:) = tpdia(:,:)%mrt*float( tpdom(:,:)%tmk )
564 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
569 zwork2(:,:) = tpdia(:,:)%mrl*float( tpdom(:,:)%tmk )
571 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
577 ( tpdia(:,:)%dsi-tpdia(:,:)%lsi-tpdia(:,:)%mrt-tpdia(:,:)%mrl )* &
578 float( tpdom(:,:)%tmk )
580 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
585 IF ( any( abs( tpdia(:,:)%sp1 ) > epsil2 ) )
THEN
587 tpdia(:,:)%sp1*float( tpdom(:,:)%tmk )
589 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
593 IF ( any( abs( tpdia(:,:)%sp2 ) > epsil2 ) )
THEN
595 tpdia(:,:)%sp2*float( tpdom(:,:)%tmk )
597 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
605 zwork2(:,:) = tpsit(jt,:,:)%fsi*float( tpdom(:,:)%tmk )
606 WRITE( yword,fmt=
'("SIFRCSI",I1.1)' ) jt
607 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
612 zwork2(:,:) = tpsit(jt,:,:)%hsi*float( tpdom(:,:)%tmk )
613 WRITE( yword,fmt=
'("SIHHHSI",I1.1)' ) jt
614 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
619 zwork2(:,:) = tpsit(jt,:,:)%tsf*float( tpdom(:,:)%tmk )
620 WRITE( yword,fmt=
'("SITEMSI",I1.1)' ) jt
621 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
626 zwork2(:,:) = tpsit(jt,:,:)%vmp*float( tpdom(:,:)%tmk )
627 WRITE( yword,fmt=
'("SIVMPSI",I1.1)' ) jt
628 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
633 zwork2(:,:) = tpsit(jt,:,:)%asn*float( tpdom(:,:)%tmk )
634 WRITE( yword,fmt=
'("SIALBSI",I1.1)' ) jt
635 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
640 zwork2(:,:) = tpblki(jt,:,:)%swa*float( tpdom(:,:)%tmk )
641 WRITE( yword,fmt=
'("AISWASI",I1.1)' ) jt
642 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
647 zwork2(:,:) = tpblki(jt,:,:)%nsf*float( tpdom(:,:)%tmk )
648 WRITE( yword,fmt=
'("SINSFSI",I1.1)' ) jt
649 tznam =
t_def(
" ",
" ", yword,
" ",
"T",
"SCALAR" )
659 IF ( tpind%cur==tpind%beg )
THEN
660 IF ( tpind%i2d>ndiamax )
THEN
662 fmt=
'("Number of 2d diagnostic fields=", &
663 & I3,"> ndiamax=",I3,"\n")' ) tpind%i2d,ndiamax
664 CALL
gltools_glterr(
'imod_results',
'Check ndiamax in gltpar',
'STOP' )
666 IF ( tpind%i0d>ndiamax )
THEN
668 fmt=
'("Number of 0d diagnostic fields=", &
669 & I3,"> ndiamax=",I3,"\n")' ) tpind%i0d,ndiamax
670 CALL
gltools_glterr(
'imod_results',
'Check ndiamax in gltpar',
'STOP' )
690 ynhemis(:,:) = ( tpdom(:,:)%lat>0..AND.tpdom(:,:)%tmk==1 )
691 yshemis(:,:) = ( tpdom(:,:)%lat<0..AND.tpdom(:,:)%tmk==1 )
692 IF ( ndiap3==1 )
THEN
693 zehn = sum(tpdom(:,:)%srf, mask=(ynhemis.AND.zfsit(:,:)>xfsic)) / 1.e+12
694 zehs = sum(tpdom(:,:)%srf, mask=(yshemis.AND.zfsit(:,:)>xfsic)) / 1.e+12
699 zshn = sum(tpdom(:,:)%srf*zfsit(:,:), mask=ynhemis) / 1.e+12
700 zshs = sum(tpdom(:,:)%srf*zfsit(:,:), mask=yshemis) / 1.e+12
704 zvhn = sum(tpdom(:,:)%srf*zhsit(:,:), mask=ynhemis) / 1.e+12
705 zvhs = sum(tpdom(:,:)%srf*zhsit(:,:), mask=yshemis) / 1.e+12
709 zwhn = sum(tpdom(:,:)%srf*zhsnt(:,:), mask=ynhemis) / 1.e+12
710 zwhs = sum(tpdom(:,:)%srf*zhsnt(:,:), mask=yshemis) / 1.e+12
720 IF ( cgrdname==
'NEMO1' )
THEN
730 iceflx( tpdom,zhsit,tpdia,ii,ij,ii,ij+1 )
741 zbering = zbering + &
742 iceflx( tpdom,zhsit,tpdia,ii,ij,ii,ij+1 )
753 zncwest = zncwest + &
754 iceflx( tpdom,zhsit,tpdia,ii,ij,ii+1,ij )
767 znceast = znceast + &
768 iceflx( tpdom,zhsit,tpdia,ii,ij,ii+1,ij )
780 znorthb = znorthb - &
781 iceflx( tpdom,zhsit,tpdia,ii,ij,ii,ij+1 ) + &
782 iceflx( tpdom,zhsit,tpdia,ii-1,ij,ii,ij )
792 IF ( ndiap3==1 )
THEN
796 WRITE(n0vilu)
'SIEHNSIG'
801 WRITE(n0vilu)
'SIEHSSIG'
806 WRITE(n0vilu)
'SISHNSIG'
811 WRITE(n0vilu)
'SISHSSIG'
816 WRITE(n0vilu)
'SIVHNSIG'
821 WRITE(n0vilu)
'SIVHSSIG'
826 WRITE(n0vilu)
'SIWHNSIG'
831 WRITE(n0vilu)
'SIWHSSIG'
836 WRITE(n0vilu)
'SIFRAMST'
841 WRITE(n0vilu)
'SIBERING'
842 WRITE(n0vilu) zbering
846 WRITE(n0vilu)
'SINCWEST'
847 WRITE(n0vilu) zncwest
851 WRITE(n0vilu)
'SINCEAST'
852 WRITE(n0vilu) znceast
856 WRITE(n0vilu)
'SINORTHB'
857 WRITE(n0vilu) znorthb
866 WRITE(noutlu,*)
' North South'
867 WRITE(noutlu,1000) zshn,zshs
868 IF ( ndiap3==1 )
THEN
869 WRITE(noutlu,1100) zehn,zehs
871 WRITE(noutlu,1200) zwhn,zwhs
872 WRITE(noutlu,1300) zvhn,zvhs
873 WRITE(noutlu,*)
' Ice flux at Fram : ',zfram
884 1000
FORMAT(5x,
"Ice surface (SISH.SIG)",2(4x,f9.5))
885 1100
FORMAT(5x,
"Ice extent (SIEH.SIG)",2(4x,f9.5))
886 1200
FORMAT(5x,
"Snow volume (SIWH.SIG)",2(4x,f9.5))
887 1300
FORMAT(5x,
"Ice volume (SIVH.SIG)",2(4x,f9.5))
891 ' ************************************'
893 ' END OF glt_gelato TIME STEP Nr =',tpind%cur
895 ' ************************************'
900 WRITE(noutlu,*)
' *** LEVEL 3 - END SUBROUTINE WRIDIAG_GLT'
904 WRITE(noutlu,*)
' wri_dia_glt doesn t work in Surfex'
subroutine wridiag_glt(tpind, tpdom, tpml, tptfl, tpblkw, tpblki, tpsit, tpbud, tpdia, pcumdia)