HyperHDG
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t > Class Template Reference

Combine local solver and global information for eigenvalue problems with shifted inverse approach. More...

#include <shifted_inverse_eigenvalue.hxx>

Collaboration diagram for GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >:
Collaboration graph
[legend]

Public Member Functions

 ShiftedInverseEigenvalue (const typename TopologyT::constructor_value_type &construct_topo, const typename GeometryT::constructor_value_type &construct_geom, const typename LocalSolverT::constructor_value_type &construct_loc_sol)
 Abstract problem constructor. More...
 
 ShiftedInverseEigenvalue (const typename TopologyT::constructor_value_type &construct_topo, const typename LocalSolverT::constructor_value_type &construct_loc_sol)
 Abstract problem constructor. More...
 
 ShiftedInverseEigenvalue (const typename TopologyT::constructor_value_type &construct_topo)
 Abstract problem constructor. More...
 
template<typename hyNode_index_t = dof_index_t>
std::vector< unsigned int > dirichlet_indices ()
 Return indices of Dirichlet degrees of freedom. More...
 
template<typename hyNode_index_t = dof_index_t>
LargeVecT trace_to_flux (const LargeVecT &x_vec, const dof_value_t sigma=0.)
 Evaluate condensed matrix-vector product. More...
 
dof_index_t size_of_system () const
 Determine size of condensed system for the skeletal unknowns. More...
 
std::string plot_option (const std::string &option, std::string value="")
 Set plot option and return old plot option. More...
 
void plot_solution (const std::vector< dof_value_t > &lambda, const dof_value_t time=0.)
 Plot solution in vtu format. More...
 
unsigned int get_refinement ()
 Return refinement level. More...
 
void set_refinement (unsigned int level)
 Set refinement level. More...
 

Private Types

using dof_value_t = typename LargeVecT::value_type
 Floating type is determined by floating type of large vector's entries. More...
 

Private Member Functions

 HAS_MEMBER_FUNCTION (trace_to_flux, has_trace_to_flux)
 Prepare struct to check for function to exist (cf. compile_time_tricks.hxx). More...
 

Private Attributes

HDGHyperGraph< LocalSolverT::n_glob_dofs_per_node(), TopologyT, GeometryT, NodeDescriptorT, typename LocalSolverT::data_type > hyper_graph_
 Instantiation of a hypergraph. More...
 
std::vector< dof_index_t > dirichlet_indices_
 Vector containing the indices of Dirichlet type nodes. More...
 
const LocalSolverT local_solver_
 Instantiation of a local solver. More...
 
PlotOptions plot_options
 Struct encoding the options for plotting. More...
 

Detailed Description

template<class TopologyT, class GeometryT, class NodeDescriptorT, class LocalSolverT, typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
class GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >

Combine local solver and global information for eigenvalue problems with shifted inverse approach.


Template Parameters
TopologyTClass type containing topological information.
GeometryTClass type containing geometrical information.
NodeDescriptorTClass type containing the information of nodes of hyperedges.
LocalSolverTClass type of the local solver.
LargeVecTClas type of large, global vector.
dof_index_tIndex type of hyperedges. Default is unsigned int.
Authors
Guido Kanschat, Heidelberg University, 2019–2020.
Andreas Rupp, Heidelberg University, 2019–2020.

Member Typedef Documentation

◆ dof_value_t

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
using GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::dof_value_t = typename LargeVecT::value_type
private

Floating type is determined by floating type of large vector's entries.


Constructor & Destructor Documentation

◆ ShiftedInverseEigenvalue() [1/3]

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::ShiftedInverseEigenvalue ( const typename TopologyT::constructor_value_type &  construct_topo,
const typename GeometryT::constructor_value_type &  construct_geom,
const typename LocalSolverT::constructor_value_type &  construct_loc_sol 
)
inline

Abstract problem constructor.


Constructor for class containing a HyperGraph and a local solver that solve a PDE on a hyperedge.

Parameters
construct_topoInformation to construct a topology.
construct_geomInformation to construct a geometry.
construct_loc_solInformation to construct a local solver.

◆ ShiftedInverseEigenvalue() [2/3]

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::ShiftedInverseEigenvalue ( const typename TopologyT::constructor_value_type &  construct_topo,
const typename LocalSolverT::constructor_value_type &  construct_loc_sol 
)
inline

Abstract problem constructor.


Constructor for class containing a HyperGraph and a local solver that solve a PDE on a hyperedge.

Parameters
construct_topoInformation to construct a topology.
construct_loc_solInformation to construct a local solver.

◆ ShiftedInverseEigenvalue() [3/3]

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::ShiftedInverseEigenvalue ( const typename TopologyT::constructor_value_type &  construct_topo)
inline

Abstract problem constructor.


Constructor for class containing a HyperGraph and a local solver that solve a PDE on a hyperedge.

Parameters
construct_topoInformation to construct a topology.

Member Function Documentation

◆ dirichlet_indices()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
template<typename hyNode_index_t = dof_index_t>
std::vector<unsigned int> GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::dirichlet_indices ( )
inline

Return indices of Dirichlet degrees of freedom.


Template Parameters
hyNode_index_tTypename of the index type for hypernodes.
Return values
dirichlet_indices_Vector containing all dirichlet dof indices.
Here is the call graph for this function:

◆ get_refinement()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
unsigned int GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::get_refinement ( )
inline

Return refinement level.


◆ HAS_MEMBER_FUNCTION()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::HAS_MEMBER_FUNCTION ( trace_to_flux  ,
has_trace_to_flux   
)
private

Prepare struct to check for function to exist (cf. compile_time_tricks.hxx).


◆ plot_option()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
std::string GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::plot_option ( const std::string &  option,
std::string  value = "" 
)
inline

Set plot option and return old plot option.


Function to set and / or read the current plot option.

Parameters
optionA std::string containing the plot option to be considered.
valueA std::string containing the new value of the considered option. If empty, the old value is kept.
Return values
opt_valueA std::string containing the value of the plot option.
Here is the call graph for this function:

◆ plot_solution()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
void GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::plot_solution ( const std::vector< dof_value_t > &  lambda,
const dof_value_t  time = 0. 
)
inline

Plot solution in vtu format.


Function that plots the solution of the problem to a predefined file.

Parameters
lambdaA vector of unknowns containing the data vector.
timeTime at which analytic functions are evaluated.
Return values
fileA file in the output directory.
Here is the call graph for this function:

◆ set_refinement()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
void GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::set_refinement ( unsigned int  level)
inline

Set refinement level.


◆ size_of_system()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
dof_index_t GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::size_of_system ( ) const
inline

Determine size of condensed system for the skeletal unknowns.


Function that returns the size \(n\) of the \(n \times n\) linear, sparse system \(Ax = b\) that is solved by the program in a matrix-free fashion.

This function is needed to define a LinearOperator from Python's scipy.sparse.linalg package which can be used to define iterative solvers for sparse systems.

Return values
nSize of condensed global system of equations.

◆ trace_to_flux()

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
template<typename hyNode_index_t = dof_index_t>
LargeVecT GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::trace_to_flux ( const LargeVecT &  x_vec,
const dof_value_t  sigma = 0. 
)
inline

Evaluate condensed matrix-vector product.


Evaluate \( (A - \sigma M) x = y\).

Parameters
x_vecA vector containing the input vector \(x\).
sigmaApproximation to eigenvalue / shifting parameter.
Return values
y_vecA vector containing the product \(y = Ax\).
Here is the call graph for this function:

Member Data Documentation

◆ dirichlet_indices_

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
std::vector<dof_index_t> GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::dirichlet_indices_
private

Vector containing the indices of Dirichlet type nodes.


◆ hyper_graph_

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
HDGHyperGraph<LocalSolverT::n_glob_dofs_per_node(), TopologyT, GeometryT, NodeDescriptorT, typename LocalSolverT::data_type> GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::hyper_graph_
private

Instantiation of a hypergraph.


◆ local_solver_

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
const LocalSolverT GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::local_solver_
private

Instantiation of a local solver.


◆ plot_options

template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
PlotOptions GlobalLoop::ShiftedInverseEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::plot_options
private

Struct encoding the options for plotting.



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