Skip to content
Hierarchical Approximate Proper Orthogonal Decomposition
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CITATION
CODE
LICENSE
README.md
RUNME.m
hapod.m

README.md

HAPOD - Hierarchical Approximate Proper Orthogonal Decomposition

  • HAPOD - Hierarchical Approximate POD
  • version: 2.0 ( 2019-01-21 )
  • by: Christian Himpe (0000-0003-2194-6754), Stephan Rave (0000-0003-0439-7212)
  • under: BSD 2-Clause License (open-source)
  • summary: Distributed or incremental POD / SVD computation

Scope

  • Proper Orthogonal Decomposition (POD)
  • (Truncated) Singular Value Decomposition (SVD)
  • (Sparse) Principal Component Analysis (PCA)
  • Empirical Orthogonal Functions (EOF)
  • Empirical Eigenfunctions
  • Karhunen-Loeve Decomposition
  • Dimension Reduction
  • Model Reduction | Model Order Reduction

Features

  • Standard POD
  • Incremental (HA)POD
  • Distributed (HA)POD
  • Custom SVD backend
  • Method of Snapshots

Compatibility

  • GNU Octave >= 4.2
  • Mathworks MATLAB >= 2013b

Basic Usage

[svec,sval,snfo] = hapod(data,bound,type,relax,config,mysvd)

Documentation

Arguments

  • data {cell array}
  • bound {scalar} L2 mean projection error bound
  • type {string} HAPOD tree type
    • 'incr' Incremental HAPOD (Complete)
    • 'incr_1' Incremental HAPOD (Non-root node)
    • 'incr_r' Incremental HAPOD (Root node)
    • 'dist' Distributed HAPOD (Complete)
    • 'dist_1' Distributed HAPOD (Non-root node)
    • 'dist_r' Distributed HAPOD (Root node)
    • 'none' Standard POD
  • relax {scalar} Relaxation parameter in (0,1] by default: 0.5.
  • config {structure} Configuration structure by default empty.
    • nLevels - Total number of levels in tree
    • nSnapshots - Number of data snapshots (columns) seen at each node
    • nModes - Number of modes resulting at each node
    • tNode - Time consumed at each node
  • mysvd {handle} Function handle to a custom POD method.
    • by default an economic SVD is used.
    • alternatively the method-of-snapshots can be used via 'mos'.
    • otherwise a function handle can be provided.

Return Values

  • svec {matrix} POD modes (column vectors)
  • sval {vector} Singular values
  • snfo {structure} Information structure

Usage

If all data partitions can be passed as the data argument, the types: none (standard POD), incr(emental) HAPOD or dist(ributed) HAPOD are applicable. In case only a single partition can be passed, the types: incr_1 and dist_1 should be used for the non-root nodes of the associated HAPOD tree, while the types: incr_r and dist_r should be used for the root node. The returned information structure (or a cell-array thereof) can be passed to the parent nodes in the associated HAPOD tree.

Information and Configuration Structure

  • nLevels - Total number of levels in tree
  • nSnapshots - Number of data columns passed to this hapod and its children.
  • nModes - Number of intermediate modes
  • tNode - computational time at this hapod's branch

Only for incr_1, the number of levels nLevels in the tree needs to be provided in a structure. The other fields are filled by the hapod function.

Custom SVD Backend

Signature, arguments and return values as for MATLAB's svd function.

[U,D,V] = mysvd(X)

Getting Started

Run the sample code:

RUNME()

which demonstrates the different implemented HAPOD variants and can be used as a template.

Cite As

C. Himpe, T. Leibner and S. Rave. "Hierarchical Approximate Proper Orthogonal Decomposition". SIAM Journal on Scientific Computing, 40(5): A3267--A3292, 2018.

Used In

You can’t perform that action at this time.