VertexCFD  0.0-dev
VertexCFD_Compute_ErrorNorms.hpp
1 #ifndef VERTEXCFD_COMPUTE_ERRORNORMS_HPP
2 #define VERTEXCFD_COMPUTE_ERRORNORMS_HPP
3 
4 #include "boundary_conditions/VertexCFD_BCStrategy_Factory.hpp"
5 
6 #include <Panzer_FieldManagerBuilder.hpp>
7 #include <Panzer_GlobalIndexer.hpp>
8 #include <Panzer_ResponseEvaluatorFactory_Functional.hpp>
9 #include <Panzer_ResponseLibrary.hpp>
10 #include <Panzer_Response_Functional.hpp>
11 
12 #include <Thyra_VectorBase.hpp>
13 
14 #include <Teuchos_ParameterList.hpp>
15 #include <Teuchos_RCP.hpp>
16 
17 #include <Tempus_SolutionHistory_decl.hpp>
18 
19 #include <vector>
20 
21 namespace VertexCFD
22 {
23 namespace ComputeErrorNorms
24 {
25 //---------------------------------------------------------------------------//
26 template<class Scalar>
28 {
29  public:
30  ErrorNorms(
31  const Teuchos::RCP<panzer_stk::STK_Interface>& mesh,
32  const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits>>& lof,
33  const Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits>>&
34  response_library,
35  const std::vector<Teuchos::RCP<panzer::PhysicsBlock>>& physics_blocks,
36  const panzer::ClosureModelFactory_TemplateManager<panzer::Traits>&
37  cm_factory,
38  const Teuchos::ParameterList& closure_params,
39  const Teuchos::ParameterList& user_params,
40  const Teuchos::RCP<panzer::EquationSetFactory>& eq_set_factory,
41  const double volume,
42  const int integration_order);
43 
44  void ComputeNorms(
45  const Teuchos::RCP<Tempus::SolutionState<Scalar>>& working_state);
46 
47  struct DofErrorNorm
48  {
49  std::string name{};
50  double error_norm = 0.0;
51 
52  explicit DofErrorNorm(const std::string& dof_name)
53  : name(dof_name)
54  {
55  }
56  ~DofErrorNorm() = default;
57  DofErrorNorm(const DofErrorNorm&) = default;
58  DofErrorNorm& operator=(const DofErrorNorm&) = default;
59  DofErrorNorm(DofErrorNorm&&) = default;
60  DofErrorNorm& operator=(DofErrorNorm&&) = default;
61  };
62 
63  private:
64  Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits>> _lof;
65  Teuchos::RCP<panzer::ResponseLibrary<panzer::Traits>> _response_library;
66  std::vector<Teuchos::RCP<panzer::PhysicsBlock>> _physics_blocks;
67  panzer::ClosureModelFactory_TemplateManager<panzer::Traits> _cm_factory;
68  Teuchos::ParameterList _closure_params;
69  Teuchos::ParameterList _user_params;
70 
71  Teuchos::RCP<panzer::EquationSetFactory> _eq_set_factory;
72 
73  double _volume;
74  std::vector<DofErrorNorm> _L1_error_norms;
75  std::vector<DofErrorNorm> _L2_error_norms;
76  int _L1_error_norm_order;
77  int _L2_error_norm_order;
78  int _num_space_dim;
79 
80  public:
81  const std::vector<DofErrorNorm>& L1_errorNorms() const
82  {
83  return _L1_error_norms;
84  }
85 
86  const std::vector<DofErrorNorm>& L2_errorNorms() const
87  {
88  return _L2_error_norms;
89  }
90 };
91 
92 //---------------------------------------------------------------------------//
93 
94 } // end namespace ComputeErrorNorms
95 } // end namespace VertexCFD
96 
97 #include "VertexCFD_Compute_ErrorNorms_impl.hpp"
98 
99 #endif // end VERTEXCFD_COMPUTE_ERRORNORMS_HPP
VertexCFD::ComputeErrorNorms::ErrorNorms
Definition: VertexCFD_Compute_ErrorNorms.hpp:28
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23
VertexCFD::ComputeErrorNorms::ErrorNorms::DofErrorNorm
Definition: VertexCFD_Compute_ErrorNorms.hpp:48