pyvale 2026.1.1__cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- include/eigen3/Eigen/Cholesky +45 -0
- include/eigen3/Eigen/CholmodSupport +48 -0
- include/eigen3/Eigen/Core +384 -0
- include/eigen3/Eigen/Dense +7 -0
- include/eigen3/Eigen/Eigen +2 -0
- include/eigen3/Eigen/Eigenvalues +60 -0
- include/eigen3/Eigen/Geometry +59 -0
- include/eigen3/Eigen/Householder +29 -0
- include/eigen3/Eigen/IterativeLinearSolvers +48 -0
- include/eigen3/Eigen/Jacobi +32 -0
- include/eigen3/Eigen/KLUSupport +41 -0
- include/eigen3/Eigen/LU +47 -0
- include/eigen3/Eigen/MetisSupport +35 -0
- include/eigen3/Eigen/OrderingMethods +70 -0
- include/eigen3/Eigen/PaStiXSupport +49 -0
- include/eigen3/Eigen/PardisoSupport +35 -0
- include/eigen3/Eigen/QR +50 -0
- include/eigen3/Eigen/QtAlignedMalloc +39 -0
- include/eigen3/Eigen/SPQRSupport +34 -0
- include/eigen3/Eigen/SVD +50 -0
- include/eigen3/Eigen/Sparse +34 -0
- include/eigen3/Eigen/SparseCholesky +37 -0
- include/eigen3/Eigen/SparseCore +69 -0
- include/eigen3/Eigen/SparseLU +50 -0
- include/eigen3/Eigen/SparseQR +36 -0
- include/eigen3/Eigen/StdDeque +27 -0
- include/eigen3/Eigen/StdList +26 -0
- include/eigen3/Eigen/StdVector +27 -0
- include/eigen3/Eigen/SuperLUSupport +64 -0
- include/eigen3/Eigen/UmfPackSupport +40 -0
- include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
- include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
- include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
- include/eigen3/Eigen/src/Core/Array.h +417 -0
- include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
- include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
- include/eigen3/Eigen/src/Core/Assign.h +90 -0
- include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
- include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
- include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
- include/eigen3/Eigen/src/Core/Block.h +448 -0
- include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
- include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
- include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
- include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
- include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
- include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
- include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
- include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
- include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
- include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
- include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
- include/eigen3/Eigen/src/Core/Dot.h +318 -0
- include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
- include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
- include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
- include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
- include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
- include/eigen3/Eigen/src/Core/IO.h +258 -0
- include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
- include/eigen3/Eigen/src/Core/Inverse.h +117 -0
- include/eigen3/Eigen/src/Core/Map.h +171 -0
- include/eigen3/Eigen/src/Core/MapBase.h +310 -0
- include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
- include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- include/eigen3/Eigen/src/Core/Matrix.h +565 -0
- include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
- include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
- include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
- include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
- include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
- include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
- include/eigen3/Eigen/src/Core/Product.h +191 -0
- include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
- include/eigen3/Eigen/src/Core/Random.h +218 -0
- include/eigen3/Eigen/src/Core/Redux.h +515 -0
- include/eigen3/Eigen/src/Core/Ref.h +381 -0
- include/eigen3/Eigen/src/Core/Replicate.h +142 -0
- include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
- include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
- include/eigen3/Eigen/src/Core/Reverse.h +217 -0
- include/eigen3/Eigen/src/Core/Select.h +164 -0
- include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
- include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- include/eigen3/Eigen/src/Core/Solve.h +188 -0
- include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
- include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
- include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
- include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
- include/eigen3/Eigen/src/Core/Stride.h +116 -0
- include/eigen3/Eigen/src/Core/Swap.h +68 -0
- include/eigen3/Eigen/src/Core/Transpose.h +464 -0
- include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
- include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
- include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
- include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
- include/eigen3/Eigen/src/Core/Visitor.h +381 -0
- include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
- include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
- include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
- include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
- include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
- include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
- include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
- include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
- include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
- include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
- include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
- include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
- include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
- include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
- include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
- include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
- include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
- include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
- include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
- include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
- include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
- include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
- include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
- include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
- include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
- include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
- include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
- include/eigen3/Eigen/src/Householder/Householder.h +176 -0
- include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
- include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- include/eigen3/Eigen/src/LU/Determinant.h +117 -0
- include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
- include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
- include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
- include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
- include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
- include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
- include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
- include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
- include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
- include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
- include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
- include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
- include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
- include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
- include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
- include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
- include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
- include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
- include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
- include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
- include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
- include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
- include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
- include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
- include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
- include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
- include/eigen3/Eigen/src/StlSupport/details.h +84 -0
- include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- include/eigen3/Eigen/src/misc/Image.h +82 -0
- include/eigen3/Eigen/src/misc/Kernel.h +79 -0
- include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
- include/eigen3/Eigen/src/misc/blas.h +440 -0
- include/eigen3/Eigen/src/misc/lapack.h +152 -0
- include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
- include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
- include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
- include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
- include/eigen3/signature_of_eigen3_matrix_library +1 -0
- include/eigen3/unsupported/Eigen/AdolcForward +159 -0
- include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
- include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
- include/eigen3/unsupported/Eigen/AutoDiff +46 -0
- include/eigen3/unsupported/Eigen/BVH +95 -0
- include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
- include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
- include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
- include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
- include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
- include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
- include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
- include/eigen3/unsupported/Eigen/EulerAngles +43 -0
- include/eigen3/unsupported/Eigen/FFT +419 -0
- include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
- include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
- include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
- include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
- include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
- include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
- include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
- include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
- include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
- include/eigen3/unsupported/Eigen/Polynomials +137 -0
- include/eigen3/unsupported/Eigen/Skyline +39 -0
- include/eigen3/unsupported/Eigen/SparseExtra +54 -0
- include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
- include/eigen3/unsupported/Eigen/Splines +35 -0
- include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
- include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
- include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
- include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
- include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
- include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
- include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
- include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
- include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
- include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
- include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
- include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
- include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
- include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
- include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
- include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
- include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
- include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
- include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
- include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
- include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
- include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
- include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
- include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
- include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
- include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
- pyvale/__init__.py +23 -0
- pyvale/blender/__init__.py +23 -0
- pyvale/blender/blendercalibrationdata.py +17 -0
- pyvale/blender/blenderexceptions.py +8 -0
- pyvale/blender/blenderlightdata.py +26 -0
- pyvale/blender/blendermaterialdata.py +15 -0
- pyvale/blender/blenderrenderdata.py +35 -0
- pyvale/blender/blenderscene.py +493 -0
- pyvale/blender/blendertools.py +449 -0
- pyvale/calib/__init__.py +11 -0
- pyvale/calib/calibcpp.cpython-311-i386-linux-gnu.so +0 -0
- pyvale/calib/calibdotdetect.py +510 -0
- pyvale/calib/calibparams.py +47 -0
- pyvale/calib/calibstereo.py +441 -0
- pyvale/calib/cpp/bindings.cpp +22 -0
- pyvale/calib/cpp/calibdotdetect.cpp +16 -0
- pyvale/calib/cpp/calibdotdetect.hpp +20 -0
- pyvale/calib/cpp/calibopt.cpp +347 -0
- pyvale/calib/cpp/calibopt.hpp +84 -0
- pyvale/calib/cpp/calibstereo.cpp +95 -0
- pyvale/calib/cpp/calibstereo.hpp +27 -0
- pyvale/common_cpp/__init__.py +5 -0
- pyvale/common_cpp/bindings.cpp +33 -0
- pyvale/common_cpp/common_cpp.cpython-311-i386-linux-gnu.so +0 -0
- pyvale/common_cpp/defines.hpp +39 -0
- pyvale/common_cpp/dicsignalhandler.cpp +16 -0
- pyvale/common_cpp/dicsignalhandler.hpp +11 -0
- pyvale/common_cpp/pocketfft_hdronly.h +3744 -0
- pyvale/common_cpp/progressbar.hpp +107 -0
- pyvale/common_cpp/util.cpp +19 -0
- pyvale/common_cpp/util.hpp +72 -0
- pyvale/common_py/util.py +63 -0
- pyvale/data/DIC_Challenge_Star_Noise_Def.tiff +0 -0
- pyvale/data/DIC_Challenge_Star_Noise_Ref.tiff +0 -0
- pyvale/data/__init__.py +5 -0
- pyvale/data/cal_target.tiff +0 -0
- pyvale/data/calib.caldat +26 -0
- pyvale/data/case00_HEX20_out.e +0 -0
- pyvale/data/case00_HEX27_out.e +0 -0
- pyvale/data/case00_HEX8_out.e +0 -0
- pyvale/data/case00_TET10_out.e +0 -0
- pyvale/data/case00_TET14_out.e +0 -0
- pyvale/data/case00_TET4_out.e +0 -0
- pyvale/data/case16_d_out.e +0 -0
- pyvale/data/case16_out.e +0 -0
- pyvale/data/case17_out.e +0 -0
- pyvale/data/case18_d_out.e +0 -0
- pyvale/data/case18_out.e +0 -0
- pyvale/data/case26_out.e +0 -0
- pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff +0 -0
- pyvale/data/plate_hole_def0000.tiff +0 -0
- pyvale/data/plate_hole_def0001.tiff +0 -0
- pyvale/data/plate_hole_ref0000.tiff +0 -0
- pyvale/data/plate_rigid_def0000.tiff +0 -0
- pyvale/data/plate_rigid_def0001.tiff +0 -0
- pyvale/data/plate_rigid_def_25px.tiff +0 -0
- pyvale/data/plate_rigid_def_50px.tiff +0 -0
- pyvale/data/plate_rigid_ref0000.tiff +0 -0
- pyvale/dataset/__init__.py +7 -0
- pyvale/dataset/dataset.py +483 -0
- pyvale/dic/__init__.py +15 -0
- pyvale/dic/cpp/bindings.cpp +52 -0
- pyvale/dic/cpp/dicfourier.cpp +705 -0
- pyvale/dic/cpp/dicfourier.hpp +410 -0
- pyvale/dic/cpp/dicinterpolator.cpp +633 -0
- pyvale/dic/cpp/dicinterpolator.hpp +162 -0
- pyvale/dic/cpp/dicmain.cpp +214 -0
- pyvale/dic/cpp/dicmain.hpp +61 -0
- pyvale/dic/cpp/dicoptimizer.cpp +564 -0
- pyvale/dic/cpp/dicoptimizer.hpp +279 -0
- pyvale/dic/cpp/dicresults.cpp +239 -0
- pyvale/dic/cpp/dicresults.hpp +64 -0
- pyvale/dic/cpp/dicrg.cpp +55 -0
- pyvale/dic/cpp/dicrg.hpp +52 -0
- pyvale/dic/cpp/dicscanmethod.cpp +819 -0
- pyvale/dic/cpp/dicscanmethod.hpp +119 -0
- pyvale/dic/cpp/dicshapefunc.cpp +117 -0
- pyvale/dic/cpp/dicshapefunc.hpp +40 -0
- pyvale/dic/cpp/dicsubset.cpp +325 -0
- pyvale/dic/cpp/dicsubset.hpp +122 -0
- pyvale/dic/cpp/dicutil.cpp +108 -0
- pyvale/dic/cpp/dicutil.hpp +96 -0
- pyvale/dic/cuda/malloc.cu +99 -0
- pyvale/dic/cuda/malloc.hpp +17 -0
- pyvale/dic/dic2d.py +190 -0
- pyvale/dic/dic2dconv.py +6 -0
- pyvale/dic/dic2dcpp.cpython-311-i386-linux-gnu.so +0 -0
- pyvale/dic/dicchecks.py +455 -0
- pyvale/dic/dicdataimport.py +402 -0
- pyvale/dic/dicregionofinterest.py +1163 -0
- pyvale/dic/dicresults.py +58 -0
- pyvale/examples/__init__.py +5 -0
- pyvale/examples/basicsensorsim/README.md +2 -0
- pyvale/examples/basicsensorsim/ex0_quickstart.py +139 -0
- pyvale/examples/basicsensorsim/ex1_scalar_sensors.py +240 -0
- pyvale/examples/basicsensorsim/ex2_vector_tensor_sensors.py +280 -0
- pyvale/examples/basicsensorsim/ex3_experiment_simulator.py +397 -0
- pyvale/examples/blenderimagedef/README.md +2 -0
- pyvale/examples/blenderimagedef/ex1_blender_scene2d.py +176 -0
- pyvale/examples/blenderimagedef/ex2_blender_imagedef2d.py +177 -0
- pyvale/examples/blenderimagedef/ex3_blender_scenestereo.py +205 -0
- pyvale/examples/blenderimagedef/ex4_blender_imagedefstereo.py +213 -0
- pyvale/examples/blenderimagedef/ex5_blender_calibstereo.py +190 -0
- pyvale/examples/dic/README.md +2 -0
- pyvale/examples/dic/ex1_region_of_interest.py +101 -0
- pyvale/examples/dic/ex2_plate_with_hole.py +155 -0
- pyvale/examples/dic/ex3_plate_with_hole_strain.py +99 -0
- pyvale/examples/dic/ex4_dic_blender.py +97 -0
- pyvale/examples/dic/ex5_dic_challenge.py +107 -0
- pyvale/examples/extsensorsim/README.md +2 -0
- pyvale/examples/extsensorsim/ex1_byosimdata.py +211 -0
- pyvale/examples/extsensorsim/ex2_meshfreesensors.py +174 -0
- pyvale/examples/extsensorsim/ex3a_scal2d.py +151 -0
- pyvale/examples/extsensorsim/ex3b_scal3d.py +150 -0
- pyvale/examples/extsensorsim/ex3c_vec2d.py +163 -0
- pyvale/examples/extsensorsim/ex3d_vec3d.py +169 -0
- pyvale/examples/extsensorsim/ex3e_tens2d.py +170 -0
- pyvale/examples/extsensorsim/ex3f_tens3d.py +198 -0
- pyvale/examples/extsensorsim/ex4a_basicerrs_scal2d.py +201 -0
- pyvale/examples/extsensorsim/ex4b_fielderrs_scal3d.py +197 -0
- pyvale/examples/extsensorsim/ex4c_angleerrs_vec2d.py +215 -0
- pyvale/examples/extsensorsim/ex4d_fieldlockerrs_vec3d.py +184 -0
- pyvale/examples/extsensorsim/ex4e_chainfielderrs_vec2d.py +233 -0
- pyvale/examples/extsensorsim/ex4f_caliberrs_scal2d.py +167 -0
- pyvale/examples/extsensorsim/ex4g_spatavgerrs_scal2d.py +146 -0
- pyvale/examples/extsensorsim/ex5a_expsim_thermmech2d.py +350 -0
- pyvale/examples/extsensorsim/ex5b_expsim_thermmech3d.py +358 -0
- pyvale/examples/genanalyticdata/ex1_1_scalarvisualisation.py +41 -0
- pyvale/examples/genanalyticdata/ex1_2_scalarcasebuild.py +43 -0
- pyvale/examples/genanalyticdata/ex2_1_analyticsensors.py +86 -0
- pyvale/examples/genanalyticdata/ex2_2_analyticsensors_nomesh.py +89 -0
- pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py +84 -0
- pyvale/examples/mooseherder/README.md +2 -0
- pyvale/examples/mooseherder/ex0_create_moose_config.py +65 -0
- pyvale/examples/mooseherder/ex1a_modify_moose_input.py +71 -0
- pyvale/examples/mooseherder/ex1b_modify_gmsh_input.py +69 -0
- pyvale/examples/mooseherder/ex2a_run_moose_once.py +80 -0
- pyvale/examples/mooseherder/ex2b_run_gmsh_once.py +64 -0
- pyvale/examples/mooseherder/ex2c_run_both_once.py +114 -0
- pyvale/examples/mooseherder/ex3_run_moose_seq_para.py +157 -0
- pyvale/examples/mooseherder/ex4_run_gmsh-moose_seq_para.py +176 -0
- pyvale/examples/mooseherder/ex5_run_moose_paramulti.py +136 -0
- pyvale/examples/mooseherder/ex6_read_moose_exodus.py +163 -0
- pyvale/examples/mooseherder/ex7a_read_moose_herd_results.py +153 -0
- pyvale/examples/mooseherder/ex7b_read_multi_herd_results.py +116 -0
- pyvale/examples/mooseherder/ex7c_read_multi_gmshmoose_results.py +127 -0
- pyvale/examples/mooseherder/ex7d_readconfig_multi_gmshmoose_results.py +143 -0
- pyvale/examples/mooseherder/ex8_read_existing_sweep_output.py +72 -0
- pyvale/examples/rasterimagedef/ex_rastenp.py +194 -0
- pyvale/examples/rasterimagedef/ex_rastercyth_oneframe.py +206 -0
- pyvale/examples/rasterimagedef/ex_rastercyth_static_cypara.py +189 -0
- pyvale/examples/rasterimagedef/ex_rastercyth_static_pypara.py +219 -0
- pyvale/examples/visualisation/ex1_visualisation_options.py +111 -0
- pyvale/mooseherder/__init__.py +55 -0
- pyvale/mooseherder/directorymanager.py +408 -0
- pyvale/mooseherder/exceptions.py +10 -0
- pyvale/mooseherder/exodusloader.py +762 -0
- pyvale/mooseherder/gmshrunner.py +158 -0
- pyvale/mooseherder/inputmodifier.py +240 -0
- pyvale/mooseherder/mooseconfig.py +212 -0
- pyvale/mooseherder/mooseherd.py +539 -0
- pyvale/mooseherder/mooserunner.py +307 -0
- pyvale/mooseherder/outputloader.py +17 -0
- pyvale/mooseherder/simdata.py +93 -0
- pyvale/mooseherder/simloaderbyfield.py +211 -0
- pyvale/mooseherder/simloaderbytime.py +193 -0
- pyvale/mooseherder/simloadopts.py +55 -0
- pyvale/mooseherder/simloadtools.py +465 -0
- pyvale/mooseherder/simrunner.py +31 -0
- pyvale/mooseherder/simsaver.py +401 -0
- pyvale/mooseherder/sweeploader.py +358 -0
- pyvale/mooseherder/sweeptools.py +76 -0
- pyvale/sensorsim/__init__.py +86 -0
- pyvale/sensorsim/camera.py +147 -0
- pyvale/sensorsim/cameradata.py +72 -0
- pyvale/sensorsim/cameradata2d.py +84 -0
- pyvale/sensorsim/camerasensor.py +147 -0
- pyvale/sensorsim/camerastereo.py +217 -0
- pyvale/sensorsim/cameratools.py +484 -0
- pyvale/sensorsim/cython/rastercyth.c +32404 -0
- pyvale/sensorsim/cython/rastercyth.html +3392 -0
- pyvale/sensorsim/cython/rastercyth.py +684 -0
- pyvale/sensorsim/enums.py +16 -0
- pyvale/sensorsim/errordriftcalc.py +104 -0
- pyvale/sensorsim/errorintegrator.py +359 -0
- pyvale/sensorsim/errorrand.py +105 -0
- pyvale/sensorsim/errorsimulator.py +137 -0
- pyvale/sensorsim/errorsyscalib.py +93 -0
- pyvale/sensorsim/errorsysdep.py +197 -0
- pyvale/sensorsim/errorsysfield.py +383 -0
- pyvale/sensorsim/errorsysindep.py +209 -0
- pyvale/sensorsim/exceptions.py +14 -0
- pyvale/sensorsim/experimentsimio.py +94 -0
- pyvale/sensorsim/experimentsimulator.py +615 -0
- pyvale/sensorsim/experimentstats.py +115 -0
- pyvale/sensorsim/field.py +127 -0
- pyvale/sensorsim/fieldconverter.py +378 -0
- pyvale/sensorsim/fieldinterp.py +89 -0
- pyvale/sensorsim/fieldinterpmesh.py +119 -0
- pyvale/sensorsim/fieldinterppoints.py +93 -0
- pyvale/sensorsim/fieldsampler.py +110 -0
- pyvale/sensorsim/fieldscalar.py +94 -0
- pyvale/sensorsim/fieldtensor.py +150 -0
- pyvale/sensorsim/fieldtransform.py +388 -0
- pyvale/sensorsim/fieldvector.py +136 -0
- pyvale/sensorsim/generatorsrandom.py +420 -0
- pyvale/sensorsim/imagedef2d.py +577 -0
- pyvale/sensorsim/imagetools.py +137 -0
- pyvale/sensorsim/integratorfactory.py +240 -0
- pyvale/sensorsim/integratorquadrature.py +217 -0
- pyvale/sensorsim/integratorrectangle.py +165 -0
- pyvale/sensorsim/integratorspatial.py +89 -0
- pyvale/sensorsim/integratortype.py +43 -0
- pyvale/sensorsim/logger.py +23 -0
- pyvale/sensorsim/plotting_logs.py +22 -0
- pyvale/sensorsim/raster.py +31 -0
- pyvale/sensorsim/rastercy.py +107 -0
- pyvale/sensorsim/rasternp.py +627 -0
- pyvale/sensorsim/rasteropts.py +58 -0
- pyvale/sensorsim/renderer.py +47 -0
- pyvale/sensorsim/rendermesh.py +137 -0
- pyvale/sensorsim/renderscene.py +51 -0
- pyvale/sensorsim/sensorarray.py +178 -0
- pyvale/sensorsim/sensordata.py +74 -0
- pyvale/sensorsim/sensordescriptor.py +275 -0
- pyvale/sensorsim/sensorfactory.py +179 -0
- pyvale/sensorsim/sensorspoint.py +308 -0
- pyvale/sensorsim/sensortools.py +113 -0
- pyvale/sensorsim/simtools.py +300 -0
- pyvale/sensorsim/visualexpplotter.py +201 -0
- pyvale/sensorsim/visualimagedef.py +74 -0
- pyvale/sensorsim/visualimages.py +76 -0
- pyvale/sensorsim/visualopts.py +507 -0
- pyvale/sensorsim/visualsimanimator.py +111 -0
- pyvale/sensorsim/visualsimplotter.py +180 -0
- pyvale/sensorsim/visualsimsensors.py +343 -0
- pyvale/sensorsim/visualtools.py +136 -0
- pyvale/sensorsim/visualtraceanimator.py +77 -0
- pyvale/sensorsim/visualtraceplotter.py +296 -0
- pyvale/simcases/case00_HEX20.i +242 -0
- pyvale/simcases/case00_HEX27.i +242 -0
- pyvale/simcases/case00_HEX8.i +242 -0
- pyvale/simcases/case00_TET10.i +242 -0
- pyvale/simcases/case00_TET14.i +242 -0
- pyvale/simcases/case00_TET4.i +242 -0
- pyvale/simcases/case01.i +101 -0
- pyvale/simcases/case02.i +156 -0
- pyvale/simcases/case03.i +136 -0
- pyvale/simcases/case04.i +181 -0
- pyvale/simcases/case05.i +234 -0
- pyvale/simcases/case06.i +305 -0
- pyvale/simcases/case07.geo +135 -0
- pyvale/simcases/case07.i +87 -0
- pyvale/simcases/case08.geo +144 -0
- pyvale/simcases/case08.i +153 -0
- pyvale/simcases/case09.geo +204 -0
- pyvale/simcases/case09.i +87 -0
- pyvale/simcases/case10.geo +204 -0
- pyvale/simcases/case10.i +257 -0
- pyvale/simcases/case11.geo +337 -0
- pyvale/simcases/case11.i +147 -0
- pyvale/simcases/case12.geo +388 -0
- pyvale/simcases/case12.i +329 -0
- pyvale/simcases/case13.i +140 -0
- pyvale/simcases/case14.i +159 -0
- pyvale/simcases/case15.geo +337 -0
- pyvale/simcases/case15.i +150 -0
- pyvale/simcases/case16.geo +391 -0
- pyvale/simcases/case16.i +357 -0
- pyvale/simcases/case16_d.i +360 -0
- pyvale/simcases/case16_u.i +360 -0
- pyvale/simcases/case17.geo +138 -0
- pyvale/simcases/case17.i +144 -0
- pyvale/simcases/case18.i +271 -0
- pyvale/simcases/case18_d.i +271 -0
- pyvale/simcases/case18_u.i +271 -0
- pyvale/simcases/case19.geo +252 -0
- pyvale/simcases/case19.i +99 -0
- pyvale/simcases/case20.geo +252 -0
- pyvale/simcases/case20.i +250 -0
- pyvale/simcases/case21.geo +74 -0
- pyvale/simcases/case21.i +155 -0
- pyvale/simcases/case22.geo +82 -0
- pyvale/simcases/case22.i +140 -0
- pyvale/simcases/case23.geo +164 -0
- pyvale/simcases/case23.i +140 -0
- pyvale/simcases/case24.geo +79 -0
- pyvale/simcases/case24.i +123 -0
- pyvale/simcases/case25.geo +82 -0
- pyvale/simcases/case25.i +140 -0
- pyvale/simcases/case26.geo +166 -0
- pyvale/simcases/case26.i +140 -0
- pyvale/simcases/cases_dictionary.yaml +336 -0
- pyvale/simcases/run_1case.py +60 -0
- pyvale/simcases/run_all_cases.py +69 -0
- pyvale/simcases/run_build_case.py +64 -0
- pyvale/simcases/run_example_cases.py +69 -0
- pyvale/strain/__init__.py +13 -0
- pyvale/strain/cpp/bindings.cpp +25 -0
- pyvale/strain/cpp/smooth.cpp +140 -0
- pyvale/strain/cpp/smooth.hpp +53 -0
- pyvale/strain/cpp/strain.cpp +390 -0
- pyvale/strain/cpp/strain.hpp +177 -0
- pyvale/strain/strain.py +117 -0
- pyvale/strain/strain_cpp.cpython-311-i386-linux-gnu.so +0 -0
- pyvale/strain/strainchecks.py +47 -0
- pyvale/strain/strainimport.py +303 -0
- pyvale/strain/strainresults.py +55 -0
- pyvale/verif/__init__.py +15 -0
- pyvale/verif/analyticmeshgen.py +102 -0
- pyvale/verif/analyticsimdatafactory.py +125 -0
- pyvale/verif/analyticsimdatagenerator.py +368 -0
- pyvale/verif/matchsimdata.py +113 -0
- pyvale/verif/pointsens.py +120 -0
- pyvale/verif/pointsensconst.py +19 -0
- pyvale/verif/pointsensmech.py +270 -0
- pyvale/verif/pointsensmultiphys.py +184 -0
- pyvale/verif/pointsensscalar.py +383 -0
- pyvale/verif/pointsenstensor.py +159 -0
- pyvale/verif/pointsensvector.py +157 -0
- pyvale-2026.1.1.dist-info/METADATA +98 -0
- pyvale-2026.1.1.dist-info/RECORD +860 -0
- pyvale-2026.1.1.dist-info/WHEEL +6 -0
- pyvale-2026.1.1.dist-info/licenses/LICENSE +21 -0
- pyvale.libs/libgomp-65f46eca.so.1.0.0 +0 -0
- share/eigen3/cmake/Eigen3Config.cmake +37 -0
- share/eigen3/cmake/Eigen3ConfigVersion.cmake +65 -0
- share/eigen3/cmake/Eigen3Targets.cmake +106 -0
- share/eigen3/cmake/UseEigen3.cmake +6 -0
- share/pkgconfig/eigen3.pc +9 -0
|
@@ -0,0 +1,615 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ==============================================================================
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
This module is used for performing Monte-Carlo virtual experiments over a series
|
|
9
|
+
of input simulation cases and sensor arrays.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import enum
|
|
13
|
+
from dataclasses import dataclass
|
|
14
|
+
from itertools import product
|
|
15
|
+
from multiprocessing.pool import Pool
|
|
16
|
+
import numpy as np
|
|
17
|
+
import pyvale.mooseherder as mh
|
|
18
|
+
from pyvale.sensorsim.sensorarray import ISensorArray
|
|
19
|
+
from pyvale.sensorsim.exceptions import ExpSimError
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class EExpSimPara(enum.Enum):
|
|
23
|
+
"""Parallelisation strategy to use for simulated experiments.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
ALL = enum.auto()
|
|
27
|
+
"""Each worker performs 'ALL' N simulated experiments for each combination of
|
|
28
|
+
simulation data and sensor arrays. This is the best option of point sensors.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
SPLIT = enum.auto()
|
|
32
|
+
"""Simulations are 'SPLIT' across workers each performing 1 of N simulations
|
|
33
|
+
for any given combination of simulation data and sensor arrays. This is the
|
|
34
|
+
best option for when each simulation is computationally heavy such as
|
|
35
|
+
imaging workflows.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass(slots=True)
|
|
40
|
+
class ExpSimSaveKeys:
|
|
41
|
+
"""Default string keys used for saving experiment simulation data in the
|
|
42
|
+
returned data dictionary. These keys appear in the last position of the
|
|
43
|
+
tuple key and indicate the data that is available. The first two positions
|
|
44
|
+
in the tuple key indicate the simulation key and sensor array key. For
|
|
45
|
+
example (sim_key,sensor_key,data_key). Setting any of the data keys in this
|
|
46
|
+
class to None will mean that data is not saved from the simulation. This is
|
|
47
|
+
useful if you only want the simulated measurements but not the error
|
|
48
|
+
breakdown or if you are noy using field errors and don't need the perturbed
|
|
49
|
+
sensor data. Note that the measurement key must be specified.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
meas: str = "meas"
|
|
53
|
+
"""Default string key for the measurement array, must be specified.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
sens_times: str = "sens_times"
|
|
57
|
+
"""Default string key for the nominal sensor sampling times. Must be
|
|
58
|
+
specified and stored such that resuls traces can be plotted.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
sys: str | None = "sys_errs"
|
|
62
|
+
"""Deafult string key for the systematic error array. Set to None to not
|
|
63
|
+
save the array.
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
rand: str | None = "rand_errs"
|
|
67
|
+
"""Deafult string key for the random error array. Set to None to not
|
|
68
|
+
save the array.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
truth: str | None = None
|
|
72
|
+
"""String key for the truth array. By default None as the truth array can
|
|
73
|
+
be calculated from the measurement array and error arrays.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
pert_sens_times: str | None = "pert_sens_times"
|
|
77
|
+
"""Default string key for perturbed sensor times when field errors are used.
|
|
78
|
+
Set to None if there are no field errors or if the field error is not
|
|
79
|
+
perturbing the sensor sampling times.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
pert_sens_pos: str | None = "pert_sens_pos"
|
|
83
|
+
"""Default string key for perturbed sensor positions when field errors are
|
|
84
|
+
used. Set to None if there are no field errors or if the field error is not
|
|
85
|
+
perturbing the sensor positions.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
@dataclass(slots=True)
|
|
89
|
+
class ExpSimOpts:
|
|
90
|
+
"""Experiment simulation options dataclass specifying options for what data
|
|
91
|
+
arrays to store in the data dictionary and options for parallelisation of
|
|
92
|
+
the simulated experiments.
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
workers: int | None = None
|
|
96
|
+
"""Number of workers when running simulations in parallel. Defaults to None.
|
|
97
|
+
If None then simulations are run sequentially without multi-processing.
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
para: EExpSimPara = EExpSimPara.ALL
|
|
101
|
+
"""Options for running 'ALL' N simulations per worker or 'SPLIT' N
|
|
102
|
+
simulations across workers. 'ALL' is most efficient for point sensors and
|
|
103
|
+
'SPLIT' should be used for computationally heavy single simulations.
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class ExperimentSimulator:
|
|
108
|
+
"""An experiment simulator for running Monte-Carlo simulation by applying a
|
|
109
|
+
dictionary of sensor arrays to a dictionary of simulations over a given
|
|
110
|
+
number of user defined experiments.
|
|
111
|
+
"""
|
|
112
|
+
__slots__ = ("_sim_dict","_sens_dict","_exp_sim_opts","_save_keys")
|
|
113
|
+
|
|
114
|
+
def __init__(self,
|
|
115
|
+
sim_dict: dict[str,mh.SimData],
|
|
116
|
+
sensor_arrays: dict[str,ISensorArray],
|
|
117
|
+
exp_sim_opts: ExpSimOpts | None = None,
|
|
118
|
+
exp_save_keys: ExpSimSaveKeys | None = None,
|
|
119
|
+
) -> None:
|
|
120
|
+
"""
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
sim_dict : dict[str,mh.SimData]
|
|
124
|
+
The simulations
|
|
125
|
+
sensor_arrays : dict[str,ISensorArray]
|
|
126
|
+
The sensor arrays that will be applied to each simulation to
|
|
127
|
+
generate the virtual experiment data.
|
|
128
|
+
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
self._sim_dict = sim_dict
|
|
132
|
+
self._sens_dict = sensor_arrays
|
|
133
|
+
|
|
134
|
+
if exp_sim_opts is None:
|
|
135
|
+
self._exp_sim_opts = ExpSimOpts()
|
|
136
|
+
else:
|
|
137
|
+
self._exp_sim_opts = exp_sim_opts
|
|
138
|
+
|
|
139
|
+
if exp_save_keys is None:
|
|
140
|
+
self._save_keys = ExpSimSaveKeys()
|
|
141
|
+
else:
|
|
142
|
+
self._save_keys = exp_save_keys
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def get_exp_save_keys(self) -> ExpSimSaveKeys:
|
|
146
|
+
"""Gets the experiment simulation data keys.
|
|
147
|
+
|
|
148
|
+
Returns
|
|
149
|
+
-------
|
|
150
|
+
ExpSimSaveKeys
|
|
151
|
+
Dataclass containing the keys used to identify output data from the
|
|
152
|
+
simulated experiments.
|
|
153
|
+
"""
|
|
154
|
+
return self._save_keys
|
|
155
|
+
|
|
156
|
+
def get_sim_dict(self) -> dict[str,mh.SimData]:
|
|
157
|
+
"""Gets the dicitionary of simulations to run simulated experiments for.
|
|
158
|
+
|
|
159
|
+
Returns
|
|
160
|
+
-------
|
|
161
|
+
dict[str,mh.SimData]
|
|
162
|
+
Dictionary of simulation data objects.
|
|
163
|
+
"""
|
|
164
|
+
return self._sim_dict
|
|
165
|
+
|
|
166
|
+
def get_sensor_array_dict(self) -> dict[str,ISensorArray]:
|
|
167
|
+
"""Gets the sensor array dictionary for this experiment.
|
|
168
|
+
|
|
169
|
+
Returns
|
|
170
|
+
-------
|
|
171
|
+
dict[str,ISensorArray]
|
|
172
|
+
Dicitionary of sensor arrays for the simulated experiment.
|
|
173
|
+
"""
|
|
174
|
+
return self._sens_dict
|
|
175
|
+
|
|
176
|
+
def run_experiments(self,
|
|
177
|
+
num_exp_per_sim: int
|
|
178
|
+
) -> dict[tuple[str,...],np.ndarray]:
|
|
179
|
+
"""Runs the specified number of virtual experiments over the number of
|
|
180
|
+
input simulation cases and virtual sensor arrays returning the results.
|
|
181
|
+
|
|
182
|
+
Parameters
|
|
183
|
+
----------
|
|
184
|
+
num_exp_per_sim : int
|
|
185
|
+
Number of virtual experiments to perform for each combination of
|
|
186
|
+
input physics simulations and sensor arrays. Must be a non-zero
|
|
187
|
+
positive integer.
|
|
188
|
+
|
|
189
|
+
Returns
|
|
190
|
+
-------
|
|
191
|
+
dict[tuple[str,...],np.ndarray]
|
|
192
|
+
Dictionary of virtual experimental data arrays where the key is a
|
|
193
|
+
tuple with form (sim_key,sens_key,data_key). The simulation and
|
|
194
|
+
sensor keys correspond to the input simulation and sensor
|
|
195
|
+
dictionaries and the data key returns a given output from the
|
|
196
|
+
simulation. See the `ExpSimSaveKeys` dataclass for valid data keys.
|
|
197
|
+
The 'measurement 'data arrays returned for simulated experiment
|
|
198
|
+
output have shape=(n_exps,n_sens,n_comps,n_time_steps).
|
|
199
|
+
|
|
200
|
+
Raises
|
|
201
|
+
------
|
|
202
|
+
ExpSimError
|
|
203
|
+
The number of virtual experiments to run is not a positive integer.
|
|
204
|
+
"""
|
|
205
|
+
|
|
206
|
+
#-----------------------------------------------------------------------
|
|
207
|
+
# Setup by checking and setting the number of experiments
|
|
208
|
+
if num_exp_per_sim <= 0:
|
|
209
|
+
raise ExpSimError(
|
|
210
|
+
"Number of experiments per sim must be a positive integer"
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
#-----------------------------------------------------------------------
|
|
214
|
+
# Build function call list and associated keys for the simulation
|
|
215
|
+
# NOTE: avoids if/else in the hot loop and only calls the required
|
|
216
|
+
# functions using a loop over the list and getattr() on the sens_array
|
|
217
|
+
# or perturbed sens_data objects.
|
|
218
|
+
exp_keys = self._save_keys
|
|
219
|
+
sens_funcs: list[tuple[str,str]] = [(exp_keys.meas,"sim_measurements"),]
|
|
220
|
+
|
|
221
|
+
if exp_keys.rand is not None:
|
|
222
|
+
sens_funcs.append((exp_keys.rand,"get_errors_random"))
|
|
223
|
+
|
|
224
|
+
if exp_keys.sys is not None:
|
|
225
|
+
sens_funcs.append((exp_keys.sys,"get_errors_systematic"))
|
|
226
|
+
|
|
227
|
+
if exp_keys.truth is not None:
|
|
228
|
+
sens_funcs.append((exp_keys.truth,"get_truth"))
|
|
229
|
+
|
|
230
|
+
sens_vars = []
|
|
231
|
+
if exp_keys.pert_sens_times is not None:
|
|
232
|
+
sens_vars.append((exp_keys.pert_sens_times,"sample_times"))
|
|
233
|
+
|
|
234
|
+
if exp_keys.pert_sens_pos is not None:
|
|
235
|
+
sens_vars.append((exp_keys.pert_sens_pos,"positions"))
|
|
236
|
+
|
|
237
|
+
#-----------------------------------------------------------------------
|
|
238
|
+
# 1) para over sim_data/sens_array, run N per worker
|
|
239
|
+
if (self._exp_sim_opts.workers is not None and
|
|
240
|
+
self._exp_sim_opts.para == EExpSimPara.ALL):
|
|
241
|
+
|
|
242
|
+
exp_data = self._run_para_all(num_exp_per_sim,sens_funcs,sens_vars)
|
|
243
|
+
|
|
244
|
+
# 2) para over all sim_data/sens_array/Nsims
|
|
245
|
+
elif (self._exp_sim_opts.workers is not None and
|
|
246
|
+
self._exp_sim_opts.para == EExpSimPara.SPLIT):
|
|
247
|
+
|
|
248
|
+
exp_data = self._run_para_split(num_exp_per_sim,
|
|
249
|
+
sens_funcs,
|
|
250
|
+
sens_vars)
|
|
251
|
+
|
|
252
|
+
# 3) Run everything sequentially
|
|
253
|
+
else:
|
|
254
|
+
exp_data = self._run_sequential(num_exp_per_sim,
|
|
255
|
+
sens_funcs,
|
|
256
|
+
sens_vars)
|
|
257
|
+
|
|
258
|
+
#-----------------------------------------------------------------------
|
|
259
|
+
# dict[tuple[str,...],shape=(n_sims,n_exps,n_sens,n_comps,n_time_steps)]
|
|
260
|
+
return exp_data
|
|
261
|
+
|
|
262
|
+
#---------------------------------------------------------------------------
|
|
263
|
+
def _run_para_all(self,
|
|
264
|
+
num_exp: int,
|
|
265
|
+
sens_funcs: list[tuple[str,str]],
|
|
266
|
+
sens_vars: list[tuple[str,str]],
|
|
267
|
+
) -> dict[tuple[str,...],np.ndarray]:
|
|
268
|
+
"""Runs virtual experiments in parallel based on the `ALL` strategy where
|
|
269
|
+
`num_exp` experiments are run on each worker.
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
Parameters
|
|
273
|
+
----------
|
|
274
|
+
num_exp : int
|
|
275
|
+
Number of virtual experiments to run per combination of simulation
|
|
276
|
+
data and sensor array.
|
|
277
|
+
sens_funcs : list[tuple[str,str]]
|
|
278
|
+
The string keys and string names of functions to call on the sensor
|
|
279
|
+
array as part of the simulation. The first tuple should always call
|
|
280
|
+
the `sim_measurements()` function and has default key 'meas'.
|
|
281
|
+
sens_vars : list[tuple[str,str]]
|
|
282
|
+
The string keys and string names for the variables to extract from
|
|
283
|
+
the perturbed sensor data, useful for extracting information from
|
|
284
|
+
field errors.
|
|
285
|
+
|
|
286
|
+
Returns
|
|
287
|
+
-------
|
|
288
|
+
dict[tuple[str,...],np.ndarray]
|
|
289
|
+
Dictionary of virtual experimental data arrays where the key is a
|
|
290
|
+
tuple with form (sim_key,sens_key,data_key). All data arrays are
|
|
291
|
+
numpy arrays.
|
|
292
|
+
"""
|
|
293
|
+
assert self._exp_sim_opts.workers > 0, ("Number of workers must"
|
|
294
|
+
+ " be greater than 0.")
|
|
295
|
+
|
|
296
|
+
time_str_key = self._save_keys.sens_times
|
|
297
|
+
|
|
298
|
+
exp_data = {}
|
|
299
|
+
|
|
300
|
+
with Pool(self._exp_sim_opts.workers) as pool:
|
|
301
|
+
processes = []
|
|
302
|
+
for (key_sim, sim_data), (key_sens, sens_array) in (
|
|
303
|
+
product(self._sim_dict.items(), self._sens_dict.items())
|
|
304
|
+
):
|
|
305
|
+
time_key = (key_sim,key_sens,time_str_key)
|
|
306
|
+
exp_data[time_key] = sens_array.get_sample_times()
|
|
307
|
+
|
|
308
|
+
args = (
|
|
309
|
+
num_exp,
|
|
310
|
+
key_sim,
|
|
311
|
+
key_sens,
|
|
312
|
+
sim_data,
|
|
313
|
+
sens_array,
|
|
314
|
+
sens_funcs,
|
|
315
|
+
sens_vars,
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
process = pool.apply_async(_run_all_sims,args=args)
|
|
319
|
+
|
|
320
|
+
processes.append(process)
|
|
321
|
+
|
|
322
|
+
for pp in processes:
|
|
323
|
+
# dict[tuple[str,str,str],
|
|
324
|
+
# shape=(n_exps,n_sens,n_comps,n_time_steps)]
|
|
325
|
+
sim_exps = pp.get()
|
|
326
|
+
exp_data.update(sim_exps)
|
|
327
|
+
|
|
328
|
+
return exp_data
|
|
329
|
+
|
|
330
|
+
#---------------------------------------------------------------------------
|
|
331
|
+
def _run_para_split(self,
|
|
332
|
+
num_exp: int,
|
|
333
|
+
sens_funcs: list[tuple[str,str]],
|
|
334
|
+
sens_vars: list[tuple[str,str]],
|
|
335
|
+
) -> dict[tuple[str,...],np.ndarray]:
|
|
336
|
+
"""Runs virtual experiments in parallel based on the `SPLIT` strategy
|
|
337
|
+
where one simulated experiment is run on each work splitting the
|
|
338
|
+
`num_exp` experiments across all workes. Useful for computationally
|
|
339
|
+
heavy simulation chains.
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
Parameters
|
|
343
|
+
----------
|
|
344
|
+
num_exp : int
|
|
345
|
+
Number of virtual experiments to run per combination of simulation
|
|
346
|
+
data and sensor array.
|
|
347
|
+
sens_funcs : list[tuple[str,str]]
|
|
348
|
+
The string keys and string names of functions to call on the sensor
|
|
349
|
+
array as part of the simulation. The first tuple should always call
|
|
350
|
+
the `sim_measurements()` function and has default key 'meas'.
|
|
351
|
+
sens_vars : list[tuple[str,str]]
|
|
352
|
+
The string keys and string names for the variables to extract from
|
|
353
|
+
the perturbed sensor data, useful for extracting information from
|
|
354
|
+
field errors.
|
|
355
|
+
|
|
356
|
+
Returns
|
|
357
|
+
-------
|
|
358
|
+
dict[tuple[str,...],np.ndarray]
|
|
359
|
+
Dictionary of virtual experimental data arrays where the key is a
|
|
360
|
+
tuple with form (sim_key,sens_key,data_key). All data arrays are
|
|
361
|
+
numpy arrays.
|
|
362
|
+
"""
|
|
363
|
+
assert self._exp_sim_opts.workers > 0, ("Number of workers must"
|
|
364
|
+
+ " be greater than 0.")
|
|
365
|
+
|
|
366
|
+
exp_keys = self._save_keys
|
|
367
|
+
time_str_key = exp_keys.sens_times
|
|
368
|
+
|
|
369
|
+
exp_data = {}
|
|
370
|
+
# We are going to have to populate the experiment array on the fly
|
|
371
|
+
# so we need to pre-alloc to index into it as we get results.
|
|
372
|
+
for (key_sim, sim_data), (key_sens, sens_array) in (
|
|
373
|
+
product(self._sim_dict.items(), self._sens_dict.items())
|
|
374
|
+
):
|
|
375
|
+
# Pre-alloc numpy arrays for simulated measurements.
|
|
376
|
+
exp_shape = (num_exp,) + sens_array.get_measurement_shape()
|
|
377
|
+
for kk, mm in sens_funcs:
|
|
378
|
+
exp_data[(key_sim,key_sens,kk)] = (
|
|
379
|
+
np.empty(exp_shape,dtype=np.float64)
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
# Pre-alloc numpy arrays for perturbed sensor data
|
|
383
|
+
err_int = sens_array.get_error_integrator()
|
|
384
|
+
init_sens_data = err_int.get_sens_data_accumulated()
|
|
385
|
+
for kk, vv in sens_vars:
|
|
386
|
+
attr = getattr(init_sens_data,vv)
|
|
387
|
+
if attr is not None:
|
|
388
|
+
shape = (num_exp,) + attr.shape
|
|
389
|
+
exp_data[(key_sim,key_sens,kk)] = (
|
|
390
|
+
np.empty(shape,dtype=np.float64)
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
with Pool(self._exp_sim_opts.workers) as pool:
|
|
394
|
+
processes_with_id = []
|
|
395
|
+
for (key_sim, sim_data), (key_sens, sens_array) in (
|
|
396
|
+
product(self._sim_dict.items(), self._sens_dict.items())
|
|
397
|
+
):
|
|
398
|
+
time_key = (key_sim,key_sens,time_str_key)
|
|
399
|
+
exp_data[time_key] = sens_array.get_sample_times()
|
|
400
|
+
|
|
401
|
+
for ee in range(num_exp):
|
|
402
|
+
|
|
403
|
+
args = (key_sim,
|
|
404
|
+
key_sens,
|
|
405
|
+
sim_data,
|
|
406
|
+
sens_array,
|
|
407
|
+
sens_funcs,
|
|
408
|
+
sens_vars)
|
|
409
|
+
|
|
410
|
+
process = pool.apply_async(_run_one_sim,args=args)
|
|
411
|
+
|
|
412
|
+
processes_with_id.append({"process":process,
|
|
413
|
+
"exp_ind":ee})
|
|
414
|
+
|
|
415
|
+
for pp in processes_with_id:
|
|
416
|
+
# dict[tuple[str,..],shape=(n_sens,n_comps,n_time_steps)]
|
|
417
|
+
one_exp_dict = pp["process"].get()
|
|
418
|
+
exp_i = pp["exp_ind"]
|
|
419
|
+
|
|
420
|
+
for kk,aa in one_exp_dict.items():
|
|
421
|
+
# NOTE: broadcast here because general measurement type
|
|
422
|
+
# arrays are 4D, other arrays like sensor perturbations are
|
|
423
|
+
# different.
|
|
424
|
+
# shape=(n_exps,n_sens,n_comps,n_time_steps)
|
|
425
|
+
exp_data[kk][exp_i] = aa
|
|
426
|
+
|
|
427
|
+
return exp_data
|
|
428
|
+
|
|
429
|
+
#---------------------------------------------------------------------------
|
|
430
|
+
def _run_sequential(self,
|
|
431
|
+
num_exp: int,
|
|
432
|
+
sens_funcs: list[tuple[str,str]],
|
|
433
|
+
sens_vars: list[tuple[str,str]],
|
|
434
|
+
) -> dict[tuple[str,...],np.ndarray]:
|
|
435
|
+
"""Runs virtual experiments sequentially on a the main python
|
|
436
|
+
interpreter.
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
Parameters
|
|
440
|
+
----------
|
|
441
|
+
num_exp : int
|
|
442
|
+
Number of virtual experiments to run per combination of simulation
|
|
443
|
+
data and sensor array.
|
|
444
|
+
sens_funcs : list[tuple[str,str]]
|
|
445
|
+
The string keys and string names of functions to call on the sensor
|
|
446
|
+
array as part of the simulation. The first tuple should always call
|
|
447
|
+
the `sim_measurements()` function and has default key 'meas'.
|
|
448
|
+
sens_vars : list[tuple[str,str]]
|
|
449
|
+
The string keys and string names for the variables to extract from
|
|
450
|
+
the perturbed sensor data, useful for extracting information from
|
|
451
|
+
field errors.
|
|
452
|
+
|
|
453
|
+
Returns
|
|
454
|
+
-------
|
|
455
|
+
dict[tuple[str,...],np.ndarray]
|
|
456
|
+
Dictionary of virtual experimental data arrays where the key is a
|
|
457
|
+
tuple with form (sim_key,sens_key,data_key). All data arrays are
|
|
458
|
+
numpy arrays.
|
|
459
|
+
"""
|
|
460
|
+
time_str_key = self._save_keys.sens_times
|
|
461
|
+
|
|
462
|
+
exp_data = {}
|
|
463
|
+
|
|
464
|
+
for (key_sim, sim_data), (key_sens, sens_array) in (
|
|
465
|
+
product(self._sim_dict.items(), self._sens_dict.items())
|
|
466
|
+
):
|
|
467
|
+
|
|
468
|
+
time_key = (key_sim,key_sens,time_str_key)
|
|
469
|
+
exp_data[time_key] = sens_array.get_sample_times()
|
|
470
|
+
|
|
471
|
+
exp_res = _run_all_sims(num_exp,
|
|
472
|
+
key_sim,
|
|
473
|
+
key_sens,
|
|
474
|
+
sim_data,
|
|
475
|
+
sens_array,
|
|
476
|
+
sens_funcs,
|
|
477
|
+
sens_vars)
|
|
478
|
+
|
|
479
|
+
exp_data.update(exp_res)
|
|
480
|
+
|
|
481
|
+
return exp_data
|
|
482
|
+
|
|
483
|
+
#-------------------------------------------------------------------------------
|
|
484
|
+
def _run_one_sim(sim_key: str,
|
|
485
|
+
sens_key: str,
|
|
486
|
+
sim_data: mh.SimData,
|
|
487
|
+
sens_array: ISensorArray,
|
|
488
|
+
sens_funcs: list[tuple[str,str]],
|
|
489
|
+
sens_vars: list[tuple[str,str]],
|
|
490
|
+
) -> dict[tuple[str,...],np.ndarray]:
|
|
491
|
+
"""Helper function for parallelisation of simulated experiments using the
|
|
492
|
+
`SPLIT` strategy to run a single simulation per worker.
|
|
493
|
+
|
|
494
|
+
Parameters
|
|
495
|
+
----------
|
|
496
|
+
sim_key : str
|
|
497
|
+
String key identifying the input physics simulation.
|
|
498
|
+
sens_key : str
|
|
499
|
+
String key identifying the sensor array.
|
|
500
|
+
sim_data : mh.SimData
|
|
501
|
+
Simulation data object for the simulation.
|
|
502
|
+
sens_array : ISensorArray
|
|
503
|
+
Sensor array object to apply to the simulation.
|
|
504
|
+
sens_funcs : list[tuple[str,str]]
|
|
505
|
+
String data key and function name as a string in order of execution for
|
|
506
|
+
the simulated experiment.
|
|
507
|
+
sens_vars : list[tuple[str,str]]
|
|
508
|
+
String data key and variable name as a string for the perturbed sensor
|
|
509
|
+
data to extract from the simulation.
|
|
510
|
+
|
|
511
|
+
Returns
|
|
512
|
+
-------
|
|
513
|
+
dict[tuple[str,...],np.ndarray]
|
|
514
|
+
The simulated experiment data dictionary.
|
|
515
|
+
"""
|
|
516
|
+
# NOTE: need to reseed the error chain otherwise each worker inherits the
|
|
517
|
+
# same random seed producing the same simulations.
|
|
518
|
+
err_int = sens_array.get_error_integrator()
|
|
519
|
+
err_int.reseed_error_chain()
|
|
520
|
+
sens_array.get_field().set_sim_data(sim_data)
|
|
521
|
+
|
|
522
|
+
sim_exp = {}
|
|
523
|
+
for kk, mm in sens_funcs:
|
|
524
|
+
bound_func = getattr(sens_array,mm)
|
|
525
|
+
sim_exp[(sim_key,sens_key,kk)] = bound_func()
|
|
526
|
+
|
|
527
|
+
pert_sens_data = err_int.get_sens_data_accumulated()
|
|
528
|
+
for kk, vv in sens_vars:
|
|
529
|
+
attr = getattr(pert_sens_data,vv)
|
|
530
|
+
if attr is not None:
|
|
531
|
+
sim_exp[(sim_key,sens_key,kk)] = attr
|
|
532
|
+
|
|
533
|
+
# RETURN: dict[str,np.array.shape=(n_sens,n_comps,n_time_steps)]
|
|
534
|
+
return sim_exp
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
def _run_all_sims(num_exp: int,
|
|
538
|
+
sim_key: str,
|
|
539
|
+
sens_key: str,
|
|
540
|
+
sim_data: mh.SimData,
|
|
541
|
+
sens_array: ISensorArray,
|
|
542
|
+
sens_funcs: list[tuple[str,str]],
|
|
543
|
+
sens_vars: list[tuple[str,str]]
|
|
544
|
+
) -> dict[tuple[str,...],np.ndarray]:
|
|
545
|
+
"""Helper function for parallelisation of virtual experiments using the
|
|
546
|
+
`ALL` strategy where all `num_exp` experiments are run on a single worker.
|
|
547
|
+
|
|
548
|
+
Parameters
|
|
549
|
+
----------
|
|
550
|
+
num_exp : int
|
|
551
|
+
Number of virtual experiments to run for this combination of simulation
|
|
552
|
+
data and sensor array.
|
|
553
|
+
sim_key : str
|
|
554
|
+
String key identifying the input physics simulation.
|
|
555
|
+
sens_key : str
|
|
556
|
+
String key identifying the sensor array.
|
|
557
|
+
sim_data : mh.SimData
|
|
558
|
+
Simulation data object for the simulation.
|
|
559
|
+
sens_array : ISensorArray
|
|
560
|
+
Sensor array object to apply to the simulation.
|
|
561
|
+
sens_funcs : list[tuple[str,str]]
|
|
562
|
+
String data key and function name as a string in order of execution for
|
|
563
|
+
the simulated experiment.
|
|
564
|
+
sens_vars : list[tuple[str,str]]
|
|
565
|
+
String data key and variable name as a string for the perturbed sensor
|
|
566
|
+
data to extract from the simulation.
|
|
567
|
+
|
|
568
|
+
Returns
|
|
569
|
+
-------
|
|
570
|
+
dict[tuple[str,...],np.ndarray]
|
|
571
|
+
The simulated experiment data dictionary.
|
|
572
|
+
"""
|
|
573
|
+
|
|
574
|
+
# NOTE: need to reseed the error chain otherwise each worker inherits the
|
|
575
|
+
# same random seed producing the same simulations.
|
|
576
|
+
err_int = sens_array.get_error_integrator()
|
|
577
|
+
err_int.reseed_error_chain()
|
|
578
|
+
sens_array.get_field().set_sim_data(sim_data)
|
|
579
|
+
|
|
580
|
+
exp_shape = (num_exp,)+sens_array.get_measurement_shape()
|
|
581
|
+
|
|
582
|
+
# Get the bound functions for this sensor array once before the sim loop
|
|
583
|
+
# and pre-alloc numpy arrays
|
|
584
|
+
bound_sens_funcs = [] # List of tuples to guarantee execution order
|
|
585
|
+
sim_exp = {}
|
|
586
|
+
for kk, mm in sens_funcs:
|
|
587
|
+
bound_sens_funcs.append((kk,getattr(sens_array,mm)))
|
|
588
|
+
|
|
589
|
+
sim_exp[(sim_key,sens_key,kk)] = np.empty(exp_shape,dtype=np.float64)
|
|
590
|
+
|
|
591
|
+
# Pre-alloc numpy arrays for perturbed sensor data
|
|
592
|
+
init_sens_data = err_int.get_sens_data_accumulated()
|
|
593
|
+
for kk, vv in sens_vars:
|
|
594
|
+
attr = getattr(init_sens_data,vv)
|
|
595
|
+
|
|
596
|
+
if attr is not None:
|
|
597
|
+
shape = (num_exp,) + attr.shape
|
|
598
|
+
sim_exp[(sim_key,sens_key,kk)] = np.empty(shape,dtype=np.float64)
|
|
599
|
+
|
|
600
|
+
# Simulation loop, first bound func is always `sim_measurements`
|
|
601
|
+
for ee in range(num_exp):
|
|
602
|
+
for kk, bound_func in bound_sens_funcs:
|
|
603
|
+
# NOTE: array broadcast here, array is normally 4D: [ee,:,:,:] but
|
|
604
|
+
# might be different for storing SensorData arrays
|
|
605
|
+
sim_exp[(sim_key,sens_key,kk)][ee] = bound_func()
|
|
606
|
+
|
|
607
|
+
pert_sens_data = err_int.get_sens_data_accumulated()
|
|
608
|
+
for kk, vv in sens_vars:
|
|
609
|
+
attr = getattr(pert_sens_data,vv)
|
|
610
|
+
if attr is not None:
|
|
611
|
+
sim_exp[(sim_key,sens_key,kk)][ee] = attr
|
|
612
|
+
|
|
613
|
+
# RETURN: dict[tuple[str,str,str],
|
|
614
|
+
# np.array.shape=(n_exps,n_sens,n_comps,n_time_steps)]
|
|
615
|
+
return sim_exp
|