area does not match neighbour by ... % -- possible face ordering problem
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:
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
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. :-)
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.
Ofc .. take a closer look into my BC file created by modifying angularOscillatingVelocityPatchVectorField.C
As i alread told it's a bit tricky. Take a look into calculation part:
-> 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!
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!
What would be the code like for a z-axis rotation?
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.
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!
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;
e1*(p0Rel.component(0)*cos(angle) - p0Rel.component(1)*sin(angle))
+ e2*(p0Rel.component(0)*sin(angle) + p0Rel.component(1)*cos(angle))
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.
|All times are GMT -4. The time now is 13:22.|