scimba_torch.approximation_space.spectral_space

Defines the spectral approximation space and its components.

Classes

SeparatedSpectralxSpace(nb_unknowns, ...)

A nonlinear approximation space using a neural network model.

SpectralxSpace(nb_unknowns, basis_type, ...)

A nonlinear approximation space using a neural network model.

class SpectralxSpace(nb_unknowns, basis_type, nb_mods_by_direction, bounds, integrator, **kwargs)[source]

Bases: AbstractApproxSpace, ScimbaModule

A nonlinear approximation space using a neural network model.

This class represents a parametric approximation space, where the solution is modeled by a neural network. It integrates functionality for evaluating the network, setting/retrieving degrees of freedom, and computing the Jacobian.

Parameters:
  • nb_unknowns (int) – Number of unknowns in the approximation problem.

  • basis_type (str) – Type of basis functions used in the approximation (e.g., “sine”, “cosine”).

  • nb_mods_by_direction (int) – Number of modes in each spatial direction.

  • bounds (list) – list of tuples specifying the bounds for each spatial dimension.

  • integrator (DomainSampler) – Integrator for the spatial and parameter domains.

  • **kwargs – Additional arguments passed to the neural network model.

integrator: DomainSampler

The integrator combining the spatial and parameter domains.

forward(features, with_last_layer=True)[source]

Evaluate the parametric model for given input features.

Parameters:
  • features (Tensor) – Input tensor with concatenated spatial and parameter data.

  • with_last_layer (bool) – whether to include the last layer in the evaluation (Default value = True)

Return type:

Tensor

Returns:

Output tensor from the neural network.

evaluate(x, mu, with_last_layer=True)[source]

Evaluate the parametric model for given inputs and parameters.

Parameters:
  • x (LabelTensor) – Input tensor from the spatial domain.

  • mu (LabelTensor) – Input tensor from the parameter domain.

  • with_last_layer (bool) – whether to include the last layer in the evaluation (Default value = True)

Return type:

MultiLabelTensor

Returns:

Output tensor from the neural network, wrapped with multi-label metadata.

set_dof(theta, flag_scope='all')[source]

Sets the degrees of freedom (DoF) for the neural network.

Parameters:
  • theta (Tensor) – A vector containing the network parameters.

  • flag_scope (str) – scope of the DoF (Default value = “all”)

Return type:

None

get_dof(flag_scope='all', flag_format='list')[source]

Retrieves the degrees of freedom (DoF) of the neural network.

Parameters:
  • flag_scope (str) – scope of the DoF (Default value = “all”)

  • flag_format (str) – format of the DoF (Default value = “list”)

Return type:

list[Parameter] | Tensor

Returns:

Tensor containing the DoF of the network.

jacobian(x, mu)[source]

Compute the Jacobian of the network with respect to its parameters.

Parameters:
  • x (LabelTensor) – Input tensor from the spatial domain.

  • mu (LabelTensor) – Input tensor from the parameter domain.

Return type:

Tensor

Returns:

Jacobian matrix of shape (num_samples, out_size, num_params).

class SeparatedSpectralxSpace(nb_unknowns, basis_type, nb_mods_by_direction, bounds, integrator, rank, **kwargs)[source]

Bases: AbstractApproxSpace, Module

A nonlinear approximation space using a neural network model.

This class represents a parametric approximation space, where the solution is modeled by a neural network. It integrates functionality for evaluating the network, setting/retrieving degrees of freedom, and computing the Jacobian.

Parameters:
  • nb_unknowns (int) – Number of unknowns in the approximation problem.

  • basis_type (str) – Type of basis functions used in the approximation (e.g., “sine”, “cosine”).

  • nb_mods_by_direction (int) – Number of modes in each spatial direction.

  • bounds (list) – list of tuples specifying the bounds for each spatial dimension.

  • integrator (TensorizedSampler) – Integrator for the spatial and parameter domains.

  • rank (int) – Rank of the tensor structure.

  • **kwargs – Additional arguments passed to the neural network model.

forward(features)[source]

Evaluate the parametric model for given input features.

Parameters:

features (Tensor) – Input tensor with concatenated spatial and parameter data.

Return type:

Tensor

Returns:

Output tensor from the neural network.

evaluate(x, mu, with_last_layer=True)[source]

Evaluate the parametric model for given inputs and parameters.

Parameters:
  • x (LabelTensor) – Input tensor from the spatial domain.

  • mu (LabelTensor) – Input tensor from the parameter domain.

  • with_last_layer (bool) – whether to include the last layer in the evaluation (Default value = True)

Return type:

MultiLabelTensor

Returns:

Output tensor from the neural network, wrapped with multi-label metadata.

Raises:

ValueError – If with_last_layer is False.

set_dof(theta, flag_scope='all')[source]

Sets the degrees of freedom (DoF) for the neural network.

Parameters:
  • theta (Tensor) – A vector containing the network parameters.

  • flag_scope (str) – (Default value = “all”)

Raises:

ValueError – If the flag_scope is not “all”.

Return type:

None

get_dof(flag_scope='all', flag_format='list')[source]

Retrieves the degrees of freedom (DoF) of the neural network.

Parameters:
  • flag_scope (str) – (Default value = “all”)

  • flag_format (str) – (Default value = “list”)

Return type:

Tensor | list[Parameter]

Returns:

The network parameters in the specified format.

Raises:

ValueError – If the flag_scope is not “all” or if the flag_format is not “list” or “tensor”.

jacobian(x, mu)[source]

Compute the Jacobian of the network with respect to its parameters.

Parameters:
  • x (LabelTensor) – Input tensor from the spatial domain.

  • mu (LabelTensor) – Input tensor from the parameter domain.

Return type:

Tensor

Returns:

Jacobian matrix of shape (num_samples, out_size, num_params).