infos sur GetDP pour Axi
trophime christophe
trophime at labs.polycnrs-gre.fr
Fri Mar 2 09:51:18 CET 2001
Christophe Geuzaine wrote:
>
>
> Les nouvelles definitions des espaces fonctionnels sont-elles
> necessaires ?
>
> Il faut veiller a
>
> 1) definir les conditions aux limites de maniere coherente (ici, flux
> nul sur l'axe de symmetrie, ce qui implique l'annullation de la
> composante tangentielle du postentil vecteur, et donc, dans ce cas
> simple, la mise a zero de tous les degres de liberte sur l'axe de
> symmetrie) dans un champ "Constraint".
>
Voila ce que j'ai mis pour les conditions aux limites :
Constraint {
{ Name MagneticVectorPotential_Axi ;
Case {
{ Region SurfaceAxe ; Value 0. ; }
{ Region SurfaceGInf ; Value 0. ; }
}
}
> 2) definir l'axe de symmetrie dans le maillage comme etant l'axe x=z=0.
>
> > ....
>
> Oui, cependant, il faut specifier le jacobien dans les grandeurs de
> post-processing (par example, { Name b ; Value { Local { [ {d a} ] ; In
> Domain_Mag ; Jacobian VolAxi ; } ).
Suite a vos remarques, j'ai repris le probleme en ajoutant "Jacobian
VolAxi"
dans la definition de b et h. Ca ne change rien au resultat et en plus
j'obtiens
une erreur :
Operation : PostOperation 3/4
> 'CoreSta_b2.cut'
Info : Initializing Grid (20,20,1)
Error : Null Determinant in 'ChangeOfCoord_Form2P'
Je vous joins mes fichiers de donnees (MagSta_a_Axi.pro, CoreSta_Axi.pro
et core2.geo)
>
> >
> > Une autre question: est-ce qu'il est possible de definir une densite de
> > courant
> > qui varie en 1/r?
> >
>
> Oui, il suffit de definir une fonction qui depend des coordonnees (i.e.
> des fonctions X[] et Y[]).
>
C'est bon de ce cote la j'ai reussi a mettre ma distribution de courant
en 1/r.
Par ailleurs j'ai une remarque. Quand vous definissez les fonctions de
Green
je pense qu'il y a une precision a apporter. La fonction de Green 2D
n'est uniquement
valable qu'en 2D plan. Dans le cas de l'axi elle est differente. En
particulier on a :
r = \sqrt{r^2-2 a r \cos\theta + (z-z_a)^2},
et la fonction de Green est alors de type 1/r a un facteur 2 \pi pres
(bien sur il
faut encore intégrer sur \theta).
Avez-vous essayer des couplages avec des methodes integrales de
frontieres pour le
cas axisymetrique?
Merci et bonne journee.
-------------- next part --------------
/* -------------------------------------------------------------------
File "CoreSta.pro"
This file defines the problem dependent data structures for the
static core-inductor problem.
To compute the solution: getdp CoreSta -msh Core.msh -solve MagSta_a_2D
To compute post-results: getdp CoreSta -msh Core.msh -pos Map_a
or getdp CoreSta -msh Core.msh -pos Cutb_a
getdp CoreSta_Axi -pre MagSta_a_Axi -m core3.msh -cal -pos Map_a
------------------------------------------------------------------- */
Group {
Air = Region[ 41 ];
Ind = Region[ 40 ];
AirInf = Region[ 42 ];
//SurfaceInd = Region[ 43 ];
SurfaceAxe = Region[ 44 ];
SurfaceGInf = Region[ 45 ];
DomainCC_Mag = Region[ {Air, AirInf, Ind} ] ;
DomainC_Mag = Region[ {} ] ;
DomainS_Mag = Region[ {Ind} ] ; // Stranded inductor
DomainInf = Region[ {AirInf} ] ;
Val_Rint = 400.e-3 ;
Val_Rext = 500.e-3 ;
Domain_Mag = Region[ {DomainCC_Mag, DomainC_Mag} ] ;
}
Function {
mu0 = 4.e-7 * Pi ;
nu [ Region[{Air, Ind, AirInf}] ] = 1. / mu0 ;
Sc[ Ind ] = 25.e-3 * 50.e-3;
Current[ Ind ] = 75.e-3*Log[100./75.]*50.e-3 / Sc[];
Distribution[ Region[{Ind}] ] = 1.0/$X;
}
Constraint {
{ Name MagneticVectorPotential_Axi ;
Case {
{ Region SurfaceAxe ; Value 0. ; }
{ Region SurfaceGInf ; Value 0. ; }
}
}
Val_I = 100000. ;
{ Name SourceCurrentDensityZ ;
Case {
{ Region Ind ; Value Val_I * Current[] ; }
}
}
}
Include "Jacobian_Lib.pro"
Include "Integration_Lib.pro"
Include "MagSta_a_Axi.pro"
PostOperation Map_a UsingPost MagSta_a_Axi {
Print[ j_theta, OnElementsOf DomainS_Mag, File "CoreSta_j_theta2.pos"] ;
Print[ a_theta, OnElementsOf Domain_Mag, File "CoreSta_a_theta2.pos"] ;
//Print[ b, OnElementsOf Domain_Mag, File "CoreSta_b2.pos"] ;
Print[ b, OnLine {{0,0,0}{250.e-3, 0, 0}} {500}, File "CoreSta_b2.cut" , Format Gnuplot ] ;
Print[ a_theta, OnLine {{0,0,0}{250.e-3, 0, 0}} {500}, File "CoreSta_a2.cut" , Format Gnuplot ] ;
}
e = 1.e-5 ;
//PostOperation Cutb_a UsingPost MagSta_a_Axi {
// Print[ b, OnLine{{e,e,0}{0.12,e,0}} {1000}, File "k_a"] ;
//}
-------------- next part --------------
/* -------------------------------------------------------------------
File "MagSta_a_Axi.pro"
Magnetostatics - Magnetic vector potential a formulation (Axi)
-------------------------------------------------------------------
I N P U T
---------
GlobalGroup : (Extension '_Mag' is for Magnetic problem)
-----------
Domain_Mag Whole magnetic domain
DomainS_Mag Inductor regions (Source)
Function :
--------
nu[] Magnetic reluctivity
Constraint :
----------
MagneticVectorPotential_Axi
Fixed magnetic vector potential (Axi)
(classical boundary condition)
SourceCurrentDensityY Fixed source current density (in Y direction)
*/
Group {
DefineGroup[ Domain_Mag, DomainS_Mag ] ;
}
Function {
DefineFunction[ nu ] ;
DefineFunction[ Distribution ] ;
}
FunctionSpace {
// Magnetic vector potential a (b = curl a)
{ Name Hcurl_a_Mag_Axi ; Type Form1P ;
BasisFunction {
// a = a s
// e e
{ Name se ; NameOfCoef ae ; Function BF_PerpendicularEdge ;
Support Domain_Mag ; Entity NodesOf[ All ] ; }
}
Constraint {
{ NameOfCoef ae ; EntityType NodesOf ;
NameOfConstraint MagneticVectorPotential_Axi ; }
}
}
// Source current density js (fully fixed space)
{ Name Hregion_j_Mag_Axi ; Type Vector ;
BasisFunction {
{ Name sr ; NameOfCoef jsr ; Function BF_RegionZ ;
Support DomainS_Mag ; Entity DomainS_Mag ; }
}
Constraint {
{ NameOfCoef jsr ; EntityType Region ;
NameOfConstraint SourceCurrentDensityZ ; }
}
}
}
Formulation {
{ Name Magnetostatics_a_Axi ; Type FemEquation ;
Quantity {
{ Name a ; Type Local ; NameOfSpace Hcurl_a_Mag_Axi ; }
{ 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 { [ - Distribution[] * Dof{js} , {a} ] ; In DomainS_Mag ;
Jacobian VolAxi ; Integration CurlCurl ; }
}
}
}
Resolution {
{ Name MagSta_a_Axi ;
System {
{ Name Sys_Mag ; NameOfFormulation Magnetostatics_a_Axi ; }
}
Operation {
Generate Sys_Mag ; Solve Sys_Mag ; SaveSolution Sys_Mag ;
}
}
}
PostProcessing {
{ Name MagSta_a_Axi ; NameOfFormulation Magnetostatics_a_Axi ;
PostQuantity {
{ Name a ; Value { Local { [ {a} ] ; In Domain_Mag ; } } }
{ Name a_theta ; Value { Local { [ CompZ[{a}] ] ; In Domain_Mag ; } } }
{ Name b ; Value { Local { [ {d a} ] ; In Domain_Mag ; Jacobian VolAxi ;} } }
{ Name h ; Value { Local { [ nu[] * {d a} ] ; In Domain_Mag ; Jacobian VolAxi ;} } }
{ Name j_theta ; Value { Local { [ Distribution[] * CompZ[{js}] ] ; In Domain_Mag ; } } }
}
}
}
-------------- next part --------------
/* -------------------------------------------------------------------
File "Core.geo"
This file is the geometrical description used by GMSH to produce
the file "Core.msh".
------------------------------------------------------------------- */
r_int_Ind = 75.e-3 ;
r_ext_Ind = 100.e-3 ;
h_Ind = 25.e-3;
rInt = 400.e-3 ;
rExt = 500.e-3 ;
s = 1. ;
p0 = 6.e-3 *s;
pCorex = 2.e-3 *s;
pCorey0 = 4.e-3 *s;
pCorey = 2.e-3 *s;
pIndx = 2.5e-3 *s;
pIndy = 2.5e-3 *s;
pInt = 6.25e-3 *s; pExt = 6.25e-3 *s;
Point(1) = {0,0,0,pCorey};
Point(2) = {0,h_Ind,0,pCorey};
Point(3) = {0,-h_Ind,0,pCorey};
Point(4) = {r_int_Ind,0,0,pIndx};
Point(5) = {r_ext_Ind,0,0,pIndx};
Point(6) = {r_ext_Ind,h_Ind,0,pIndx};
Point(7) = {r_int_Ind,h_Ind,0,pIndx};
Point(8) = {r_int_Ind,-h_Ind,0,pIndx};
Point(9) = {r_ext_Ind,-h_Ind,0,pIndx};
Point(10) = {rInt,0,0,pInt};
Point(11) = {rExt,0,0,pInt};
Point(12) = {0,rInt,0,pInt};
Point(13) = {0,rExt,0,pInt};
Point(14) = {0,-rInt,0,pInt};
Point(15) = {0,-rExt,0,pInt};
Line(1) = {1,4};
Line(2) = {4,5};
Line(3) = {5,10};
Line(4) = {10,11};
Line(5) = {5,6};
Line(6) = {6,7};
Line(7) = {7,4};
Line(8) = {4,8};
Line(9) = {8,9};
Line(10) = {9,5};
Line(11) = {7,2};
Line(12) = {2,1};
Line(13) = {1,3};
Line(14) = {3,8};
Line(15) = {2,12};
Line(16) = {12,13};
Line(17) = {3,14};
Line(18) = {14,15};
Circle(19) = {14,1,10};
Circle(20) = {15,1,11};
Circle(21) = {10,1,12};
Circle(22) = {11,1,13};
Line Loop(100) = {8,9,10,5,6,7};
Plane Surface(30) = {100}; /* Inducteur */
Line Loop(101) = {13,14,-8,-7,11,12};
Line Loop(102) = {17,19,-3,-10,-9,-14};
Line Loop(103) = {-15,-11,-6,-5,3,21};
Plane Surface(31) = {101}; // Air
Plane Surface(32) = {102}; // Air
Plane Surface(33) = {103}; // Air
Line Loop(104) = {18,20,-4,-19};
Line Loop(105) = {-16,-21,4,22};
Plane Surface(34) = {104}; // Infini
Plane Surface(35) = {105}; // Infini
Physical Surface(40) = {30};
Physical Surface(41) = {31,32,33};
Physical Surface(42) = {34,35};
//Physical Line (43) = {100};
Physical Line (44) = {-16,-15,12,13,17,18};
Physical Line (45) = {20,22};