Implementation of new mesh intersection functionality and Nitsche's method for overlapping meshes.
The goal is to provide all the functionality that is required to realize Nitsche's method for overlapping meshes within the FEniCS framework. We first aim at a rather low level implementation (no integration in UFL), meaning that we have at least to provide all necessary information for adding a new or modifying assembling routine.
Basically the task consists of:
-Implement intersection detection for cells and boundaries
-Implement routines for computation of the intersected volumes/areas.
-Provide reasonable quadrature formulas for integration on polyhedrons and parts of its surface.
-Modify or add assembling routine for incorporating the additional interface, jump and penalty terms appearing in Nitsche's method
Blueprint information
- Status:
- Complete
- Approver:
- Anders Logg
- Priority:
- Undefined
- Drafter:
- Andre Massing
- Direction:
- Needs approval
- Assignee:
- Andre Massing
- Definition:
- Obsolete
- Series goal:
- None
- Implementation:
- Started
- Milestone target:
- None
- Started by
- Andre Massing
- Completed by
- Andre Massing
Related branches
Related bugs
Sprints
Whiteboard
As suggested this blueprint will be split up into smaller feasible pieces.
This looks more like a project plan than a blueprint - it should be broken up in to small pieces.
First step is to provide better intersection detection functionality for fast intersection test of different kind of geomtric objects, for instance tetrahedrons with tetrahedrons, triangles and so on. The old interface was only capable of detecting intersection of cells with points and 2D cells with lines.
The CGAL is used to replace the old interface based on GTS. Intersect test have been supplied to the existing in CGAL.
All important intersection detection cases have been implemented (except segment -segment and segement-
Main interface will be IntersectionOpe
Public member function:
///Compute all id of all cells which are intersects by Point point.
///The ids of the intersected entities are saved in a set for efficienty reasons, to avoid to sort out duplicates.
void all_intersected
///Compute all id of all cells which are intersects by any Point contained in points
///The ids of the intersected entities are saved in a set for efficienty reasons, to avoid to sort out duplicates.
void all_intersected
///Compute all id of all cells which are intersected by the given mesh.
void all_intersected
///Computes the first id of the entity, which contains the point. Returns -1 if no cell is intersected. For fast function evalutation.
int any_intersected
///Rebuilds the underlying search structure from scratch.
void rebuild_tree();