ug4
expand_layers_arte.cpp File Reference
#include <boost/function.hpp>
#include "expand_layers.h"
#include "expand_layers_arte.h"
#include "lib_grid/algorithms/geom_obj_util/geom_obj_util.h"
#include "lib_grid/callbacks/callbacks.h"
#include "lib_grid/grid/grid_util.h"
#include <stack>
#include <utility>
#include <vector>
#include <type_traits>
#include <limits>
#include <atomic>
#include <cstddef>
#include <bitset>
#include <string>
#include <cmath>
#include "support.h"

Namespaces

 ug
 the ug namespace
 

Macros

#define ESTABLISH_DEBUG_SUDOS   0
 
#define FORMER_PROMESH_FINITE_CLEFT_TECHNIQUE   0
 
#define WORKAROUND_ARTE_SEGFAULT   1
 

Typedefs

using ug::AttVrtVec = Attachment< std::vector< Vertex * > >
 
using ug::CrossVertInf = CrossingVertexInfo< Vertex *, IndexType >
 
using ug::ExpandCrossFracInfo = VertexFractureTriple< std::pair< Edge *, Edge * >, Face *, std::pair< Vertex *, Vertex * > >
 
using ug::IndexType = unsigned short
 
using ug::SegmentsFractExtrus = std::vector< VecVertexOfFaceInfo >
 
using ug::VecEdge = std::vector< Edge * >
 
using ug::VecExpandCrossFracInfo = std::vector< ExpandCrossFracInfo >
 
using ug::VecFace = std::vector< Face * >
 
using ug::VecVertexOfFaceInfo = std::vector< VertexOfFaceInfo >
 
using ug::VecVertFracTrip = std::vector< VertFracTrip >
 
using ug::VertexOfFaceInfo = VertexFractureTriple< std::pair< Edge *, Edge * >, Face *, std::pair< vector3, vector3 > >
 
using ug::VertFracTrip = VertexFractureTriple< Edge *, Face *, vector3 >
 

Functions

void ug::assignFaceSubsetToClosedFace (std::vector< Face * > &faceVec, Grid &grid, SubsetHandler &sh)
 
void ug::computeDiamondPointXCrossType (ExpandCrossFracInfo &expCFIBeforeFracEdg, ExpandCrossFracInfo &expCFIAfterFracEdg, Vertex *const &crossPt, Grid::VertexAttachmentAccessor< APosition > &aaPos, SubsetHandler &sh, Grid &grid, IndexType const &diamantSubsNum, vector3 &distVecNewVrt2SCrossPt, bool useTrianglesInDiamonds=false)
 
void ug::createDiamondFacesXCrossType (ExpandCrossFracInfo &expCFIBeforeFracEdg, ExpandCrossFracInfo &expCFIAfterFracEdg, std::vector< Face * > &newDiamFaceVec, SubsetHandler &sh, Grid &grid, IndexType diamantSubsNum, Vertex *&crossPt, bool isFreeTEnd=false)
 
void ug::createNewFacesForExtXCrossFracs (ExpandCrossFracInfo const &ecf, std::vector< Face * > &newFracFaceVec, bool &boundAtShiftVrtEdg, SubsetHandler &sh, Grid &grid, Vertex *const &crossPt, std::vector< IndexType > const &subdomList)
 
bool ug::determineOrderOfFaces (VecVertFracTrip const &vecVertFracTrip, VecFace const &assoFaces, VecVertexOfFaceInfo &orderedFaces, SegmentsFractExtrus &segments, IndexType startIndex, std::vector< Edge * > const &allAssoEdges, SubsetHandler &sh, Grid::EdgeAttachmentAccessor< ABool > const &aaMarkEdgeB, std::vector< Edge * > const &adjBndEdgs=std::vector< Edge * >(), Face *const &attFaceOf1stBndEdg=nullptr)
 
bool ug::ExpandFractures2dArte (Grid &grid, SubsetHandler &sh, vector< FractureInfo > const &fracInfos, bool useTrianglesInDiamonds, bool establishDiamonds)
 
template<typename ASOF >
bool ug::expandSingleFractureAtGivenSide (vector3 const &nOne, vector3 const &nTwo, Edge *edgeOne, Edge *edgeTwo, Face *facOne, Face *facTwo, vector< FractureInfo > const &fracInfosBySubset, vector3 const &posOldVrt, Grid::VertexAttachmentAccessor< APosition > &aaPos, Grid &grid, SubsetHandler &sh, ASOF const &assoFaces, std::vector< Vertex * > const &nextFracVrt, Grid::FaceAttachmentAccessor< AttVrtVec > &aaVrtVecFace, int &dbg_flachen_passiert, Vertex *iterV)
 
template<typename ASOF >
bool ug::expandSingleFractureAtGivenSide (vector3 const &nOne, vector3 const &nTwo, Edge *edgeOne, Edge *edgeTwo, Face *facOne, Face *facTwo, vector< FractureInfo > const &fracInfosBySubset, vector3 const &posOldVrt, Grid::VertexAttachmentAccessor< APosition > &aaPos, Grid &grid, SubsetHandler &sh, ASOF const &assoFaces, std::vector< Vertex * > const &nextFracVrt, Grid::FaceAttachmentAccessor< AttVrtVec > &aaVrtVecFace, int &dbg_flachen_passiert, Vertex *iterV, CrossVertInf &crossVrtInf, bool insertCrossVrtInf=true)
 
template<>
bool ug::expandSingleFractureAtGivenSide< VecVertexOfFaceInfo > (vector3 const &nOne, vector3 const &nTwo, Edge *edgeOne, Edge *edgeTwo, Face *facOne, Face *facTwo, vector< FractureInfo > const &fracInfosBySubset, vector3 const &posOldVrt, Grid::VertexAttachmentAccessor< APosition > &aaPos, Grid &grid, SubsetHandler &sh, VecVertexOfFaceInfo const &segPart, std::vector< Vertex * > const &nextFracVrt, Grid::FaceAttachmentAccessor< AttVrtVec > &aaVrtVecFace, int &dbg_flachen_passiert, Vertex *crossPt, CrossVertInf &crossVrtInf, bool insertCrossVrtInf)
 
template<>
bool ug::expandSingleFractureAtGivenSide< VecVertexOfFaceInfo > (vector3 const &nOne, vector3 const &nTwo, Edge *edgeOne, Edge *edgeTwo, Face *facOne, Face *facTwo, vector< FractureInfo > const &fracInfosBySubset, vector3 const &posOldVrt, Grid::VertexAttachmentAccessor< APosition > &aaPos, Grid &grid, SubsetHandler &sh, VecVertexOfFaceInfo const &segPart, std::vector< Vertex * > const &nextFracVrt, Grid::FaceAttachmentAccessor< AttVrtVec > &aaVrtVecFace, int &dbg_flachen_passiert, Vertex *iterV)
 
bool ug::SortFaces4DiamondCreation (SubsetHandler &sh, std::vector< Face * > &assoFacCrossCop, Edge *&firstEdgeFac, Edge *&secondEdgeFac, Face *&assoFacConsider, VecEdge const &origFracEdg, std::vector< Vertex * > const &shiftVrtcs, Vertex *const &crossPt, Edge *&assoFacEdgBeg2Fix, Edge *&assoFacEdgEnd2Fix, Grid &grid, VecExpandCrossFracInfo &vecExpCrossFI, bool isXCross=true)
 
void ug::teachAssoFacesNewVrtx (VecVertexOfFaceInfo const &segPart, Grid::FaceAttachmentAccessor< AttVrtVec > &aaVrtVecFace, Vertex *const &crossPt, Vertex *const &newShiftVrtx)
 

Macro Definition Documentation

◆ ESTABLISH_DEBUG_SUDOS

#define ESTABLISH_DEBUG_SUDOS   0

◆ FORMER_PROMESH_FINITE_CLEFT_TECHNIQUE

#define FORMER_PROMESH_FINITE_CLEFT_TECHNIQUE   0

◆ WORKAROUND_ARTE_SEGFAULT

#define WORKAROUND_ARTE_SEGFAULT   1