Combine local solver and global information for nonlinear eigenvalue problems.
More...
#include <nonlinear_eigenvalue.hxx>
|
| NonlinearEigenvalue (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...
|
|
| NonlinearEigenvalue (const typename TopologyT::constructor_value_type &construct_topo, const typename LocalSolverT::constructor_value_type &construct_loc_sol) |
| Abstract problem constructor. More...
|
|
| NonlinearEigenvalue (const typename TopologyT::constructor_value_type &construct_topo) |
| Abstract problem constructor. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
LargeVecT | trace_to_flux (const LargeVecT &x_vec, const dof_value_t eig=0.) |
| Evaluate condensed matrix-vector product. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
LargeVecT | jacobian_of_trace_to_flux (const LargeVecT &x_vec, const dof_value_t eig, const LargeVecT &x_val, const dof_value_t eig_val) |
| Evaluate condensed matrix-vector product. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
LargeVecT | make_initial (const LargeVecT &x_vec, const dof_value_t eig=0.) |
| Create initial starting value for Newton's methods. 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...
|
|
|
using | dof_value_t = typename LargeVecT::value_type |
| Floating type is determined by floating type of large vector's entries. More...
|
|
template<class TopologyT, class GeometryT, class NodeDescriptorT, class LocalSolverT, typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
class GlobalLoop::NonlinearEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >
Combine local solver and global information for nonlinear eigenvalue problems.
- Template Parameters
-
TopologyT | Class type containing topological information. |
GeometryT | Class type containing geometrical information. |
NodeDescriptorT | Class type containing the information of nodes of hyperedges. |
LocalSolverT | Class type of the local solver. |
LargeVecT | Clas type of large, global vector. |
dof_index_t | Index type of hyperedges. Default is unsigned int . |
- Authors
- Guido Kanschat, Heidelberg University, 2019–2020.
-
Andreas Rupp, Heidelberg University, 2019–2020.
◆ dof_value_t
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
Floating type is determined by floating type of large vector's entries.
◆ NonlinearEigenvalue() [1/3]
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::NonlinearEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::NonlinearEigenvalue |
( |
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_topo | Information to construct a topology. |
construct_geom | Information to construct a geometry. |
construct_loc_sol | Information to construct a local solver. |
◆ NonlinearEigenvalue() [2/3]
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::NonlinearEigenvalue< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::NonlinearEigenvalue |
( |
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_topo | Information to construct a topology. |
construct_loc_sol | Information to construct a local solver. |
◆ NonlinearEigenvalue() [3/3]
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
Abstract problem constructor.
Constructor for class containing a HyperGraph and a local solver that solve a PDE on a hyperedge.
- Parameters
-
construct_topo | Information to construct a topology. |
◆ get_refinement()
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
◆ HAS_MEMBER_FUNCTION() [1/3]
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
Prepare struct to check for function to exist (cf. compile_time_tricks.hxx).
◆ HAS_MEMBER_FUNCTION() [2/3]
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
Prepare struct to check for function to exist (cf. compile_time_tricks.hxx).
◆ HAS_MEMBER_FUNCTION() [3/3]
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
Prepare struct to check for function to exist (cf. compile_time_tricks.hxx).
◆ jacobian_of_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>
Evaluate condensed matrix-vector product.
This function corresponds to evaluating the Jacobian at point x_val
, eig_val
in direction x_vec
, eig
.
- Parameters
-
x_vec | Direction in which Jacobian is evaluated. |
eig | Direction in which Jacobian is evaluated. |
x_val | Point at which Jacobian is evaluated. |
eig_val | Point at which Jacobian is evaluated. |
- Return values
-
y_vec | Corresponds to directional derivative. |
◆ make_initial()
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>
Create initial starting value for Newton's methods.
- Parameters
-
x_vec | A vector containing the input vector \(x\) which should be zero. |
eig | Eigenvalue (approximation). |
- Return values
-
y_vec | A vector containing initial flux vector. |
◆ 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::NonlinearEigenvalue< 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
-
option | A std::string containing the plot option to be considered. |
value | A std::string containing the new value of the considered option. If empty, the old value is kept. |
- Return values
-
opt_value | A std::string containing the value of the plot option. |
◆ plot_solution()
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
Plot solution in vtu format.
Function that plots the solution of the problem to a predefined file.
- Parameters
-
lambda | A vector of unknowns containing the data vector. |
time | Time. |
- Return values
-
file | A file in the output directory. |
◆ set_refinement()
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
◆ size_of_system()
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
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
-
n | An int which Python needs and actually is a parsed unsigned int . |
◆ 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>
Evaluate condensed matrix-vector product.
This function corresponds to the evaluation of the residual. Here, the vector contains the eigenfunction representation, while the floating point is the eigenvalue.
- Parameters
-
x_vec | A vector containing the input vector. |
eig | Eigenvalue. |
- Return values
-
y_vec | A vector containing the residual. |
◆ 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::NonlinearEigenvalue< 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>
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>
Struct encoding the options for plotting.
The documentation for this class was generated from the following file: