Questions about GetDP - Valparaíso - Chile
Christophe Geuzaine
Christophe.Geuzaine at ulg.ac.be
Wed Jul 26 11:53:59 CEST 2000
Alejandro Angulo wrote:
>
> Christophe:
>
> I wrtie you again after a lot time to ask you a small
> question: How do I define the 'Joule Effect' to be
> able to use it in a MagnetoThermal Formulation (as the
> one shown in the GetDP manual - 6.10.5)?
> To carry out this formulation I have based myself on
> the paper 'Arrangement of phases and heating
> constraints in busbar' (Hedia, Henrotte, Meys, Dular y
> Legros / IEEE Trans. on Magn. Vol. 35, nº3, May 1999).
> There, the variable Qv appears (Heat density source,
> Joule effect), which I don't know how to define to the
> moment to carry out the formulation in GetDP (I have
> problems with the operator 'Dt', which is necessary to
> the moment to define the current density in function
> of the magnetic vector potencial)
>
Hi,
Here is the type of magneto-thermal formulation I often use in 2D :
'a-v' for the magnetodynamic part, and T for the thermal part. After all
the classic stuff (groups, functions, ...), I define the following
function spaces:
FunctionSpace {
/* Magnetic vector potential a (2D) */
{ Name Hcurl_a_Mag_2D ; Type Form1P ;
BasisFunction {
{ Name se ; NameOfCoef ae ; Function BF_PerpendicularEdge ;
Support DomMag ; Entity NodesOf[ All ] ; }
}
Constraint {
{ NameOfCoef ae ; EntityType NodesOf ;
NameOfConstraint MagneticVectorPotential_2D ; }
}
}
/* Gradient of Electric scalar potential (2D) */
{ Name Hregion_u_Mag_2D ; Type Form1P ;
BasisFunction {
{ Name sr ; NameOfCoef ur ; Function BF_RegionZ ;
Support DomainC_Mag ; Entity DomainC2_Mag ; }
}
GlobalQuantity {
{ Name U ; Type AliasOf ; NameOfCoef ur ; }
{ Name I ; Type AssociatedWith ; NameOfCoef ur ; }
}
Constraint {
{ NameOfCoef U ; EntityType Region ; NameOfConstraint Voltage_2D ;
}
{ NameOfCoef I ; EntityType Region ; NameOfConstraint Current_2D ;
}
}
}
/* temperature */
{ Name Hgrad_T ; Type Form0 ;
BasisFunction {
{ Name sn ; NameOfCoef Tn ; Function BF_Node ;
Support DomainConv_The ; Entity NodesOf[ All ] ; }
}
Constraint {
{ NameOfCoef Tn ; EntityType NodesOf ;
NameOfConstraint Initial_Temperature ; }
}
}
}
Then I define the two formulations (I've put only the basic terms: no
convection, no radiation, no global quantities, etc.):
Formulation {
{ Name Magnetodynamics_av_2D ; Type FemEquation ;
DefineQuantity {
{ Name a ; Type Local ; NameOfSpace Hcurl_a_Mag_2D ; }
{ Name ur ; Type Local ; NameOfSpace Hregion_u_Mag_2D ; }
{ Name T ; Type Local ; NameOfSpace Hgrad_T ; }
}
Equation {
Galerkin { [ nu[<T>[{T}]] * Dof{d a} , {d a} ] ;
In DomMag ; Jacobian Vol ; Integration ; }
Galerkin { DtDof [ sigma[<T>[{T}]] * Dof{a} , {a} ] ;
In DomMag_C ; Jacobian Vol ; Integration GaussCurl ; }
Galerkin { [ sigma[<T>[{T}]] * Dof{ur} , {a} ] ;
In DomMag_C ; Jacobian Vol ; Integration GaussCurl ; }
Galerkin { [ -Js[] , {a} ] ;
In DomMag_S ; Jacobian Vol ; Integration ; }
Galerkin { DtDof [ sigma[<T>[{T}]] * Dof{a} , {ur} ] ;
In ; Jacobian Vol ; Integration GaussCurl ; }
Galerkin { [ sigma[<T>[{T}]] * Dof{ur} , {ur} ] ;
In DomMag_C ; Jacobian Vol ; Integration GaussCurl ; }
}
}
{ Name Thermal_T ; Type FemEquation ;
Quantity {
{ Name T ; Type Local ; NameOfSpace Hgrad_T ; }
{ Name a ; Type Local ; NameOfSpace Hcurl_a_Mag_2D ; }
{ Name ur ; Type Local ; NameOfSpace Hregion_u_Mag_2D ; }
}
Equation {
Galerkin { [ lambda[{T}] * Dof{d T} , {d T} ] ;
In DomThe ; Jacobian Vol ; Integration GaussGrad ; }
Galerkin { Dt[ rhoc[{T}] * Dof{T} , {T} ] ;
In DomThe ; Jacobian Vol ; Integration GaussGrad ; }
/* here we are with the volumic Joule losses */
Galerkin { [ -0.5 * sigma[{T}]* <a>[SquNorm[Dt[{a}]+{ur}]] , {T} ]
;
In DomThe_Q ; Jacobian JacobianVol_Mag ; Integration
GaussGrad ; }
}
}
}
Fianlly, here is a sample resolution example: frequency domain for
"a-v", time domain (with implicit Euler) for "T", non-linear Picard
iteration.
Resolution {
{ Name MagThe_2Dt ;
System {
{ Name Sys_Mag ; NameOfFormulation Magnetodynamics_av_2D ;
Type ComplexValue ; Frequency Freq ; }
{ Name Sys_The ; NameOfFormulation Thermal_T ; }
}
Operation {
InitSolution Sys_The ;
TimeLoopTheta {
Time0 Mag_Time0 ;
TimeMax Mag_TimeMax ;
DTime Mag_DTime ;
Theta 1. ;
Operation {
IterativeLoop {
NbrMaxIteration NbMaxIter ;
RelaxationFactor 1. ;
Criterion 5.e-3 ;
Operation {
GenerateJac Sys_Mag ; SolveJac Sys_Mag ;
GenerateJac Sys_The ; SolveJac Sys_The ;
}
}
SaveSolution Sys_Mag ;
SaveSolution Sys_The ;
}
}
}
}
}
This is a simple nonlinear example (non magnetic nonlinearity -> OK for
the harmonic approach in "a-v"). To get the linear case, you drop all
function arguments and the iterative loop. You can also make steady
state thermal computation : just drop the Dt term in the Thermal_T
formulation.
Don't hesitate to e-mail me if there are some "dark" points...
My best,
--
Christophe Geuzaine
Tel: +32-(0)4-366.37.10 mailto:Christophe.Geuzaine at ulg.ac.be
Fax: +32-(0)4-366.29.10 http://www.geuz.org