PointToFieldFunctionalChaosAlgorithm¶
- class PointToFieldFunctionalChaosAlgorithm(*args)¶
- Functional metamodel algorithm based on chaos decomposition. - Warning - This class is experimental and likely to be modified in future releases. To use it, import the - openturns.experimentalsubmodule.- The present algorithm makes it possible to build a response surface of the function - defined by the equation: - with - a mesh of - . - The mapping - is known from the - vectors - of the associated input random vector - and - fields - that fully characterize the output process - . - The linear projection function - of the Karhunen-Loeve decomposition by SVD is used to project the output fields (see - KarhunenLoeveSVDAlgorithmand- KarhunenLoeveAlgorithmfor the notations):- where - . - The Karhunen-Loeve algorithm allows one to replace this integral by a specific weighted and finite sum and to write the projections of the j-th marginal of i-th output field - by multiplication with the projection matrix - : - with - the retained number of modes in the decomposition of the j-th output. The projections of all the - components of - fields are assembled in the - matrix: - with - the total number of modes across output components. - Then a functional chaos decomposition is built between the input samples - and the projected modes sample - . The - ResourceMapstring entry PointToFieldFunctionalChaosAlgorithm-Expansion allows one to switch between- LeastSquaresExpansionand- FunctionalChaosAlgorithm.- with - the number of terms in the chaos decomposition. - The final metamodel consists in the composition of the functional chaos metamodel and the Karhunen-Loeve projections. - Here the projected modes sample has a dimension - but being on the output side of the functional chaos expansion (FCE) this approach is not affected by the curse of dimensionality, it will just require as much FCE marginals runs. - Parameters:
- xSample
- Input sample. 
- yProcessSample
- Output process sample. 
- distributionDistribution
- Input distribution 
 
- x
 - Methods - Accessor to the output block indices. - Accessor to the object's name. - Accessor to the input sample. - getName()- Accessor to the object's name. - Accessor to the maximum number of modes to compute. - Accessor to the output sample. - Accessor to the recompression flag. - Result accessor. - Accessor to the eigenvalues cutoff ratio. - hasName()- Test if the object is named. - run()- Compute the response surfaces. - setBlockIndices(blockIndices)- Accessor to the output block indices. - setName(name)- Accessor to the object's name. - setNbModes(nbModes)- Accessor to the maximum number of modes to compute. - setRecompress(recompress)- Accessor to the recompression flag. - setThreshold(threshold)- Accessor to the eigenvalues cutoff ratio. - See also - Notes - As the output process decomposition is done with the values decomposition approach, it is possible to control the number of modes retained per output, the idea being to avoid a large output dimension for the chaos decomposition step. As done in - KarhunenLoeveSVDAlgorithm, the- setThreshold()and- setNbModes()methods allow one to control the spectrum ratio and maximum count.- In the case of homogenous data (if variables have the same unit or scale), it is also possible to recompress the modes at the global level with - setRecompress(). When enabled, the eigenvalues are gathered and sorted so as to find a global spectrum cut-off value by which the spectrum of each output is truncated. The default value can be set through the- ResourceMapkey PointToFieldFunctionalChaosAlgorithm-DefaultRecompress.- For the chaos metamodel step, it is possible to specify the basis size with the - ResourceMapkey FunctionalChaosAlgorithm-BasisSize.- It is possible to partition output variables into independent blocks with - setBlockIndices(). This way Karhunen-Loeve process decompositions are done on each block rather than on all output variables at once (at the price of increased chaos decomposition output dimension) which then makes sensitivity analysis possible for each output variable or group of output variables.- Examples - >>> import openturns as ot >>> import openturns.experimental as otexp >>> ot.RandomGenerator.SetSeed(0) >>> mesh = ot.RegularGrid(0.0, 0.1, 20) >>> X = ot.Normal(4) >>> x = X.getSample(50) >>> g = ot.SymbolicFunction(['t', 'x1', 'x2', 'x3', 'x4'], ['x1 + x2 * sin(t)', 'x2 + x3 * cos(t)', 'x4 * t']) >>> f = ot.VertexValuePointToFieldFunction(g, mesh) >>> y = f(x) >>> algo = otexp.PointToFieldFunctionalChaosAlgorithm(x, y, X) >>> algo.setThreshold(4e-2) >>> # Temporarily lower the basis size for the sake of this example. >>> ot.ResourceMap.SetAsUnsignedInteger('FunctionalChaosAlgorithm-BasisSize', 100) >>> algo.run() >>> result = algo.getResult() >>> metamodel = result.getPointToFieldMetaModel() >>> y0hat = metamodel(x[0]) >>> ot.ResourceMap.Reload() - __init__(*args)¶
 - getBlockIndices()¶
- Accessor to the output block indices. - Returns:
- blockIndicesIndicesCollection
- Independent output components indices. 
 
- blockIndices
 
 - getClassName()¶
- Accessor to the object’s name. - Returns:
- class_namestr
- The object class name (object.__class__.__name__). 
 
 
 - getName()¶
- Accessor to the object’s name. - Returns:
- namestr
- The name of the object. 
 
 
 - getNbModes()¶
- Accessor to the maximum number of modes to compute. - Returns:
- nint
- The maximum number of modes to compute. The actual number of modes also depends on the threshold criterion. 
 
 
 - getOutputProcessSample()¶
- Accessor to the output sample. - Returns:
- outputSampleProcessSample
- Output sample. 
 
- outputSample
 
 - getRecompress()¶
- Accessor to the recompression flag. - Returns:
- recompressbool
- Whether to recompress the output Karhunen-Loeve decompositions. This can only be enabled if the scale of the output variable blocks is the same. 
 
 
 - getResult()¶
- Result accessor. - Returns:
- resultopenturns.FieldFunctionalChaosResult
- Result class. 
 
- result
 
 - getThreshold()¶
- Accessor to the eigenvalues cutoff ratio. - Returns:
- sfloat, 
- The threshold - . 
 
- sfloat, 
 
 - hasName()¶
- Test if the object is named. - Returns:
- hasNamebool
- True if the name is not empty. 
 
 
 - run()¶
- Compute the response surfaces. - Notes - It computes the response surfaces and creates a - MetaModelResultstructure containing all the results.
 - setBlockIndices(blockIndices)¶
- Accessor to the output block indices. - Parameters:
- blockIndices2-d sequence of int
- Independent output components indices. 
 
 
 - setName(name)¶
- Accessor to the object’s name. - Parameters:
- namestr
- The name of the object. 
 
 
 - setNbModes(nbModes)¶
- Accessor to the maximum number of modes to compute. - Parameters:
- nint
- The maximum number of modes to compute. The actual number of modes also depends on the threshold criterion. 
 
 
 - setRecompress(recompress)¶
- Accessor to the recompression flag. - Parameters:
- recompressbool
- Whether to recompress the output Karhunen-Loeve decompositions. The modes are truncated a second time according to a global eigen value bound across output decompositions. This can only be enabled if the scale of the output variable blocks is the same. 
 
 
 - setThreshold(threshold)¶
- Accessor to the eigenvalues cutoff ratio. - Parameters:
- sfloat, 
- The threshold - . 
 
- sfloat, 
 
 
 OpenTURNS
      OpenTURNS