Wave frequency discretization

Hello,

I’m am currently working on construction a “point-RAO” of a TLP, using very specific wave frequencies.
My question is regarding the discretization of wave frequencies, and if the is a limit for how small the difference can be between the each chosen wave frequency.

Say in hydrodyn I specify regular waves (WaveMod = 1), with Peak-spectral period (WaveTp = 1.4434), i would expect to measure a wave frequency of 0.6928 [Hz].
After simulation however a measure a wave period of 1.4290 [s] = 0.69979 [Hz]
Meaning a discrepancy of 0.0144 [s] or 0.0070 [Hz]

This happens even if I define “Time step for incident wave calculations” (WaveDT = 0.001) and have both simulation and sampling time as (DT = DT_Out = 0.001)

Here are some of the frequencies/periods I have specified vs. measured:
Specified frequency 0.6928 [Hz]
Measured frequency 0.6998 [Hz]
Specified period 1.4434 [s]
Measured period 1.4290 [s]

Specified frequency 0.7028 [Hz]
Measured frequency 0.6998 [Hz]
Specified period 1.4229 [s]
Measured period 1.4290 [s]

Specified frequency 0.7128 [Hz]
Measured frequency 0.7199 [Hz]
Specified period 1.4029 [s]
Measured period 1.3890 [s]

Specified frequency 0.7228 [Hz]
Measured frequency 0.7199 [Hz]
Specified period 1.3835 [s]
Measured period 1.3890 [s]

Is there som inherit limitation within HydroDyn, which prevents me from specifying a more accurate wave period?

Following settings are used in HydroDyn:

------- HydroDyn v2.03.* Input File -------------------------------------------- HydroDyn input properties for AAUE-TLP. False Echo - Echo the input file data (flag) ---------------------- ENVIRONMENTAL CONDITIONS -------------------------------- 1025 WtrDens - Water density (kg/m^3) 1.92 WtrDpth - Water depth (meters) 1.92 0 MSL2SWL - Offset between still-water level and mean sea level (meters) [positive upward; unused when WaveMod = 6; must be zero if PotMod=1 or 2] ---------------------- WAVES --------------------------------------------------- 1 WaveMod - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series [option 6 is invalid for PotMod/=0]} (switch) 0 WaveStMod - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0] 50 WaveTMax - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT] 0.001 WaveDT - Time step for incident wave calculations 0.005 (sec) [unused when WaveMod=0; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT] 0.03 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3] 1.4434 WaveTp - Peak-spectral period of incident waves (sec) [used only when WaveMod=1 or 2] "DEFAULT" WavePkShp - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz] 0 WvLowCOff - Low cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] 20 WvHiCOff - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] == 2.3873 Hz 0 WaveDir - Incident wave propagation heading direction (degrees) [unused when WaveMod=0 or 6] 0 WaveDirMod - Directional spreading function {0: none, 1: COS2S} (-) [only used when WaveMod=2,3, or 4] 0.001 WaveDirSpread - Wave direction spreading coefficient ( > 0 ) (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1] 1 WaveNDir - Number of wave directions 13 (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only] 0 WaveDirRange - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1] 123456789 WaveSeed(1) - First random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] 1011121314 WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] TRUE WaveNDAmp - Flag for normally distributed amplitudes (flag) [only used when WaveMod=2, 3, or 4] "Wave/JONSWAPSpectrumCoupled/JonswapSpectrumCoupled" WvKinFile - Root name of externally generated wave data file(s) (quoted string) [used only when WaveMod=5 or 6] 1 NWaveElev - Number of points where the incident wave elevations can be computed (-) [ma12179.6ximum of 9 output locations] 0 WaveElevxi - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] 0 WaveElevyi - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] ---------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6] False WvDiffQTF - Full difference-frequency 2nd-order wave kinematics (flag) False WvSumQTF - Full summation-frequency 2nd-order wave kinematics (flag) 0 WvLowCOffD - Low frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] 3.5 WvHiCOffD - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] 0.1 WvLowCOffS - Low frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] 3.5 WvHiCOffS - High frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] ---------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6] 0 CurrMod - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch) 0 CurrSSV0 - Sub-surface current velocity at still water level (m/s) [used only when CurrMod=1] "DEFAULT" CurrSSDir - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1] 0.57 CurrNSRef - Near-surface current reference depth (meters) [used only when CurrMod=1] 0 CurrNSV0 - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1] 0 CurrNSDir - Near-surface current heading direction (degrees) [used only when CurrMod=1] 0 CurrDIV - Depth-independent current velocity (m/s) [used only when CurrMod=1] 0 CurrDIDir - Depth-independent current heading direction (degrees) [used only when CurrMod=1] ---------------------- FLOATING PLATFORM --------------------------------------- [unused with WaveMod=6] 1 PotMod - Potential-flow model {0: none=no potential flow, 1: frequency-to-time-domain transforms based on WAMIT output, 2: fluid-impulse theory (FIT)} (switch) "HydroData/TLP" PotFile - Root name of potential-flow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequency-dependent hydrodynamic added mass matrix and damping matrix (.1), and frequency- and direction-dependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!] 1.0 WAMITULEN - Characteristic body length scale used to redimensionalize WAMIT output (meters) [only used when PotMod=1] 0.1971 PtfmVol0 - Displaced volume of water when the platform is in its undisplaced position (m^3) [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!] 0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1] 0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1] 1 RdtnMod - Radiation memory-effect model {0: no memory-effect calculation, 1: convolution, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ss INPUT FILE] 15 RdtnTMax - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!] "DEFAULT" RdtnDT - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform] ---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2] 0 MnDrift - Mean-drift 2nd-order forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero] 0 NewmanApp - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. Used only when WaveDirMod=0] 0 DiffQTF - Full difference-frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero] 0 SumQTF - Full summation -frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} ---------------------- FLOATING PLATFORM FORCE FLAGS -------------------------- [unused with WaveMod=6] True PtfmSgF - Platform horizontal surge translation force (flag) or DEFAULT True PtfmSwF - Platform horizontal sway translation force (flag) or DEFAULT True PtfmHvF - Platform vertical heave translation force (flag) or DEFAULT True PtfmRF - Platform roll tilt rotation force (flag) or DEFAULT True PtfmPF - Platform pitch tilt rotation force (flag) or DEFAULT True PtfmYF - Platform yaw rotation force (flag) or DEFAULT

Dear Thomas,

Because of the properties of FFTs, the frequency resolution is dictated by the wave analysis length (WaveTMax) rather than the time step (WaveDT). That is, domega = 2*pi/WaveTMax or df = 1/WaveTMax. I suggest increasing WaveTMAx to get better frequency resolution. Often we set WaveTMax > 1 hr (3600 s).

Best regards,

Dear Jason,

Thank you for your very quick reply, that makes completely sense, the reason that i have chosen such a low WaveTMax, was to reduce the calculation time for each simulation, and to prevent running out of memory.
In retrospect, I should have chosen a much higher value for this parameter.