GRINS-0.8.0
default_bc_builder.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // GRINS - General Reacting Incompressible Navier-Stokes
5 //
6 // Copyright (C) 2014-2017 Paul T. Bauman, Roy H. Stogner
7 // Copyright (C) 2010-2013 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #include "grins_config.h"
26 
27 #ifdef GRINS_HAVE_CPPUNIT
28 
29 #include <libmesh/ignore_warnings.h>
30 #include <cppunit/extensions/HelperMacros.h>
31 #include <cppunit/TestCase.h>
32 #include <libmesh/restore_warnings.h>
33 
34 // Testing headers
35 #include "test_comm.h"
36 #include "grins_test_paths.h"
37 #include "system_helper.h"
38 
39 // GRINS
42 
43 // Ignore warnings from auto_ptr in CPPUNIT_TEST_SUITE_END()
44 #include <libmesh/ignore_warnings.h>
45 
46 namespace GRINSTesting
47 {
48  class DefaultBCBuilderTest : public CppUnit::TestCase,
49  public SystemHelper,
50  public GRINS::DefaultBCBuilder // So we can test proctected methods
51  {
52  public:
54 
59 
61 
62  public:
63 
64  void tearDown()
65  {
66  this->reset_all();
67  }
68 
70  {
71  std::string filename = std::string(GRINS_TEST_UNIT_INPUT_SRCDIR)+"/default_bc_builder.in";
72  GetPot input(filename);
73 
74  std::map<std::string,std::set<GRINS::BoundaryID> > bc_id_map;
75  this->parse_and_build_bc_id_map(input,bc_id_map);
76 
77  // Make sure we have the right sections
78  CPPUNIT_ASSERT_EQUAL(3,(int)bc_id_map.size());
79  CPPUNIT_ASSERT( bc_id_map.find("Hot") != bc_id_map.end() );
80  CPPUNIT_ASSERT( bc_id_map.find("Together") != bc_id_map.end() );
81  CPPUNIT_ASSERT( bc_id_map.find("Cold") != bc_id_map.end() );
82 
83  // Make sure we have the right number and values of the bc ids
84  {
85  std::set<GRINS::BoundaryID> bc_ids = bc_id_map["Hot"];
86  CPPUNIT_ASSERT_EQUAL(1,(int)bc_ids.size());
87  CPPUNIT_ASSERT(bc_ids.find(0) != bc_ids.end());
88  }
89 
90  // Make sure we have the right number and values of the bc ids
91  {
92  std::set<GRINS::BoundaryID> bc_ids = bc_id_map["Together"];
93  CPPUNIT_ASSERT_EQUAL(2,(int)bc_ids.size());
94  CPPUNIT_ASSERT(bc_ids.find(1) != bc_ids.end());
95  CPPUNIT_ASSERT(bc_ids.find(2) != bc_ids.end());
96  }
97 
98  // Make sure we have the right number and values of the bc ids
99  {
100  std::set<GRINS::BoundaryID> bc_ids = bc_id_map["Cold"];
101  CPPUNIT_ASSERT_EQUAL(1,(int)bc_ids.size());
102  CPPUNIT_ASSERT(bc_ids.find(3) != bc_ids.end());
103  }
104  }
105 
107  {
108  std::string filename = std::string(GRINS_TEST_UNIT_INPUT_SRCDIR)+"/default_bc_builder.in";
109  this->setup_multiphysics_system(filename);
110 
111  std::map<std::string,std::set<GRINS::BoundaryID> > bc_id_map;
112  this->parse_and_build_bc_id_map(*_input,bc_id_map);
113 
114  // This shouldn't error
115  this->verify_bc_ids_with_mesh( *_system, bc_id_map );
116  }
117 
118 
119 
121  {
122  std::string filename = std::string(GRINS_TEST_UNIT_INPUT_SRCDIR)+"/default_bc_builder.in";
123  this->setup_multiphysics_system(filename);
124 
125  libMesh::boundary_id_type invalid_bid =
126  std::numeric_limits<libMesh::boundary_id_type>::max();
127 
128  libMesh::boundary_id_type master_id = invalid_bid;
129  libMesh::boundary_id_type slave_id = invalid_bid;
130 
131  std::string section = GRINS::BoundaryConditionNames::bc_section()+"/Together";
132 
133  this->parse_periodic_master_slave_ids(*_input,section,master_id,slave_id);
134 
135  CPPUNIT_ASSERT_EQUAL(1,(int)master_id);
136  CPPUNIT_ASSERT_EQUAL(2,(int)slave_id);
137  }
138 
140  {
141  std::string filename = std::string(GRINS_TEST_UNIT_INPUT_SRCDIR)+"/default_bc_builder.in";
142  this->setup_multiphysics_system(filename);
143 
144  std::string section = GRINS::BoundaryConditionNames::bc_section()+"/Together";
145 
146  libMesh::RealVectorValue offset =
147  this->parse_periodic_offset(*_input,section);
148 
149  libMesh::Real tol = std::numeric_limits<libMesh::Real>::epsilon()*10;
150  CPPUNIT_ASSERT_DOUBLES_EQUAL(1.21,offset(0),tol);
151  CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0,offset(1),tol);
152  }
153 
154  private:
155 
156  void test_for_var_name( const std::vector<std::string>& var_names,
157  const std::string& var_to_find )
158  {
159  CPPUNIT_ASSERT( std::find( var_names.begin(), var_names.end(), var_to_find ) != var_names.end() );
160  }
161 
162  };
163 
164  CPPUNIT_TEST_SUITE_REGISTRATION( DefaultBCBuilderTest );
165 
166 } // end namespace GRINSTesting
167 
168 #endif // GRINS_HAVE_CPPUNIT
void parse_and_build_bc_id_map(const GetPot &input, std::map< std::string, std::set< BoundaryID > > &bc_id_map)
CPPUNIT_TEST(test_parse_and_build_bc_id_map)
CPPUNIT_TEST_SUITE_REGISTRATION(AntiochAirNASA9ThermoTest)
void setup_multiphysics_system(const std::string &filename)
Definition: system_helper.h:42
CPPUNIT_TEST_SUITE(DefaultBCBuilderTest)
void parse_periodic_master_slave_ids(const GetPot &input, const std::string &section, libMesh::boundary_id_type &master_id, libMesh::boundary_id_type &slave_id) const
void verify_bc_ids_with_mesh(const MultiphysicsSystem &system, const std::map< std::string, std::set< BoundaryID > > &bc_id_map) const
libMesh::RealVectorValue parse_periodic_offset(const GetPot &input, const std::string &section) const
Manages runtime construction of Dirichlet boundary conditions.
Helper class for setting up basic GRINS::MultiphysicsSystem for unit testing.
Definition: system_helper.h:38
GRINS::MultiphysicsSystem * _system
Definition: system_helper.h:67
void test_for_var_name(const std::vector< std::string > &var_names, const std::string &var_to_find)
static std::string bc_section()
Outer section name for boundary conditions section in input file.
libMesh::UniquePtr< GetPot > _input
Definition: system_helper.h:62

Generated on Tue Dec 19 2017 12:47:27 for GRINS-0.8.0 by  doxygen 1.8.9.1