WAVEWATCH III  beta 0.0.1
ww3_ounp.F90 File Reference

Contains program W3OUNP. More...

Go to the source code of this file.

Functions/Subroutines

program w3ounp
 Post-processing of point output. More...
 
subroutine w3exnc (I, NCID, NREQ, INDREQ, ORDER)
 Perform actual point output. More...
 
subroutine w3crnc (ITYPE, OTYPE, NCTYPE, NCFILE, NCID, DIMID, DIMLN, VARID, ONE, TWO, FLSRCE, NCVARTYPE)
 Desc not available. More...
 
subroutine check_err (IRET, ICODE)
 Desc not available. More...
 

Detailed Description

Contains program W3OUNP.

Author
F Ardhuin
M Accensi
Date
06-Sep-2021

Definition in file ww3_ounp.F90.

Function/Subroutine Documentation

◆ check_err()

subroutine w3ounp::check_err ( integer  IRET,
integer  ICODE 
)

Desc not available.

Parameters
IRET
ICODE
Author
NA
Date
NA

Definition at line 5570 of file ww3_ounp.F90.

5570 
5571  USE netcdf
5572  USE w3odatmd, ONLY: ndse
5573  USE w3servmd, ONLY: extcde
5574 
5575  IMPLICIT NONE
5576 
5577  INTEGER IRET, ICODE
5578 
5579  IF (iret .NE. nf90_noerr) THEN
5580  WRITE(ndse,*) ' *** WAVEWATCH III ERROR IN OUNP :'
5581  WRITE(ndse,*) ' NETCDF ERROR MESSAGE: '
5582  WRITE(ndse,*) nf90_strerror(iret)
5583  WRITE(ndse,*) ' ICODE: '
5584  WRITE(ndse,*) icode
5585  CALL extcde ( icode )
5586  END IF
5587  RETURN
5588 

References w3servmd::extcde(), and w3odatmd::ndse.

◆ w3crnc()

subroutine w3ounp::w3crnc ( integer, intent(in)  ITYPE,
integer, intent(in)  OTYPE,
integer, intent(in)  NCTYPE,
character*(128), intent(in)  NCFILE,
integer, intent(out)  NCID,
integer, dimension(7), intent(out)  DIMID,
integer, dimension(5), intent(in)  DIMLN,
integer, dimension(28), intent(out)  VARID,
integer, intent(in)  ONE,
integer, intent(in)  TWO,
logical, dimension(7), intent(in), optional  FLSRCE,
integer, intent(in), optional  NCVARTYPE 
)

Desc not available.

Parameters
[in]ITYPE
[in]OTYPE
[in]NCTYPE
[in]NCFILE
[out]NCID
[out]DIMID
[in]DIMLN
[out]VARID
[in]ONE
[in]TWO
[in]FLSRCE
[in]NCVARTYPE
Author
NA
Date
NA

Definition at line 3086 of file ww3_ounp.F90.

3086 
3087 
3088  USE w3gdatmd
3089  USE netcdf
3090 
3091  implicit none
3092 
3093 
3094  INTEGER, INTENT(IN) :: ITYPE,OTYPE,NCTYPE, ONE, TWO
3095  CHARACTER*(128), INTENT(IN) :: NCFILE
3096  INTEGER, INTENT(IN) :: DIMLN(5)
3097  INTEGER, INTENT(OUT) :: DIMID(7), VARID(28),NCID
3098  LOGICAL, INTENT(IN), OPTIONAL :: FLSRCE(7)
3099  INTEGER, INTENT(IN), OPTIONAL :: NCVARTYPE
3100 
3101  ! local parameters
3102  INTEGER :: IRET
3103  INTEGER :: DEFLATE=1
3104  !
3105  REAL(kind=4) :: freq(nk), freq1(nk),freq2(nk), dir(nth)
3106 
3107 
3108  !
3109  ! Creation in netCDF3 or netCDF4
3110  !
3111  IF(nctype.EQ.3) iret = nf90_create(trim(ncfile), nf90_clobber, ncid)
3112  IF(nctype.EQ.4) iret = nf90_create(trim(ncfile), nf90_netcdf4, ncid)
3113  CALL check_err(iret,20)
3114 
3115  !
3116  ! Define generals dimensions
3117  !
3118  iret = nf90_def_dim(ncid, 'time', dimln(1), dimid(1))
3119  CALL check_err(iret,21)
3120  iret = nf90_def_dim(ncid, 'station', dimln(2), dimid(2))
3121  CALL check_err(iret,22)
3122  iret = nf90_def_dim(ncid, 'string40', dimln(3), dimid(3))
3123  CALL check_err(iret,23)
3124 
3125  !
3126  ! define generals variables
3127  !
3128 
3129  ! time
3130  iret=nf90_def_var(ncid, 'time', nf90_double, dimid(1), varid(1))
3131  CALL check_err(iret,24)
3132  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(1), 1, 1, deflate)
3133  SELECT CASE (trim(caltype))
3134  CASE ('360_day')
3135  iret=nf90_put_att(ncid,varid(1),'long_name','time in 360 day calendar')
3136  CASE ('365_day')
3137  iret=nf90_put_att(ncid,varid(1),'long_name','time in 365 day calendar')
3138  CASE ('standard')
3139  iret=nf90_put_att(ncid,varid(1),'long_name','julian day (UT)')
3140  END SELECT
3141  iret=nf90_put_att(ncid,varid(1),'standard_name','time')
3142  iret=nf90_put_att(ncid,varid(1),'units','days since 1990-01-01 00:00:00')
3143  iret=nf90_put_att(ncid,varid(1),'conventions','Relative julian days with decimal part (as parts of the day)')
3144  iret=nf90_put_att(ncid,varid(1),'axis','T')
3145  iret=nf90_put_att(ncid,varid(1),'calendar',trim(caltype))
3146 
3147  ! station
3148  iret=nf90_def_var(ncid, 'station', nf90_int, (/dimid(2)/), varid(27))
3149  CALL check_err(iret,25)
3150  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(27), 1, 1, deflate)
3151  iret=nf90_put_att(ncid,varid(27),'long_name','station id')
3152  iret=nf90_put_att(ncid,varid(27),'_FillValue',nf90_fill_int)
3153  iret=nf90_put_att(ncid,varid(27),'axis','X')
3154 
3155  ! string40
3156  iret=nf90_def_var(ncid, 'string40', nf90_int, (/dimid(3)/), varid(28))
3157  CALL check_err(iret,26)
3158  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(28), 1, 1, deflate)
3159  iret=nf90_put_att(ncid,varid(28),'long_name','station_name number of characters')
3160  iret=nf90_put_att(ncid,varid(28),'_FillValue',nf90_fill_int)
3161  iret=nf90_put_att(ncid,varid(28),'axis','W')
3162 
3163  ! station_name
3164  iret=nf90_def_var(ncid, 'station_name', nf90_char, (/dimid(3),dimid(2)/), varid(2))
3165  CALL check_err(iret,27)
3166  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(2), 1, 1, deflate)
3167  iret=nf90_put_att(ncid,varid(2),'long_name','station name')
3168  iret=nf90_put_att(ncid,varid(2),'content','XW')
3169  iret=nf90_put_att(ncid,varid(2),'associates','station string40')
3170 
3171  IF (flww3.NE.0) THEN
3172  ! wwIII param version
3173  iret=nf90_def_var(ncid, 'WWIII_param_version', nf90_short, (/dimid(two),dimid(one)/), varid(3))
3174  CALL check_err(iret,28)
3175  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(3), 1, 1, deflate)
3176  iret=nf90_put_att(ncid,varid(3),'long_name','WaveWatch III parameters version')
3177  iret=nf90_put_att(ncid,varid(3),'standard_name','WWIII_param_version')
3178  iret=nf90_put_att(ncid,varid(3),'globwave_name','WWIII_param_version')
3179  iret=nf90_put_att(ncid,varid(3),'units','-')
3180  iret=nf90_put_att(ncid,varid(3),'scale_factor',1)
3181  iret=nf90_put_att(ncid,varid(3),'add_offset',0)
3182  iret=nf90_put_att(ncid,varid(3),'valid_min',1)
3183  iret=nf90_put_att(ncid,varid(3),'valid_max',999)
3184  iret=nf90_put_att(ncid,varid(3),'_FillValue',nf90_fill_short)
3185  iret=nf90_put_att(ncid,varid(3),'content','TX')
3186  iret=nf90_put_att(ncid,varid(3),'associates','time station')
3187  END IF
3188 
3189  IF (flagll) THEN
3190  ! longitude
3191  iret=nf90_def_var(ncid, 'longitude', nf90_float, (/dimid(two),dimid(one)/), varid(4))
3192  CALL check_err(iret,29)
3193  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(4), 1, 1, deflate)
3194  iret=nf90_put_att(ncid,varid(4),'long_name','longitude')
3195  iret=nf90_put_att(ncid,varid(4),'standard_name','longitude')
3196  iret=nf90_put_att(ncid,varid(4),'globwave_name','longitude')
3197  iret=nf90_put_att(ncid,varid(4),'units','degree_east')
3198  iret=nf90_put_att(ncid,varid(4),'scale_factor',1.)
3199  iret=nf90_put_att(ncid,varid(4),'add_offset',0.)
3200  iret=nf90_put_att(ncid,varid(4),'valid_min',-180.0)
3201  iret=nf90_put_att(ncid,varid(4),'valid_max',360.)
3202  iret=nf90_put_att(ncid,varid(4),'_FillValue',nf90_fill_float)
3203  iret=nf90_put_att(ncid,varid(4),'content','TX')
3204  iret=nf90_put_att(ncid,varid(4),'associates','time station')
3205 
3206  ! latitude
3207  iret=nf90_def_var(ncid, 'latitude', nf90_float, (/dimid(two),dimid(one)/), varid(5))
3208  CALL check_err(iret,30)
3209  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(5), 1, 1, deflate)
3210  iret=nf90_put_att(ncid,varid(5),'long_name','latitude')
3211  iret=nf90_put_att(ncid,varid(5),'standard_name','latitude')
3212  iret=nf90_put_att(ncid,varid(5),'globwave_name','latitude')
3213  iret=nf90_put_att(ncid,varid(5),'units','degree_north')
3214  iret=nf90_put_att(ncid,varid(5),'scale_factor',1.)
3215  iret=nf90_put_att(ncid,varid(5),'add_offset',0.)
3216  iret=nf90_put_att(ncid,varid(5),'valid_min',-90.0)
3217  iret=nf90_put_att(ncid,varid(5),'valid_max',180.)
3218  iret=nf90_put_att(ncid,varid(5),'_FillValue',nf90_fill_float)
3219  iret=nf90_put_att(ncid,varid(5),'content','TX')
3220  iret=nf90_put_att(ncid,varid(5),'associates','time station')
3221 
3222 
3223  ELSE
3224  ! longitude
3225  iret=nf90_def_var(ncid, 'x', nf90_float, (/dimid(two),dimid(one)/), varid(4))
3226  CALL check_err(iret,31)
3227  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(4), 1, 1, deflate)
3228  iret=nf90_put_att(ncid,varid(4),'long_name','x')
3229  iret=nf90_put_att(ncid,varid(4),'standard_name','x')
3230  iret=nf90_put_att(ncid,varid(4),'globwave_name','x')
3231  iret=nf90_put_att(ncid,varid(4),'units','km')
3232  iret=nf90_put_att(ncid,varid(4),'scale_factor',1.)
3233  iret=nf90_put_att(ncid,varid(4),'add_offset',0.)
3234  iret=nf90_put_att(ncid,varid(4),'valid_min',0.)
3235  iret=nf90_put_att(ncid,varid(4),'valid_max',10000.)
3236  iret=nf90_put_att(ncid,varid(4),'_FillValue',nf90_fill_float)
3237  iret=nf90_put_att(ncid,varid(4),'content','TX')
3238  iret=nf90_put_att(ncid,varid(4),'associates','time station')
3239 
3240 
3241  ! latitude
3242  iret=nf90_def_var(ncid, 'y', nf90_float, (/dimid(two),dimid(one)/), varid(5))
3243  CALL check_err(iret,32)
3244  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(5), 1, 1, deflate)
3245  iret=nf90_put_att(ncid,varid(5),'long_name','y')
3246  iret=nf90_put_att(ncid,varid(5),'standard_name','y')
3247  iret=nf90_put_att(ncid,varid(5),'globwave_name','y')
3248  iret=nf90_put_att(ncid,varid(5),'units','km')
3249  iret=nf90_put_att(ncid,varid(5),'scale_factor',1.)
3250  iret=nf90_put_att(ncid,varid(5),'add_offset',0.)
3251  iret=nf90_put_att(ncid,varid(5),'valid_min',0.)
3252  iret=nf90_put_att(ncid,varid(5),'valid_max',10000.)
3253  iret=nf90_put_att(ncid,varid(5),'_FillValue',nf90_fill_float)
3254  iret=nf90_put_att(ncid,varid(5),'content','TX')
3255  iret=nf90_put_att(ncid,varid(5),'associates','time station')
3256 
3257  END IF
3258 
3259  ! Process FREQ and DIR dimension values
3260  freq(1:nk)=sig(1:nk)*tpiinv
3261  freq1(1:nk)=freq(1:nk)-0.5*(freq(1:nk)-(freq(1:nk)/xfr))
3262  freq2(1:nk)=freq(1:nk)+0.5*(-freq(1:nk)+(freq(1:nk)*xfr))
3263  freq1(1)=sig(1)*tpiinv
3264  freq2(nk)=sig(nk)*tpiinv
3265  dir(1:nth)=mod(450-thd(1:nth),360.)
3266 
3267  !
3268  ! ... ITYPE = 1 AND OTYPE = 2
3269  !
3270 
3271  IF (itype.EQ.1 .AND. otype.EQ.2) THEN
3272  !
3273  ! Define specifics dimensions
3274  !
3275  iret = nf90_def_dim(ncid, 'frequency', dimln(4), dimid(4))
3276  CALL check_err(iret,33)
3277 
3278  !
3279  ! define specifics variables
3280  !
3281 
3282  ! frequency
3283  iret=nf90_def_var(ncid, 'frequency', nf90_float, dimid(4), varid(6))
3284  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
3285  iret=nf90_put_att(ncid,varid(6),'long_name','frequency of center band')
3286  iret=nf90_put_att(ncid,varid(6),'standard_name','sea_surface_wave_frequency')
3287  iret=nf90_put_att(ncid,varid(6),'globwave_name','frequency')
3288  iret=nf90_put_att(ncid,varid(6),'units','s-1')
3289  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
3290  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
3291  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
3292  iret=nf90_put_att(ncid,varid(6),'valid_max',10.)
3293  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
3294  iret=nf90_put_att(ncid,varid(6),'axis','Y')
3295  !d
3296  iret=nf90_def_var(ncid, 'dpt', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
3297  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
3298  iret=nf90_put_att(ncid,varid(7),'long_name','depth')
3299  iret=nf90_put_att(ncid,varid(7),'standard_name','depth')
3300  iret=nf90_put_att(ncid,varid(7),'globwave_name','depth')
3301  iret=nf90_put_att(ncid,varid(7),'units','m')
3302  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
3303  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
3304  iret=nf90_put_att(ncid,varid(7),'valid_min',-100.)
3305  iret=nf90_put_att(ncid,varid(7),'valid_max',10000.)
3306  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
3307  iret=nf90_put_att(ncid,varid(7),'content','TX')
3308  iret=nf90_put_att(ncid,varid(7),'associates','time station')
3309  !Ust
3310  iret=nf90_def_var(ncid, 'ust', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
3311  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
3312  iret=nf90_put_att(ncid,varid(8),'long_name','friction velocity')
3313  iret=nf90_put_att(ncid,varid(8),'standard_name','friction_velocity')
3314  iret=nf90_put_att(ncid,varid(8),'globwave_name','friction_velocity')
3315  iret=nf90_put_att(ncid,varid(8),'units','m s-1')
3316  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
3317  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
3318  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
3319  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
3320  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
3321  iret=nf90_put_att(ncid,varid(8),'content','TX')
3322  iret=nf90_put_att(ncid,varid(8),'associates','time station')
3323  !U10
3324  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
3325  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
3326  iret=nf90_put_att(ncid,varid(9),'long_name','wind speed at 10m')
3327  iret=nf90_put_att(ncid,varid(9),'standard_name','wind_speed')
3328  iret=nf90_put_att(ncid,varid(9),'globwave_name','wind_speed')
3329  iret=nf90_put_att(ncid,varid(9),'units','m s-1')
3330  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
3331  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
3332  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
3333  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
3334  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
3335  iret=nf90_put_att(ncid,varid(9),'content','TX')
3336  iret=nf90_put_att(ncid,varid(9),'associates','time station')
3337  !Dir
3338  iret=nf90_def_var(ncid, 'wnddir', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
3339  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
3340  iret=nf90_put_att(ncid,varid(10),'long_name','wind direction')
3341  iret=nf90_put_att(ncid,varid(10),'standard_name','wind_from_direction')
3342  iret=nf90_put_att(ncid,varid(10),'globwave_name','wind_from_direction')
3343  iret=nf90_put_att(ncid,varid(10),'units','degree')
3344  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
3345  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
3346  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
3347  iret=nf90_put_att(ncid,varid(10),'valid_max',360.)
3348  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
3349  iret=nf90_put_att(ncid,varid(10),'content','TX')
3350  iret=nf90_put_att(ncid,varid(10),'associates','time station')
3351 #ifdef W3_RTD
3352  IF ( flagunr ) THEN
3353  iret=nf90_put_att(ncid,varid(10),'direction_reference','True North')
3354  ELSE
3355  iret=nf90_put_att(ncid,varid(10),'direction_reference','Rotated Pole Grid North')
3356  END IF
3357 #endif
3358 
3359 
3360  !f/fp
3361  iret=nf90_def_var(ncid, 'ffp', nf90_float, (/ dimid(4),dimid(two),dimid(one) /), varid(11))
3362  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
3363  iret=nf90_put_att(ncid,varid(11),'long_name','ffp')
3364  iret=nf90_put_att(ncid,varid(11),'standard_name','ffp')
3365  iret=nf90_put_att(ncid,varid(11),'globwave_name','ffp')
3366  iret=nf90_put_att(ncid,varid(11),'units','1')
3367  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
3368  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
3369  iret=nf90_put_att(ncid,varid(11),'valid_min',0.)
3370  iret=nf90_put_att(ncid,varid(11),'valid_max',100.)
3371  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_float)
3372  iret=nf90_put_att(ncid,varid(11),'content','TXY')
3373  iret=nf90_put_att(ncid,varid(11),'associates','time station frequency')
3374  !F
3375  iret=nf90_def_var(ncid, 'f', nf90_float, (/ dimid(4),dimid(two),dimid(one) /), varid(12))
3376  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(22), 1, 1, deflate)
3377  iret=nf90_put_att(ncid,varid(12),'long_name','f')
3378  iret=nf90_put_att(ncid,varid(12),'standard_name','f')
3379  iret=nf90_put_att(ncid,varid(12),'globwave_name','f')
3380  iret=nf90_put_att(ncid,varid(12),'units','-')
3381  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
3382  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
3383  iret=nf90_put_att(ncid,varid(12),'valid_min',0.)
3384  iret=nf90_put_att(ncid,varid(12),'valid_max',1000.)
3385  iret=nf90_put_att(ncid,varid(12),'_FillValue',nf90_fill_float)
3386  iret=nf90_put_att(ncid,varid(12),'content','TXY')
3387  iret=nf90_put_att(ncid,varid(12),'associates','time station frequency')
3388  !th1m
3389  iret=nf90_def_var(ncid, 'th1m', nf90_float, (/ dimid(4),dimid(two),dimid(one) /), varid(13))
3390  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
3391  iret=nf90_put_att(ncid,varid(13),'long_name','mean wave direction from spectral moments')
3392  iret=nf90_put_att(ncid,varid(13),'standard_name','mean_wave_direction')
3393  iret=nf90_put_att(ncid,varid(13),'globwave_name','mean_wave_direction')
3394  iret=nf90_put_att(ncid,varid(13),'units','degree')
3395  iret=nf90_put_att(ncid,varid(13),'scale_factor',1.)
3396  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
3397  iret=nf90_put_att(ncid,varid(13),'valid_min',0.)
3398  iret=nf90_put_att(ncid,varid(13),'valid_max',360.)
3399  iret=nf90_put_att(ncid,varid(13),'_FillValue',nf90_fill_float)
3400  iret=nf90_put_att(ncid,varid(13),'content','TXY')
3401  iret=nf90_put_att(ncid,varid(13),'associates','time station frequency')
3402 #ifdef W3_RTD
3403  IF ( flagunr ) THEN
3404  iret=nf90_put_att(ncid,varid(13),'direction_reference','True North')
3405  ELSE
3406  iret=nf90_put_att(ncid,varid(13),'direction_reference','Rotated Pole Grid North')
3407  END IF
3408 #endif
3409 
3410  !sth1m
3411  iret=nf90_def_var(ncid, 'sth1m', nf90_float,(/ dimid(4),dimid(two),dimid(one) /), varid(14))
3412  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(14), 1, 1, deflate)
3413  iret=nf90_put_att(ncid,varid(14),'long_name','directional spread from spectral moments')
3414  iret=nf90_put_att(ncid,varid(14),'standard_name','mean_wave_spreading')
3415  iret=nf90_put_att(ncid,varid(14),'globwave_name','mean_wave_spreading')
3416  iret=nf90_put_att(ncid,varid(14),'units','degree')
3417  iret=nf90_put_att(ncid,varid(14),'scale_factor',1.)
3418  iret=nf90_put_att(ncid,varid(14),'add_offset',0.)
3419  iret=nf90_put_att(ncid,varid(14),'valid_min',0.)
3420  iret=nf90_put_att(ncid,varid(14),'valid_max',360.)
3421  iret=nf90_put_att(ncid,varid(14),'_FillValue',nf90_fill_float)
3422  iret=nf90_put_att(ncid,varid(14),'content','TXY')
3423  iret=nf90_put_att(ncid,varid(14),'associates','time station frequency')
3424  !alpha
3425  iret=nf90_def_var(ncid, 'alpha', nf90_float, (/ dimid(4),dimid(two),dimid(one) /), varid(15))
3426  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(15), 1, 1, deflate)
3427  iret=nf90_put_att(ncid,varid(15),'long_name','spectral intensity coefficient')
3428  iret=nf90_put_att(ncid,varid(15),'standard_name','spectral_intensity_coefficient')
3429  iret=nf90_put_att(ncid,varid(15),'globwave_name','spectral_intensity_coefficient')
3430  iret=nf90_put_att(ncid,varid(15),'units','-')
3431  iret=nf90_put_att(ncid,varid(15),'scale_factor',1.)
3432  iret=nf90_put_att(ncid,varid(15),'add_offset',0.)
3433  iret=nf90_put_att(ncid,varid(15),'valid_min',0.)
3434  iret=nf90_put_att(ncid,varid(15),'valid_max',100.)
3435  iret=nf90_put_att(ncid,varid(15),'_FillValue',nf90_fill_float)
3436  iret=nf90_put_att(ncid,varid(15),'content','TXY')
3437  iret=nf90_put_att(ncid,varid(15),'associates','time station frequency')
3438 
3439 
3440  ! Add values in netCDF file
3441  iret=nf90_enddef(ncid)
3442  CALL check_err(iret,34)
3443  iret=nf90_put_var(ncid,varid(6),freq(1:nk))
3444  CALL check_err(iret,35)
3445 
3446 
3447  !
3448  ! ... ITYPE = 1 AND OTYPE = 3
3449  !
3450 
3451  ELSE IF (itype.EQ.1 .AND. otype.EQ.3) THEN
3452  !
3453  ! Define specifics dimensions
3454  !
3455  iret = nf90_def_dim(ncid, 'frequency', dimln(4), dimid(4))
3456  CALL check_err(iret,36)
3457  iret = nf90_def_dim(ncid, 'direction', dimln(5), dimid(5))
3458  CALL check_err(iret,37)
3459 
3460  !
3461  ! define specifics variables
3462  !
3463 
3464  !frequency
3465  iret=nf90_def_var(ncid, 'frequency', nf90_float, (/dimid(4)/), varid(6))
3466  CALL check_err(iret,38)
3467  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
3468  iret=nf90_put_att(ncid,varid(6),'long_name','frequency of center band')
3469  iret=nf90_put_att(ncid,varid(6),'standard_name','sea_surface_wave_frequency')
3470  iret=nf90_put_att(ncid,varid(6),'globwave_name','frequency')
3471  iret=nf90_put_att(ncid,varid(6),'units','s-1')
3472  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
3473  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
3474  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
3475  iret=nf90_put_att(ncid,varid(6),'valid_max',10.)
3476  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
3477  iret=nf90_put_att(ncid,varid(6),'axis','Y')
3478 
3479  !frequency1
3480  iret=nf90_def_var(ncid, 'frequency1', nf90_float, (/dimid(4)/), varid(7))
3481  CALL check_err(iret,39)
3482  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
3483  iret=nf90_put_att(ncid,varid(7),'long_name','frequency of lower band')
3484  iret=nf90_put_att(ncid,varid(7),'standard_name','frequency_of_lower_band')
3485  iret=nf90_put_att(ncid,varid(7),'globwave_name','frequency_lower_band')
3486  iret=nf90_put_att(ncid,varid(7),'units','s-1')
3487  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
3488  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
3489  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
3490  iret=nf90_put_att(ncid,varid(7),'valid_max',10.)
3491  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
3492  iret=nf90_put_att(ncid,varid(7),'content','Y')
3493  iret=nf90_put_att(ncid,varid(7),'associates','frequency')
3494 
3495  !frequency2
3496  iret=nf90_def_var(ncid, 'frequency2', nf90_float, (/dimid(4)/), varid(8))
3497  CALL check_err(iret,40)
3498  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
3499  iret=nf90_put_att(ncid,varid(8),'long_name','frequency of upper band')
3500  iret=nf90_put_att(ncid,varid(8),'standard_name','frequency_of_upper_band')
3501  iret=nf90_put_att(ncid,varid(8),'globwave_name','frequency_upper_band')
3502  iret=nf90_put_att(ncid,varid(8),'units','s-1')
3503  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
3504  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
3505  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
3506  iret=nf90_put_att(ncid,varid(8),'valid_max',10.)
3507  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
3508  iret=nf90_put_att(ncid,varid(8),'content','Y')
3509  iret=nf90_put_att(ncid,varid(8),'associates','frequency')
3510 
3511  !direction
3512  iret=nf90_def_var(ncid, 'direction', nf90_float, (/dimid(5)/), varid(9))
3513  CALL check_err(iret,41)
3514  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
3515  iret=nf90_put_att(ncid,varid(9),'long_name','sea surface wave to direction')
3516  iret=nf90_put_att(ncid,varid(9),'standard_name','sea_surface_wave_to_direction')
3517  iret=nf90_put_att(ncid,varid(9),'globwave_name','direction')
3518  iret=nf90_put_att(ncid,varid(9),'units','degree')
3519  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
3520  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
3521  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
3522  iret=nf90_put_att(ncid,varid(9),'valid_max',360.)
3523  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
3524  iret=nf90_put_att(ncid,varid(9),'axis','Z')
3525 #ifdef W3_RTD
3526  IF ( flagunr ) THEN
3527  iret=nf90_put_att(ncid,varid(9),'direction_reference','True North')
3528  ELSE
3529  iret=nf90_put_att(ncid,varid(9),'direction_reference','Rotated Pole Grid North')
3530  END IF
3531 #endif
3532 
3533  !Efth
3534  IF (ncvartype.LE.3) THEN
3535  iret=nf90_def_var(ncid,'efth',nf90_short,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(10))
3536  ELSE
3537  iret=nf90_def_var(ncid,'efth',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(10))
3538  END IF
3539  CALL check_err(iret,42)
3540  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
3541  iret=nf90_put_att(ncid,varid(10),'long_name',&
3542  'sea surface wave directional variance spectral density')
3543  IF (ncvartype.LE.3) THEN
3544  iret=nf90_put_att(ncid,varid(10),'standard_name',&
3545  'base_ten_logarithm_of_sea_surface_wave_directional_variance_spectral_density')
3546  iret=nf90_put_att(ncid,varid(10),'globwave_name','directional_variance_spectral_density')
3547  iret=nf90_put_att(ncid,varid(10),'units','log10(m2 s rad-1 +1E-12)')
3548  iret=nf90_put_att(ncid,varid(10),'scale_factor',0.0004)
3549  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
3550  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
3551  iret=nf90_put_att(ncid,varid(10),'valid_max',1.e20)
3552  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_short)
3553  ELSE
3554  iret=nf90_put_att(ncid,varid(10),'standard_name',&
3555  'sea_surface_wave_directional_variance_spectral_density')
3556  iret=nf90_put_att(ncid,varid(10),'globwave_name','directional_variance_spectral_density')
3557  iret=nf90_put_att(ncid,varid(10),'units','m2 s rad-1')
3558  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
3559  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
3560  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
3561  iret=nf90_put_att(ncid,varid(10),'valid_max',1.e20)
3562  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
3563  END IF
3564  iret=nf90_put_att(ncid,varid(10),'content','TXYZ')
3565  iret=nf90_put_att(ncid,varid(10),'associates','time station frequency direction')
3566 #ifdef W3_RTD
3567  IF ( flagunr ) THEN
3568  iret=nf90_put_att(ncid,varid(10),'direction_reference','True North')
3569  ELSE
3570  iret=nf90_put_att(ncid,varid(10),'direction_reference','Rotated Pole Grid North')
3571  END IF
3572 #endif
3573 
3574  !d
3575  IF (ncvartype.LE.3) THEN
3576  iret=nf90_def_var(ncid, 'dpt', nf90_short, (/ dimid(two),dimid(one) /), varid(11))
3577  ELSE
3578  iret=nf90_def_var(ncid, 'dpt', nf90_float, (/ dimid(two),dimid(one) /), varid(11))
3579  END IF
3580  CALL check_err(iret,43)
3581  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
3582  iret=nf90_put_att(ncid,varid(11),'long_name','depth')
3583  iret=nf90_put_att(ncid,varid(11),'standard_name','depth')
3584  iret=nf90_put_att(ncid,varid(11),'globwave_name','depth')
3585  iret=nf90_put_att(ncid,varid(11),'units','m')
3586  IF (ncvartype.LE.3) THEN
3587  iret=nf90_put_att(ncid,varid(11),'scale_factor',0.5)
3588  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
3589  iret=nf90_put_att(ncid,varid(11),'valid_min',-200)
3590  iret=nf90_put_att(ncid,varid(11),'valid_max',200000)
3591  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_short)
3592  ELSE
3593  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
3594  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
3595  iret=nf90_put_att(ncid,varid(11),'valid_min',-100.)
3596  iret=nf90_put_att(ncid,varid(11),'valid_max',10000.)
3597  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_float)
3598  END IF
3599  iret=nf90_put_att(ncid,varid(11),'content','TX')
3600  iret=nf90_put_att(ncid,varid(11),'associates','time station')
3601 
3602  !U10
3603  IF (ncvartype.LE.3) THEN
3604  iret=nf90_def_var(ncid, 'wnd', nf90_short, (/ dimid(two),dimid(one) /), varid(12))
3605  ELSE
3606  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(12))
3607  END IF
3608  CALL check_err(iret,44)
3609  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
3610  iret=nf90_put_att(ncid,varid(12),'long_name','wind speed at 10m')
3611  iret=nf90_put_att(ncid,varid(12),'standard_name','wind_speed')
3612  iret=nf90_put_att(ncid,varid(12),'globwave_name','wind_speed')
3613  iret=nf90_put_att(ncid,varid(12),'units','m s-1')
3614  IF (ncvartype.LE.3) THEN
3615  iret=nf90_put_att(ncid,varid(12),'scale_factor',0.1)
3616  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
3617  iret=nf90_put_att(ncid,varid(12),'valid_min',0)
3618  iret=nf90_put_att(ncid,varid(12),'valid_max',1000)
3619  iret=nf90_put_att(ncid,varid(12),'_FillValue',nf90_fill_short)
3620  ELSE
3621  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
3622  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
3623  iret=nf90_put_att(ncid,varid(12),'valid_min',0.)
3624  iret=nf90_put_att(ncid,varid(12),'valid_max',100.)
3625  iret=nf90_put_att(ncid,varid(12),'_FillValue',nf90_fill_float)
3626  END IF
3627  iret=nf90_put_att(ncid,varid(12),'content','TX')
3628  iret=nf90_put_att(ncid,varid(12),'associates','time station')
3629  !Dir
3630  IF (ncvartype.LE.3) THEN
3631  iret=nf90_def_var(ncid, 'wnddir', nf90_short, (/ dimid(two),dimid(one) /), varid(13))
3632  ELSE
3633  iret=nf90_def_var(ncid, 'wnddir', nf90_float, (/ dimid(two),dimid(one) /), varid(13))
3634  END IF
3635  CALL check_err(iret,45)
3636  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
3637  iret=nf90_put_att(ncid,varid(13),'long_name','wind direction')
3638  iret=nf90_put_att(ncid,varid(13),'standard_name','wind_from_direction')
3639  iret=nf90_put_att(ncid,varid(13),'globwave_name','wind_from_direction')
3640  iret=nf90_put_att(ncid,varid(13),'units','degree')
3641  IF (ncvartype.LE.3) THEN
3642  iret=nf90_put_att(ncid,varid(13),'scale_factor',0.1)
3643  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
3644  iret=nf90_put_att(ncid,varid(13),'valid_min',0)
3645  iret=nf90_put_att(ncid,varid(13),'valid_max',3600)
3646  iret=nf90_put_att(ncid,varid(13),'_FillValue',nf90_fill_short)
3647  ELSE
3648  iret=nf90_put_att(ncid,varid(13),'scale_factor',1.)
3649  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
3650  iret=nf90_put_att(ncid,varid(13),'valid_min',0.)
3651  iret=nf90_put_att(ncid,varid(13),'valid_max',360.)
3652  iret=nf90_put_att(ncid,varid(13),'_FillValue',nf90_fill_float)
3653  END IF
3654  iret=nf90_put_att(ncid,varid(13),'content','TX')
3655  iret=nf90_put_att(ncid,varid(13),'associates','time station')
3656 #ifdef W3_RTD
3657  IF ( flagunr ) THEN
3658  iret=nf90_put_att(ncid,varid(13),'direction_reference','True North')
3659  ELSE
3660  iret=nf90_put_att(ncid,varid(13),'direction_reference','Rotated Pole Grid North')
3661  END IF
3662 #endif
3663 
3664  !Uc
3665  IF (ncvartype.LE.3) THEN
3666  iret=nf90_def_var(ncid, 'cur', nf90_short, (/ dimid(two),dimid(one) /), varid(14))
3667  ELSE
3668  iret=nf90_def_var(ncid, 'cur', nf90_float, (/ dimid(two),dimid(one) /), varid(14))
3669  END IF
3670  CALL check_err(iret,46)
3671  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(14), 1, 1, deflate)
3672  iret=nf90_put_att(ncid,varid(14),'long_name','sea water speed')
3673  iret=nf90_put_att(ncid,varid(14),'standard_name','sea_water_speed')
3674  iret=nf90_put_att(ncid,varid(14),'globwave_name','sea_water_speed')
3675  iret=nf90_put_att(ncid,varid(14),'units','m s-1')
3676  IF (ncvartype.LE.3) THEN
3677  iret=nf90_put_att(ncid,varid(14),'scale_factor',0.1)
3678  iret=nf90_put_att(ncid,varid(14),'add_offset',0.)
3679  iret=nf90_put_att(ncid,varid(14),'valid_min',0)
3680  iret=nf90_put_att(ncid,varid(14),'valid_max',1000)
3681  iret=nf90_put_att(ncid,varid(14),'_FillValue',nf90_fill_short)
3682  ELSE
3683  iret=nf90_put_att(ncid,varid(14),'scale_factor',1.)
3684  iret=nf90_put_att(ncid,varid(14),'add_offset',0.)
3685  iret=nf90_put_att(ncid,varid(14),'valid_min',0.)
3686  iret=nf90_put_att(ncid,varid(14),'valid_max',100.)
3687  iret=nf90_put_att(ncid,varid(14),'_FillValue',nf90_fill_float)
3688  END IF
3689  iret=nf90_put_att(ncid,varid(14),'content','TX')
3690  iret=nf90_put_att(ncid,varid(14),'associates','time station')
3691 
3692  !Dir
3693  IF (ncvartype.LE.3) THEN
3694  iret=nf90_def_var(ncid, 'curdir', nf90_short, (/ dimid(two),dimid(one) /), varid(15))
3695  ELSE
3696  iret=nf90_def_var(ncid, 'curdir', nf90_float, (/ dimid(two),dimid(one) /), varid(15))
3697  END IF
3698  CALL check_err(iret,47)
3699  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(15), 1, 1, deflate)
3700  iret=nf90_put_att(ncid,varid(15),'long_name','direction from of sea water velocity')
3701  iret=nf90_put_att(ncid,varid(15),'standard_name','direction_of_sea_water_velocity')
3702  iret=nf90_put_att(ncid,varid(15),'globwave_name','direction_of_sea_water_velocity')
3703  iret=nf90_put_att(ncid,varid(15),'units','degree')
3704  IF (ncvartype.LE.3) THEN
3705  iret=nf90_put_att(ncid,varid(15),'scale_factor',0.1)
3706  iret=nf90_put_att(ncid,varid(15),'add_offset',0.)
3707  iret=nf90_put_att(ncid,varid(15),'valid_min',0)
3708  iret=nf90_put_att(ncid,varid(15),'valid_max',3600)
3709  iret=nf90_put_att(ncid,varid(15),'_FillValue',nf90_fill_short)
3710  ELSE
3711  iret=nf90_put_att(ncid,varid(15),'scale_factor',1.)
3712  iret=nf90_put_att(ncid,varid(15),'add_offset',0.)
3713  iret=nf90_put_att(ncid,varid(15),'valid_min',0.)
3714  iret=nf90_put_att(ncid,varid(15),'valid_max',360.)
3715  iret=nf90_put_att(ncid,varid(15),'_FillValue',nf90_fill_float)
3716  END IF
3717  iret=nf90_put_att(ncid,varid(15),'content','TX')
3718  iret=nf90_put_att(ncid,varid(15),'associates','time station')
3719 #ifdef W3_RTD
3720  IF ( flagunr ) THEN
3721  iret=nf90_put_att(ncid,varid(15),'direction_reference','True North')
3722  ELSE
3723  iret=nf90_put_att(ncid,varid(15),'direction_reference','Rotated Pole Grid North')
3724  END IF
3725 #endif
3726 
3727 
3728  ! Add values in netCDF file
3729  iret=nf90_enddef(ncid)
3730  CALL check_err(iret,48)
3731  iret=nf90_put_var(ncid,varid(6),freq(1:nk))
3732  CALL check_err(iret,49)
3733  iret=nf90_put_var(ncid,varid(7),freq1(1:nk))
3734  CALL check_err(iret,50)
3735  iret=nf90_put_var(ncid,varid(8),freq2(1:nk))
3736  CALL check_err(iret,51)
3737  iret=nf90_put_var(ncid,varid(9),dir(1:nth))
3738  CALL check_err(iret,52)
3739 
3740 
3741 
3742 
3743  !
3744  ! ... ITYPE = 1 AND OTYPE = 4
3745  !
3746 
3747  ELSE IF (itype.EQ.1 .AND. otype.EQ.4) THEN
3748  !
3749  ! Define specifics dimensions
3750  !
3751  iret = nf90_def_dim(ncid, 'npart', dimln(4), dimid(4))
3752  CALL check_err(iret,53)
3753 
3754  !
3755  ! define specifics variables
3756  !
3757 
3758  !npart
3759  iret=nf90_def_var(ncid, 'npart', nf90_int, (/ dimid(two),dimid(one) /), varid(6))
3760  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
3761  iret=nf90_put_att(ncid,varid(6),'long_name','npart')
3762  iret=nf90_put_att(ncid,varid(6),'standard_name','npart')
3763  iret=nf90_put_att(ncid,varid(6),'globwave_name','npart')
3764  iret=nf90_put_att(ncid,varid(6),'units','1')
3765  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
3766  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
3767  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
3768  iret=nf90_put_att(ncid,varid(6),'valid_max',100.)
3769  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_int)
3770  iret=nf90_put_att(ncid,varid(6),'axis','Y')
3771  !d
3772  iret=nf90_def_var(ncid, 'dpt', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
3773  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
3774  iret=nf90_put_att(ncid,varid(7),'long_name','depth')
3775  iret=nf90_put_att(ncid,varid(7),'standard_name','depth')
3776  iret=nf90_put_att(ncid,varid(7),'globwave_name','depth')
3777  iret=nf90_put_att(ncid,varid(7),'units','m')
3778  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
3779  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
3780  iret=nf90_put_att(ncid,varid(7),'valid_min',-100.)
3781  iret=nf90_put_att(ncid,varid(7),'valid_max',10000.)
3782  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
3783  iret=nf90_put_att(ncid,varid(7),'content','TX')
3784  iret=nf90_put_att(ncid,varid(7),'associates','time station')
3785  !U10
3786  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
3787  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
3788  iret=nf90_put_att(ncid,varid(8),'long_name','wind speed at 10m')
3789  iret=nf90_put_att(ncid,varid(8),'standard_name','wind_speed')
3790  iret=nf90_put_att(ncid,varid(8),'globwave_name','wind_speed')
3791  iret=nf90_put_att(ncid,varid(8),'units','m s-1')
3792  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
3793  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
3794  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
3795  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
3796  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
3797  iret=nf90_put_att(ncid,varid(8),'content','TX')
3798  iret=nf90_put_att(ncid,varid(8),'associates','time station')
3799  !Dir
3800  iret=nf90_def_var(ncid, 'wnddir', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
3801  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
3802  iret=nf90_put_att(ncid,varid(9),'long_name','wind direction')
3803  iret=nf90_put_att(ncid,varid(9),'standard_name','wind_from_direction')
3804  iret=nf90_put_att(ncid,varid(9),'globwave_name','wind_from_direction')
3805  iret=nf90_put_att(ncid,varid(9),'units','degree')
3806  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
3807  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
3808  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
3809  iret=nf90_put_att(ncid,varid(9),'valid_max',360.)
3810  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
3811  iret=nf90_put_att(ncid,varid(9),'content','TX')
3812  iret=nf90_put_att(ncid,varid(9),'associates','time station')
3813 #ifdef W3_RTD
3814  IF ( flagunr ) THEN
3815  iret=nf90_put_att(ncid,varid(9),'direction_reference','True North')
3816  ELSE
3817  iret=nf90_put_att(ncid,varid(9),'direction_reference','Rotated Pole Grid North')
3818  END IF
3819 #endif
3820 
3821  !Uc
3822  iret=nf90_def_var(ncid, 'cur', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
3823  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
3824  iret=nf90_put_att(ncid,varid(10),'long_name','sea water speed')
3825  iret=nf90_put_att(ncid,varid(10),'standard_name','sea_water_speed')
3826  iret=nf90_put_att(ncid,varid(10),'globwave_name','sea_water_speed')
3827  iret=nf90_put_att(ncid,varid(10),'units','m s-1')
3828  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
3829  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
3830  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
3831  iret=nf90_put_att(ncid,varid(10),'valid_max',100.)
3832  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
3833  iret=nf90_put_att(ncid,varid(10),'content','TX')
3834  iret=nf90_put_att(ncid,varid(10),'associates','time station')
3835  !Dir
3836  iret=nf90_def_var(ncid, 'curdir', nf90_float, (/ dimid(two),dimid(one) /), varid(11))
3837  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
3838  iret=nf90_put_att(ncid,varid(11),'long_name',' direction from of sea water velocity')
3839  iret=nf90_put_att(ncid,varid(11),'standard_name','direction_of_sea_water_velocity')
3840  iret=nf90_put_att(ncid,varid(11),'globwave_name','direction_of_sea_water_velocity')
3841  iret=nf90_put_att(ncid,varid(11),'units','degree')
3842  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
3843  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
3844  iret=nf90_put_att(ncid,varid(11),'valid_min',0.)
3845  iret=nf90_put_att(ncid,varid(11),'valid_max',360.)
3846  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_float)
3847  iret=nf90_put_att(ncid,varid(11),'content','TX')
3848  iret=nf90_put_att(ncid,varid(11),'associates','time station')
3849 #ifdef W3_RTD
3850  IF ( flagunr ) THEN
3851  iret=nf90_put_att(ncid,varid(11),'direction_reference','True North')
3852  ELSE
3853  iret=nf90_put_att(ncid,varid(11),'direction_reference','Rotated Pole Grid North')
3854  END IF
3855 #endif
3856 
3857  !Hs
3858  iret=nf90_def_var(ncid, 'hs', nf90_float, (/dimid(4),dimid(two),dimid(one)/),varid(12))
3859  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
3860  iret=nf90_put_att(ncid,varid(12),'long_name','spectral estimate of significant wave height')
3861  iret=nf90_put_att(ncid,varid(12),'standard_name','sea_surface_wave_significant_height')
3862  iret=nf90_put_att(ncid,varid(12),'globwave_name','significant_wave_height')
3863  iret=nf90_put_att(ncid,varid(12),'units','m')
3864  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
3865  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
3866  iret=nf90_put_att(ncid,varid(12),'valid_min',0.)
3867  iret=nf90_put_att(ncid,varid(12),'valid_max',100.)
3868  iret=nf90_put_att(ncid,varid(12),'_FillValue',nf90_fill_float)
3869  iret=nf90_put_att(ncid,varid(12),'content','TXY')
3870  iret=nf90_put_att(ncid,varid(12),'associates','time station npart')
3871  !Tp
3872  iret=nf90_def_var(ncid, 'tp', nf90_float,(/dimid(4),dimid(two),dimid(one)/),varid(13))
3873  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
3874  iret=nf90_put_att(ncid,varid(13),'long_name','dominant_wave_period')
3875  iret=nf90_put_att(ncid,varid(13),'standard_name','dominant_wave_period')
3876  iret=nf90_put_att(ncid,varid(13),'globwave_name','dominant_wave_period')
3877  iret=nf90_put_att(ncid,varid(13),'units','s')
3878  iret=nf90_put_att(ncid,varid(13),'scale_factor',1.)
3879  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
3880  iret=nf90_put_att(ncid,varid(13),'valid_min',0.)
3881  iret=nf90_put_att(ncid,varid(13),'valid_max',100.)
3882  iret=nf90_put_att(ncid,varid(13),'_FillValue',nf90_fill_float)
3883  iret=nf90_put_att(ncid,varid(13),'content','TXY')
3884  iret=nf90_put_att(ncid,varid(13),'associates','time station npart')
3885  !L
3886  iret=nf90_def_var(ncid, 'lp', nf90_float, (/dimid(4),dimid(two),dimid(one)/),varid(14))
3887  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(14), 1, 1, deflate)
3888  iret=nf90_put_att(ncid,varid(14),'long_name','peak wave length')
3889  iret=nf90_put_att(ncid,varid(14),'standard_name','peak_wave_length')
3890  iret=nf90_put_att(ncid,varid(14),'globwave_name','peak_wave_length')
3891  iret=nf90_put_att(ncid,varid(14),'units','m')
3892  iret=nf90_put_att(ncid,varid(14),'scale_factor',1.)
3893  iret=nf90_put_att(ncid,varid(14),'add_offset',0.)
3894  iret=nf90_put_att(ncid,varid(14),'valid_min',0.)
3895  iret=nf90_put_att(ncid,varid(14),'valid_max',100.)
3896  iret=nf90_put_att(ncid,varid(14),'_FillValue',nf90_fill_float)
3897  iret=nf90_put_att(ncid,varid(14),'content','TXY')
3898  iret=nf90_put_att(ncid,varid(14),'associates','time station npart')
3899  !th1m
3900  iret=nf90_def_var(ncid, 'th1m', nf90_float, (/dimid(4),dimid(two),dimid(one)/),varid(15))
3901  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(15), 1, 1, deflate)
3902  iret=nf90_put_att(ncid,varid(15),'long_name','mean wave direction from spectral moments')
3903  iret=nf90_put_att(ncid,varid(15),'standard_name','mean_wave_direction')
3904  iret=nf90_put_att(ncid,varid(15),'globwave_name','mean_wave_direction')
3905  iret=nf90_put_att(ncid,varid(15),'units','degree')
3906  iret=nf90_put_att(ncid,varid(15),'scale_factor',1.)
3907  iret=nf90_put_att(ncid,varid(15),'add_offset',0.)
3908  iret=nf90_put_att(ncid,varid(15),'valid_min',0.)
3909  iret=nf90_put_att(ncid,varid(15),'valid_max',360.)
3910  iret=nf90_put_att(ncid,varid(15),'_FillValue',nf90_fill_float)
3911  iret=nf90_put_att(ncid,varid(15),'content','TXY')
3912  iret=nf90_put_att(ncid,varid(15),'associates','time station npart')
3913 #ifdef W3_RTD
3914  IF ( flagunr ) THEN
3915  iret=nf90_put_att(ncid,varid(15),'direction_reference','True North')
3916  ELSE
3917  iret=nf90_put_att(ncid,varid(15),'direction_reference','Rotated Pole Grid North')
3918  END IF
3919 #endif
3920 
3921  !sth1m
3922  iret=nf90_def_var(ncid, 'sth1m', nf90_float,(/dimid(4),dimid(two),dimid(one)/),varid(16))
3923  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(16), 1, 1, deflate)
3924  iret=nf90_put_att(ncid,varid(16),'long_name','directional spread from spectral moments')
3925  iret=nf90_put_att(ncid,varid(16),'standard_name','mean_wave_spreading')
3926  iret=nf90_put_att(ncid,varid(16),'globwave_name','mean_wave_spreading')
3927  iret=nf90_put_att(ncid,varid(16),'units','degree')
3928  iret=nf90_put_att(ncid,varid(16),'scale_factor',1.)
3929  iret=nf90_put_att(ncid,varid(16),'add_offset',0.)
3930  iret=nf90_put_att(ncid,varid(16),'valid_min',0.)
3931  iret=nf90_put_att(ncid,varid(16),'valid_max',360.)
3932  iret=nf90_put_att(ncid,varid(16),'_FillValue',nf90_fill_float)
3933  iret=nf90_put_att(ncid,varid(16),'content','TXY')
3934  iret=nf90_put_att(ncid,varid(16),'associates','time station npart')
3935  !ws
3936  iret=nf90_def_var(ncid, 'ws', nf90_float,(/dimid(4),dimid(two),dimid(one)/),varid(17))
3937  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(17), 1, 1, deflate)
3938  iret=nf90_put_att(ncid,varid(17),'long_name','wind sea fraction')
3939  iret=nf90_put_att(ncid,varid(17),'standard_name','wind_sea_fraction')
3940  iret=nf90_put_att(ncid,varid(17),'globwave_name','wind_sea_fraction')
3941  iret=nf90_put_att(ncid,varid(17),'units','%')
3942  iret=nf90_put_att(ncid,varid(17),'scale_factor',1.)
3943  iret=nf90_put_att(ncid,varid(17),'add_offset',0.)
3944  iret=nf90_put_att(ncid,varid(17),'valid_min',0.)
3945  iret=nf90_put_att(ncid,varid(17),'valid_max',100.)
3946  iret=nf90_put_att(ncid,varid(17),'_FillValue',nf90_fill_float)
3947  iret=nf90_put_att(ncid,varid(17),'content','TXY')
3948  iret=nf90_put_att(ncid,varid(17),'associates','time station npart')
3949  !TM10
3950  iret=nf90_def_var(ncid, 'tm10', nf90_float,(/dimid(4),dimid(2),dimid(1)/),varid(18))
3951  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(18), 1, 1, deflate)
3952  iret=nf90_put_att(ncid,varid(18),'long_name','mean wave period from spectral moments (-1,0)')
3953  iret=nf90_put_att(ncid,varid(18),'standard_name','mean_wave_period_tm10')
3954  iret=nf90_put_att(ncid,varid(18),'globwave_name','mean_wave_period_tm10')
3955  iret=nf90_put_att(ncid,varid(18),'units','seconds')
3956  iret=nf90_put_att(ncid,varid(18),'scale_factor',1.)
3957  iret=nf90_put_att(ncid,varid(18),'add_offset',0.)
3958  iret=nf90_put_att(ncid,varid(18),'valid_min',0.)
3959  iret=nf90_put_att(ncid,varid(18),'valid_max',30.)
3960  iret=nf90_put_att(ncid,varid(18),'_FillValue',nf90_fill_float)
3961  iret=nf90_put_att(ncid,varid(18),'content','TXY')
3962  iret=nf90_put_att(ncid,varid(18),'associates','time station npart')
3963  !T01
3964  iret=nf90_def_var(ncid, 't01', nf90_float,(/dimid(4),dimid(2),dimid(1)/),varid(19))
3965  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(19), 1, 1, deflate)
3966  iret=nf90_put_att(ncid,varid(19),'long_name','mean wave period from spectral moments (0,1)')
3967  iret=nf90_put_att(ncid,varid(19),'standard_name','mean_wave_period_t01')
3968  iret=nf90_put_att(ncid,varid(19),'globwave_name','mean_wave_period_t01')
3969  iret=nf90_put_att(ncid,varid(19),'units','seconds')
3970  iret=nf90_put_att(ncid,varid(19),'scale_factor',1.)
3971  iret=nf90_put_att(ncid,varid(19),'add_offset',0.)
3972  iret=nf90_put_att(ncid,varid(19),'valid_min',0.)
3973  iret=nf90_put_att(ncid,varid(19),'valid_max',30.)
3974  iret=nf90_put_att(ncid,varid(19),'_FillValue',nf90_fill_float)
3975  iret=nf90_put_att(ncid,varid(19),'content','TXY')
3976  iret=nf90_put_att(ncid,varid(19),'associates','time station npart')
3977  !T02
3978  iret=nf90_def_var(ncid, 't02', nf90_float,(/dimid(4),dimid(2),dimid(1)/),varid(20))
3979  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(20), 1, 1, deflate)
3980  iret=nf90_put_att(ncid,varid(20),'long_name','mean wave period from spectral moments (0,2)')
3981  iret=nf90_put_att(ncid,varid(20),'standard_name','mean_wave_period_t02')
3982  iret=nf90_put_att(ncid,varid(20),'globwave_name','mean_wave_period_t02')
3983  iret=nf90_put_att(ncid,varid(20),'units','seconds')
3984  iret=nf90_put_att(ncid,varid(20),'scale_factor',1.)
3985  iret=nf90_put_att(ncid,varid(20),'add_offset',0.)
3986  iret=nf90_put_att(ncid,varid(20),'valid_min',0.)
3987  iret=nf90_put_att(ncid,varid(20),'valid_max',30.)
3988  iret=nf90_put_att(ncid,varid(20),'_FillValue',nf90_fill_float)
3989  iret=nf90_put_att(ncid,varid(20),'content','TXY')
3990  iret=nf90_put_att(ncid,varid(20),'associates','time station npart')
3991 
3992  ! NF90_ENDDEF function
3993  iret=nf90_enddef(ncid)
3994  CALL check_err(iret,54)
3995 
3996  !
3997  ! ... ITYPE = 2 AND OTYPE = 1
3998  !
3999 
4000 
4001  ELSE IF (itype.EQ.2 .AND. otype.EQ.1) THEN
4002  !d
4003  iret=nf90_def_var(ncid, 'dpt', nf90_float, (/ dimid(two),dimid(one) /), varid(6))
4004  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4005  iret=nf90_put_att(ncid,varid(6),'long_name','depth')
4006  iret=nf90_put_att(ncid,varid(6),'standard_name','depth')
4007  iret=nf90_put_att(ncid,varid(6),'globwave_name','depth')
4008  iret=nf90_put_att(ncid,varid(6),'units','m')
4009  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4010  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4011  iret=nf90_put_att(ncid,varid(6),'valid_min',-100.)
4012  iret=nf90_put_att(ncid,varid(6),'valid_max',10000.)
4013  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4014  iret=nf90_put_att(ncid,varid(6),'content','TX')
4015  iret=nf90_put_att(ncid,varid(6),'associates','time station')
4016 
4017  !Uc
4018  iret=nf90_def_var(ncid, 'cur', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4019  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4020  iret=nf90_put_att(ncid,varid(7),'long_name','sea water speed')
4021  iret=nf90_put_att(ncid,varid(7),'standard_name','sea_water_speed')
4022  iret=nf90_put_att(ncid,varid(7),'globwave_name','sea_water_speed')
4023  iret=nf90_put_att(ncid,varid(7),'units','m s-1')
4024  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4025  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4026  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
4027  iret=nf90_put_att(ncid,varid(7),'valid_max',100.)
4028  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4029  iret=nf90_put_att(ncid,varid(7),'content','TX')
4030  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4031  !Dir
4032  iret=nf90_def_var(ncid, 'curdir', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4033  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4034  iret=nf90_put_att(ncid,varid(8),'long_name','direction from of sea water velocity')
4035  iret=nf90_put_att(ncid,varid(8),'standard_name','direction_of_sea_water_velocity')
4036  iret=nf90_put_att(ncid,varid(8),'globwave_name','direction_of_sea_water_velocity')
4037  iret=nf90_put_att(ncid,varid(8),'units','degree')
4038  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
4039  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
4040  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
4041  iret=nf90_put_att(ncid,varid(8),'valid_max',360.)
4042  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4043  iret=nf90_put_att(ncid,varid(8),'content','TX')
4044  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4045 #ifdef W3_RTD
4046  IF ( flagunr ) THEN
4047  iret=nf90_put_att(ncid,varid(8),'direction_reference','True North')
4048  ELSE
4049  iret=nf90_put_att(ncid,varid(8),'direction_reference','Rotated Pole Grid North')
4050  END IF
4051 #endif
4052 
4053  !U10
4054  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4055  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4056  iret=nf90_put_att(ncid,varid(9),'long_name','wind speed at 10m')
4057  iret=nf90_put_att(ncid,varid(9),'standard_name','wind_speed')
4058  iret=nf90_put_att(ncid,varid(9),'globwave_name','wind_speed')
4059  iret=nf90_put_att(ncid,varid(9),'units','m s-1')
4060  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4061  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4062  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4063  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4064  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4065  iret=nf90_put_att(ncid,varid(9),'content','TX')
4066  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4067  !Dir
4068  iret=nf90_def_var(ncid, 'wnddir', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
4069  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
4070  iret=nf90_put_att(ncid,varid(10),'long_name','wind direction')
4071  iret=nf90_put_att(ncid,varid(10),'standard_name','wind_from_direction')
4072  iret=nf90_put_att(ncid,varid(10),'globwave_name','wind_from_direction')
4073  iret=nf90_put_att(ncid,varid(10),'units','degree')
4074  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
4075  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
4076  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
4077  iret=nf90_put_att(ncid,varid(10),'valid_max',360.)
4078  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
4079  iret=nf90_put_att(ncid,varid(10),'content','TX')
4080  iret=nf90_put_att(ncid,varid(10),'associates','time station')
4081 #ifdef W3_RTD
4082  IF ( flagunr ) THEN
4083  iret=nf90_put_att(ncid,varid(10),'direction_reference','True North')
4084  ELSE
4085  iret=nf90_put_att(ncid,varid(10),'direction_reference','Rotated Pole Grid North')
4086  END IF
4087 #endif
4088 
4089  !zeta_setup
4090 #ifdef W3_SETUP
4091  iret=nf90_def_var(ncid, 'wave_setup', nf90_float, (/ dimid(two),dimid(one) /), varid(11))
4092  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
4093  iret=nf90_put_att(ncid,varid(11),'long_name','wave setup')
4094  iret=nf90_put_att(ncid,varid(11),'standard_name','wave_induced_setup')
4095  iret=nf90_put_att(ncid,varid(11),'globwave_name','wave_induced_setup')
4096  iret=nf90_put_att(ncid,varid(11),'units','m')
4097  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
4098  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
4099  iret=nf90_put_att(ncid,varid(11),'valid_min',-100.)
4100  iret=nf90_put_att(ncid,varid(11),'valid_max',100.)
4101  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_float)
4102  iret=nf90_put_att(ncid,varid(11),'content','TX')
4103  iret=nf90_put_att(ncid,varid(11),'associates','time station')
4104 #endif
4105 
4106  ! NF90_ENDDEF function
4107  iret=nf90_enddef(ncid)
4108  CALL check_err(iret,55)
4109 
4110  !
4111  ! ... ITYPE = 2 AND OTYPE = 2
4112  !
4113 
4114  ELSE IF (itype.EQ.2 .AND. otype.EQ.2) THEN
4115  !Hs
4116  iret=nf90_def_var(ncid, 'hs', nf90_float, (/ dimid(two),dimid(one) /), varid(6))
4117  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4118  iret=nf90_put_att(ncid,varid(6),'long_name','spectral estimate of significant wave height')
4119  iret=nf90_put_att(ncid,varid(6),'standard_name','sea_surface_wave_significant_height')
4120  iret=nf90_put_att(ncid,varid(6),'globwave_name','significant_wave_height')
4121  iret=nf90_put_att(ncid,varid(6),'units','m')
4122  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4123  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4124  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
4125  iret=nf90_put_att(ncid,varid(6),'valid_max',100.)
4126  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4127  iret=nf90_put_att(ncid,varid(6),'content','TX')
4128  iret=nf90_put_att(ncid,varid(6),'associates','time station')
4129  !L
4130  iret=nf90_def_var(ncid, 'lm', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4131  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4132  iret=nf90_put_att(ncid,varid(7),'long_name','mean wave length')
4133  iret=nf90_put_att(ncid,varid(7),'standard_name','mean_wave_length')
4134  iret=nf90_put_att(ncid,varid(7),'globwave_name','mean_wave_length')
4135  iret=nf90_put_att(ncid,varid(7),'units','m')
4136  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4137  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4138  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
4139  iret=nf90_put_att(ncid,varid(7),'valid_max',100.)
4140  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4141  iret=nf90_put_att(ncid,varid(7),'content','TX')
4142  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4143  !Tr
4144  iret=nf90_def_var(ncid, 'tr', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4145  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4146  iret=nf90_put_att(ncid,varid(8),'long_name','mean period normalised by the relative frequency')
4147  iret=nf90_put_att(ncid,varid(8),'standard_name','mean_period_normalised_by_the_relative_frequency')
4148  iret=nf90_put_att(ncid,varid(8),'globwave_name','mean period normalised by the relative frequency')
4149  iret=nf90_put_att(ncid,varid(8),'units','s')
4150  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
4151  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
4152  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
4153  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
4154  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4155  iret=nf90_put_att(ncid,varid(8),'content','TX')
4156  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4157  !th1p
4158  iret=nf90_def_var(ncid, 'th1p', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4159  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4160  iret=nf90_put_att(ncid,varid(9),'long_name','mean wave direction from spectral moments at spectral peak')
4161  iret=nf90_put_att(ncid,varid(9),'standard_name','dominant_wave_direction')
4162  iret=nf90_put_att(ncid,varid(9),'globwave_name','dominant_wave_direction')
4163  iret=nf90_put_att(ncid,varid(9),'units','degree')
4164  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4165  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4166  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4167  iret=nf90_put_att(ncid,varid(9),'valid_max',360.)
4168  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4169  iret=nf90_put_att(ncid,varid(9),'content','TX')
4170  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4171 #ifdef W3_RTD
4172  IF ( flagunr ) THEN
4173  iret=nf90_put_att(ncid,varid(9),'direction_reference','True North')
4174  ELSE
4175  iret=nf90_put_att(ncid,varid(9),'direction_reference','Rotated Pole Grid North')
4176  END IF
4177 #endif
4178 
4179  !sth1p
4180  iret=nf90_def_var(ncid, 'sth1p', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
4181  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
4182  iret=nf90_put_att(ncid,varid(10),'long_name','directional spread at spectral peak')
4183  iret=nf90_put_att(ncid,varid(10),'standard_name','dominant_wave_spreading')
4184  iret=nf90_put_att(ncid,varid(10),'globwave_name','dominant_wave_spreading')
4185  iret=nf90_put_att(ncid,varid(10),'units','degree')
4186  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
4187  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
4188  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
4189  iret=nf90_put_att(ncid,varid(10),'valid_max',360.)
4190  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
4191  iret=nf90_put_att(ncid,varid(10),'content','TX')
4192  iret=nf90_put_att(ncid,varid(10),'associates','time station')
4193  !fp
4194  iret=nf90_def_var(ncid, 'fp', nf90_float, (/ dimid(two),dimid(one) /), varid(11))
4195  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
4196  iret=nf90_put_att(ncid,varid(11),'long_name',' peak frequency (Fp=1/Tp)')
4197  iret=nf90_put_att(ncid,varid(11),'standard_name','dominant_wave_frequency')
4198  iret=nf90_put_att(ncid,varid(11),'globwave_name','dominant_wave_frequency')
4199  iret=nf90_put_att(ncid,varid(11),'units','s-1')
4200  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
4201  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
4202  iret=nf90_put_att(ncid,varid(11),'valid_min',0.)
4203  iret=nf90_put_att(ncid,varid(11),'valid_max',100.)
4204  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_float)
4205  iret=nf90_put_att(ncid,varid(11),'content','TX')
4206  iret=nf90_put_att(ncid,varid(11),'associates','time station')
4207  !th1m
4208  iret=nf90_def_var(ncid, 'th1m', nf90_float, (/ dimid(two),dimid(one) /), varid(12))
4209  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
4210  iret=nf90_put_att(ncid,varid(12),'standard_name','mean wave direction from spectral moments')
4211  iret=nf90_put_att(ncid,varid(12),'standard_name','mean_wave_direction')
4212  iret=nf90_put_att(ncid,varid(12),'globwave_name','mean_wave_direction')
4213  iret=nf90_put_att(ncid,varid(12),'units','degree')
4214  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
4215  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
4216  iret=nf90_put_att(ncid,varid(12),'valid_min',0.)
4217  iret=nf90_put_att(ncid,varid(12),'valid_max',360.)
4218  iret=nf90_put_att(ncid,varid(12),'_FillValue',nf90_fill_float)
4219  iret=nf90_put_att(ncid,varid(12),'content','TX')
4220  iret=nf90_put_att(ncid,varid(12),'associates','time station')
4221 #ifdef W3_RTD
4222  IF ( flagunr ) THEN
4223  iret=nf90_put_att(ncid,varid(12),'direction_reference','True North')
4224  ELSE
4225  iret=nf90_put_att(ncid,varid(12),'direction_reference','Rotated Pole Grid North')
4226  END IF
4227 #endif
4228 
4229  !sth1m
4230  iret=nf90_def_var(ncid, 'sth1m', nf90_float, (/ dimid(two),dimid(one) /), varid(13))
4231  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
4232  iret=nf90_put_att(ncid,varid(13),'long_name','directional spread from spectral moments')
4233  iret=nf90_put_att(ncid,varid(13),'standard_name','mean_wave_spreading')
4234  iret=nf90_put_att(ncid,varid(13),'globwave_name','mean_wave_spreading')
4235  iret=nf90_put_att(ncid,varid(13),'units','degree')
4236  iret=nf90_put_att(ncid,varid(13),'scale_factor',1.)
4237  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
4238  iret=nf90_put_att(ncid,varid(13),'valid_min',0.)
4239  iret=nf90_put_att(ncid,varid(13),'valid_max',360.)
4240  iret=nf90_put_att(ncid,varid(13),'_FillValue',nf90_fill_float)
4241  iret=nf90_put_att(ncid,varid(13),'content','TX')
4242  iret=nf90_put_att(ncid,varid(13),'associates','time station')
4243 
4244  ! NF90_ENDDEF function
4245  iret=nf90_enddef(ncid)
4246  CALL check_err(iret,56)
4247 
4248 
4249  !
4250  ! ... ITYPE = 2 AND OTYPE = 3
4251  !
4252 
4253  ELSE IF (itype.EQ.2 .AND. otype.EQ.3) THEN
4254  !Ust
4255  iret=nf90_def_var(ncid, 'ust', nf90_float, (/ dimid(two),dimid(one) /), varid(6))
4256  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4257  iret=nf90_put_att(ncid,varid(6),'long_name','friction velocity')
4258  iret=nf90_put_att(ncid,varid(6),'standard_name','friction_velocity')
4259  iret=nf90_put_att(ncid,varid(6),'globwave_name','friction_velocity')
4260  iret=nf90_put_att(ncid,varid(6),'units','m s-1')
4261  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4262  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4263  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
4264  iret=nf90_put_att(ncid,varid(6),'valid_max',100.)
4265  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4266  iret=nf90_put_att(ncid,varid(6),'content','TX')
4267  iret=nf90_put_att(ncid,varid(6),'associates','time station')
4268  !Efst
4269  iret=nf90_def_var(ncid, 'efst', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4270  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4271  iret=nf90_put_att(ncid,varid(7),'long_name', &
4272  'nondimensionalized using surface elevation variance spectrum')
4273  iret=nf90_put_att(ncid,varid(7),'standard_name','sea_surface_wave_variance_spectral_density')
4274  iret=nf90_put_att(ncid,varid(7),'globwave_name','variance_spectral_density')
4275  iret=nf90_put_att(ncid,varid(7),'units','-')
4276  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4277  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4278  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
4279  iret=nf90_put_att(ncid,varid(7),'valid_max',100.)
4280  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4281  iret=nf90_put_att(ncid,varid(7),'content','TX')
4282  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4283 #ifdef W3_RTD
4284  IF ( flagunr ) THEN
4285  iret=nf90_put_att(ncid,varid(7),'direction_reference','True North')
4286  ELSE
4287  iret=nf90_put_att(ncid,varid(7),'direction_reference','Rotated Pole Grid North')
4288  END IF
4289 #endif
4290 
4291  !fpst
4292  iret=nf90_def_var(ncid, 'fpst', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4293  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4294  iret=nf90_put_att(ncid,varid(8),'long_name','nondimensionalized using peak frequency (Fp=1/Tp)')
4295  iret=nf90_put_att(ncid,varid(8),'standard_name','dominant_wave_frequency')
4296  iret=nf90_put_att(ncid,varid(8),'globwave_name','dominant_wave_frequency')
4297  iret=nf90_put_att(ncid,varid(8),'units','-')
4298  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4299  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4300  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4301  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4302  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4303  iret=nf90_put_att(ncid,varid(8),'content','TX')
4304  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4305  !Cd
4306  iret=nf90_def_var(ncid, 'cd', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4307  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4308  iret=nf90_put_att(ncid,varid(9),'long_name','drag coefficient')
4309  iret=nf90_put_att(ncid,varid(9),'standard_name','drag_coefficient')
4310  iret=nf90_put_att(ncid,varid(9),'globwave_name','drag_coefficient')
4311  iret=nf90_put_att(ncid,varid(9),'units','*1000')
4312  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4313  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4314  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4315  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4316  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4317  iret=nf90_put_att(ncid,varid(9),'content','TX')
4318  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4319  !alpha
4320  iret=nf90_def_var(ncid, 'alpha', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
4321  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
4322  iret=nf90_put_att(ncid,varid(10),'long_name','alpha')
4323  iret=nf90_put_att(ncid,varid(10),'standard_name','alpha')
4324  iret=nf90_put_att(ncid,varid(10),'globwave_name','alpha')
4325  iret=nf90_put_att(ncid,varid(10),'units','*100')
4326  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
4327  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
4328  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
4329  iret=nf90_put_att(ncid,varid(10),'valid_max',100.)
4330  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
4331  iret=nf90_put_att(ncid,varid(10),'content','TX')
4332  iret=nf90_put_att(ncid,varid(10),'associates','time station')
4333 
4334 
4335  ! NF90_ENDDEF function
4336  iret=nf90_enddef(ncid)
4337  CALL check_err(iret,57)
4338 
4339 
4340  !
4341  ! ... ITYPE = 2 AND OTYPE = 4
4342  !
4343 
4344  ELSE IF (itype.EQ.2 .AND. otype.EQ.4) THEN
4345  !U10
4346  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(6))
4347  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4348  iret=nf90_put_att(ncid,varid(6),'long_name','wind speed at 10m')
4349  iret=nf90_put_att(ncid,varid(6),'standard_name','wind_speed')
4350  iret=nf90_put_att(ncid,varid(6),'globwave_name','wind_speed')
4351  iret=nf90_put_att(ncid,varid(6),'units','m s-1')
4352  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4353  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4354  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
4355  iret=nf90_put_att(ncid,varid(6),'valid_max',100.)
4356  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4357  iret=nf90_put_att(ncid,varid(6),'content','TX')
4358  iret=nf90_put_att(ncid,varid(6),'associates','time station')
4359  !Efst
4360  iret=nf90_def_var(ncid, 'efst', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4361  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4362  iret=nf90_put_att(ncid,varid(7),'long_name', &
4363  'nondimensionalized using surface elevation variance spectrum')
4364  iret=nf90_put_att(ncid,varid(7),'standard_name','sea_surface_wave_variance_spectral_density')
4365  iret=nf90_put_att(ncid,varid(7),'globwave_name','variance_spectral_density')
4366  iret=nf90_put_att(ncid,varid(7),'units','-')
4367  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4368  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4369  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
4370  iret=nf90_put_att(ncid,varid(7),'valid_max',10.)
4371  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4372  iret=nf90_put_att(ncid,varid(7),'content','TX')
4373  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4374 #ifdef W3_RTD
4375  IF ( flagunr ) THEN
4376  iret=nf90_put_att(ncid,varid(7),'direction_reference','True North')
4377  ELSE
4378  iret=nf90_put_att(ncid,varid(7),'direction_reference','Rotated Pole Grid North')
4379  END IF
4380 #endif
4381 
4382  !fpst
4383  iret=nf90_def_var(ncid, 'fpst', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4384  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4385  iret=nf90_put_att(ncid,varid(8),'long_name', &
4386  'nondimensionalized using peak frequency (Fp=1/Tp)')
4387  iret=nf90_put_att(ncid,varid(8),'standard_name','dominant_wave_frequency')
4388  iret=nf90_put_att(ncid,varid(8),'globwave_name','dominant_wave_frequency')
4389  iret=nf90_put_att(ncid,varid(8),'units','-')
4390  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
4391  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
4392  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
4393  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
4394  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4395  iret=nf90_put_att(ncid,varid(8),'content','TX')
4396  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4397  !Cd
4398  iret=nf90_def_var(ncid, 'cd', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4399  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4400  iret=nf90_put_att(ncid,varid(9),'long_name','drag coefficient')
4401  iret=nf90_put_att(ncid,varid(9),'standard_name','drag_coefficient')
4402  iret=nf90_put_att(ncid,varid(9),'globwave_name','drag_coefficient')
4403  iret=nf90_put_att(ncid,varid(9),'units','*1000')
4404  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4405  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4406  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4407  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4408  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4409  iret=nf90_put_att(ncid,varid(9),'content','TX')
4410  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4411  !alpha
4412  iret=nf90_def_var(ncid, 'alpha', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
4413  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
4414  iret=nf90_put_att(ncid,varid(10),'long_name','spectral intensity coefficient')
4415  iret=nf90_put_att(ncid,varid(10),'standard_name','spectral_intensity_coefficient')
4416  iret=nf90_put_att(ncid,varid(10),'globwave_name','spectral_intensity_coefficient')
4417  iret=nf90_put_att(ncid,varid(10),'units','*100')
4418  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
4419  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
4420  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
4421  iret=nf90_put_att(ncid,varid(10),'valid_max',100.)
4422  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
4423  iret=nf90_put_att(ncid,varid(10),'content','TX')
4424  iret=nf90_put_att(ncid,varid(10),'associates','time station')
4425 
4426  ! NF90_ENDDEF function
4427  iret=nf90_enddef(ncid)
4428  CALL check_err(iret,58)
4429 
4430 
4431  !
4432  ! ... ITYPE = 2 AND OTYPE = 5
4433  !
4434 
4435  ELSE IF (itype.EQ.2 .AND. otype.EQ.5) THEN
4436  !U10
4437  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(6))
4438  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4439  iret=nf90_put_att(ncid,varid(6),'long_name','wind speed at 10m')
4440  iret=nf90_put_att(ncid,varid(6),'standard_name','wind_speed')
4441  iret=nf90_put_att(ncid,varid(6),'globwave_name','wind_speed')
4442  iret=nf90_put_att(ncid,varid(6),'units','m s-1')
4443  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4444  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4445  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
4446  iret=nf90_put_att(ncid,varid(6),'valid_max',100.)
4447  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4448  iret=nf90_put_att(ncid,varid(6),'content','TX')
4449  iret=nf90_put_att(ncid,varid(6),'associates','time station')
4450  !Dir
4451  iret=nf90_def_var(ncid, 'wnddir', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4452  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4453  iret=nf90_put_att(ncid,varid(7),'long_name','wind direction')
4454  iret=nf90_put_att(ncid,varid(7),'standard_name','wind_from_direction')
4455  iret=nf90_put_att(ncid,varid(7),'globwave_name','wind_from_direction')
4456  iret=nf90_put_att(ncid,varid(7),'units','degree')
4457  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4458  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4459  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
4460  iret=nf90_put_att(ncid,varid(7),'valid_max',360.)
4461  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4462  iret=nf90_put_att(ncid,varid(7),'content','TX')
4463  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4464 #ifdef W3_RTD
4465  IF ( flagunr ) THEN
4466  iret=nf90_put_att(ncid,varid(7),'direction_reference','True North')
4467  ELSE
4468  iret=nf90_put_att(ncid,varid(7),'direction_reference','Rotated Pole Grid North')
4469  END IF
4470 #endif
4471 
4472  !Hs
4473  iret=nf90_def_var(ncid, 'hs', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4474  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4475  iret=nf90_put_att(ncid,varid(8),'long_name','spectral estimate of significant wave height')
4476  iret=nf90_put_att(ncid,varid(8),'standard_name','sea_surface_wave_significant_height')
4477  iret=nf90_put_att(ncid,varid(8),'globwave_name','significant_wave_height')
4478  iret=nf90_put_att(ncid,varid(8),'units','m')
4479  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
4480  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
4481  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
4482  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
4483  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4484  iret=nf90_put_att(ncid,varid(8),'content','TX')
4485  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4486  !Hsst
4487  iret=nf90_def_var(ncid, 'hsst', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4488  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4489  iret=nf90_put_att(ncid,varid(9),'long_name', &
4490  'nondimensionalized using spectral estimate of significant wave height')
4491  iret=nf90_put_att(ncid,varid(9),'standard_name','sea_surface_wave_significant_height')
4492  iret=nf90_put_att(ncid,varid(9),'globwave_name','significant_wave_height')
4493  iret=nf90_put_att(ncid,varid(9),'units','-')
4494  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4495  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4496  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4497  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4498  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4499  iret=nf90_put_att(ncid,varid(9),'content','TX')
4500  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4501  !cp/U
4502  iret=nf90_def_var(ncid, 'cpu', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
4503  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
4504  iret=nf90_put_att(ncid,varid(10),'long_name','phase speed at peak frequency on friction velocity')
4505  iret=nf90_put_att(ncid,varid(10),'standard_name','peak_wave_age')
4506  iret=nf90_put_att(ncid,varid(10),'globwave_name','peak_wave_age')
4507  iret=nf90_put_att(ncid,varid(10),'units','-')
4508  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
4509  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
4510  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
4511  iret=nf90_put_att(ncid,varid(10),'valid_max',100.)
4512  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
4513  iret=nf90_put_att(ncid,varid(10),'content','TX')
4514  iret=nf90_put_att(ncid,varid(10),'associates','time station')
4515  !cm/U
4516  iret=nf90_def_var(ncid, 'cmu', nf90_float, (/ dimid(two),dimid(one) /), varid(11))
4517  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
4518  iret=nf90_put_att(ncid,varid(11),'long_name','phase speed at mean frequency on friction velocity')
4519  iret=nf90_put_att(ncid,varid(11),'standard_name','mean_wave_age')
4520  iret=nf90_put_att(ncid,varid(11),'globwave_name','mean_wave_age')
4521  iret=nf90_put_att(ncid,varid(11),'units','-')
4522  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
4523  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
4524  iret=nf90_put_att(ncid,varid(11),'valid_min',0.)
4525  iret=nf90_put_att(ncid,varid(11),'valid_max',100.)
4526  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_float)
4527  iret=nf90_put_att(ncid,varid(11),'content','TX')
4528  iret=nf90_put_att(ncid,varid(11),'associates','time station')
4529  !Dt
4530  iret=nf90_def_var(ncid, 'ast', nf90_float, (/ dimid(two),dimid(one) /), varid(12))
4531  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
4532  iret=nf90_put_att(ncid,varid(12),'long_name','air sea temperature difference')
4533  iret=nf90_put_att(ncid,varid(12),'standard_name','air_sea_temperature_difference')
4534  iret=nf90_put_att(ncid,varid(12),'globwave_name','air_sea_temperature_difference')
4535  iret=nf90_put_att(ncid,varid(12),'units','degree')
4536  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
4537  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
4538  iret=nf90_put_att(ncid,varid(12),'valid_min',0.)
4539  iret=nf90_put_att(ncid,varid(12),'valid_max',100.)
4540  iret=nf90_put_att(ncid,varid(12),'_FillValue',nf90_fill_float)
4541  iret=nf90_put_att(ncid,varid(12),'content','TX')
4542  iret=nf90_put_att(ncid,varid(12),'associates','time station')
4543 
4544 
4545  ! NF90_ENDDEF function
4546  iret=nf90_enddef(ncid)
4547  CALL check_err(iret,59)
4548 
4549 
4550  !
4551  ! ... ITYPE = 2 AND OTYPE = 6
4552  !
4553 
4554  ELSE IF (itype.EQ.2 .AND. otype.EQ.6) THEN
4555  !U10
4556  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(6))
4557  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4558  iret=nf90_put_att(ncid,varid(6),'long_name','wind speed at 10m')
4559  iret=nf90_put_att(ncid,varid(6),'standard_name','wind_speed')
4560  iret=nf90_put_att(ncid,varid(6),'globwave_name','wind_speed')
4561  iret=nf90_put_att(ncid,varid(6),'units','m s-1')
4562  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4563  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4564  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
4565  iret=nf90_put_att(ncid,varid(6),'valid_max',100.)
4566  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4567  iret=nf90_put_att(ncid,varid(6),'content','TX')
4568  iret=nf90_put_att(ncid,varid(6),'associates','time station')
4569  !Dir
4570  iret=nf90_def_var(ncid, 'wnddir', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4571  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4572  iret=nf90_put_att(ncid,varid(7),'long_name','wind direction')
4573  iret=nf90_put_att(ncid,varid(7),'standard_name','wind_from_direction')
4574  iret=nf90_put_att(ncid,varid(7),'globwave_name','wind_from_direction')
4575  iret=nf90_put_att(ncid,varid(7),'units','degree')
4576  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4577  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4578  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
4579  iret=nf90_put_att(ncid,varid(7),'valid_max',360.)
4580  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4581  iret=nf90_put_att(ncid,varid(7),'content','TX')
4582  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4583 #ifdef W3_RTD
4584  IF ( flagunr ) THEN
4585  iret=nf90_put_att(ncid,varid(7),'direction_reference','True North')
4586  ELSE
4587  iret=nf90_put_att(ncid,varid(7),'direction_reference','Rotated Pole Grid North')
4588  END IF
4589 #endif
4590 
4591  !Hs
4592  iret=nf90_def_var(ncid, 'hs', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4593  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4594  iret=nf90_put_att(ncid,varid(8),'long_name','spectral estimate of significant wave height')
4595  iret=nf90_put_att(ncid,varid(8),'standard_name','sea_surface_wave_significant_height')
4596  iret=nf90_put_att(ncid,varid(8),'globwave_name','significant_wave_height')
4597  iret=nf90_put_att(ncid,varid(8),'units','m')
4598  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
4599  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
4600  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
4601  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
4602  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4603  iret=nf90_put_att(ncid,varid(8),'content','TX')
4604  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4605  !Tp
4606  iret=nf90_def_var(ncid, 'tp', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4607  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4608  iret=nf90_put_att(ncid,varid(9),'long_name','dominant wave period')
4609  iret=nf90_put_att(ncid,varid(9),'standard_name','dominant_wave_period')
4610  iret=nf90_put_att(ncid,varid(9),'globwave_name','dominant_wave_period')
4611  iret=nf90_put_att(ncid,varid(9),'units','s')
4612  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4613  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4614  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4615  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4616  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4617  iret=nf90_put_att(ncid,varid(9),'content','TX')
4618  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4619 
4620  ! NF90_ENDDEF function
4621  iret=nf90_enddef(ncid)
4622  CALL check_err(iret,60)
4623 
4624  !
4625  ! ... ITYPE = 3 AND OTYPE = 2
4626  !
4627  ELSE IF (itype.EQ.3 .AND. otype.EQ.2) THEN
4628  !
4629  ! Define specifics dimensions
4630  !
4631  iret = nf90_def_dim(ncid, 'frequency', dimln(4), dimid(4))
4632  CALL check_err(iret,61)
4633 
4634  !
4635  ! define specifics variables
4636  !
4637 
4638  ! frequency / frequencyst / ffp
4639  IF (iscale.EQ.0) THEN
4640  iret=nf90_def_var(ncid, 'frequency', nf90_float, dimid(4), varid(6))
4641  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4642  iret=nf90_def_var(ncid, 'frequencyst', nf90_float, dimid(4), varid(6))
4643  ELSE
4644  iret=nf90_def_var(ncid, 'ffp', nf90_float, dimid(4), varid(6))
4645  END IF
4646  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4647  iret=nf90_put_att(ncid,varid(6),'long_name','frequency of center band')
4648  iret=nf90_put_att(ncid,varid(6),'standard_name','sea_surface_wave_frequency')
4649  iret=nf90_put_att(ncid,varid(6),'globwave_name','frequency')
4650  iret=nf90_put_att(ncid,varid(6),'units','s-1')
4651  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4652  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4653  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
4654  iret=nf90_put_att(ncid,varid(6),'valid_max',10.)
4655  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4656  iret=nf90_put_att(ncid,varid(6),'axis','Y')
4657 
4658  !d
4659  iret=nf90_def_var(ncid, 'dpt', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4660  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4661  iret=nf90_put_att(ncid,varid(7),'long_name','depth')
4662  iret=nf90_put_att(ncid,varid(7),'standard_name','depth')
4663  iret=nf90_put_att(ncid,varid(7),'globwave_name','depth')
4664  iret=nf90_put_att(ncid,varid(7),'units','m')
4665  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4666  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4667  iret=nf90_put_att(ncid,varid(7),'valid_min',-100.)
4668  iret=nf90_put_att(ncid,varid(7),'valid_max',10000.)
4669  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4670  iret=nf90_put_att(ncid,varid(7),'content','TX')
4671  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4672 
4673  !Ust
4674  iret=nf90_def_var(ncid, 'ust', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4675  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4676  iret=nf90_put_att(ncid,varid(8),'long_name','friction velocity')
4677  iret=nf90_put_att(ncid,varid(8),'standard_name','friction_velocity')
4678  iret=nf90_put_att(ncid,varid(8),'globwave_name','friction_velocity')
4679  iret=nf90_put_att(ncid,varid(8),'units','m s-1')
4680  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
4681  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
4682  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
4683  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
4684  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4685  iret=nf90_put_att(ncid,varid(8),'content','TX')
4686  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4687 
4688  !U10
4689  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4690  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4691  iret=nf90_put_att(ncid,varid(9),'long_name','wind speed at 10m')
4692  iret=nf90_put_att(ncid,varid(9),'standard_name','wind_speed')
4693  iret=nf90_put_att(ncid,varid(9),'globwave_name','wind_speed')
4694  iret=nf90_put_att(ncid,varid(9),'units','m s-1')
4695  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4696  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4697  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4698  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4699  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4700  iret=nf90_put_att(ncid,varid(9),'content','TX')
4701  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4702 
4703  !Ef / Efst
4704  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4705  iret=nf90_def_var(ncid, 'ef', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(10))
4706  iret=nf90_put_att(ncid,varid(10),'long_name','surface elevation variance spectrum')
4707  iret=nf90_put_att(ncid,varid(10),'standard_name','sea_surface_wave_variance_spectral_density')
4708  iret=nf90_put_att(ncid,varid(10),'globwave_name','variance_spectral_density')
4709  iret=nf90_put_att(ncid,varid(10),'units','m2 s')
4710  ELSE
4711  iret=nf90_def_var(ncid, 'efst', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(10))
4712  iret=nf90_put_att(ncid,varid(10),'long_name', &
4713  'nondimensionalized using surface elevation variance spectrum')
4714  iret=nf90_put_att(ncid,varid(10),'standard_name','sea_surface_wave_variance_spectral_density')
4715  iret=nf90_put_att(ncid,varid(10),'globwave_name','variance_spectral_density')
4716  iret=nf90_put_att(ncid,varid(10),'units','-')
4717  END IF
4718  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
4719  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
4720  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
4721  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
4722  iret=nf90_put_att(ncid,varid(10),'valid_max',10.)
4723  iret=nf90_put_att(ncid,varid(10),'_FillValue', nf90_fill_float)
4724  iret=nf90_put_att(ncid,varid(10),'content','TXY')
4725  IF (iscale.EQ.0) THEN
4726  iret=nf90_put_att(ncid,varid(10),'associates','time station frequency')
4727  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4728  iret=nf90_put_att(ncid,varid(10),'associates','time station frequencyst')
4729  ELSE
4730  iret=nf90_put_att(ncid,varid(10),'associates','time station ffp')
4731  END IF
4732 
4733  !Sin / Sinst
4734  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4735  iret=nf90_def_var(ncid, 'sin', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(11))
4736  iret=nf90_put_att(ncid,varid(11),'long_name','wind input source term')
4737  iret=nf90_put_att(ncid,varid(11),'standard_name','wind_input_source_term')
4738  iret=nf90_put_att(ncid,varid(11),'globwave_name','wind_input_source_term')
4739  iret=nf90_put_att(ncid,varid(11),'units','m2')
4740  ELSE
4741  iret=nf90_def_var(ncid, 'sinst', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(11))
4742  iret=nf90_put_att(ncid,varid(11),'long_name', &
4743  'nondimensionalized using wind input source term')
4744  iret=nf90_put_att(ncid,varid(11),'standard_name','wind_input_source_term')
4745  iret=nf90_put_att(ncid,varid(11),'globwave_name','wind_input_source_term')
4746  iret=nf90_put_att(ncid,varid(11),'units','-')
4747  END IF
4748  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
4749  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
4750  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
4751  iret=nf90_put_att(ncid,varid(11),'valid_min',-1.)
4752  iret=nf90_put_att(ncid,varid(11),'valid_max',1.)
4753  iret=nf90_put_att(ncid,varid(11),'_FillValue', nf90_fill_float)
4754  iret=nf90_put_att(ncid,varid(11),'content','TXY')
4755  IF (iscale.EQ.0) THEN
4756  iret=nf90_put_att(ncid,varid(11),'associates','time station frequency')
4757  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4758  iret=nf90_put_att(ncid,varid(11),'associates','time station frequencyst')
4759  ELSE
4760  iret=nf90_put_att(ncid,varid(11),'associates','time station ffp')
4761  END IF
4762 
4763  !Snl / Snlst
4764  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4765  iret=nf90_def_var(ncid, 'snl', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(12))
4766  iret=nf90_put_att(ncid,varid(12),'long_name','nonlinear 4 wave source term')
4767  iret=nf90_put_att(ncid,varid(12),'standard_name','nonlinear_4_wave_source_term')
4768  iret=nf90_put_att(ncid,varid(12),'globwave_name','nonlinear_4_wave_source_term')
4769  iret=nf90_put_att(ncid,varid(12),'units','m2')
4770  ELSE
4771  iret=nf90_def_var(ncid, 'snlst', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(12))
4772  iret=nf90_put_att(ncid,varid(12),'long_name', &
4773  'nondimensionalized using nonlinear 4 wave source term')
4774  iret=nf90_put_att(ncid,varid(12),'standard_name','nonlinear_4_wave_source_term')
4775  iret=nf90_put_att(ncid,varid(12),'globwave_name','nonlinear_4_wave_source_term')
4776  iret=nf90_put_att(ncid,varid(12),'units','-')
4777  END IF
4778  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
4779  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
4780  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
4781  iret=nf90_put_att(ncid,varid(12),'valid_min',-1.)
4782  iret=nf90_put_att(ncid,varid(12),'valid_max',1.)
4783  iret=nf90_put_att(ncid,varid(12),'_FillValue', nf90_fill_float)
4784  iret=nf90_put_att(ncid,varid(12),'content','TXY')
4785  IF (iscale.EQ.0) THEN
4786  iret=nf90_put_att(ncid,varid(12),'associates','time station frequency')
4787  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4788  iret=nf90_put_att(ncid,varid(12),'associates','time station frequencyst')
4789  ELSE
4790  iret=nf90_put_att(ncid,varid(12),'associates','time station ffp')
4791  END IF
4792 
4793  !Sds / Sdsst
4794  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4795  iret=nf90_def_var(ncid, 'sds', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(13))
4796  iret=nf90_put_att(ncid,varid(13),'long_name','wave breaking source term')
4797  iret=nf90_put_att(ncid,varid(13),'standard_name','wave_breaking_source_term')
4798  iret=nf90_put_att(ncid,varid(13),'globwave_name','wave_breaking_source_term')
4799  iret=nf90_put_att(ncid,varid(13),'units','m2')
4800  ELSE
4801  iret=nf90_def_var(ncid, 'sdsst', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(13))
4802  iret=nf90_put_att(ncid,varid(13),'long_name', &
4803  'nondimensionalized using wave breaking source term')
4804  iret=nf90_put_att(ncid,varid(13),'standard_name','wave_breaking_source_term')
4805  iret=nf90_put_att(ncid,varid(13),'globwave_name','wave_breaking_source_term')
4806  iret=nf90_put_att(ncid,varid(13),'units','-')
4807  END IF
4808  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
4809  iret=nf90_put_att(ncid,varid(13),'scale_factor',1.)
4810  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
4811  iret=nf90_put_att(ncid,varid(13),'valid_min',-1.)
4812  iret=nf90_put_att(ncid,varid(13),'valid_max',1.)
4813  iret=nf90_put_att(ncid,varid(13),'_FillValue', nf90_fill_float)
4814  iret=nf90_put_att(ncid,varid(13),'content','TXY')
4815  IF (iscale.EQ.0) THEN
4816  iret=nf90_put_att(ncid,varid(13),'associates','time station frequency')
4817  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4818  iret=nf90_put_att(ncid,varid(13),'associates','time station frequencyst')
4819  ELSE
4820  iret=nf90_put_att(ncid,varid(13),'associates','time station ffp')
4821  END IF
4822 
4823  !Sbt / Sbtst
4824  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4825  iret=nf90_def_var(ncid, 'sbt', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(14))
4826  iret=nf90_put_att(ncid,varid(14),'long_name','depth induced breaking source term')
4827  iret=nf90_put_att(ncid,varid(14),'standard_name','depth_induced_breaking_source_term')
4828  iret=nf90_put_att(ncid,varid(14),'globwave_name','depth_induced_breaking_source_term')
4829  iret=nf90_put_att(ncid,varid(14),'units','m2')
4830  ELSE
4831  iret=nf90_def_var(ncid, 'sbtst', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(14))
4832  iret=nf90_put_att(ncid,varid(14),'long_name', &
4833  'nondimensionalized using depth induced breaking source term')
4834  iret=nf90_put_att(ncid,varid(14),'standard_name','depth_induced_breaking_source_term')
4835  iret=nf90_put_att(ncid,varid(14),'globwave_name','depth_induced_breaking_source_term')
4836  iret=nf90_put_att(ncid,varid(14),'units','-')
4837  END IF
4838  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(14), 1, 1, deflate)
4839  iret=nf90_put_att(ncid,varid(14),'scale_factor',1.)
4840  iret=nf90_put_att(ncid,varid(14),'add_offset',0.)
4841  iret=nf90_put_att(ncid,varid(14),'valid_min',-1.)
4842  iret=nf90_put_att(ncid,varid(14),'valid_max',1.)
4843  iret=nf90_put_att(ncid,varid(14),'_FillValue', nf90_fill_float)
4844  iret=nf90_put_att(ncid,varid(14),'content','TXY')
4845  IF (iscale.EQ.0) THEN
4846  iret=nf90_put_att(ncid,varid(14),'associates','time station frequency')
4847  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4848  iret=nf90_put_att(ncid,varid(14),'associates','time station frequencyst')
4849  ELSE
4850  iret=nf90_put_att(ncid,varid(14),'associates','time station ffp')
4851  END IF
4852 
4853  !Sice / Sicest
4854  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4855  iret=nf90_def_var(ncid, 'sice', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(15))
4856  iret=nf90_put_att(ncid,varid(15),'long_name','wave-ice interactions source term')
4857  iret=nf90_put_att(ncid,varid(15),'standard_name','wave_ice_interactions_source_term')
4858  iret=nf90_put_att(ncid,varid(15),'globwave_name','wave_ice_interactions_source_term')
4859  iret=nf90_put_att(ncid,varid(15),'units','m2')
4860  ELSE
4861  iret=nf90_def_var(ncid, 'sicest', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(15))
4862  iret=nf90_put_att(ncid,varid(15),'long_name','nondimensionalized using wave-ice interactions source term')
4863  iret=nf90_put_att(ncid,varid(15),'standard_name','wave_ice_interactions_source_term')
4864  iret=nf90_put_att(ncid,varid(15),'globwave_name','wave_ice_interactions_source_term')
4865  iret=nf90_put_att(ncid,varid(15),'units','-')
4866  END IF
4867  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(15), 1, 1, deflate)
4868  iret=nf90_put_att(ncid,varid(15),'scale_factor',1.)
4869  iret=nf90_put_att(ncid,varid(15),'add_offset',0.)
4870  iret=nf90_put_att(ncid,varid(15),'valid_min',-1.)
4871  iret=nf90_put_att(ncid,varid(15),'valid_max',1.)
4872  iret=nf90_put_att(ncid,varid(15),'_FillValue', nf90_fill_float)
4873  iret=nf90_put_att(ncid,varid(15),'content','TXY')
4874  IF (iscale.EQ.0) THEN
4875  iret=nf90_put_att(ncid,varid(15),'associates','time station frequency')
4876  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4877  iret=nf90_put_att(ncid,varid(15),'associates','time station frequencyst')
4878  ELSE
4879  iret=nf90_put_att(ncid,varid(15),'associates','time station ffp')
4880  END IF
4881 
4882  !Stot / Stotst
4883  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4884  iret=nf90_def_var(ncid, 'stot', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(16))
4885  iret=nf90_put_att(ncid,varid(16),'long_name','total source term')
4886  iret=nf90_put_att(ncid,varid(16),'standard_name','total_source_term')
4887  iret=nf90_put_att(ncid,varid(16),'globwave_name','total_source_term')
4888  iret=nf90_put_att(ncid,varid(16),'units','m2')
4889  ELSE
4890  iret=nf90_def_var(ncid, 'stotst', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(16))
4891  iret=nf90_put_att(ncid,varid(16),'long_name','nondimensionalized using total source term')
4892  iret=nf90_put_att(ncid,varid(16),'standard_name','total_source_term')
4893  iret=nf90_put_att(ncid,varid(16),'globwave_name','total_source_term')
4894  iret=nf90_put_att(ncid,varid(16),'units','-')
4895  END IF
4896  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(16), 1, 1, deflate)
4897  iret=nf90_put_att(ncid,varid(16),'scale_factor',1.)
4898  iret=nf90_put_att(ncid,varid(16),'add_offset',0.)
4899  iret=nf90_put_att(ncid,varid(16),'valid_min',-1.)
4900  iret=nf90_put_att(ncid,varid(16),'valid_max',1.)
4901  iret=nf90_put_att(ncid,varid(16),'_FillValue', nf90_fill_float)
4902  iret=nf90_put_att(ncid,varid(16),'content','TXY')
4903  IF (iscale.EQ.0) THEN
4904  iret=nf90_put_att(ncid,varid(16),'associates','time station frequency')
4905  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4906  iret=nf90_put_att(ncid,varid(16),'associates','time station frequencyst')
4907  ELSE
4908  iret=nf90_put_att(ncid,varid(16),'associates','time station ffp')
4909  END IF
4910 
4911  ! Add values in netCDF file
4912  iret=nf90_enddef(ncid)
4913  CALL check_err(iret,62)
4914  iret=nf90_put_var(ncid,varid(6),freq(1:nk))
4915  CALL check_err(iret,63)
4916 
4917 
4918  !
4919  ! ... ITYPE = 3 AND OTYPE = 3
4920  !
4921  ELSE IF (itype.EQ.3 .AND. otype.EQ.3) THEN
4922  !
4923  ! Define specifics dimensions
4924  !
4925  iret = nf90_def_dim(ncid, 'frequency', dimln(4), dimid(4))
4926  CALL check_err(iret,64)
4927 
4928  !
4929  ! define specifics variables
4930  !
4931 
4932  ! frequency / frequencyst / ffp
4933  IF (iscale.EQ.0) THEN
4934  iret=nf90_def_var(ncid, 'frequency', nf90_float, dimid(4), varid(6))
4935  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
4936  iret=nf90_def_var(ncid, 'frequencyst', nf90_float, dimid(4), varid(6))
4937  ELSE
4938  iret=nf90_def_var(ncid, 'ffp', nf90_float, dimid(4), varid(6))
4939  END IF
4940  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
4941  iret=nf90_put_att(ncid,varid(6),'long_name','frequency of center band')
4942  iret=nf90_put_att(ncid,varid(6),'standard_name','sea_surface_wave_frequency')
4943  iret=nf90_put_att(ncid,varid(6),'globwave_name','frequency')
4944  iret=nf90_put_att(ncid,varid(6),'units','s-1')
4945  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
4946  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
4947  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
4948  iret=nf90_put_att(ncid,varid(6),'valid_max',10.)
4949  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
4950  iret=nf90_put_att(ncid,varid(6),'axis','Y')
4951 
4952  !d
4953  iret=nf90_def_var(ncid, 'dpt', nf90_float, (/ dimid(two),dimid(one) /), varid(7))
4954  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
4955  iret=nf90_put_att(ncid,varid(7),'long_name','depth')
4956  iret=nf90_put_att(ncid,varid(7),'standard_name','depth')
4957  iret=nf90_put_att(ncid,varid(7),'globwave_name','depth')
4958  iret=nf90_put_att(ncid,varid(7),'units','m')
4959  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
4960  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
4961  iret=nf90_put_att(ncid,varid(7),'valid_min',-100.)
4962  iret=nf90_put_att(ncid,varid(7),'valid_max',10000.)
4963  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
4964  iret=nf90_put_att(ncid,varid(7),'content','TX')
4965  iret=nf90_put_att(ncid,varid(7),'associates','time station')
4966 
4967  !Ust
4968  iret=nf90_def_var(ncid, 'ust', nf90_float, (/ dimid(two),dimid(one) /), varid(8))
4969  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
4970  iret=nf90_put_att(ncid,varid(8),'long_name','friction velocity')
4971  iret=nf90_put_att(ncid,varid(8),'standard_name','friction_velocity')
4972  iret=nf90_put_att(ncid,varid(8),'globwave_name','friction_velocity')
4973  iret=nf90_put_att(ncid,varid(8),'units','m s-1')
4974  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
4975  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
4976  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
4977  iret=nf90_put_att(ncid,varid(8),'valid_max',100.)
4978  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
4979  iret=nf90_put_att(ncid,varid(8),'content','TX')
4980  iret=nf90_put_att(ncid,varid(8),'associates','time station')
4981 
4982  !U10
4983  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(9))
4984  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
4985  iret=nf90_put_att(ncid,varid(9),'long_name','wind speed at 10m')
4986  iret=nf90_put_att(ncid,varid(9),'standard_name','wind_speed')
4987  iret=nf90_put_att(ncid,varid(9),'globwave_name','wind_speed')
4988  iret=nf90_put_att(ncid,varid(9),'units','m s-1')
4989  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
4990  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
4991  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
4992  iret=nf90_put_att(ncid,varid(9),'valid_max',100.)
4993  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
4994  iret=nf90_put_att(ncid,varid(9),'content','TX')
4995  iret=nf90_put_att(ncid,varid(9),'associates','time station')
4996 
4997  !Ef / Efst
4998  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
4999  iret=nf90_def_var(ncid, 'ef', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(10))
5000  iret=nf90_put_att(ncid,varid(10),'long_name','surface elevation variance spectrum')
5001  iret=nf90_put_att(ncid,varid(10),'standard_name','sea_surface_wave_variance_spectral_density')
5002  iret=nf90_put_att(ncid,varid(10),'globwave_name','variance_spectral_density')
5003  iret=nf90_put_att(ncid,varid(10),'units','m2 s')
5004  ELSE
5005  iret=nf90_def_var(ncid, 'efst', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(10))
5006  iret=nf90_put_att(ncid,varid(10),'long_name', &
5007  'nondimensionalized using surface elevation variance spectrum')
5008  iret=nf90_put_att(ncid,varid(10),'standard_name','sea_surface_wave_variance_spectral_density')
5009  iret=nf90_put_att(ncid,varid(10),'globwave_name','variance_spectral_density')
5010  iret=nf90_put_att(ncid,varid(10),'units','-')
5011  END IF
5012  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
5013  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
5014  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
5015  iret=nf90_put_att(ncid,varid(10),'valid_min',0.)
5016  iret=nf90_put_att(ncid,varid(10),'valid_max',10.)
5017  iret=nf90_put_att(ncid,varid(10),'_FillValue', nf90_fill_float)
5018  iret=nf90_put_att(ncid,varid(10),'content','TXY')
5019  IF (iscale.EQ.0) THEN
5020  iret=nf90_put_att(ncid,varid(10),'associates','time station frequency')
5021  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
5022  iret=nf90_put_att(ncid,varid(10),'associates','time station frequencyst')
5023  ELSE
5024  iret=nf90_put_att(ncid,varid(10),'associates','time station ffp')
5025  END IF
5026 
5027  !Tini / Tinist
5028  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
5029  iret=nf90_def_var(ncid, 'tini', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(11))
5030  iret=nf90_put_att(ncid,varid(11),'long_name','wind input source term normalised by Ef')
5031  iret=nf90_put_att(ncid,varid(11),'standard_name','inverse_time_scales_wind_input_source_term')
5032  iret=nf90_put_att(ncid,varid(11),'globwave_name','inverse_time_scales_wind_input_source_term')
5033  iret=nf90_put_att(ncid,varid(11),'units','m2')
5034  ELSE
5035  iret=nf90_def_var(ncid, 'tinist', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(11))
5036  iret=nf90_put_att(ncid,varid(11),'long_name','nondimensionalized using wind input source term normalised by Ef')
5037  iret=nf90_put_att(ncid,varid(11),'standard_name','inverse_time_scales_wind_input_source_term')
5038  iret=nf90_put_att(ncid,varid(11),'globwave_name','inverse_time_scales_wind_input_source_term')
5039  iret=nf90_put_att(ncid,varid(11),'units','-')
5040  END IF
5041  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
5042  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
5043  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
5044  iret=nf90_put_att(ncid,varid(11),'valid_min',-1.)
5045  iret=nf90_put_att(ncid,varid(11),'valid_max',1.)
5046  iret=nf90_put_att(ncid,varid(11),'_FillValue', nf90_fill_float)
5047  iret=nf90_put_att(ncid,varid(11),'content','TXY')
5048  IF (iscale.EQ.0) THEN
5049  iret=nf90_put_att(ncid,varid(11),'associates','time station frequency')
5050  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
5051  iret=nf90_put_att(ncid,varid(11),'associates','time station frequencyst')
5052  ELSE
5053  iret=nf90_put_att(ncid,varid(11),'associates','time station ffp')
5054  END IF
5055 
5056 
5057  !Tnli / Tnlist
5058  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
5059  iret=nf90_def_var(ncid, 'tnli', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(12))
5060  iret=nf90_put_att(ncid,varid(12),'long_name','nonlinear 4 wave source term normalised by Ef')
5061  iret=nf90_put_att(ncid,varid(12),'standard_name','inverse_time_scales_nonlinear_4_wave_source_term')
5062  iret=nf90_put_att(ncid,varid(12),'globwave_name','inverse_time_scales_nonlinear_4_wave_source_term')
5063  iret=nf90_put_att(ncid,varid(12),'units','m2')
5064  ELSE
5065  iret=nf90_def_var(ncid, 'tnlist', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(12))
5066  iret=nf90_put_att(ncid,varid(12),'long_name','nondimensionalized using nonlinear 4 wave source term normalised by Ef')
5067  iret=nf90_put_att(ncid,varid(12),'standard_name','inverse_time_scales_nonlinear_4_wave_source_term')
5068  iret=nf90_put_att(ncid,varid(12),'globwave_name','inverse_time_scales_nonlinear_4_wave_source_term')
5069  iret=nf90_put_att(ncid,varid(12),'units','-')
5070  END IF
5071  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
5072  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
5073  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
5074  iret=nf90_put_att(ncid,varid(12),'valid_min',-1.)
5075  iret=nf90_put_att(ncid,varid(12),'valid_max',1.)
5076  iret=nf90_put_att(ncid,varid(12),'_FillValue', nf90_fill_float)
5077  iret=nf90_put_att(ncid,varid(12),'content','TXY')
5078  IF (iscale.EQ.0) THEN
5079  iret=nf90_put_att(ncid,varid(12),'associates','time station frequency')
5080  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
5081  iret=nf90_put_att(ncid,varid(12),'associates','time station frequencyst')
5082  ELSE
5083  iret=nf90_put_att(ncid,varid(12),'associates','time station ffp')
5084  END IF
5085 
5086 
5087  !Tdsi / Tdsist
5088  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
5089  iret=nf90_def_var(ncid, 'tdsi', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(13))
5090  iret=nf90_put_att(ncid,varid(13),'long_name','wave breaking source term normalised by Ef')
5091  iret=nf90_put_att(ncid,varid(13),'standard_name','inverse_time_scales_wave_breaking_source_term')
5092  iret=nf90_put_att(ncid,varid(13),'globwave_name','inverse_time_scales_wave_breaking_source_term')
5093  iret=nf90_put_att(ncid,varid(13),'units','m2')
5094  ELSE
5095  iret=nf90_def_var(ncid, 'tdsist', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(13))
5096  iret=nf90_put_att(ncid,varid(13),'long_name','nondimensionalized using wave breaking source term normalised by Ef')
5097  iret=nf90_put_att(ncid,varid(13),'standard_name','inverse_time_scales_wave_breaking_source_term')
5098  iret=nf90_put_att(ncid,varid(13),'globwave_name','inverse_time_scales_wave_breaking_source_term')
5099  iret=nf90_put_att(ncid,varid(13),'units','-')
5100  END IF
5101  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
5102  iret=nf90_put_att(ncid,varid(13),'scale_factor',1.)
5103  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
5104  iret=nf90_put_att(ncid,varid(13),'valid_min',-1.)
5105  iret=nf90_put_att(ncid,varid(13),'valid_max',1.)
5106  iret=nf90_put_att(ncid,varid(13),'_FillValue', nf90_fill_float)
5107  iret=nf90_put_att(ncid,varid(13),'content','TXY')
5108  IF (iscale.EQ.0) THEN
5109  iret=nf90_put_att(ncid,varid(13),'associates','time station frequency')
5110  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
5111  iret=nf90_put_att(ncid,varid(13),'associates','time station frequencyst')
5112  ELSE
5113  iret=nf90_put_att(ncid,varid(13),'associates','time station ffp')
5114  END IF
5115 
5116  !Tbti / Tbtist
5117  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
5118  iret=nf90_def_var(ncid, 'tbti', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(14))
5119  iret=nf90_put_att(ncid,varid(14),'long_name','depth induced breaking source term normalised by Ef')
5120  iret=nf90_put_att(ncid,varid(14),'standard_name','inverse_time_scales_depth_induced_breaking_source_term')
5121  iret=nf90_put_att(ncid,varid(14),'globwave_name','inverse_time_scales_depth_induced_breaking_source_term')
5122  iret=nf90_put_att(ncid,varid(14),'units','m2')
5123  ELSE
5124  iret=nf90_def_var(ncid, 'tbtist', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(14))
5125  iret=nf90_put_att(ncid,varid(14),'long_name','nondimensionalized using depth induced breaking source term &
5126  normalised by Ef')
5127  iret=nf90_put_att(ncid,varid(14),'standard_name','inverse_time_scales_depth_induced_breaking_source_term')
5128  iret=nf90_put_att(ncid,varid(14),'globwave_name','inverse_time_scales_depth_induced_breaking_source_term')
5129  iret=nf90_put_att(ncid,varid(14),'units','-')
5130  END IF
5131  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(14), 1, 1, deflate)
5132  iret=nf90_put_att(ncid,varid(14),'scale_factor',1.)
5133  iret=nf90_put_att(ncid,varid(14),'add_offset',0.)
5134  iret=nf90_put_att(ncid,varid(14),'valid_min',-1.)
5135  iret=nf90_put_att(ncid,varid(14),'valid_max',1.)
5136  iret=nf90_put_att(ncid,varid(14),'_FillValue', nf90_fill_float)
5137  iret=nf90_put_att(ncid,varid(14),'content','TXY')
5138  IF (iscale.EQ.0) THEN
5139  iret=nf90_put_att(ncid,varid(14),'associates','time station frequency')
5140  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
5141  iret=nf90_put_att(ncid,varid(14),'associates','time station frequencyst')
5142  ELSE
5143  iret=nf90_put_att(ncid,varid(14),'associates','time station ffp')
5144  END IF
5145 
5146  !Ticei / Ticeist
5147  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
5148  iret=nf90_def_var(ncid, 'ticei', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(15))
5149  iret=nf90_put_att(ncid,varid(15),'long_name','wave ice interactions source term normalised by Ef')
5150  iret=nf90_put_att(ncid,varid(15),'standard_name','inverse_time_scales_wave_ice_interactions_source_term')
5151  iret=nf90_put_att(ncid,varid(15),'globwave_name','inverse_time_scales_wave_ice_interactions_source_term')
5152  iret=nf90_put_att(ncid,varid(15),'units','m2')
5153  ELSE
5154  iret=nf90_def_var(ncid, 'ticeist', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(15))
5155  iret=nf90_put_att(ncid,varid(15),'long_name','nondimensionalized using wave ice interactions source term &
5156  normalised by Ef')
5157  iret=nf90_put_att(ncid,varid(15),'standard_name','inverse_time_scales_wave_ice_interactions_source_term')
5158  iret=nf90_put_att(ncid,varid(15),'globwave_name','inverse_time_scales_wave_ice_interactions_source_term')
5159  iret=nf90_put_att(ncid,varid(15),'units','-')
5160  END IF
5161  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(15), 1, 1, deflate)
5162  iret=nf90_put_att(ncid,varid(15),'scale_factor',1.)
5163  iret=nf90_put_att(ncid,varid(15),'add_offset',0.)
5164  iret=nf90_put_att(ncid,varid(15),'valid_min',-1.)
5165  iret=nf90_put_att(ncid,varid(15),'valid_max',1.)
5166  iret=nf90_put_att(ncid,varid(15),'_FillValue', nf90_fill_float)
5167  iret=nf90_put_att(ncid,varid(15),'content','TXY')
5168  IF (iscale.EQ.0) THEN
5169  iret=nf90_put_att(ncid,varid(15),'associates','time station frequency')
5170  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
5171  iret=nf90_put_att(ncid,varid(15),'associates','time station frequencyst')
5172  ELSE
5173  iret=nf90_put_att(ncid,varid(15),'associates','time station ffp')
5174  END IF
5175 
5176  !Ttoti / Ttotist
5177  IF (iscale.EQ.0 .OR. iscale.EQ.3) THEN
5178  iret=nf90_def_var(ncid, 'ttoti', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(16))
5179  iret=nf90_put_att(ncid,varid(16),'long_name','total source term normalised by Ef')
5180  iret=nf90_put_att(ncid,varid(16),'standard_name','inverse_time_scales_total_source_term')
5181  iret=nf90_put_att(ncid,varid(16),'globwave_name','inverse_time_scales_total_source_term')
5182  iret=nf90_put_att(ncid,varid(16),'units','m2')
5183  ELSE
5184  iret=nf90_def_var(ncid, 'ttotist', nf90_float,(/dimid(4),dimid(two),dimid(one)/), varid(16))
5185  iret=nf90_put_att(ncid,varid(16),'long_name','nondimensionalized using total source term normalised by Ef')
5186  iret=nf90_put_att(ncid,varid(16),'standard_name','inverse_time_scales_total_source_term')
5187  iret=nf90_put_att(ncid,varid(16),'globwave_name','inverse_time_scales_total_source_term')
5188  iret=nf90_put_att(ncid,varid(16),'units','-')
5189  END IF
5190  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(16), 1, 1, deflate)
5191  iret=nf90_put_att(ncid,varid(16),'scale_factor',1.)
5192  iret=nf90_put_att(ncid,varid(16),'add_offset',0.)
5193  iret=nf90_put_att(ncid,varid(16),'valid_min',-1.)
5194  iret=nf90_put_att(ncid,varid(16),'valid_max',1.)
5195  iret=nf90_put_att(ncid,varid(16),'_FillValue', nf90_fill_float)
5196  iret=nf90_put_att(ncid,varid(16),'content','TXY')
5197  IF (iscale.EQ.0) THEN
5198  iret=nf90_put_att(ncid,varid(16),'associates','time station frequency')
5199  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.2 ) THEN
5200  iret=nf90_put_att(ncid,varid(16),'associates','time station frequencyst')
5201  ELSE
5202  iret=nf90_put_att(ncid,varid(16),'associates','time station ffp')
5203  END IF
5204 
5205  ! Add values in netCDF file
5206  iret=nf90_enddef(ncid)
5207  CALL check_err(iret,65)
5208  iret=nf90_put_var(ncid,varid(6),freq(1:nk))
5209  CALL check_err(iret,66)
5210 
5211 
5212  !
5213  ! ... ITYPE = 3 AND OTYPE = 4
5214  !
5215  ELSE IF (itype.EQ.3 .AND. otype.EQ.4) THEN
5216  !
5217  ! Define specifics dimensions
5218  !
5219  iret = nf90_def_dim(ncid, 'frequency', dimln(4), dimid(4))
5220  iret = nf90_def_dim(ncid, 'direction', dimln(5), dimid(5))
5221  CALL check_err(iret,67)
5222 
5223  !
5224  ! define specifics variables
5225  !
5226 
5227  !frequency
5228  iret=nf90_def_var(ncid, 'frequency', nf90_float, (/dimid(4)/), varid(6))
5229  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(6), 1, 1, deflate)
5230  iret=nf90_put_att(ncid,varid(6),'long_name','frequency of center band')
5231  iret=nf90_put_att(ncid,varid(6),'standard_name','sea_surface_wave_frequency')
5232  iret=nf90_put_att(ncid,varid(6),'globwave_name','frequency')
5233  iret=nf90_put_att(ncid,varid(6),'units','s-1')
5234  iret=nf90_put_att(ncid,varid(6),'scale_factor',1.)
5235  iret=nf90_put_att(ncid,varid(6),'add_offset',0.)
5236  iret=nf90_put_att(ncid,varid(6),'valid_min',0.)
5237  iret=nf90_put_att(ncid,varid(6),'valid_max',10.)
5238  iret=nf90_put_att(ncid,varid(6),'_FillValue',nf90_fill_float)
5239  iret=nf90_put_att(ncid,varid(6),'axis','Y')
5240 
5241  !frequency1
5242  iret=nf90_def_var(ncid, 'frequency1', nf90_float, (/dimid(4)/), varid(7))
5243  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(7), 1, 1, deflate)
5244  iret=nf90_put_att(ncid,varid(7),'long_name','frequency of lower band')
5245  iret=nf90_put_att(ncid,varid(7),'standard_name','frequency_of_lower_band')
5246  iret=nf90_put_att(ncid,varid(7),'globwave_name','frequency_lower_band')
5247  iret=nf90_put_att(ncid,varid(7),'units','s-1')
5248  iret=nf90_put_att(ncid,varid(7),'scale_factor',1.)
5249  iret=nf90_put_att(ncid,varid(7),'add_offset',0.)
5250  iret=nf90_put_att(ncid,varid(7),'valid_min',0.)
5251  iret=nf90_put_att(ncid,varid(7),'valid_max',10.)
5252  iret=nf90_put_att(ncid,varid(7),'_FillValue',nf90_fill_float)
5253  iret=nf90_put_att(ncid,varid(7),'content','Y')
5254  iret=nf90_put_att(ncid,varid(7),'associates','frequency')
5255 
5256  !frequency2
5257  iret=nf90_def_var(ncid, 'frequency2', nf90_float, (/dimid(4)/), varid(8))
5258  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(8), 1, 1, deflate)
5259  iret=nf90_put_att(ncid,varid(8),'long_name','frequency of upper band')
5260  iret=nf90_put_att(ncid,varid(8),'standard_name','frequency_of_upper_band')
5261  iret=nf90_put_att(ncid,varid(8),'globwave_name','frequency_upper_band')
5262  iret=nf90_put_att(ncid,varid(8),'units','s-1')
5263  iret=nf90_put_att(ncid,varid(8),'scale_factor',1.)
5264  iret=nf90_put_att(ncid,varid(8),'add_offset',0.)
5265  iret=nf90_put_att(ncid,varid(8),'valid_min',0.)
5266  iret=nf90_put_att(ncid,varid(8),'valid_max',10.)
5267  iret=nf90_put_att(ncid,varid(8),'_FillValue',nf90_fill_float)
5268  iret=nf90_put_att(ncid,varid(8),'content','Y')
5269  iret=nf90_put_att(ncid,varid(8),'associates','frequency')
5270 
5271 
5272  !direction
5273  iret=nf90_def_var(ncid, 'direction', nf90_float, (/dimid(5)/), varid(9))
5274  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(9), 1, 1, deflate)
5275  iret=nf90_put_att(ncid,varid(9),'long_name','sea surface wave to direction')
5276  iret=nf90_put_att(ncid,varid(9),'standard_name','sea_surface_wave_to_direction')
5277  iret=nf90_put_att(ncid,varid(9),'globwave_name','direction')
5278  iret=nf90_put_att(ncid,varid(9),'units','degree')
5279  iret=nf90_put_att(ncid,varid(9),'scale_factor',1.)
5280  iret=nf90_put_att(ncid,varid(9),'add_offset',0.)
5281  iret=nf90_put_att(ncid,varid(9),'valid_min',0.)
5282  iret=nf90_put_att(ncid,varid(9),'valid_max',360.)
5283  iret=nf90_put_att(ncid,varid(9),'_FillValue',nf90_fill_float)
5284  iret=nf90_put_att(ncid,varid(9),'axis','Z')
5285 #ifdef W3_RTD
5286  IF ( flagunr ) THEN
5287  iret=nf90_put_att(ncid,varid(9),'direction_reference','True North')
5288  ELSE
5289  iret=nf90_put_att(ncid,varid(9),'direction_reference','Rotated Pole Grid North')
5290  END IF
5291 #endif
5292 
5293  !d
5294  iret=nf90_def_var(ncid, 'dpt', nf90_float, (/ dimid(two),dimid(one) /), varid(10))
5295  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(10), 1, 1, deflate)
5296  iret=nf90_put_att(ncid,varid(10),'long_name','depth')
5297  iret=nf90_put_att(ncid,varid(10),'standard_name','depth')
5298  iret=nf90_put_att(ncid,varid(10),'globwave_name','depth')
5299  iret=nf90_put_att(ncid,varid(10),'units','m')
5300  iret=nf90_put_att(ncid,varid(10),'scale_factor',1.)
5301  iret=nf90_put_att(ncid,varid(10),'add_offset',0.)
5302  iret=nf90_put_att(ncid,varid(10),'valid_min',-100.)
5303  iret=nf90_put_att(ncid,varid(10),'valid_max',10000.)
5304  iret=nf90_put_att(ncid,varid(10),'_FillValue',nf90_fill_float)
5305  iret=nf90_put_att(ncid,varid(10),'content','TX')
5306  iret=nf90_put_att(ncid,varid(10),'associates','time station')
5307 
5308  !U10
5309  iret=nf90_def_var(ncid, 'wnd', nf90_float, (/ dimid(two),dimid(one) /), varid(11))
5310  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(11), 1, 1, deflate)
5311  iret=nf90_put_att(ncid,varid(11),'long_name','wind speed at 10m')
5312  iret=nf90_put_att(ncid,varid(11),'standard_name','wind_speed')
5313  iret=nf90_put_att(ncid,varid(11),'globwave_name','wind_speed')
5314  iret=nf90_put_att(ncid,varid(11),'units','m s-1')
5315  iret=nf90_put_att(ncid,varid(11),'scale_factor',1.)
5316  iret=nf90_put_att(ncid,varid(11),'add_offset',0.)
5317  iret=nf90_put_att(ncid,varid(11),'valid_min',0.)
5318  iret=nf90_put_att(ncid,varid(11),'valid_max',100.)
5319  iret=nf90_put_att(ncid,varid(11),'_FillValue',nf90_fill_float)
5320  iret=nf90_put_att(ncid,varid(11),'content','TX')
5321  iret=nf90_put_att(ncid,varid(11),'associates','time station')
5322  !Dir
5323  iret=nf90_def_var(ncid, 'wnddir', nf90_float, (/ dimid(two),dimid(one) /), varid(12))
5324  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(12), 1, 1, deflate)
5325  iret=nf90_put_att(ncid,varid(12),'long_name','wind direction')
5326  iret=nf90_put_att(ncid,varid(12),'standard_name','wind_from_direction')
5327  iret=nf90_put_att(ncid,varid(12),'standard_name','wind_from_direction')
5328  iret=nf90_put_att(ncid,varid(12),'units','degree')
5329  iret=nf90_put_att(ncid,varid(12),'scale_factor',1.)
5330  iret=nf90_put_att(ncid,varid(12),'add_offset',0.)
5331  iret=nf90_put_att(ncid,varid(12),'valid_min',0.)
5332  iret=nf90_put_att(ncid,varid(12),'valid_max',360.)
5333  iret=nf90_put_att(ncid,varid(12),'_FillValue',nf90_fill_float)
5334  iret=nf90_put_att(ncid,varid(12),'content','TX')
5335  iret=nf90_put_att(ncid,varid(12),'associates','time station')
5336 #ifdef W3_RTD
5337  IF ( flagunr ) THEN
5338  iret=nf90_put_att(ncid,varid(12),'direction_reference','True North')
5339  ELSE
5340  iret=nf90_put_att(ncid,varid(12),'direction_reference','Rotated Pole Grid North')
5341  END IF
5342 #endif
5343 
5344  !Uc
5345  iret=nf90_def_var(ncid, 'cur', nf90_float, (/ dimid(two),dimid(one) /), varid(13))
5346  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(13), 1, 1, deflate)
5347  iret=nf90_put_att(ncid,varid(13),'long_name','sea water speed')
5348  iret=nf90_put_att(ncid,varid(13),'standard_name','sea_water_speed')
5349  iret=nf90_put_att(ncid,varid(13),'globwave_name','sea_water_speed')
5350  iret=nf90_put_att(ncid,varid(13),'units','m s-1')
5351  iret=nf90_put_att(ncid,varid(13),'scale_factor',1.)
5352  iret=nf90_put_att(ncid,varid(13),'add_offset',0.)
5353  iret=nf90_put_att(ncid,varid(13),'valid_min',0.)
5354  iret=nf90_put_att(ncid,varid(13),'valid_max',100.)
5355  iret=nf90_put_att(ncid,varid(13),'_FillValue',nf90_fill_float)
5356  iret=nf90_put_att(ncid,varid(13),'content','TX')
5357  iret=nf90_put_att(ncid,varid(13),'associates','time station')
5358 
5359  !Dir
5360  iret=nf90_def_var(ncid, 'curdir', nf90_float, (/ dimid(two),dimid(one) /), varid(14))
5361  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(14), 1, 1, deflate)
5362  iret=nf90_put_att(ncid,varid(14),'long_name','direction from of sea water velocity')
5363  iret=nf90_put_att(ncid,varid(14),'standard_name','direction_of_sea_water_velocity')
5364  iret=nf90_put_att(ncid,varid(14),'globwave_name','direction_of_sea_water_velocity')
5365  iret=nf90_put_att(ncid,varid(14),'units','degree')
5366  iret=nf90_put_att(ncid,varid(14),'scale_factor',1.)
5367  iret=nf90_put_att(ncid,varid(14),'add_offset',0.)
5368  iret=nf90_put_att(ncid,varid(14),'valid_min',0.)
5369  iret=nf90_put_att(ncid,varid(14),'valid_max',360.)
5370  iret=nf90_put_att(ncid,varid(14),'_FillValue',nf90_fill_float)
5371  iret=nf90_put_att(ncid,varid(14),'content','TX')
5372  iret=nf90_put_att(ncid,varid(14),'associates','time station')
5373 #ifdef W3_RTD
5374  IF ( flagunr ) THEN
5375  iret=nf90_put_att(ncid,varid(14),'direction_reference','True North')
5376  ELSE
5377  iret=nf90_put_att(ncid,varid(14),'direction_reference','Rotated Pole Grid North')
5378  END IF
5379 #endif
5380 
5381  !Ust
5382  iret=nf90_def_var(ncid, 'ust', nf90_float, (/ dimid(two),dimid(one) /), varid(15))
5383  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(15), 1, 1, deflate)
5384  iret=nf90_put_att(ncid,varid(15),'long_name','friction velocity')
5385  iret=nf90_put_att(ncid,varid(15),'standard_name','friction_velocity')
5386  iret=nf90_put_att(ncid,varid(15),'globwave_name','friction_velocity')
5387  iret=nf90_put_att(ncid,varid(15),'units','m s-1')
5388  iret=nf90_put_att(ncid,varid(15),'scale_factor',1.)
5389  iret=nf90_put_att(ncid,varid(15),'add_offset',0.)
5390  iret=nf90_put_att(ncid,varid(15),'valid_min',0.)
5391  iret=nf90_put_att(ncid,varid(15),'valid_max',100.)
5392  iret=nf90_put_att(ncid,varid(15),'_FillValue',nf90_fill_float)
5393  iret=nf90_put_att(ncid,varid(15),'content','TX')
5394  iret=nf90_put_att(ncid,varid(15),'associates','time station')
5395 
5396  !Efth
5397  IF ( PRESENT(flsrce) ) THEN
5398  IF ( flsrce(1) ) THEN
5399  iret=nf90_def_var(ncid,'efth',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(16))
5400  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(16), 1, 1, deflate)
5401  iret=nf90_put_att(ncid,varid(16),'long_name',&
5402  'sea surface wave directional variance spectral density')
5403  iret=nf90_put_att(ncid,varid(16),'standard_name',&
5404  'sea_surface_wave_directional_variance_spectral_density')
5405  iret=nf90_put_att(ncid,varid(16),'globwave_name','directional_variance_spectral_density')
5406  iret=nf90_put_att(ncid,varid(16),'units','m2 s rad-1')
5407  iret=nf90_put_att(ncid,varid(16),'scale_factor',1.)
5408  iret=nf90_put_att(ncid,varid(16),'add_offset',0.)
5409  iret=nf90_put_att(ncid,varid(16),'valid_min',0.)
5410  iret=nf90_put_att(ncid,varid(16),'valid_max',1.e20)
5411  iret=nf90_put_att(ncid,varid(16),'_FillValue',nf90_fill_float)
5412  iret=nf90_put_att(ncid,varid(16),'content','TXYZ')
5413  iret=nf90_put_att(ncid,varid(16),'associates','time station frequency direction')
5414 #ifdef W3_RTD
5415  IF ( flagunr ) THEN
5416  iret=nf90_put_att(ncid,varid(16),'direction_reference','True North')
5417  ELSE
5418  iret=nf90_put_att(ncid,varid(16),'direction_reference','Rotated Pole Grid North')
5419  END IF
5420 #endif
5421  ENDIF
5422 
5423  !Swn
5424  IF ( flsrce(2) ) THEN
5425  iret=nf90_def_var(ncid,'sin',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(17))
5426  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(17), 1, 1, deflate)
5427  iret=nf90_put_att(ncid,varid(17),'long_name','wind input source term')
5428  iret=nf90_put_att(ncid,varid(17),'standard_name','wind_input_source_term')
5429  iret=nf90_put_att(ncid,varid(17),'globwave_name','wind_input_source_term')
5430  iret=nf90_put_att(ncid,varid(17),'units','m2 rad-1')
5431  iret=nf90_put_att(ncid,varid(17),'scale_factor',1.)
5432  iret=nf90_put_att(ncid,varid(17),'add_offset',0.)
5433  iret=nf90_put_att(ncid,varid(17),'valid_min',-1.)
5434  iret=nf90_put_att(ncid,varid(17),'valid_max',1.)
5435  iret=nf90_put_att(ncid,varid(17),'_FillValue',nf90_fill_float)
5436  iret=nf90_put_att(ncid,varid(17),'content','TXYZ')
5437  iret=nf90_put_att(ncid,varid(17),'associates','time station frequency direction')
5438 #ifdef W3_RTD
5439  iret=nf90_put_att(ncid,varid(17),'direction_reference','Rotated Pole Grid North')
5440 #endif
5441  ENDIF
5442 
5443  !Snl
5444  IF ( flsrce(3) ) THEN
5445  iret=nf90_def_var(ncid,'snl',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(18))
5446  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(18), 1, 1, deflate)
5447  iret=nf90_put_att(ncid,varid(18),'long_name','nonlinear 4 wave source term')
5448  iret=nf90_put_att(ncid,varid(18),'standard_name','nonlinear_4_wave_source_term')
5449  iret=nf90_put_att(ncid,varid(18),'globwave_name','nonlinear_4_wave_source_term')
5450  iret=nf90_put_att(ncid,varid(18),'units','m2 rad-1')
5451  iret=nf90_put_att(ncid,varid(18),'scale_factor',1.)
5452  iret=nf90_put_att(ncid,varid(18),'add_offset',0.)
5453  iret=nf90_put_att(ncid,varid(18),'valid_min',-1.)
5454  iret=nf90_put_att(ncid,varid(18),'valid_max',1.)
5455  iret=nf90_put_att(ncid,varid(18),'_FillValue',nf90_fill_float)
5456  iret=nf90_put_att(ncid,varid(18),'content','TXYZ')
5457  iret=nf90_put_att(ncid,varid(18),'associates','time station frequency direction')
5458 #ifdef W3_RTD
5459  iret=nf90_put_att(ncid,varid(18),'direction_reference','Rotated Pole Grid North')
5460 #endif
5461  ENDIF
5462 
5463  !Sds
5464  IF ( flsrce(4) ) THEN
5465  iret=nf90_def_var(ncid,'sds',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(19))
5466  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(19), 1, 1, deflate)
5467  iret=nf90_put_att(ncid,varid(19),'long_name','wave breaking source term')
5468  iret=nf90_put_att(ncid,varid(19),'standard_name','wave_breaking_source_term')
5469  iret=nf90_put_att(ncid,varid(19),'globwave_name','wave_breaking_source_term')
5470  iret=nf90_put_att(ncid,varid(19),'units','m2 rad-1')
5471  iret=nf90_put_att(ncid,varid(19),'scale_factor',1.)
5472  iret=nf90_put_att(ncid,varid(19),'add_offset',0.)
5473  iret=nf90_put_att(ncid,varid(19),'valid_min',-1.)
5474  iret=nf90_put_att(ncid,varid(19),'valid_max',1.)
5475  iret=nf90_put_att(ncid,varid(19),'_FillValue',nf90_fill_float)
5476  iret=nf90_put_att(ncid,varid(19),'content','TXYZ')
5477  iret=nf90_put_att(ncid,varid(19),'associates','time station frequency direction')
5478 #ifdef W3_RTD
5479  iret=nf90_put_att(ncid,varid(19),'direction_reference','Rotated Pole Grid North')
5480 #endif
5481  ENDIF
5482 
5483  !Sbt
5484  IF ( flsrce(5) ) THEN
5485  iret=nf90_def_var(ncid,'sbt',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(20))
5486  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(20), 1, 1, deflate)
5487  iret=nf90_put_att(ncid,varid(20),'long_name','depth induced breaking source term')
5488  iret=nf90_put_att(ncid,varid(20),'standard_name','depth_induced_breaking_source_term')
5489  iret=nf90_put_att(ncid,varid(20),'globwave_name','depth_induced_breaking_source_term')
5490  iret=nf90_put_att(ncid,varid(20),'units','m2 rad-1')
5491  iret=nf90_put_att(ncid,varid(20),'scale_factor',1.)
5492  iret=nf90_put_att(ncid,varid(20),'add_offset',0.)
5493  iret=nf90_put_att(ncid,varid(20),'valid_min',-1.)
5494  iret=nf90_put_att(ncid,varid(20),'valid_max',1.)
5495  iret=nf90_put_att(ncid,varid(20),'_FillValue',nf90_fill_float)
5496  iret=nf90_put_att(ncid,varid(20),'content','TXYZ')
5497  iret=nf90_put_att(ncid,varid(20),'associates','time station frequency direction')
5498 #ifdef W3_RTD
5499  iret=nf90_put_att(ncid,varid(20),'direction_reference','Rotated Pole Grid North')
5500 #endif
5501  ENDIF
5502 
5503  !Sice
5504  IF ( flsrce(6) ) THEN
5505  iret=nf90_def_var(ncid,'sice',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(21))
5506  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(21), 1, 1, deflate)
5507  iret=nf90_put_att(ncid,varid(21),'long_name','wave-ice interactions source term')
5508  iret=nf90_put_att(ncid,varid(21),'standard_name','wave_ice_intercations_source_term')
5509  iret=nf90_put_att(ncid,varid(21),'globwave_name','wave_ice_intercations_source_term')
5510  iret=nf90_put_att(ncid,varid(21),'units','m2 rad-1')
5511  iret=nf90_put_att(ncid,varid(21),'scale_factor',1.)
5512  iret=nf90_put_att(ncid,varid(21),'add_offset',0.)
5513  iret=nf90_put_att(ncid,varid(21),'valid_min',-1.)
5514  iret=nf90_put_att(ncid,varid(21),'valid_max',1.)
5515  iret=nf90_put_att(ncid,varid(21),'_FillValue',nf90_fill_float)
5516  iret=nf90_put_att(ncid,varid(21),'content','TXYZ')
5517  iret=nf90_put_att(ncid,varid(21),'associates','time station frequency direction')
5518 #ifdef W3_RTD
5519  iret=nf90_put_att(ncid,varid(21),'direction_reference','Rotated Pole Grid North')
5520 #endif
5521  ENDIF
5522 
5523  !Stt
5524  IF ( flsrce(7) ) THEN
5525  iret=nf90_def_var(ncid,'stt',nf90_float,(/dimid(5),dimid(4),dimid(two),dimid(one)/),varid(22))
5526  IF (nctype.EQ.4) iret=nf90_def_var_deflate(ncid, varid(22), 1, 1, deflate)
5527  iret=nf90_put_att(ncid,varid(22),'long_name','total source term')
5528  iret=nf90_put_att(ncid,varid(22),'standard_name','total_source_term')
5529  iret=nf90_put_att(ncid,varid(22),'globwave_name','total_source_term')
5530  iret=nf90_put_att(ncid,varid(22),'units','m2 rad-1')
5531  iret=nf90_put_att(ncid,varid(22),'scale_factor',1.)
5532  iret=nf90_put_att(ncid,varid(22),'add_offset',0.)
5533  iret=nf90_put_att(ncid,varid(22),'valid_min',-1.)
5534  iret=nf90_put_att(ncid,varid(22),'valid_max',1.)
5535  iret=nf90_put_att(ncid,varid(22),'_FillValue',nf90_fill_float)
5536  iret=nf90_put_att(ncid,varid(22),'content','TXYZ')
5537  iret=nf90_put_att(ncid,varid(22),'associates','time station frequency direction')
5538 #ifdef W3_RTD
5539  iret=nf90_put_att(ncid,varid(22),'direction_reference','Rotated Pole Grid North')
5540 #endif
5541  ENDIF
5542  ENDIF
5543 
5544  ! Add values in netCDF file
5545  iret=nf90_enddef(ncid)
5546  CALL check_err(iret,68)
5547  iret=nf90_put_var(ncid,varid(6),freq(1:nk))
5548  CALL check_err(iret,69)
5549  iret=nf90_put_var(ncid,varid(7),freq1(1:nk))
5550  CALL check_err(iret,70)
5551  iret=nf90_put_var(ncid,varid(8),freq2(1:nk))
5552  CALL check_err(iret,71)
5553  iret=nf90_put_var(ncid,varid(9),dir(1:nth))
5554  CALL check_err(iret,72)
5555  !
5556  END IF
5557  !
5558  RETURN
5559 

References check_err(), w3gdatmd::flagll, w3gdatmd::flagunr, w3gdatmd::nk, w3gdatmd::nth, w3gdatmd::sig, constants::tpiinv, and w3gdatmd::xfr.

◆ w3exnc()

subroutine w3ounp::w3exnc ( integer, intent(in)  I,
integer, intent(in)  NCID,
integer, intent(in)  NREQ,
integer, dimension(nreq), intent(in)  INDREQ,
logical, intent(in)  ORDER 
)

Perform actual point output.

Spectra are relative frequency energy spectra. Note that arrays CX and CY of the main program now contain the absolute sea water speed and direction respectively.

Parameters
[in]I
[in]NCID
[in]NREQ
[in]INDREQ
[in]ORDER
Author
F. Ardhuin
M. Accensi
Date
14-Mar-2013

Definition at line 1452 of file ww3_ounp.F90.

1452  !/
1453  !/ +-----------------------------------+
1454  !/ | WAVEWATCH III NOAA/NCEP |
1455  !/ | F. Ardhuin |
1456  !/ | M. Accensi |
1457  !/ | FORTRAN 90 |
1458  !/ | Last update : 14-Mar-2013 |
1459  !/ +-----------------------------------+
1460  !/
1461  !/ 01-Apr-2011 : Creation ( version 3.14 )
1462  !/ 14-Mar-2013 : Optimization and cleanup ( version 4.10 )
1463  !/
1464  ! 1. Purpose :
1465  !
1466  ! Perform actual point output.
1467  !
1468  ! 3. Parameters :
1469  !
1470  ! 4. Subroutines used :
1471  !
1472  ! Name Type Module Description
1473  ! ----------------------------------------------------------------
1474  ! W3SPRn Subr. W3SRCnMD Mean wave parameters for use in
1475  ! source terms.
1476  ! W3FLXn Subr. W3FLXnMD Flux/stress computation.
1477  ! W3SLNn Subr. W3SLNnMD Linear input.
1478  ! W3SINn Subr. W3SRCnMD Input source term.
1479  ! W3SDSn Subr. W3SRCnMD Whitecapping source term
1480  ! W3SNLn Subr. W3SNLnMD Nonlinear interactions.
1481  ! W3SBTn Subr. W3SBTnMD Bottom friction source term.
1482  ! W3SDBn Subr. W3SBTnMD Depth induced breaking source term.
1483  ! W3STRn Subr. W3STRnMD Triad interaction source term.
1484  ! W3SBSn Subr. W3SBSnMD Bottom scattering source term.
1485  ! W3SXXn Subr. W3SXXnMD Unclassified source term.
1486  ! W3PART Sunr. W3PARTMD Spectral partitioning routine.
1487  ! STRACE Subr. W3SERVMD Subroutine tracing.
1488  ! STME21 Subr. W3TIMEMD Convert time to string.
1489  ! PRT1DS Subr. W3ARRYMD Print plot of 1-D spectrum.
1490  ! PRT1DM Subr. Id. Print plot of several 1-D spectra.
1491  ! PRT2DS Subr. Id. Print plot of 2-D spectrum.
1492  ! WAVNU1 Subr. W3DISPMD Solve dispersion relation.
1493  ! ----------------------------------------------------------------
1494  !
1495  ! 5. Called by :
1496  !
1497  ! Main program in which it is contained,
1498  !
1499  ! 6. Error messages :
1500  !
1501  ! None.
1502  !
1503  ! 7. Remarks :
1504  !
1505  ! - Spectra are relative frequency energy spectra.
1506  ! - Note that arrays CX and CY of the main program now contain
1507  ! the absolute sea water speed and direction respectively.
1508  !
1509  ! 8. Structure :
1510  !
1511  ! See source code.
1512  !
1513  ! 9. Switches :
1514  !
1515  ! !/S Enable subroutine tracing.
1516  ! !/T Enable test output.
1517  !
1518  ! !/FLXx Flux/stress computation.
1519  ! !/LNx Linear input package
1520  ! !/STx Source term package
1521  ! !/NLx Nonlinear interaction package
1522  ! !/BTx Bottom friction package
1523  ! !/ICx S_ice source term package
1524  ! !/DBx Depth-induced breaking package
1525  ! !/TRx Triad interaction package
1526  ! !/BSx Bottom scattering package
1527  !
1528  ! !/STAB2 Stability correction for !/ST2
1529  !
1530  ! 10. Source code :
1531  !
1532  !/ ------------------------------------------------------------------- /
1533 #ifdef W3_FLX1
1534  USE w3flx1md
1535 #endif
1536 #ifdef W3_FLX2
1537  USE w3flx2md
1538 #endif
1539 #ifdef W3_FLX3
1540  USE w3flx3md
1541 #endif
1542 #ifdef W3_FLX4
1543  USE w3flx4md
1544 #endif
1545 #ifdef W3_FLX5
1546  USE w3flx5md
1547 #endif
1548 #ifdef W3_LN1
1549  USE w3sln1md
1550 #endif
1551 #ifdef W3_ST1
1552  USE w3src1md
1553 #endif
1554 #ifdef W3_ST2
1555  USE w3src2md
1556 #endif
1557 #ifdef W3_ST3
1558  USE w3src3md
1559 #endif
1560 #ifdef W3_ST4
1561  USE w3src4md, ONLY : w3spr4, w3sin4, w3sds4
1562 #endif
1563 #ifdef W3_ST6
1564  USE w3src6md
1565  USE w3swldmd, ONLY : w3swl6
1566  USE w3gdatmd, ONLY : swl6s6
1567 #endif
1568 #ifdef W3_NL1
1569  USE w3snl1md
1570  USE w3gdatmd, ONLY: iqtpe
1571 #endif
1572 #ifdef W3_NL2
1573  USE w3snl2md
1574 #endif
1575 #ifdef W3_NL3
1576  USE w3snl3md
1577 #endif
1578 #ifdef W3_NL4
1579  USE w3snl4md
1580 #endif
1581 #ifdef W3_BT1
1582  USE w3sbt1md
1583 #endif
1584 #ifdef W3_BT4
1585  USE w3sbt4md
1586 #endif
1587 #ifdef W3_BT8
1588  USE w3sbt8md
1589 #endif
1590 #ifdef W3_BT9
1591  USE w3sbt9md
1592 #endif
1593 #ifdef W3_DB1
1594  USE w3sdb1md
1595 #endif
1596 #ifdef W3_BS1
1597  USE w3sbs1md
1598 #endif
1599 #ifdef W3_IS2
1600  USE w3sis2md
1601 #endif
1602  USE w3partmd, ONLY: w3part
1604  USE w3gdatmd, ONLY: iicedisp
1605  !/
1606  USE w3arrymd, ONLY: prt1ds, prt2ds, prt1dm
1607  USE w3dispmd, ONLY: nar1d, dfac, n1max, ecg1, ewn1, dsie
1608  USE netcdf
1609 #ifdef W3_IG1
1610  USE w3gig1md, ONLY: w3addig
1611  USE w3canomd, ONLY: w3add2ndorder
1612 #endif
1613 
1614  IMPLICIT NONE
1615 
1616  !/
1617  !/ ------------------------------------------------------------------- /
1618 
1619  INTEGER, INTENT(IN) :: I, NCID, NREQ, INDREQ(NREQ)
1620  LOGICAL, INTENT(IN) :: ORDER
1621 
1622 
1623 
1624  !/ Local parameters
1625  !/
1626  INTEGER :: J, J1, I1, I2, ISP, IKM, &
1627  ITH, IK, ITT, NPART, IX, IY, ISEA
1628  INTEGER :: CURDATE(8), REFDATE(8)
1629 #ifdef W3_S
1630  INTEGER, SAVE :: IENT = 0
1631 #endif
1632  !
1633  REAL :: DEPTH, SQRTH, CDIR, SIX, R1, R2, &
1634  UDIR, UDIRR, UABS, XL, XH, XL2, XH2, &
1635  ET, EWN, ETR, ETX, ETY, EBND, EBX, &
1636  EBY, HSIG, WLEN, TMEAN, THMEAN, &
1637  THSPRD, EMAX, EL, EH, DENOM, FP, THP, &
1638  SPP, CD, USTAR, FACTOR, UNORM, ESTAR, &
1639  FPSTAR, FACF, FACE, FACS, HMAT, WNA, &
1640  XYZ, AGE1, AFR, AGE2, FACT, XSTAR, &
1641  YSTAR, FHIGH, ZWND, Z0, USTD, EMEAN, &
1642  FMEAN, WNMEAN, UDIRCA, CHARN, M2KM, &
1643  ICETHICK, ICECON
1644 #ifdef W3_FLX5
1645  REAL :: TAUA, TAUADIR, RHOAIR
1646 #endif
1647  REAL :: WN_R(NK),CG_ICE(NK), ALPHA_LIU(NK), &
1648  R(NK), WN(NK), CG(NK), APM(NK), &
1649  E3(NTH,NK,NREQ), E(NK,NTH), E1(NK), &
1650  THBND(NK), SPBND(NK), A(NTH,NK), &
1651  WN2(NTH,NK), &
1652  STT(NK,NTH), SWN(NK,NTH), SNL(NK,NTH),&
1653  SDS(NK,NTH), SBT(NK,NTH), SIS(NK,NTH),&
1654  XIN(NTH,NK), XNL(NTH,NK), XTR(NTH,NK),&
1655  XDS(NTH,NK), XDB(NTH,NK), XBT(NTH,NK),&
1656  XBS(NTH,NK), XXX(NTH,NK), DIA(NTH,NK),&
1657  XLN(NTH,NK), XWL(NTH,NK), XIS(NTH,NK),&
1658  SIN1(NK), SNL1(NK), SDS1(NK), &
1659  SBT1(NK), SIS1(NK), STT1(NK), &
1660  E1ALL(NK,6), UDIR1(NREQ), CDIR1(NREQ)
1661 #ifdef W3_FLX5
1662  REAL :: TAUDIR1(NREQ)
1663 #endif
1664  REAL, SAVE :: HSMIN = 0.05
1665 #ifdef W3_IS2
1666  REAL :: ICEF, ICEDMAX, DIA2(NTH,NK)
1667 #endif
1668 #ifdef W3_ST1
1669  REAL :: AMAX, FH1, FH2
1670 #endif
1671 #ifdef W3_ST2
1672  REAL :: AMAX, ALPHA(NK), FPI
1673 #endif
1674 #ifdef W3_ST3
1675  REAL :: AMAX, FMEANS, FMEANWS, TAUWX, TAUWY, &
1676  TAUWNX, TAUWNY
1677 #endif
1678 #ifdef W3_ST4
1679  REAL :: AMAX, FMEANS, FMEANWS, TAUWX, TAUWY, &
1680  TAUWNX, TAUWNY, FMEAN1, WHITECAP(1:4)
1681  REAL :: LAMBDA(NSPEC), DLWMEAN
1682 #endif
1683 #ifdef W3_ST6
1684  REAL :: AMAX, TAUWX, TAUWY, TAUWNX, TAUWNY
1685 #endif
1686 #ifdef W3_BS1
1687  REAL :: TAUSCX, TAUSCY
1688 #endif
1689 #ifdef W3_BT4
1690  REAL :: D50, PSIC, BEDFORM(3), TAUBBL(2)
1691 #endif
1692  REAL :: ICE
1693 #ifdef W3_STAB2
1694  REAL :: STAB0, STAB, COR1, COR2, ASFAC, &
1695  THARG1, THARG2
1696 #endif
1697  !
1698  DOUBLE PRECISION :: OUTJULDAY
1699  !
1700  CHARACTER*4 :: VAR1(6)
1701  !
1702  LOGICAL :: LASTSTATION=.false.
1703  LOGICAL :: SHORT=.true.
1704  LOGICAL :: LBREAK
1705 #ifdef W3_ST3
1706  LOGICAL :: LLWS(NSPEC)
1707 #endif
1708 #ifdef W3_ST4
1709  LOGICAL :: LLWS(NSPEC)
1710 #endif
1711  !
1712  DATA var1 / 'Sin ' , 'Snl ', 'Sds ' , 'Sbt ' , 'Sice', 'Stot' /
1713 
1714 
1715 
1716  !/
1717  !/ ------------------------------------------------------------------- /
1718  !/
1719  ! 1. Initialisations
1720  !
1721 #ifdef W3_S
1722  CALL strace (ient, 'W3EXNC')
1723 #endif
1724  !
1725  IF ( flagll ) THEN
1726  m2km = 1.
1727  ELSE
1728  m2km = 1.e-3
1729  END IF
1730  !
1731  xl = 1./xfr - 1.
1732  xh = xfr - 1.
1733  xl2 = xl**2
1734  xh2 = xh**2
1735  !
1736  IF ( itype .EQ. 3 ) THEN
1737  xln = 0.
1738  xin = 0.
1739  xnl = 0.
1740  xtr = 0.
1741  xds = 0.
1742  xdb = 0.
1743  xbt = 0.
1744  xbs = 0.
1745  xwl = 0.
1746  xis = 0.
1747  xxx = 0.
1748  END IF
1749  !
1750  CALL u2d('days since 1990-01-01 00:00:00',refdate,ierr)
1751  !
1752 #ifdef W3_T
1753  WRITE (ndst,9000) (flreq(j),j=1,nopts)
1754  WRITE (ndst,9001) itype, otype, nreq, scale1, scale2, flsrce
1755 #endif
1756 
1757  !
1758  !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1759  ! Loop over output points.
1760  !
1761 
1762 
1763 
1764  !
1765  ! Selects first station index
1766  !
1767  IF (together) THEN
1768  j=1
1769  ELSE
1770  j=i
1771  END IF
1772  !
1773  ! Short version of the ww3_ounp code for ITYPE = 1
1774  ! and OTYPE = 3
1775  !
1776  IF (short.AND.itype.EQ.1.AND.otype.EQ.3) THEN
1777 
1778  depth = max( dmin, dpo(j) )
1779  sqrth = sqrt( depth )
1780  DO ik=1, nk
1781  six = sig(ik) * sqrth
1782  i1 = int(six/dsie)
1783  IF (i1.LE.n1max) THEN
1784  i2 = i1 + 1
1785  r1 = six/dsie - real(i1)
1786  r2 = 1. - r1
1787  wn(ik) = ( r2*ewn1(i1) + r1*ewn1(i2) ) / depth
1788  cg(ik) = ( r2*ecg1(i1) + r1*ecg1(i2) ) * sqrth
1789  ELSE
1790  wn(ik) = sig(ik)*sig(ik)/grav
1791  cg(ik) = 0.5 * grav / sig(ik)
1792  END IF
1793 #ifdef W3_T
1794  WRITE (ndst,9011) ik, tpi/sig(ik), wn(ik), cg(ik)
1795 #endif
1796  !
1797  END DO
1798 
1799  !
1800  ! Computes 2nd order spectrum
1801  !
1802 #ifdef W3_IG1
1803  IF (igpars(2).EQ.1) THEN
1804  IF(igpars(1).EQ.1) THEN
1805  CALL w3addig(spco(:,j),dpo(j),wn,cg,0)
1806  ELSE
1807  CALL w3add2ndorder(spco(:,j),dpo(j),wn,cg,0)
1808  END IF
1809  END IF
1810 #endif
1811  !
1812 
1813  DO j1=1, nreq
1814  DO ik=1, nk
1815  DO ith=1, nth
1816  isp = ith + (ik-1)*nth
1817  e3(ith,ik,j1) = spco(isp,indreq(j1))
1818  END DO
1819  END DO
1820  END DO
1821 
1822  CALL t2d(time,curdate,ierr)
1823  outjulday=tsub(refdate,curdate)
1824  iret=nf90_put_var(ncid,varid(1),outjulday,(/iout/))
1825  CALL check_err(iret,4)
1826  !
1827  IF (iout.EQ.1) THEN
1828  DO j1=1, nreq
1829  iret=nf90_put_var(ncid,varid(27),indreq(j1),(/j1/))
1830  CALL check_err(iret,5)
1831  iret=nf90_put_var(ncid,varid(2),ptnme(indreq(j1)), &
1832  start=(/1,j1/),count=(/len_trim(ptnme(indreq(j1))) ,1/))
1833  CALL check_err(iret,6)
1834  END DO
1835  END IF
1836  !
1837  DO j1=1, nreq
1838  IF ((flww3.NE.0).AND.(order)) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
1839  IF ((flww3.NE.0).AND.(.NOT.order)) iret=nf90_put_var(ncid,varid(3),flww3,(/iout,j1/))
1840  CALL check_err(iret,7)
1841  END DO
1842  !
1843  IF(order) iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,indreq(1:nreq)),(/1,iout/))
1844  IF(.NOT.order) iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,indreq(1:nreq)),(/iout,1/))
1845  CALL check_err(iret,8)
1846  IF(order) iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,indreq(1:nreq)),(/1,iout/))
1847  IF(.NOT.order) iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,indreq(1:nreq)),(/iout,1/))
1848  CALL check_err(iret,9)
1849  !
1850  DO j1=1,nreq
1851  udir1(j1) = mod( 270. - wdo(indreq(j1))*rade , 360. )
1852  cdir1(j1) = mod( 270. - cdo(indreq(j1))*rade , 360. )
1853 #ifdef W3_FLX5
1854  taudir1(j1) = mod( 270. - taudo(indreq(j1))*rade , 360. )
1855 #endif
1856  END DO
1857  !
1858  IF (ncvartype.LE.3) THEN
1859  IF(order) iret=nf90_put_var(ncid,varid(11),nint(dpo(indreq(1:nreq))/0.5),(/1,iout/))
1860  IF(.NOT.order) iret=nf90_put_var(ncid,varid(11),nint(dpo(indreq(1:nreq))/0.5),(/iout,1/))
1861  CALL check_err(iret,10)
1862  IF(order) iret=nf90_put_var(ncid,varid(12),nint(wao(indreq(1:nreq))/0.1),(/1,iout/))
1863  IF(.NOT.order) iret=nf90_put_var(ncid,varid(12),nint(wao(indreq(1:nreq))/0.1),(/iout,1/))
1864  CALL check_err(iret,11)
1865  IF(order) iret=nf90_put_var(ncid,varid(13),nint(udir1/0.1),(/1,iout/))
1866  IF(.NOT.order) iret=nf90_put_var(ncid,varid(13),nint(udir1/0.1),(/iout,1/))
1867  CALL check_err(iret,12)
1868  IF(order) iret=nf90_put_var(ncid,varid(14),nint(cao(indreq(1:nreq))/0.1),(/1,iout/))
1869  IF(.NOT.order) iret=nf90_put_var(ncid,varid(14),nint(cao(indreq(1:nreq))/0.1),(/iout,1/))
1870  CALL check_err(iret,13)
1871  IF(order) iret=nf90_put_var(ncid,varid(15),nint(cdir1/0.1),(/1,iout/))
1872  IF(.NOT.order) iret=nf90_put_var(ncid,varid(15),nint(cdir1/0.1),(/iout,1/))
1873  CALL check_err(iret,14)
1874  ELSE
1875  IF(order) iret=nf90_put_var(ncid,varid(11),dpo(indreq(1:nreq)),(/1,iout/))
1876  IF(.NOT.order) iret=nf90_put_var(ncid,varid(11),dpo(indreq(1:nreq)),(/iout,1/))
1877  CALL check_err(iret,10)
1878  IF(order) iret=nf90_put_var(ncid,varid(12),wao(indreq(1:nreq)),(/1,iout/))
1879  IF(.NOT.order) iret=nf90_put_var(ncid,varid(12),wao(indreq(1:nreq)),(/iout,1/))
1880  CALL check_err(iret,11)
1881  IF(order) iret=nf90_put_var(ncid,varid(13),udir1,(/1,iout/))
1882  IF(.NOT.order) iret=nf90_put_var(ncid,varid(13),udir1,(/iout,1/))
1883  CALL check_err(iret,12)
1884  IF(order) iret=nf90_put_var(ncid,varid(14),cao(indreq(1:nreq)),(/1,iout/))
1885  IF(.NOT.order) iret=nf90_put_var(ncid,varid(14),cao(indreq(1:nreq)),(/iout,1/))
1886  CALL check_err(iret,13)
1887  IF(order) iret=nf90_put_var(ncid,varid(15),cdir1,(/1,iout/))
1888  IF(.NOT.order) iret=nf90_put_var(ncid,varid(15),cdir1,(/iout,1/))
1889  CALL check_err(iret,14)
1890  END IF
1891  !
1892  IF (ncvartype.LE.3) THEN
1893  WHERE(e3(:,:,:).GE.0) e3(:,:,:)=nint(alog10(e3(:,:,:)+1e-12)/0.0004)
1894  END IF
1895  IF(order) iret=nf90_put_var(ncid,varid(10),e3(1:nth,1:nk,:), &
1896  start=(/1,1,1,iout/),count=(/nth,nk,nreq,1/))
1897  IF(.NOT.order) iret=nf90_put_var(ncid,varid(10),e3(1:nth,1:nk,1:nreq), &
1898  start=(/1,1,iout,1/),count=(/nth,nk,1,nreq/))
1899  CALL check_err(iret,15)
1900  !
1901  ! End of short version
1902  !
1903  ELSE
1904  !
1905  ! And here is the full thing with all options ITYPE and OTYPE ...
1906  !
1907  j1=1
1908  laststation=.false.
1909  !
1910  DO WHILE (.NOT.laststation)
1911  !
1912  IF ( flreq(j) ) THEN
1913  !
1914  ! Open netCDF file
1915  !
1916 #ifdef W3_T
1917  WRITE (ndst,9002) ptnme(j)
1918 #endif
1919  !
1920  ! 2. Calculate grid parameters using and inlined version of WAVNU1.
1921  !
1922  depth = max( dmin, dpo(j) )
1923  sqrth = sqrt( depth )
1924  udir = mod( 270. - wdo(j)*rade , 360. )
1925  udirca = wdo(j)*rade
1926  udirr = wdo(j)
1927  uabs = max( 0.001 , wao(j) )
1928  cdir = mod( 270. - cdo(j)*rade , 360. )
1929 #ifdef W3_FLX5
1930  taua = max( 0.001 , tauao(j))
1931  tauadir = mod( 270. - taudo(j)*rade , 360. )
1932  rhoair = max( 0. , dairo(j))
1933 #endif
1934 #ifdef W3_IS2
1935  icedmax = max( 0., icefo(j))
1936  icef = icedmax
1937 #endif
1938  icethick = max(0., iceho(j))
1939  icecon = max(0., iceo(j))
1940  !
1941 #ifdef W3_STAB2
1942  stab0 = zwind * grav / 273.
1943  stab = stab0 * aso(j) / max(5.,wao(j))**2
1944  stab = max( -1. , min( 1. , stab ) )
1945  tharg1 = max( 0. , ffng*(stab-ofstab))
1946  tharg2 = max( 0. , ffps*(stab-ofstab))
1947  cor1 = ccng * tanh(tharg1)
1948  cor2 = ccps * tanh(tharg2)
1949  asfac = sqrt( (1.+cor1+cor2)/shstab )
1950 #endif
1951  !
1952 #ifdef W3_T
1953  WRITE (ndst,9010) depth
1954 #endif
1955  DO ik=1, nk
1956  six = sig(ik) * sqrth
1957  i1 = int(six/dsie)
1958  IF (i1.LE.n1max) THEN
1959  i2 = i1 + 1
1960  r1 = six/dsie - real(i1)
1961  r2 = 1. - r1
1962  wn(ik) = ( r2*ewn1(i1) + r1*ewn1(i2) ) / depth
1963  cg(ik) = ( r2*ecg1(i1) + r1*ecg1(i2) ) * sqrth
1964  ELSE
1965  wn(ik) = sig(ik)*sig(ik)/grav
1966  cg(ik) = 0.5 * grav / sig(ik)
1967  END IF
1968 #ifdef W3_T
1969  WRITE (ndst,9011) ik, tpi/sig(ik), wn(ik), cg(ik)
1970 #endif
1971  !
1972  END DO
1973  !
1974  ! Computes 2nd order spectrum
1975  !
1976 #ifdef W3_IG1
1977  IF (igpars(2).EQ.1) THEN
1978  IF(igpars(1).EQ.1) THEN
1979  CALL w3addig(spco(:,j),dpo(j),wn,cg,0)
1980  ELSE
1981  CALL w3add2ndorder(spco(:,j),dpo(j),wn,cg,0)
1982  END IF
1983  END IF
1984 #endif
1985  !
1986  !
1987  ! 3. Prepare spectra etc.
1988  ! 3.a Mean wave parameters.
1989  !
1990  et = 0.
1991  ewn = 0.
1992  etr = 0.
1993  etx = 0.
1994  ety = 0.
1995  DO ik=1, nk
1996  ebnd = 0.
1997  ebx = 0.
1998  eby = 0.
1999  DO ith=1, nth
2000  isp = ith + (ik-1)*nth
2001  e(ik,ith) = spco(isp,j)
2002  ebnd = ebnd + spco(isp,j)
2003  ebx = ebx + spco(isp,j)*ecos(ith)
2004  eby = eby + spco(isp,j)*esin(ith)
2005  END DO
2006  e1(ik) = ebnd * dth
2007  apm(ik)= e1(ik) / ( tpi * grav**2 / sig(ik)**5 )
2008  IF ( e1(ik) .GT. 1.e-5) THEN
2009  thbnd(ik) = mod(630.- rade*atan2(eby,ebx),360.)
2010  spbnd(ik) = rade * sqrt( max( 0. , 2.*( 1. - &
2011  sqrt( max(0.,(ebx**2+eby**2)/ebnd**2) ) ) ) )
2012  ELSE
2013  thbnd(ik) = -999.9
2014  spbnd(ik) = -999.9
2015  END IF
2016  ebnd = e1(ik) * dsii(ik) * tpiinv
2017  et = et + ebnd
2018  ewn = ewn + ebnd / wn(ik)
2019  etr = etr + ebnd / sig(ik)
2020  etx = etx + ebx * dsii(ik)
2021  ety = ety + eby * dsii(ik)
2022  END DO
2023  !
2024  ! tail factors for radian action etc ...!
2025  !
2026  ebnd = e1(nk) * tpiinv / ( sig(nk) * dth )
2027  et = et + fte *ebnd
2028  ewn = ewn + ftwl*ebnd
2029  etr = etr + fttr*ebnd
2030  etx = dth*etx*tpiinv + fte*ebx*tpiinv/sig(nk)
2031  ety = dth*ety*tpiinv + fte*eby*tpiinv/sig(nk)
2032  !
2033  hsig = 4. * sqrt( et )
2034  IF ( hsig .GT. hsmin ) THEN
2035  wlen = ewn / et * tpi
2036  tmean = etr / et * tpi
2037  thmean = mod( 630. - rade*atan2(ety,etx) , 360. )
2038  thsprd = rade * sqrt( max( 0. , 2.*( 1. - sqrt( &
2039  max(0.,(etx**2+ety**2)/et**2) ) ) ) )
2040  IF ( thsprd .LT. 0.01*rade*dth ) thsprd = 0.
2041  ELSE
2042  wlen = 0.
2043  tmean = 0.
2044  thmean = 0.
2045  thsprd = 0.
2046  e1(1:nk) = 0.
2047  e(1:nk,1:nth) = 0.
2048  END IF
2049  !
2050  ! 3.b peak frequency
2051  !
2052  emax = e1(nk)
2053  ikm = nk
2054  !
2055  DO ik=nk-1, 1, -1
2056  IF ( e1(ik) .GT. emax ) THEN
2057  emax = e1(ik)
2058  ikm = ik
2059  END IF
2060  END DO
2061  !
2062  IF ( hsig .GE. hsmin .AND. ikm .NE. nk ) THEN
2063  IF ( ikm .EQ. 1 ) THEN
2064  el = - e1(ikm)
2065  ELSE
2066  el = e1(ikm-1) - e1(ikm)
2067  END IF
2068 
2069  eh = e1(ikm+1) - e1(ikm)
2070 
2071  denom = xl*eh - xh*el
2072  !
2073  fp = sig(ikm) * ( 1. + 0.5 * ( xl2*eh - xh2*el ) &
2074  / sign( max(abs(denom),1.e-15) , denom ) )
2075  thp = thbnd(ikm)
2076  spp = spbnd(ikm)
2077  IF ( spp .LT. 0.01*rade*dth ) spp = 0.
2078  ELSE
2079  fp = 0.
2080  thp = 0.
2081  spp = 0.
2082  END IF
2083  !
2084  ! 3.c spectral partitioning
2085  !
2086  IF ( itype.EQ.1 .AND. otype.EQ.4 ) THEN
2087  CALL w3part( e, uabs, udirca, depth, wn, npart, xpart, &
2088  dimxp )
2089  END IF
2090  !
2091  ! 3.d nondimensional parameters
2092  !
2093  IF ( ( itype.EQ.2 .AND. (otype.EQ.3.OR.otype.EQ.4) ) .OR. &
2094  ( itype.EQ.1 .AND. (otype.EQ.2) ) ) THEN
2095  !
2096  DO ik=1, nk
2097  factor = tpiinv * cg(ik) / sig(ik)
2098  DO ith=1, nth
2099  isp = ith + (ik-1)*nth
2100  a(ith,ik) = factor * spco(isp,j)
2101  wn2(ith,ik) = wn(ik)
2102  END DO
2103  END DO
2104  !
2105 #ifdef W3_STAB2
2106  uabs = uabs / asfac
2107 #endif
2108  !
2109 #ifdef W3_ST0
2110  zwnd = 10.
2111 #endif
2112 #ifdef W3_ST1
2113  zwnd = 10.
2114 #endif
2115 #ifdef W3_ST2
2116  zwnd = zwind
2117 #endif
2118 #ifdef W3_ST3
2119  zwnd = zzwnd
2120  tauwx = 0.
2121  tauwy = 0.
2122  llws(:) = .true.
2123 #endif
2124 #ifdef W3_ST4
2125  llws(:) = .true.
2126  zwnd = zzwnd
2127  tauwx = 0.
2128  tauwy = 0.
2129 #endif
2130 #ifdef W3_ST6
2131  zwnd = 10.
2132 #endif
2133 
2134  !
2135 #ifdef W3_ST1
2136  CALL w3spr1 (a, cg, wn, emean, fmean, wnmean, amax)
2137  fp = 0.85 * fmean
2138 #endif
2139 #ifdef W3_ST2
2140  CALL w3spr2 (a, cg, wn, depth, fp , uabs, ustar, &
2141  emean, fmean, wnmean, amax, alpha, fp )
2142 #endif
2143 #ifdef W3_ST3
2144  CALL w3spr3 (a, cg, wn, emean, fmean, fmeans, &
2145  wnmean, amax, uabs, udirr, ustar, ustd,&
2146  tauwx, tauwy, cd, z0, charn, llws, fmeanws )
2147 #endif
2148 #ifdef W3_ST4
2149  CALL w3spr4 (a, cg, wn, emean, fmean, fmean1, &
2150  wnmean, amax, uabs, udirr, &
2151 #ifdef W3_FLX5
2152  taua, tauadir, rhoair, &
2153 #endif
2154  ustar, ustd, tauwx, tauwy, cd, z0, &
2155  charn, llws, fmeanws, dlwmean )
2156 #endif
2157 #ifdef W3_ST6
2158  CALL w3spr6 (a, cg, wn, emean, fmean, wnmean, amax, fp)
2159 #endif
2160  !
2161 #ifdef W3_FLX1
2162  CALL w3flx1 ( zwnd, uabs, udirr, &
2163  ustar, ustd, z0, cd )
2164 #endif
2165 #ifdef W3_FLX2
2166  CALL w3flx2 ( zwnd, depth, fp, uabs, udirr, &
2167  ustar, ustd, z0, cd )
2168 #endif
2169 #ifdef W3_FLX3
2170  CALL w3flx3 ( zwnd, depth, fp, uabs, udirr, &
2171  ustar, ustd, z0, cd )
2172 #endif
2173 #ifdef W3_FLX4
2174  CALL w3flx4 ( zwnd, uabs, udirr, ustar, ustd, z0, cd )
2175 #endif
2176 #ifdef W3_FLX5
2177  CALL w3flx5 ( zwnd, uabs, udirr, taua, tauadir, &
2178  rhoair, ustar, ustd, z0, cd, charn )
2179 #endif
2180  !
2181  DO itt=1, 4
2182 #ifdef W3_ST2
2183  CALL w3sin2 (a, cg, wn2, uabs, udirr, cd, z0, &
2184  fpi, xin, dia )
2185  CALL w3spr2 (a, cg, wn, depth, fpi, uabs, ustar, &
2186  emean, fmean, wnmean, amax, alpha, fp )
2187 #endif
2188 #ifdef W3_ST3
2189  ix=1
2190  iy=1
2191  CALL w3sin3 ( a, cg, wn2, uabs, ustar, dair/dwat,&
2192  aso(j), udirr, z0, cd, tauwx, tauwy,&
2193  tauwnx, tauwny, ice, xin, dia, llws, ix, iy )
2194  CALL w3spr3 (a, cg, wn, emean, fmean, fmeans, &
2195  wnmean, amax, uabs, udirr, ustar, ustd,&
2196  tauwx, tauwy, cd, z0, charn, llws, fmeanws )
2197 #endif
2198 #ifdef W3_ST4
2199  ix=1
2200  iy=1
2201  CALL w3spr4 (a, cg, wn, emean, fmean, fmean1, &
2202  wnmean, amax, uabs, udirr, &
2203 #ifdef W3_FLX5
2204  taua, tauadir, rhoair, &
2205 #endif
2206  ustar, ustd, tauwx, tauwy, cd, z0, &
2207  charn, llws, fmeanws,dlwmean )
2208  CALL w3sds4 ( a, wn, cg, ustar, ustd, depth, dair, xds, &
2209  dia, ix, iy, lambda, whitecap, dlwmean )
2210  CALL w3sin4 (a, cg, wn2, uabs, ustar, dair/dwat, &
2211  aso(j), udirr, z0, cd, tauwx, tauwy, tauwnx, &
2212  tauwny, xin, dia, llws, ix, iy, lambda )
2213 #endif
2214 #ifdef W3_FLX2
2215  CALL w3flx2 ( zwnd, depth, fp, uabs, udirr, &
2216  ustar, ustd, z0, cd )
2217 #endif
2218 #ifdef W3_FLX3
2219  CALL w3flx3 ( zwnd, depth, fp, uabs, udirr, &
2220  ustar, ustd, z0, cd )
2221 #endif
2222  END DO
2223  !
2224  ! Add alternative flux calculations here as part of !/ST2 option ....
2225  ! Also add before actual source term calculation !!!
2226  !
2227 #ifdef W3_STAB2
2228  uabs = uabs * asfac
2229 #endif
2230  !
2231  IF ( wao(j) .LT. 0.01 ) THEN
2232  unorm = 0.
2233  estar = 0.
2234  fpstar = 0.
2235  ELSE
2236  IF ( otype.EQ.3 ) THEN
2237  unorm = ustar
2238  ELSE
2239  unorm = wao(j)
2240  END IF
2241  estar = et * grav**2 / unorm**4
2242  fpstar = fp * tpiinv * unorm / grav
2243  xstar = ptloc(1,j) * grav / unorm**2
2244  ystar = ptloc(2,j) * grav / unorm**2
2245  IF ( flagll ) THEN
2246  xstar = xstar * dera * radius &
2247  * cos(ptloc(2,j)*dera)
2248  ystar = ystar * dera * radius
2249  END IF
2250  END IF
2251  !
2252  END IF ! 3.d
2253 
2254  !
2255  ! 3.e source terms
2256  !
2257  IF ( itype.EQ.3 ) THEN
2258  !
2259  DO ik=1, nk
2260  factor = tpiinv * cg(ik) / sig(ik)
2261  DO ith=1, nth
2262  a(ith,ik) = factor * spco(ith+(ik-1)*nth,j)
2263  wn2(ith,ik) = wn(ik)
2264  END DO
2265  END DO
2266  !
2267 #ifdef W3_STAB2
2268  uabs = uabs / asfac
2269 #endif
2270  !
2271 #ifdef W3_ST0
2272  zwnd = 10.
2273 #endif
2274 #ifdef W3_ST1
2275  zwnd = 10.
2276 #endif
2277 #ifdef W3_ST2
2278  zwnd = zwind
2279 #endif
2280 #ifdef W3_ST3
2281  zwnd = zzwnd
2282 #endif
2283 #ifdef W3_ST0
2284  ustar = 1.
2285 #endif
2286 #ifdef W3_ST1
2287  ustar = 1.
2288 #endif
2289 #ifdef W3_ST2
2290  ustar = 1.
2291 #endif
2292 #ifdef W3_ST3
2293  ustar = 0.
2294  ustd = 0.
2295  tauwx = 0.
2296  tauwy = 0.
2297 #endif
2298 #ifdef W3_ST4
2299  zwnd = zzwnd
2300  ustar = 0.
2301  ustd = 0.
2302  tauwx = 0.
2303  tauwy = 0.
2304 #endif
2305 #ifdef W3_ST6
2306  zwnd = 10.
2307 #endif
2308  !
2309 #ifdef W3_ST0
2310  fhigh = sig(nk)
2311 #endif
2312 #ifdef W3_ST1
2313  CALL w3spr1 (a, cg, wn, emean, fmean, wnmean, amax)
2314  fp = 0.85 * fmean
2315  fh1 = fxfm * fmean
2316  fh2 = fxpm / ustar
2317  fhigh = max( fh1 , fh2 )
2318 #endif
2319 #ifdef W3_ST2
2320  CALL w3spr2 (a, cg, wn, depth, fp , uabs, ustar, &
2321  emean, fmean, wnmean, amax, alpha, fp )
2322 #endif
2323 #ifdef W3_ST3
2324  CALL w3spr3 (a, cg, wn, emean, fmean, fmeans, &
2325  wnmean, amax, uabs, udirr, ustar, ustd,&
2326  tauwx, tauwy, cd, z0, charn, llws, fmeanws )
2327 #endif
2328 #ifdef W3_ST4
2329  CALL w3spr4 (a, cg, wn, emean, fmean, fmean1, &
2330  wnmean, amax, uabs, udirr, &
2331 #ifdef W3_FLX5
2332  taua, tauadir, rhoair, &
2333 #endif
2334  ustar, ustd, tauwx, tauwy, cd, z0, &
2335  charn, llws, fmeanws, dlwmean )
2336  CALL w3sds4 ( a, wn, cg, ustar, ustd, depth, dair, xds, &
2337  dia, ix, iy, lambda, whitecap, dlwmean )
2338 #endif
2339 #ifdef W3_ST6
2340  CALL w3spr6 (a, cg, wn, emean, fmean, wnmean, amax, fp)
2341  fhigh = sig(nk)
2342 #endif
2343  !
2344 #ifdef W3_FLX1
2345  CALL w3flx1 ( zwnd, uabs, udirr, &
2346  ustar, ustd, z0, cd )
2347 #endif
2348 #ifdef W3_FLX2
2349  CALL w3flx2 ( zwnd, depth, fp, uabs, udirr, &
2350  ustar, ustd, z0, cd )
2351 #endif
2352 #ifdef W3_FLX3
2353  CALL w3flx3 ( zwnd, depth, fp, uabs, udirr, &
2354  ustar, ustd, z0, cd )
2355 #endif
2356 #ifdef W3_FLX4
2357  CALL w3flx4 ( zwnd, uabs, udirr, ustar, ustd, z0, cd )
2358 #endif
2359 #ifdef W3_FLX5
2360  CALL w3flx5 ( zwnd, uabs, udirr, taua, tauadir, &
2361  rhoair, ustar, ustd, z0, cd, charn )
2362 #endif
2363  !
2364  DO itt=1, 3
2365 #ifdef W3_ST2
2366  CALL w3sin2 (a, cg, wn2, uabs, udirr, cd, z0, &
2367  fpi, xin, dia )
2368  CALL w3spr2 (a, cg, wn, depth, fpi, uabs, ustar, &
2369  emean, fmean, wnmean, amax, alpha, fp )
2370 #endif
2371 #ifdef W3_ST3
2372  CALL w3spr3 (a, cg, wn, emean, fmean, fmeans, &
2373  wnmean, amax, uabs, udirr, ustar, ustd,&
2374  tauwx, tauwy, cd, z0, charn, llws, fmeanws )
2375  CALL w3sin3 ( a, cg, wn2, uabs, ustar, dair/dwat,&
2376  aso(j), udirr, z0, cd,tauwx, tauwy, &
2377  tauwnx, tauwny, ice, xin, dia, llws, ix, iy )
2378 #endif
2379 #ifdef W3_ST4
2380  CALL w3spr4 (a, cg, wn, emean, fmean, fmean1, &
2381  wnmean, amax, uabs, udirr, &
2382 #ifdef W3_FLX5
2383  taua, tauadir, rhoair, &
2384 #endif
2385  ustar, ustd, tauwx, tauwy, cd, z0, &
2386  charn, llws, fmeanws, dlwmean )
2387  CALL w3sin4 (a, cg, wn2, uabs, ustar, dair/dwat, &
2388  aso(j), udirr, z0, cd, tauwx, tauwy,tauwnx,&
2389  tauwny, xin, dia, llws, ix, iy, lambda )
2390 #endif
2391 #ifdef W3_FLX2
2392  CALL w3flx2 ( zwnd, depth, fp, uabs, udirr, &
2393  ustar, ustd, z0, cd )
2394 #endif
2395 #ifdef W3_FLX3
2396  CALL w3flx3 ( zwnd, depth, fp, uabs, udirr, &
2397  ustar, ustd, z0, cd )
2398 #endif
2399  END DO
2400  !
2401 #ifdef W3_ST2
2402  fhigh = xfc * fpi
2403 #endif
2404  !
2405  IF ( flsrce(2) ) THEN
2406 #ifdef W3_LN1
2407  CALL w3sln1 (wn, fhigh, ustar, udirr, xln )
2408 #endif
2409  !
2410 #ifdef W3_ST1
2411  CALL w3sin1 (a, wn2, ustar, udirr, xin, dia )
2412 #endif
2413 #ifdef W3_ST2
2414  CALL w3sin2 (a, cg, wn2, uabs, udirr, cd, z0,&
2415  fpi, xin, dia )
2416 #endif
2417 #ifdef W3_ST3
2418  CALL w3sin3 ( a, cg, wn2, uabs, ustar, &
2419  dair/dwat, aso(j), udirr, &
2420  z0, cd, tauwx, tauwy,tauwnx, tauwny, &
2421  ice, xin, dia, llws, ix, iy )
2422 #endif
2423  !
2424 #ifdef W3_ST4
2425  CALL w3spr4 (a, cg, wn, emean, fmean, fmean1, &
2426  wnmean, amax, uabs, udirr, &
2427 #ifdef W3_FLX5
2428  taua, tauadir, rhoair, &
2429 #endif
2430  ustar, ustd, tauwx, tauwy, cd, z0, &
2431  charn, llws, fmeanws, dlwmean )
2432  CALL w3sds4 ( a, wn, cg, ustar, ustd, depth, dair, xds, &
2433  dia, ix, iy, lambda, whitecap, dlwmean )
2434  CALL w3sin4 (a, cg, wn2, uabs, ustar, dair/dwat, &
2435  aso(j), udirr, z0, cd, tauwx, tauwy, tauwnx, &
2436  tauwny, xin, dia, llws, ix, iy, lambda )
2437 #endif
2438 #ifdef W3_ST6
2439  CALL w3sin6 (a, cg, wn2, uabs, ustar, udirr, cd, dair, &
2440  tauwx, tauwy, tauwnx, tauwny, xin, dia )
2441 #endif
2442  END IF
2443  IF ( flsrce(3) ) THEN
2444 #ifdef W3_NL1
2445  IF (iqtpe.GT.0) THEN
2446  CALL w3snl1 ( a, cg, wnmean*depth, xnl, dia )
2447  ELSE
2448  CALL w3snlgqm ( a, cg, wn, depth, xnl, dia )
2449  END IF
2450 #endif
2451 #ifdef W3_NL2
2452  CALL w3snl2 ( a, cg, depth, xnl, dia )
2453 #endif
2454 #ifdef W3_NL3
2455  CALL w3snl3 ( a, cg, wn, depth, xnl, dia )
2456 #endif
2457 #ifdef W3_NL4
2458  CALL w3snl4 ( a, cg, wn, depth, xnl, dia )
2459 #endif
2460  END IF
2461  IF ( flsrce(4) ) THEN
2462 #ifdef W3_ST1
2463  CALL w3sds1 ( a, wn2, emean, fmean, wnmean, &
2464  xds, dia )
2465 #endif
2466 #ifdef W3_ST2
2467  CALL w3sds2 ( a, cg, wn, fpi, ustar, &
2468  alpha, xds, dia )
2469 #endif
2470 #ifdef W3_ST3
2471  CALL w3sds3 ( a, wn, cg, emean, fmeans, wnmean, &
2472  ustar, ustd, depth, xds, dia, ix, iy )
2473 #endif
2474 #ifdef W3_ST4
2475  CALL w3spr4 (a, cg, wn, emean, fmean, fmean1, &
2476  wnmean, amax, uabs, udirr, &
2477 #ifdef W3_FLX5
2478  taua, tauadir, rhoair, &
2479 #endif
2480  ustar, ustd, tauwx, tauwy, cd, z0, &
2481  charn, llws, fmeanws, dlwmean )
2482  CALL w3sds4 ( a, wn, cg, ustar, ustd, depth, dair, xds, &
2483  dia, ix, iy, lambda, whitecap , dlwmean)
2484 #endif
2485 #ifdef W3_ST6
2486  CALL w3sds6 ( a, cg, wn, xds, dia )
2487  IF (swl6s6) CALL w3swl6 ( a, cg, wn, xwl, dia )
2488 #endif
2489  !
2490 #ifdef W3_DB1
2491  CALL w3sdb1 ( i, a, depth, emean, fmean, &
2492  wnmean, cg, lbreak, xdb, dia )
2493 #endif
2494  END IF
2495  IF ( flsrce(5) ) THEN
2496 #ifdef W3_BT1
2497  CALL w3sbt1 ( a, cg, wn, depth, xbt, dia )
2498 #endif
2499 #ifdef W3_BT4
2500  ix=1 ! to be fixed later
2501  iy=1 ! to be fixed later
2502  isea=1 ! to be fixed later
2503  d50 = sed_d50(isea)
2504  psic= sed_psic(isea)
2505  CALL w3sbt4 ( a, cg, wn, depth, d50, psic, taubbl, &
2506  bedform, xbt, dia, ix, iy )
2507 #endif
2508 
2509  ! see remarks about BT8 and BT9 in ww3_outp.ftn
2510  !....broken....!/BT8 CALL W3SBT8 ( SPEC, DEPTH, VSBT, VDBT, IX, IY )
2511  !....broken....!/BT9 CALL W3SBT9 ( SPEC, DEPTH, VSBT, VDBT, IX, IY )
2512 
2513  !
2514 #ifdef W3_BS1
2515  CALL w3sbs1 ( a, cg, wn, depth, &
2516  cao(j)*cos(cdo(j)), cao(j)*sin(cdo(j)), &
2517  tauscx, tauscy, xbs, dia )
2518 #endif
2519  !
2520  END IF
2521  IF ( flsrce(6) ) THEN
2522  IF (iicedisp) THEN
2523  CALL liu_forward_dispersion (icethick,0.,depth, &
2524  sig,wn_r,cg_ice,alpha_liu)
2525  ELSE
2526  wn_r=wn
2527  cg_ice=cg
2528  END IF
2529  !
2530 #ifdef W3_IS2
2531  CALL w3sis2(a, depth, icecon, icethick, icef, icedmax, &
2532  ix, iy, xis, dia, dia2, wn, cg, wn_r, cg_ice, r)
2533 #endif
2534  END IF
2535  !
2536 #ifdef W3_STAB2
2537  uabs = uabs * asfac
2538 #endif
2539  !
2540  IF ( iscale.EQ.0 .OR. iscale.EQ.3 ) THEN
2541  facf = tpiinv
2542  face = 1.
2543  facs = 1.
2544  ELSE IF ( iscale.EQ.1 .OR. iscale.EQ.4 ) THEN
2545  facf = tpiinv * uabs / grav
2546  face = grav**3 / uabs**5
2547  facs = grav**2 / uabs**4
2548  ELSE IF ( iscale.EQ.2 .OR. iscale.EQ.5 ) THEN
2549  facf = tpiinv * ustar / grav
2550  face = grav**3 / ustar**5
2551  facs = grav**2 / ustar**4
2552  END IF
2553  !
2554  DO ik=1, nk
2555  factor = tpi / cg(ik) * sig(ik)
2556  e1(ik) = 0.
2557  sin1(ik) = 0.
2558  snl1(ik) = 0.
2559  sds1(ik) = 0.
2560  sbt1(ik) = 0.
2561  sis1(ik) = 0.
2562  stt1(ik) = 0.
2563  DO ith=1, nth
2564  isp = ith + (ik-1)*nth
2565  e(ik,ith) = spco(isp,j)
2566  swn(ik,ith) = ( xln(ith,ik) + xin(ith,ik) ) * factor
2567  snl(ik,ith) = ( xnl(ith,ik) + xtr(ith,ik) ) * factor
2568  sds(ik,ith) = ( xds(ith,ik) + xdb(ith,ik) ) * factor
2569 #ifdef W3_ST6
2570  sds(ik,ith) = sds(ik,ith) +(xwl(ith,ik) * factor)
2571 #endif
2572  sbt(ik,ith) = ( xbt(ith,ik) + xbs(ith,ik) ) * factor
2573  sis(ik,ith) = xis(ith,ik) * factor
2574  stt(ik,ith) = swn(ik,ith) + snl(ik,ith) + sds(ik,ith) + &
2575  sbt(ik,ith) + sis(ik,ith) + xxx(ith,ik) * factor
2576  e1(ik) = e1(ik) + e(ik,ith)
2577  sin1(ik) = sin1(ik) + swn(ik,ith)
2578  snl1(ik) = snl1(ik) + snl(ik,ith)
2579  sds1(ik) = sds1(ik) + sds(ik,ith)
2580  sbt1(ik) = sbt1(ik) + sbt(ik,ith)
2581  sis1(ik) = sis1(ik) + sis(ik,ith)
2582  END DO
2583  e1(ik) = e1(ik) * dth * face
2584  sin1(ik) = sin1(ik) * dth * facs
2585  snl1(ik) = snl1(ik) * dth * facs
2586  sds1(ik) = sds1(ik) * dth * facs
2587  sbt1(ik) = sbt1(ik) * dth * facs
2588  sis1(ik) = sis1(ik) * dth * facs
2589  END DO
2590  !
2591  stt1 = sin1 + snl1 + sds1 + sbt1 + sis1
2592  e1all(:,1) = sin1
2593  e1all(:,2) = snl1
2594  e1all(:,3) = sds1
2595  e1all(:,4) = sbt1
2596  e1all(:,5) = sis1
2597  e1all(:,6) = stt1
2598  !
2599  END IF ! 3.e
2600 
2601  !
2602  ! 4.a Perform output type 1 ( print plots / tables / file )
2603  !
2604  IF ( itype .EQ. 1 ) THEN
2605  !
2606  ! Format Time
2607  !
2608  IF ( otype .NE. 1 ) THEN
2609 
2610  CALL t2d(time,curdate,ierr)
2611  outjulday=tsub(refdate,curdate)
2612  iret=nf90_put_var(ncid,varid(1),outjulday,(/iout/))
2613  CALL check_err(iret,16)
2614  END IF
2615 
2616 
2617  !
2618  ! Performs subtype 1
2619  !
2620  IF ( otype .EQ. 1 ) THEN
2621  !
2622  IF ( scale1 .GE. 0. ) &
2623  CALL prt1ds (ndso, nk, e1, sig(1:nk), 'RAD/S',&
2624  17, scale1, 'E(f)', 'm^2s', ptnme(j) )
2625  IF ( scale2 .GE. 0. ) &
2626  CALL prt2ds (ndso, nk, nk, nth, e, sig(1:nk), &
2627  'RAD/S', 1., scale2, 0.0001, 'E(f,th)', &
2628  'm^2s', ptnme(j) )
2629  IF ( iaproc .EQ. napout ) WRITE (ndso,910) dpo(j), uabs
2630  IF ( (wao(j) .GT. 0.) .AND. (iaproc .EQ. napout) ) WRITE (ndso,911) udir
2631  IF ( iaproc .EQ. napout ) WRITE (ndso,912) aso(j), cao(j)
2632  IF ( (cao(j) .GT. 0.) .AND. (iaproc .EQ. napout) ) WRITE (ndso,913) cdir
2633  IF ( iaproc .EQ. napout ) WRITE (ndso,914) hsig, wlen, tmean, thmean, thsprd
2634 
2635 
2636  !
2637  ! Performs subtype 2
2638  !
2639  ELSE IF ( otype .EQ. 2 ) THEN
2640 
2641  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2642  CALL check_err(iret,17)
2643  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2644  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2645  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2646  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2647  iret=nf90_put_var(ncid,varid(7),dpo(j),(/j1,iout/))
2648  iret=nf90_put_var(ncid,varid(8),ustar,(/j1,iout/))
2649  iret=nf90_put_var(ncid,varid(9),wao(j),(/j1,iout/))
2650  iret=nf90_put_var(ncid,varid(10),udir,(/j1,iout/))
2651 
2652  IF ( fp .EQ. 0. ) fp = sig(nk)
2653  iret=nf90_put_var(ncid,varid(11),sig(1:nk)/fp,start=(/1,j1,iout /),count=(/nk,1,1/))
2654  iret=nf90_put_var(ncid,varid(12),e1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2655  iret=nf90_put_var(ncid,varid(13),thbnd(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2656  iret=nf90_put_var(ncid,varid(14),spbnd(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2657  iret=nf90_put_var(ncid,varid(15),apm(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2658 
2659 
2660  !
2661  ! Performs subtype 3
2662  !
2663  ELSE IF ( otype .EQ. 3 ) THEN
2664  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2665  CALL check_err(iret,18)
2666  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2667  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2668  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2669  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2670  IF (ncvartype.LE.3) THEN
2671  iret=nf90_put_var(ncid,varid(11),nint(dpo(j)/0.5),(/j1,iout/))
2672  iret=nf90_put_var(ncid,varid(12),nint(wao(j)/0.1),(/j1,iout/))
2673  iret=nf90_put_var(ncid,varid(13),nint(udir/0.1),(/j1,iout/))
2674  iret=nf90_put_var(ncid,varid(14),nint(cao(j)/0.1),(/j1,iout/))
2675  iret=nf90_put_var(ncid,varid(15),nint(cdir/0.1),(/j1,iout/))
2676  ELSE
2677  iret=nf90_put_var(ncid,varid(11),dpo(j),(/j1,iout/))
2678  iret=nf90_put_var(ncid,varid(12),wao(j),(/j1,iout/))
2679  iret=nf90_put_var(ncid,varid(13),udir,(/j1,iout/))
2680  iret=nf90_put_var(ncid,varid(14),cao(j),(/j1,iout/))
2681  iret=nf90_put_var(ncid,varid(15),cdir,(/j1,iout/))
2682  END IF
2683  IF (ncvartype.LE.3) THEN
2684  WHERE(e.GE.0) e=nint(alog10(e+1e-12)/0.0004)
2685  END IF
2686  iret=nf90_put_var(ncid,varid(10),transpose(e(1:nk,1:nth)), &
2687  start=(/1,1,j1,iout/),count=(/nth,nk,1,1/))
2688  !
2689  ! Performs subtype 4
2690  !
2691  ELSE IF ( otype .EQ. 4 ) THEN
2692  !
2693  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2694  CALL check_err(iret,19)
2695  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2696  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2697  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2698  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2699  iret=nf90_put_var(ncid,varid(6),npart,(/j1,iout/))
2700  iret=nf90_put_var(ncid,varid(7),depth,(/j1,iout/))
2701  iret=nf90_put_var(ncid,varid(8),wao(j),(/j1,iout/))
2702  iret=nf90_put_var(ncid,varid(9),udir,(/j1,iout/))
2703  iret=nf90_put_var(ncid,varid(10),cao(j),(/j1,iout/))
2704  iret=nf90_put_var(ncid,varid(11),cdir,(/j1,iout/))
2705  ! XPART infos - see w3partmd.ftn - SUBROUTINE PTMEAN
2706  iret=nf90_put_var(ncid,varid(12),xpart(1,0:npart), &
2707  start=(/1,j1,iout/),count=(/npart,1,1/))
2708  iret=nf90_put_var(ncid,varid(13),xpart(2,0:npart), &
2709  start=(/1,j1,iout/),count=(/npart,1,1/))
2710  iret=nf90_put_var(ncid,varid(14),xpart(3,0:npart),start=(/1,j1,iout/),count=(/npart,1,1/))
2711  iret=nf90_put_var(ncid,varid(15),xpart(4,0:npart),start=(/1,j1,iout/),count=(/npart,1,1/))
2712  iret=nf90_put_var(ncid,varid(16),xpart(5,0:npart),start=(/1,j1,iout/),count=(/npart,1,1/))
2713  iret=nf90_put_var(ncid,varid(17),xpart(6,0:npart),start=(/1,j1,iout/),count=(/npart,1,1/))
2714  iret=nf90_put_var(ncid,varid(18),xpart(12,0:npart),start=(/1,j1,iout/),count=(/npart,1,1/))
2715  iret=nf90_put_var(ncid,varid(19),xpart(13,0:npart),start=(/1,j1,iout/),count=(/npart,1,1/))
2716  iret=nf90_put_var(ncid,varid(20),xpart(14,0:npart),start=(/1,j1,iout/),count=(/npart,1,1/))
2717  !
2718  END IF
2719 
2720  !
2721  ! 4.b Perform output type 2 ( tables )
2722  !
2723  ELSE IF ( itype .EQ. 2 ) THEN
2724 
2725  ! Format Time
2726  CALL t2d(time,curdate,ierr)
2727  outjulday=tsub(refdate,curdate)
2728  iret=nf90_put_var(ncid,varid(1),outjulday,(/iout/))
2729 
2730  !
2731  ! Performs subtype 1
2732  !
2733  IF ( otype .EQ. 1 ) THEN
2734 
2735  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2736  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2737  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2738  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2739  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2740  iret=nf90_put_var(ncid,varid(6),dpo(j),(/ j1,iout /))
2741  iret=nf90_put_var(ncid,varid(7),cao(j),(/ j1,iout /))
2742  iret=nf90_put_var(ncid,varid(8),cdir,(/ j1,iout /))
2743  iret=nf90_put_var(ncid,varid(9),wao(j),(/ j1,iout /))
2744  iret=nf90_put_var(ncid,varid(10),udir,(/ j1,iout /))
2745 #ifdef W3_SETUP
2746  iret=nf90_put_var(ncid,varid(11),zet_seto,(/ j1,iout /))
2747 #endif
2748 
2749  !
2750  ! Performs subtype 2
2751  !
2752  ELSE IF ( otype .EQ. 2 ) THEN
2753 
2754  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2755  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2756  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2757  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2758  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2759  iret=nf90_put_var(ncid,varid(6),hsig,(/ j1,iout /))
2760  iret=nf90_put_var(ncid,varid(7),wlen,(/ j1,iout /))
2761  iret=nf90_put_var(ncid,varid(8),tmean,(/ j1,iout /))
2762  iret=nf90_put_var(ncid,varid(9),thp,(/ j1,iout /))
2763  iret=nf90_put_var(ncid,varid(10),spp,(/ j1,iout /))
2764  iret=nf90_put_var(ncid,varid(11),fp*tpiinv,(/ j1,iout /))
2765  iret=nf90_put_var(ncid,varid(12),thmean,(/ j1,iout /))
2766  iret=nf90_put_var(ncid,varid(13),thsprd,(/ j1,iout /))
2767 
2768  !
2769  ! Performs subtype 3
2770  !
2771  ELSE IF ( otype .EQ. 3 ) THEN
2772 
2773  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2774  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2775  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2776  iret=nf90_put_var(ncid,varid(4),1.e-4*xstar,(/j1,iout/))
2777  iret=nf90_put_var(ncid,varid(5),1.e-4*ystar,(/j1,iout/))
2778  iret=nf90_put_var(ncid,varid(6),unorm,(/ j1,iout /))
2779  iret=nf90_put_var(ncid,varid(7),estar,(/ j1,iout /))
2780  iret=nf90_put_var(ncid,varid(8),fpstar,(/ j1,iout /))
2781  iret=nf90_put_var(ncid,varid(9),cd*1000.,(/ j1,iout /))
2782  iret=nf90_put_var(ncid,varid(10),apm(nk)*100.,(/ j1,iout /))
2783 
2784  !
2785  ! Performs subtype 4
2786  !
2787  ELSE IF ( otype .EQ. 4 ) THEN
2788 
2789  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2790  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2791  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2792  iret=nf90_put_var(ncid,varid(4),xstar,(/j1,iout/))
2793  iret=nf90_put_var(ncid,varid(5),ystar,(/j1,iout/))
2794  iret=nf90_put_var(ncid,varid(6),unorm,(/ j1,iout /))
2795  iret=nf90_put_var(ncid,varid(7),estar,(/ j1,iout /))
2796  iret=nf90_put_var(ncid,varid(8),fpstar,(/ j1,iout /))
2797  iret=nf90_put_var(ncid,varid(9),cd*1000.,(/ j1,iout /))
2798  iret=nf90_put_var(ncid,varid(10),apm(nk)*100.,(/ j1,iout /))
2799 
2800  !
2801  ! Performs subtype 5
2802  !
2803  ELSE IF ( otype .EQ. 5 ) THEN
2804  hmat = min( 100. , 3.33*grav*hsig/uabs**2 )
2805  IF ( hsig .GE. hsmin ) THEN
2806  CALL wavnu1 ( fp, dpo(j), wna, xyz )
2807  age1 = min( 100. , fp / wna / uabs )
2808  afr = tpi / tmean
2809  CALL wavnu1 ( afr, dpo(j), wna, xyz )
2810  age2 = min( 100. , afr / wna / uabs )
2811  ELSE
2812  age1 = nf90_fill_float
2813  age2 = nf90_fill_float
2814  END IF
2815 
2816  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2817  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2818  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2819  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2820  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2821  iret=nf90_put_var(ncid,varid(6),wao(j),(/ j1,iout /))
2822  iret=nf90_put_var(ncid,varid(7),udir,(/ j1,iout /))
2823  iret=nf90_put_var(ncid,varid(8),hsig,(/ j1,iout /))
2824  iret=nf90_put_var(ncid,varid(9),hmat,(/ j1,iout /))
2825  iret=nf90_put_var(ncid,varid(10),age1,(/ j1,iout /))
2826  iret=nf90_put_var(ncid,varid(11),age2,(/ j1,iout /))
2827  iret=nf90_put_var(ncid,varid(12),aso(j),(/ j1,iout /))
2828 
2829  !
2830  ! Performs subtype 6
2831  !
2832  ELSE IF ( otype .EQ. 6 ) THEN
2833 
2834  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2835  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2836  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2837  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2838  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2839  iret=nf90_put_var(ncid,varid(6),wao(j),(/ j1,iout /))
2840  iret=nf90_put_var(ncid,varid(7),udir,(/ j1,iout /))
2841  iret=nf90_put_var(ncid,varid(8),hsig,(/ j1,iout /))
2842 
2843  IF ( hsig .GE. hsmin ) THEN
2844  iret=nf90_put_var(ncid,varid(9),tpi/fp,(/ j1,iout /))
2845  ELSE
2846  iret=nf90_put_var(ncid,varid(9),0.0,(/ j1,iout /))
2847  END IF
2848  END IF ! OTYPE
2849 
2850  !
2851  ! 4.c Perform output type 3 ( source terms )
2852  !
2853  ELSE IF ( itype .EQ. 3 ) THEN
2854  !
2855  ! Format Time
2856  !
2857  IF ( otype .NE. 1 ) THEN
2858 
2859  CALL t2d(time,curdate,ierr)
2860  outjulday=tsub(refdate,curdate)
2861  iret=nf90_put_var(ncid,varid(1),outjulday,(/iout/))
2862  END IF
2863  !
2864  ! Performs subtype 1
2865  !
2866  IF ( otype .EQ. 1 ) THEN
2867  !
2868  IF ( scale1 .GE. 0. ) THEN
2869  IF ( flsrce(1) ) &
2870  CALL prt1ds (ndso, nk, e1, sig(1:nk), &
2871  'RAD/S', 17, 0., 'E(f)', 'm^2s', &
2872  ptnme(j) )
2873  IF (flsrce(2) .OR. flsrce(3) .OR. &
2874  flsrce(4) .OR. flsrce(5) .OR. &
2875  flsrce(6) .OR. flsrce(7) ) &
2876  CALL prt1dm (ndso, nk, 6, e1all, sig(1:nk),&
2877  'RAD/S', 17, scale1, var1, 'M2', &
2878  ptnme(j) )
2879  END IF
2880  IF ( scale2 .GE. 0. ) THEN
2881  IF ( flsrce(1) ) &
2882  CALL prt2ds (ndso, nk, nk, nth, e, &
2883  sig(1:nk), 'RAD/S', 1., 0., 0.0001, &
2884  'E(f,th)', 'm^2s', ptnme(j) )
2885  IF ( flsrce(2) ) &
2886  CALL prt2ds (ndso, nk, nk, nth, swn, &
2887  sig(1:nk), 'RAD/S', 1., scale2, 0.0001,&
2888  'Sin(f,th)', 'm^2', ptnme(j) )
2889  IF ( flsrce(3) ) &
2890  CALL prt2ds (ndso, nk, nk, nth, snl, &
2891  sig(1:nk), 'RAD/S', 1., scale2, 0.0001,&
2892  'Snl(f,th)', 'm^2', ptnme(j) )
2893  IF ( flsrce(4) ) &
2894  CALL prt2ds (ndso, nk, nk, nth, sds, &
2895  sig(1:nk), 'RAD/S', 1., scale2, 0.0001,&
2896  'Sds(f,th)', 'm^2', ptnme(j) )
2897  IF ( flsrce(5) ) &
2898  CALL prt2ds (ndso, nk, nk, nth, sbt, &
2899  sig(1:nk), 'RAD/S', 1., scale2, 0.0001,&
2900  'Sbt(f,th)', 'm^2', ptnme(j) )
2901  IF ( flsrce(6) ) &
2902  CALL prt2ds (ndso, nk, nk, nth, sis, &
2903  sig(1:nk), 'RAD/S', 1., scale2, 0.0001,&
2904  'Sice(f,th)', 'm^2', ptnme(j) )
2905  IF ( flsrce(7) ) &
2906  CALL prt2ds (ndso, nk, nk, nth, stt, &
2907  sig(1:nk), 'RAD/S', 1., scale2, 0.0001,&
2908  'Stot(f,th)', 'm^2', ptnme(j) )
2909  END IF
2910  !
2911  ! Performs subtype 2
2912  !
2913  ELSE IF ( otype .EQ. 2 ) THEN
2914  !
2915  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2916  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2917  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2918  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2919  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2920  iret=nf90_put_var(ncid,varid(7),dpo(j),(/j1,iout/))
2921  iret=nf90_put_var(ncid,varid(8),ustar,(/j1,iout/))
2922  iret=nf90_put_var(ncid,varid(9),wao(j),(/j1,iout/))
2923  IF ( iscale.GE.3 ) facf = 1. / fp
2924  iret=nf90_put_var(ncid,varid(6),facf*sig(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2925  iret=nf90_put_var(ncid,varid(10),e1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2926  iret=nf90_put_var(ncid,varid(11),sin1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2927  iret=nf90_put_var(ncid,varid(12),snl1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2928  iret=nf90_put_var(ncid,varid(13),sds1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2929  iret=nf90_put_var(ncid,varid(14),sbt1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2930  iret=nf90_put_var(ncid,varid(15),sis1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2931  iret=nf90_put_var(ncid,varid(16),stt1(1:nk),start=(/1,j1,iout /),count=(/nk,1,1/))
2932 
2933  !
2934  ! Performs subtype 3
2935  !
2936  ELSE IF ( otype .EQ. 3 ) THEN
2937  !
2938  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2939  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2940  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2941  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2942  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2943  iret=nf90_put_var(ncid,varid(7),dpo(j),(/j1,iout/))
2944  iret=nf90_put_var(ncid,varid(8),ustar,(/j1,iout/))
2945  iret=nf90_put_var(ncid,varid(9),wao(j),(/j1,iout/))
2946  IF ( iscale.GE.3 ) facf = 1. / fp
2947  DO ik=1, nk
2948  fact = 1. / max( 1.e-10 , e1(ik) )
2949  iret=nf90_put_var(ncid,varid(6),facf*sig(ik),(/ ik,j1,iout /))
2950  iret=nf90_put_var(ncid,varid(10),e1(ik),(/ ik,j1,iout /))
2951  IF ( e1(ik) .GT. 1.e-10 ) THEN
2952  iret=nf90_put_var(ncid,varid(11),fact*sin1(ik),(/ ik,j1,iout /))
2953  iret=nf90_put_var(ncid,varid(12),fact*snl1(ik),(/ ik,j1,iout /))
2954  iret=nf90_put_var(ncid,varid(13),fact*sds1(ik),(/ ik,j1,iout /))
2955  iret=nf90_put_var(ncid,varid(14),fact*sbt1(ik),(/ ik,j1,iout /))
2956  iret=nf90_put_var(ncid,varid(15),fact*sis1(ik),(/ ik,j1,iout /))
2957  iret=nf90_put_var(ncid,varid(16),fact*stt1(ik),(/ ik,j1,iout /))
2958  ELSE
2959  iret=nf90_put_var(ncid,varid(11),nf90_fill_float,(/ ik,j1,iout /))
2960  iret=nf90_put_var(ncid,varid(12),nf90_fill_float,(/ ik,j1,iout /))
2961  iret=nf90_put_var(ncid,varid(13),nf90_fill_float,(/ ik,j1,iout /))
2962  iret=nf90_put_var(ncid,varid(14),nf90_fill_float,(/ ik,j1,iout /))
2963  iret=nf90_put_var(ncid,varid(15),nf90_fill_float,(/ ik,j1,iout /))
2964  iret=nf90_put_var(ncid,varid(16),nf90_fill_float,(/ ik,j1,iout /))
2965  END IF
2966  END DO
2967 
2968  !
2969  ! Performs subtype 4
2970  !
2971  ELSE IF ( otype .EQ. 4 ) THEN
2972  !
2973  iret=nf90_put_var(ncid,varid(27),j,(/j1/))
2974  iret=nf90_put_var(ncid,varid(2),ptnme(j),start=(/1,j1/),count=(/len_trim(ptnme(j)) ,1/))
2975  IF (flww3.NE.0) iret=nf90_put_var(ncid,varid(3),flww3,(/j1,iout/))
2976  iret=nf90_put_var(ncid,varid(4),m2km*ptloc(1,j),(/j1,iout/))
2977  iret=nf90_put_var(ncid,varid(5),m2km*ptloc(2,j),(/j1,iout/))
2978  iret=nf90_put_var(ncid,varid(10),dpo(j),(/j1,iout/))
2979  iret=nf90_put_var(ncid,varid(11),wao(j),(/j1,iout/))
2980  iret=nf90_put_var(ncid,varid(12),udir,(/j1,iout/))
2981  iret=nf90_put_var(ncid,varid(13),cao(j),(/j1,iout/))
2982  iret=nf90_put_var(ncid,varid(14),cdir,(/j1,iout/))
2983  iret=nf90_put_var(ncid,varid(15),ustar,(/j1,iout/))
2984 
2985  IF ( flsrce(1) ) iret=nf90_put_var(ncid,varid(16), &
2986  transpose(e(1:nk,1:nth)), start=(/1,1,j1,iout/), &
2987  count=(/nth,nk,1,1/) )
2988  IF ( flsrce(2) ) iret=nf90_put_var(ncid,varid(17), &
2989  transpose(swn(1:nk,1:nth)), start=(/1,1,j1,iout/), &
2990  count=(/nth,nk,1,1/) )
2991  IF ( flsrce(3) ) iret=nf90_put_var(ncid,varid(18), &
2992  transpose(snl(1:nk,1:nth)), start=(/1,1,j1,iout/), &
2993  count=(/nth,nk,1,1/) )
2994  IF ( flsrce(4) ) iret=nf90_put_var(ncid,varid(19), &
2995  transpose(sds(1:nk,1:nth)), start=(/1,1,j1,iout/), &
2996  count=(/nth,nk,1,1/) )
2997  IF ( flsrce(5) ) iret=nf90_put_var(ncid,varid(20), &
2998  transpose(sbt(1:nk,1:nth)), start=(/1,1,j1,iout/), &
2999  count=(/nth,nk,1,1/) )
3000  IF ( flsrce(6) ) iret=nf90_put_var(ncid,varid(21), &
3001  transpose(sis(1:nk,1:nth)), start=(/1,1,j1,iout/), &
3002  count=(/nth,nk,1,1/) )
3003  IF ( flsrce(7) ) iret=nf90_put_var(ncid,varid(22), &
3004  transpose(stt(1:nk,1:nth)), start=(/1,1,j1,iout/), &
3005  count=(/nth,nk,1,1/) )
3006  !
3007  END IF
3008  !
3009  END IF ! ITYPE
3010 
3011  !
3012  ! ... End of fields loop
3013  !
3014  IF (together) j1=j1+1
3015 
3016  END IF ! FLREQ(J)
3017  !
3018  ! Selects next station index or end up if not together
3019  !
3020  IF (together) THEN
3021  j=j+1
3022  IF (j.GT.nopts) laststation=.true.
3023  ELSE
3024  laststation=.true.
3025  END IF
3026 
3027  END DO ! DO WHILE (.NOT. LASTSTATION)
3028 
3029  END IF ! NOT SHORT ...
3030  !
3031  RETURN
3032  !
3033  ! Formats
3034  !
3035 910 FORMAT (/15x,' Water depth :',f7.1,' (m)'/ &
3036  15x,' Wind speed :',f8.2,' (m/s)')
3037 911 FORMAT ( 15x,' Wind direction :',f7.1,' (degr)')
3038 912 FORMAT ( 15x,' Air-sea temp. dif.:',f7.1,' (degr)'/ &
3039  15x,' sea water speed :',f8.2,' (m/s)')
3040 913 FORMAT ( 15x,' direction of current (from) :',f7.1,' (degr)')
3041 914 FORMAT ( 15x,' Wave height :',f8.2,' (m)'/ &
3042  15x,' Mean wave length :',f6.0,' (m)'/ &
3043  15x,' Mean wave period :',f7.1,' (s)'/ &
3044  15x,' Mean wave direct. :',f7.1,' (degr)'/ &
3045  15x,' Direct. spread :',f7.1,' (degr)'/)
3046  !
3047 #ifdef W3_T
3048 9000 FORMAT (' TEST W3EXNC : FLAGS :',40l2)
3049 9001 FORMAT (' TEST W3EXNC : ITPYE :',i4/ &
3050  ' OTPYE :',i4/ &
3051  ' NREQ :',i4/ &
3052  ' SCALE1 :',e10.3/ &
3053  ' SCALE2 :',e10.3/ &
3054  ' FLSRCE :',6l2)
3055 9002 FORMAT (' TEST W3EXNC : OUTPUT POINT : ',a)
3056 9010 FORMAT (' TEST W3EXNC : DEPTH =',f7.1,' IK, T, K, CG :')
3057 9011 FORMAT (' ',i3,f8.2,f8.4,f8.2)
3058 #endif
3059  !/
3060  !/ End of W3EXNC ----------------------------------------------------- /
3061  !/

References check_err(), constants::dair, constants::dera, w3dispmd::dfac, w3dispmd::dsie, constants::dwat, w3dispmd::ecg1, w3dispmd::ewn1, constants::grav, w3gdatmd::iicedisp, w3gdatmd::iqtpe, w3dispmd::liu_forward_dispersion(), w3dispmd::n1max, w3dispmd::nar1d, w3arrymd::prt1dm(), w3arrymd::prt1ds(), w3arrymd::prt2ds(), constants::rade, constants::radius, w3gdatmd::swl6s6, constants::tpi, constants::tpiinv, w3canomd::w3add2ndorder(), w3gig1md::w3addig(), w3flx1md::w3flx1(), w3flx2md::w3flx2(), w3flx3md::w3flx3(), w3flx4md::w3flx4(), w3flx5md::w3flx5(), w3partmd::w3part(), w3sbs1md::w3sbs1(), w3sbt1md::w3sbt1(), w3sbt4md::w3sbt4(), w3sdb1md::w3sdb1(), w3src1md::w3sds1(), w3src2md::w3sds2(), w3src3md::w3sds3(), w3src4md::w3sds4(), w3src6md::w3sds6(), w3src1md::w3sin1(), w3src2md::w3sin2(), w3src3md::w3sin3(), w3src4md::w3sin4(), w3src6md::w3sin6(), w3sis2md::w3sis2(), w3sln1md::w3sln1(), w3snl1md::w3snl1(), w3snl2md::w3snl2(), w3snl3md::w3snl3(), w3snl4md::w3snl4(), w3snl1md::w3snlgqm(), w3src1md::w3spr1(), w3src2md::w3spr2(), w3src3md::w3spr3(), w3src4md::w3spr4(), w3src6md::w3spr6(), w3swldmd::w3swl6(), and w3dispmd::wavnu1().

◆ w3ounp()

w3dispmd::dfac
real, parameter dfac
Definition: w3dispmd.F90:75
w3gdatmd::nk
integer, pointer nk
Definition: w3gdatmd.F90:1230
w3sln1md
Definition: w3sln1md.F90:3
w3sln1md::w3sln1
subroutine w3sln1(K, FHIGH, USTAR, USDIR, S)
Definition: w3sln1md.F90:57
w3src3md::w3sin3
subroutine w3sin3(A, CG, K, U, USTAR, DRAT, AS, USDIR, Z0, CD, TAUWX, TAUWY, TAUWNX, TAUWNY, ICE, S, D, LLWS, IX, IY)
Calculate diagonal and input source term for WAM4+ approach.
Definition: w3src3md.F90:386
w3adatmd::charn
real, dimension(:), pointer charn
Definition: w3adatmd.F90:603
w3arrymd::prt1dm
subroutine prt1dm(NDS, NFR, NE, E, FR, UFR, NLINES, FTOPI, PRVAR, PRUNIT, PNTNME)
Definition: w3arrymd.F90:1627
w3gdatmd::swl6s6
logical, pointer swl6s6
Definition: w3gdatmd.F90:1338
w3timemd::t2d
subroutine t2d(TIME, DAT, IERR)
Definition: w3timemd.F90:1072
w3gdatmd::flagunr
logical, pointer flagunr
Definition: w3gdatmd.F90:1193
w3swldmd
Source term module for swell dissipation.
Definition: w3swldmd.F90:18
w3flx5md::w3flx5
subroutine w3flx5(ZWND, U10, U10D, TAUA, TAUADIR, RHOAIR, UST, USTD, Z0, CD, CHARN)
Unified process to obtain friction velocity and drag when stresses are an input (from atmospheric mod...
Definition: w3flx5md.F90:119
constants::dair
real, parameter dair
DAIR Density of air (kg/m3).
Definition: constants.F90:63
constants::dera
real, parameter dera
DERA Conversion factor from degrees to radians.
Definition: constants.F90:77
w3snl1md::w3snl1
subroutine w3snl1(A, CG, KDMEAN, S, D)
Calculate nonlinear interactions and the diagonal term of its derivative.
Definition: w3snl1md.F90:115
w3partmd
Spectral partitioning according to the watershed method.
Definition: w3partmd.F90:18
w3flx4md::w3flx4
subroutine w3flx4(ZWND, U10, U10D, UST, USTD, Z0, CD)
Flux/stress computations according to Hwang (JTECH, 2011).
Definition: w3flx4md.F90:106
w3adatmd::cg
real, dimension(:,:), pointer cg
Definition: w3adatmd.F90:575
w3gdatmd::sig
real, dimension(:), pointer sig
Definition: w3gdatmd.F90:1234
w3wdatmd::icef
real, dimension(:), pointer icef
Definition: w3wdatmd.F90:183
w3sbt1md::w3sbt1
subroutine w3sbt1(A, CG, WN, DEPTH, S, D)
Bottom friction source term according to the empirical JONSWAP formulation.
Definition: w3sbt1md.F90:89
w3src2md::w3sds2
subroutine w3sds2(A, CG, K, FPI, USTAR, ALFA, S, D)
Calculate whitecapping source term and diagonal term of derivative.
Definition: w3src2md.F90:583
w3sdb1md
Dummy slot for bottom friction source term.
Definition: w3sdb1md.F90:24
w3wdatmd::time
integer, dimension(:), pointer time
Definition: w3wdatmd.F90:172
w3flx2md::w3flx2
subroutine w3flx2(ZWIND, DEPTH, FP, U, UDIR, UST, USTD, Z0, CD)
FLux/stress computations according Tolman and Chalikov (1996).
Definition: w3flx2md.F90:91
constants::rade
real, parameter rade
RADE Conversion factor from radians to degrees.
Definition: constants.F90:76
w3sbt4md::w3sbt4
subroutine w3sbt4(A, CG, WN, DEPTH, D50, PSIC, TAUBBL, BEDFORM, S, D, IX, IY)
Computes the SHOWEX bottom friction with movable bed effects.
Definition: w3sbt4md.F90:341
w3src4md::w3sds4
subroutine w3sds4(A, K, CG, USTAR, USDIR, DEPTH, DAIR, SRHS, DDIAG, IX, IY, BRLAMBDA, WHITECAP, DLWMEAN)
Calculate whitecapping source term and diagonal term of derivative.
Definition: w3src4md.F90:2034
w3src6md::w3sin6
subroutine, public w3sin6(A, CG, WN2, UABS, USTAR, USDIR, CD, DAIR, TAUWX, TAUWY, TAUNWX, TAUNWY, S, D)
Observation-based source term for wind input.
Definition: w3src6md.F90:292
w3snl4md::w3snl4
subroutine w3snl4(A, CG, WN, DEPTH, S, D)
Interface module for TSA type nonlinear interactions.
Definition: w3snl4md.F90:611
w3src2md::w3sin2
subroutine w3sin2(A, CG, K, U, UDIR, CD, Z0, FPI, S, D)
Calculate input source term.
Definition: w3src2md.F90:309
w3adatmd::taubbl
real, dimension(:,:), pointer taubbl
Definition: w3adatmd.F90:614
w3odatmd::ndse
integer, pointer ndse
Definition: w3odatmd.F90:456
w3flx3md
FLux/stress computations according Tolman and Chalikov (1996).
Definition: w3flx3md.F90:23
w3flx4md
Flux/stress computations according to Hwang ( 2011).
Definition: w3flx4md.F90:27
w3flx5md
Unified process to obtain friction velocity and drag when stresses are an input (from atmospheric mod...
Definition: w3flx5md.F90:28
w3dispmd::ewn1
real, dimension(0:nar1d) ewn1
Definition: w3dispmd.F90:78
w3flx1md
Flux/stress computations according to Wu (1980).
Definition: w3flx1md.F90:21
w3adatmd::tauwny
real, dimension(:), pointer tauwny
Definition: w3adatmd.F90:603
w3flx2md
FLux/stress computations according Tolman and Chalikov (1996).
Definition: w3flx2md.F90:21
w3src4md::w3sin4
subroutine w3sin4(A, CG, K, U, USTAR, DRAT, AS, USDIR, Z0, CD, TAUWX, TAUWY, TAUWNX, TAUWNY, S, D, LLWS, IX, IY, BRLAMBDA)
Calculate diagonal and input source term for WAM4+ approach.
Definition: w3src4md.F90:426
w3sdb1md::w3sdb1
subroutine w3sdb1(IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D)
Compute depth-induced breaking using Battjes and Janssen bore model approach.
Definition: w3sdb1md.F90:97
w3canomd
Calculation of the second order correction to the surface gravity wave spectrum.
Definition: w3canomd.F90:23
w3servmd
Definition: w3servmd.F90:3
w3timemd::caltype
character, public caltype
Definition: w3timemd.F90:79
constants::tpiinv
real, parameter tpiinv
TPIINV Inverse of 2*Pi.
Definition: constants.F90:74
w3adatmd::tauwnx
real, dimension(:), pointer tauwnx
Definition: w3adatmd.F90:603
w3gig1md
Definition: w3gig1md.F90:3
w3adatmd::alpha
real, dimension(:,:), pointer alpha
Definition: w3adatmd.F90:687
w3gdatmd::nth
integer, pointer nth
Definition: w3gdatmd.F90:1230
w3dispmd::liu_forward_dispersion
subroutine liu_forward_dispersion(H_ICE, VISC, H_WDEPTH, SIGMA, K_SOLUTION, CG, ALPHA)
Definition: w3dispmd.F90:688
w3odatmd
Definition: w3odatmd.F90:3
w3dispmd::ecg1
real, dimension(0:nar1d) ecg1
Definition: w3dispmd.F90:78
w3timemd::tsub
double precision function tsub(T1, T2)
Definition: w3timemd.F90:1527
w3gdatmd::iicedisp
logical, pointer iicedisp
Definition: w3gdatmd.F90:1217
w3adatmd::taua
real, dimension(:), pointer taua
Definition: w3adatmd.F90:584
constants::dwat
real, parameter dwat
DWAT Density of water (kg/m3).
Definition: constants.F90:62
w3sbs1md::w3sbs1
subroutine w3sbs1(A, CG, WN, DEPTH, CX1, CY1, TAUSCX, TAUSCY, S, D)
Bottom scattering source term.
Definition: w3sbs1md.F90:114
w3adatmd::wnmean
real, dimension(:), pointer wnmean
Definition: w3adatmd.F90:587
w3gig1md::w3addig
subroutine w3addig(E, DEPTH, WN, CG, IACTION)
Definition: w3gig1md.F90:147
constants::radius
real, parameter radius
RADIUS Radius of the earth (m).
Definition: constants.F90:79
check_err
subroutine check_err(IRET)
Check input return status for error value.
Definition: ww3_bounc.F90:856
w3adatmd::wn
real, dimension(:,:), pointer wn
Definition: w3adatmd.F90:575
w3arrymd::prt1ds
subroutine prt1ds(NDS, NFR, E, FR, UFR, NLINES, FTOPI, PRVAR, PRUNIT, PNTNME)
Definition: w3arrymd.F90:1366
constants::tpi
real, parameter tpi
TPI 2*Pi.
Definition: constants.F90:72
w3src1md::w3sin1
subroutine w3sin1(A, K, USTAR, USDIR, S, D)
Calculate diagonal of input source (actual source term put together in W3SRCE).
Definition: w3src1md.F90:256
w3wdatmd::icedmax
real, dimension(:), pointer icedmax
Definition: w3wdatmd.F90:183
w3src6md::w3spr6
subroutine, public w3spr6(A, CG, WN, EMEAN, FMEAN, WNMEAN, AMAX, FP)
Calculate mean wave parameters.
Definition: w3src6md.F90:122
w3snl2md::w3snl2
subroutine w3snl2(A, CG, DEPTH, S, D)
Interface to exact interactions.
Definition: w3snl2md.F90:96
w3wdatmd::ice
real, dimension(:), pointer ice
Definition: w3wdatmd.F90:183
w3arrymd
Definition: w3arrymd.F90:3
w3gdatmd::xfr
real, pointer xfr
Definition: w3gdatmd.F90:1232
w3sis2md
Floe-size dependant scattering of waves in the marginal ice zone.
Definition: w3sis2md.F90:33
w3adatmd::whitecap
real, dimension(:,:), pointer whitecap
Definition: w3adatmd.F90:603
w3timemd::u2d
subroutine u2d(UNITS, DAT, IERR)
Definition: w3timemd.F90:1728
w3sbt8md
Contains routines for computing dissipation by viscous fluid mud using Dalrymple and Liu (1978) "Thin...
Definition: w3sbt8md.F90:25
w3src3md::w3spr3
subroutine w3spr3(A, CG, WN, EMEAN, FMEAN, FMEANS, WNMEAN, AMAX, U, UDIR, USTAR, USDIR, TAUWX, TAUWY, CD, Z0, CHARN, LLWS, FMEANWS)
Calculate mean wave parameters for the use in the source term routines.
Definition: w3src3md.F90:137
w3sbt9md
Contains routines for computing dissipation by viscous fluid mud using Ng (2000).
Definition: w3sbt9md.F90:25
w3src2md::w3spr2
subroutine w3spr2(A, CG, WN, DEPTH, FPI, U, USTAR, EMEAN, FMEAN, WNMEAN, AMAX, ALFA, FP)
Calculate mean wave parameters for the use in the source term routines (Tolman and Chalikov).
Definition: w3src2md.F90:127
w3sbt4md
SHOWEX bottom friction source term (Ardhuin et al.
Definition: w3sbt4md.F90:25
w3sbt1md
JONSWAP bottom friction routine.
Definition: w3sbt1md.F90:21
w3src3md::w3sds3
subroutine w3sds3(A, K, CG, EMEAN, FMEAN, WNMEAN, USTAR, USDIR, DEPTH, S, D, IX, IY)
Calculate whitecapping source term and diagonal term of derivative.
Definition: w3src3md.F90:1255
w3gdatmd
Definition: w3gdatmd.F90:16
w3adatmd::hsig
real, dimension(:), pointer hsig
Definition: w3adatmd.F90:587
w3swldmd::w3swl6
subroutine, public w3swl6(A, CG, WN, S, D)
Turbulent dissipation of narrow-banded swell.
Definition: w3swldmd.F90:252
w3dispmd::nar1d
integer, parameter nar1d
Definition: w3dispmd.F90:74
w3sbs1md
This module computes a scattering term based on the theory by Ardhuin and Magne (JFM 2007).
Definition: w3sbs1md.F90:22
w3dispmd::wavnu1
subroutine wavnu1(SI, H, K, CG)
Definition: w3dispmd.F90:85
w3sis2md::w3sis2
subroutine, public w3sis2(A, DEPTH, CICE, ICEH, ICEF, ICEDMAX, IX, IY, S, D, DISSIP, WN, CG, WN_R, CG_ICE, R)
Wave scattering in the MIZ, adapted from Dumont et al.
Definition: w3sis2md.F90:654
w3adatmd::tauadir
real, dimension(:), pointer tauadir
Definition: w3adatmd.F90:584
w3servmd::extcde
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
Definition: w3servmd.F90:736
w3canomd::w3add2ndorder
subroutine w3add2ndorder(E, DEPTH, WN, CG, IACTION)
Adds second order spectrum on top of first order spectrum.
Definition: w3canomd.F90:153
w3src6md::w3sds6
subroutine, public w3sds6(A, CG, WN, S, D)
Observation-based source term for dissipation.
Definition: w3src6md.F90:547
w3arrymd::prt2ds
subroutine prt2ds(NDS, NFR0, NFR, NTH, E, FR, UFR, FACSP, FSC, RRCUT, PRVAR, PRUNIT, PNTNME)
Definition: w3arrymd.F90:1943
w3wdatmd::rhoair
real, dimension(:), pointer rhoair
Definition: w3wdatmd.F90:183
w3snl3md
Generalized and optimized multiple DIA implementation.
Definition: w3snl3md.F90:24
w3snl4md
Generic shallow-water Boltzmann integral (FBI or TSA).
Definition: w3snl4md.F90:25
w3src3md
The 'WAM4+' source terms based on P.A.E.M.
Definition: w3src3md.F90:30
w3src4md
The 'SHOM/Ifremer' source terms based on P.A.E.M.
Definition: w3src4md.F90:28
w3snl1md
Bundles routines to calculate nonlinear wave-wave interactions according to the Discrete Interaction ...
Definition: w3snl1md.F90:25
w3src6md
Observation-based wind input and dissipation after Donelan et al (2006), and Babanin et al.
Definition: w3src6md.F90:27
w3snl2md
Interface module to exact nonlinear interactions.
Definition: w3snl2md.F90:23
w3partmd::w3part
subroutine w3part(SPEC, UABS, UDIR, DEPTH, WN, NP, XP, DIMXP)
Interface to watershed partitioning routines.
Definition: w3partmd.F90:139
w3src1md
Bundle WAM cycle 3 input and dissipation source terms with their defining parameters.
Definition: w3src1md.F90:15
w3src2md
Tolman and Chalikov (1996) input and dissipation source terms.
Definition: w3src2md.F90:16
w3snl3md::w3snl3
subroutine w3snl3(A, CG, WN, DEPTH, S, D)
Multiple Discrete Interaction Parameterization for arbitrary depths with generalized quadruplet layou...
Definition: w3snl3md.F90:181
w3snl1md::w3snlgqm
subroutine w3snlgqm(A, CG, WN, DEPTH, TSTOTn, TSDERn)
Definition: w3snl1md.F90:789
w3flx3md::w3flx3
subroutine w3flx3(ZWIND, DEPTH, FP, U, UDIR, UST, USTD, Z0, CD)
FLux/stress computations according Tolman and Chalikov (1996).
Definition: w3flx3md.F90:96
w3gdatmd::iqtpe
integer, pointer iqtpe
Definition: w3gdatmd.F90:1345
w3src4md::w3spr4
subroutine w3spr4(A, CG, WN, EMEAN, FMEAN, FMEAN1, WNMEAN, AMAX, U, UDIR, ifdef W3_FLX5
Calculate mean wave parameters for the use in the source term routines.
Definition: w3src4md.F90:145
w3flx1md::w3flx1
subroutine w3flx1(ZWND, U10, U10D, UST, USTD, Z0, CD)
FLux/stress computations according to Wu (1980).
Definition: w3flx1md.F90:89
w3dispmd
Definition: w3dispmd.F90:3
w3dispmd::n1max
integer n1max
Definition: w3dispmd.F90:77
w3src1md::w3sds1
subroutine w3sds1(A, K, EMEAN, FMEAN, WNMEAN, S, D)
Calculate whitecapping source term and diagonal term of derivative.
Definition: w3src1md.F90:433
constants::grav
real, parameter grav
GRAV Acc.
Definition: constants.F90:61
w3src1md::w3spr1
subroutine w3spr1(A, CG, WN, EMEAN, FMEAN, WNMEAN, AMAX)
Definition: w3src1md.F90:88
w3dispmd::dsie
real dsie
Definition: w3dispmd.F90:78
w3gdatmd::flagll
logical, pointer flagll
Definition: w3gdatmd.F90:1219