KerMor  0.9
Model order reduction for nonlinear dynamical systems and nonlinear approximation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
general.DEIM Class Reference

DEIM: Implements the DEIM-Algorithm from [2]. More...

Detailed Description

DEIM: Implements the DEIM-Algorithm from [2].

Additionally allows to estimate the DEIM error a-posteriori by using the next \(M'\) orders of the current DEIM approximation.

Author
Daniel Wirtz
Date
2012-03-26
Change in 0.6:
(Daniel Wirtz, 2012-06-08)
  • DEIM is now a KerMorObject
  • Fixed triggering of updateOrderData after computeDEIM calls
  • Completed clone method
  • New event "OrderUpdated" to notify any components of changes to the current DEIM orders
New in 0.6:
(Daniel Wirtz, 2012-05-30) Added a custom implementation of the getStateJacobian method
Change in 0.6:
(Daniel Wirtz, 2012-05-29) Besides many work-in-progress changes, now the evaluate function is implemented directly. further, some matrices needed for the DEIMEstimator have been included and are being computed.
New in 0.6:
(Daniel Wirtz, 2012-03-26) Added this class.
Todo:
think of exporting the jrow, jend, S properties to ACompEvalCoreFun and precompute stuff there; projection happens at that stage

This class is part of the framework

KerMor - Model Order Reduction using Kernels

Definition at line 18 of file DEIM.m.

Public Member Functions

function  computeDEIM (dscomponents.ACompEvalCoreFun f,matrix< double > fxi)
 Implementation of the DEIM algorithm. More...
 
function fx = evaluate (colvec< double > x,double t)
 
function fx = evaluateMulti (colvec< double > x,double t,colvec< double > mu)
 
function J = getStateJacobian (colvec< double > x,double t)
 
function ptsgetInterpolationPoints (matrix< double > u)
 Computes the interpolation indices according to the DEIM algorithm. More...
 
function err = getEstimatedError (colvec< double > x,double t,colvec< double > mu)
 
function DEIM target = project (matrix< double > V,matrix< double > W,DEIM target)
 Pojects instance according to the projection biorthogonal matrices \(V,W\). More...
 
function copy = clone (copy)
 The interface method with returns a copy of the current class instance. More...
 
function  plotSummary (pm, context)
 
- Public Member Functions inherited from KerMorObject
 KerMorObject ()
 Constructs a new KerMor object. More...
 
function  display ()
 disp(object2str(this)); More...
 
function bool = eq (B)
 Checks equality of two KerMor objects. More...
 
function bool = ne (B)
 Checks if two KerMorObjects are different. More...
 
function cn = getClassName ()
 Returns the simple class name of this object without packages. More...
 
- Public Member Functions inherited from DPCMObject
 DPCMObject ()
 Creates a new DPCM object. More...
 
 DPCMObject ()
 
- Public Member Functions inherited from general.AProjectable
function handle target = project (matrix< double > V,matrix< double > W,handle target)
 Returns a NEW INSTANCE of the projected object that does not rely on data of the old one via references (everything must be copied to ensure separability of reduced(=projected) versions and full versions, unless. More...
 

Public Attributes

integer MaxOrder = 40
 The maximum order up to which the DEIM approximation should be computed. More...
 
rowvec< integerOrder
 The actual order \(M\) for the current DEIM approximation. More...
 
rowvec< doubleSingularValues = "[]"
 The singular values returned by the SVD decomposition to compute the DEIM POD basis. More...
 
matrix< doubleU
 The U matrix for the current Order. More...
 
matrix< doubleU_nonproj
 If projection is applied, this contains the non-projected full \(d \times m\) matrix \(U_m(P_m^tU_m)^{-1}\) for use in subclasses. More...
 
matrix< doubleUerr1
 Some matrices for M+M' error estimation. More...
 
 Uerr2
 
 M1
 
 M2
 
dscomponents.ACompEvalCoreFun f
 The function which DEIM is applied to. More...
 
rowvec< doubleResiduals
 The maximum residuals obtained along the magic points computation. More...
 
EVENT OrderUpdated
 Gets fired whenever this DEIM instance has updated it's order matrices. More...
 
- Public Attributes inherited from DPCMObject
 WorkspaceVariableName = ""
 The workspace variable name of this class. Optional. More...
 
 ID = "[]"
 An ID that allows to uniquely identify this DPCMObject (at least within the current MatLab session/context). More...
 
 PropertiesChanged = "[]"
 The Dictionary containing all the property settings as key/value pairs. More...
 
- Public Attributes inherited from handle
 addlistener
 Creates a listener for the specified event and assigns a callback function to execute when the event occurs. More...
 
 notify
 Broadcast a notice that a specific event is occurring on a specified handle object or array of handle objects. More...
 
 delete
 Handle object destructor method that is called when the object's lifecycle ends. More...
 
 disp
 Handle object disp method which is called by the display method. See the MATLAB disp function. More...
 
 display
 Handle object display method called when MATLAB software interprets an expression returning a handle object that is not terminated by a semicolon. See the MATLAB display function. More...
 
 findobj
 Finds objects matching the specified conditions from the input array of handle objects. More...
 
 findprop
 Returns a meta.property objects associated with the specified property name. More...
 
 fields
 Returns a cell array of string containing the names of public properties. More...
 
 fieldnames
 Returns a cell array of string containing the names of public properties. See the MATLAB fieldnames function. More...
 
 isvalid
 Returns a logical array in which elements are true if the corresponding elements in the input array are valid handles. This method is Sealed so you cannot override it in a handle subclass. More...
 
 eq
 Relational functions example. See details for more information. More...
 
 transpose
 Transposes the elements of the handle object array. More...
 
 permute
 Rearranges the dimensions of the handle object array. See the MATLAB permute function. More...
 
 reshape
 hanges the dimensions of the handle object array to the specified dimensions. See the MATLAB reshape function. More...
 
 sort
 ort the handle objects in any array in ascending or descending order. More...
 
- Public Attributes inherited from general.AProjectable
 V
 The \(V\) matrix of the biorthogonal pair \(V,W\). More...
 
 W
 The \(W\) matrix of the biorthogonal pair \(V,W\). More...
 

Protected Member Functions

function  updateOrderData ()
 Update approximation order as specified in fOrder. As a consequence some matrices have to be recalculated. More...
 
- Protected Member Functions inherited from KerMorObject
function  checkType (obj, type)
 Object typechecker. More...
 
- Protected Member Functions inherited from DPCMObject
function  registerProps (varargin)
 Call this method at any class that defines DPCM observed properties. More...
 
function  registerProps (varargin)
 

Static Protected Member Functions

static function obj = loadobj (obj, varargin)
 
- Static Protected Member Functions inherited from DPCMObject
static function obj = loadobj (obj, from)
 Re-register any registered change listeners! More...
 
static function obj = loadobj (obj, from)
 
- Static Protected Member Functions inherited from general.AProjectable
static function obj = loadobj (obj, from)
 

Protected Attributes

matrix< doubleu
 The full approximation base. More...
 
rowvec< doublepts
 Interpolation points. More...
 

Member Function Documentation

function copy = general.DEIM.clone (   target)
virtual

The interface method with returns a copy of the current class instance.

Parameters
targetIf clone was called for a subclass of this class, target must contain the new instance of the subclass that is to be the cloned result.

Reimplemented from general.AProjectable.

Definition at line 397 of file DEIM.m.

References dscomponents.ACompEvalCoreFun.clone(), f, M1, M2, MaxOrder, pts, SingularValues, u, U, U_nonproj, Uerr1, and Uerr2.

Referenced by project().

Here is the call graph for this function:

Here is the caller graph for this function:

function general.DEIM.computeDEIM ( dscomponents.ACompEvalCoreFun  f,
matrix< double fxi 
)

Implementation of the DEIM algorithm.

Parameters
fthe function DEIM is applied to
fxithe snapshot data or general.ABlockSVD
Required fields of f:

Definition at line 244 of file DEIM.m.

References f, getInterpolationPoints(), MaxOrder, Order, pts, SingularValues, dscomponents.ACompEvalCoreFun.test_ComponentEvalMatch(), u, and updateOrderData().

Referenced by approx.DEIM.approximateSystemFunction().

Here is the call graph for this function:

Here is the caller graph for this function:

function fx = general.DEIM.evaluate ( colvec< double x,
double  t 
)

Definition at line 303 of file DEIM.m.

References dscomponents.ACompEvalCoreFun.evaluateComponentSet(), f, and U.

Referenced by testing.DEIM.computeDEIMErrors().

Here is the call graph for this function:

Here is the caller graph for this function:

function fx = general.DEIM.evaluateMulti ( colvec< double x,
double  t,
colvec< double mu 
)

Definition at line 308 of file DEIM.m.

References dscomponents.ACompEvalCoreFun.evaluateComponentSetMulti(), f, and U.

Here is the call graph for this function:

function err = general.DEIM.getEstimatedError ( colvec< double x,
double  t,
colvec< double mu 
)

Definition at line 356 of file DEIM.m.

References dscomponents.ACompEvalCoreFun.evaluateComponentSetMulti(), f, Uerr1, and Uerr2.

Referenced by testing.DEIM.computeDEIMErrors().

Here is the call graph for this function:

Here is the caller graph for this function:

function pts = general.DEIM.getInterpolationPoints ( matrix< double u)

Computes the interpolation indices according to the DEIM algorithm.

Parameters
umatrix, columns are the orthonormal basis vectors computed via POD from the snapshot data

Definition at line 325 of file DEIM.m.

References KerMor.App(), Utils.implode(), pts, Residuals, and u.

Referenced by computeDEIM().

Here is the call graph for this function:

Here is the caller graph for this function:

function J = general.DEIM.getStateJacobian ( colvec< double x,
double  t 
)
static function obj = general.DEIM.loadobj (   obj,
  varargin 
)
staticprotected

Definition at line 571 of file DEIM.m.

References KerMorObject.KerMorObject().

Here is the call graph for this function:

function general.DEIM.plotSummary (   pm,
  context 
)
virtual

Implements IReductionSummaryPlotProvider.

Definition at line 420 of file DEIM.m.

References MaxOrder, Residuals, and SingularValues.

function DEIM target = general.DEIM.project ( matrix< double V,
matrix< double W,
DEIM  target 
)

Pojects instance according to the projection biorthogonal matrices \(V,W\).

See Also
general.AProjectable
Parameters
VThe \(V\) matrix of the biorthogonal pair \(V,W\)
WThe \(W\) matrix of the biorthogonal pair \(V,W\)
targetSpecify the subclasses projection target instance if project is overridden in a subclass and the subclass has been cloned. Default: this
Required fields of target:
Generated fields of target:

Definition at line 365 of file DEIM.m.

References clone(), f, and dscomponents.ACompEvalCoreFun.project().

Here is the call graph for this function:

function general.DEIM.updateOrderData ( )
protected

Update approximation order as specified in fOrder. As a consequence some matrices have to be recalculated.

Definition at line 438 of file DEIM.m.

References KerMor.App(), F, f, DPCMObject.ID, M1, M2, handle.notify, pts, dscomponents.ACompEvalCoreFun.setPointSet(), t, u, U, U_nonproj, Uerr1, Uerr2, general.AProjectable.V, and general.AProjectable.W.

Referenced by computeDEIM().

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

general.DEIM.f

The function which DEIM is applied to.

Is a subclass of dscomponents.ACompEvalCoreFun

Note
This property has non-standard access specifiers: SetAccess = Private, GetAccess = Public
Matlab documentation of property attributes.

Definition at line 214 of file DEIM.m.

Referenced by clone(), computeDEIM(), evaluate(), evaluateMulti(), getEstimatedError(), getStateJacobian(), error.DEIMEstimator.prepareConstants(), approx.DEIM.prepareSimulation(), project(), general.MatrixDEIM.updateOrderData(), and updateOrderData().

general.DEIM.M1

Definition at line 207 of file DEIM.m.

Referenced by clone(), general.MatrixDEIM.updateOrderData(), and updateOrderData().

general.DEIM.M2

Definition at line 209 of file DEIM.m.

Referenced by clone(), general.MatrixDEIM.updateOrderData(), and updateOrderData().

general.DEIM.MaxOrder = 40

The maximum order up to which the DEIM approximation should be computed.

This corresponds to the maximum number \(m\) that can be choosen as approximation order.

Property class important:
The larger the maximal order, the better approximation quality can be achieved, for paying the cost of higher evaluation time.

Default: 40

Note
This property has the MATLAB attribute SetObservable set to true.
Matlab documentation of property attributes.
This property has custom functionality when its value is changed.

Definition at line 60 of file DEIM.m.

Referenced by clone(), computeDEIM(), testing.DEIM.computeDEIMErrors(), and plotSummary().

general.DEIM.Order

The actual order \(M\) for the current DEIM approximation.

As second element, the order \(M'\) of the error estimation DEIM approximation can be specified. If not given, \(M'=0\) is automatically set.

See Also
MaxOrder

Default: []

Note
This property has the MATLAB attribute Dependent set to true.
Matlab documentation of property attributes.

Definition at line 81 of file DEIM.m.

Referenced by computeDEIM(), and testing.DEIM.computeDEIMErrors().

general.DEIM.OrderUpdated

Gets fired whenever this DEIM instance has updated it's order matrices.

Events:
OrderUpdated

Definition at line 559 of file DEIM.m.

general.DEIM.pts
protected

Interpolation points.

See Also
getInterpolationPoints
Note
This property has non-standard access specifiers: SetAccess = Private, GetAccess = Protected
Matlab documentation of property attributes.

Definition at line 135 of file DEIM.m.

Referenced by clone(), computeDEIM(), getInterpolationPoints(), and updateOrderData().

general.DEIM.Residuals

The maximum residuals obtained along the magic points computation.

Note
This property has non-standard access specifiers: SetAccess = Private, GetAccess = Public
Matlab documentation of property attributes.

Definition at line 229 of file DEIM.m.

Referenced by getInterpolationPoints(), and plotSummary().

general.DEIM.SingularValues = "[]"

The singular values returned by the SVD decomposition to compute the DEIM POD basis.

This value is set when general.DEIM.computeDEIM is called.

Default: []

See Also
computeDEIM
Note
This property has non-standard access specifiers: SetAccess = Private, GetAccess = Public
Matlab documentation of property attributes.

Definition at line 102 of file DEIM.m.

Referenced by clone(), computeDEIM(), and plotSummary().

general.DEIM.u
protected

The full approximation base.

Note
This property has non-standard access specifiers: SetAccess = Private, GetAccess = Protected
Matlab documentation of property attributes.

Definition at line 122 of file DEIM.m.

Referenced by clone(), computeDEIM(), getInterpolationPoints(), and updateOrderData().

general.DEIM.U

The U matrix for the current Order.

Note
This property has non-standard access specifiers: SetAccess = Protected, GetAccess = Public
Matlab documentation of property attributes.

Definition at line 165 of file DEIM.m.

Referenced by clone(), evaluate(), evaluateMulti(), getStateJacobian(), general.MatrixDEIM.setSimilarityTransform(), and updateOrderData().

general.DEIM.U_nonproj

If projection is applied, this contains the non-projected full \(d \times m\) matrix \(U_m(P_m^tU_m)^{-1}\) for use in subclasses.

Note
This property has non-standard access specifiers: SetAccess = Protected, GetAccess = Public
Matlab documentation of property attributes.

Definition at line 178 of file DEIM.m.

Referenced by clone(), general.MatrixDEIM.setSimilarityTransform(), general.MatrixDEIM.updateOrderData(), and updateOrderData().

general.DEIM.Uerr1

Some matrices for M+M' error estimation.

Note
This property has non-standard access specifiers: SetAccess = Protected, GetAccess = Public
Matlab documentation of property attributes.

Definition at line 192 of file DEIM.m.

Referenced by clone(), getEstimatedError(), and updateOrderData().

general.DEIM.Uerr2

Definition at line 204 of file DEIM.m.

Referenced by clone(), getEstimatedError(), and updateOrderData().


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