in serial and in parallel. To save computational time, I now want to use the subsetMotionSolver (look at this thread http://www.cfd-online.com/Forums/ope...-boundary.html). I am able to create the subset and run my case in normal interDymFoam (serial) without problems. But my own solver using above motionU modification gives

Quote:

--> FOAM FATAL ERROR:

request for tetPointVectorField motionU from objectRegistry region0 failed
available objects of type tetPointVectorField are

0
(
)

From function objectRegistry::lookupObject<Type>(const word&) const
in file /opt/OpenFOAM/OpenFOAM-1.6-ext/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 140.

I'm not familiar with objectRegistry, so could anyone help me out here?

Arne

Last edited by Arnoldinho; November 9, 2011 at 05:35.
Reason: 'serial' added

I've encountered exactly the same problem when trying to implement subsetMotion for my FSI solver just today. I'm also searching for motionU using mesh.objectRegistry::lookupObject<tetPointVectorFi eld>("motionU") ... but nothing is found.

You can verify if an object is registered with an objectRegistry (for example "mesh") by using e.g.
Info << mesh.objectRegistry::foundObject<tetPointVectorFie ld>("motionU") << endl;

I've never given too much thought to the objectRegistry and how exactly it works. But might it be possible that motionU is just not registered with the "mesh" objectRegistry but with some kind of subMesh objectRegistry? After all, motionU is provided in 0/"subsetName" and not in 0/ directly ... and motionU must be registered somewhere, because icoDyMFoam works fine with subsetMotion.

I'll try to figure it out, but it will be a lot of trial & error. Can anybody with more experience in that field probably help?

I think I found our little runaway ... it is hidden in another objectRegistry as suspected. I had to learn a bit about how to access and search through this type of things, but as soon as you get the hang of it it's fun :-)

Ok, it seems (I hope I'm not writing too much rubbish here, as the following in purely based on the outcome of my trials and its interpretation) that the highest ranking objectRegistry (runTime) contains at least two entries if you use a subsetMesh. The overall mesh is called "region0" and the subsetMesh carries the name you gave it, e.g. motionSubset in my case (as this is the name I gave the subfolders in 0/ constant/ and system/ which contain the subset-specific data). You can retrieve that info using:

I found a very recent presentation by Daniele Trimarchi (Uni Southampton) which was quite helpful. Later on, I also discovered that quite exactly the same procedure I explained is actually implemented in the readCouplingproperties.H file of applications/solvers/stressAnalysis/icoFsiFoam ... one is always more clever afterwards.

sorry for not having answered directly. It seems as if you figured it out. Great. I will have a look on it.
Unfortunately (or fortunately) I do not have to use the motionU at the moment. I'm modifying the point positions of the mesh directly based on some calculatiosn and therefore do not need a meshMotionSolver right now. For my specific cases, this works pretty well, and is a lot faster.

But I am sure that I will switch back to it somewhen for different cases...