Assembler< Discretization_, Model_ > Class Template Reference#
|
DiFfRG
Discretization Framework for functional Renormalization Group flows
|
The basic assembler that can be used for any standard CG scheme with flux and source. More...
#include <cg.hh>
Public Types | |
| using | Discretization = Discretization_ |
| using | Model = Model_ |
| using | NumberType = typename Discretization::NumberType |
| using | VectorType = typename Discretization::VectorType |
| using | SparseMatrixType = typename Discretization::SparseMatrixType |
| using | Components = typename Discretization::Components |
Public Types inherited from DiFfRG::FEMAssembler< Discretization_, Model_ > | |
| using | Discretization = Discretization_ |
| using | Model = Model_ |
| using | NumberType = typename Discretization::NumberType |
| using | VectorType = typename Discretization::VectorType |
| using | SparseMatrixType = typename Discretization::SparseMatrixType |
| using | Components = typename Discretization::Components |
Public Types inherited from DiFfRG::AbstractAssembler< Discretization_::VectorType, Discretization_::SparseMatrixType, Discretization_::dim > | |
| using | NumberType |
Public Member Functions | |
| Assembler (Discretization &discretization, Model &model, const ConfigTree &config) | |
| virtual void | reinit_vector (VectorType &vec) const override |
| virtual void | reinit_matrix (SparseMatrixType &matrix) const override |
| virtual MPI_Comm | get_communicator () const override |
| The communicator this assembler's linear algebra lives on. | |
| virtual void | reinit_solution_view (SolutionView< VectorType > &view) const override |
| virtual void | reinit () override |
| Reinitialize the assembler. This is necessary if the mesh has changed, e.g. after a mesh refinement. | |
| virtual void | rebuild_jacobian_sparsity () override |
| virtual const get_type::SparsityPattern< SparseMatrixType > & | get_sparsity_pattern_jacobian () const override |
| Obtain the sparsity pattern of the jacobian matrix. | |
| virtual const SparseMatrixType & | get_mass_matrix () const override |
| Obtain the mass matrix. | |
| virtual void | refinement_indicator (Vector< double > &indicator, const VectorType &solution_global) override |
| refinement indicator for adaptivity. Only calls the model's cell_indicator function, as in CG schemes the cell boundary is not discontinuous. | |
| virtual void | mass (VectorType &mass, const VectorType &solution_global, const VectorType &solution_global_dot, NumberType weight) override |
| virtual void | residual (VectorType &residual, const VectorType &solution_global, NumberType weight, const VectorType &solution_global_dot, NumberType weight_mass, const VectorType &variables=VectorType()) override |
| virtual void | jacobian_mass (SparseMatrixType &jacobian, const VectorType &solution_global, const VectorType &solution_global_dot, NumberType alpha, NumberType beta) override |
| virtual void | jacobian (SparseMatrixType &jacobian, const VectorType &solution_global, NumberType weight, const VectorType &solution_global_dot, NumberType alpha, NumberType beta, const VectorType &variables=VectorType()) override |
| SummaryEvent | summary () const override |
| double | average_time_reinit () const |
| uint | num_reinits () const |
| double | average_time_residual_assembly () const |
| uint | num_residuals () const |
| double | average_time_jacobian_assembly () const |
| uint | num_jacobians () const |
Public Member Functions inherited from DiFfRG::FEMAssembler< Discretization_, Model_ > | |
| FEMAssembler (Discretization &discretization, Model &model, const ConfigTree &config) | |
| virtual IndexSet | get_differential_indices () const override |
| Obtain the dofs which contain time derivatives. | |
| virtual void | attach_data_output (OutputFrame< dim, VectorType > &data_out, const VectorType &solution, const VectorType &variables, const VectorType &dt_solution=VectorType(), const VectorType &residual=VectorType()) override |
| const auto & | get_discretization () const |
| auto & | get_discretization () |
| virtual void | set_time (double t) override |
| Set the current time. The assembler should usually just forward this to the numerical model. | |
| virtual void | refinement_indicator (Vector< double > &, const VectorType &)=0 |
| virtual void | residual_variables (VectorType &residual, const VectorType &variables, const VectorType &spatial_solution) override |
| virtual void | jacobian_variables (FullMatrix< NumberType > &jacobian, const VectorType &variables, const VectorType &spatial_solution) override |
| template<typename RawPotential > | |
| auto | evaluate_at (const Point< dim > &x, const typename DoFHandler< dim >::cell_iterator &cell, const VectorType &solution_global, const RawPotential &raw_potential) const |
Evaluate the FE solution and the raw potential at x, which lies in cell. | |
| auto | extractor_raw_potential (const VectorType &solution_global) const |
| The raw potential for the extractors, or an inert placeholder if the model does not read it. | |
| void | readouts (OutputFrame< dim, VectorType > &data_out, const VectorType &solution_global, const VectorType &variables) const |
| std::pair< Point< dim >, typename DoFHandler< dim >::cell_iterator > | resolve_extractor_point (const Point< dim > &EoM_point, const typename DoFHandler< dim >::cell_iterator &EoM_cell_, const VectorType &solution_global) const |
| Where the model wants its extractors evaluated, and the cell holding that point. | |
| void | extract (std::array< NumberType, Components::count_extractors()> &data, const VectorType &solution_global, const VectorType &variables, bool search_EoM, bool set_EoM, bool postprocess) const |
| bool | jacobian_extractors (FullMatrix< NumberType > &extractor_jacobian, const VectorType &solution_global, const VectorType &variables) |
| double | average_time_variable_residual_assembly () |
| uint | num_variable_residuals () const |
| double | average_time_variable_jacobian_assembly () |
| uint | num_variable_jacobians () const |
Public Member Functions inherited from DiFfRG::AbstractAssembler< Discretization_::VectorType, Discretization_::SparseMatrixType, Discretization_::dim > | |
| virtual void | attach_data_output (OutputFrame< dim, VectorType > &data_out, const VectorType &solution, const VectorType &variables=VectorType(), const VectorType &dt_solution=VectorType(), const VectorType &residual=VectorType())=0 |
| Contribute the assembler's fields and model readouts to one scoped output frame. | |
| virtual void | attach_data_output (DataOutput< dim, VectorType > &, const VectorType &, const VectorType &=VectorType(), const VectorType &=VectorType(), const VectorType &=VectorType())=delete |
| virtual void | reinit_vector (VectorType &vector) const=0 |
| Reinitialize an arbitrary vector so that it has the correct size and structure. | |
| virtual void | reinit_matrix (SparseMatrixType &matrix) const=0 |
| Reinitialize a matrix to the jacobian's sparsity pattern. | |
| virtual void | reinit_solution_view (SolutionView< VectorType > &view) const=0 |
| Establish the layout of a fully-replicated read-only view of the solution. | |
| virtual void | residual_variables (VectorType &residual, const VectorType &variables, const VectorType &spatial_solution) |
| When coupling the spatial discretization to additional variables, this function should calculate the residual for the additional variables. | |
| virtual void | jacobian_variables (FullMatrix< NumberType > &jacobian, const VectorType &variables, const VectorType &spatial_solution) |
| When coupling the spatial discretization to additional variables, this function should calculate the jacobian for the additional variables. | |
| void | mass (VectorType &mass, const VectorType &solution_global, NumberType weight) |
| Calculates the mass \(m_i(u)\) for an ODE. | |
| virtual void | mass (VectorType &mass, const VectorType &solution_global, const VectorType &solution_global_dot, NumberType weight)=0 |
| Calculates the mass \(m(u, \partial_t u)\) for a DAE. | |
| void | residual (VectorType &residual, const VectorType &solution_global, NumberType weight, NumberType weight_mass, const VectorType &variables=VectorType()) |
| Calculates the residual for an ODE. | |
| virtual void | residual (VectorType &residual, const VectorType &solution_global, NumberType weight, const VectorType &solution_global_dot, NumberType weight_mass, const VectorType &variables=VectorType())=0 |
| Calculates the residual for a DAE. | |
| void | jacobian_mass (SparseMatrixType &jacobian, const VectorType &solution_global, NumberType mass_weight=1.) |
| Calculates the jacobian of the mass function for an ODE. | |
| virtual void | jacobian_mass (SparseMatrixType &jacobian, const VectorType &solution_global, const VectorType &solution_global_dot, NumberType alpha=1., NumberType beta=1.)=0 |
| Calculates the jacobian of the mass function for a DAE. | |
| void | jacobian (SparseMatrixType &jacobian, const VectorType &solution_global, NumberType weight, NumberType mass_weight, const VectorType &variables=VectorType()) |
| Calculates the jacobian of the residual function for an ODE. | |
| virtual void | jacobian (SparseMatrixType &jacobian, const VectorType &solution_global, NumberType weight, const VectorType &solution_global_dot, NumberType alpha, NumberType beta, const VectorType &variables=VectorType())=0 |
| Calculates the jacobian of the residual function for a DAE. | |
Static Public Attributes | |
| static constexpr uint | dim = Discretization::dim |
Static Public Attributes inherited from DiFfRG::FEMAssembler< Discretization_, Model_ > | |
| static constexpr uint | dim = Discretization::dim |
Protected Member Functions | |
| AssemblySchedule | schedule_for (const double cost_ns) const |
The mesh_loop schedule for a loop whose cell worker costs cost_ns nanoseconds. | |
Protected Member Functions inherited from DiFfRG::FEMAssembler< Discretization_, Model_ > | |
| AssemblySchedule | schedule_for (const double cost_ns) const |
The mesh_loop schedule for a loop whose cell worker costs cost_ns nanoseconds. | |
| void | update_assembly_schedules () |
| Re-count the cells the schedules are sized from. | |
Protected Attributes | |
| QGauss< dim > | quadrature |
| QGauss< dim - 1 > | quadrature_face |
| get_type::SparsityPattern< SparseMatrixType > | sparsity_pattern_mass |
| get_type::SparsityPattern< SparseMatrixType > | sparsity_pattern_jacobian |
| SparseMatrixType | mass_matrix |
| std::vector< double > | timings_reinit |
| std::vector< double > | timings_residual |
| std::vector< double > | timings_jacobian |
| Discretization & | discretization |
| const DoFHandler< dim > & | dof_handler |
| const FiniteElement< dim > & | fe |
| const Mapping< dim > & | mapping |
| Model & | model |
| std::vector< types::global_dof_index > | extractor_dof_indices |
Protected Attributes inherited from DiFfRG::FEMAssembler< Discretization_, Model_ > | |
| Discretization & | discretization |
| Model & | model |
| ReportPort | report_port |
| const FiniteElement< dim > & | fe |
| const DoFHandler< dim > & | dof_handler |
| const Mapping< dim > & | mapping |
| uint | n_owned_cells = 0 |
| Cells this rank assembles. Refreshed in reinit(); the per-loop schedules are sized from it. | |
| const AssemblyScheduleOverrides | schedule_overrides |
| DoFHandler< dim >::cell_iterator | EoM_cell |
| DoFHandler< dim >::cell_iterator | old_EoM_cell |
| const Config::EoMConfig | EoM_config |
| Point< dim > | EoM |
| std::optional< Point< dim > > | EoM_minimum_guess |
| DiFfRG::internal::PotentialSystemCache< dim, NumberType > | potential_cache |
| Mesh-dependent half of the potential reconstructions, built once and reused; see PotentialSystemCache. | |
| DoFHandler< dim >::cell_iterator | old_extractor_cell |
| Where the extractors are evaluated. Equal to EoM unless the model defines extractor_point. | |
| FullMatrix< NumberType > | extractor_jacobian |
| FullMatrix< NumberType > | extractor_jacobian_u |
| FullMatrix< NumberType > | extractor_jacobian_du |
| FullMatrix< NumberType > | extractor_jacobian_ddu |
| std::vector< types::global_dof_index > | extractor_dof_indices |
| std::vector< double > | timings_variable_residual |
| std::vector< double > | timings_variable_jacobian |
Private Types | |
| using | Base = FEMAssembler<Discretization_, Model_> |
Additional Inherited Members | |
Static Protected Member Functions inherited from DiFfRG::FEMAssembler< Discretization_, Model_ > | |
| template<typename... T> | |
| static constexpr auto | v_tie (T &&...t) |
| template<typename... T> | |
| static constexpr auto | e_tie (T &&...t) |
Static Protected Attributes inherited from DiFfRG::FEMAssembler< Discretization_, Model_ > | |
| static constexpr int | nothing = 0 |
Detailed Description
class DiFfRG::CG::Assembler< Discretization_, Model_ >
The basic assembler that can be used for any standard CG scheme with flux and source.
- Template Parameters
-
Model The model class which contains the physical equations.
Member Typedef Documentation
◆ Base
|
private |
◆ Components
| using DiFfRG::CG::Assembler< Discretization_, Model_ >::Components = typename Discretization::Components |
◆ Discretization
| using DiFfRG::CG::Assembler< Discretization_, Model_ >::Discretization = Discretization_ |
◆ Model
| using DiFfRG::CG::Assembler< Discretization_, Model_ >::Model = Model_ |
◆ NumberType
| using DiFfRG::CG::Assembler< Discretization_, Model_ >::NumberType = typename Discretization::NumberType |
◆ SparseMatrixType
| using DiFfRG::CG::Assembler< Discretization_, Model_ >::SparseMatrixType = typename Discretization::SparseMatrixType |
◆ VectorType
| using DiFfRG::CG::Assembler< Discretization_, Model_ >::VectorType = typename Discretization::VectorType |
Constructor & Destructor Documentation
◆ Assembler()
|
inline |
Member Function Documentation
◆ average_time_jacobian_assembly()
|
inline |
◆ average_time_reinit()
|
inline |
◆ average_time_residual_assembly()
|
inline |
◆ get_communicator()
|
inlineoverridevirtual |
The communicator this assembler's linear algebra lives on.
MPI_COMM_SELF for a serial discretization, so callers never branch on the build type.
◆ get_mass_matrix()
|
inlineoverridevirtual |
Obtain the mass matrix.
- Returns
- const SparseMatrixType& The mass matrix
◆ get_sparsity_pattern_jacobian()
|
inlineoverridevirtual |
Obtain the sparsity pattern of the jacobian matrix.
- Returns
- const SparsityPattern<VectorType>& The sparsity pattern of the jacobian matrix
◆ jacobian()
|
inlineoverridevirtual |
◆ jacobian_mass()
|
inlineoverridevirtual |
◆ mass()
|
inlineoverridevirtual |
◆ num_jacobians()
|
inline |
◆ num_reinits()
|
inline |
◆ num_residuals()
|
inline |
◆ rebuild_jacobian_sparsity()
|
inlineoverridevirtual |
Implements DiFfRG::FEMAssembler< Discretization_, Model_ >.
◆ refinement_indicator()
|
inlineoverridevirtual |
refinement indicator for adaptivity. Only calls the model's cell_indicator function, as in CG schemes the cell boundary is not discontinuous.
- Parameters
-
indicator The vector to store the refinement indicator in. solution_global The global solution vector.
◆ reinit()
|
inlineoverridevirtual |
Reinitialize the assembler. This is necessary if the mesh has changed, e.g. after a mesh refinement.
Reimplemented from DiFfRG::FEMAssembler< Discretization_, Model_ >.
◆ reinit_matrix()
|
inlineoverridevirtual |
◆ reinit_solution_view()
|
inlineoverridevirtual |
◆ reinit_vector()
|
inlineoverridevirtual |
◆ residual()
|
inlineoverridevirtual |
◆ schedule_for()
|
inlineprotected |
The mesh_loop schedule for a loop whose cell worker costs cost_ns nanoseconds.
Pure arithmetic on the cached cell count, so it is called per loop rather than stored per cost: the loops do not fall into two classes, and anything between the reference points in namespace assembly_cost gets its own schedule instead of being rounded to one of them.
◆ summary()
|
inlineoverridevirtual |
Return aggregate assembly statistics for the run summary.
Reimplemented from DiFfRG::AbstractAssembler< Discretization_::VectorType, Discretization_::SparseMatrixType, Discretization_::dim >.
Member Data Documentation
◆ dim
|
staticconstexpr |
◆ discretization
|
protected |
◆ dof_handler
|
protected |
◆ extractor_dof_indices
|
protected |
◆ fe
|
protected |
◆ mapping
|
protected |
◆ mass_matrix
|
protected |
◆ model
|
protected |
◆ quadrature
|
protected |
◆ quadrature_face
|
protected |
◆ sparsity_pattern_jacobian
|
protected |
◆ sparsity_pattern_mass
|
protected |
◆ timings_jacobian
|
protected |
◆ timings_reinit
|
protected |
◆ timings_residual
|
protected |
The documentation for this class was generated from the following file:
- /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/discretization/FEM/assembler/cg.hh
Generated by
Public Types inherited from