pymor.algorithms.hapod
¶
Module Contents¶
Classes¶
Functions¶
Compute the Hierarchical Approximate POD. |
|
Incremental Hierarchical Approximate POD. |
|
Distributed Hierarchical Approximate POD. |
|
Incremental Hierarchical Approximate POD. |
|
Distributed Hierarchical Approximate POD. |
|
- pymor.algorithms.hapod.hapod(tree, snapshots, local_eps, product=None, pod_method=default_pod_method, executor=None, eval_snapshots_in_executor=False)[source]¶
Compute the Hierarchical Approximate POD.
This is an implementation of the HAPOD algorithm from [HLR18].
Parameters
- tree
A
Tree
defining the worker topology.- snapshots
A mapping
snapshots(node)
returning for each leaf node the associated snapshot vectors.- local_eps
A mapping
local_eps(node, snap_count, num_vecs)
assigning to each tree nodenode
an l2 truncation error tolerance for the local pod based on the number of input vectorsnum_vecs
and the total number of snapshot vectors below the given nodesnap_count
.- product
Inner product
Operator
w.r.t. which to compute the POD.- pod_method
A function
pod_method(U, eps, root_node, product)
for computing the POD of theVectorArray
U
w.r.t. the given inner productproduct
and the l2 error toleranceeps
.root_node
is set toTrue
when the POD is computed at the root of the tree.- executor
If not
None
, aconcurrent.futures.Executor
object to use for parallelization.- eval_snapshots_in_executor
If
True
also parallelize the evaluation of the snapshot map.
Returns
- modes
The computed POD modes.
- svals
The associated singular values.
- snap_count
The total number of input snapshot vectors.
- pymor.algorithms.hapod.inc_hapod(steps, snapshots, eps, omega, product=None, executor=None)[source]¶
Incremental Hierarchical Approximate POD.
This computes the incremental HAPOD from [HLR18].
Parameters
- steps
The number of incremental POD updates. Has to agree with the length of
snapshots
.- snapshots
An iterable returning for each incremental POD step the associated snapshot vectors.
- eps
Desired l2-mean approximation error.
- omega
Tuning parameter (0 < omega < 1) to balance performance with approximation quality.
- product
Inner product
Operator
w.r.t. which to compute the POD.- executor
If not
None
, aconcurrent.futures.Executor
object to use to compute new snapshot vectors and POD updates in parallel.
Returns
- modes
The computed POD modes.
- svals
The associated singular values.
- snap_count
The total number of input snapshot vectors.
- pymor.algorithms.hapod.dist_hapod(num_slices, snapshots, eps, omega, arity=None, product=None, executor=None, eval_snapshots_in_executor=False)[source]¶
Distributed Hierarchical Approximate POD.
This computes the distributed HAPOD from [HLR18].
Parameters
- num_slices
The number of snapshot vector slices.
- snapshots
A mapping
snapshots(slice)
returning for each slice number the associated snapshot vectors.- eps
Desired l2-mean approximation error.
- omega
Tuning parameter (0 < omega < 1) to balance performance with approximation quality.
- arity
If not
None
, the arity of the HAPOD tree. Otherwise, a tree of depth 2 is used (one POD per slice and one additional POD of the resulting data).- product
Inner product
Operator
w.r.t. which to compute the POD.- executor
If not
None
, aconcurrent.futures.Executor
object to use for parallelization.- eval_snapshots_in_executor
If
True
also parallelize the evaluation of the snapshot map.
Returns
- modes
The computed POD modes.
- svals
The associated singular values.
- snap_count
The total number of input snapshot vectors.
- pymor.algorithms.hapod.inc_vectorarray_hapod(steps, U, eps, omega, product=None)[source]¶
Incremental Hierarchical Approximate POD.
This computes the incremental HAPOD from [HLR18] for a given
VectorArray
.Parameters
- steps
The number of incremental POD updates.
- U
The
VectorArray
of which to compute the HAPOD.- eps
Desired l2-mean approximation error.
- omega
Tuning parameter (0 < omega < 1) to balance performance with approximation quality.
- product
Inner product
Operator
w.r.t. which to compute the POD.
Returns
- modes
The computed POD modes.
- svals
The associated singular values.
- snap_count
The total number of input snapshot vectors.
- pymor.algorithms.hapod.dist_vectorarray_hapod(num_slices, U, eps, omega, arity=None, product=None, executor=None)[source]¶
Distributed Hierarchical Approximate POD.
This computes the distributed HAPOD from [HLR18] of a given
VectorArray
.Parameters
- num_slices
The number of snapshot vector slices.
- U
The
VectorArray
of which to compute the HAPOD.- eps
Desired l2-mean approximation error.
- omega
Tuning parameter (0 < omega < 1) to balance performance with approximation quality.
- arity
If not
None
, the arity of the HAPOD tree. Otherwise, a tree of depth 2 is used (one POD per slice and one additional POD of the resulting data).- product
Inner product
Operator
w.r.t. which to compute the POD.- executor
If not
None
, aconcurrent.futures.Executor
object to use for parallelization.
Returns
- modes
The computed POD modes.
- svals
The associated singular values.
- snap_count
The total number of input snapshot vectors.