Sign in to follow this  

calc reynolds number having a triangle, velocity vector, fluid data

This topic is 673 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

found that raynolads num can be computes as following:

 

 

Rn = VL / v 

 

where V is Velocity Vector

L Length of the fluid that has to traverse through area (in this case triangle)

v fluid viscosity

 

 

how do i determine L knowing triangle normal, points, distance, and velocity vector so i could compute the length on that triangle?

Share this post


Link to post
Share on other sites

i think i will be forced to project vector onto that surface then extend it in both directions by square of distance of the farest vertex to tri center, then apply 3x segment-plane intersection to find cut points and somehow test them if they are near or in triangle (due to floatpoint inaccuracy) :x

Share this post


Link to post
Share on other sites

I have a problem:

 

my choordlen is calculated wrongly i am not sure what is wrong:

 

basic idea is that i slice the projected velocity ray with all sides of polygon.









inline float getChoordLength(vec3 velocity, vec3 surf_normal, vec3 pC, vec3 * verts, int vert_count)
{
//Project velocity vector onto surface
vec3 projected = Normalize(ProjectVectorOnPlane(surf_normal, velocity));

//find the biggest side and square it - this will ensure us that ray will always hit two sides
float adst = -999.0;
for (int i=0; i < vert_count; i++)
{
int next = i + 1;
if (next == vert_count) next = 0;
adst = Max(adst, n3ddistance(verts[i],verts[i+1]));
}
adst = adst*adst;

//compute ray
vec3 rA = pC - projected*adst;
vec3 rB = pC + projected*adst;

vec3 cp;

for (int i=0; i < vert_count; i++)
cp = cp + verts[i];

cp = cp / float(vert_count);

vec3 n  = surf_normal*1000.0;

vec3 colp;
//we compute center point to determine whenever a side face is at front or back to the center point (because i don't need to waste time and run math on paper i can just check that and use it for further processing)
int cpside;
for (int i=0; i < vert_count; i++)
{
int next = i + 1;
if (next == vert_count) next = 0;

vec3 normal = Normal(verts[i], verts[next], verts[next] + n, true);
float dst = getplaneD(normal, verts[i]);
//cpside will now determine the
if (i == 0) cpside = classifyapointagainstaplane(cp, normal, dst); // which side faces 'the inside' of polygon  (always either front or bakc never on plane) - solid convex polygon
if (cpside != isBack) //when center point is not behind side plane
{
normal = -normal;
dst = getplaneD(normal, verts[i]);
}


if (SegmentPlaneIntersection(normal, dst, rA, rB, colp))
{
if (dot(Normalize(vectorAB(rA,rB)), normal) < 0) rA = colp;
else rB = colp;
}

}


return n3ddistance(rA, rB);
}

SOmetimes choord len is way bigger than even squared polygon area

 

 

BOX: 0 tri: 1 choord len: 5829.15673828125


A: 56.4643363952637 -1.57975578308105 53.5295028686523
B: 51.9471397399902 -1.47248387336731 54.9943962097168
C: 51.9648056030273 -0.764087855815887 54.9969902038574
 

 

 

 

edited: nvm i pass different surface_normal that  is created by these points, due to fact of simplification of a body shape, thus i need to project points onto passed surface normal. well thats what i think the problem is

Edited by WiredCat

Share this post


Link to post
Share on other sites

This topic is 673 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this