Spectre de JONSWAP¶
Informations¶
Fichier :
Knu/Scripts/Librairies/jonswap.pyAuteur: Victor Baconnet
Date de dernière modification: 27 août 2021
Description¶
Fonctions pour générer un spectre JONSWAP et les coefficients d’amplitude, périodes, et déphasages pour générer le signal de houle irrégulière.
Génération du spectre¶
Le spectre de JONSWAP est généré selon la formule suivante
avec
et \(\sigma=0.07\) si \(\omega < \omega_p\), \(\sigma=0.09\) sinon. La constante réelle \(a\) peut être déterminée en utilisant la définition de \(H_s\)
De telle sorte que :
Génération des amplitudes¶
Les hauteurs crête-à-creux sont générées avec la relation:
Génération des déphasages¶
Les déphasages sont générés aléatiroement entre \(0\) et \(2\pi\).
Utilisation¶
Les fonctions contenues dans ce fichier sont à réutiliser dans d’autres fichiers
pour générer de la houle irrégulière, comme dans genHouleIrreguliere.
L’éxecution de ce fichier n’affichera aucun résultat.
Exemple d’utilisation¶
import numpy as np
import matplotlib.pyplot as plt
from jonswap import genJonswapParams, jonswap
# Paramètre du spectre jonswap
Tmin = 0.87
Tmax = 2.19
Tp = 1.57
Hs = 0.125
gamma = 3.3
wmin = 2.0*np.pi/Tmax #Fréquence min
wmax = 2.0*np.pi/Tmin #Fréquence max
wp = 2.0*np.pi/Tp #Pulsation pic
Ncomposantes = 1000
dw = (wmax - wmin)/Ncomposantes #Incrément de fréquence
w = np.arange(wmin,wmax+dw,dw) #Génération du vecteur de fréquences
# Génération des Amplitudes, déphasages et spectre
spectre = jonswap(Hs,Tp,gamma,w)
H, phi = genJonswapParams(spectre, w)
# Génération de houle irrégulière
t = np.linspace(0.0,100,1001)
houleIrreg = 0.0
for i in range(len(H)):
houleIrreg += 0.5*H[i]*np.sin(w[i]*t + phi[i])
# Affichage des résultats
fig, axs = plt.subplots(figsize = (10,8), nrows = 2)
axs[0].plot(w, spectre)
axs[0].set_xlabel(r"$\omega$ (rad/s)")
axs[0].set_ylabel(r"$S(\omega)$ (m²s)")
axs[0].set_xlim((wmin, wmax))
axs[0].grid()
axs[0].set_title(rf"Spectre de paramètres Hs = {Hs}, Tp = {Tp} et $\gamma$ = {gamma}")
axs[1].plot(t,houleIrreg)
axs[1].set_xlabel("Temps (s)")
axs[1].set_ylabel(r"$\eta(t)$ (m)")
axs[1].set_xlim((0, 100))
axs[1].grid()
axs[1].set_title("Signal de houle irrégulière")
Dépendances¶
numpymatplotlibsys,
Code source¶
Lien vers le code source
Fonctions¶
- jonswap.genJonswapParams(spectreJonswap, w)¶
Calcule les amplitudes, déphasages et spectre pour générer une onde irrégulière
- Parameters
spectreJonswap (
float) – le spectre de densité d’énergie JONSWAPw (
floatounumpy.ndarray) – Fréquence en rad/s
- Returns
Amplitudes et déphasages (aléatoires entre \(0\) et \(2\pi\))
- Return type
floatounumpy.ndarray
- jonswap.integre(vec, dx)¶
Intègre un vecteur selon la méthode des trapèzes
- Parameters
vec (
numpy.ndarrayou itérable) – Vecteur de valeurs à intégrerdx (
float) – Pas de discrétisation
- Returns
res : scalaire correspondant à l’intégrale du vecteur
- Return type
float
- jonswap.jonswap(Hs, Tp, gamma, w)¶
Renvoie une densité spectrale de puissance selon le modèle JONSWAP, avec le calcul de la constante a
- Parameters
Hs (
float) – Hauteur caractéristiqueTp (
float) – Période picgamma (
float) – Coefficient d’élancementw (
floatounumpy.ndarray) – Fréquence en rad/s
- Returns
Densité spectrale de puissance selon le modèle JONSWAP
- Return type
floatounumpy.ndarray
- jonswap.sigma(w, wp)¶
Calcule le coefficient \(\sigma = 0.07\) si \(\omega < \omega_p\) et \(\sigma = 0.09\) si \(\omega > \omega_p\), à partir d’une combinaison de fonctions de Heaviside. Cela permet de ne pas écrire avec des “if” pour gagner du temps si on utilise un vecteur w très grand.
- Parameters
w (
floatounumpy.ndarray) – Valeur ou vecteur de fréquences en rad/swp (
float) – fréquence pic en rad/s
- Returns
0.07 si \(\omega < \omega_p\), 0.09 sinon
- Return type
float
- jonswap.spectreJonswap(a, Hs, Tp, gamma, w)¶
Calcule le spectre de Jonswap avec la formule donnée dans le manuel du canal à houle
- Parameters
a (
float) – le coefficient qui doit faire l’objet de l’optimisationHs (
float) – hauteur caractéristiqueTp (
float) – période picgamma (
float) – Coefficient d’élancementw (
numpy.ndarray) – vecteur de fréquences en rad/s
- Returns
vecteur densité spectrale de puissance de la même taille que w