J'ai analysé les erreurs sur les faibles profondeurs avec la passe à macrorugo.
Ça vient du calcul de Cf avec la formule :
Cf=2/(5.1*log10(pf/ks-1)+6)^2
Avec pf = 0.05 et ks = 0.15, on obtient un résultat en nombre complexe sous Matlab/Scilab et le calcul continue comme si de rien n'était.
Avec Cassiopée, en typescript, ça n'aime pas du tout ce genre de chose d'où l'absence de résultat et c'est tant mieux car le résultat du calcul doit être faux de toute façon.
Le problème vient de -->log10(pf/ks-1) = - 0.1760913 + 1.3643764i
Il faut que l'argument de log10 soit strictement positif pour avoir un résultat réel.
D'un côté, il est logique qu'on ne puisse pas faire un calcul correct si la rugosité ks est supérieure à la hauteur d'eau pf car on ne peut pas avoir un écoulement homogène (la rugosité est émergente !).
Est-ce que je rajoute un test pour dire que ce cas n'est pas calculable ? Ou peut-on se satisfaire d'une adaptation de la formule de Cf (avec une limite min, une valeur arbitraire de Cf...) ?
By Dorchies David on 2019-09-26T18:04:37 (imported from GitLab)
a priori tu as une mauvaise version (désolé) du coup la formule qui prend en compte la hauteur au-dessus des rugosités est :
Cf=2/(5.1*log10(pf/ks)+6)^2 (voir Rice 1999 en PJ)
Cf est toujours réel et positif pour pf> 0.01* ks. On peut faire un test pour limiter mais je ne pense pas qu'on mettent 2 ou 3 mm d'eau au dessus des rugosités de fond.
bonne journée,
By Dorchies David on 2019-09-30T09:45:36 (imported from GitLab)