1 #ifndef __GRID_REFINEMENT_H__ 2 #define __GRID_REFINEMENT_H__ 4 #include <deal.II/grid/tria.h> 6 #include "dg/dg_base.hpp" 7 #include "functional/adjoint.h" 8 #include "functional/functional.h" 9 #include "grid_refinement/field.h" 10 #include "parameters/all_parameters.h" 11 #include "parameters/parameters_grid_refinement.h" 12 #include "physics/physics.h" 16 namespace GridRefinement {
38 template <
int dim,
int nstate,
typename real,
typename MeshType = dealii::Triangulation<dim>>
40 template <
int dim,
int nstate,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
105 dealii::DataOut<dim, dealii::DoFHandler<dim>> & data_out,
106 std::shared_ptr< dealii::DataPostprocessor<dim> > &post_processor,
107 dealii::Vector<float> & subdomain,
108 std::vector<unsigned int> & active_fe_indices,
109 dealii::Vector<double> & cell_poly_degree,
110 std::vector<std::string> & residual_names);
114 dealii::DataOut<dim, dealii::DoFHandler<dim>> &data_out);
118 dealii::DataOut<dim, dealii::DoFHandler<dim>> &data_out);
122 dealii::DataOut<dim, dealii::DoFHandler<dim>> &data_out,
123 std::vector<std::string> & dIdw_names_coarse,
124 std::vector<std::string> & adjoint_names_coarse,
125 std::vector<std::string> & dIdw_names_fine,
126 std::vector<std::string> & adjoint_names_fine);
130 dealii::DataOut<dim, dealii::DoFHandler<dim>> &data_out,
131 dealii::Vector<real> & l2_error_vec);
147 std::shared_ptr< PHiLiP::Adjoint<dim, nstate, real, MeshType> >
adjoint;
150 std::shared_ptr< PHiLiP::Functional<dim, nstate, real, MeshType> >
functional;
153 std::shared_ptr< PHiLiP::DGBase<dim, real, MeshType> >
dg;
160 std::shared_ptr< PHiLiP::Physics::PhysicsBase<dim,nstate,real> >
physics;
169 std::shared_ptr<MeshType>
tria;
179 dealii::update_values |
180 dealii::update_gradients |
181 dealii::update_quadrature_points |
182 dealii::update_JxW_values |
183 dealii::update_inverse_jacobians;
187 dealii::update_values |
188 dealii::update_gradients |
189 dealii::update_quadrature_points |
190 dealii::update_JxW_values |
191 dealii::update_normal_vectors |
192 dealii::update_jacobians;
196 dealii::update_values |
197 dealii::update_gradients |
198 dealii::update_quadrature_points |
199 dealii::update_JxW_values;
217 template <
int dim,
int nstate,
typename real,
typename MeshType = dealii::Triangulation<dim>>
219 template <
int dim,
int nstate,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
229 static std::shared_ptr< GridRefinementBase<dim,nstate,real,MeshType> >
230 create_GridRefinement(
241 static std::shared_ptr< GridRefinementBase<dim,nstate,real,MeshType> >
242 create_GridRefinement(
252 static std::shared_ptr< GridRefinementBase<dim,nstate,real,MeshType> >
253 create_GridRefinement(
262 static std::shared_ptr< GridRefinementBase<dim,nstate,real,MeshType> >
263 create_GridRefinement(
273 #endif // __GRID_REFINEMENT_H__ ErrorIndicator
Types of error indicator to be used in the grid refinement.
PHiLiP::Parameters::GridRefinementParam grid_refinement_param
Grid refinement parameters.
std::shared_ptr< PHiLiP::Adjoint< dim, nstate, real, MeshType > > adjoint
Adjoint object (if provided to factory)
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
std::shared_ptr< MeshType > tria
Triangulation object of templated mesh type.
virtual std::vector< std::pair< dealii::Vector< real >, std::string > > output_results_vtk_method()=0
Output refinement method dependent results.
void output_results_vtk_physics(dealii::DataOut< dim, dealii::DoFHandler< dim >> &data_out)
Output refinement results related to the problem physics.
Files for the baseline physics.
void output_results_vtk_adjoint(dealii::DataOut< dim, dealii::DoFHandler< dim >> &data_out, std::vector< std::string > &dIdw_names_coarse, std::vector< std::string > &adjoint_names_coarse, std::vector< std::string > &dIdw_names_fine, std::vector< std::string > &adjoint_names_fine)
Output refinement results related to the adjoint object.
const dealii::UpdateFlags volume_update_flags
update flags needed at volume points
unsigned int iteration
Internal refinement steps iteration counter.
virtual ~GridRefinementBase()=default
Destructor.
dealii::ConditionalOStream pcout
Parallel std::cout that only outputs on mpi_rank==0.
std::shared_ptr< PHiLiP::Functional< dim, nstate, real, MeshType > > functional
Functional object (if provided to factory, directly or indirectly)
void output_results_vtk_error(dealii::DataOut< dim, dealii::DoFHandler< dim >> &data_out, dealii::Vector< real > &l2_error_vec)
Output refinement results related to the solution error.
const dealii::UpdateFlags face_update_flags
update flags needed at face points
Base Grid Refinement Class.
std::shared_ptr< PHiLiP::DGBase< dim, real, MeshType > > dg
Discontinuous Galerkin object.
void output_results_vtk(const unsigned int iref)
Write information about the grid refinement step to a .vtk file.
void output_results_vtk_functional(dealii::DataOut< dim, dealii::DoFHandler< dim >> &data_out)
Output refinement results related to the functional object.
const dealii::UpdateFlags neighbor_face_update_flags
update flags needed at neighbor's face points
Parameters related to individual grid refinement run.
std::shared_ptr< PHiLiP::Physics::PhysicsBase< dim, nstate, real > > physics
Problem physics (if provided to factory, directly or indirectly)
virtual void refine_grid()=0
Perform call to the grid refinement object of choice.
GridRefinementBase(PHiLiP::Parameters::GridRefinementParam gr_param_input, std::shared_ptr< PHiLiP::Adjoint< dim, nstate, real, MeshType > > adj_input, std::shared_ptr< PHiLiP::Physics::PhysicsBase< dim, nstate, real > > physics_input)
Constructor. Stores the adjoint object, physics and parameters.
Grid Refinement Class Factory.
DGBase is independent of the number of state variables.
void output_results_vtk_dg(dealii::DataOut< dim, dealii::DoFHandler< dim >> &data_out, std::shared_ptr< dealii::DataPostprocessor< dim > > &post_processor, dealii::Vector< float > &subdomain, std::vector< unsigned int > &active_fe_indices, dealii::Vector< double > &cell_poly_degree, std::vector< std::string > &residual_names)
Output refinement results related to the DG object.
MPI_Comm mpi_communicator
MPI communicator.