Why are pointVectorFields not mapped using mapFields?
Hi all,
I am simulating boats which are free to heave and trim using interDyMFoam (OF-2.1.0). To make my simulations more efficient, I want to map a coarse mesh solution onto a fine mesh. I works perfectly as long as the object isnt moving. For some reason pointVectorFields (ie the pointDisplacement file) do not get mapped, even though they are required to run the simulation in the the target directory. I tried to grep the orientation (of the moving object) from the source directories pointDisplacement file and chucked it into the target directories file, but that is obviously not working. That draw a few questions regarding my understanding of mapFields and interDyMFoam: Q1: Why are pointVectorFields not mapped? Q2: How do I map the mesh deformation correctly? Q3: Why is there a pointDisplacement AND cellDisplacement file, isnt that redundant information? Latter one is mapped OK. Grateful for any advice! Cheers, Max |
Well I just figured out how to solve Q2: You simply specify (deformed) orientation and centreOfMass AND initialOrientation and initialCentreOfMass. The actual points will be moved accordingly by the solver and the cellDisplacement too. Too easy!
Cheers, Max |
hi
i have a similar problem with interDyMFoam (moving mesh) and mapFields. I just want to map from a coarse to a fine mesh but the solver crashes probably caused by the cell movement. How did you solve the problem? i use the command: mapFields -sourceTime latestTime -consistent Best regards Henning |
solved
hi,
i figured it out. mapFields doesn't take moving meshes into account. The domains of both cases dont match since the displacement isn't considered resulting in a crash. It can be solved by using a dynamicMesh instead of fvmesh in mapFields 1. replace all fvmesh with solidBodyMotionFvMesh 2. update Header 3 compile If you map the fields from the sourcecase to the target case the time folders need to be identical and the target case folder needs to be empty. best regards Henning |
Greetings Henning,
It might make sense to report this issue on the bug tracker: http://www.openfoam.org/bugs/ - specially since you've already found the solution ;) Although, there is a limitation to this: if you change all "fvMesh" references to "solidBodyMotionFvMesh" or similar, then mapFields will only work if the file "constant/dynamicMeshDict" exists. Best regards, Bruno |
Quote:
Can you explain more clearly how it is done? What do you mean by: 1. replace all fvmesh with solidBodyMotionFvMesh 2. update Header 3 compile Thanks! |
Hi,
I just tried to give it a go. I'm not sure how to create a new mapField application so I took the easy way out. I simply edit the mapField.* source code and recompile a new OF. However, I don't think I did it right. I simply search and replace all "fvmesh" with "solidBodyMotionFvMesh" in the 3 source codes: mapFields.C mapFields.H mapFieldsTemplates.C During compile, the error is: Code:
In file included from mapFields/mapFields.H:224, |
All times are GMT -4. The time now is 18:23. |