libMesh
Public Member Functions | Private Member Functions | List of all members
ParsedFunctionTest Class Reference
Inheritance diagram for ParsedFunctionTest:
[legend]

Public Member Functions

void setUp ()
 
void tearDown ()
 
 CPPUNIT_TEST_SUITE (ParsedFunctionTest)
 
 CPPUNIT_TEST (testValues)
 
 CPPUNIT_TEST (testInlineGetter)
 
 CPPUNIT_TEST (testInlineSetter)
 
 CPPUNIT_TEST (testTimeDependence)
 
 CPPUNIT_TEST_SUITE_END ()
 

Private Member Functions

void testValues ()
 
void testInlineGetter ()
 
void testInlineSetter ()
 
void testTimeDependence ()
 

Detailed Description

Definition at line 19 of file parsed_function_test.C.

Member Function Documentation

◆ CPPUNIT_TEST() [1/4]

ParsedFunctionTest::CPPUNIT_TEST ( testInlineGetter  )

◆ CPPUNIT_TEST() [2/4]

ParsedFunctionTest::CPPUNIT_TEST ( testInlineSetter  )

◆ CPPUNIT_TEST() [3/4]

ParsedFunctionTest::CPPUNIT_TEST ( testTimeDependence  )

◆ CPPUNIT_TEST() [4/4]

ParsedFunctionTest::CPPUNIT_TEST ( testValues  )

◆ CPPUNIT_TEST_SUITE()

ParsedFunctionTest::CPPUNIT_TEST_SUITE ( ParsedFunctionTest  )

◆ CPPUNIT_TEST_SUITE_END()

ParsedFunctionTest::CPPUNIT_TEST_SUITE_END ( )

◆ setUp()

void ParsedFunctionTest::setUp ( )
inline

Definition at line 22 of file parsed_function_test.C.

22 {}

◆ tearDown()

void ParsedFunctionTest::tearDown ( )
inline

Definition at line 24 of file parsed_function_test.C.

24 {}

◆ testInlineGetter()

void ParsedFunctionTest::testInlineGetter ( )
inlineprivate

Definition at line 59 of file parsed_function_test.C.

60  {
61  ParsedFunction<Number> ax2("a:=4.5;a*x*2");
62 
63  // Test whether move assignment works.
64  ParsedFunction<Number> ax2_stolen("x");
65  ax2_stolen = std::move(ax2);
66 
67  LIBMESH_ASSERT_FP_EQUAL
68  (libmesh_real(ax2_stolen(Point(0.25,0.25,0.25))), 2.25, TOLERANCE*TOLERANCE);
69 
70  LIBMESH_ASSERT_FP_EQUAL
71  (libmesh_real(ax2_stolen.get_inline_value("a")), 4.5, TOLERANCE*TOLERANCE);
72 
74  ("a := 4 ; b := a/2+1; c:=b-a+3.5; c*x*2*y*4");
75 
76  LIBMESH_ASSERT_FP_EQUAL
77  (libmesh_real(cxy8(Point(0.5,0.5,0.5))), 5.0, TOLERANCE*TOLERANCE);
78 
79  LIBMESH_ASSERT_FP_EQUAL
80  (libmesh_real(cxy8.get_inline_value("b")), 3.0, TOLERANCE*TOLERANCE);
81 
82  LIBMESH_ASSERT_FP_EQUAL
83  (libmesh_real(cxy8.get_inline_value("c")), 2.5, TOLERANCE*TOLERANCE);
84  }

References libMesh::ParsedFunction< Output, OutputGradient >::get_inline_value(), libMesh::libmesh_real(), and libMesh::TOLERANCE.

◆ testInlineSetter()

void ParsedFunctionTest::testInlineSetter ( )
inlineprivate

Definition at line 86 of file parsed_function_test.C.

87  {
88  ParsedFunction<Number> ax2("a:=4.5;a*x*2");
89  ax2.set_inline_value("a", 2.5);
90 
91  LIBMESH_ASSERT_FP_EQUAL
92  (libmesh_real(ax2(Point(0.25,0.25,0.25))), 1.25, TOLERANCE*TOLERANCE);
93 
94  LIBMESH_ASSERT_FP_EQUAL
95  (libmesh_real(ax2.get_inline_value("a")), 2.5, TOLERANCE*TOLERANCE);
96 
98  ("a := 4 ; b := a/2+1; c:=b-a+3.5; c*x*2*y*4");
99  cxy8.set_inline_value("a", 2);
100 
101  LIBMESH_ASSERT_FP_EQUAL
102  (libmesh_real(cxy8(Point(0.5,0.5,0.5))), 7.0, TOLERANCE*TOLERANCE);
103 
104  LIBMESH_ASSERT_FP_EQUAL
105  (libmesh_real(cxy8.get_inline_value("b")), 2.0, TOLERANCE*TOLERANCE);
106 
107  LIBMESH_ASSERT_FP_EQUAL
108  (libmesh_real(cxy8.get_inline_value("c")), 3.5, TOLERANCE*TOLERANCE);
109  }

References libMesh::ParsedFunction< Output, OutputGradient >::get_inline_value(), libMesh::libmesh_real(), libMesh::ParsedFunction< Output, OutputGradient >::set_inline_value(), and libMesh::TOLERANCE.

◆ testTimeDependence()

void ParsedFunctionTest::testTimeDependence ( )
inlineprivate

Definition at line 111 of file parsed_function_test.C.

112  {
113  ParsedFunction<Number> no_t("x*2+y^2-tanh(z)+atan(x-y)");
114  CPPUNIT_ASSERT(!no_t.is_time_dependent());
115 
116  ParsedFunction<Number> xyt("x+y+t");
117  CPPUNIT_ASSERT(xyt.is_time_dependent());
118 
119  ParsedFunction<Number> x2y2t2("x*2+y^2+t^2");
120  CPPUNIT_ASSERT(x2y2t2.is_time_dependent());
121 
122  ParsedFunction<Number> ztanht("z*tanh(t)");
123  CPPUNIT_ASSERT(ztanht.is_time_dependent());
124  }

References libMesh::FunctionBase< Output >::is_time_dependent().

◆ testValues()

void ParsedFunctionTest::testValues ( )
inlineprivate

Definition at line 40 of file parsed_function_test.C.

41  {
42  ParsedFunction<Number> x2("x*2");
43 
44  // Test that the copy constructor works
45  ParsedFunction<Number> x2_copy(x2);
46 
47  LIBMESH_ASSERT_FP_EQUAL
48  (libmesh_real(x2_copy(Point(0.5,1.5,2.5))), 1.0, TOLERANCE*TOLERANCE);
49 
50  ParsedFunction<Number> xy8("x*y*8");
51 
52  // Test that the move ctor works
53  ParsedFunction<Number> xy8_stolen(std::move(xy8));
54 
55  LIBMESH_ASSERT_FP_EQUAL
56  (libmesh_real(xy8_stolen(Point(0.5,1.5,2.5))), 6.0, TOLERANCE*TOLERANCE);
57  }

References libMesh::libmesh_real(), and libMesh::TOLERANCE.


The documentation for this class was generated from the following file:
libMesh::ParsedFunction
A Function generated (via FParser) by parsing a mathematical expression.
Definition: parsed_function.h:60
libMesh::libmesh_real
T libmesh_real(T a)
Definition: libmesh_common.h:166
libMesh::TOLERANCE
static const Real TOLERANCE
Definition: libmesh_common.h:128
libMesh::Point
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition: point.h:38