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,177 @@
|
|
|
1
|
+
// ================================================================================
|
|
2
|
+
// pyvale: the python validation engine
|
|
3
|
+
// License: MIT
|
|
4
|
+
// Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
// ================================================================================
|
|
6
|
+
|
|
7
|
+
#ifndef DICSTRAIN_H
|
|
8
|
+
#define DICSTRAIN_H
|
|
9
|
+
|
|
10
|
+
// STD library Header files
|
|
11
|
+
#include <vector>
|
|
12
|
+
#include <cmath>
|
|
13
|
+
|
|
14
|
+
// pybind header files
|
|
15
|
+
#include <pybind11/pybind11.h>
|
|
16
|
+
#include <pybind11/numpy.h>
|
|
17
|
+
|
|
18
|
+
// common_cpp Header files
|
|
19
|
+
#include "../../common_cpp/util.hpp"
|
|
20
|
+
#include <Eigen/Dense>
|
|
21
|
+
|
|
22
|
+
// Program Header files
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
namespace py = pybind11;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
namespace strain {
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @brief Struct for the strain window. Contains subset coordinates (x,y)
|
|
32
|
+
* and the corresponding displacement vectors (u,v).
|
|
33
|
+
*
|
|
34
|
+
*/
|
|
35
|
+
struct Window {
|
|
36
|
+
std::vector<int> x;
|
|
37
|
+
std::vector<int> y;
|
|
38
|
+
std::vector<double> u;
|
|
39
|
+
std::vector<double> v;
|
|
40
|
+
|
|
41
|
+
Window(int sw_size)
|
|
42
|
+
: x(sw_size * sw_size, 0.0),
|
|
43
|
+
y(sw_size * sw_size, 0.0),
|
|
44
|
+
u(sw_size * sw_size, 0.0),
|
|
45
|
+
v(sw_size * sw_size, 0.0)
|
|
46
|
+
{}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
struct Results {
|
|
51
|
+
std::vector<int> x;
|
|
52
|
+
std::vector<int> y;
|
|
53
|
+
std::vector<double> def_grad;
|
|
54
|
+
std::vector<double> strain;
|
|
55
|
+
std::vector<bool> valid_window;
|
|
56
|
+
|
|
57
|
+
Results(int nwindows)
|
|
58
|
+
: x(nwindows, 0),
|
|
59
|
+
y(nwindows, 0),
|
|
60
|
+
def_grad(nwindows*4, std::nan("")),
|
|
61
|
+
strain(nwindows*4, std::nan("")),
|
|
62
|
+
valid_window(nwindows, false)
|
|
63
|
+
{}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
void engine(const py::array_t<int> &ss_x_arr,
|
|
69
|
+
const py::array_t<int> &ss_y_arr,
|
|
70
|
+
const py::array_t<double> &u_arr,
|
|
71
|
+
const py::array_t<double> &v_arr,
|
|
72
|
+
const int nss_x, const int nss_y,
|
|
73
|
+
const int nimg, const int sw_size,
|
|
74
|
+
const int q, const std::string &form,
|
|
75
|
+
const std::vector<std::string> &filenames,
|
|
76
|
+
const common_util::SaveConfig &strain_save_conf);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @brief Fills the strain window with the subset coordinates
|
|
80
|
+
* and displacement vectors based on the input parameters
|
|
81
|
+
*
|
|
82
|
+
* @param ss_x subset x-coordinates
|
|
83
|
+
* @param ss_y subset y-coordinates
|
|
84
|
+
* @param u horizontal displacement
|
|
85
|
+
* @param v vertical displacement
|
|
86
|
+
* @param window strain window struct.
|
|
87
|
+
* @param num_ss_x number of subsets along the x-axis
|
|
88
|
+
* @param num_ss_y number of subsets along the y-axis
|
|
89
|
+
* @param x0_idx index of the x-coordinate in the subset mask
|
|
90
|
+
* @param y0_idx index of the x-coordinate in the subset mask
|
|
91
|
+
* @param swr strain window radius (strain window / 2)
|
|
92
|
+
* @return true if the strain window is filled successfully
|
|
93
|
+
* @return false if the strain window is out of bounds
|
|
94
|
+
*/
|
|
95
|
+
bool fill_window(int *ss_x, int *ss_y, double *u, double *v,
|
|
96
|
+
int img, int sw, Window &window,
|
|
97
|
+
int nss_x, int nss_y, int sw_size);
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
Eigen::Matrix2d compute_def_grad(const int q, const Eigen::VectorXd &uc,
|
|
102
|
+
const Eigen::VectorXd& vc, const double x0,
|
|
103
|
+
const double y0);
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
Eigen::Matrix2d compute_strain(const std::string& form,
|
|
107
|
+
const Eigen::Matrix2d& deform_grad);
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
*/
|
|
112
|
+
void append_results(int sw, strain::Results &results,
|
|
113
|
+
const bool save_at_end, const int x0, const int y0,
|
|
114
|
+
const Eigen::Matrix2d &deform_grad,
|
|
115
|
+
const Eigen::Matrix2d &eps,
|
|
116
|
+
const int nwindows, const int img);
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
*/
|
|
121
|
+
void save_to_disk(int img, const strain::Results &results,
|
|
122
|
+
const common_util::SaveConfig &strain_save_conf,
|
|
123
|
+
const int nwindows, const int nimg,
|
|
124
|
+
const std::vector<std::string> filenames);
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
// strain formulations
|
|
129
|
+
/**
|
|
130
|
+
* @brief Calculates Green strain for a given deformation gradient F and identity matrix I.
|
|
131
|
+
*
|
|
132
|
+
* @param F deformation gradient
|
|
133
|
+
* @param I Identity Matrix
|
|
134
|
+
* @return Eigen::Matrix2d Green Strain
|
|
135
|
+
*/
|
|
136
|
+
inline Eigen::Matrix2d green(Eigen::Matrix2d F);
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @brief Calculates Hencky strain for a given deformation gradient F and identity matrix I.
|
|
140
|
+
*
|
|
141
|
+
* @param F deformation gradient
|
|
142
|
+
* @param I Identity Matrix
|
|
143
|
+
* @return Eigen::Matrix2d Hencky Strain
|
|
144
|
+
*/
|
|
145
|
+
inline Eigen::Matrix2d hencky(Eigen::Matrix2d F);
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @brief Calculates Almansi strain for a given deformation gradient F and identity matrix I.
|
|
149
|
+
*
|
|
150
|
+
* @param F deformation gradient
|
|
151
|
+
* @param I Identity Matrix
|
|
152
|
+
* @return Eigen::Matrix2d Almansi Strain
|
|
153
|
+
*/
|
|
154
|
+
inline Eigen::Matrix2d almansi(Eigen::Matrix2d F);
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @brief Calculates Biot strain in the euler coordiate system for a given deformation gradient F and identity matrix I.
|
|
158
|
+
*
|
|
159
|
+
* @param F deformation gradient
|
|
160
|
+
* @param I Identity Matrix
|
|
161
|
+
* @return Eigen::Matrix2d Almansi Strain
|
|
162
|
+
*/
|
|
163
|
+
inline Eigen::Matrix2d biot_euler(Eigen::Matrix2d F);
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @brief Calculates Biot strain in the lagrange coordiate system for a given deformation gradient F and identity matrix I.
|
|
167
|
+
*
|
|
168
|
+
* @param F deformation gradient
|
|
169
|
+
* @param I Identity Matrix
|
|
170
|
+
* @return Eigen::Matrix2d Almansi Strain
|
|
171
|
+
*/
|
|
172
|
+
inline Eigen::Matrix2d biot_lagrange(Eigen::Matrix2d F);
|
|
173
|
+
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
#endif // DICSTRAIN_H
|
pyvale/strain/strain.py
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# ================================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
# pyvale
|
|
10
|
+
from pyvale.strain.strainresults import StrainResults
|
|
11
|
+
from pyvale.strain.strainchecks import check_strain_files
|
|
12
|
+
from pyvale.dic.dicdataimport import import_2d
|
|
13
|
+
from pyvale.common_py.util import check_output_directory
|
|
14
|
+
import pyvale.strain.strain_cpp as strain_cpp
|
|
15
|
+
import pyvale.common_cpp.common_cpp as common_cpp
|
|
16
|
+
|
|
17
|
+
def calculate_2d(data: str | Path,
|
|
18
|
+
window_size: int=5,
|
|
19
|
+
window_element: int=9,
|
|
20
|
+
input_binary: bool=False,
|
|
21
|
+
input_delimiter: str=",",
|
|
22
|
+
output_basepath: Path | str="./",
|
|
23
|
+
output_binary: bool=False,
|
|
24
|
+
output_prefix: str="strain_",
|
|
25
|
+
output_delimiter: str=",",
|
|
26
|
+
output_at_end: bool=False,
|
|
27
|
+
strain_formulation: str="HENCKY"):
|
|
28
|
+
"""
|
|
29
|
+
Compute strain fields from DIC displacement data using a finite element smoothing approach.
|
|
30
|
+
|
|
31
|
+
This function validates the input data and parameters, optionally loads DIC results from file,
|
|
32
|
+
and passes the data to a C++-accelerated backend for strain computation.
|
|
33
|
+
|
|
34
|
+
Parameters
|
|
35
|
+
----------
|
|
36
|
+
data : pathlib.Path or str
|
|
37
|
+
A pathlib.Path or str to files from which the data should be imported.
|
|
38
|
+
input_delimiter: str
|
|
39
|
+
delimiter used for the input dic results files (default: ",").
|
|
40
|
+
input_binary bool:
|
|
41
|
+
whether input data is in human-readable or binary format (default:
|
|
42
|
+
False).
|
|
43
|
+
window_size : int, optional
|
|
44
|
+
The size of the local window over which to compute strain (must be odd), by default 5.
|
|
45
|
+
window_element : int, optional
|
|
46
|
+
The type of finite element shape function used in the strain window: 4 (bilinear) or 9 (biquadratic),
|
|
47
|
+
by default 4.
|
|
48
|
+
strain_formulation : str, optional
|
|
49
|
+
The strain definition to use: one of 'GREEN', 'ALMANSI', 'HENCKY', 'BIOT_EULER', 'BIOT_LAGRANGE'.
|
|
50
|
+
Defaults to 'HENCKY'.
|
|
51
|
+
output_basepath : str or pathlib.Path, optional
|
|
52
|
+
Directory path where output files will be written (default: "./").
|
|
53
|
+
output_binary : bool, optional
|
|
54
|
+
Whether to write output in binary format (default: False).
|
|
55
|
+
output_prefix : str, optional
|
|
56
|
+
Prefix for all output files (default: "strain_"). results will be
|
|
57
|
+
named with output_prefix + original filename. THe extension will be
|
|
58
|
+
changed to ".csv" or ".dic2d" depending on whether outputting as a binary.
|
|
59
|
+
output_delimiter : str, optional
|
|
60
|
+
Delimiter used in text output files (default: ",").
|
|
61
|
+
|
|
62
|
+
Raises
|
|
63
|
+
------
|
|
64
|
+
ValueError
|
|
65
|
+
If any of the input parameters are invalid (e.g., unsupported strain formulation,
|
|
66
|
+
even window size, or invalid element type).
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
allowed_formulations = ["GREEN", "ALMANSI", "HENCKY", "BIOT_EULER", "BIOT_LAGRANGE"]
|
|
70
|
+
if strain_formulation not in allowed_formulations:
|
|
71
|
+
raise ValueError(f"Invalid strain formulation: '{strain_formulation}'. "
|
|
72
|
+
f"Allowed values are: {', '.join(allowed_formulations)}.")
|
|
73
|
+
|
|
74
|
+
allowed_elements = [4, 9]
|
|
75
|
+
if window_element not in allowed_elements:
|
|
76
|
+
raise ValueError(f"Invalid strain window element type: Q{window_element}. "
|
|
77
|
+
f"Allowed values are: {', '.join(map(str, allowed_elements))}.")
|
|
78
|
+
|
|
79
|
+
if window_size % 2 == 0:
|
|
80
|
+
raise ValueError(f"Invalid strain window size: '{window_size}'. Must be an odd number.")
|
|
81
|
+
|
|
82
|
+
filenames = check_strain_files(strain_files=data)
|
|
83
|
+
|
|
84
|
+
# Load data if a file path is given
|
|
85
|
+
results = import_2d(layout="matrix", data=str(data),
|
|
86
|
+
binary=input_binary, delimiter=input_delimiter)
|
|
87
|
+
|
|
88
|
+
# Extract dimensions from the validated object
|
|
89
|
+
nss_x = results.ss_x.shape[1]
|
|
90
|
+
nss_y = results.ss_y.shape[0]
|
|
91
|
+
nimg = results.u.shape[0]
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
check_output_directory(str(output_basepath), output_prefix)
|
|
95
|
+
|
|
96
|
+
# assigning c++ struct vals for save config
|
|
97
|
+
strain_save_conf = common_cpp.SaveConfig()
|
|
98
|
+
strain_save_conf.basepath = str(output_basepath)
|
|
99
|
+
strain_save_conf.binary = output_binary
|
|
100
|
+
strain_save_conf.prefix = output_prefix
|
|
101
|
+
strain_save_conf.delimiter = output_delimiter
|
|
102
|
+
strain_save_conf.at_end = output_at_end
|
|
103
|
+
|
|
104
|
+
print(filenames)
|
|
105
|
+
|
|
106
|
+
# Call to C++ backend
|
|
107
|
+
strain_cpp.strain_engine(results.ss_x, results.ss_y,
|
|
108
|
+
results.u, results.v,
|
|
109
|
+
nss_x, nss_y, nimg,
|
|
110
|
+
window_size, window_element,
|
|
111
|
+
strain_formulation, filenames,
|
|
112
|
+
strain_save_conf)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
Binary file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# ================================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import glob
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def check_strain_files(strain_files: str | Path) -> list[str]:
|
|
13
|
+
"""
|
|
14
|
+
Check for strain/deformation files in the given path and return their filenames.
|
|
15
|
+
|
|
16
|
+
Parameters
|
|
17
|
+
----------
|
|
18
|
+
strain_files : str or pathlib.Path
|
|
19
|
+
Path or glob pattern pointing to the strain/deformation files.
|
|
20
|
+
|
|
21
|
+
Returns
|
|
22
|
+
-------
|
|
23
|
+
list[str]
|
|
24
|
+
A sorted list of filenames (not full paths) matching the input path/pattern.
|
|
25
|
+
|
|
26
|
+
Raises
|
|
27
|
+
------
|
|
28
|
+
FileNotFoundError
|
|
29
|
+
If no files matching the given path or pattern are found.
|
|
30
|
+
|
|
31
|
+
Examples
|
|
32
|
+
--------
|
|
33
|
+
>>> check_strain_files("data/strain_*.tif")
|
|
34
|
+
['strain_001.tif', 'strain_002.tif', 'strain_003.tif']
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
filenames = []
|
|
38
|
+
|
|
39
|
+
# Find deformation image files
|
|
40
|
+
files = sorted(glob.glob(str(strain_files)))
|
|
41
|
+
if not files:
|
|
42
|
+
raise FileNotFoundError(f"No DIC data found: {strain_files}")
|
|
43
|
+
|
|
44
|
+
for file in files:
|
|
45
|
+
filenames.append(os.path.basename(file))
|
|
46
|
+
|
|
47
|
+
return filenames
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# ================================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
import numpy as np
|
|
9
|
+
import glob
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
# pyvale
|
|
13
|
+
from pyvale.strain.strainresults import StrainResults
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def import_2d(data: str | Path,
|
|
19
|
+
binary: bool = False,
|
|
20
|
+
layout: str = "matrix",
|
|
21
|
+
delimiter: str = ",") -> StrainResults:
|
|
22
|
+
"""
|
|
23
|
+
Import strain result data from human readable text or binary files.
|
|
24
|
+
|
|
25
|
+
Parameters
|
|
26
|
+
----------
|
|
27
|
+
|
|
28
|
+
data : str or pathlib.Path
|
|
29
|
+
Path pattern to the data files (can include wildcards). Default is "./".
|
|
30
|
+
|
|
31
|
+
layout : str, optional
|
|
32
|
+
Format of the output data layout: "column" (flat array per frame) or "matrix"
|
|
33
|
+
(reshaped grid per frame). Default is "column".
|
|
34
|
+
|
|
35
|
+
binary : bool, optional
|
|
36
|
+
If True, expects files in a specific binary format. If False, expects text data.
|
|
37
|
+
Default is False.
|
|
38
|
+
|
|
39
|
+
delimiter : str, optional
|
|
40
|
+
Delimiter used in text data files. Ignored if binary=True. Default is a single space.
|
|
41
|
+
|
|
42
|
+
Returns
|
|
43
|
+
-------
|
|
44
|
+
StrainResults
|
|
45
|
+
A named container with the following fields:
|
|
46
|
+
- window_x, window_y (grid arrays if layout=="matrix"; otherwise, 1D integer arrays)
|
|
47
|
+
- def_grad, eps (deformation gradient and strain arrays with shape depending on layout)
|
|
48
|
+
- filenames (python list)
|
|
49
|
+
|
|
50
|
+
Raises
|
|
51
|
+
------
|
|
52
|
+
ValueError:
|
|
53
|
+
If `layout` is not "column" or "matrix", or text data has insufficient columns,
|
|
54
|
+
or binary rows are malformed.
|
|
55
|
+
|
|
56
|
+
FileNotFoundError:
|
|
57
|
+
If no matching data files are found.
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
print("")
|
|
64
|
+
print("Attempting Strain Data import...")
|
|
65
|
+
print("")
|
|
66
|
+
|
|
67
|
+
# convert to str
|
|
68
|
+
if isinstance(data, Path):
|
|
69
|
+
data = str(data)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
files = sorted(glob.glob(data))
|
|
73
|
+
filenames = files
|
|
74
|
+
if not files:
|
|
75
|
+
raise FileNotFoundError(f"No results found in: {data}")
|
|
76
|
+
|
|
77
|
+
print(f"Found {len(files)} files containing Strain results:")
|
|
78
|
+
for file in files:
|
|
79
|
+
print(f" - {file}")
|
|
80
|
+
print("")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# Read first file to define reference coordinates
|
|
84
|
+
read_data = read_binary if binary else read_text
|
|
85
|
+
|
|
86
|
+
window_x_ref, window_y_ref, *fields = read_data(files[0], delimiter=delimiter)
|
|
87
|
+
frames = [list(fields)]
|
|
88
|
+
|
|
89
|
+
for file in files[1:]:
|
|
90
|
+
window_x, window_y, *f = read_data(file, delimiter)
|
|
91
|
+
if not (np.array_equal(window_x_ref, window_x) and
|
|
92
|
+
np.array_equal(window_y_ref, window_y)):
|
|
93
|
+
raise ValueError("Mismatch in coordinates across frames.")
|
|
94
|
+
frames.append(f)
|
|
95
|
+
|
|
96
|
+
# Stack fields into arrays
|
|
97
|
+
arrays = [np.stack([frame[i] for frame in frames]) for i in range(8)]
|
|
98
|
+
|
|
99
|
+
# if reading into a matrix layout we need to convert to meshgrids
|
|
100
|
+
if layout == "matrix":
|
|
101
|
+
|
|
102
|
+
# create meshgrid
|
|
103
|
+
x_unique = np.unique(window_x_ref)
|
|
104
|
+
y_unique = np.unique(window_y_ref)
|
|
105
|
+
X, Y = np.meshgrid(x_unique, y_unique)
|
|
106
|
+
|
|
107
|
+
# convert results to a grid based on meshgrid dims
|
|
108
|
+
shape = (len(files), len(y_unique), len(x_unique))
|
|
109
|
+
arrays = [to_grid(a,shape,window_x_ref, window_y_ref, x_unique,y_unique) for a in arrays]
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
# combine strain results into single np.ndarray. current dimeensions of
|
|
113
|
+
# each array are (file,x,y). The results will become
|
|
114
|
+
# (file,x,y,matrix_x,def_matrix_y)
|
|
115
|
+
current_shape = arrays[0].shape # (file,x,y)
|
|
116
|
+
def_xx = np.zeros(current_shape)
|
|
117
|
+
def_xy = np.zeros(current_shape)
|
|
118
|
+
def_yx = np.zeros(current_shape)
|
|
119
|
+
def_yy = np.zeros(current_shape)
|
|
120
|
+
eps_xx = np.zeros(current_shape)
|
|
121
|
+
eps_xy = np.zeros(current_shape)
|
|
122
|
+
eps_yx = np.zeros(current_shape)
|
|
123
|
+
eps_yy = np.zeros(current_shape)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def_xx[:,:,:] = arrays[0]
|
|
127
|
+
def_xy[:,:,:] = arrays[1]
|
|
128
|
+
def_yx[:,:,:] = arrays[2]
|
|
129
|
+
def_yy[:,:,:] = arrays[3]
|
|
130
|
+
eps_xx[:,:,:] = arrays[4]
|
|
131
|
+
eps_xy[:,:,:] = arrays[5]
|
|
132
|
+
eps_yx[:,:,:] = arrays[6]
|
|
133
|
+
eps_yy[:,:,:] = arrays[7]
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
return StrainResults(X, Y,
|
|
137
|
+
def_xx, def_xy, def_yx, def_yy,
|
|
138
|
+
eps_xx, eps_xy, eps_yx, eps_yy,
|
|
139
|
+
filenames)
|
|
140
|
+
|
|
141
|
+
else:
|
|
142
|
+
current_shape = arrays[0].shape
|
|
143
|
+
def_xx = np.zeros(current_shape)
|
|
144
|
+
def_xy = np.zeros(current_shape)
|
|
145
|
+
def_yx = np.zeros(current_shape)
|
|
146
|
+
def_yy = np.zeros(current_shape)
|
|
147
|
+
eps_xx = np.zeros(current_shape)
|
|
148
|
+
eps_xy = np.zeros(current_shape)
|
|
149
|
+
eps_yx = np.zeros(current_shape)
|
|
150
|
+
eps_yy = np.zeros(current_shape)
|
|
151
|
+
def_xx[:,:,:] = arrays[0]
|
|
152
|
+
def_xy[:,:,:] = arrays[1]
|
|
153
|
+
def_yx[:,:,:] = arrays[2]
|
|
154
|
+
def_yy[:,:,:] = arrays[3]
|
|
155
|
+
eps_xx[:,:,:] = arrays[4]
|
|
156
|
+
eps_xy[:,:,:] = arrays[5]
|
|
157
|
+
eps_yx[:,:,:] = arrays[6]
|
|
158
|
+
eps_yy[:,:,:] = arrays[7]
|
|
159
|
+
return StrainResults(window_x_ref, window_y_ref,
|
|
160
|
+
def_xx, def_xy, def_yx, def_yy,
|
|
161
|
+
eps_xx, eps_xy, eps_yx, eps_yy,
|
|
162
|
+
filenames)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def read_binary(file: str, delimiter: str):
|
|
167
|
+
"""
|
|
168
|
+
Read a binary Strain result file and extract DIC fields.
|
|
169
|
+
|
|
170
|
+
Assumes a fixed binary structure with each row containing:
|
|
171
|
+
- 2x int32 (subset coordinates)
|
|
172
|
+
- 8x float64 (deformation matrix, strain matrix)
|
|
173
|
+
|
|
174
|
+
Parameters
|
|
175
|
+
----------
|
|
176
|
+
file : str
|
|
177
|
+
Path to the binary result file.
|
|
178
|
+
|
|
179
|
+
delimiter : str
|
|
180
|
+
Ignored for binary data (included for API consistency).
|
|
181
|
+
|
|
182
|
+
Returns
|
|
183
|
+
-------
|
|
184
|
+
tuple of np.ndarray
|
|
185
|
+
Arrays corresponding to:
|
|
186
|
+
(window_x, window_y, def_grad, eps)
|
|
187
|
+
|
|
188
|
+
Raises
|
|
189
|
+
------
|
|
190
|
+
ValueError
|
|
191
|
+
If the binary file size does not align with expected row size.
|
|
192
|
+
"""
|
|
193
|
+
|
|
194
|
+
row_size = (3 * 4 + 6 * 8)
|
|
195
|
+
with open(file, "rb") as f:
|
|
196
|
+
raw = f.read()
|
|
197
|
+
if len(raw) % row_size != 0:
|
|
198
|
+
raise ValueError("Binary file has incomplete rows.")
|
|
199
|
+
|
|
200
|
+
rows = len(raw) // row_size
|
|
201
|
+
arr = np.frombuffer(raw, dtype=np.uint8).reshape(rows, row_size)
|
|
202
|
+
|
|
203
|
+
# lil function to make extracting a bit easier
|
|
204
|
+
def extract(col, dtype, start):
|
|
205
|
+
return np.frombuffer(arr[:, start:start+col], dtype=dtype)
|
|
206
|
+
|
|
207
|
+
window_x = extract(4, np.int32, 0)
|
|
208
|
+
window_y = extract(4, np.int32, 4)
|
|
209
|
+
def_grad00 = extract(8, np.float64, 8)
|
|
210
|
+
def_grad01 = extract(8, np.float64, 16)
|
|
211
|
+
def_grad10 = extract(8, np.float64, 24)
|
|
212
|
+
def_grad11 = extract(8, np.float64, 32)
|
|
213
|
+
eps00 = extract(8, np.float64, 40)
|
|
214
|
+
eps01 = extract(8, np.float64, 48)
|
|
215
|
+
eps10 = extract(8, np.float64, 56)
|
|
216
|
+
eps11 = extract(8, np.float64, 72)
|
|
217
|
+
|
|
218
|
+
return window_x, window_y, def_grad00, def_grad01, def_grad10, def_grad11, eps00, eps01, eps10, eps11
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def read_text(file: str, delimiter: str):
|
|
224
|
+
"""
|
|
225
|
+
Read a human-readable text DIC result file and extract DIC fields.
|
|
226
|
+
|
|
227
|
+
Expects at least 9 columns:
|
|
228
|
+
[ss_x, ss_y, u, v, m, cost, ftol, xtol, niter]
|
|
229
|
+
|
|
230
|
+
Parameters
|
|
231
|
+
----------
|
|
232
|
+
file : str
|
|
233
|
+
Path to the text result file.
|
|
234
|
+
|
|
235
|
+
delimiter : str
|
|
236
|
+
Delimiter used in the text file (e.g., space, tab, comma).
|
|
237
|
+
|
|
238
|
+
Returns
|
|
239
|
+
-------
|
|
240
|
+
tuple of np.ndarray
|
|
241
|
+
Arrays corresponding to:
|
|
242
|
+
(ss_x, ss_y, u, v, m, cost, ftol, xtol, niter)
|
|
243
|
+
|
|
244
|
+
Raises
|
|
245
|
+
------
|
|
246
|
+
ValueError
|
|
247
|
+
If the text file has fewer than 9 columns.
|
|
248
|
+
"""
|
|
249
|
+
|
|
250
|
+
data = np.loadtxt(file, delimiter=delimiter, skiprows=1)
|
|
251
|
+
if data.shape[1] < 9:
|
|
252
|
+
raise ValueError("Text data must have at least 9 columns.")
|
|
253
|
+
return (
|
|
254
|
+
data[:, 0].astype(np.int32), # window_x
|
|
255
|
+
data[:, 1].astype(np.int32), # window_y
|
|
256
|
+
data[:, 2], data[:, 3], data[:, 4], data[:, 5], #def_grad
|
|
257
|
+
data[:, 6], data[:, 7], data[:, 8], data[:, 9] #eps
|
|
258
|
+
)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
def to_grid(data, shape, ss_x_ref, ss_y_ref, x_unique, y_unique):
|
|
266
|
+
"""
|
|
267
|
+
Reshape a 2D DIC field from flat (column) format into grid (matrix) format.
|
|
268
|
+
|
|
269
|
+
This is used when output layout is specified as "matrix".
|
|
270
|
+
Maps values using reference subset coordinates (ss_x_ref, ss_y_ref).
|
|
271
|
+
|
|
272
|
+
Parameters
|
|
273
|
+
----------
|
|
274
|
+
data : np.ndarray
|
|
275
|
+
Array of shape (n_frames, n_points) to be reshaped into (n_frames, height, width).
|
|
276
|
+
|
|
277
|
+
shape : tuple
|
|
278
|
+
Target shape of output array: (n_frames, height, width).
|
|
279
|
+
|
|
280
|
+
ss_x_ref : np.ndarray
|
|
281
|
+
X coordinates of subset centers.
|
|
282
|
+
|
|
283
|
+
ss_y_ref : np.ndarray
|
|
284
|
+
Y coordinates of subset centers.
|
|
285
|
+
|
|
286
|
+
x_unique : np.ndarray
|
|
287
|
+
Sorted unique X coordinates in the grid.
|
|
288
|
+
|
|
289
|
+
y_unique : np.ndarray
|
|
290
|
+
Sorted unique Y coordinates in the grid.
|
|
291
|
+
|
|
292
|
+
Returns
|
|
293
|
+
-------
|
|
294
|
+
np.ndarray
|
|
295
|
+
Reshaped array with shape `shape`, filled with NaNs where no data exists.
|
|
296
|
+
"""
|
|
297
|
+
|
|
298
|
+
grid = np.full(shape, np.nan)
|
|
299
|
+
for i, (x, y) in enumerate(zip(ss_x_ref, ss_y_ref)):
|
|
300
|
+
x_idx = np.where(x_unique == x)[0][0]
|
|
301
|
+
y_idx = np.where(y_unique == y)[0][0]
|
|
302
|
+
grid[:, y_idx, x_idx] = data[:, i]
|
|
303
|
+
return grid
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# ================================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
import numpy as np
|
|
10
|
+
|
|
11
|
+
@dataclass(slots=True)
|
|
12
|
+
class StrainResults:
|
|
13
|
+
"""
|
|
14
|
+
Data container for Strain analysis results.
|
|
15
|
+
|
|
16
|
+
This dataclass stores the strain window coordinates, 2D deformation gradient
|
|
17
|
+
and strain values.
|
|
18
|
+
|
|
19
|
+
Attributes
|
|
20
|
+
----------
|
|
21
|
+
window_x : np.ndarray
|
|
22
|
+
The x-coordinates of the strain window centre. shape=(img_num,y,x)
|
|
23
|
+
window_y : np.ndarray
|
|
24
|
+
The y-coordinates of the strain window centre. shape=(img_num,y,x)
|
|
25
|
+
def_xx : np.ndarray
|
|
26
|
+
The xx component of the 2D deformation gradient. shape=(img_num,y,x)
|
|
27
|
+
def_xy : np.ndarray
|
|
28
|
+
The xy component of the 2D deformation gradient. shape=(img_num,y,x)
|
|
29
|
+
def_yx : np.ndarray
|
|
30
|
+
The yx component of the 2D deformation gradient. shape=(img_num,y,x)
|
|
31
|
+
def_yy : np.ndarray
|
|
32
|
+
The yy component of the 2D deformation gradient. shape=(img_num,y,x)
|
|
33
|
+
eps_xx : np.ndarray
|
|
34
|
+
The xx component of the 2D strain tensor. shape=(img_num,y,x)
|
|
35
|
+
eps_xy : np.ndarray
|
|
36
|
+
The xy component of the 2D strain tensor. shape=(img_num,y,x)
|
|
37
|
+
eps_yx : np.ndarray
|
|
38
|
+
The yx component of the 2D strain tensor. shape=(img_num,y,x)
|
|
39
|
+
eps_yy : np.ndarray
|
|
40
|
+
The yy component of the 2D strain tensor. shape=(img_num,y,x)
|
|
41
|
+
filenames : list[str]
|
|
42
|
+
name of Strain result files that have been found
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
window_x: np.ndarray
|
|
46
|
+
window_y: np.ndarray
|
|
47
|
+
def_xx: np.ndarray
|
|
48
|
+
def_xy: np.ndarray
|
|
49
|
+
def_yx: np.ndarray
|
|
50
|
+
def_yy: np.ndarray
|
|
51
|
+
eps_xx: np.ndarray
|
|
52
|
+
eps_xy: np.ndarray
|
|
53
|
+
eps_yx: np.ndarray
|
|
54
|
+
eps_yy: np.ndarray
|
|
55
|
+
filenames: list[str]
|