GridapROMs.ParamDataStructures

GridapROMs.ParamDataStructures.AbstractSnapshotsType
abstract type AbstractSnapshots{T,N} <: AbstractParamData{T,N} end

Type representing N-dimensional arrays of snapshots. Subtypes must contain the following information:

  • data: a (parametric) array
  • realization: a subtype of AbstractRealization, representing the points in the parameter space used to compute the array data
  • dof map: a subtype of AbstractDofMap, representing a reindexing strategy for the array data

Subtypes:

source
GridapROMs.ParamDataStructures.ArrayOfArraysType
struct ArrayOfArrays{T,N,A<:AbstractArray{T,N}} <: ParamArray{T,N}
  data::Vector{A}
end

Parametric array with entries stored non-consecutively in memory. It is characterized by an inner size equal to size(data[1]), and parametric length equal to length(data), where data is a Vector{<:AbstractArray}

source
GridapROMs.ParamDataStructures.BlockSnapshotsType
struct BlockSnapshots{S<:Snapshots,N} <: AbstractSnapshots{S,N}
  array::Array{S,N}
  touched::Array{Bool,N}
end

Block container for Snapshots of type S in a MultiField setting. This type is conceived similarly to ArrayBlock in Gridap

source
GridapROMs.ParamDataStructures.ConsecutiveParamArrayType
struct ConsecutiveParamArray{T,N,M,A<:AbstractArray{T,M}} <: ParamArray{T,N}
  data::A
end

Parametric array with entries stored consecutively in memory. It is characterized by an inner size equal to size(data)[1:N], and parametric length equal to size(data,N+1), where data is an AbstractArray of dimension M = N+1

source
GridapROMs.ParamDataStructures.ConsecutiveParamSparseMatrixCSCType
struct ConsecutiveParamSparseMatrixCSC{Tv,Ti<:Integer} <: ParamSparseMatrixCSC{Tv,Ti}
  m::Int64
  n::Int64
  colptr::Vector{Ti}
  rowval::Vector{Ti}
  data::Matrix{Tv}
end

Represents a vector of sparse matrices in CSC format, with entries stored consecutively in memory. For sake of coherence, an instance of ConsecutiveParamSparseMatrixCSC inherits from AbstractMatrix{<:SparseMatrixCSC{Tv,Ti} rather than AbstractVector{<:SparseMatrixCSC{Tv,Ti}, but should conceptually be thought as an AbstractVector{<:SparseMatrixCSC{Tv,Ti}.

source
GridapROMs.ParamDataStructures.ConsecutiveParamSparseMatrixCSRType
struct ConsecutiveParamSparseMatrixCSR{Bi,Tv,Ti<:Integer} <: ParamSparseMatrixCSR{Bi,Tv,Ti}
  m::Int64
  n::Int64
  rowptr::Vector{Ti}
  colval::Vector{Ti}
  data::Matrix{Tv}
end

Represents a vector of sparse matrices in CSR format, with entries stored consecutively in memory. For sake of coherence, an instance of ConsecutiveParamSparseMatrixCSR inherits from AbstractMatrix{<:SparseMatrixCSR{Bi,Tv,Ti} rather than AbstractVector{<:SparseMatrixCSR{Bi,Tv,Ti}, but should conceptually be thought as an AbstractVector{<:SparseMatrixCSR{Bi,Tv,Ti}.

source
GridapROMs.ParamDataStructures.GenericParamSparseMatrixCSCType
struct GenericParamSparseMatrixCSC{Tv,Ti<:Integer} <: ParamSparseMatrixCSC{Tv,Ti}
  m::Int64
  n::Int64
  colptr::Vector{Ti}
  rowval::Vector{Ti}
  data::Vector{Tv}
  ptrs::Vector{Ti}
end

Represents a vector of sparse matrices in CSC format, with entries stored non-consecutively in memory. For sake of coherence, an instance of GenericParamSparseMatrixCSC inherits from AbstractMatrix{<:SparseMatrixCSC{Tv,Ti} rather than AbstractVector{<:SparseMatrixCSC{Tv,Ti}, but should conceptually be thought as an AbstractVector{<:SparseMatrixCSC{Tv,Ti}.

source
GridapROMs.ParamDataStructures.GenericParamSparseMatrixCSRType
struct GenericParamSparseMatrixCSR{Bi,Tv,Ti<:Integer} <: ParamSparseMatrixCSR{Bi,Tv,Ti}
  m::Int64
  n::Int64
  rowptr::Vector{Ti}
  colval::Vector{Ti}
  data::Vector{Tv}
  ptrs::Vector{Ti}
end

Represents a vector of sparse matrices in CSR format, with entries stored non-consecutively in memory. For sake of coherence, an instance of GenericParamSparseMatrixCSR inherits from AbstractMatrix{<:SparseMatrixCSR{Bi,Tv,Ti} rather than AbstractVector{<:SparseMatrixCSR{Bi,Tv,Ti}, but should conceptually be thought as an AbstractVector{<:SparseMatrixCSR{Bi,Tv,Ti}.

source
GridapROMs.ParamDataStructures.HaltonSamplingType
struct HaltonSampling <: SamplingStyle end

Sampling according to a Halton sequence

Note

Halton is a sequence, not a distribution, hence this sampling strategy repeats realizations since the draws are not randomized; to draw different parameters, one needs to provide a starting point in the sequence (start = 1 by default)

source
GridapROMs.ParamDataStructures.ModeTransientSnapshotsType
struct ModeTransientSnapshots{M<:ModeAxes,T,I,R,A<:UnfoldingTransientSnapshots{T,I,R}} <: TransientSnapshots{T,2,1,I,R,A}
  snaps::A
  mode::M
end

Represents a TransientSnapshots with a TrivialDofMap indexing strategy as an AbstractMatrix with a system of mode-unfolding representations. Only two mode-unfolding representations are considered:

Mode1Axes:

[u(x1,t1,μ1) ⋯ u(x1,t1,μP) u(x1,t2,μ1) ⋯ u(x1,t2,μP) u(x1,t3,μ1) ⋯ ⋯ u(x1,tT,μ1) ⋯ u(x1,tT,μP)] ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ u(xN,t1,μ1) ⋯ u(xN,t1,μP) u(xN,t2,μ1) ⋯ u(xN,t2,μP) u(xN,t3,μ1) ⋯ ⋯ u(xN,tT,μ1) ⋯ u(xN,tT,μP)]

Mode2Axes:

[u(x1,t1,μ1) ⋯ u(x1,t1,μP) u(x2,t1,μ1) ⋯ u(x2,t1,μP) u(x3,t1,μ1) ⋯ ⋯ u(xN,t1,μ1) ⋯ u(xN,t1,μP)] ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ u(x1,tT,μ1) ⋯ u(x1,tT,μP) u(x2,tT,μ1) ⋯ u(x2,tT,μP) u(x3,tT,μ1) ⋯ ⋯ u(xN,tT,μ1) ⋯ u(xN,tT,μP)]

source
GridapROMs.ParamDataStructures.ParamArrayType
abstract type ParamArray{T,N} <: AbstractParamArray{T,N,Array{T,N}} end

Type representing parametric arrays of type A. Subtypes:

Also acts as a constructor according to the following rules:

  • ParamArray(A::AbstractArray{<:Number}) -> ParamNumber
  • ParamArray(A::AbstractArray{<:Number},plength::Int) -> TrivialParamArray
  • ParamArray(A::AbstractVector{<:AbstractArray}) -> ParamArray
  • ParamArray(A::AbstractVector{<:AbstractSparseMatrix}) -> ParamSparseMatrix
  • ParamArray(A::AbstractArray{<:ParamArray}) -> BlockParamArray
source
GridapROMs.ParamDataStructures.ParamFunctionType
struct ParamFunction{F,P} <: AbstractParamFunction{P}
  fun::F
  params::P
end

Representation of parametric functions with domain a parametric space. Given a function f : Ω₁ × ... × Ωₙ × D, where D is a ParamSpace, the evaluation of f in μ ∈ D returns the restriction of f to Ω₁ × ... × Ωₙ

source
GridapROMs.ParamDataStructures.ParamSpaceType
struct ParamSpace{P<:AbstractVector{<:AbstractVector},S<:SamplingStyle} <: AbstractSet{Realization}
  param_domain::P
  sampling_style::S
end

Fields:

  • param_domain: domain of definition of the parameters
  • sampling_style: distribution on param_domain according to which we can sample the parameters (by default it is set to HaltonSampling)
source
GridapROMs.ParamDataStructures.RealizationType
struct Realization{P<:AbstractVector} <: AbstractRealization
  params::P
end

Represents standard parametric realizations, i.e. samples extracted from a given parameter space. The field params is most commonly a vector of vectors. When the parameters are scalars, they still need to be defined as vectors of vectors of unit length. In other words, we treat the case in which params is a vector of numbers as the case in which params is a vector of one vector.

source
GridapROMs.ParamDataStructures.ReshapedSnapshotsType
struct ReshapedSnapshots{T,N,N′,D,I,R,A<:SteadySnapshots{T,N′,D,I,R},B} <: SteadySnapshots{T,N,D,I,R,A}
  snaps::A
  size::NTuple{N,Int}
  mi::B
end

Represents a SteadySnapshots snaps whose size is resized to size. This struct is equivalent to ReshapedArray, and is only used to make sure the result of this operation is still a subtype of SteadySnapshots

source
GridapROMs.ParamDataStructures.SnapshotsType
abstract type Snapshots{T,N,D,I<:AbstractDofMap{D},R<:AbstractRealization,A}
  <: AbstractSnapshots{T,N} end

Type representing a collection of parametric abstract arrays of eltype T, that are associated with a realization of type R. The (spatial) entries of any instance of Snapshots are indexed according to an index map of type I:AbstractDofMap{D}, where D encodes the spatial dimension. Note that, as opposed to subtypes of AbstractParamArray, which are arrays of arrays, subtypes of Snapshots are arrays of numbers.

Subtypes:

source
GridapROMs.ParamDataStructures.SnapshotsAtIndicesType
struct SnapshotsAtIndices{T,N,D,I,R,A<:SteadySnapshots{T,N,D,I,R},B} <: SteadySnapshots{T,N,D,I,R,A}
  snaps::A
  prange::B
end

Represents a SteadySnapshots snaps whose parametric range is restricted to the indices in prange. This type essentially acts as a view for suptypes of SteadySnapshots, at every space location, on a selected number of parameter indices. An instance of SnapshotsAtIndices is created by calling the function select_snapshots

source
GridapROMs.ParamDataStructures.TransientParamFunctionType
struct TransientParamFunction{F,P,T} <: AbstractParamFunction{P}
  fun::F
  params::P
  times::T
end

Representation of parametric functions with domain a transient parametric space. Given a function f : Ω₁ × ... × Ωₙ × D × [t₁,t₂], where [t₁,t₂] is a temporal domain and D is a ParamSpace, or equivalently f : Ω₁ × ... × Ωₙ × D × [t₁,t₂], where D is a TransientParamSpace, the evaluation of f in (μ,t) ∈ D × [t₁,t₂] returns the restriction of f to Ω₁ × ... × Ωₙ

source
GridapROMs.ParamDataStructures.TransientParamSpaceType
struct TransientParamSpace{P<:ParamSpace,T} <: AbstractSet{TransientRealization}
  parametric_space::P
  temporal_domain::T
end

Fields:

  • parametric_space: underlying parameter space
  • temporal_domain: underlying temporal space

It represents, in essence, the set of tuples (p,t) in parametric_space × temporal_domain

source
GridapROMs.ParamDataStructures.TransientRealizationType
abstract type TransientRealization{P<:Realization,T<:Real} <: AbstractRealization end

Represents temporal parametric realizations, i.e. samples extracted from a given parameter space for every time step in a temporal range. The most obvious application of this type are transient PDEs, where an initial condition is given. Following this convention, the initial time instant is kept separate from the other time steps.

source
GridapROMs.ParamDataStructures.TransientRealizationAtType
struct TransientRealizationAt{P,T} <: TransientRealization{P,T}
  params::P
  t::Base.RefValue{T}
end

Represents a GenericTransientRealization{P,T} at a certain time instant t. To avoid making it a mutable struct, the time instant t is stored as a Base.RefValue{T}.

source
GridapROMs.ParamDataStructures.TransientReshapedSnapshotsType
struct TransientReshapedSnapshots{T,N,N′,D,I,R,A<:TransientSnapshots{T,N′,D,I,R},B} <: TransientSnapshots{T,N,D,I,R,A}
  snaps::A
  size::NTuple{N,Int}
  mi::B
end

Represents a TransientSnapshots snaps whose size is resized to size. This struct is equivalent to ReshapedArray, and is only used to make sure the result of this operation is still a subtype of TransientSnapshots

source
GridapROMs.ParamDataStructures.TransientSnapshotsType
abstract type TransientSnapshots{T,N,D,I,R<:TransientRealization,A} <: Snapshots{T,N,D,I,R,A} end

Transient specialization of a Snapshots. The dimension N of a SteadySnapshots is equal to D + 2, where D represents the number of spatial axes, to which a temporal and a parametric dimension are added.

Subtypes:

source
GridapROMs.ParamDataStructures.TransientSnapshotsAtIndicesType
struct TransientSnapshotsAtIndices{T,N,D,I,R,A<:TransientSnapshots{T,N,D,I,R},B,C} <: TransientSnapshots{T,N,D,I,R,A}
  snaps::A
  trange::B
  prange::C
end

Represents a TransientSnapshots snaps whose parametric and temporal ranges are restricted to the indices in prange and trange. This type essentially acts as a view for suptypes of TransientSnapshots, at every space location, on a selected number of parameter/time indices. An instance of TransientSnapshotsAtIndices is created by calling the function select_snapshots

source
GridapROMs.ParamDataStructures.change_modeMethod
change_mode(s::ModeTransientSnapshots) -> ModeTransientSnapshots

Returns the snapshots obtained by opposing the mode of s. The result is a subtype of AbstractMatrix with entries equal to those of s, but with swapped spatial and temporal axes

source
GridapROMs.ParamDataStructures.find_param_lengthMethod
find_param_length(a...) -> Int

Returns the parametric length of all parametric quantities. An error is thrown if there are no parametric quantities or if at least two quantities have different parametric length

source
GridapROMs.ParamDataStructures.get_param_entryMethod
get_param_entry(A::AbstractParamArray{T},i...) where T -> Vector{eltype(T)}

Returns a vector of the entries of A at index i, for every parameter. The length of the output is equals to param_length(A)

source
GridapROMs.ParamDataStructures.parameterizeMethod
parameterize(a,plength::Integer) -> Any

Returns a quantity with parametric length plength from a. When a already possesses a parametric length, i.e. it is a parametrized quantity, it returns a

source
GridapROMs.ParamDataStructures.parameterizeMethod
parameterize(f::Function,r::Realization) -> ParamFunction
parameterize(f::Function,r::TransientRealization) -> TransientParamFunction

Method that parameterizes an input quantity by a realization r

source
GridapROMs.ParamDataStructures.realizationMethod
realization(p::ParamSpace;nparams=1,sampling=get_sampling_style(p),kwargs...) -> Realization
realization(p::TransientParamSpace;nparams=1,sampling=get_sampling_style(p),kwargs...) -> TransientRealization

Extraction of a set of nparams parameters from a given parametric space, by default according to the sampling strategy specified in p.

source
GridapROMs.ParamDataStructures.select_snapshotsMethod
select_snapshots(s::SteadySnapshots,prange) -> SnapshotsAtIndices
select_snapshots(s::TransientSnapshots,trange,prange) -> TransientSnapshotsAtIndices

Restricts the parametric range of s to the indices prange steady cases, to the indices trange and prange in transient cases, while leaving the spatial entries intact. The restriction operation is lazy.

source