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