Discussion:
[ff3d-users] Problem with surface meshes
Juzar Thingna
2010-08-26 13:15:47 UTC
Permalink
Hello Everyone,
I'm facing a very strange problem with surface meshes. Here is my input file
and domain file.

------------------------------------------------------------------------------------------------------------------------------
box {<-0.25,-0.1,-0.25>,<0.25,0,0.25>
pigment{color rgb <0,0,0>}
}
box {<-2.5,0,-2.5>,<2.5,0.1,2.5>
pigment{color rgb <1,0,0>}
}
intersection{
box{<-0.25,-0.1,-0.25>,<0.25,0.0,0.25>}
union{
cylinder{<-0.1,0,-0.1>,<-0.1,0.1,-0.1>,0.235}
cylinder{< 0.0,0, 0.0>,< 0.0,0.1, 0.0>,0.235}
cylinder{< 0.1,0, 0.1>,< 0.1,0.1, 0.1>,0.235}
cylinder{<-0.1,0, 0.1>,<-0.1,0.1, 0.1>,0.235}
cylinder{< 0.1,0,-0.1>,< 0.1,0.1,-0.1>,0.235}
}
pigment{color rgb <0,0,1>}
}
------------------------------------------------------------------------------------------------------------------------------
vector n=(200,20,200);
vector a=(-2.5,0.0,-2.5);
vector b=(2.5,0.1,2.5);
scene S=pov("domain.pov");
function L=1;
mesh M=structured(n,a,b);
domain O =domain(S,inside(<1,0,0>));
domain Q =domain(S,inside(<0,0,1>));
domain R =domain(S,inside(<0,0,0>) && inside(<0,0,1>));
mesh T=surface(Q,M);
mesh F=surface(R,M);
solve(u) in O by M method (type=eliminate),
bicg(epsilon=1E-4, maxiter=100000),
krylov(precond=diagonal, type=bicg)
{
pde(u)
div(L*grad(u))-u=0;
u=0 on M zmax;
u=0 on M zmin;
u=0 on M xmax;
u=0 on M xmin;
dnu(u)=0.297700*2*L on F;
dnu(u)=0.000700*2*L on T;
}
mesh Z = tetrahedrize (O,M);
save(medit,"hel_u_n",u,Z);
save(medit,"hel_u_n",Z);
save(raw,"hel_u_n.dat",u,M);
------------------------------------------------------------------------------------------------------------------------------

everytime I get the following error.



warning :
meshing object intersection {
box {
<-0.25, -0.1, -0.25>, <0.25, 0, 0.25>
}

union {
cylinder {
(-0.1, 0, -0.1), (-0.1, 0.1, -0.1), 0.235
}

cylinder {
(0, 0, 0), (0, 0.1, 0), 0.235
}

cylinder {
(0.1, 0, 0.1), (0.1, 0.1, 0.1), 0.235
}

cylinder {
(-0.1, 0, 0.1), (-0.1, 0.1, 0.1), 0.235
}

cylinder {
(0.1, 0, -0.1), (0.1, 0.1, -0.1), 0.235
}

}

}
a problem occured ...
Check that:
- the object is not to small compare to the background mesh
- the object intersects the background mesh

I'm quite certain the surface mesh is intersected by the background mesh and
also it is not too small for the background mesh. Any ideas why this is
occuring?

Regards,

Juzar Thingna
Department of Physics,
Center for Computation Science and Engineering,
National University of Singapore.


"I almost wish I hadn't gone down the rabbit-hole ---and yet---and yet---
it's rather curious you know, this sort of life!" Alice
Stephane Del Pino
2010-08-27 20:14:10 UTC
Permalink
Dear Juzar.

ff3d uses the marching tetrahedra algorithm to build surface meshes.

This algorithm uses characteristic functions of primitives (volumes). If a
volume is null or if it does not contain any point of the background mesh, the
algorithm fails. You are at least in the first situation since your box
intersects your cylinders' union on there faces y=0.

Best regards,
Stéphane.

Loading...