pymor.reductors.residual

Module Contents

class pymor.reductors.residual.ImplicitEulerResidualOperator(operator, mass, rhs, dt, name=None)[source]

Bases: pymor.operators.interface.Operator

Instantiated by ImplicitEulerResidualReductor.

Methods

apply

Apply the operator to a VectorArray.

projected_to_subbasis

apply(self, U, U_old, mu=None)[source]

Apply the operator to a VectorArray.

Parameters

U

VectorArray of vectors to which the operator is applied.

mu

The parameter values for which to evaluate the operator.

Returns

VectorArray of the operator evaluations.

projected_to_subbasis(self, dim_range=None, dim_source=None, name=None)[source]
class pymor.reductors.residual.ImplicitEulerResidualReductor(RB, operator, mass, dt, rhs=None, product=None)[source]

Bases: pymor.core.base.BasicObject

Reduced basis residual reductor with mass operator for implicit Euler timestepping.

Given an operator, mass and a functional, the concatenation of residual operator with the Riesz isomorphism is given by:

riesz_residual.apply(U, U_old, mu)
    == product.apply_inverse(operator.apply(U, mu) + 1/dt*mass.apply(U, mu)
        - 1/dt*mass.apply(U_old, mu) - rhs.as_vector(mu))

This reductor determines a low-dimensional subspace of the image of a reduced basis space under riesz_residual using estimate_image_hierarchical, computes an orthonormal basis residual_range of this range space and then returns the Petrov-Galerkin projection

projected_riesz_residual
    == riesz_residual.projected(range_basis=residual_range, source_basis=RB)

of the riesz_residual operator. Given reduced basis coefficient vectors u and u_old, the dual norm of the residual can then be computed as

projected_riesz_residual.apply(u, u_old, mu).norm()

Moreover, a reconstruct method is provided such that

residual_reductor.reconstruct(projected_riesz_residual.apply(u, u_old, mu))
    == riesz_residual.apply(RB.lincomb(u), RB.lincomb(u_old), mu)

Parameters

operator

See definition of riesz_residual.

mass

The mass operator. See definition of riesz_residual.

dt

The time step size. See definition of riesz_residual.

rhs

See definition of riesz_residual. If None, zero right-hand side is assumed.

RB

VectorArray containing a basis of the reduced space onto which to project.

product

Inner product Operator w.r.t. which to compute the Riesz representatives.

Methods

reconstruct

Reconstruct high-dimensional residual vector from reduced vector u.

reduce

reconstruct(self, u)[source]

Reconstruct high-dimensional residual vector from reduced vector u.

reduce(self)[source]
class pymor.reductors.residual.NonProjectedImplicitEulerResidualOperator(operator, mass, rhs, dt, product)[source]

Bases: ImplicitEulerResidualOperator

Instantiated by ImplicitEulerResidualReductor.

Not to be used directly.

Methods

apply

Apply the operator to a VectorArray.

projected_to_subbasis

apply(self, U, U_old, mu=None)[source]

Apply the operator to a VectorArray.

Parameters

U

VectorArray of vectors to which the operator is applied.

mu

The parameter values for which to evaluate the operator.

Returns

VectorArray of the operator evaluations.

projected_to_subbasis(self, dim_range=None, dim_source=None, name=None)[source]
class pymor.reductors.residual.NonProjectedResidualOperator(operator, rhs, riesz_representatives, product)[source]

Bases: ResidualOperator

Instantiated by ResidualReductor.

Not to be used directly.

Methods

apply

Apply the operator to a VectorArray.

projected_to_subbasis

apply(self, U, mu=None)[source]

Apply the operator to a VectorArray.

Parameters

U

VectorArray of vectors to which the operator is applied.

mu

The parameter values for which to evaluate the operator.

Returns

VectorArray of the operator evaluations.

projected_to_subbasis(self, dim_range=None, dim_source=None, name=None)[source]
class pymor.reductors.residual.ResidualOperator(operator, rhs, name=None)[source]

Bases: pymor.operators.interface.Operator

Instantiated by ResidualReductor.

Methods

apply

Apply the operator to a VectorArray.

projected_to_subbasis

apply(self, U, mu=None)[source]

Apply the operator to a VectorArray.

Parameters

U

VectorArray of vectors to which the operator is applied.

mu

The parameter values for which to evaluate the operator.

Returns

VectorArray of the operator evaluations.

projected_to_subbasis(self, dim_range=None, dim_source=None, name=None)[source]
class pymor.reductors.residual.ResidualReductor(RB, operator, rhs=None, product=None, riesz_representatives=False)[source]

Bases: pymor.core.base.BasicObject

Generic reduced basis residual reductor.

Given an operator and a right-hand side, the residual is given by:

residual.apply(U, mu) == operator.apply(U, mu) - rhs.as_range_array(mu)

When operator maps to functionals instead of vectors, we are interested in the Riesz representative of the residual:

residual.apply(U, mu)
    == product.apply_inverse(operator.apply(U, mu) - rhs.as_range_array(mu))

Given a basis RB of a subspace of the source space of operator, this reductor uses estimate_image_hierarchical to determine a low-dimensional subspace containing the image of the subspace under residual (resp. riesz_residual), computes an orthonormal basis residual_range for this range space and then returns the Petrov-Galerkin projection

projected_residual
    == project(residual, range_basis=residual_range, source_basis=RB)

of the residual operator. Given a reduced basis coefficient vector u, w.r.t. RB, the (dual) norm of the residual can then be computed as

projected_residual.apply(u, mu).norm()

Moreover, a reconstruct method is provided such that

residual_reductor.reconstruct(projected_residual.apply(u, mu))
    == residual.apply(RB.lincomb(u), mu)

Parameters

RB

VectorArray containing a basis of the reduced space onto which to project.

operator

See definition of residual.

rhs

See definition of residual. If None, zero right-hand side is assumed.

product

Inner product Operator w.r.t. which to orthonormalize and w.r.t. which to compute the Riesz representatives in case operator maps to functionals.

riesz_representatives

If True compute the Riesz representative of the residual.

Methods

reconstruct

Reconstruct high-dimensional residual vector from reduced vector u.

reduce

reconstruct(self, u)[source]

Reconstruct high-dimensional residual vector from reduced vector u.

reduce(self)[source]