GridapROMs.RBSteady
GridapROMs.RBSteady.AbstractMDEIMReduction
— Typeabstract type AbstractMDEIMReduction{A} <: Reduction{A,EuclideanNorm} end
Type representing a hyper-reduction approximation by means of a MDEIM algorithm. Check this for more details on MDEIM. This reduction strategy is usually employed only for the approximation of a residual and/or Jacobian of a differential problem. Note that orthogonality with respect to a norm other than the euclidean is not required for this reduction type.
Subtypes:
GridapROMs.RBSteady.AbstractTTCore
— Typeabstract type AbstractTTCore{T,N} <: AbstractArray{T,N} end
Type for nonstandard representations of tensor train cores.
Subtypes:
GridapROMs.RBSteady.AdaptiveReduction
— Typestruct AdaptiveReduction{A,B,R<:DirectReduction{A,B}} <: GreedyReduction{A,B}
reduction::R
adaptive_nparams::Int
adaptive_tol::Float64
adaptive_maxiter::Int
end
Not implemented yet. Will serve as a parameter-adaptivity greedy reduction algorithm
GridapROMs.RBSteady.AffineContribution
— Typestruct AffineContribution{A,V,K} <: Contribution
Contribution whose values
assume one of the following types:
HyperReduction
for single field problemsBlockProjection
for multi field problems
GridapROMs.RBSteady.AffineReduction
— Typestruct AffineReduction{A,B} <: DirectReduction{A,B}
red_style::A
norm_style::B
end
Reduction employed when the input data is independent with respect to the considered realization. Therefore, simply considering a number of parameters equal to 1 suffices for this type of reduction
GridapROMs.RBSteady.BlockHyperReduction
— Typeconst BlockHyperReduction{A<:HyperReduction,N} = BlockProjection{A,N}
GridapROMs.RBSteady.BlockProjection
— Typestruct BlockProjection{A,N} <: Projection end
Block container for Projection of type A
in a MultiField
setting. This type is conceived similarly to ArrayBlock
in Gridap
GridapROMs.RBSteady.DirectReduction
— Typeabstract type DirectReduction{A,B} <: Reduction{A,B} end
Type representing direct reduction methods, e.g. truncated POD, TTSVD, etc.
Subtypes:
GridapROMs.RBSteady.DofMapCore
— Typestruct DofMapCore{T,A<:AbstractArray{T,3},B<:AbstractArray} <: AbstractTTCore{T,3}
core::A
dof_map::B
end
Represents a tensor train core core
reindexed by means of an index mapping dof_map
GridapROMs.RBSteady.EnergyNorm
— Typestruct EnergyNorm <: NormStyle
norm_op::Function
end
Trait indicating that the reduction algorithm will produce a basis orthogonal in the norm specified by norm_op
. Note: norm_op
should represent a symmetric, positive definite bilinear form (matrix)
GridapROMs.RBSteady.EuclideanNorm
— Typestruct EuclideanNorm <: NormStyle end
Trait indicating that the reduction algorithm will produce a basis orthogonal in the euclidean norm
GridapROMs.RBSteady.EvalRBSpace
— Typestruct EvalRBSpace{A<:RBSpace,B<:AbstractRealization} <: RBSpace
subspace::A
realization::B
end
Conceptually this isn't needed, but it helps dispatching according to steady/transient cases
GridapROMs.RBSteady.FixedSVDRank
— Typestruct FixedSVDRank <: ReductionStyle
rank::Int
end
Struct employed when the chosen reduction algorithm is a truncated POD at a rank rank
. Check this reference for more details on the truncated POD algorithm
GridapROMs.RBSteady.GenericRBOperator
— Typestruct GenericRBOperator{O,A} <: RBOperator{O}
op::ParamOperator{O}
trial::RBSpace
test::RBSpace
lhs::A
rhs::AffineContribution
end
Fields:
op
: underlying high dimensional FE operatortrial
: reduced trial spacetest
: reduced trial spacelhs
: hyper-reduced left hand siderhs
: hyper-reduced right hand side
GridapROMs.RBSteady.HRParamArray
— Typestruct HRParamArray{T,N,A,B,C<:ParamArray{T,N}} <: ParamArray{T,N}
fecache::A
coeff::B
hypred::C
end
Parametric vector returned after the online phase of a hyper-reduction strategy. Fields:
fecache
: represents a parametric residual/Jacobian computed via integration on anIntegrationDomain
coeff
: parameter-dependent coefficient computed during the online phase according to the formulacoeff = Φi⁻¹ fecache[i,:]
where
(Φi,i)
are the interpolation and the reduced integration domain stored in aHyperReduction
object.hypred
: the ouptut of the online phase of a hyper-reduction strategy, acoording to the formulahypred = Φrb * coeff
where
Φrb
is the basis stored in aHyperReduction
object
GridapROMs.RBSteady.HyperReduction
— Typeabstract type HyperReduction{
A<:Reduction,
B<:ReducedProjection,
C<:IntegrationDomain
} <: Projection end
Subtype of a Projection
dedicated to the outputd of a hyper-reduction (e.g. an empirical interpolation method (EIM)) procedure applied on residual/jacobians of a differential problem. This procedure can be summarized in the following steps:
- compute a snapshots tensor
T
- construct a
Projection
Φ
by running the functionreduction
onT
- find the EIM quantities
(Φi,i)
, by running the functionempirical_interpolation
on Φ
The triplet (Φ,Φi,i)
represents the minimum information needed to run the online phase of the hyper-reduction. However, we recall that a RB method requires the (Petrov-)Galerkin projection of residuals/Jacobianson a reduced subspace built from solution snapshots, instead of providing the projection Φ
we return the reduced projection Φrb
, where
- for residuals:
Φrb = test_basisᵀ Φ
- for Jacobians:
Φrb = test_basisᵀ Φ trial_basis
The output of this operation is a ReducedProjection. Therefore, a HyperReduction is completely characterized by the triplet (Φrb,Φi,i)
. Subtypes:
GridapROMs.RBSteady.IntegrationDomain
— Typeabstract type IntegrationDomain end
Type representing the set of interpolation rows of a Projection
subjected to a EIM approximation with empirical_interpolation
. Subtypes:
GridapROMs.RBSteady.InvProjection
— Typestruct InvProjection <: Projection
projection::Projection
end
Represents the inverse map of a Projection
projection
GridapROMs.RBSteady.LRApproxRank
— Typestruct LRApproxRank <: ReductionStyle
opts::LRAOptions
end
Struct employed when the chosen reduction algorithm is a randomized POD that leverages the package LowRankApprox
. The field opts
specifies the options needed to run the randomized POD
GridapROMs.RBSteady.LinearNonlinearRBOperator
— Typestruct LinearNonlinearRBOperator <: RBOperator{LinearNonlinearParamEq}
op_linear::RBOperator
op_nonlinear::RBOperator
end
Extends the concept of GenericRBOperator
to accommodate the linear/nonlinear splitting of terms in nonlinear applications
GridapROMs.RBSteady.MDEIM
— Typestruct MDEIM{A,B,C} <: HyperReduction{A,B,C}
reduction::A
basis::B
interpolation::Factorization
domain::C
end
HyperReduction
returned by a matrix-based empirical interpolation method
GridapROMs.RBSteady.MDEIMReduction
— Typestruct MDEIMReduction{A,R<:Reduction{A,EuclideanNorm}} <: AbstractMDEIMReduction{A}
reduction::R
end
MDEIM struct employed in steady problems
GridapROMs.RBSteady.MatrixDomain
— Typestruct MatrixDomain{T,S} <: IntegrationDomain
cells::Vector{Int32}
cell_irows::Table{T,Vector{T},Vector{Int32}}
cell_icols::Table{S,Vector{S},Vector{Int32}}
end
Integration domain for a projection vector operator in a steady problem
GridapROMs.RBSteady.MultiFieldRBSpace
— Typestruct MultiFieldRBSpace <: RBSpace
space::MultiFieldFESpace
subspace::BlockProjection
end
Reduced basis subspace of a MultiFieldFESpace
in Gridap
GridapROMs.RBSteady.NormStyle
— TypeGridapROMs.RBSteady.NormedProjection
— Typestruct NormedProjection <: Projection
projection::Projection
norm_matrix::MatrixOrTensor
end
Represents a Projection
projection
spanning a space equipped with an inner product represented by the quantity norm_matrix
GridapROMs.RBSteady.PODProjection
— Typestruct PODProjection <: Projection
basis::AbstractMatrix
end
Projection stemming from a truncated proper orthogonal decomposition tpod
GridapROMs.RBSteady.PODReduction
— Typestruct PODReduction{A,B} <: DirectReduction{A,B}
red_style::A
norm_style::B
nparams::Int
end
Reduction by means of a truncated POD. The field nparams
indicates the number of parameters selected for the computation of the snapshots
GridapROMs.RBSteady.Projection
— Typeabstract type Projection <: Map end
Represents a basis for a n
-dimensional vector subspace of a N
-dimensional vector space (where N >> n
), to be used as a Galerkin projection operator. The kernel of a Projection is n
-dimensional, whereas its image is N
-dimensional.
Subtypes:
GridapROMs.RBSteady.RBOperator
— Typeabstract type RBOperator{O} <: ParamOperator{O,SplitDomains} end
Type representing reduced algebraic operators used within a reduced order modelling framework in steady applications. A RBOperator should contain the following information:
- a reduced test and trial space, computed according to
reduced_spaces
- a hyper-reduced residual and jacobian, computed according to
reduced_weak_form
Subtypes:
GridapROMs.RBSteady.RBParamVector
— Typestruct RBParamVector{T,A<:ParamVector{T},B} <: ParamArray{T,1}
data::A
fe_data::B
end
Parametric vector obtained by applying a Projection
on a high-dimensional parametric FE vector fe_data
, which is stored (but mostly unused) for conveniency
GridapROMs.RBSteady.RBSolver
— Typestruct RBSolver{A<:GridapType,B} <: GridapType
fesolver::A
state_reduction::Reduction
residual_reduction::Reduction
jacobian_reduction::B
end
Wrapper around a FE solver (e.g. NonlinearSolver
or ODESolver
in Gridap
) with additional information on the reduced basis (RB) method employed to solve a given problem dependent on a set of parameters. A RB method is a projection-based reduced order model where
- a suitable subspace of a FESpace is sought, of dimension n << Nₕ
- a matrix-based discrete empirical interpolation method (MDEIM) is performed
to approximate the manifold of the parametric residuals and jacobians
- the EIM approximations are compressed with (Petrov-)Galerkin projections
onto the subspace
- for every desired choice of parameters, numerical integration is performed, and
the resulting n × n system of equations is cheaply solved
In particular:
- tol: tolerance used in the projection-based truncated proper orthogonal decomposition (TPOD) or in the tensor train singular value decomposition (TT-SVD), where a basis spanning the reduced subspace is computed; the value of tol is responsible for selecting the dimension of the subspace, i.e. n = n(tol)
- nparams_state: number of snapshots considered when running TPOD or TT-SVD
- nparams_res: number of snapshots considered when running MDEIM for the residual
- nparams_jac: number of snapshots considered when running MDEIM for the jacobian
- nparams_test: number of snapshots considered when computing the error the RB method commits with respect to the FE procedure
GridapROMs.RBSteady.RBSpace
— Typeabstract type RBSpace <: FESpace end
Represents a vector subspace of a FESpace
.
Subtypes:
GridapROMs.RBSteady.RBVector
— Typestruct RBVector{T,A<:AbstractVector{T},B} <: AbstractVector{T}
data::A
fe_data::B
end
Vector obtained by applying a Projection
on a high-dimensional FE vector fe_data
, which is stored (but mostly unused) for conveniency
GridapROMs.RBSteady.ROMPerformance
— Typestruct ROMPerformance
error
speedup
end
Allows to compute errors and computational speedups to compare the properties of the algorithm with the FE performance.
GridapROMs.RBSteady.ReducedAlgebraicProjection
— TypeGridapROMs.RBSteady.ReducedProjection
— Typeabstract type ReducedProjection{A<:AbstractArray} <: Projection end
Type representing a Galerkin projection of a Projection
onto a reduced subspace represented by another Projection
.
Subtypes:
GridapROMs.RBSteady.Reduction
— Typeabstract type Reduction{A<:ReductionStyle,B<:NormStyle} end
Type indicating the reduction strategy to employ, and the information regarding the norm with respect to which the reduction should occur.
Subtypes:
GridapROMs.RBSteady.ReductionStyle
— Typeabstract type ReductionStyle end
Type indicating the reduction strategy to employ.
Subtypes:
GridapROMs.RBSteady.SearchSVDRank
— Typestruct SearchSVDRank <: ReductionStyle
tol::Float64
end
Struct employed when the chosen reduction algorithm is a truncated POD at a tolerance tol
. Check this reference for more details on the truncated POD algorithm
GridapROMs.RBSteady.SingleFieldRBSpace
— Typestruct SingleFieldRBSpace <: RBSpace
space::SingleFieldFESpace
subspace::Projection
end
Reduced basis subspace of a SingleFieldFESpace
in Gridap
GridapROMs.RBSteady.SparseCore
— Typeabstract type SparseCore{T,N} <: AbstractTTCore{T,N} end
Tensor train cores for sparse matrices.
Subtypes:
GridapROMs.RBSteady.SparseCoreCSC
— Typestruct SparseCoreCSC{T,Ti} <: SparseCore{T,3}
array::Array{T,3}
sparsity::SparsityCSC{T,Ti}
end
Tensor train cores for sparse matrices in CSC format
GridapROMs.RBSteady.SparseCoreCSC4D
— Typestruct SparseCoreCSC4D{T,Ti} <: SparseCore{T,4}
core::SparseCoreCSC{T,Ti}
sparse_indexes::Vector{CartesianIndex{2}}
end
Tensor train cores for sparse matrices in CSC format, reshaped as 4D arrays
GridapROMs.RBSteady.SupremizerReduction
— Typestruct SupremizerReduction{A,R<:Reduction{A,EnergyNorm}} <: Reduction{A,EnergyNorm}
reduction::R
supr_op::Function
supr_tol::Float64
end
Wrapper for reduction methods reduction
that require an additional step of stabilization, by means of a supremizer enrichment. Check this for more details in a steady setting, and this for more details in a transient setting. The fields supr_op
and supr_tol
(which is only needed only in transient applications) are respectively the supremizing operator and the tolerance involved in the enrichment. For a saddle point problem with a Jacobian of the form
[ A Bᵀ B 0 ]
this operator is given by the bilinear form representing the matrix Bᵀ.
GridapROMs.RBSteady.TTSVDProjection
— Typestruct TTSVDProjection <: Projection
cores::AbstractVector{<:AbstractArray{T,3} where T}
dof_map::AbstractDofMap
end
Projection stemming from a tensor train SVD ttsvd
. For reindexing purposes a field dof_map
is provided along with the tensor train cores cores
GridapROMs.RBSteady.TTSVDRanks
— Typestruct TTSVDRanks{T<:TTSVDStyle} <: ReductionStyle
style::Vector{<:ReductionStyle}
unsafe::T
end
Struct employed when the chosen reduction algorithm is a TTSVD, with reduction algorithm at each step specified in the vector of reduction styles style
. Check this reference for more details on the TTSVD algorithm
GridapROMs.RBSteady.TTSVDReduction
— Typestruct TTSVDReduction{B} <: DirectReduction{TTSVDRanks,B}
red_style::TTSVDRanks
norm_style::B
nparams::Int
end
Reduction by means of a TTSVD. The field nparams
indicates the number of parameters selected for the computation of the snapshots
GridapROMs.RBSteady.TrivialHyperReduction
— Typestruct TrivialHyperReduction{A,B} <: HyperReduction{A,B,IntegrationDomain}
reduction::A
basis::B
end
Trivial hyper-reduction returned whenever the residual/Jacobian is zero
GridapROMs.RBSteady.VectorDomain
— Typestruct VectorDomain{T} <: IntegrationDomain
cells::Vector{Int32}
cell_irows::Table{T,Vector{T},Vector{Int32}}
end
Integration domain for a projection vector operator in a steady problem
GridapROMs.RBSteady.allocate_hypred_cache
— MethodGridapROMs.RBSteady.contraction
— Methodcontraction(Φₗₖ::AbstractArray{T,3},Aₖ::AbstractArray{T,3}) -> AbstractArray{T,4}
contraction(Φₗₖ::AbstractArray{T,3},Aₖ::AbstractArray{T,3},Φᵣₖ::AbstractArray{T,3}) -> AbstractArray{T,6}
Contraction of tensor train cores, as a result of a (Petrov-)Galerkin projection. The contraction of Aₖ
by Φₗₖ
is the left-contraction of a TT core Aₖ
by a (left, test) TT core Φₗₖ
, whereas the contraction of Aₖ
by Φᵣₖ
is the right-contraction of a TT core Aₖ
by a (right, trial) TT core Φᵣₖ
. The dimension of the output of a contraction involving N
factors is: 3N - N = 2N
.
GridapROMs.RBSteady.contraction
— Methodcontraction(basis::AbstractArray,coefficient::AbstractArray) -> AbstractArray
Multiplies a reduced basis basis
by a set of reduced coeffiecients coefficient
. It acts as a generalized linear combination, since basis
might have a dimension higher than 2.
GridapROMs.RBSteady.cores2basis
— Methodcores2basis(cores::AbstractArray{T,3}...) -> AbstractMatrix
cores2basis(dof_map::AbstractDofMap{D},cores::AbstractArray{T,3}...) -> AbstractMatrix
Returns a basis in a matrix format from a list of tensor train cores cores
. When also supplying the indexing strategy dof_map
, the result is reindexed accordingly
GridapROMs.RBSteady.create_dir
— Methodcreate_dir(dir::String) -> Nothing
Recursive creation of a directory dir
; does not do anything if dir
exists
GridapROMs.RBSteady.empirical_interpolation
— Methodempirical_interpolation(a::Projection) -> (AbstractVector,AbstractMatrix)
Computes the EIM of a
. The outputs are:
- a vector of integers
i
, corresponding to a list of interpolation row indices - a matrix
Φi = view(Φ,i)
, whereΦ = get_basis(a)
. This quantity represents the restricted basis on the set of interpolation rowsi
GridapROMs.RBSteady.enrich!
— Methodenrich!(
red::SupremizerReduction,
a::BlockProjection,
norm_matrix::MatrixOrTensor,
supr_matrix::MatrixOrTensor) -> Nothing
In-place augmentation of the primal block of a BlockProjection
a
. This function has the purpose of stabilizing the reduced equations stemming from a saddle point problem
GridapROMs.RBSteady.eval_performance
— Methodeval_performance(
solver::RBSolver,
feop::ParamOperator,
fesnaps::AbstractSnapshots,
rbsnaps::AbstractSnapshots,
festats::CostTracker,
rbstats::CostTracker
) -> ROMPerformance
Arguments:
solver
: solver for the reduced problemfeop
: FE operator representing the PDEfesnaps
: online snapshots of the FE solutionrbsnaps
: reduced approximation offesnaps
festats
: time and memory consumption needed to computefesnaps
rbstats
: time and memory consumption needed to computerbsnaps
Returns the performance of the reduced algorithm, in terms of the (relative) error between rbsnaps
and fesnaps
, and the computational speedup between rbstats
and festats
GridapROMs.RBSteady.galerkin_projection
— Methodgalerkin_projection(Φₗ,A) -> Any
galerkin_projection(Φₗ,A,Φᵣ) -> Any
Galerkin projection of A
on the subspaces specified by a (left, test) subspace Φₗ
(row projection) and a (right, trial) subspace Φᵣ
(column projection)
GridapROMs.RBSteady.galerkin_projection
— Methodgalerkin_projection(a::Projection,b::Projection) -> ReducedProjection
galerkin_projection(a::Projection,b::Projection,c::Projection,args...) -> ReducedProjection
(Petrov) Galerkin projection of a projection map b
onto the subspace a
(row projection) and, if applicable, onto the subspace c
(column projection)
GridapROMs.RBSteady.get_basis
— Methodget_basis(a::Projection) -> AbstractMatrix
Returns the basis spanning the reduced subspace represented by the projection a
GridapROMs.RBSteady.get_dofs_to_cells
— Methodget_dofs_to_cells(
cell_dof_ids::AbstractArray{<:AbstractArray},
dofs::AbstractVector
) -> AbstractVector
Returns the list of cells containing the dof ids dofs
GridapROMs.RBSteady.get_fe_solver
— Methodget_fe_solver(s::RBSolver) -> NonlinearSolver
Returns the underlying NonlinearSolver
from a RBSolver
s
GridapROMs.RBSteady.get_integration_domain
— Methodget_integration_domain(a::HyperReduction) -> IntegrationDomain
For a HyperReduction
a
represented by the triplet (Φrb,Φi,i)
, returns i
GridapROMs.RBSteady.get_interpolation
— Methodget_interpolation(a::HyperReduction) -> Factorization
For a HyperReduction
a
represented by the triplet (Φrb,Φi,i)
, returns Φi
, usually stored as a Factorization
GridapROMs.RBSteady.get_reduced_subspace
— Methodget_reduced_subspace(r::RBSpace) -> Projection
Returns the Projection
spanning the reduced subspace contained in r
GridapROMs.RBSteady.gram_schmidt
— Methodgram_schmidt(A::AbstractMatrix,args...) -> AbstractMatrix
gram_schmidt(A::AbstractMatrix,X::AbstractSparseMatrix,args...) -> AbstractMatrix
Gram-Schmidt orthogonalization for a matrix A
under a Euclidean norm. A (positive definite) sparse matrix X
representing an inner product on the row space of A
can be provided to make the result orthogonal under a different norm
GridapROMs.RBSteady.inv_project!
— Methodinv_project!(x::AbstractArray,a::Projection,x̂::AbstractArray) -> Nothing
In-place recasting of a low-dimensional object x̂
the high-dimensional space in which a
is immersed
GridapROMs.RBSteady.inv_project
— Methodinv_project(a::Projection,x::AbstractArray) -> AbstractArray
Recasts a low-dimensional object x
onto the high-dimensional space in which a
is immersed
GridapROMs.RBSteady.jacobian_snapshots
— Methodjacobian_snapshots(solver::RBSolver,op::ParamOperator,s::AbstractSnapshots;nparams) -> Contribution
jacobian_snapshots(solver::RBSolver,op::ODEParamOperator,s::AbstractSnapshots;nparams) -> Tuple{Vararg{Contribution}}
Returns a Jacobian Contribution
relative to the FE operator op
. The quantity s
denotes the solution snapshots in which we evaluate the jacobian. Note that we can select a smaller number of parameters nparams
compared to the number of parameters used to compute s
. In transient settings, the output is a tuple whose n
th element is the Jacobian relative to the n
th temporal derivative
GridapROMs.RBSteady.load_contribution
— MethodGridapROMs.RBSteady.load_jacobians
— MethodGridapROMs.RBSteady.load_operator
— Methodload_operator(dir,feop::ParamOperator;kwargs...) -> RBOperator
Given a FE operator feop
, load its reduced counterpart stored in the directory dir
. Throws an error if the reduced operator has not been previously saved to file
GridapROMs.RBSteady.load_reduced_subspace
— MethodGridapROMs.RBSteady.load_residuals
— MethodGridapROMs.RBSteady.load_results
— MethodGridapROMs.RBSteady.load_snapshots
— Methodload_snapshots(dir;label="") -> AbstractSnapshots
Load the snapshots at the directory dir
. Throws an error if the snapshots have not been previously saved to file
GridapROMs.RBSteady.num_fe_dofs
— Methodnum_fe_dofs(a::Projection) -> Int
For a projection map a
from a low dimensional space n
to a high dimensional one N
, returns N
GridapROMs.RBSteady.num_reduced_dofs
— Methodnum_reduced_dofs(a::Projection) -> Int
For a projection map a
from a low dimensional space n
to a high dimensional one N
, returns n
GridapROMs.RBSteady.orth_complement!
— Methodorth_complement!(v::AbstractVector,basis::AbstractMatrix,args...) -> Nothing
In-place orthogonal complement of v
on the column space of basis
. When a symmetric, positive definite matrix X
is provided as an argument, the output is X
-orthogonal, otherwise it is ℓ²-orthogonal
GridapROMs.RBSteady.orth_projection
— Methodorth_projection(v::AbstractVector, basis::AbstractMatrix, args...) -> AbstractVector
Orthogonal projection of v
on the column space of basis
. When a symmetric, positive definite matrix X
is provided as an argument, the output is X
-orthogonal, otherwise it is ℓ²-orthogonal
GridapROMs.RBSteady.plot_a_solution
— Methodplot_a_solution(
dir::String,
feop::ParamOperator,
sol::AbstractSnapshots,
sol_approx::AbstractSnapshots,
args...;
kwargs...
) -> Nothing
Plots a single FE solution, RB solution, and the point-wise error between the two, by selecting the first FE snapshot in sol
and the first reduced snapshot in sol_approx
GridapROMs.RBSteady.project!
— Methodproject!(x̂::AbstractArray,a::Projection,x::AbstractArray,args...) -> Nothing
In-place projection of a high-dimensional object x
onto the subspace represented by a
GridapROMs.RBSteady.project
— Methodproject(a::Projection,x::AbstractArray,args...) -> AbstractArray
Projects a high-dimensional object x
onto the subspace represented by a
GridapROMs.RBSteady.projection
— Methodprojection(red::Reduction,s::AbstractArray) -> Projection
projection(red::Reduction,s::AbstractArray,X::MatrixOrTensor) -> Projection
Constructs a Projection
from a collection of snapshots s
. An inner product represented by the quantity X
can be provided, in which case the resulting Projection
will be X
-orthogonal
GridapROMs.RBSteady.reduced_basis
— Methodreduced_basis(red::Reduction,s::AbstractSnapshots,args...) -> Projection
Computes the basis by compressing the snapshots s
GridapROMs.RBSteady.reduced_jacobian
— Methodreduced_jacobian(
solver::RBSolver,
op::ParamOperator,
red_trial::RBSpace,
red_test::RBSpace,
s::AbstractSnapshots
) -> Union{AffineContribution,TupOfAffineContribution}
Reduces the Jacobian contained in op
via hyper-reduction. This function first builds the Jacobian snapshots, which are then reduced according to the strategy reduced_jacobian
specified in the reduced solver solver
. In transient applications, the output is a tuple of length equal to the number of Jacobians(i.e., equal to the order of the ODE plus one)
GridapROMs.RBSteady.reduced_operator
— Methodreduced_operator(solver::RBSolver,feop::ParamOperator,args...;kwargs...) -> RBOperator
reduced_operator(solver::RBSolver,feop::TransientParamOperator,args...;kwargs...) -> TransientRBOperator
Computes a RB operator from the FE operator feop
GridapROMs.RBSteady.reduced_residual
— Methodreduced_residual(
solver::RBSolver,
op::ParamOperator,
red_test::RBSpace,
s::AbstractSnapshots
) -> AffineContribution
Reduces the residual contained in op
via hyper-reduction. This function first builds the residual snapshots, which are then reduced according to the strategy residual_reduction
specified in the reduced solver solver
GridapROMs.RBSteady.reduced_spaces
— Methodreduced_spaces(solver::RBSolver,feop::ParamOperator,s::AbstractSnapshots
) -> (RBSpace, RBSpace)
Computes the subspace of the test, trial FESpace
s contained in the FE operator feop
by compressing the snapshots s
GridapROMs.RBSteady.reduced_subspace
— Methodreduced_subspace(space::FESpace,basis::Projection) -> RBSpace
Generic constructor of a RBSpace
from a FESpace
space
and a projection basis
GridapROMs.RBSteady.reduced_triangulation
— Methodreduced_triangulation(trian::Triangulation,a::HyperReduction)
Returns the triangulation view of trian
on the integration cells contained in a
GridapROMs.RBSteady.reduced_weak_form
— Methodreduced_weak_form(
solver::RBSolver,
op::ParamOperator,
red_trial::RBSpace,
red_test::RBSpace,
s::AbstractSnapshots
) -> (AffineContribution,Union{AffineContribution,TupOfAffineContribution})
Reduces the residual/Jacobian contained in op
via hyper-reduction. Check the functions reduced_residual
and reduced_jacobian
for more details
GridapROMs.RBSteady.reduction
— Methodreduction(red::Reduction,A::AbstractArray,args...) -> AbstractArray
reduction(red::Reduction,A::AbstractArray,X::AbstractSparseMatrix) -> AbstractArray
Given an array (of snapshots) A
, returns a reduced basis obtained by means of the reduction strategy red
GridapROMs.RBSteady.residual_snapshots
— Methodresidual_snapshots(solver::RBSolver,op::ParamOperator,s::AbstractSnapshots;nparams) -> Contribution
residual_snapshots(solver::RBSolver,op::ODEParamOperator,s::AbstractSnapshots;nparams) -> Contribution
Returns a residual Contribution
relative to the FE operator op
. The quantity s
denotes the solution snapshots in which we evaluate the residual. Note that we can select a smaller number of parameters nparams
compared to the number of parameters used to compute s
GridapROMs.RBSteady.sequential_product
— Methodsequential_product(a::AbstractArray,b::AbstractArray...) -> AbstractArray
This function sequentially multiplies the results of several (sequential as well) calls to contraction
GridapROMs.RBSteady.solution_snapshots
— Methodsolution_snapshots(solver::NonlinearSolver,feop::ParamOperator,r::Realization) -> SteadySnapshots
solution_snapshots(solver::ODESolver,feop::TransientParamOperator,r::TransientRealization,u0) -> TransientSnapshots
The problem encoded in the FE operator feop
is solved several times, and the solution snapshots are returned along with the information related to the computational cost of the FE method. In transient settings, an initial condition u0
should be provided.
GridapROMs.RBSteady.tpod
— Methodtpod(red_style::ReductionStyle,A::AbstractMatrix) -> AbstractMatrix
tpod(red_style::ReductionStyle,A::AbstractMatrix,X::AbstractSparseMatrix) -> AbstractMatrix
Truncated proper orthogonal decomposition of A
. When provided, X
is a (symmetric, positive definite) norm matrix with respect to which the output is made orthogonal. If X
is not provided, the output is orthogonal with respect to the euclidean norm
GridapROMs.RBSteady.ttsvd
— Methodttsvd(red_style::TTSVDRanks,A::AbstractArray) -> AbstractVector{<:AbstractArray}
ttsvd(red_style::TTSVDRanks,A::AbstractArray,X::AbstractRankTensor) -> AbstractVector{<:AbstractArray}
Tensor train SVD of A
. When provided, X
is a norm tensor (representing a symmetric, positive definite matrix) with respect to which the output is made orthogonal. Note: if ndims(A)
= N, the length of the ouptput is N-1
, since we are not interested in reducing the axis of the parameters. Check this reference for more details
GridapROMs.RBSteady.union_bases
— Methodunion_bases(a::Projection,b::Projection,args...) -> Projection
Computes the projection corresponding to the union of a
and b
. In essence this operation performs as
gram_schmidt(union(get_basis(a),get_basis(b)))