# preCICE using new Mesh Motion Solver

**URL:** <https://precice.discourse.group/t/precice-using-new-mesh-motion-solver/857>\
**Category:** Official adapters and tutorials\
**Tags:** openfoam, fsi\
**Created:** [January 3, 2022, 7:31pm UTC](https://precice.discourse.group/t/precice-using-new-mesh-motion-solver/857 "2022-01-03T19:31:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michael](https://yyz2.discourse-cdn.com/free1/user_avatar/precice.discourse.group/michael/32/716_2.png) [@Michael](https://precice.discourse.group/u/Michael)\
**Post date:** [January 3, 2022, 7:31pm UTC](https://precice.discourse.group/t/precice-using-new-mesh-motion-solver/857/1 "2022-01-03T19:31:57Z")

</div>

Continuing the discussion from [Request for pointVectorField pointDisplacement from objectRegistry region0 failed | available objects of type pointVectorField are 0()](https://precice.discourse.group/t/request-for-pointvectorfield-pointdisplacement-from-objectregistry-region0-failed-available-objects-of-type-pointvectorfield-are-0/658/8):

I want to continue the post because I have the same problem when using new Mesh Motion Solver in _dynamicMeshDict_. What motion solvers does preCICE OpenFOAM adapter support besides **displacementLaplacian**? How can I extend the adapter if I want to use a new mesh motion solver?

The motion solver works without preCICE but fails after turning on the coupling.

> **dynamicMeshDict**
>
> ```c++
> 
> dynamicFvMesh dynamicMotionSolverFvMesh;
> 
> motionSolverLibs ("libRBFMeshMotionSolver.so");
> motionSolver RBFMeshMotionSolver;
> // Settings for the RBF solver                                                                                            
> staticPatches ( upperWall lowerWall front back);
> movingPatches ( flapBaffle_master flapBaffle_slave );
> fixedPatches (inlet inletWater outlet);
> interpolation
> {
> function TPS;
> }
> coarsening
> {
> enabled no;
> }
> 
> ```

> [@Request for pointVectorField pointDisplacement from objectRegistry region0 failed | available objects of type pointVectorField are 0()](https://precice.discourse.group/t/request-for-pointvectorfield-pointdisplacement-from-objectregistry-region0-failed-available-objects-of-type-pointvectorfield-are-0/658/8):
>
> I understand now that the problem is really that the mesh motion solver (you are using [multiSolidBodyMotionSolver](https://www.openfoam.com/documentation/guides/latest/api/classFoam_1_1multiSolidBodyMotionSolver.html) does not define `pointDisplacement` in the same way as e.g. `displacementLaplacian` . Therefore, the adapter does not know how to read displacements in this class context.
> 
> Since you are trying to use overset, do you also need to use multiSolidBodyMotionSolver? If yes, then you would also need to modify our `Displacement.C` accordingly.

@Makis, Can you explain this further? I’m afraid I will mess up `Displacment.C` and `displacementLaplacian` will not work.

---

<div class="post-metadata">

**Author:** ![Michael](https://yyz2.discourse-cdn.com/free1/user_avatar/precice.discourse.group/michael/32/716_2.png) [@Michael](https://precice.discourse.group/u/Michael)\
**Post date:** [January 3, 2022, 7:38pm UTC](https://precice.discourse.group/t/precice-using-new-mesh-motion-solver/857/2 "2022-01-03T19:38:54Z")

</div>

Here is the detailed error message:

> ****
>
> ```
> --> FOAM FATAL ERROR: (openfoam-2106)
> 
> request for pointVectorField pointDisplacement from objectRegistry region0 failed
> available objects of type pointVectorField are
> 0()
> 
> From const Type& Foam::objectRegistry::lookupObject(const Foam::word&, bool) const [with Type = Foam::GeometricField<Foam::Vector<double>, Foam::pointPatchField, Foam::pointMesh>]
> in file /usr/lib/openfoam/openfoam2106/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 463.
> 
> FOAM aborting
> 
> #0 Foam::error::printStack(Foam::Ostream&) at ??:?
> #1 Foam::error::exitOrAbort(int, bool) at ??:?
> #2 Foam::GeometricField<Foam::Vector<double>, Foam::pointPatchField, Foam::pointMesh> const& Foam::objectRegistry::lookupObject<Foam::GeometricField<Foam::Vector<double>, Foam::pointPatchField, Foam::pointMesh> >(Foam::word const&, bool) const at ??:?
> #3 preciceAdapter::FSI::Displacement::Displacement(Foam::fvMesh const&, std:: __cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__ cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) at ??:?
> #4 preciceAdapter::FSI::FluidStructureInteraction::addReaders(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, preciceAdapter::Interface*) at ??:?
> #5 preciceAdapter::Adapter::configure() at ??:?
> #6 Foam::functionObjects::preciceAdapterFunctionObject::read(Foam::dictionary const&) at ??:?
> #7 Foam::functionObjects::preciceAdapterFunctionObject::preciceAdapterFunctionObject(Foam::word const&, Foam::Time const&, Foam::dictionary const&) at ??:?
> #8 Foam::functionObject::adddictionaryConstructorToTable<Foam::functionObjects::preciceAdapterFunctionObject>::New(Foam::word const&, Foam::Time const&, Foam::dictionary const&) at ??:?
> #9 Foam::functionObject::New(Foam::word const&, Foam::Time const&, Foam::dictionary const&) at ??:?
> #10 Foam::functionObjectList::read() at ??:?
> #11 Foam::Time::run() const at ??:?
> #12 ? in /usr/lib/openfoam/openfoam2106/platforms/linux64GccDPInt32Opt/bin/interFoam
> #13 __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
> #14 ? in /usr/lib/openfoam/openfoam2106/platforms/linux64GccDPInt32Opt/bin/interFoam
> [Thinkpad-Michael:07407] ***Process received signal***
> [Thinkpad-Michael:07407] Signal: Aborted (6)
> [Thinkpad-Michael:07407] Signal code: (-6)
> [Thinkpad-Michael:07407] [0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x153c0)[0x7fe3cfabd3c0]
> [Thinkpad-Michael:07407] [1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb)[0x7fe3cf8fc18b]
> [Thinkpad-Michael:07407] [2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x12b)[0x7fe3cf8db859]
> [Thinkpad-Michael:07407] [3] /usr/lib/openfoam/openfoam2106/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam5error11exitOrAbortEib+0x367)[0x7fe3d01e6a67]
> [Thinkpad-Michael:07407] [4] /home/michael/OpenFOAM/michael-v2106/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so(_ZNK4Foam14objectRegistry12lookupObjectINS_14GeometricFieldINS_6VectorIdEENS_15pointPatchFieldENS_9pointMeshEEEEERKT_RKNS_4wordEb+0x13a)[0x7fe3cbd7349a]
> [Thinkpad-Michael:07407] [5] /home/michael/OpenFOAM/michael-v2106/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so(_ZN14preciceAdapter3FSI12DisplacementC1ERKN4Foam6fvMeshENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_+0xaf)[0x7fe3cbd71c4f]
> [Thinkpad-Michael:07407] [6] /home/michael/OpenFOAM/michael-v2106/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so(_ZN14preciceAdapter3FSI25FluidStructureInteraction10addReadersENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_9InterfaceE+0x283)[0x7fe3cbd2e253]
> [Thinkpad-Michael:07407] [7] /home/michael/OpenFOAM/michael-v2106/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so(_ZN14preciceAdapter7Adapter9configureEv+0xc8b)[0x7fe3cbd8809b]
> [Thinkpad-Michael:07407] [8] /home/michael/OpenFOAM/michael-v2106/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so(_ZN4Foam15functionObjects28preciceAdapterFunctionObject4readERKNS_10dictionaryE+0x11)[0x7fe3cbdc9541]
> [Thinkpad-Michael:07407] [9] /home/michael/OpenFOAM/michael-v2106/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so(_ZN4Foam15functionObjects28preciceAdapterFunctionObjectC2ERKNS_4wordERKNS_4TimeERKNS_10dictionaryE+0x4d)[0x7fe3cbdc968d]
> [Thinkpad-Michael:07407] [10] /home/michael/OpenFOAM/michael-v2106/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so(_ZN4Foam14functionObject31adddictionaryConstructorToTableINS_15functionObjects28preciceAdapterFunctionObjectEE3NewERKNS_4wordERKNS_4TimeERKNS_10dictionaryE+0x37)[0x7fe3cbdc9ba7]
> [Thinkpad-Michael:07407] [11] /usr/lib/openfoam/openfoam2106/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam14functionObject3NewERKNS_4wordERKNS_4TimeERKNS_10dictionaryE+0x40e)[0x7fe3d043835e]
> [Thinkpad-Michael:07407] [12] /usr/lib/openfoam/openfoam2106/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam18functionObjectList4readEv+0xa1c)[0x7fe3d043c2ec]
> [Thinkpad-Michael:07407] [13] /usr/lib/openfoam/openfoam2106/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZNK4Foam4Time3runEv+0x2e7)[0x7fe3d0455a77]
> [Thinkpad-Michael:07407] [14] interFoam(+0x5276b)[0x564b16bcb76b]
> [Thinkpad-Michael:07407] [15] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7fe3cf8dd0b3]
> [Thinkpad-Michael:07407] [16] interFoam(+0x5cfae)[0x564b16bd5fae]
> [Thinkpad-Michael:07407] ***End of error message***
> Aborted
> 
> ```

---

<div class="post-metadata">

**Author:** ![Michael](https://yyz2.discourse-cdn.com/free1/user_avatar/precice.discourse.group/michael/32/716_2.png) [@Michael](https://precice.discourse.group/u/Michael)\
**Post date:** [January 3, 2022, 11:46pm UTC](https://precice.discourse.group/t/precice-using-new-mesh-motion-solver/857/3 "2022-01-03T23:46:17Z")

</div>

I found one issue that the mesh motion solver does not use the `pointDisplacement` file to move the mesh, whereas preCICE needs this file.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/precice/original/1X/67d2a5fa6f80e597e2267ff17fa8c1673cd11caa.svg) [@system](https://precice.discourse.group/u/system)\
**Post date:** [January 10, 2022, 9:52am UTC](https://precice.discourse.group/t/precice-using-new-mesh-motion-solver/857/4 "2022-01-10T09:52:58Z")

</div>

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.
