[Getdp] Evaluate a scalar field at some points, print values on terminal and use them in PostOperation

gilles quemener quemener at lpccaen.in2p3.fr
Tue May 24 18:41:32 CEST 2016


Hi Michael, 

Thanks a lot ! 
I think these files would be perfect in the tutorials folder ! 
Cheers, 

Gilles 

> De: "michael asam" <michael.asam at infineon.com>
> À: quemener at lpccaen.in2p3.fr
> Cc: getdp at geuz.org
> Envoyé: Mardi 24 Mai 2016 16:24:58
> Objet: RE: Evaluate a scalar field at some points, print values on terminal and
> use them in PostOperation

> Hi Gilles,

> your firewall blocks zip-files. Therefore I renamed it to .txt.

> Please rename it back and unzip it.

> Cheers,

> Michael

> From: Asam Michael (IFAG ATV BP D PD DES1)
> Sent: Tuesday, May 24, 2016 4:23 PM
> To: 'gilles quemener'
> Cc: getdp at geuz.org
> Subject: RE: Evaluate a scalar field at some points, print values on terminal
> and use them in PostOperation

> Hi Gilles,

> in the attachments you’ll find a simple example which I had at hand for
> calculating an electrostatic potential. There I implemented

> the evaluation of the potential at a certain point and the evaluation of the
> maximum potential. The last one is just for demonstration,

> because the maximum voltage is given by the Dirichlet boundary condition. The
> results are displayed in Gmsh’s

> sidebar.

> Regarding the benchmark folder: I just saw that it is obviously not in the ziped
> file which you can download from the homepage.

> But you can find it here online:
> https://onelab.info/trac/getdp/browser/trunk/benchmarks There are many nice
> examples.

> Also on the onelab homepage you can find good and well documented examples:
> http://onelab.info/wiki/GetDP

> Have a nice day!

> Michael

> From: gilles quemener [ mailto:quemener at lpccaen.in2p3.fr ]
> Sent: Tuesday, May 24, 2016 2:59 PM
> To: Asam Michael (IFAG ATV BP D PD DES1)
> Cc: getdp at onelab.info
> Subject: Re: Evaluate a scalar field at some points, print values on terminal
> and use them in PostOperation

> Hi Michael,

> Thanks a lot for your answer, it helped me a bit but I still have some problems
> using registers.
> In the GetDP, Gmsh and Onelab sources, I could not find any folder named
> "benchmarks".
> However, I looked at the GetDP manual as well as at the different examples in
> the "models"

> folder but still I could not figured out how to use registers in Print and Echo
> commands.
> In the following code snippet you will find among other things I have tested
> what fails at parsing

> time.

> //Post Operation
> //==============
> PostOperation{
> {Name Map_u; NameOfPostProcessing CubicCavity;
> Operation{

> // Stores in register #1 the scalar potential value evaluated at point {0, 0,
> 0.5}:
> Print [ utotm, OnPoint {0, 0, 0.5}, StoreInRegister 1, Format SimpleTable, File
> "Result_Dummy.txt" ]; // WORKS !!!

> // Stores in register #2 the minimum value of the scalar potential over region
> GammaInner:
> Print [ utotm, OnElementsOf GammaInner, StoreMinInRegister 2, Format
> SimpleTable, File "Result_Dummy.txt" ]; // WORKS !!!
> Echo [ Sprintf("Min = %g", #1) ]; // FAILS !!!!

> // Stores in register #3 the maximum value of the scalar potential over region
> GammaInner:
> Print [ utotm, OnElementsOf GammaInner, StoreMaxInRegister 3, Format
> SimpleTable, File "Result_Dummy.txt" ]; // WORKS !!!
> Echo [ Sprintf("Max = %g", #2) ]; // FAILS !!!!

> // Tentative to retrieve iso-contour points for the potential utotm = (utotmMin
> + utotmMax) / 2 :
> Print [ utotm, OnElementsOf GammaInner, Iso { 0.5 * (#2 + #3) }, Sort Position,
> Format SimpleTable, File "out1.txt" ]; // FAILS !!!!
> Print [ utotm, OnElementsOf GammaInner, Iso { Evaluate[ 0.5 * (#2 + #3)] }, Sort
> Position, Format SimpleTable, File "out2.txt" ]; // FAILS !!!!
> }
> }
> }

> Thanks a lot for any help,

> Gilles

>> De: "michael asam" < michael.asam at infineon.com >
>> À: quemener at lpccaen.in2p3.fr
>> Cc: getdp at geuz.org
>> Envoyé: Mardi 24 Mai 2016 09:53:54
>> Objet: RE: Evaluate a scalar field at some points, print values on terminal and
>> use them in PostOperation
>> Hi Gilles,

>> you can evaluate the value at a specified point in a PostOperation like this:

>> Print[ u, OnPoint {xp, yp, zp} , File "MyResult" , Format SimpleTable];

>> You can also find the min/max value and/or the corresponding coordinates and
>> store them

>> in a register for later use in another PostProcessing (search in the manual for
>> StoreMinInRegister

>> and StoreMinXinRegister):

>> Print[ u, OnElementsOf TotalDomain, StoreMaxInRegister 1, Format SimpleTable,
>> File "Result_Dummy.txt"];

>> There are various examples in the folder benchmarks in the source code showing
>> the usage

>> of registers and how to print number results directly in Gmsh’s sidebar.

>> Cheers,

>> Michael

>> From: getdp [ mailto:getdp-bounces at ace20.montefiore.ulg.ac.be ] On Behalf Of
>> gilles quemener
>> Sent: Monday, May 23, 2016 2:30 PM
>> To: getdp at onelab.info
>> Subject: [Getdp] Evaluate a scalar field at some points, print values on
>> terminal and use them in PostOperation

>> Hi,

>> Currently I am trying to evaluate a scalar field solution at some given points

>> and to evaluate the min and max of this scalar field. Once this is done I would

>> like to print these quantities on the terminal window as well as to use them for

>> further PostOperation.

>> Assume GetDP has solved my problem and is able to compute scalar fieldsu

>> and utotm as described in the GetDP script below.

>> How can I get the following quantities at Point {xp, yp, zp}:

>> u1 = u(xp, yp, zp)

>> u2 = utotm(xp, yp, zp)

>> and:

>> umin = min(u) over a region

>> umax = max(u) over a region

>> utotmmin = min(utotm) over a region

>> utotmmax = max(utotm) over a region

>> I have tried several syntaxes for the different quantities above, but none
>> passed the parsing phase w/o error.

>> Therefore if someone has clues or a solution, it would be very helpful !

>> //Post Processing
>> //===============

>> PostProcessing{
>> {Name CubicCavity; NameOfFormulation CubicCavity;
>> Quantity{
>> {Name u; Value {Local{[{u}]; In TotalDomain; Jacobian JVol;}}}
>> {Name utotm; Value {Local{[{u}-scalpot[]]; In TotalDomain; Jacobian JVol;}}}
>> }
>> }
>> }

>> //Post Operation
>> //==============

>> PostOperation{
>> {Name Map_u; NameOfPostProcessing CubicCavity;
>> Operation{
>> Print [ u, OnElementsOf GammaInner, File "uIIsur_3D.pos" ];// works !
>> Print [ utotm, OnElementsOf GammaInner, File "uIImuI_3D.pos" ];// works !

>> Print [ utotm, OnElementsOf GammaInner, Iso {0.65}, Sort Position, Format
>> SimpleTable, File "out.txt" ];// works !

>> // Note: Be carefull, in order to visualize the .pos file below in Gmsh, it does
>> not work w/ option "Iso-values"

>> // even if it is a single iso-contour/iso-value, I have to use option
>> "Continuous Map" (?!?!)

>> Print [ utotm, OnElementsOf GammaInner, Iso {0.65}, Format Gmsh, File "toto.pos"
>> ];// works !

>> // How to print the value of scalar field u or utotm at a specific point (e.g.
>> (0,0,1.3)) on terminal ?
>> Printf [ "U=%g", u(0, 0, 1.3) ];
>> Printf [ "Utotm=%g", utotm(0, 0, 1.3) ];

>> // How to get min and max values on some region and use them in other
>> PostOperation ?

>> umin = Min(u[]) OnElementsOf GammaInner;
>> umax = Max(u[]) OnElementsOf GammaInner;

>> N = 10;

>> du = (umax - umin) / N;

>> For i In (1, N)

>> uval = umin + (i - 0.5) * du;

>> Print[ utotm, OnElementsOf GammaInner, Iso { uval }, Sort Position, Format
>> SimpleTable, File >> "out.txt" ];

>> EndFor

>> }
>> }
>> }

>> Thanks a lot for any help,

>> Gilles
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/getdp/attachments/20160524/cb28a617/attachment-0001.html>


More information about the getdp mailing list