[Getdp] Question Sqrt() getdp
Olivier Castany
castany at quatramaran.ens.fr
Sun Apr 15 21:00:08 CEST 2012
Bonjour,
> Je suis en train de découvrir getdp, et j'ai une petite question qui
> vous semblera peut-être triviale... Le programme suivant
> (carre_err.pro) résout tout simplement un problème de Laplace sur un
> carré, et calcule ensuite les normes L2 et H1 de l'erreur commise
> par rapport à la solution exacte. Les valeurs de sortie sont le
> carré de chacune de ces normes.
>
> Ma question est toute simple : Comment faire sortir les erreurs
> elles-mêmes (et non pas leurs carrés !) ? J'ai essayé de placer la
> commande "Sqrt" à divers endroits de la commande "Print[
> errh1aucarre[Carre] , OnGlobal ] ;", mais sans succès. Je n'ai pas
> trouvé l'info dans le document de référence ou sur le wiki...
Je crois que la réponse à votre question est "ce n'est pas possible". En
effet, je pense que le logiciel ne permet pas de faire des opérations
mathématiques dans la partie "PostOperation". D'autre part il n'est pas non
plus possible de mettre quelque chose ('Sqrt') devant 'Integral' dans la
partie "PostProcessing". Il reste donc à traiter les valeurs obtenues à l'aide
d'un autre logiciel.
Pour sortir les valeurs de façon pratique, vers la sortie standard ou vers
un fichier nommé par exemple "result", on peut faire :
Print[ errh1aucarre[Carre], OnGlobal, Format Table ];
Print[ errh1aucarre[Carre], OnGlobal, File > "result", Format Table ];
Notez que suite au bug signalé sur la mailing list le 11 Mar 2012, il me
semble assez important de travailler avec la dernière version de GetDP si on
veut avoir des résultats exacts.
Comme j'ai passé quelque temps à relire votre code, j'ajoute ces commentaires :
* Pour le calcul de l'erreur dans H¹, ne faudrait-il pas ajouter |u-w|²
également ? En effet, si je ne me trompe pas, le carré de l'erreur dans H¹
est ∥u-w∥² = ∬ |∇(u)-∇(w)|² + |u-w|²
* JacobInt.pro : Je suis d'accord avec votre commentaires, là où vous avez
indiqué "à vérifier".
* Ce serait bien de restreindre la longueur des lignes du code source à moins
de 80 car c'est plus facile à relire.
* carre_err.pro : "Si {u} n'est pas précédé de "Dof", alors {u} fait
référence à une fonction test (souvent appelé "v" sur le papier)".
Il y a peut-être ici une confusion. La fonction test est _le terme de
droite du 'Galerkin'_. Le terme '{u}' sans 'Dof' peut aussi se trouver à
gauche et il représente dans ce cas la valeur "précédente" de 'u' (valeur
initiale s'il n'y a qu'une étape de résolution, ou valeur de l'itération
précédente s'il y a une résolution itérative).
* Dans le calcul de 'errl2aucarre' et 'errh1aucarre', vous pouvez utiliser
SquNorm[].
Cordialement,
O.C.