getdp-0.79: pb de post-processing avec AirInf

Christophe Geuzaine Christophe.Geuzaine at ulg.ac.be
Wed Mar 7 08:17:21 CET 2001


trophime christophe wrote:
> 
> Je continue mes petits tests avec cette fois les formulations
> magnetodynamiques
> du manuel utilisateur. Il me semble qu'il manque un terme dans la
> "seconde equation",
> quelquechose du genre :
> 
>         Galerkin { [ sigma[] * (Velocity[] *^ Dof{d a}) , {ur} ] ; In
> DomainC_Mag ;
>                    Jacobian Vol ; Integration CurlCurl ; }
> 
> puisque il y a le terme Velocity \times \curl a dans la "premiere
> equation".

Non, non. Essaie de reetablir la formulation.

> Et du coup il faut rakouter un vecteur Velocity dans les definitions des
> fonctions dans CoreMassive.pro. Je comprends d'ailleurs pas pourquoi le
> programme
> ne dit pas que cette fonction manque dans l'exemple original.

Parce que la fonction est declaree par "DefineFunction[Velocity]" au
debut de la formulation. Le role de ce DefineFunction est de pouvoir
ecrire des formulations de maniere generale (avec toute une serie de
termes qui peuvent etre inutiles pour certaines applications). Jette par
example un oeil a l'explication de la section 2.2 (note 2) ou 3.1.

> 
> J'ai essaye de fixer le potentiel electrique (enfin \grad U si j'ai bien
> compris).
> Dans ce cas la resolution s'acheve pour un residu qui n'est pas en deca
> du critere
> d'arret fixe dans le SOLVER.PAR (valeur par defaut 1.e-8) :
> 
>   65  8.5403044e-07
>   66  8.5374479e-07
>   67  8.4690829e-07
>   68  6.9090031e-07
> Solver    : 68 Iterations / Residual: 6.909e-07
> 
> Je me demande si c'est normal.

Oui. Le critere d'arret est relatif (i.e. la convergence est calculee
par rapport au premier residu).

> 
> Enfin si je veux faire de l'instationnaire et non plus du "Fourier"
> comme
> dans l'exemple comment je fais pour par exemple imposer U(t). J'ai
> simplement essaye
> d'introduire une fonction dependant du temps :
> 
>     Time_Fct_Ramp[] = ($Time < Tau) ? $Time : Tau;
> 
> et apres d'imposer dans ce cas le courant :
> 
>     { Name Current_2D ;
>       Case {
>         { Region Ind ; Value Val_I_ * Time_Fct_Ramp[]; }
>       }
>     }

Le probleme vient du fait que tu introduis la variation temporelle dans
la valeur de la contrainte. Il faut mettre la partie qui depend du temps
(qui sera reevaluee a chaque pas de temps) dans le champ TimeFunction
(cf. section 3.3, note 4). La raison en est que seule cette partie sera
evaluee a chaque pas de temps, et multipliera la valeur donnee apres le
champ Value.

> 
> avec pour post-processing :
>     Print[ I, OnRegion #{Ind},File "Core_m_I.pos" , Format TimeTable] ;
> 
> Ca marche pas... Je me demande si c'est le meme probleme que celui
> que j'ai deja rencontre avec ma fonction de distribution de courant
> (dans ce cas je vois pas comment faire pour m'en sortir) ou si c'est
> autre chose.
> 
> Encore une question, est-il possible de  "mettre en serie"
> un nouvel inducteur avec le premier dans l'exemple (dans la doc seul
> le cas "en parallele" en brievement decrit)?
> 

Oui, le principe est le meme : il suffit d'ecrire les relations
branches-noeuds en consequence. Je mettrai un example plus complet dans
la prochaine version. En tout cas, merci bcp pour toutes tes
"interrogations" : elles me sont tres utiles pour la redaction de la
future
version du manuel.


Bon travail,

-- 
Christophe Geuzaine

Tel: 32 (0) 4 366 37 10    http://geuz.org
Fax: 32 (0) 4 366 29 10    mailto:Christophe.Geuzaine at ulg.ac.be