area does not match neighbour by ... % -- possible face ordering problem
hi everyone,
im trying to run a pimpleDyMFoam case in parallel to assign velocity and pressure field around a multi-patched-body. Every patch has its own motion function and the motion function of second patch is linked to motion of first patch and so on. In detail u can imagine as a long chain moving by a given function. All in all Foam is nearly doing, what i want to do .. but after calculating first time step of motion and try to start second, im getting following error message: Code:
[1] It seems to be a problem of mesh splitting by processor and loosing some points, when mesh is moved .. I decomposed my mesh with hierarchical method but all other methods are also not working and giving same problem. So did any of u got the same problem or has an idea how to solve this dilemma ?!?! greetz and thx |
Solved !!
Ok, found the problem ... it's a bit tricky.
I was using an own boundary condition using and modifying angularOscillatingVelocity (AOV). When substracting pointField of current patch to gain movement only, there are 2 parameter already implemented in AOV: -> local point field p.localPoints -> another point parameter p0_ i was using p.localPoints and got some difference between local patch coordinates on several processors. When using p0_ instead this difference was elliminated and it's working now. Hope this will help someone with the same problem. :-) |
Hello Steffen,
Could you explain a bit more on the solution? I'm having the same problem and I don't understand what you propose to solve it. I also have mesh movement and use my own boundary condition which was created from modifying AngullarOscillatingVelocity so your idea must work in my case too. Thanks! |
Ofc .. take a closer look into my BC file created by modifying angularOscillatingVelocityPatchVectorField.C
Code:
/*---------------------------------------------------------------------------*\ As i alread told it's a bit tricky. Take a look into calculation part: Code:
vector e1 = vector(1, 0, 0); -> Btw, when i tried using already implemented velocity calculation in this BC it didnt give me the write solution. So I had to modify it to that code ur seeing above. It's only rotation around x-axis possible with this code. Hope this will be helpful for u. Plz write ur feedback after u tried it out. |
Yes you are absolutely right. Removing p.localpoints from the operator was all I had to do. No more face area mismatches for now!
Thank you very much Steffen! |
Hello again,
by replacing p0_ with p.localPoints the simulation starts. However it causes a velocity divergence in a corner of my domain, even when ran in one processor. If I undo the p0_ replacement, the divergence disappears and there are no errors when ran in one processor, but the parallel process -4 processors- does not start and displays the error shown at post #1 of this thread. So I'm again facing the same error. Do you know how this can be solved? Thanks for your help Steffen! Mc |
What would be the code like for a z-axis rotation?
|
Hello,
I am also trying to make a modified angularOscillatingVelocityPatchVectorField.C, but suffering from the parallel run of the original file as well as my modifications. I tried the adaptation in #4, but it only works in serial. When I run it on 4 processors, I have similar errors as in #1. Quote:
|
Try removing the list (p0 nonuniform List<vector>) that appears in each processor*/0/pointMotionU after the decomposition. In my case it works flawless now.
Hope it helps! Mc |
Sorry, haven't read forum for a while. Rotation around z-axis would be:
vector e1 = vector(1, 0, 0); vector e2 = vector(0, 1, 0); vector e3 = vector(0, 0, 1); vectorField p0Rel = p0_ - origin; vectorField::operator= ( ( e1*(p0Rel.component(0)*cos(angle) - p0Rel.component(1)*sin(angle)) + e2*(p0Rel.component(0)*sin(angle) + p0Rel.component(1)*cos(angle)) + e3*p0Rel.component(2) - p0_ )/t.deltaTValue() ); Hope this will help ;-) Regarding to similarities of p0_ and p.localPoints ... I'm not sure about it, but i think the position or assignment of the points are modified in function p0_ .. that's why there's a difference after calculation with both. Try to use "p0_" only, that should fix the problem. |
Hi, maybe late but I hope my solution will help someone else!
I also encounter this problem, this issue might come from the decompose method. I used Hierarchical and this error happened, then I changed to Scotch and it worked. |
All times are GMT -4. The time now is 17:40. |