CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (http://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   Modify pointDisplacement field from within solver? (http://www.cfd-online.com/Forums/openfoam-programming-development/80275-modify-pointdisplacement-field-within-solver.html)

nowhere September 21, 2010 08:43

Modify pointDisplacement field from within solver?
 
Hi,

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,
Nick

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

Nick,

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

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


All times are GMT -4. The time now is 16:46.