libMesh
Loading...
Searching...
No Matches
Classes | Functions | Variables
mesh_input.C File Reference

Go to the source code of this file.

Classes

class  MeshInputTest
 

Functions

Number six_x_plus_sixty_y (const Point &p, const Parameters &, const std::string &, const std::string &)
 
Number sin_x_plus_cos_y (const Point &p, const Parameters &, const std::string &, const std::string &)
 
Number designed_for_side_elems (const Point &p, const Parameters &param, const std::string &, const std::string &)
 
 CPPUNIT_TEST_SUITE_REGISTRATION (MeshInputTest)
 

Variables

constexpr int added_sides_nxyz [] = {2,2,2}
 

Function Documentation

◆ CPPUNIT_TEST_SUITE_REGISTRATION()

CPPUNIT_TEST_SUITE_REGISTRATION ( MeshInputTest  )

◆ designed_for_side_elems()

Number designed_for_side_elems ( const Point &  p,
const Parameters &  param,
const std::string &  ,
const std::string &   
)

Definition at line 56 of file mesh_input.C.

60{
61 const Real & x = p(0);
62 const Real & y = p(1);
63 const Real & z = p(2);
64
65 short facedim = param.have_parameter<short>("face") ?
66 param.get<short>("face") : -1;
67
68 // What face are we on?
69 auto is_on_face = [facedim](Real r, short rdim) {
70 if (facedim == rdim)
71 return true;
72 if (facedim >= 0)
73 return false;
74 const Real numerator = r * added_sides_nxyz[rdim];
75 return (std::abs(numerator - std::round(numerator)) <
77 };
78
79
80
81 // x/y/z components of a div-free flux,
82 // curl([x^2yz, xy^2z, xyz])
83 if (is_on_face(x, 0))
84 {
85 libmesh_assert(!is_on_face(y, 1));
86 libmesh_assert(!is_on_face(z, 2));
87 return (x*z-x*y*y);
88 }
89 if (is_on_face(y, 1))
90 {
91 libmesh_assert(!is_on_face(z, 2));
92 return (x*x*y-y*z);
93 }
94
95 libmesh_assert(is_on_face(z, 2));
96 return (y*y*z-x*x*z);
97}
bool have_parameter(std::string_view) const
Definition parameters.h:420
const T & get(std::string_view) const
Definition parameters.h:451
constexpr int added_sides_nxyz[]
Definition mesh_input.C:54
libmesh_assert(ctx)
static constexpr Real TOLERANCE
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

References added_sides_nxyz, libMesh::Parameters::get(), libMesh::Parameters::have_parameter(), libMesh::libmesh_assert(), libMesh::Real, and libMesh::TOLERANCE.

Referenced by MeshInputTest::testExodusDiscWriteAddedSidesEdgeDisc(), MeshInputTest::testExodusDiscWriteAddedSidesHexDisc(), MeshInputTest::testExodusDiscWriteAddedSidesQuadDisc(), MeshInputTest::testExodusDiscWriteAddedSidesTetDisc(), MeshInputTest::testExodusDiscWriteAddedSidesTriDisc(), MeshInputTest::testExodusWriteAddedSidesEdgeDisc(), MeshInputTest::testExodusWriteAddedSidesHexDisc(), MeshInputTest::testExodusWriteAddedSidesQuadDisc(), MeshInputTest::testExodusWriteAddedSidesTetDisc(), and MeshInputTest::testExodusWriteAddedSidesTriDisc().

◆ sin_x_plus_cos_y()

Number sin_x_plus_cos_y ( const Point &  p,
const Parameters &  ,
const std::string &  ,
const std::string &   
)

Definition at line 43 of file mesh_input.C.

47{
48 const Real & x = p(0);
49 const Real & y = p(1);
50
51 return sin(x) + cos(y);
52}

References libMesh::Real.

Referenced by MeshInputTest::testCopyElementVectorImpl(), and MeshInputTest::testProjectionRegression().

◆ six_x_plus_sixty_y()

Number six_x_plus_sixty_y ( const Point &  p,
const Parameters &  ,
const std::string &  ,
const std::string &   
)

Variable Documentation

◆ added_sides_nxyz

constexpr int added_sides_nxyz[] = {2,2,2}
constexpr

Definition at line 54 of file mesh_input.C.

54{2,2,2};

Referenced by designed_for_side_elems().