Il faut travailler par étape: terminer une étape, l'archiver avant de démmarer la suivante. Ceci de mainière à éviter de tout perdre et aussi pour pouvoir présenter à tout moment l'état du projet et éviter de répondre "ça tourne presque".
Il faudra construire un ou plusieurs fichiers contenant les valeurs de a,b,k,h,f,g. Le solveur lira alors ces fichiers ainsi que le fichier de la triangulation et produira un dessin des courbes de niveau et un fichier résultat.
Attention la syntaxe de Gfem a légèrement changée. Par exemple:
pi = 4*atan(1); buildmesh(x,y,ref,1000) { border(t=0,pi*2,50) { ref = 1; x = cos(t); y = sin(t); }; border(t=0,2*pi,20) { ref = 2; x = 0.3+0.3*cos(-t); y = 0.3*sin(-t); }; }; fonction g1(w) g1 = 0.2*sin(x)*sin(x) + 0.02*y*y + 0.02*w; adaptmesh(g1(1)); savemesh("test.msh"); fonction g(w) g = (x*x+y*y+ 1.0e-10)*(ref>=2) ; fonction2 f(q,p) f = -4; fonction h(w) h = 2; save("f.dta",f(q,p)); save("g.dta",g(1)); save("h.dta",h(w)); solve(u);
L'implémentation de "save","savemesh", "adaptmesh" et de "solve" n'étant pas faite, il faudra les faire d'abord.
Ici adaptmesh opère très simplement en générant un fichier de valeurs à partir de g1 avec w=1. Ce fichier est un .mtr pour le trianguleur (voir plus bas).
Tout ces étapes sont obligatoires. A partir de maintenant il s'agit d'option complémentaires et facultatives.
solve(u;a,b,k,h,f,g);
Le langage permettant le calcul formel de dérivée, on peut étudier la sensitivitée par rapport à un paramètre. Par exemple, si le second membre est une fonction de t, f(t,x,y) définie par
fonction f(t) { f = x*(y+t^2) };
alors on pourra obtenir la dérivé en t de la solution de l'edp en changeant dans le problème f par fp défini par
fonction fp = deriv(f,t);
spline { ref=1; vertexlist { 0.1 0.2 normal(1,2) 1.2 3.4 corner 1.4 3.4 nocorner 1.5 3.8 }; };