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