libMesh
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 55 of file mesh_input.C.

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().

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

◆ 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 42 of file mesh_input.C.

References libMesh::Real.

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

46 {
47  const Real & x = p(0);
48  const Real & y = p(1);
49 
50  return sin(x) + cos(y);
51 }
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ 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}

Definition at line 53 of file mesh_input.C.

Referenced by designed_for_side_elems().