← Blog

10 septembre 2026

Pourquoi HappySession sous-estimait la houle à Goulien (presqu'île de Crozon)

Retour sur un bug trouvé en surfant, presqu'île de Crozon, début septembre 2026

Quelques jours de sessions sur la presqu'île de Crozon où l'app annonçait systématiquement des vagues plus petites que ce qu'on trouvait dans l'eau à Goulien. Le récit de cette vérification, et de ce qu'elle a changé dans le moteur.

Pourquoi HappySession sous-estimait la houle à Goulien (presqu'île de Crozon)

Début septembre, quelques jours de sessions sur la presqu'île de Crozon, entre Goulien et la Palue. À Goulien en particulier, le même écart revenait session après session : l'app annonçait des vagues à la hanche ou au nombril, on trouvait des séries à la poitrine, parfois plus. Pas de quoi rater une session — mais assez systématique pour ne pas être un hasard.

Plutôt que de laisser passer, j'ai repris chaque session avec les vraies données du modèle météo derrière l'estimation, pour comprendre où l'écart se creusait. Ce qui devait être une vérification rapide a fini par ouvrir un vrai défaut de calcul, plus intéressant — et plus tenace — que prévu, ainsi qu'un angle déjà traité par le moteur, mais dont le calibrage restait insuffisant.

Un abri de vent, propre à chaque spot

Ce point de calibrage, justement : certains spots sont protégés du vent par le relief local, indépendamment de leur exposition à la houle. À Goulien, la pointe de Dinan abrite une partie du spot des vents de sud-ouest — un vent qui, ailleurs sur la côte, dégraderait nettement le plan d'eau, mais qui reste ici largement filtré. Le calibrage restait trop approximatif pour bien distinguer les secteurs réellement abrités des autres. Les règles propres à ce spot ont été optimisées pour les effets locaux sur le vent.

Goulien vu depuis la pointe : malgré un vent de sud-ouest annoncé par le modèle, la baie reste plate, abritée par le relief

Cette photo a été prise un jour de vent sud-ouest modéré selon le modèle — le genre de vent qui, sur un spot exposé, se traduirait par un plan d'eau haché. Ici, rien de tel : la baie reste plutôt clean, les lignes de houle s'enroulent proprement. C'est exactement ce que la table d'atténuation cherche à capturer : un vent de sud-ouest ne dégrade pas le plan d'eau à Goulien, parce que la pointe de Dinan en atténue les effets.

Une houle, ou plusieurs houles empilées

Un plan d'eau n'a presque jamais une seule houle : il y a souvent une houle de fond principale et une ou deux autres. Le moteur les additionnait déjà correctement pour la hauteur totale. Le vrai problème, c'est qu'il leur appliquait ensuite à toutes le même réglage d'exposition, basé sur une direction moyenne — alors qu'à Goulien, deux houles comparables arrivent souvent avec 25 à 40° d'écart, l'une bien mieux exposée que l'autre. Résultat : une houle bien orientée pouvait se retrouver noyée dans une moyenne moins favorable. La correction applique désormais ce réglage houle par houle, avant de les recombiner — sur la session détaillée plus loin, la hauteur estimée est passée de 0,4 m à 0,7 m avec les mêmes données brutes.

Voir le détail technique

Un modèle océanique ne voit pas d'abord trois vagues distinctes : ce qu'il calcule réellement, c'est un spectre, la façon dont l'énergie de la mer se répartit entre toutes les périodes et toutes les directions possibles, un peu comme un son complexe se décompose en plusieurs fréquences. Pour rendre ce spectre lisible, le modèle y repère ensuite les zones où l'énergie se concentre, et en tire une poignée de "houles" bien identifiées — chacune avec sa propre hauteur, sa propre période, sa propre direction. C'est cette poignée de composantes que HappySession reçoit en entrée.

Recombiner ces composantes en une hauteur totale n'est pas une simple addition. L'énergie d'une vague croît avec le carré de sa hauteur : une vague deux fois plus haute transporte quatre fois plus d'énergie. Combiner plusieurs houles revient donc à additionner leurs énergies, puis à revenir à une hauteur — ce qui donne, mathématiquement, une somme quadratique (la racine carrée de la somme des carrés) plutôt qu'une addition directe. C'est exactement ainsi que le modèle météo (WAVEWATCH III, développé par la NOAA) calcule déjà la hauteur totale à partir de ses composantes.

Le vrai problème était ailleurs : la direction. Le modèle ne donne qu'une seule direction pour la houle totale, une sorte de moyenne du spectre. Le jour où toutes les houles arrivent à peu près du même endroit, cette moyenne suffit. Mais à Goulien, il arrive régulièrement que deux houles de taille comparable arrivent avec 25 à 40° d'écart. Le moteur appliquait alors un seul facteur d'exposition, calculé sur cette direction moyenne, à la totalité de la hauteur déjà combinée — ignorant qu'une bonne partie de cette énergie arrivait en réalité bien mieux exposée que la moyenne ne le laissait penser.

La somme quadratique elle-même n'avait donc rien à changer, elle était déjà juste. Ce qu'il fallait déplacer, c'est le moment où le facteur de direction entre en jeu : au lieu de l'appliquer une fois, après coup, sur la hauteur totale, la correction l'applique à chaque houle individuellement — chacune avec sa propre exposition — puis seulement ensuite les recombine, avec cette même somme quadratique mais sur des hauteurs déjà ajustées à leur exposition réelle.

Une session, avant et après

Le plus parlant reste de rejouer un créneau réel avec les deux versions du moteur. Même session, jeudi 3 septembre, 19h à Goulien :

Avant correction, en rouge les points problématiques : 0,4 m annoncés, indice de confiance "Excellente" à tort, mer jugée très clapoteuse

Après correction, en vert ce qui change : 0,7 m, indice de confiance ramené à "Correcte", mer jugée légèrement clapoteuse

Quatre choses changent, toutes visibles sur ces deux captures :

Le vent local est maintenant pris en compte dans la lecture du plan d'eau. Le modèle voit un vent onshore de 11 kt (≈20 km/h) — de quoi hacher n'importe quel spot exposé. Mais à Goulien, ce vent vient du secteur sud-ouest, celui que la pointe de Dinan filtre en partie (voir la photo plus haut : plan d'eau quasi plat malgré un vent modéré annoncé). Avant, le moteur ignorait ce relief et jugeait la mer "très clapoteuse" ; avec la table d'atténuation locale, elle passe à "légèrement clapoteuse" — et le texte vent suit, d'un "dégrade nettement" à un "atténue un peu".

La hauteur de vagues est réévaluée à la hausse : 0,4 m → 0,7 m. C'est l'effet direct de la recombinaison par composante décrite plus haut, renforcé par l'abri de vent qui allège la pénalité de clapot sur cette session — les deux corrections se cumulent.

La synthèse qualitative devient plus juste, dans les deux sens. "Petites vagues, peu de potentiel, mer très clapot" devient "Conditions médiocres, mer légèrement clapot" — plus encourageant, sans pour autant survendre la session : la surfabilité ne passe que de 1.2/5 à 1.5/5, toujours modeste.

L'indice de confiance, lui, baisse : d'"Excellente" à "Correcte". C'est le seul chiffre qui se dégrade, et c'est volontaire. Cette session combine une houle dominante courte (autour de 8 s) avec une deuxième composante bien plus longue (16 s, à peine 0,14 m) arrivant sous un angle différent. Prise isolément, chacune serait facile à lire ; combinées, leur effet réel sur le plan d'eau est plus difficile à garantir. L'ancien calibrage notait "Excellente" dès qu'une houle était bien orientée, sans regarder si une seconde s'y superposait. Le nouveau distingue les deux cas : une houle nette et seule reste "Excellente", deux houles efficaces superposées retombent à "Correcte" — une estimation plus honnête sur ce qu'elle peut vraiment garantir.

Un radar qui ne comptait pas comme le texte

En comparant une capture d'écran de l'app avec une photo prise au même moment sur la plage, un dernier détail était apparu, plus anecdotique mais révélateur : le petit radar de houle pouvait afficher moins de ronds que ce que le texte juste au-dessus annonçait. Ni l'un ni l'autre n'avait tort — ils répondaient simplement à deux questions différentes sans que ce soit dit nulle part.

Le texte compte les houles bien orientées pour le spot, quelle que soit leur taille. Le radar, lui, n'affichait que les houles dont la hauteur brute dépassait un certain seuil visuel — pensé à l'origine pour ne pas encombrer le dessin de traits imperceptibles. Sur cette même session du 3 septembre à 19h, les données du modèle donnaient :

HouleHauteurPériodeDirectionSecteurFacteur d'expositionEfficace ?
swell 11.04 m7.82 s264.0°171.0
swell 20.14 m15.97 s225.5°150.8

Ici, les deux houles passent déjà l'ancien seuil d'affichage — rien n'était caché sur ce créneau précis. Mais sur d'autres heures de cette même journée, une troisième houle à peine plus petite (8 cm) tombait sous ce seuil et disparaissait purement et simplement du radar, alors que le texte continuait de parler de "trois houles efficaces" à raison. Le seuil a depuis été supprimé pour de bon.

Le radar actuel sur cette session : deux houles affichées avec leur propre couleur d'énergie, positionnées selon leur période

Échelle de couleur utilisée par le radar pour l'énergie de chaque houle, du violet (faible) au rouge (forte)

Trois évolutions par rapport à l'ancien radar, visibles sur cette capture :

  1. Toutes les composantes s'affichent, quelle que soit leur hauteur — plus de seuil caché qui fait disparaître une houle réelle sans le dire.
  2. La couleur code l'énergie de chaque houle (hauteur² × période, la vraie grandeur physique, pas juste la hauteur seule), sur une échelle allant du violet (faible énergie) au rouge (forte énergie, grosse houle bretonne). Une houle courte peut être plus énergétique qu'une houle plus haute mais très longue, et inversement — la couleur le rend visible d'un coup d'œil.
  3. L'axe radial code la période : plus une houle est proche du centre, plus sa période est courte ; plus elle s'en éloigne, plus elle est longue.

La composante 2, ici, est un bon exemple pour lire ce nouveau radar : à 15,97 s, c'est une houle très longue — elle se dessine loin du centre, presque au bord — mais avec seulement 0,14 m et une énergie associée minuscule, elle reste violette, la couleur la plus froide de l'échelle. Une houle longue n'est donc pas forcément une houle qui compte — tout dépend de sa hauteur, et le radar le montre maintenant explicitement plutôt que de le sous-entendre.

De quoi expliquer, avec un peu de recul, l'écart constaté ces quelques jours de septembre entre ce qu'annonçait l'app et ce qu'on trouvait dans l'eau à Goulien. Rien de tout ça n'était visible depuis la plage — juste une intuition qui revenait trop souvent pour être un hasard.

Ce qui reste sous-évalué

Un dernier point, en toute honnêteté : sur une session à 11h le samedi 5 septembre, les vagues semblaient à la tête — j'aurais dit 1 m, peut-être 1,2 m sur les plus grosses séries. Avec les mêmes données brutes et tous les ajustements décrits ici, le calcul ne dépasse pas environ 0,8 m : la hauteur des vagues plafonne à ce niveau une fois les facteurs de direction et de période appliqués, quel que soit le réglage. Il reste donc encore sous-évalué sur ce cas précis, et deux pistes restent ouvertes, non tranchées : soit un axe d'amélioration existe encore — la réfraction et le shoaling de la houle à l'approche de la côte, qu'aucun des correctifs ci-dessus ne modélise —, soit la prévision NOAA/WW3 de ce jour-là, au large, n'était tout simplement pas assez précise. Il faudra multiplier les observations de terrain pour trancher entre les deux, ou croiser les estimations avec les relevés temps réel de la bouée CANDHIS des Pierres Noires, au large de la presqu'île de Crozon.

Les prévisions pour Goulien et les autres spots de la presqu'île de Crozon intègrent déjà ces corrections.

⚠️

Information importante

HappySession fournit des estimations basées sur des données disponibles et une lecture orientée surf. Les conditions réelles peuvent différer. Chaque pratiquant reste responsable et doit toujours faire preuve de prudence.