Skip to content
Snippets Groups Projects
Commit 546ceb33 authored by Julien Fontchastagner's avatar Julien Fontchastagner
Browse files

maj

parent 62c10cb5
No related branches found
No related tags found
No related merge requests found
......@@ -48,12 +48,12 @@ $$\left\\{\begin{aligned} \left.{\bf a}\wedge{\bf n}\right|\_{\Gamma_d} &= {\bf
En appliquant le principe détaillé dans le deuxième chapitre sur la [formulation en **rot-rot**](../../principe/continu/#formulation-variationnelle-1), on peut déduire la formulation faible de notre problème :
Trouver ${\bf a} \in \text{H}\_{0}({\bf rot},\Omega) = \\{ {\bf a} \in \text{H}({\bf rot},\Omega) : {\bf a}\wedge{\bf n}\|\_{\Gamma_{d}} = 0\\}$, tel que :
Trouver ${\bf a} \in \textbf{H}\_{0}({\bf rot},\Omega) = \\{ {\bf a} \in \textbf{H}({\bf rot},\Omega) : {\bf a}\wedge{\bf n}\|\_{\Gamma_{d}} = 0\\}$, tel que :
$$\forall {\bf a'} \in \text{H}\_{0}({\bf rot},\Omega),~~ \left(\mu^{-1}\\,{\bf rot}\\,{\bf a}\\,,\\,{\bf rot}\\,{\bf a'}\right)\_{\Omega} + \left(\mu^{-1}\\,{\bf b_r}\\,,\\,{\bf rot}\\,{\bf a'}\right)\_{\Omega_a} + \left( -{\bf j_s} \\,,\\, {\bf a'}\right)\_{\Omega_c}= 0$$
$$\forall {\bf a'} \in \textbf{H}\_{0}({\bf rot},\Omega),~~ \left(\mu^{-1}\\,{\bf rot}\\,{\bf a}\\,,\\,{\bf rot}\\,{\bf a'}\right)\_{\Omega} + \left(\mu^{-1}\\,{\bf b_r}\\,,\\,{\bf rot}\\,{\bf a'}\right)\_{\Omega_a} + \left( -{\bf j_s} \\,,\\, {\bf a'}\right)\_{\Omega_c}= 0$$
{{% notice warning %}}
Rappelons ici que la formulation ci-dessus ne conduit pas à une solution unique comme vu dans les chapitres précédents, il nous faudra rajouter une condition de jauge sur ${\bf a}$ pour pouvoir le calculer en 3D (jauge de Coulomb ou Jauge d'arbre).
Rappelons ici que la formulation ci-dessus ne conduit pas à une solution unique comme vu dans les chapitres précédents, il nous faudra rajouter une condition de jauge sur ${\bf a}$ pour pouvoir le calculer en 3D (jauge de Coulomb ou jauge d'arbre).
{{% /notice %}}
......
......@@ -3,14 +3,143 @@ title: Problèmes 3D
weight: 34
#pre: "<b>3. </b>"
chapter: false
math: true
---
## Conditions de Jauge
## Conditions de Jauge sur le potentiel vecteur magnétique
Nous avons déjà vu plusieurs fois précédemment que le potentiel vecteur
magnétique ${\bf a}$ était définit à un champ de gradient près et qu'il était
donc nécessaire de le jauger pour assurer l'unicité de la solution.
Dans le chapitre précédent, [deux méthodes ont été présentées](../../../principe/discret/whitney/#condition-de-jauge)
et nous allons maintenant voir leur application à nos problèmes ainsi
que la manière de les définir dans GetDP.
### Jauge de Coulomb
Par application directe de la [**méthode du chapitre 2**](http://localhost:1313/ensem/emag-bf/principe/discret/whitney/#jauge-de-coulomb),
La formulation en potentiel vecteur dans le domaine discret est :
$$\boxed{\left\\{\begin{aligned}&\text{Trouver}~{\bf a_h} \in W_0^1,~\xi_h \in W_0^0~\text{tels que :} \\\\ &\left(\mu^{-1}\\,{\bf rot\\,a_h},{\bf rot\\,a_h'}\right)\_{\Omega} + \left(\mu^{-1}\\,{\bf b_r},{\bf rot\\,a_h'}\right)\_{\Omega_a} + \left(-{\bf j_s},{\bf a_h'}\right)\_{\Omega} + \left({\bf grad}\\,\xi_h,{\bf a_h'}\right)\_{\Omega} = 0,~ \forall\\,{\bf a_h'} \in W_0^1 \\\\ &\left({\bf a_h},{\bf grad}\\,\xi_h'\right)\_{\Omega} = 0, \forall \\, \xi'_h \in W_0^0 \end{aligned}\right.}$$
où $W_0^1$ et $W_0^0$ approximent respectivement $\textbf{H}\_{0}({\bf rot},\Omega)$
et $\text{H}\_{0}({\bf grad},\Omega)$.
Dans GetDP, il faudra d'abord définir ces deux espaces fonctionnels :
```c++
Constraint {
{Name Dirichlet ;
Case {
{ Region Dirichlet ; Type Assign ; Value 0. ; }
}
}
}
FunctionSpace {
{ Name Hrot ; Type Form1 ; // W_0^1
BasisFunction {
{ Name se ; NameOfCoef ae ; Function BF_Edge ;
Support Region[{Domaine}] ; Entity EdgesOf[All] ; } }
Constraint {
{ NameOfCoef ae ; EntityType EdgesOf ; NameOfConstraint Dirichlet ; }
}
}
{ Name Hgrad ; Type Form0 ; // W_0^0
BasisFunction {
{ Name sn ; NameOfCoef xin ; Function BF_Node ;
Support Region[{Domaine}] ; Entity NodesOf[All] ; } }
Constraint {
{ NameOfCoef xin ; EntityType NodesOf ; NameOfConstraint Dirichlet ; }
}
}
}
```
Puis la formulation correspondante (exemple pour un problème sans aimants avec
lois de comportement magnétiques linéaires) :
```c++
Formulation {
{ Name Magnetostat ; Type FemEquation ;
Quantity {
{ Name a ; Type Local ; NameOfSpace Hrot ; }
{ Name xi ; Type Local ; NameOfSpace Hgrad ; }
}
Equation {
Integral { [ nu[] * Dof{d a} , {d a} ];
In Domaine; Jacobian Jvol; Integration Integ; }
Integral { [ -js[] , {a} ];
In Bobines; Jacobian Jvol; Integration Integ; }
Integral{ [ Dof{Grad xi} , {a} ];
In Domaine; Jacobian Jvol; Integration Integ; }
Integral { [ Dof{a} , {Grad xi} ];
In Domaine; Jacobian Jvol; Integration Integ; }
}
}
}
```
Le principal inconvénient de cette méthode est d'aboutir à une taille de système
conséquente conduisant à des temps de calcul élévés, c'est pourquoi on lui préfèrera
généralement la technique suivante.
### Jauge d'arbre
Comme vu dans [cette partie](../../../principe/discret/whitney/#jauge-darbre),
nous allons construire un arbre sur l'ensemble des arrêtes du domaine en partant
des surfaces sur lesquelles sont imposées des conditions particulières
(dans le cas présent, les conditions de Dirichlet) et imposer une circulation nulle
de ${\bf a}$ le long de cet arbre directement dans l'espace fonctionnel associé.
Ce dernier sera alors noté $W_{0,\text{JA}}^1$, et notre formulation devient ainsi :
$$\boxed{\left\\{\begin{aligned}&\text{Trouver}~{\bf a_h} \in W\_{0,\text{JA}}^1 ~\text{tel que :} \\\\ & \left(\mu^{-1}\\,{\bf rot\\,a_h},{\bf rot\\,a_h'}\right)\_{\Omega} + \left(\mu^{-1}\\,{\bf b_r},{\bf rot\\,a_h'}\right)\_{\Omega_a} + \left(-{\bf j_s},{\bf a_h'}\right)\_{\Omega} = 0,~ \forall\\,{\bf a_h'} \in W\_{0,\text{JA}}^1\end{aligned}\right.}$$
La taille du système sera ainsi fortement réduite par rapport au cas précédent puisqu'on s'affranchit du calcul
de la grandeur nodale $\xi$.
En pratique, dans GetDP cela se définit de la façon suivante :
```c++
Constraint {
{Name Dirichlet ;
Case {
{ Region Dirichlet ; Type Assign ; Value 0. ; }
}
}
{ Name Jauge_arbre ; Type Assign ;
Case {
{Region Domaine ; SubRegion Dirichlet ; Value 0. ; }
}
}
}
FunctionSpace {
{ Name Hrot ; Type Form1 ; // W_(0,JA)^1
BasisFunction {
{ Name se ; NameOfCoef ae ; Function BF_Edge ;
Support Region[{Domaine}] ; Entity EdgesOf[All] ; } }
Constraint {
{ NameOfCoef ae ; EntityType EdgesOf ; NameOfConstraint Dirichlet ; }
{ NameOfCoef ae ; EntityType EdgesOfTreeIn ; EntitySubType StartingOn ;
NameOfConstraint Jauge_arbre ; }
}
}
}
```
**Et la formulation sera strictement la même que dans les cas 2D précédents.**
---
## Applications
### Retour sur notre inductance pour électronique de puissance
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment