# Taking the absolute value of a volVectorField or a volTensorField

 Register Blogs Members List Search Today's Posts Mark Forums Read

 September 16, 2005, 06:24 Hi, I wish to compute the abs #1 Member   Marco Kupiainen Join Date: Mar 2009 Posts: 31 Rep Power: 12 Hi, I wish to compute the absolute value of a volVectorField gp componentwise. I have tried to loop over all cells: forAll(centres, celli) { if ( gp[celli].x() < 0.0 ) { gp[celli].x() = -gp[celli].x(); } if ( gp[celli].y() < 0.0 ) { gp[celli].y() = -gp[celli].y(); } if ( gp[celli].z() < 0.0 ) { gp[celli].z() = -gp[celli].z(); } } but when I take min(gp) it shows negative values. How does this work? What should I do instead? best regards cdunn6754 likes this.

 September 16, 2005, 08:22 Should be: volVectorField g #2 Senior Member   Hrvoje Jasak Join Date: Mar 2009 Location: London, England Posts: 1,847 Rep Power: 28 Should be: volVectorField gpCmptMag = cmptMag(gp); but it is not instantiated because it's not really appropriate for geometric fields. How about: vectorField gpCmptMag = cmptMag(gp.internalField()); This gives you the internal part of the field. Hrv __________________ Hrvoje Jasak Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk

March 19, 2019, 09:56
abs not working for me
#3
New Member

Join Date: Apr 2018
Posts: 15
Rep Power: 3
Quote:
 Originally Posted by hjasak Should be: volVectorField gpCmptMag = cmptMag(gp); but it is not instantiated because it's not really appropriate for geometric fields. How about: vectorField gpCmptMag = cmptMag(gp.internalField()); This gives you the internal part of the field. Hrv
I know this is an old thread but I am doing a similar thing without success. I am trying to find the absolute value of velocity U. I have tried all I can to no avail. Please help
I did "volVectorField U1CmptMag = Foam::cmptMag(U1);"

thank you

July 25, 2019, 14:00
#4
New Member

Reza
Join Date: Jun 2012
Posts: 20
Rep Power: 9
Quote:
 Originally Posted by dela I know this is an old thread but I am doing a similar thing without success. I am trying to find the absolute value of velocity U. I have tried all I can to no avail. Please help I did "volVectorField U1CmptMag = Foam::cmptMag(U1);" thank you

Hi Dela,

I am not sure if you have solved your problem or not but just in case:

cmptMag is not overloaded for volVectorField as the error message informs. So to overcome this problem you can do as follows:
First, define a new volVEctorField in the createFields.H like this:
volVectorField cmptMagU = U;
Then in the C-file you can add the following loop:
forAll ( U, index )
{
cmptMagU [ index ] = cmptMag ( U [ index ] );
}

This should work but I advise you to be cautious about the boundary cells. I would advise to use this on internalField() and take care of the boundary separately.

BR