GridapROMs.TProduct
GridapROMs.TProduct.MatrixOrTensor
— Typeconst MatrixOrTensor = Union{AbstractMatrix,AbstractRankTensor}
GridapROMs.TProduct.AbstractRankTensor
— Typeabstract type AbstractRankTensor{D,K} end
Type representing a tensor a
of dimension D
and rank K
, i.e. assuming the form
$a = \sum\limits_{k=1}^K a_1^k \otimes \cdots \otimes a_D^k$
Subtypes:
GridapROMs.TProduct.BlockRankTensor
— Typestruct BlockRankTensor{A<:AbstractRankTensor,N} <: AbstractArray{A,N}
array::Array{A,N}
end
Multi-field version of a AbstractRankTensor
GridapROMs.TProduct.GenericRankTensor
— Typestruct GenericRankTensor{D,K,A<:AbstractArray} <: AbstractRankTensor{D,K}
decompositions::Vector{Rank1Tensor{D,A}}
end
Structure representing a generic rank-K tensor, i.e. assuming the form
$a = \sum\limits_{k=1}^K a_1^k \otimes \cdots \otimes a_D^k$
GridapROMs.TProduct.Rank1Tensor
— Typestruct Rank1Tensor{D,A<:AbstractArray} <: AbstractRankTensor{D,1}
factors::Vector{A}
end
Structure representing rank-1 tensors, i.e. assuming the form
$a = a_1 \otimes \cdots \otimes a_D$
GridapROMs.TProduct.TProductDiscreteModel
— TypeTProductDiscreteModel{D,A,B} <: DiscreteModel{D,D} end
Tensor product discrete model, storing a vector of 1-D models models_1d
of length D, and the D-dimensional model model
defined as their tensor product.
GridapROMs.TProduct.TProductFESpace
— Typestruct TProductFESpace{S} <: SingleFieldFESpace
space::S
spaces_1d::Vector{<:SingleFieldFESpace}
trian::TProductTriangulation
end
Tensor product single field FESpace
, storing a vector of 1-D FESpace
s spaces_1d
of length D, and the D-dimensional FESpace
space
defined as their tensor product. The tensor product triangulation trian
is provided as a field to avoid incompatibility issues when passing to MultiField
scenarios
GridapROMs.TProduct.TProductMeasure
— Typestruct TProductMeasure{A,B} <: Measure
measure::A
measures_1d::B
end
Tensor product measure, storing a vector of 1-D measures measures_1d
of length D, and the D-dimensional measure measure
defined as their tensor product.
GridapROMs.TProduct.TProductSparseMatrixAssembler
— TypeTProductSparseMatrixAssembler{A<:SparseMatrixAssembler} <: SparseMatrixAssembler
Assembly-related information when constructing a AbstractRankTensor
GridapROMs.TProduct.TProductTriangulation
— TypeTProductTriangulation{Dt,Dp,A,B,C} <: Triangulation{Dt,Dp}
Tensor product triangulation, storing a tensor product model, a vector of 1-D triangulations trians_1d
of length D, and the D-dimensional triangulation trian
defined as their tensor product.
GridapROMs.TProduct.TProductBlockSparseMatrixAssembler
— MethodTProductBlockSparseMatrixAssembler(trial::MultiFieldFESpace,test::MultiFieldFESpace
) -> TProductSparseMatrixAssembler
Returns a TProductSparseMatrixAssembler
in a MultiField scenario
GridapROMs.TProduct.get_1d_tags
— Methodget_1d_tags(model::TProductDiscreteModel,tags) -> Vector{Vector{Int8}}
Fetches the tags of the tensor product 1D models corresponding to the tags of the D
-dimensional model tags
. The length of the output is D
GridapROMs.TProduct.get_decomposition
— Methodget_decomposition(a::AbstractRankTensor,k::Integer) -> Vector{<:AbstractArray}
For a tensor a
of dimension D
and rank K
assuming the form
$a = \sum\limits_{k=1}^K a_1^k \otimes \cdots \otimes a_D^k$
returns the decomposition relative to the k
th rank:
$[a_1^k, \hdots , a_D^k]$
GridapROMs.TProduct.get_tp_fe_basis
— Methodget_tp_fe_basis(f::TProductFESpace) -> TProductFEBasis
GridapROMs.TProduct.get_tp_trial_fe_basis
— Methodget_tp_trial_fe_basis(f::TProductFESpace) -> TProductFEBasis
GridapROMs.TProduct.tproduct_array
— Methodtproduct_array(arrays_1d::Vector{<:AbstractArray}) -> Rank1Tensor
tproduct_array(op,arrays_1d::Vector{<:AbstractArray},gradients_1d::Vector{<:AbstractArray},args...) -> GenericRankTensor
Returns a AbstractRankTensor
storing the arrays arrays_1d
(usually matrices) arising from an integration routine on D 1-d triangulations whose tensor product gives a D-dimensional triangulation. In the absence of the field gradients_1d
, the output is a Rank1Tensor
; when provided, the output is a GenericRankTensor
tproduct_array(arrays_1d::Vector{<:BlockArray}) -> BlockRankTensor
tproduct_array(op,arrays_1d::Vector{<:BlockArray},gradients_1d::Vector{<:BlockArray},args...) -> BlockRankTensor
Generalization of the previous functions to multi-field scenarios