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.