|
| Parabolic (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...
|
|
| Parabolic (const typename TopologyT::constructor_value_type &construct_topo, const typename LocalSolverT::constructor_value_type &construct_loc_sol) |
| Abstract problem constructor. More...
|
|
| Parabolic (const typename TopologyT::constructor_value_type &construct_topo) |
| Abstract problem constructor. More...
|
|
LargeVecT | zero_vector () const |
| Returns vector of appropriate size for the predefined problem. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
LargeVecT | trace_to_flux (const LargeVecT &x_vec, const dof_value_t time=0.) |
| Evaluate condensed matrix-vector product. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
std::vector< dof_value_t > | residual_flux (const std::vector< dof_value_t > &x_vec, const dof_value_t time=0.) |
| Evaluate condensed matrix-vector product. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
void | set_data (const LargeVecT &x_vec, const dof_value_t time=0.) |
| Set data using the result of the old time step. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
LargeVecT | make_initial (const LargeVecT &x_vec, const dof_index_t time=0.) |
| Evaluate the initial flux of the problem. More...
|
|
template<typename hyNode_index_t = dof_index_t> |
std::vector< dof_value_t > | errors (const LargeVecT &x_vec, const dof_value_t time=0.) |
| Calculate L2 error. 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...
|
|
template<class TopologyT, class GeometryT, class NodeDescriptorT, class LocalSolverT, typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
class GlobalLoop::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >
Combine local solver and global information for parabolic 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.
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::Parabolic |
( |
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. |
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::Parabolic |
( |
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. |
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
GlobalLoop::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::Parabolic |
( |
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_topo | Information to construct a topology. |
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::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::make_initial |
( |
const LargeVecT & |
x_vec, |
|
|
const dof_index_t |
time = 0. |
|
) |
| |
|
inline |
Evaluate the initial flux of the problem.
- Parameters
-
x_vec | A vector containing the input vector \(x\). |
time | Time for initial data. |
- Return values
-
y_vec | A vector containing the initial fluxes. |
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
std::string GlobalLoop::Parabolic< 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. |
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 at which analytic functions are evaluated. |
- Return values
-
file | A file in the output directory. |
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.
Function that evaluates the condensed, matrix-free version of the matrix-vector product \(A x = y\), where \(A\) is the condensed matrix of the LDG-H method that needs to be inverted to do a time step, \(x\) is the vector of parameters to define the skeletal variable \(\lambda\), and \(y\) is the resulting vector, which has the same size as the input vector \(x\).
- Parameters
-
x_vec | A vector containing the input vector \(x\). |
time | Time at which the time step ends. |
- Return values
-
y_vec | A vector containing the product \(y = Ax\). |
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>
Set data using the result of the old time step.
- Parameters
-
x_vec | A std::vector containing the input vector \(x\). |
time | Time at which the old time step ended. |
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
dof_index_t GlobalLoop::Parabolic< 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
-
n | Size of condensed system of equations. |
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::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::trace_to_flux |
( |
const LargeVecT & |
x_vec, |
|
|
const dof_value_t |
time = 0. |
|
) |
| |
|
inline |
Evaluate condensed matrix-vector product.
Function that evaluates the condensed, matrix-free version of the matrix-vector product \(A x = y\), where \(A\) is the condensed matrix of the LDG-H method that needs to be inverted for a time step, \(x\) is the vector of parameters to define the skeletal variable \(\lambda\), and \(y\) is the resulting vector, which has the same size as the input vector \(x\).
- Parameters
-
x_vec | A vector containing the input vector \(x\). |
time | Time at which the new time step will end. |
- Return values
-
y_vec | A vector containing the product \(y = Ax\). |
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
LargeVecT GlobalLoop::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::zero_vector |
( |
| ) |
const |
|
inline |
Returns vector of appropriate size for the predefined problem.
Returns a vector containing only the value zero, but of the size \(n\) which is also the number which is returned if size_of_system()
is evaluated.
- Return values
-
zero | A vector of the correct size for the unknowns of the given problem. |
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
constexpr unsigned int GlobalLoop::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::hyEdge_dim = TopologyT::hyEdge_dim() |
|
staticconstexprprivate |
Some constant variable that might be helpful.
template<class TopologyT , class GeometryT , class NodeDescriptorT , class LocalSolverT , typename LargeVecT = std::vector<double>, typename dof_index_t = unsigned int>
constexpr unsigned int GlobalLoop::Parabolic< TopologyT, GeometryT, NodeDescriptorT, LocalSolverT, LargeVecT, dof_index_t >::n_dofs_per_node = LocalSolverT::n_glob_dofs_per_node() |
|
staticconstexprprivate |
Some constant variable that might be helpful.