[Getdp] Global quantities when using axisymmetric coordinates

Patrick Dular Patrick.Dular at ulg.ac.be
Fri Aug 31 10:46:15 CEST 2007


Dear Tobias,

The use of the 'VolAxi' Jacobian in the first term of your equation is 
correct for dealing with an axisymmetrical surface of 1 radian of 
angular aperture. The related second term 'fluxGlobGnd' is thus defined 
for the same aperture, i.e. per radian.

        Equation
            {
                Galerkin
                    {
                        [ Dof{Grad v} , {Grad v} ];
                        In dom;
                        Jacobian Jac;
                        Integration Int_1;
                    }
                GlobalTerm
                    {
                        [-Dof{fluxGlobGnd}, {vGlobGnd}];
                        In bdGnd;
                    }
            }


The way to consider the complete 2*Pi aperture can be done by writting 
the flux global quantity per radian, i.e.

                GlobalTerm
                    {
                        [-Dof{fluxGlobGnd}/(2*Pi), {vGlobGnd}];
                        In bdGnd;
                    }

or, to be more general,

                GlobalTerm
                    {
                        [-Dof{fluxGlobGnd}/CoefGeo, {vGlobGnd}];
                        In bdGnd;
                    }


with CoefGeo=2*Pi [radian] in Axi,
or by default CoefGeo=1 [meter] for a plane 2D model of depth equal to 1 
meter,
or CoefGeo=0.1 [meter] for a plane 2D model of depth equal to 0.1 meter, 
etc.

CoefGeo can even be changed to a function CoefGeo[], piecewise defined 
by region, for more general applications.

I hope this will help you.

Patrick Dular





Tobias Nähring wrote:

>Dear Mr. Geuzaine,
>
>I think my first mail got lost (It does not appear in the mailing list.)
>So I have a second try...
>
>First of all: Thank you for the wonderful tool GetDP! It has already
>served me well in Magnetics.
>
>I've got a question about the usage of global quantities in connection
>with the axisymmetric coordinates.
>
>With the help of the problem definition below I've computed the flux
>of the homogeneous solution of the Laplacian in
>
>(1) a circular cylinder with radius 1 and length 1, with essential boundary
>    conditions at the top (v = 1) and the bottom (v = 0) and natural 
>boundary conditions on the
>    cylinder surface
>(2) a square with side length 1 and essential boundary conditions at
>    two opposite sides (v = 1) and (v = 0) and natural boundary 
>conditions on the other
>    two sides
>
>For the square the flux is 1.0 as expected.
>
>For the cylinder I've expected a flux of pi but I get 1/2.
>To explore the dependency on the radius I've enlarged the radius to
>2. Then I get a flux of 2. That indicates that the flux is
>proportional to the area of the bottom surface (as expected).
>
>Am I really only missing a factor 2*pi here?
>That means: can I also rely on the factor 2*pi for the flux if I use more
>complicated axisymmetric geometries?
>
>Thank you very much in advance for some answer.
>
>With best regards,
>Tobias Naehring
>
>/**********************************************************************
>  File:        homogen.geo
>  Author:    Tobias Nähring
>  Date:        07-08-25
>
>  Test of global quantities with Sur- or VolAxi-Integration method.
> */
>
>R=1; //< Radius of the cylinder.
>// R=2; //< For checking the dependency on the radius.
>d = 1.0; //< Distance of the plates.
>
>
>veryFine = 0.01;
>fine = 0.1;
>coarse = 1;
>
>Point(1) = {0,0,0,fine};
>Point(2) = {R,0,0,fine};
>Point(3) = {R,d,0,fine};
>Point(4) = {0,d,0,fine};
>
>For i In {1:3}
>  Line(i) = {i,i+1};
>EndFor
>
>Line(4) = {4,1};
>
>Line Loop (5) = {1:4};
>
>Plane Surface (6) = {5};
>
>Physical Surface (1) = {6};
>
>Physical Line(2) = {1};
>Physical Line(3) = {3};
>
>// End of file homogen.geo
>//////////////////////////////////////////////////////////////////////
>
>/*
>  File:        homogen.pro
>  Author:    Tobias Nähring
>  Date:        07-08-25
>
>  Homogeneous solution of the Laplacian.
>  Two similar problems solved with the same pro-file:
>  (1) Circular cylinder with boundary conditions at the top and the bottom
>  (2) Rectangular 2D-domain with boundary conditions at two opposite 
>boundary lines.
>
>  The boundaries are named bd and bdGnd.
>  */
>
>Group {
>    dom = Region[1];
>    bdGnd = Region[2];
>    bd = Region[3];
>}
>
>Constraint {
>    {
>        Name Bc; Type Assign;
>        Case
>            {
>                { Region bd; Value 0.0; }
>            }
>    }
>    {
>        Name BcGnd; Type Assign;
>        Case
>            {
>                { Region bdGnd; Value 1.0; } // We need potential 1 on 
>ground for the flux computation.
>            }
>    }
>}
>
>FunctionSpace {
>    {
>        Name funSp;  Type Form0;
>        BasisFunction {
>            {
>                Name bf;
>                NameOfCoef v;
>                Function BF_Node;
>                Support dom;
>                Entity NodesOf[All, Not bdGnd];
>            }
>            {
>                /* I thought I read somewbere in the documentation that 
>I could also use the name bf here.
>                   But that gives wrong results.
>                 */
>                Name bfGnd;
>                NameOfCoef vGnd;
>                Function BF_GroupOfNodes;
>                Support dom;
>                Entity GroupsOfNodesOf[bdGnd];
>            }
>        }
>        GlobalQuantity {
>            {
>                Name vGlobGnd;
>                Type AliasOf;
>                NameOfCoef vGnd;
>            }
>            {
>                Name fluxGlobGnd;
>                Type AssociatedWith;
>                NameOfCoef vGnd;
>            }
>        }
>        Constraint {
>            {
>                NameOfCoef v;
>                EntityType NodesOf;
>                NameOfConstraint Bc;
>            }
>            {
>                NameOfCoef vGlobGnd;
>                EntityType GroupsOfNodesOf;
>                NameOfConstraint BcGnd;
>            }
>
>        }
>    }
>}
>
>// Standard choice from the documentation:
>Integration {
>    {
>        Name Int_1;
>        Case {
>            {
>                Type Gauss;
>                    Case
>                        {
>                            { GeoElement Point       ; NumberOfPoints  1 ; }
>                            { GeoElement Line        ; NumberOfPoints  3 ; }
>                            { GeoElement Triangle    ; NumberOfPoints  4 ; }
>                            { GeoElement Quadrangle  ; NumberOfPoints  4 ; }
>                            { GeoElement Tetrahedron ; NumberOfPoints  4 ; }
>                            { GeoElement Hexahedron  ; NumberOfPoints  6 ; }
>                            { GeoElement Prism       ; NumberOfPoints  6 
>; }
>                        }
>            }
>        }
>    }
>}
>
>Jacobian
>{
>    {
>        Name Jac;
>        /*
>          Choose here between the circular cylinder and the
>          rectangular 2D-domain:
>         */
>        // Case {{Region All; Jacobian Sur;}}
>        Case {{Region All; Jacobian VolAxi;}}
>    }
>}
>
>Formulation {
>    {
>        Name form; Type FemEquation;
>        Quantity {
>            {
>                Name v; Type Local;
>                NameOfSpace funSp;
>            }
>            {
>                Name vGlobGnd; Type Global;
>                NameOfSpace funSp[vGlobGnd];
>            }
>            {
>                Name fluxGlobGnd; Type Global;
>                NameOfSpace funSp[fluxGlobGnd];
>            }
>        }
>        Equation
>            {
>                Galerkin
>                    {
>                        [ Dof{Grad v} , {Grad v} ];
>                        In dom;
>                        Jacobian Jac;
>                        Integration Int_1;
>                    }
>                GlobalTerm
>                    {
>                        [-Dof{fluxGlobGnd}, {vGlobGnd}];
>                        In bdGnd;
>                    }
>            }
>    }
>}
>
>Resolution
>{
>    {
>        Name runSolver;
>        System
>            {
>                {Name sys; NameOfFormulation form;}
>            }
>        Operation
>            { Generate[sys]; Solve[sys]; SaveSolution[sys];}
>    }
>}
>
>PostProcessing
>{
>    // The first one is just for verification of the homogeneous field:
>    {
>        Name postProPotField; NameOfFormulation form;
>        Quantity
>            {
>                {Name v; Value {Local { [{v}]; In dom; Jacobian Jac; }}}
>            }
>    }
>    // THIS IS THE INTERESTING ONE:
>    {
>        Name postProResistance; NameOfFormulation form;
>        Quantity
>            {
>                {Name resistance; Value {Term {[{fluxGlobGnd}]; In 
>bdGnd; }}}
>            }
>    }
>}
>
>PostOperation {
>    // The first one is just for checking:
>    {
>        Name postOpGmsh;
>        NameOfPostProcessing postProPotField;
>        Operation
>            {
>                Print[ v, OnElementsOf dom, File "cylPlane.pos" ];
>            }
>    }
>    // THIS IS THE INTERESTING ONE:
>    {
>        Name postOpResistance;
>        NameOfPostProcessing postProResistance;
>        Operation
>            {
>                Print[ resistance, OnRegion bdGnd, Format Table, File 
>"homogen.pos" ];
>            }
>    }
>}
>// End of file homogen.pro
>//////////////////////////////////////////////////////////////////////
>
>
>_______________________________________________
>getdp mailing list
>getdp at geuz.org
>http://www.geuz.org/mailman/listinfo/getdp
>  
>


-- 
Patrick Dular, Dr. Ir., 
Senior research associate, Maître de recherches, F.N.R.S., Ass.Prof.
Department of Electrical Engineering and Computer Science
Unit of Applied Electricity
University of Liege - Montefiore Institute - B28 - Parking P32
B-4000 Liege - Belgium - Tel. +32-4 3663710 - Fax +32-4 3662910
E-mail: Patrick.Dular at ulg.ac.be