CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   Grabbing value of a dimensioned quantity / Problem creating a dimensioned tensor (https://www.cfd-online.com/Forums/openfoam/124232-grabbing-value-dimensioned-quantity-problem-creating-dimensioned-tensor.html)

ThomasV September 30, 2013 08:39

Grabbing value of a dimensioned quantity / Problem creating a dimensioned tensor
 
Hi!

I'm starting to write my first solver and when testing some simple measure that might come in handy for bughunting I encountered a problem concerning dimensioned values:
I wanted to print a component of the gravitational acceleration in the terminal when running the solver. I would have thought that this has to look like this:
Code:

Info << g.z();
That won't compile though. What works is simply rephrasing this as:
Code:

Info << g;
which gives:
Quote:

g [0 1 -2 0 0 0 0] (0 0 -9.81)
So checking the values works but I'd like to know how to extract a certain value like the z-component of g from a dimensioned value. Which command does one have to use here?

In addition to that I tried using the following code to create a dimensioned tensor which I took right out of the programmer's guide (as I thought maybe the way g is integrated via the readGravitationalAcceleration.H file might be the reason why g.z() won't work):
Code:

dimensionedTensor sigma
(
"sigma",
dimensionSet(1, -1, -2, 0, 0, 0, 0),
tensor(1e6,0,0,0,1e6,0,0,0,1e6),
);

This gives an error while compiling though. Why is that? My solver includes anything that icoFoam has and e.g. the creation of a simple tensor (i.e. without dimensions) works just fine...

AndreasG September 30, 2013 10:06

Hey ThomasV,
first of all, showing compiler errors helps helping... ;-)

Didn't try, but
Code:

g.value().z()
should work, as g is a dimensioned<vector> and its member function dimensioned<Type>::value() returns a Type object, in your case a vector, which has a member z().

ThomasV October 1, 2013 03:38

Hey!

Thanks for your help - g.value().z() worked... :)

Concerning the compiler messages: Those unfortunately said pretty much nothing as the compiling process simply was aborted with a
Quote:

make: *** [Make/linux64GccDPOpt/nameOfMySolver.o] Error 1
for both the value reading problem just as when using the given code for the creation of the dimensionedTensor...

AndreasG October 1, 2013 04:06

The compiler tells us more (at least g++ (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) does):

Code:

(...)
minimalTestFoam.C: In Funktion »int main(int, char**)«:
minimalTestFoam.C:55:5: Fehler: expected primary-expression before »)« token
make: *** [Make/linux64GccDPOpt/minimalTestFoam.o] Error 1

This tells us, that it expected something before the closing bracket in line 55:
Code:

    50    dimensionedTensor sigma
    51    (
    52        "sigma",
    53        dimensionSet(1, -1, -2, 0, 0, 0, 0),
    54        tensor(1e6,0,0,0,1e6,0,0,0,1e6),
    55    );

If there is a comma behind an argument to a function, the compiler expects another (secend, third, forth,...) argument to come after previous one. But there is no extra argument after last comma (last char in line 54) so the compiler complains about this unexpected end of the argument list. Remove that comma and the code will compile.

//EDIT: fixed bracket...

ThomasV October 1, 2013 07:27

Well that's interesting. So your compiler writes those notifications right into the terminal? I'll have to check then if this is suppressed over here or something like that as currently I only get this make: *** message which then aborts the compilation process without further comments as to what caused this...

I'll also try to report this issue so this gets corrected in the programmer's guide... :)

deepbandivadekar February 18, 2019 11:05

Quote:

Originally Posted by ThomasV (Post 454393)
Hey!

Thanks for your help - g.value().z() worked... :)

Concerning the compiler messages: Those unfortunately said pretty much nothing as the compiling process simply was aborted with a
for both the value reading problem just as when using the given code for the creation of the dimensionedTensor...

Old thread but bumping this up again.
This doesn't seem to output the set of dimensions, at least in OF6.


I am particularly interested in the dimensions of fields calculated at a given point in solver. These may or may not be defined fields e.g. U and p are defined but say I want to find out calculated dimensions of a quantity "U/p".
Is there any way to do that in OF6?


All times are GMT -4. The time now is 10:05.