[Getdp] Surface integral.

Christophe Geuzaine c.geuzaine at ulg.ac.be
Mon May 30 21:45:54 CEST 2005


Ianenko, Evgueni wrote:
> Dear community,
> 
> I am sorry to put this question once more, but I have searched (and read)
> all posts on surface integrals, and still have no idea how to solve this
> simple problem in GetDP. I just can't beleive, that it is not possible
> in such an impressively powerful package.
> 
> To formulate the question, I will use the simpliest 3D Laplace equation for electric
> potential. I have Form0 function space for unknown potential U with Dirichlet
> boundary conditions on some surfaces.
> 
> I want to calculate a charge on certain surfaces with Dirichlet BC, integrating
> flux vector through these surfaces, something like:
> 
> Integral {[{Grad U}*Normal[]]; In DomainSurface; Jacobian JSur; Integration I1;}
> 
> or, at least:
> 
> Integral {[Norm[{Grad U}]]; In DomainSurface; Jacobian JSur; Integration I1;}
> 
> The problem here seems to be following: I need 3D flux vector {Grad U} from 3D domain,
> and also 3D Normal[] vector, but from 2D domain (Normal[] is not defined on Tetrahedrons).
> This scalar product has to be integrated again over 2D surface.
> 
> All my attempts to resolve this conflict failed - either I have to integrate
> over volume to get correct {Grad U}, or I get {Grad U} in 2D domain, which is obviously zero.
> This happens not only in post-processing, but also for integral quantities
> in formulation, or even additional Form1 coefficients for desired surfaces.
> 
> On the other hand I can easily get correct values for:
> 
> E = Local {[{Grad U}]; In DomainVolume; Jacobian JVol; Integration I1;}
> 
> with post-operation:
> 
> Print [E, OnElementsOf DomainVolume, Skin];
> 
> I would appreciate any comments on how to resolve this issue.
> 

Hello Evgeny - Actually, getting the normal component of the gradient on 
the surface is not trivial, since this component is in general 
discontinuous across the surface.

If you need this component in an integral, the solution in getdp is to 
use a "OnOneSideOf" group with a BF_GradGroupOfNodes basis function. 
There is an example here: 
http://www.geuz.org/getdp/wiki/MagnetoDynamics. You can then use the 
associated global quantity in post-processing.

Christophe

-- 
Christophe Geuzaine
Applied and Computational Mathematics, Caltech
geuzaine at acm.caltech.edu - http://geuz.org