CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Programming & Development (
-   -   Modify pointDisplacement field from within solver? (

nowhere September 21, 2010 08:43

Modify pointDisplacement field from within solver?

I am currently trying to move some boundary points (in normal direction) with OpenFoam 1.6. Therefore I am playing around with the dynamicFvMesh stuff. This is all working great. I have created a 'dynamicMeshDict' containing:
dynamicFvMesh dynamicMotionSolverFvMesh;
solver displacementLaplacian;

I have also create a 'pointDisplacement' file and modified it sth some points are moved. This also works as expected and paraView shows the result as expected.

In the next step I tried to modify the pointDisplacement field from within my solver/application.
I get a reference by using
pointVectorField &pointDisp = const_cast<pointVectorField&>( mesh.lookupObject<pointVectorField>("pointDisplacement") );

This should be ok, but as soon as I try to access the field eg by writing
Info << pointDisp;
I can't compile anymore. wmake aborts saying

modifyMeshFoam.C:91: instantiated from here
/app/openfoam/1.6.0/OpenFOAM-1.6/src/OpenFOAM/lnInclude/GeometricBoundaryField.C:408: error: invalid use of incomplete type ‘const struct Foam::pointPatchField<Foam::Vector<double> >’
/app/openfoam/1.6.0/OpenFOAM-1.6/src/OpenFOAM/lnInclude/pointFieldsFwd.H:50: error: declaration of ‘const struct Foam::pointPatchField<Foam::Vector<double> >’
make: *** [Make/linux64GccDPOpt/modifyMeshFoam.o] Error 1

Can anyone please help me with that?

Best regards,

nowhere September 23, 2010 04:26

ok, I have just managed to modify the boundaryField of pointDisplacement.

PHP Code:

#include "fixedValuePointPatchField.H"
// ...

int main ( ... )
// ...

pointVectorField &pointDisp const_cast<pointVectorField&>( mesh.lookupObject<pointVectorField>("pointDisplacement") );

fixedValuePointPatchField<vector> &boundaryPatch dynamic_cast<fixedValuePointPatchField<vector> &> (pointDisp.boundaryField()[patchID] );

// values can be changed eg by writing
boundaryPatch[0][1] = 6

Arnoldinho October 13, 2011 13:53


would you mind sharing your #include list? I'm always getting

error: no match for ‘operator[]’ in ‘boundaryPatch[0]

All times are GMT -4. The time now is 21:00.