Peano
Loading...
Searching...
No Matches
solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi Class Reference

Matrix-free Collocated Solver for higher order polynomials. More...

Inheritance diagram for solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi:
Collaboration diagram for solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi:

Public Member Functions

 __init__ (self, name, unknowns_per_node, dimensions, polynomial_degree, min_h, max_h, assembly_matrix, assembly_matrix_scaling, mass_matrix, mass_matrix_scaling, integration_points, solver_tolerance, cell_relaxation, face_relaxation=0.6, custom_init_actionset=None, custom_plot_actionset=None, custom_init_cell="", enable_plotting=True, plot_predicate="true" # enable custom plotting behaviour)
 Construct solver.
 
 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)
 
 add_implementation_files_to_project (self, namespace, output, subdirectory="", abstract_overwrite=True)
 The solver creates two classes: An abstract base class and its implementations.
 
- Public Member Functions inherited from solvers.api.Solver.Solver
 add_to_Peano4_datamodel (self, datamodel, verbose)
 
 add_use_statements (self, observer)
 This routine should still be called even if overwritten in child class.
 
 typename (self)
 
 instance_name (self)
 Return the name of the object that will be created for this solver.
 
 create_readme_descriptor (self)
 
 add_to_abstract_solver (self, header, implementation)
 
 add_to_vertex_data (self, name, size)
 Add in extra attributes on the fly.
 
 add_to_cell_data (self, name, size)
 Add in extra attributes on the fly.
 
 add_to_face_data (self, name, size)
 Add in extra attributes on the fly.
 
 name (self)
 
 __str__ (self)
 

Data Fields

 preprocessing_action_set
 
 postprocessing_action_set
 
 max_h
 
 min_h
 
- Data Fields inherited from solvers.api.Solver.Solver
 min_h
 
 max_h
 

Protected Member Functions

 _construct_narrow_to_interior_matrix (self)
 Construct the matrix which basically picks out the interior points.
 

Protected Attributes

 _dimensions
 
 _polynomial_degree
 
 _unknowns_per_cell_node
 
 _assembly_matrix
 
 _assembly_matrix_scaling
 
 _mass_matrix
 
 _mass_matrix_scaling
 
 _cell_relaxation
 
 _face_relaxation
 
 _solver_tolerance
 
 _custom_init_actionset
 
 _custom_plot_actionset
 
 _custom_init_cell
 
 _enable_plotting
 
 _plot_predicate
 
 _integration_points
 
 _degrees_of_freedom_per_cell
 
 _degrees_of_freedom_per_face
 
 _inner_degrees_of_freedom_per_cell
 
 _basic_descend_order
 
 _abstract_solver_header_extras
 
 _abstract_solver_implementation_extras
 
- Protected Attributes inherited from solvers.api.Solver.Solver
 _name
 
 _vertex_data
 
 _face_data
 
 _cell_data
 
 _abstract_solver_header_extras
 
 _abstract_solver_implementation_extras
 

Detailed Description

Matrix-free Collocated Solver for higher order polynomials.

This continuous Galerkin p-method works with Gauss-Lobatto nodes only, as we employ a block smoother.

Definition at line 17 of file ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.py.

Constructor & Destructor Documentation

◆ __init__()

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.__init__ (   self,
  name,
  unknowns_per_node,
  dimensions,
  polynomial_degree,
  min_h,
  max_h,
  assembly_matrix,
  assembly_matrix_scaling,
  mass_matrix,
  mass_matrix_scaling,
  integration_points,
  solver_tolerance,
  cell_relaxation,
  face_relaxation = 0.6,
  custom_init_actionset = None,
  custom_plot_actionset = None,
  custom_init_cell = "",
  enable_plotting = True,
  plot_predicate = "true" # enable custom plotting behaviour 
)

Construct solver.

Parameters
integration_points[Float] Sequence of polynomial_degree+1 entries which identify the position of the integration points along the unit interval.

Reimplemented from solvers.api.Solver.Solver.

Definition at line 27 of file ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.py.

References solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.__init__().

Referenced by solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.__init__().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ _construct_narrow_to_interior_matrix()

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._construct_narrow_to_interior_matrix (   self)
protected

Construct the matrix which basically picks out the interior points.

Definition at line 144 of file ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.py.

References convert::input::PeanoTextPatchFileReader._dimensions, exahype2.api.dslhype.SyntaxTree.Subscript._dimensions, exahype2.api.dslhype.SyntaxTree.Matrix._dimensions, exahype2.api.dslhype.SyntaxTree.TSimpleMemref._dimensions, exahype2.api.dslhype.SyntaxTree.TDataBlock._dimensions, exahype2.api.dslhype.SyntaxTree.MemoryAllocation._dimensions, exahype2.api.dslhype.SyntaxTree.MemoryDeallocation._dimensions, exahype2.api.Project.Project._dimensions, exaparty.api.Project.Project._dimensions, api.Project.Project._dimensions, solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._dimensions, solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._dimensions, tarch.plotter.api.output.Visualiser.PatchFileData._dimensions, tarch.plotter.api.output.Visualiser.Visualiser._dimensions, tarch.plotter::griddata::blockstructured::PeanoBinaryPatchFileWriter._dimensions, tarch.plotter::griddata::blockstructured::PeanoHDF5PatchFileWriter._dimensions, tarch.plotter::griddata::blockstructured::PeanoTextPatchFileWriter._dimensions, scenarios.acoustic_planar_waves.AcousticPlanarWaves._dimensions, scenarios.advection_linear.AdvectionLinear._dimensions, scenarios.elastic_planar_waves.ElasticPlanarWaves._dimensions, scenarios.euler_gaussian_bell.EulerGaussianBell._dimensions, scenarios.euler_isotropic_vortex.EulerIsotropicVortex._dimensions, scenarios.scenario.Scenario._dimensions, scenarios.swe_radial_dam_break.SWERadialDamBreak._dimensions, scenarios.swe_resting_lake.SWERestingLake._dimensions, solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._polynomial_degree, solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._unknowns_per_cell_node, and solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._unknowns_per_cell_node.

◆ add_implementation_files_to_project()

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.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 201 of file ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.py.

References peano4.api.output.ActionSet.ActionSet.__class__, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.__class__, and peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.__class__.

◆ add_to_create_grid()

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

◆ add_to_init_solution()

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

◆ add_to_plot()

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.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 106 of file ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.py.

References solvers.api.CollocatedDLinearDiscretisationWithPointJacobi.CollocatedDLinearDiscretisationWithPointJacobi._custom_plot_actionset, solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._custom_plot_actionset, solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._custom_plot_actionset, solvers.api.CollocatedDLinearDiscretisationWithPointJacobi.CollocatedDLinearDiscretisationWithPointJacobi._enable_plotting, solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._enable_plotting, solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._enable_plotting, solvers.api.CollocatedDLinearDiscretisationWithPointJacobi.CollocatedDLinearDiscretisationWithPointJacobi._plot_predicate, solvers.api.CollocatedMG.CollocatedMG._plot_predicate, solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._plot_predicate, and solvers.api.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver.DiscontinuousGalerkinDiscretisationPointWiseRiemannSolver._plot_predicate.

◆ add_to_solve()

Field Documentation

◆ _abstract_solver_header_extras

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._abstract_solver_header_extras
protected

◆ _abstract_solver_implementation_extras

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._abstract_solver_implementation_extras
protected

◆ _assembly_matrix

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._assembly_matrix
protected

◆ _assembly_matrix_scaling

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._assembly_matrix_scaling
protected

◆ _basic_descend_order

◆ _cell_relaxation

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._cell_relaxation
protected

◆ _custom_init_actionset

◆ _custom_init_cell

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._custom_init_cell
protected

◆ _custom_plot_actionset

◆ _degrees_of_freedom_per_cell

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._degrees_of_freedom_per_cell
protected

◆ _degrees_of_freedom_per_face

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._degrees_of_freedom_per_face
protected

◆ _dimensions

◆ _enable_plotting

◆ _face_relaxation

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._face_relaxation
protected

◆ _inner_degrees_of_freedom_per_cell

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._inner_degrees_of_freedom_per_cell
protected

◆ _integration_points

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._integration_points
protected

◆ _mass_matrix

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._mass_matrix
protected

◆ _mass_matrix_scaling

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._mass_matrix_scaling
protected

◆ _plot_predicate

◆ _polynomial_degree

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._polynomial_degree
protected

◆ _solver_tolerance

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._solver_tolerance
protected

◆ _unknowns_per_cell_node

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi._unknowns_per_cell_node
protected

◆ max_h

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.max_h

◆ min_h

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.min_h

◆ postprocessing_action_set

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.postprocessing_action_set

◆ preprocessing_action_set

solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.preprocessing_action_set

The documentation for this class was generated from the following file: