1 #ifndef VERTEXCFD_CLOSUREMODELFACTORYTESTHARNESS_HPP
2 #define VERTEXCFD_CLOSUREMODELFACTORYTESTHARNESS_HPP
4 #include "closure_models/VertexCFD_ClosureModelFactory.hpp"
5 #include "drivers/VertexCFD_MeshManager.hpp"
7 #ifdef VERTEXCFD_ENABLE_FULL_INDUCTION_MHD
8 #include "full_induction_mhd_solver/closure_models/VertexCFD_FullInductionClosureModelFactory.hpp"
9 #include "full_induction_mhd_solver/closure_models/VertexCFD_SolidFullInductionClosureModelFactory.hpp"
12 #include <Panzer_FieldLibrary.hpp>
13 #include <Panzer_IntegrationDescriptor.hpp>
14 #include <Panzer_IntegrationRule.hpp>
15 #include <Panzer_Traits.hpp>
17 #include <Phalanx_FieldManager.hpp>
19 #include <Shards_BasicTopologies.hpp>
20 #include <Shards_CellTopology.hpp>
22 #include <Teuchos_ParameterList.hpp>
23 #include <Teuchos_RCP.hpp>
25 #include <gtest/gtest.h>
36 template<
class EvalType>
39 int num_evaluators = 1;
41 std::string type_name{
"!!! UNDEFINED !!!"};
42 std::string eval_name{
"!!! UNDEFINED !!!"};
43 std::optional<std::string> factory_type;
44 Teuchos::ParameterList user_params{
"User Data"};
45 Teuchos::ParameterList model_params{
"Model Data"};
46 Teuchos::ParameterList closure_params{
"Closure Models"};
47 const std::string model_id{
"Test Model"};
51 auto comm = Teuchos::rcp_dynamic_cast<const Teuchos::MpiComm<int>>(
52 Teuchos::DefaultComm<int>::getComm());
55 auto mesh_params = parameter_db.meshParameters();
56 mesh_params->set(
"Mesh Input Type",
"Inline");
57 auto& inline_params = mesh_params->sublist(
"Inline");
58 inline_params.set(
"Element Type",
"Tet4");
59 auto& mesh_details = inline_params.sublist(
"Mesh");
60 mesh_details.set(
"X0", 0.0);
61 mesh_details.set(
"Xf", 1.0);
62 mesh_details.set(
"X Elements", 1);
63 mesh_details.set(
"Y0", -1.0);
64 mesh_details.set(
"Yf", 1.0);
65 mesh_details.set(
"Y Elements", 1);
66 mesh_details.set(
"Z0", -1.0);
67 mesh_details.set(
"Zf", 1.0);
68 mesh_details.set(
"Z Elements", 1);
70 const Teuchos::RCP<MeshManager> mesh_manager{
72 user_params.set<
const Teuchos::RCP<MeshManager>>(
"MeshManager",
74 mesh_manager->completeMeshConstruction();
77 template<
class Evaluator,
int NumSpaceDim>
80 constexpr
int num_space_dim = NumSpaceDim;
83 model_params.set(
"Type", type_name);
86 .set(
"Model Data", model_params);
89 closure_params.sublist(model_id).set(
"Closure Factory Type",
99 const panzer::IntegrationDescriptor integration_desc(
100 0, panzer::IntegrationDescriptor::VOLUME);
101 auto cell_topo = Teuchos::rcp(
new shards::CellTopology(
102 shards::getCellTopologyData<shards::Quadrilateral<4>>()));
103 const int num_cells = 0;
104 auto integration_rule = Teuchos::rcp(
new panzer::IntegrationRule(
105 integration_desc, cell_topo, num_cells));
109 PHX::FieldManager<panzer::Traits> fm;
112 auto evaluators = factory.buildClosureModels(
115 panzer::FieldLayoutLibrary{},
117 Teuchos::ParameterList{},
122 #ifdef VERTEXCFD_ENABLE_FULL_INDUCTION_MHD
128 panzer::FieldLayoutLibrary{},
130 Teuchos::ParameterList{},
135 evaluators->end(), fim_evals->begin(), fim_evals->end());
142 panzer::FieldLayoutLibrary{},
144 Teuchos::ParameterList{},
149 evaluators->end(), sfim_evals->begin(), sfim_evals->end());
153 ASSERT_FALSE(evaluators.is_null());
156 ASSERT_EQ(num_evaluators, evaluators->size());
159 auto eval = evaluators->at(eval_index);
162 auto evalPtr =
dynamic_cast<Evaluator*
>(eval.get());
163 EXPECT_NE(
nullptr, evalPtr) <<
"Factory returned unexpected "
167 EXPECT_EQ(eval_name, eval->getName());
174 #endif // VERTEXCFD_CLOSUREMODELFACTORYTESTHARNESS_HPP