Peano
Loading...
Searching...
No Matches
solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver Namespace Reference


This file is part of the MGHyPE project within Peano 4. More...

Data Structures

class  DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver
 Most efficient solver we have for this type of problem class. More...
 

Functions

 _hold_cell_and_face_data_guard (self)
 Goard when to hold data in mesh.
 
 _load_cell_and_face_data_guard (self)
 Goard when to hold data in mesh.
 
 _additional_includes (self)
 
 add_to_Peano4_datamodel (self, datamodel, verbose)
 
 add_use_statements (self, observer)
 
 add_to_plot (self, observer)
 Tell the project's observer how to plot the data.
 
 add_to_create_grid (self, observer)
 
 add_to_init_solution (self, observer)
 Solution initialisation.
 
 add_to_solve (self, observer)
 I ignore the order of the action sets here and instead derive my own ordering starting from _basic_descend_order.
 
 add_implementation_files_to_project (self, namespace, output, subdirectory="", abstract_overwrite=True)
 The solver creates two classes: An abstract base class and its implementations.
 
 get_face_merge_method (self)
 The actual merge of faces is simple, as we compute the numerical flux redundantly, i.e.
 
 create_dictionary (self)
 

Variables

 merge_implementation
 
 preprocessing_action_set
 
 postprocessing_action_set
 
 _basic_descend_order
 
int descend_order = 0
 
 _action_set_update_face_solution
 
 _action_set_project_into_cell_and_update_cell_solution
 
 _action_set_project_onto_faces
 
 _action_set_update_residual
 
 _name
 
 max_h
 
 _solver_includes
 
 min_h
 
 _unknowns_per_cell
 
 _unknowns_per_face_solution
 
 _unknowns_per_face_projection
 
 _dimensions
 
 _unknowns_per_cell_node
 
 _solutions_per_face_node
 
 _projections_per_face_node
 
 _mass_matrix
 
 _mass_matrix_scaling
 
 _assembly_matrix
 
 _assembly_matrix_scaling
 
 _face_from_cell_projection
 
 _face_from_cell_projection_scaling
 
 _cell_from_face_projection
 
 _cell_from_face_projection_scaling
 
 _riemann_matrix
 
 _boundary_matrix
 
 _approximate_system_matrix
 
 _approximate_system_matrix_scaling
 
 _cell_relaxation
 
 _face_relaxation
 
 _poly_degree
 
 _solver_tolerance
 
 _custom_init_cell
 
 _integration_points
 
 _use_smart_pointer
 

Detailed Description


This file is part of the MGHyPE project within Peano 4.

For conditions of distribution and use, please see the copyright notice at www.peano-framework.org

Function Documentation

◆ _additional_includes()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._additional_includes (   self)
protected

◆ _hold_cell_and_face_data_guard()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._hold_cell_and_face_data_guard (   self)
protected

Goard when to hold data in mesh.

Compare with the discussion in the Peano tutorial on when and how to load data. We don't need the data throughout the mesh construction, where it only blows up the memory consumption and makes the load balancing more expensive as we exchange data via MPI which, at this point, doesn't hold anything meaningful.

Definition at line 491 of file DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py.

◆ _load_cell_and_face_data_guard()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._load_cell_and_face_data_guard (   self)
protected

Goard when to hold data in mesh.

Compare with the discussion in the Peano tutorial on when and how to load data. We don't need the data throughout the mesh construction, where it only blows up the memory consumption and makes the load balancing more expensive as we exchange data via MPI which, at this point, doesn't hold anything meaningful.

Definition at line 511 of file DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py.

◆ add_implementation_files_to_project()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.add_implementation_files_to_project (   self,
  namespace,
  output,
  subdirectory = "",
  abstract_overwrite = True 
)

The solver creates two classes: An abstract base class and its implementations.

The abstract base class will be overwritten if there is one in the directory. I pipe all the Python constants into this base class, so they are available in the C++ code.

Definition at line 610 of file DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py.

◆ add_to_create_grid()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.add_to_create_grid (   self,
  observer 
)

◆ add_to_init_solution()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.add_to_init_solution (   self,
  observer 
)

Solution initialisation.

Is given the project's observer and asks the solver to add all of its action sets to this one.

Parameters
observerObserver Observer object of the underlying project representing its algorithmic step. Routine is asked to add its own action sets to this step.

Definition at line 571 of file DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py.

◆ add_to_Peano4_datamodel()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.add_to_Peano4_datamodel (   self,
  datamodel,
  verbose 
)

◆ add_to_plot()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.add_to_plot (   self,
  observer 
)

Tell the project's observer how to plot the data.

Nothing fancy here. We add plotters from Peano's toolbox to visualise solution and right-hand side.

Definition at line 548 of file DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py.

◆ add_to_solve()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.add_to_solve (   self,
  observer 
)

I ignore the order of the action sets here and instead derive my own ordering starting from _basic_descend_order.

Definition at line 590 of file DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py.

◆ add_use_statements()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.add_use_statements (   self,
  observer 
)

◆ create_dictionary()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.create_dictionary (   self)

◆ get_face_merge_method()

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.get_face_merge_method (   self)

The actual merge of faces is simple, as we compute the numerical flux redundantly, i.e.

we really only have to copy stuff one way or the other.

Definition at line 653 of file DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.py.

Variable Documentation

◆ _action_set_project_into_cell_and_update_cell_solution

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._action_set_project_into_cell_and_update_cell_solution
protected

◆ _action_set_project_onto_faces

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._action_set_project_onto_faces
protected

◆ _action_set_update_face_solution

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._action_set_update_face_solution
protected

◆ _action_set_update_residual

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._action_set_update_residual
protected

◆ _approximate_system_matrix

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._approximate_system_matrix
protected

◆ _approximate_system_matrix_scaling

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._approximate_system_matrix_scaling
protected

◆ _assembly_matrix

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._assembly_matrix
protected

◆ _assembly_matrix_scaling

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._assembly_matrix_scaling
protected

◆ _basic_descend_order

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._basic_descend_order
protected

◆ _boundary_matrix

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._boundary_matrix
protected

◆ _cell_from_face_projection

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._cell_from_face_projection
protected

◆ _cell_from_face_projection_scaling

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._cell_from_face_projection_scaling
protected

◆ _cell_relaxation

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._cell_relaxation
protected

◆ _custom_init_cell

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._custom_init_cell
protected

◆ _dimensions

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._dimensions
protected

◆ _face_from_cell_projection

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._face_from_cell_projection
protected

◆ _face_from_cell_projection_scaling

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._face_from_cell_projection_scaling
protected

◆ _face_relaxation

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._face_relaxation
protected

◆ _integration_points

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._integration_points
protected

◆ _mass_matrix

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._mass_matrix
protected

◆ _mass_matrix_scaling

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._mass_matrix_scaling
protected

◆ _name

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._name
protected

◆ _poly_degree

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._poly_degree
protected

◆ _projections_per_face_node

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._projections_per_face_node
protected

◆ _riemann_matrix

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._riemann_matrix
protected

◆ _solutions_per_face_node

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._solutions_per_face_node
protected

◆ _solver_includes

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._solver_includes
protected

◆ _solver_tolerance

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._solver_tolerance
protected

◆ _unknowns_per_cell

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._unknowns_per_cell
protected

◆ _unknowns_per_cell_node

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._unknowns_per_cell_node
protected

◆ _unknowns_per_face_projection

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._unknowns_per_face_projection
protected

◆ _unknowns_per_face_solution

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._unknowns_per_face_solution
protected

◆ _use_smart_pointer

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._use_smart_pointer
protected

◆ descend_order

int solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.descend_order = 0

◆ max_h

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.max_h

◆ merge_implementation

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.merge_implementation

◆ min_h

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.min_h

◆ postprocessing_action_set

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.postprocessing_action_set

◆ preprocessing_action_set

solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.preprocessing_action_set