quelques questions sur l'Axi

Christophe Geuzaine Christophe.Geuzaine at ulg.ac.be
Tue Mar 20 20:04:55 CET 2001


trophime christophe wrote:
> 
> Il y a des points que je comprends pas bien. Est-ce que pourrai eclaire
> ma
> lanterne?
> 
> 1) Pour la formulation MagDyn_Axi j'ai declare la formulation de la
> facon
> suivante :
> 
>   Formulation {
>     { Name Magnetodynamics_av_Axi ; Type FemEquation ;
>       Quantity {
>         { Name a  ; Type Local  ; NameOfSpace Hcurl_a_Mag_Axi ; }
>         { Name ur ; Type Local  ; NameOfSpace Hregion_u_Mag_Axi ; }
>         { Name I  ; Type Global ; NameOfSpace Hregion_u_Mag_Axi [I] ; }
>         { Name U  ; Type Global ; NameOfSpace Hregion_u_Mag_Axi [U] ; }
>         { Name js ; Type Local  ; NameOfSpace Hregion_j_Mag_Axi ; }
>       }
>       Equation {
>         Galerkin { [ nu[] * Dof{d a} , {d a} ] ; In Domain_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
> 
>         Galerkin { DtDof [ sigma[] * Dof{a} , {a} ] ; In DomainC_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
>         Galerkin { [ sigma[] * Factor[] * Dof{ur} , {a} ] ; In
> DomainC_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
> 
>         Galerkin { [ - sigma[] * (Velocity[] *^ Dof{d a}) , {a} ] ;
>                    In DomainV_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
> 
>         Galerkin { [ - Dof{js} , {a} ] ; In DomainS_Mag ;
>                    Jacobian VolAxi ;
>                    Integration CurlCurl ; }
> 
>         Galerkin { DtDof [ sigma[] * Dof{a} , {ur} ] ; In DomainC_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
>         Galerkin { [ sigma[] * Factor[] * Dof{ur} , {ur} ] ; In
> DomainC_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
>         GlobalTerm { [ Dof{I} , {U}  ] ; In DomainC_Mag ; }
>       }
>     }
>   }
> 
> sans rien changer aux definitions des espaces fonctionnels fournis dans
> l'exemple
> du manuel.
> 
> La fonction Factor[] (qui vaut 1/(2*Pi) dans le cas Axi) est juste la
> pour que
> je garde la meme formulation que le 2D.
> 
> Dans le post-processing je definis les grandeurs suivantes :
> 
>         { Name V ; Value { Local { [ CompZ[{ur}] ]          ; In
> Domain_Mag ; Jacobian VolAxi ;} } }
>         { Name jc ;
>           Value {
>             Local { [ - sigma[]*CompZ[Factor[] *{ur}] ] ; In DomainC_Mag
> ; Jacobian VolAxi ;}
>           }
>         }
> 
> En toute logique je me dis que si je trace V (que je multiplie ensuite
> par sigma[]/(2*Pi)) et jc
> par exemple dans Gnuplot je devrais trouver la meme chose... Et bien
> non! La je comprends pas ce
> qui ce passe.

C'est la fonction Factor[] qui pose probleme (aussi bien dans la
formulation que dans le post-pro), et qui doit etre completement
supprimee. A partir du moment ou tu utilises un jacobien de
transformation axisymetrique, tu ne dois pas rajouter ce facteur
manuellement. La formulation est valable aussi bien dans le cas 2D plan
que 2D axi. La chose qu'il faut bien saisir, c'est que les inconnues en
potentiel vecteur sont des _circulations_ de ce potentiel le long d'un
arc de cercle unitaire. Tu devrais introduire des corrections si tu
pre-supposais connue une grandeur qui n'est pas tansformee, alors
qu'elle devrait (e.g. une densite de courant imposee par l'intermediaire
d'une fonction, sans interpolation).


> 
> Par ailleurs j'ai fait un modele "complet" de deux inducteurs
> concentriques
> et un modele avec symetrie suivant l'axe Or pour avoir simplement une
> moitie du
> probleme precedent. J'obtiens bien les memes resultats en terme de
> potentiel a,v et
> de densite de courant mais par contre pour le courant total I j'obtiens
> des resultats
> totalement incoherent. Mais cette fois je pense qu'il y a un "probleme"
> dans la definition
> des contraintes... J'ai simplement ajoute une "ligne" dans la definition
> des Group sans
> preciser de contrainte pour a et ur. Au niveau de a c'est bien un
> neumann homogene qui vient
> mais pour ur qu'est-ce qu'il faudrait mettre?

Tu dois imposer soit le courant global, soit la tension globale.

> 
> 2) Je voudrais juste revenir sur le probleme MagSta_a dans le cas Axi.
> La definition de
> l'espace fonctionnel pour js dans l'exemple implique que js est constant
> par morceau.
> Pour introduire une densite de courant source en 1/r j'ai defini
> l'espace comme suit :
> 
>     // Source current density js (fully fixed space)
>     { Name Hregion_j_MagSta_Axi ; Type Vector ;
>       BasisFunction {
>         { Name sr ; NameOfCoef jsr ; Function BF_NodeZ ;
>           Support DomainS_Mag ; Entity NodesOf[DomainS_Mag ]; }
>       }
>       Constraint {
>         { NameOfCoef jsr ; EntityType NodesOf ;
>           NameOfConstraint SourceCurrentDensityZ ; }
>       }
>     }
> 
> et dans le fichier de donnees j'ai par exemple :
> 
>     Distribution[ Region[{Ind}] ] = Current[]*75.e-3 / ((75.e-3 *
> Log[100./75.] * 50.e-3) * X[]);
> 
> avec la contrainte :
> 
>     { Name SourceCurrentDensityZ ;
>       Case {
>         // To use if Static analysis
>         { Region DomainS_Mag ; Value Distribution[] ; }
>       }
>     }
> 
> Si je comprends bien maintenant mon js est "piecewise linear"! et ca
> marche bien pour les
> cas js uniforme et en 1/r.
> 
> Si je veux que la distribution soit prise "exactement", je me suis dit
> que je peux simplement definir la formulation magnetostatique suivante :
> 
>     { Name Magnetostatics_a_Axi ; Type FemEquation ;
>       Quantity {
>         { Name a  ; Type Local ; NameOfSpace Hcurl_a_MagSta_Axi ; }
>       }
>       Equation {
>         Galerkin { [ nu[] * Dof{d a} , {d a} ]  ; In Domain_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
>         Galerkin { [ - Distribution[] , {a} ] ; In DomainS_Mag ;
>                    Jacobian VolAxi ; Integration CurlCurl ; }
>       }
>     }
> 
> Mais si je fais ca tout se passe comme si js (ie Distribution) etait
> nul???
> 

Oui, il manque encore qques tests de coherence dans les formulations.
Ton erreur vient du fait que Distribution[] est une fonction scalaire,
et que tu en fait le produit scalaire avec une 1-forme. Tu devrais donc
ecrire :

Galerkin { [ - Vector[0,0,Distribution[]] , {a} ] ; In DomainS_Mag ;
            Jacobian VolAxi ; Integration CurlCurl ; }



> 3) Enfin je me suis dit que le resultat du probleme magnetodynamique
> devrait
> me redonner au bout d'un temps assez grand le resultat du probleme
> magnetostatique.
> J'ai calcule la resistance de mes deux inducteurs (R= \frac{\Pi
> (r_{int}+r_{ext})}{\sigma S}
> avec S la section de l'inducteur considere). J'ai impose I=1/R pour le
> cas stationnaire
> et U=1V pour le cas instantionnaire. J'arrive bien a retrouver les memes
> densites
> de courants, courants totals mais jamais a moins de 1% (ce qui est bien
> en soi).
> J'ai beau maille plus finiment et mettre plus de pas temps l'erreur
> reste la meme.
> Ca m'etonne un peu.

Si je te suis, tu imposes un "step" de tension ? je ne sais pas quels
parametres tu as utilises pour la resolution temporelle. Il faut garder
a l'esprit que l'integration temporelle est dissipative (numeriquement).
Si tu as utilise Euler implicite, le schema est seulement d'ordre 1. Tu
pourrais essayer Cranck-Nicholson (i.e. theta=0.5, et qui est d'ordre 2,
mais pas inconditionnellement stable). Il faudrait surtout qu'on
implemente des schemas temporels d'ordre plus eleve dans GetDP.

> 
> 4) Par ailleurs, il y a toujours le meme probleme avec la transformation
> pour AirInf
> si je remets des valeurs de Rint et Rext identiques dans le fichier de
> donnees et le
> fichier equation.

Les differences sont-elles petites ? Comme le maillage ne respecte pas
exactement les frontieres courbes, ca pourrait expliquer que certains
points soient hors de l'intervalle. Sinon, envoie-moi ton fichier de
donnees, que je jette un oeil.

> Au niveau du calcul des densites de courants en
> magnetostatique
> il y a aussi toujours un probleme a pas de temps initial "0" (nan et
> inf) mais bon
> ca c'est pas vraiment ni genant ni anormal.

Oui, j'ai encore corrige un petit bug a ce propos il y a qques jours. Ca
devrait etre bon pour la prochaine version.

-- 
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