https://mooseframework.inl.gov
XFEMCutElem2D.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 "XFEMCutElem.h"
13 #include "EFAElement2D.h"
14 
15 using namespace libMesh;
16 
17 namespace libMesh
18 {
19 class MeshBase;
20 class Elem;
21 class Node;
22 }
23 
24 class XFEMCutElem2D : public XFEMCutElem
25 {
26 public:
34  XFEMCutElem2D(Elem * elem,
35  const EFAElement2D * const CEMelem,
36  unsigned int n_qpoints,
37  unsigned int n_sides);
38  ~XFEMCutElem2D();
39 
40 private:
41  EFAElement2D _efa_elem2d; // 2D EFAelement
42  virtual Point getNodeCoordinates(EFANode * node, MeshBase * displaced_mesh = nullptr) const;
43 
44 public:
45  virtual void computePhysicalVolumeFraction();
46  virtual void computePhysicalFaceAreaFraction(unsigned int side);
47  virtual void computeMomentFittingWeights();
48  virtual Point getCutPlaneOrigin(unsigned int plane_id, MeshBase * displaced_mesh = nullptr) const;
49  virtual Point getCutPlaneNormal(unsigned int plane_id, MeshBase * displaced_mesh = nullptr) const;
50  virtual void
51  getCrackTipOriginAndDirection(unsigned tip_id, Point & origin, Point & direction) const;
52  virtual void getFragmentFaces(std::vector<std::vector<Point>> & frag_faces,
53  MeshBase * displaced_mesh = nullptr) const;
54  virtual const EFAElement * getEFAElement() const;
55  virtual unsigned int numCutPlanes() const;
56  virtual void getIntersectionInfo(unsigned int plane_id,
57  Point & normal,
58  std::vector<Point> & intersectionPoints,
59  MeshBase * displaced_mesh = nullptr) const;
60 
61 private:
62  void getPhysicalQuadraturePoints(std::vector<std::vector<Real>> & tsg);
63  void solveMomentFitting(unsigned int nen,
64  unsigned int nqp,
65  std::vector<Point> & elem_nodes,
66  std::vector<std::vector<Real>> & tsg,
67  std::vector<std::vector<Real>> & wsg);
68 };
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...
EFAElement2D _efa_elem2d
Definition: XFEMCutElem2D.h:41