Hi all,

And I apologize in advance for posting a question that might break several 
of the "how to post a question" rules.

*The Issue*
I'm trying to use a .STEP file to load a 3D geometry that is a bit more 
complex - it has holes, for instance. I would like meshes to get closer to 
the original geometry, upon refinement. To this end, I tried a number of 
approaches (listed below), and eventually settled on using my own 
custom-made manifolds (more details below). Starting with a somewhat coarse 
grid, each of the original cells has its own manifold, and refinement 
produces points using transfinite interpolation. The problem is that the 
ChartManifold::pull_back is called with points that seem very far away from 
the manifold itself. I expected that if vertices v0, v1, v2, v3 were the 
corners of a quadrangle representing a face, pull_back would be called with 
a point that is not too far from the said quadrangle. Instead, I get this 
(which seems to sugest that perhaps pull_back is called on the wrong 
manifold; below, the point is the argument of pull_back, while the colored 
curves are the 4 lines bounding the quadrangle):
[image: Figure_1.png]
Does anyone know what kind of points ChartManifold<3, 3, i>::pull_back is 
supposed to handle? (i = 1, 2, and 3).  

*What I Tried*
I looked at step-54 (and the source code/header of opencascade/manifold_lib 
and related utilities), and step-65 (transfinite interpolation). I wasn't 
able to use the NormalToMeshProjection since some of the holes are cylinder 
shaped, and an error was raised when computing the normal (the vectors that 
were averaged had a close to 0 sum). I also had issues with 
TransfiniteInterpolation, which was unable to complete the pull_back for 
some of the cells. In addition, there were a few other failed attempts, 
where the faces were already shattered into small quads prior to using the 
NormalToMeshProjection + TransfiniteInterpolation. I didn't have much luck 
with the other classes in opencascade/manifold_lib (e.g. Opencascade NURBS).

*The Current Approach*
I'm currently using the gmsh API to create a coarse mesh, and create the 
triangulation using the create_triangulation function. After that, I assign 
manifold_id (with set_manifold_id) and manifolds to each line/edge of each 
cell, whether internal or boundary (using wrappers around Opencascade 
functions, as needed), then do the same for each quad, and finally, for 
each cell. 

I'm using version 9.7.0 of deal.II (version found in 
/usr/local/lib/cmake/deal.II/deal.IIConfigVersion.cmake).

Thank you.
Best regards,
Silviu

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/dealii/54e4e702-434f-4c11-88d5-3354076e8320n%40googlegroups.com.

Reply via email to