https://mooseframework.inl.gov
MortarSegmentInfo.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 "MooseEnum.h"
13 
14 // Forward declarations
15 namespace libMesh
16 {
17 class Elem;
18 }
19 
20 // libMesh includes
21 #include "libmesh/libmesh_common.h" // not possible to forward declare typedef Real.
22 
23 // C++ includes
24 #include <utility>
25 
26 // Using statements
27 using libMesh::Elem;
28 using libMesh::Real;
29 
30 enum class MortarSegmentTriangulationMode : unsigned char
31 {
32  Delaunay,
33  Centroid,
35  Vertex
36 };
37 
38 CreateMooseEnumClass(Mortar3DQuadraturePointMapping,
39  NORMAL_PROJECTION = 0,
40  REFERENCE_INTERPOLATION = 1);
41 
46 {
54 
58  MortarSegmentInfo(Real x1a, Real x1b, Real x2a, Real x2b);
59 
60  // MortarSegmentInfo(const MortarSegmentInfo &) = default;
61 
65  void print() const;
66 
72  bool isValid() const;
73 
77  const Elem * primary_elem;
78 
79  // A magic number to let us determine when xi values have not been
80  // initialized yet.
81  static const Real invalid_xi;
82 };
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
static const Real invalid_xi
CreateMooseEnumClass(Mortar3DQuadraturePointMapping, NORMAL_PROJECTION=0, REFERENCE_INTERPOLATION=1)
bool isValid() const
Returns true if the current segment is valid, false otherwise.
MortarSegmentTriangulationMode
const Elem * primary_elem
void print() const
Prints xi values and secondary/primary Elem ids.
const Elem * secondary_elem
MortarSegmentInfo()
Constructor.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Holds xi^(1), xi^(2), and other data for a given mortar segment.