35 #ifndef particletopologydescription_h 36 #define particletopologydescription_h 51 #define _IFT_Circle_center "center" 52 #define _IFT_Circle_radius "radius" 53 #define _IFT_Circle_start "start" 54 #define _IFT_Circle_end "end" 59 #define _IFT_Line_start "start" 60 #define _IFT_Line_end "end" 65 #define _IFT_Point_coords "coords" 70 #define _IFT_Meshing_elementType "elementtype" 71 #define _IFT_Meshing_set "set" 76 #define _IFT_ParticleTopologyDescription_Name "particletopology" 77 #define _IFT_ParticleTopologyDescription_nsd "nsd" 78 #define _IFT_ParticleTopologyDescription_baseResolution "baseresolution" 79 #define _IFT_ParticleTopologyDescription_tubeWidth "tubewidth" 80 #define _IFT_ParticleTopologyDescription_neighbors "neighbors" 81 #define _IFT_ParticleTopologyDescription_boundingBoxA "bboxa" 82 #define _IFT_ParticleTopologyDescription_boundingBoxB "bboxb" 83 #define _IFT_ParticleTopologyDescription_numberOfSegments "nsegments" 84 #define _IFT_ParticleTopologyDescription_regionOutside "regionoutside" 85 #define _IFT_ParticleTopologyDescription_regionInside "regioninside" 86 #define _IFT_ParticleTopologyDescription_identification "id" 92 template<
class Po
int >
class ParticleGrid;
100 foot(foot), id(id), normal(normal), distance2(distance2),
removal(false) {};
145 std :: unique_ptr< ParticleGrid< ParticlePoint > >
grid;
202 void collectNeighbors(std :: list< ParticlePoint * > &answer,
const ParticlePoint *p,
double dist = 0)
const;
217 double shortestDistanceFromCurve(
const FloatArray &a,
double txi_min,
double txi_max,
257 virtual bool instanciateYourself(
DataReader &dr);
272 virtual void generateMesh(std :: vector< FloatArray > &nodes, std :: vector< IntArray > &elements, std :: vector< IntArray > &segments,
275 virtual void replaceFEMesh();
277 virtual void doOutput(
TimeStep *tStep);
278 virtual void writeDataToFile(
const char *name)
const;
279 virtual void writeVTKFile(
const char *name)
const;
281 virtual const char *
giveClassName()
const {
return "ParticleTopologyDescription"; }
284 #endif // particletopologydescription_h
bool writeVTK
Conditional for printing VTK output.
IntArray regionOutside
Mapping of regions from delimited by each id.
FloatArray corner
Corner particle (for open surfaces).
Class representing the abstraction for input data source.
Particle grid data structure for n-D grids.
Class implementing an array of integers.
FloatArray total_displacement
Total displacement since last resampling.
FloatArray foot
Closest coordinate on surface.
bool resampled
Denotes if the active grid is newly resampled.
std::unique_ptr< ParticleGrid< ParticlePoint > > grid
The grid of points, the actual topological information.
ParticlePoint(const FloatArray &foot, int id, const FloatArray &normal, double distance2)
Default point type for describing topology.
int c_node
Corner node number (for open surfaces).
Plane straight line graph used as input for meshing with triangle.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
int m
Number of points to use for resampling.
int node
Node number (for meshing)
Abstract class for topology description.
double tubeWidth
Width of the tube around the interfaces.
virtual const char * giveClassName() const
Gives the name of the class.
std::list< ParticlePoint > corners
Corner nodes.
double maxdisp2
Maximum squared displacement of any particle.
FloatArray normal
Surface normal at foot point.
the oofem namespace is to define a context or scope in which all oofem names are defined.
bool useDisplacements
Determines if velocity or displacements dofs should be used to update geometry.
std::vector< std::string > regionElementType
Mapping from region to FE components.
TopologyState
Determines the state of the evolving topology.
Class representing solution step.
double distance2
Squared distance stored for efficiency.
A grid based particle method for describing topology.