Go to the documentation of this file.
317 INTEGER,
PRIVATE :: ISTAT
325 INTEGER,
PARAMETER ::
dimp = 15
363 tauao(:), taudo(:), dairo(:), &
365 cao(:), cdo(:), iceo(:), iceho(:), &
369 CHARACTER(LEN=40),
POINTER ::
ptnme(:)
370 CHARACTER(LEN=13),
POINTER ::
grdid(:)
385 CHARACTER(LEN=32),
POINTER ::
trckid(:,:)
495 tauao(:), taudo(:), dairo(:), &
497 cao(:), cdo(:), iceo(:), iceho(:), &
501 CHARACTER(LEN=40),
POINTER ::
ptnme(:)
502 CHARACTER(LEN=13),
POINTER ::
grdid(:)
517 CHARACTER(LEN=32),
POINTER ::
trckid(:,:)
560 SUBROUTINE w3nout ( NDSERR, NDSTST )
632 INTEGER,
INTENT(IN) :: NDSERR, NDSTST
637 INTEGER :: I, NLOW, J
639 INTEGER,
SAVE :: IENT = 0
641 CHARACTER(LEN=20) :: STRING
644 CALL strace (ient,
'W3NOUT')
650 IF (
ngrids .EQ. -1 )
THEN
651 WRITE (ndserr,1001)
ngrids
660 check_alloc_status( istat )
699 outpts(i)%OUT2%O2INIT = .false.
701 outpts(i)%OUT2%O2IRQI = .false.
705 outpts(i)%OUT3%O3INIT = .false.
706 outpts(i)%OUT3%STOP = .false.
716 outpts(i)%OUT5%O5INI1 = .false.
717 outpts(i)%OUT5%O5INI2 = .false.
718 outpts(i)%OUT5%O5INI3 = .false.
719 outpts(i)%OUT5%O5INI4 = .false.
720 outpts(i)%OUT5%FILER = .true.
721 outpts(i)%OUT5%FILEW = .true.
722 outpts(i)%OUT5%FILED = .true.
725 outpts(i)%OUT6%O6INIT = .false.
734 idout(i,j) =
'Undefined / Not Used'
751 idout( 1, 1) =
'Water depth '
752 idout( 1, 2) =
'Current vel. '
753 idout( 1, 3) =
'Wind speed '
754 idout( 1, 4) =
'Air-sea temp. dif. '
755 idout( 1, 5) =
'Water level '
756 idout( 1, 6) =
'Ice concentration '
757 idout( 1, 7) =
'Iceberg damp coeffic'
758 idout( 1, 8) =
'Atmospheric momentum'
759 idout( 1, 9) =
'Air density '
761 idout( 1, 10) =
'Sediment diam D50 '
764 idout( 1, 11) =
'ice thickness '
765 idout( 1, 12) =
'Avg. ice floe diam. '
768 idout( 1, 13) =
'wave induced setup'
778 idout( 2, 1) =
'Wave height '
779 idout( 2, 2) =
'Mean wave length '
780 idout( 2, 3) =
'Mean wave period(+2)'
781 idout( 2, 4) =
'Mean wave period(-1)'
782 idout( 2, 5) =
'Mean wave period(+1)'
783 idout( 2, 6) =
'Peak frequency '
784 idout( 2, 7) =
'Mean wave dir. a1b1 '
785 idout( 2, 8) =
'Mean dir. spr. a1b1 '
786 idout( 2, 9) =
'Peak direction '
787 idout( 2, 10) =
'Infragravity height'
788 idout( 2, 11) =
'Space-Time Max E '
789 idout( 2, 12) =
'Space-Time Max Std '
790 idout( 2, 13) =
'Space-Time Hmax '
791 idout( 2, 14) =
'Spc-Time Hmax^crest'
792 idout( 2, 15) =
'STD Space-Time Hmax'
793 idout( 2, 16) =
'STD ST Hmax^crest '
794 idout( 2, 17) =
'Dominant wave bT '
795 idout( 2, 18) =
'Peak prd. (from fp)'
796 idout( 2, 19) =
'Mean wave number '
798 idout( 2, 20) =
'Mean wave dir. norot'
810 idout( 3, 1) =
'1D Freq. Spectrum '
811 idout( 3, 2) =
'Mean wave dir. a1b1 '
812 idout( 3, 3) =
'Mean dir. spr. a1b1 '
813 idout( 3, 4) =
'Mean wave dir. a2b2 '
814 idout( 3, 5) =
'Mean dir. spr. a2b2 '
815 idout( 3, 6) =
'Wavenumber array '
821 idout( 4, 1) =
'Part. wave height '
822 idout( 4, 2) =
'Part. peak period '
823 idout( 4, 3) =
'Part. peak wave len.'
824 idout( 4, 4) =
'Part. mean direction'
825 idout( 4, 5) =
'Part. dir. spread '
826 idout( 4, 6) =
'Part. wind sea frac.'
827 idout( 4, 7) =
'Part. peak direction'
828 idout( 4, 8) =
'Part. peakedness '
829 idout( 4, 9) =
'Part. peak enh. fac.'
830 idout( 4,10) =
'Part. gaussian width'
831 idout( 4,11) =
'Part. spectral width'
832 idout( 4,12) =
'Part. mean per. (-1)'
833 idout( 4,13) =
'Part. mean per. (+1)'
834 idout( 4,14) =
'Part. mean per. (+2)'
835 idout( 4,15) =
'Part. peak density '
836 idout( 4,16) =
'Total wind sea frac.'
837 idout( 4,17) =
'Number of partitions'
843 idout( 5, 1) =
'Friction velocity '
844 idout( 5, 2) =
'Charnock parameter '
845 idout( 5, 3) =
'Energy flux '
846 idout( 5, 4) =
'Wind-wave enrgy flux'
847 idout( 5, 5) =
'Wind-wave net mom. f'
848 idout( 5, 6) =
'Wind-wave neg.mom.f.'
849 idout( 5, 7) =
'Whitecap coverage '
850 idout( 5, 8) =
'Whitecap mean thick.'
851 idout( 5, 9) =
'Mean breaking height'
852 idout( 5,10) =
'Dominant break prob '
853 idout( 5,11) =
'Wind sea period'
860 idout( 6, 1) =
'Radiation stresses '
861 idout( 6, 2) =
'Wave-ocean mom. flux'
862 idout( 6, 3) =
'wave ind p Bern Head'
863 idout( 6, 4) =
'Wave-ocean TKE flux'
864 idout( 6, 5) =
'Stokes transport '
865 idout( 6, 6) =
'Stokes drift at z=0 '
866 idout( 6, 7) =
'2nd order pressure '
867 idout( 6, 8) =
'Stokes drft spectrum'
868 idout( 6, 9) =
'2nd ord press spectr'
869 idout( 6,10) =
'Wave-ice mom. flux '
870 idout( 6,11) =
'Wave-ice energy flux'
871 idout( 6,12) =
'Split Surface Stokes'
872 idout( 6,13) =
'Tot wav-ocn mom flux'
878 idout( 7, 1) =
'Bottom rms ampl. '
879 idout( 7, 2) =
'Bottom rms velocity '
880 idout( 7, 3) =
'Bedform parameters '
881 idout( 7, 4) =
'Energy diss. in WBBL'
882 idout( 7, 5) =
'Moment. loss in WBBL'
892 idout( 8, 1) =
'Mean square slopes '
893 idout( 8, 2) =
'Phillips tail const'
894 idout( 8, 3) =
'Slope direction '
895 idout( 8, 4) =
'Tail slope direction'
896 idout( 8, 5) =
'Goda peakedness parm'
897 idout( 8, 6) =
'kxky-peakdness '
898 idout( 8, 7) =
'Skewness '
899 idout( 8, 8) =
'EM bias(l120+l102)/8'
900 idout( 8, 9) =
'Tracker bias:-l300/8'
915 idout( 9, 1) =
'Avg. time step. '
916 idout( 9, 2) =
'Cut-off freq. '
917 idout( 9, 3) =
'Maximum spatial CFL '
918 idout( 9, 4) =
'Maximum angular CFL '
919 idout( 9, 5) =
'Maximum k advect CFL'
926 DO i=1, min( 20 ,
noextr )
927 WRITE (string,
'(A14,I2.2,A4)')
'User defined #', i,
' '
928 idout(10, i) = string
932 WRITE (ndstst,9000)
ngrids
939 1001
FORMAT (/
' *** ERROR W3NOUT : NGRIDS NOT YET SET *** '/ &
941 ' RUN W3NMOD FIRST'/)
944 9000
FORMAT (
' TEST W3NOUT : SETTING UP FOR ',i4,
' GRIDS')
951 SUBROUTINE w3dmo2 ( IMOD, NDSE, NDST, NPT )
1032 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST, NPT
1037 INTEGER :: JGRID, NLOW
1039 INTEGER,
SAVE :: IENT = 0
1040 CALL strace (ient,
'W3DMO2')
1046 IF (
ngrids .EQ. -1 )
THEN
1051 nlow = min( 0 , -
nauxgr )
1052 IF ( imod.LT.nlow .OR. imod.GT.
noutp )
THEN
1053 WRITE (ndse,1002) imod, nlow,
noutp
1057 IF (
outpts(imod)%OUT2%O2INIT )
THEN
1063 WRITE (ndst,9000) imod
1067 IF ( jgrid .NE. imod )
CALL w3setg ( imod, ndse, ndst )
1072 ALLOCATE (
outpts(imod)%OUT2%IPTINT(2,4,npt) , &
1073 outpts(imod)%OUT2%IL(npt) , &
1074 outpts(imod)%OUT2%IW(npt) , &
1075 outpts(imod)%OUT2%II(npt) , &
1076 outpts(imod)%OUT2%PTIFAC(4,npt) , &
1077 outpts(imod)%OUT2%PTNME(npt) , &
1078 outpts(imod)%OUT2%GRDID(npt) , &
1079 outpts(imod)%OUT2%DPO(npt) , &
1080 outpts(imod)%OUT2%WAO(npt) , &
1081 outpts(imod)%OUT2%ZET_SETO(npt) , &
1082 outpts(imod)%OUT2%WDO(npt) , &
1083 outpts(imod)%OUT2%ASO(npt) , &
1085 outpts(imod)%OUT2%TAUAO(npt) , &
1086 outpts(imod)%OUT2%TAUDO(npt) , &
1087 outpts(imod)%OUT2%DAIRO(npt) , &
1089 outpts(imod)%OUT2%CAO(npt) , &
1090 outpts(imod)%OUT2%CDO(npt) , &
1091 outpts(imod)%OUT2%ICEO(npt) , &
1092 outpts(imod)%OUT2%ICEHO(npt) , &
1093 outpts(imod)%OUT2%ICEFO(npt) , &
1095 outpts(imod)%OUT2%PTLOC(2,npt) , stat=istat )
1096 check_alloc_status( istat )
1098 outpts(imod)%OUT2%O2INIT = .true.
1107 CALL w3seto ( imod, ndse, ndst )
1125 IF ( jgrid .NE. imod )
CALL w3setg ( jgrid, ndse, ndst )
1131 1001
FORMAT (/
' *** ERROR W3DMO2 : GRIDS NOT INITIALIZED *** '/ &
1132 ' RUN W3NMOD FIRST '/)
1133 1002
FORMAT (/
' *** ERROR W3DMO2 : ILLEGAL MODEL NUMBER *** '/ &
1137 1003
FORMAT (/
' *** ERROR W3DMO2 : ARRAY(S) ALREADY ALLOCATED *** ')
1140 9000
FORMAT (
' TEST W3DMO2 : MODEL ',i4)
1141 9001
FORMAT (
' TEST W3DMO2 : ARRAYS ALLOCATED')
1142 9002
FORMAT (
' TEST W3DMO2 : POINTERS RESET')
1143 9003
FORMAT (
' TEST W3DMO2 : DIMENSIONS STORED')
1150 SUBROUTINE w3dmo3 ( IMOD, NDSE, NDST )
1227 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST
1234 INTEGER,
SAVE :: IENT = 0
1235 CALL strace (ient,
'W3DMO3')
1241 IF (
ngrids .EQ. -1 )
THEN
1246 IF ( imod.LT.1 .OR. imod.GT.
noutp )
THEN
1247 WRITE (ndse,1002) imod,
noutp
1251 IF (
outpts(imod)%OUT3%O3INIT )
THEN
1257 WRITE (ndst,9000) imod
1261 IF ( jgrid .NE. imod )
CALL w3setg ( imod, ndse, ndst )
1266 ALLOCATE (
outpts(imod)%OUT3%MASK1(
ny,
nx) , &
1268 outpts(imod)%OUT3%TRCKID(
ny,
nx), stat=istat )
1269 check_alloc_status( istat )
1271 outpts(imod)%OUT3%O3INIT = .true.
1280 CALL w3seto ( imod, ndse, ndst )
1296 IF ( jgrid .NE. imod )
CALL w3setg ( jgrid, ndse, ndst )
1302 1001
FORMAT (/
' *** ERROR W3DMO3 : GRIDS NOT INITIALIZED *** '/ &
1303 ' RUN W3NMOD FIRST '/)
1304 1002
FORMAT (/
' *** ERROR W3DMO3 : ILLEGAL MODEL NUMBER *** '/ &
1307 1003
FORMAT (/
' *** ERROR W3DMO3 : ARRAY(S) ALREADY ALLOCATED *** ')
1310 9000
FORMAT (
' TEST W3DMO3 : MODEL ',i4)
1311 9001
FORMAT (
' TEST W3DMO3 : ARRAYS ALLOCATED')
1312 9002
FORMAT (
' TEST W3DMO3 : POINTERS RESET')
1313 9003
FORMAT (
' TEST W3DMO3 : DIMENSIONS STORED')
1320 SUBROUTINE w3dmo5 ( IMOD, NDSE, NDST, IBLOCK )
1396 INTEGER,
INTENT(IN) :: IMOD, NDSE, NDST, IBLOCK
1403 INTEGER,
SAVE :: IENT = 0
1404 CALL strace (ient,
'W3DMO5')
1410 IF (
ngrids .EQ. -1 )
THEN
1415 IF ( imod.LT.1 .OR. imod.GT.
noutp )
THEN
1416 WRITE (ndse,1002) imod,
noutp
1421 WRITE (ndst,9000) imod, iblock
1427 SELECT CASE (iblock)
1431 ALLOCATE (
outpts(imod)%OUT5%IPBPI(
nbi,4), &
1435 outpts(imod)%OUT5%RDBPI(
nbi,4), stat=istat )
1436 check_alloc_status( istat )
1444 outpts(imod)%OUT5%O5INI1 = .true.
1453 check_alloc_status( istat )
1461 outpts(imod)%OUT5%O5INI2 = .true.
1462 outpts(imod)%OUT5%ISBPO = 0
1470 check_alloc_status( istat )
1478 outpts(imod)%OUT5%O5INI3 = .true.
1483 check_alloc_status( istat )
1487 outpts(imod)%OUT5%O5INI4 = .true.
1505 1001
FORMAT (/
' *** ERROR W3DMO5 : GRIDS NOT INITIALIZED *** '/ &
1506 ' RUN W3NMOD FIRST '/)
1507 1002
FORMAT (/
' *** ERROR W3DMO5 : ILLEGAL MODEL NUMBER *** '/ &
1510 1010
FORMAT (/
' *** ERROR W3DMO5 : ILLEGAL BLOCK NUMBER *** '/ &
1514 9000
FORMAT (
' TEST W3DMO5 : MODEL AND BLOCK ',2i4)
1515 9001
FORMAT (
' TEST W3DMO5 : ARRAYS ALLOCATED')
1522 SUBROUTINE w3seto ( IMOD, NDSERR, NDSTST )
1599 INTEGER,
INTENT(IN) :: IMOD, NDSERR, NDSTST
1607 INTEGER,
SAVE :: IENT = 0
1608 CALL strace (ient,
'W3SETO')
1614 IF (
noutp .EQ. -1 )
THEN
1619 nlow = min( 0 , -
nauxgr )
1620 IF ( imod.LT.nlow .OR. imod.GT.
noutp )
THEN
1621 WRITE (ndserr,1002) imod, nlow,
noutp
1626 WRITE (ndstst,9000) imod
1710 tauao =>
outpts(imod)%OUT2%TAUAO
1711 taudo =>
outpts(imod)%OUT2%TAUDO
1712 dairo =>
outpts(imod)%OUT2%DAIRO
1714 cao =>
outpts(imod)%OUT2%CAO
1715 cdo =>
outpts(imod)%OUT2%CDO
1716 iceo =>
outpts(imod)%OUT2%ICEO
1717 iceho =>
outpts(imod)%OUT2%ICEHO
1718 icefo =>
outpts(imod)%OUT2%ICEFO
1719 spco =>
outpts(imod)%OUT2%SPCO
1753 IF (
nrqrs .NE. 0 )
THEN
1841 1001
FORMAT (/
' *** ERROR W3SETO : GRIDS NOT INITIALIZED *** '/ &
1842 ' RUN W3NMOD FIRST '/)
1843 1002
FORMAT (/
' *** ERROR W3SETO : ILLEGAL MODEL NUMBER *** '/ &
1849 9000
FORMAT (
' TEST W3SETO : MODEL ',i4,
' SELECTED')
integer, dimension(:), pointer nbo
subroutine w3dmo3(IMOD, NDSE, NDST)
integer, dimension(:), pointer tbpi0
integer, dimension(:,:,:), pointer iptint
integer, dimension(:), pointer tosnl5
integer, dimension(:), pointer iw
character(len=32), dimension(:,:), pointer trckid
integer, dimension(:,:), pointer ipbpo
real, dimension(:,:), pointer dtprt
integer, dimension(:), pointer irqpo2
logical, dimension(:), pointer flogd
logical, dimension(:,:), pointer flogr2
real, dimension(:), pointer dtout
integer, dimension(:), pointer ii
subroutine w3dmo2(IMOD, NDSE, NDST, NPT)
character(len=13), dimension(:), pointer grdid
integer, dimension(:), pointer irqpo1
real, dimension(:,:), pointer bbpi0
real, dimension(:), pointer ybpi
real, dimension(:,:), pointer abpin
integer, dimension(:), pointer tbpin
integer, dimension(:), pointer ofiles
real, dimension(:), pointer dpo
integer, dimension(:), pointer isbpo
real, dimension(:), pointer zet_seto
real, dimension(:), pointer wdo
subroutine w3setg(IMOD, NDSE, NDST)
real, dimension(:,:), pointer ptloc
real, dimension(:,:), pointer abpos
integer, dimension(:,:), pointer tonext
subroutine w3dmo5(IMOD, NDSE, NDST, IBLOCK)
logical, dimension(:,:), pointer flogrr
logical, dimension(:,:), pointer flogrd
integer, dimension(:), pointer nbo2
integer, dimension(:,:), pointer ipbpi
real, dimension(:), pointer wao
integer, dimension(nogrp) noge
integer, dimension(:), pointer irqbp1
subroutine w3seto(IMOD, NDSERR, NDSTST)
real, dimension(:,:,:), pointer vaaux
integer, dimension(:), pointer irqgo2
integer, dimension(:), pointer nds
integer, dimension(:,:), pointer tolast
integer, dimension(:), pointer irqtr
integer, dimension(:), pointer irqbp2
real, dimension(:), pointer xbpi
character(len=40), dimension(:), pointer ptnme
integer, dimension(:), pointer irqrs
logical, dimension(:), pointer flog2
logical, dimension(:,:), pointer mask2
logical, dimension(:), pointer flout
real, dimension(:), pointer xbpo
subroutine strace(IENT, SNAME)
real, dimension(:,:), pointer rdbpi
real, dimension(:,:), pointer abpi0
integer, parameter noextr
character(len=20), dimension(nogrp, ngrpp) idout
integer, dimension(:), pointer tofrst
logical, dimension(:,:), pointer mask1
Define some much-used constants for global use (all defined as PARAMETER).
real, dimension(:), pointer ybpo
integer, dimension(:), pointer ndsl
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
subroutine w3nout(NDSERR, NDSTST)
type(output), dimension(:), allocatable, target outpts
integer, dimension(:), pointer il
integer, dimension(:), pointer irqrss
logical, dimension(:), pointer flogr
integer, dimension(:,:), pointer icprt
integer, dimension(:), pointer isbpi
real, dimension(:,:), pointer ptifac
real undef
UNDEF Value for undefined variable in output.
real, dimension(:), pointer aso
integer, dimension(:), pointer irqgo
real, dimension(:,:), pointer rdbpo
real, dimension(:,:), pointer bbpin