1 #ifndef __MESHERRORESTIMATE_H__ 2 #define __MESHERRORESTIMATE_H__ 4 #include <deal.II/distributed/grid_refinement.h> 5 #include <deal.II/distributed/shared_tria.h> 6 #include <deal.II/distributed/solution_transfer.h> 7 #include <deal.II/distributed/tria.h> 8 #include <deal.II/fe/fe_q.h> 9 #include <deal.II/fe/fe_values.h> 10 #include <deal.II/grid/grid_refinement.h> 11 #include <deal.II/grid/tria.h> 12 #include <deal.II/lac/la_parallel_vector.h> 17 #include "dg/dg_base.hpp" 18 #include "functional/functional.h" 19 #include "parameters/all_parameters.h" 20 #include "physics/physics.h" 25 template <
int dim,
typename real,
typename MeshType = dealii::Triangulation<dim>>
27 template <
int dim,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
46 std::shared_ptr<DGBase<dim,real,MeshType>>
dg;
51 template <
int dim,
typename real,
typename MeshType = dealii::Triangulation<dim>>
53 template <
int dim,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
84 #if PHILIP_DIM==1 // dealii::parallel::distributed::Triangulation<dim> does not work for 1D 85 template <
int dim,
int nstate,
typename real,
typename MeshType = dealii::Triangulation<dim>>
87 template <
int dim,
int nstate,
typename real,
typename MeshType = dealii::parallel::distributed::Triangulation<dim>>
122 void coarse_to_fine();
128 void fine_to_coarse();
139 dealii::LinearAlgebra::distributed::Vector<real> fine_grid_adjoint();
149 dealii::LinearAlgebra::distributed::Vector<real> coarse_grid_adjoint();
160 dealii::Vector<real> dual_weighted_residual();
166 real total_dual_weighted_residual_error();
173 void output_results_vtk(
const unsigned int cycle);
176 dealii::LinearAlgebra::distributed::Vector<real> compute_adjoint(dealii::LinearAlgebra::distributed::Vector<real> &derivative_functional_wrt_solution,
177 dealii::LinearAlgebra::distributed::Vector<real> &adjoint_variable);
180 std::shared_ptr< Functional<dim, nstate, real, MeshType> >
functional;
196 dealii::Vector<real> coarse_fe_index;
Abstract class to estimate error for mesh adaptation.
Files for the baseline physics.
MeshErrorEstimateBase(std::shared_ptr< DGBase< dim, real, MeshType > > dg_input)
Constructor.
std::shared_ptr< Functional< dim, nstate, real, MeshType > > functional
Functional class pointer.
MPI_Comm mpi_communicator
MPI communicator.
dealii::LinearAlgebra::distributed::Vector< real > derivative_functional_wrt_solution_coarse
functional derivative (on the coarse grid)
dealii::ConditionalOStream pcout
Parallel std::cout that only outputs on mpi_rank==0.
dealii::LinearAlgebra::distributed::Vector< real > adjoint_coarse
coarse grid adjoint ( )
virtual dealii::Vector< real > compute_cellwise_errors()=0
Computes the vector containing errors in each cell.
SolutionRefinementStateEnum
For storing the current refinement state of the solution.
virtual ~MeshErrorEstimateBase()=default
Virtual Destructor.
dealii::LinearAlgebra::distributed::Vector< real > solution_coarse
original solution
Class to compute residual based error.
std::shared_ptr< DGBase< dim, real, MeshType > > dg
Pointer to DGBase.
DualWeightedResidualError class.
DGBase is independent of the number of state variables.
dealii::LinearAlgebra::distributed::Vector< real > derivative_functional_wrt_solution_fine
functional derivative (on the fine grid)
dealii::LinearAlgebra::distributed::Vector< real > adjoint_fine
fine grid adjoint ( )
dealii::Vector< real > dual_weighted_residual_fine
Dual weighted residual (.