www.mooseframework.org
GeometricCut2DUserObject.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "GeometricCutUserObject.h"
13 
14 // Forward declarations
16 
17 template <>
19 
21 {
22 public:
23  GeometricCut2DUserObject(const InputParameters & parameters);
24 
25  virtual bool cutElementByGeometry(const Elem * elem,
26  std::vector<Xfem::CutEdge> & cut_edges,
27  std::vector<Xfem::CutNode> & cut_nodes,
28  Real time) const override;
29  virtual bool cutElementByGeometry(const Elem * elem,
30  std::vector<Xfem::CutFace> & cut_faces,
31  Real time) const override;
32 
33  virtual bool cutFragmentByGeometry(std::vector<std::vector<Point>> & frag_edges,
34  std::vector<Xfem::CutEdge> & cut_edges,
35  Real time) const override;
36  virtual bool cutFragmentByGeometry(std::vector<std::vector<Point>> & frag_faces,
37  std::vector<Xfem::CutFace> & cut_faces,
38  Real time) const override;
39 
40 protected:
41  std::vector<std::pair<Point, Point>> _cut_line_endpoints;
42 
43  bool IntersectSegmentWithCutLine(const Point & segment_point1,
44  const Point & segment_point2,
45  const std::pair<Point, Point> & cutting_line_points,
46  const Real & cutting_line_fraction,
47  Real & segment_intersection_fraction) const;
48 
49  Real crossProduct2D(const Point & point_a, const Point & point_b) const;
50 
58  virtual Real cutFraction(unsigned int cut_num, Real time) const;
59 
61  std::vector<std::pair<Real, Real>> _cut_time_ranges;
62 };
63 
GeometricCut2DUserObject::cutElementByGeometry
virtual bool cutElementByGeometry(const Elem *elem, std::vector< Xfem::CutEdge > &cut_edges, std::vector< Xfem::CutNode > &cut_nodes, Real time) const override
Check to see whether a specified 2D element should be cut based on geometric conditions.
Definition: GeometricCut2DUserObject.C:39
GeometricCut2DUserObject::GeometricCut2DUserObject
GeometricCut2DUserObject(const InputParameters &parameters)
Definition: GeometricCut2DUserObject.C:31
GeometricCut2DUserObject::cutFraction
virtual Real cutFraction(unsigned int cut_num, Real time) const
Find the fractional distance along a specified cut line for the current time that is currently active...
Definition: GeometricCut2DUserObject.C:202
GeometricCut2DUserObject::_cut_time_ranges
std::vector< std::pair< Real, Real > > _cut_time_ranges
Vector of start/end times for each cut segment.
Definition: GeometricCut2DUserObject.h:61
GeometricCutUserObject.h
GeometricCutUserObject
Definition: GeometricCutUserObject.h:106
GeometricCut2DUserObject::crossProduct2D
Real crossProduct2D(const Point &point_a, const Point &point_b) const
Definition: GeometricCut2DUserObject.C:196
GeometricCut2DUserObject
Definition: GeometricCut2DUserObject.h:20
GeometricCut2DUserObject::IntersectSegmentWithCutLine
bool IntersectSegmentWithCutLine(const Point &segment_point1, const Point &segment_point2, const std::pair< Point, Point > &cutting_line_points, const Real &cutting_line_fraction, Real &segment_intersection_fraction) const
Definition: GeometricCut2DUserObject.C:155
GeometricCut2DUserObject::cutFragmentByGeometry
virtual bool cutFragmentByGeometry(std::vector< std::vector< Point >> &frag_edges, std::vector< Xfem::CutEdge > &cut_edges, Real time) const override
Check to see whether a fragment of a 2D element should be cut based on geometric conditions.
Definition: GeometricCut2DUserObject.C:107
GeometricCut2DUserObject::_cut_line_endpoints
std::vector< std::pair< Point, Point > > _cut_line_endpoints
Definition: GeometricCut2DUserObject.h:41
validParams< GeometricCut2DUserObject >
InputParameters validParams< GeometricCut2DUserObject >()
Definition: GeometricCut2DUserObject.C:22