Physics-informed Polynomial Chaos Expansion

Polynomial chaos expansion can be used in physics-informed machine learning as an efficient surrogate model allowing for analytical uncertainty quantification. The PCE constrained to adhere to the known physics of the model (referenced as (PC \(^2\)), combines the conventional experimental design with additional constraints from the physics of the model. The constraints are represented by set of differential equations and specified boundary conditions. PC \(^2\) framework implemented in UQPy consists of three classes.

PdeData class

The first class PdeData contains general physical information (geometry, boundary conditions) describing the governing differential equation. It is imported using the following command:

>>> from UQpy.surrogates.polynomial_chaos.physics_informed.PdeData import PdeData
class PdeData(upper_bounds, lower_bounds, derivative_orders, boundary_normals, boundary_coordinates, boundary_values)[source]

Class containing information about PDE solved by Physics-informed PCE

Parameters:
  • upper_bounds (list) – list of upper bounds of deterministic variables (geometry and time)

  • lower_bounds (list) – list of lower bounds of deterministic variables (geometry and time)

  • derivative_orders (list) – list of derivative orders of boundary conditions

  • boundary_normals (list) – normals of boundary conditions

  • boundary_coordinates (list) – coordinates of boundary samples

  • boundary_values (list) – prescribed values of boundary conditions in bc_x

extract_dirichlet()[source]

Extract Dirichlet boundary conditions in form [coordinates, prescribed values]

Returns:

extracted Dirichlet bc samples in form [coordinates, prescribed values]

get_boundary_samples(order)[source]

Extract boundary conditions of defined order

Parameters:

order (int) – derivative order of extracted boundary conditions

Returns:

extracted bc samples in form [coordinates, prescribed values]

PdePce class

The second class in the PC \(^2\) framework is PdePCE containing PDE physical data and definitions of PDE in PCE context. The class is imported using the following command:

>>> from UQpy.surrogates.polynomial_chaos.physics_informed.PdePCE import PdePCE
class PdePCE(pde_data, pde_basis, pde_source=None, boundary_conditions_evaluate=None, boundary_conditions_sampling=None, virtual_points_sampling=None, nonlinear=False)[source]

Class containing information about PDE needed for physics-informed PCE

Parameters:
  • pde_data (PdeData) – an object of the UQpy PdeData class

  • pde_basis (Callable) – pde defined in basis functions

  • pde_source (Optional[Callable]) – source term of pde

  • boundary_conditions_evaluate (Optional[Callable]) – evaluation of boundary conditions for estimation of an error

  • boundary_conditions_sampling (Optional[Callable]) – function for sampling of boundary conditions

  • virtual_points_sampling (Optional[Callable]) – function for sampling of virtual samples

  • nonlinear (bool) – if True, prescribed pde is non-linear

ConstrainedPCE class

Finally, a numerical solvers based on Karush-Kuhn-Tucker normal equations are defined in the ConstrainedPCE imported using the following command:

>>> from UQpy.surrogates.polynomial_chaos.physics_informed.ConstrainedPCE import ConstrainedPCE
class ConstrainedPCE(pde_data, pde_pce, pce)[source]

Class for construction of physics-informed PCE using Karush-Kuhn-Tucker normal equations

Parameters:
  • pde_data (PdeData) – an object of the UQpy() PdeData class

  • pde_pce (PdePCE) – an object of the UQpy() PdePce class

  • pce (PolynomialChaosExpansion) – initial pce, an object of the UQpy() PolynomialChaosExpansion class

estimate_error(pce, standardized_sample)[source]

Estimate an error of the physics-informed PCE consisting of three parts: prediction errors in training data, errors in boundary conditions and violations of given PDE. Total error is sum of individual mean squared errors.

Parameters:
  • pce (PolynomialChaosExpansion) – initial pce, an object of the UQpy() PolynomialChaosExpansion class

  • standardized_sample (ndarray) – virtual samples in standardized space for evaluation of errors in PDE

Returns:

estimated total mean squared error

lar(n_error_points=50, virtual_niters=False, max_iterations=None, no_iterations=False, min_basis_functions=1, nvirtual=-1, target_error=0)[source]

Fit the sparse physics-informed PCE by Least Angle Regression from Karush-Kuhn-Tucker normal equations

Parameters:
  • n_error_points (int) – number of virtual samples used for estimation of an error

  • virtual_niters (bool) – if True, minimum number of basis functions is equal to number of BCs

  • max_iterations (Optional[int]) – maximum number of iterations for construction of LAR Path

  • no_iterations (bool) – use all obtained basis functions in the first step, i.e. no iterations

  • min_basis_functions (int) – minimum number of basis functions for starting the iterative process

  • nvirtual (int) – set number of virtual points, -1 corresponds to the optimal number

  • target_error (float) – target error of iterative process

ols(pce=None, nvirtual=-1, calculate_coefficients=True, return_coefficients=True, n_error_points=100)[source]

Fit the sparse physics-informed PCE by ordinary least squares from Karush-Kuhn-Tucker normal equations

Parameters:
  • pce (Optional[PolynomialChaosExpansion]) – an object of the PolynomialChaosExpansion class

  • nvirtual (int) – set number of virtual points, -1 corresponds to the optimal number

  • calculate_coefficients (bool) – if True, estimate deterministic coefficients. Othewise, construct only KKT normal equations for sparse solvers

  • return_coefficients (bool) – if True, return coefficients of pce

  • n_error_points (int) – number of virtual samples used for estimation of an error

ReducedPCE Class

Once the PC \(^2\) is created, it can be easily exploited for UQ as standard PCE. However, since differential equations are typically defined in physical space and thus the PCE contains also deterministic space-time variables. Their influence can be filtered out by the ReducedPCE class.

The ReducedPCE class is imported using the following command:

>>> from UQpy.surrogates.polynomial_chaos.physics_informed.ReducedPCE import ReducedPCE
class ReducedPCE(pce, n_deterministic, deterministic_positions=None)[source]

Class to create a reduced PCE filtering out deterministic input variables (e.g. geometry)

Parameters:
  • pce (PolynomialChaosExpansion) – an object of the UQpy() PolynomialChaosExpansion class

  • n_deterministic (int) – number of deterministic input variables

  • deterministic_positions (Optional[list]) – list of positions of deterministic random variables in input vector. If None, positions are assumed to be the first n_det variables.

evaluate_coordinate(coordinates, return_coefficients=False)[source]

Evaluate reduced PCE coefficients for given deterministic coordinates.

Parameters:
  • coordinates (ndarray) – deterministic coordinates for evaluation of reduced PCE

  • return_coefficients (bool) – if True, return a vector of deterministic coefficients, else return Mean and Variance

Returns:

mean and variance, or a vector of deterministic coefficients if return_coeff

derive_coordinate(coordinates, derivative_order, leading_variable, derivative_multiplier=1, return_coefficients=False)[source]

Evaluate derivative of reduced PCE coefficients for given deterministic coordinates.

Parameters:
  • coordinates (ndarray) – deterministic coordinates for evaluation of reduced PCE

  • derivative_order (int) – derivation order of reduced PCE

  • leading_variable (int) – leading variable for derivation

  • derivative_multiplier (float) – multiplier reflecting different sizes of the original physical and transformed spaces

  • return_coefficients (bool) – if True, return a vector of deterministic coefficients, else return Mean and Variance

Returns:

mean and variance, or a vector of deterministic coefficients if return_coeff

variance_contributions(unique_beta)[source]

Get first order conditional variances from coefficients of reduced PCE evaluated in the specified deterministic physical coordinates

Parameters:

unique_beta (ndarray) – vector of reduced PCE coefficients

Returns:

first order conditional variances associated to each input random variable

Examples