Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement fractures #10

Open
2 of 3 tasks
jirihnidek opened this issue Apr 27, 2016 · 21 comments
Open
2 of 3 tasks

Implement fractures #10

jirihnidek opened this issue Apr 27, 2016 · 21 comments
Assignees

Comments

@jirihnidek
Copy link
Contributor

jirihnidek commented Apr 27, 2016

  • Get testing data from Jakub.
  • Implement reading of fractures from input files.
  • Split volume to several volumes using fractures.
@jirihnidek jirihnidek self-assigned this Apr 27, 2016
@jirihnidek
Copy link
Contributor Author

Fractures can be loaded in BREP file format:

terrain_fractures

@jirihnidek
Copy link
Contributor Author

jirihnidek commented May 24, 2016

Try to use this method section = BRepAlgoAPI_Section(surface, face): http://api.pythonocc.org/OCC.BRepAlgoAPI.html#OCC.BRepAlgoAPI.BRepAlgoAPI_Section for computing intersection between face and B-Spline surface.

Edit: no this method is not faster than boolean operations.

@jirihnidek jirihnidek changed the title Implement fracture Implement fractures Feb 9, 2017
@jirihnidek
Copy link
Contributor Author

It is possible to split volume into the two compatible volumes:

netgen_mesher-two_compatible-volumes

@jirihnidek
Copy link
Contributor Author

It is possible to create volume defined by box, which is created from 7 faces:

netgen-7_faces_cube

It means that further splitting of volume is in theory possible.

@jbrezmorf
Copy link

jbrezmorf commented Feb 13, 2017 via email

@jirihnidek
Copy link
Contributor Author

I just work on further splitting. Results you already see is created by code using b-spline faces. It seems flat, but everything is defined by b-spline faces. First NetGen screenshot has interior face.

Face partially dived into volume or face with whole boundary inside volume is something more complicated and I don't know how to solve it ATM.

@jbrezmorf
Copy link

jbrezmorf commented Feb 13, 2017 via email

@jirihnidek
Copy link
Contributor Author

I can confirm that It is possible to create one compound containing two volumes with shared face. GMSH is not able to mesh volume, but NetGen Mesher creates compatible meshes for volumes and shells. Notice that volumes are visualized with different colors:

netgent_two_volumes

@jirihnidek
Copy link
Contributor Author

It seems that splitting volume to more parts is complicated. The hard part is replacing one face with more faces:

https://www.opencascade.com/content/compound-made-2-solids-shared-face

At least it is described.

@jirihnidek
Copy link
Contributor Author

Replacing face using BRepTools_ReShape() is just not good enough, when you try to "join" more then two shells/solids. Netgen cries, because there is duplicity in edges. It is interesting that netgen doesn't care, when there are two shells/solids.

@jirihnidek
Copy link
Contributor Author

WIP: It is more complicated, than I thought. 4 new edges orthogonal to removed face have wrong direction. Good news is: I was able to manually edit generated BREP file and create correct BREP file (I replaced 4 - characters with 4 + characters). It was possible to mesh final BREP file in netgen:

netgen_11_faces

I hope I will have working algorithm fixing wrong direction of edges tomorrow.

I did also some experiments with Glue* functions. It can remove common face of two solids, but it produces only one solid. Thus it does almost the same thing as sewing and it is not useful for our purpose.

@jirihnidek
Copy link
Contributor Author

jirihnidek commented Mar 20, 2017

This is mindblowing. The only one problem was missing switch of orientation of vertex. In what universe does have single point orientation? Crazy library!

@jbrezmorf
Copy link

jbrezmorf commented Mar 20, 2017 via email

@jirihnidek
Copy link
Contributor Author

Screenshot with three solids:

netgen-3-solids

@jirihnidek
Copy link
Contributor Author

I did some experiments with unusual shapes of cutting solids objects and results are OK. Meshing of final BREP files is OK too:

bapprox-triangle
bapprox-odsek

@jbrezmorf
Copy link

jbrezmorf commented Mar 23, 2017 via email

@jirihnidek
Copy link
Contributor Author

I will test more cutting today. Some more experiment from yesterday:

baprox-box

@jirihnidek
Copy link
Contributor Author

Some non trivial examples with more levels of splitting. Due to second example I had to fix one bug.

bapprox_three_solids_01
bapprox_three_solids_02

Of course, I was able to do compatible meshing of all compounds.

@jirihnidek
Copy link
Contributor Author

WIP: splitting of splitted solid works as well glue it together. What remains is glue following shapes with other two solids.

bapprox_four_wip

@jirihnidek
Copy link
Contributor Author

Almost done. Screenshot from GMSH to show compatible meshing of solids:

gmsh_meshing_tri-wip

@jirihnidek
Copy link
Contributor Author

My task in this project is finished:
gmsh-four_solids-compatible_meshing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants