├── .gitee
├── ISSUE_TEMPLATE.zh-CN.md
└── PULL_REQUEST_TEMPLATE.zh-CN.md
├── .gitignore
├── AstroLib.sln
├── AstroLib.suo
├── AstroLib
├── AstroLib.h
├── AstroLib.vcproj
├── AstroLib.vcproj.CMSE01.Wang.user
├── AstroLib.vcxproj
├── AstroLib.vcxproj.filters
├── AstroLib.vcxproj.user
├── AstroLib_ReadMe.txt
├── Include
│ ├── AsAtmosphere.h
│ ├── AsAttitude.h
│ ├── AsAttitudeParam.h
│ ├── AsAttitudeParam_2023.h
│ ├── AsCommon.h
│ ├── AsCoordSystem_2023.h
│ ├── AsCoordinate.h
│ ├── AsCoordinate_2023.h
│ ├── AsDResolve.h
│ ├── AsInterpolation.h
│ ├── AsMath.h
│ ├── AsMatrix.h
│ ├── AsOrbit.h
│ ├── AsOrbitParam.h
│ ├── AsOrbitParam_2023.h
│ ├── AsPlanetProp.h
│ ├── AsRandom.h
│ ├── AsRightFunction.h
│ ├── AsTimeSystem.h
│ ├── AsVector.h
│ ├── Eigen.h
│ ├── Eigen
│ │ ├── Cholesky
│ │ ├── CholmodSupport
│ │ ├── Core
│ │ ├── Dense
│ │ ├── Eigen
│ │ ├── Eigenvalues
│ │ ├── Geometry
│ │ ├── Householder
│ │ ├── IterativeLinearSolvers
│ │ ├── Jacobi
│ │ ├── KLUSupport
│ │ ├── LU
│ │ ├── MetisSupport
│ │ ├── OrderingMethods
│ │ ├── PaStiXSupport
│ │ ├── PardisoSupport
│ │ ├── QR
│ │ ├── QtAlignedMalloc
│ │ ├── SPQRSupport
│ │ ├── SVD
│ │ ├── Sparse
│ │ ├── SparseCholesky
│ │ ├── SparseCore
│ │ ├── SparseLU
│ │ ├── SparseQR
│ │ ├── StdDeque
│ │ ├── StdList
│ │ ├── StdVector
│ │ ├── SuperLUSupport
│ │ ├── UmfPackSupport
│ │ └── src
│ │ │ ├── Cholesky
│ │ │ ├── LDLT.h
│ │ │ ├── LLT.h
│ │ │ └── LLT_LAPACKE.h
│ │ │ ├── CholmodSupport
│ │ │ └── CholmodSupport.h
│ │ │ ├── Core
│ │ │ ├── ArithmeticSequence.h
│ │ │ ├── Array.h
│ │ │ ├── ArrayBase.h
│ │ │ ├── ArrayWrapper.h
│ │ │ ├── Assign.h
│ │ │ ├── AssignEvaluator.h
│ │ │ ├── Assign_MKL.h
│ │ │ ├── BandMatrix.h
│ │ │ ├── Block.h
│ │ │ ├── BooleanRedux.h
│ │ │ ├── CommaInitializer.h
│ │ │ ├── ConditionEstimator.h
│ │ │ ├── CoreEvaluators.h
│ │ │ ├── CoreIterators.h
│ │ │ ├── CwiseBinaryOp.h
│ │ │ ├── CwiseNullaryOp.h
│ │ │ ├── CwiseTernaryOp.h
│ │ │ ├── CwiseUnaryOp.h
│ │ │ ├── CwiseUnaryView.h
│ │ │ ├── DenseBase.h
│ │ │ ├── DenseCoeffsBase.h
│ │ │ ├── DenseStorage.h
│ │ │ ├── Diagonal.h
│ │ │ ├── DiagonalMatrix.h
│ │ │ ├── DiagonalProduct.h
│ │ │ ├── Dot.h
│ │ │ ├── EigenBase.h
│ │ │ ├── ForceAlignedAccess.h
│ │ │ ├── Fuzzy.h
│ │ │ ├── GeneralProduct.h
│ │ │ ├── GenericPacketMath.h
│ │ │ ├── GlobalFunctions.h
│ │ │ ├── IO.h
│ │ │ ├── IndexedView.h
│ │ │ ├── Inverse.h
│ │ │ ├── Map.h
│ │ │ ├── MapBase.h
│ │ │ ├── MathFunctions.h
│ │ │ ├── MathFunctionsImpl.h
│ │ │ ├── Matrix.h
│ │ │ ├── MatrixBase.h
│ │ │ ├── NestByValue.h
│ │ │ ├── NoAlias.h
│ │ │ ├── NumTraits.h
│ │ │ ├── PartialReduxEvaluator.h
│ │ │ ├── PermutationMatrix.h
│ │ │ ├── PlainObjectBase.h
│ │ │ ├── Product.h
│ │ │ ├── ProductEvaluators.h
│ │ │ ├── Random.h
│ │ │ ├── Redux.h
│ │ │ ├── Ref.h
│ │ │ ├── Replicate.h
│ │ │ ├── Reshaped.h
│ │ │ ├── ReturnByValue.h
│ │ │ ├── Reverse.h
│ │ │ ├── Select.h
│ │ │ ├── SelfAdjointView.h
│ │ │ ├── SelfCwiseBinaryOp.h
│ │ │ ├── Solve.h
│ │ │ ├── SolveTriangular.h
│ │ │ ├── SolverBase.h
│ │ │ ├── StableNorm.h
│ │ │ ├── StlIterators.h
│ │ │ ├── Stride.h
│ │ │ ├── Swap.h
│ │ │ ├── Transpose.h
│ │ │ ├── Transpositions.h
│ │ │ ├── TriangularMatrix.h
│ │ │ ├── VectorBlock.h
│ │ │ ├── VectorwiseOp.h
│ │ │ ├── Visitor.h
│ │ │ ├── arch
│ │ │ │ ├── AVX
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── AVX512
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── AltiVec
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── MatrixProduct.h
│ │ │ │ │ ├── MatrixProductCommon.h
│ │ │ │ │ ├── MatrixProductMMA.h
│ │ │ │ │ └── PacketMath.h
│ │ │ │ ├── CUDA
│ │ │ │ │ └── Complex.h
│ │ │ │ ├── Default
│ │ │ │ │ ├── BFloat16.h
│ │ │ │ │ ├── ConjHelper.h
│ │ │ │ │ ├── GenericPacketMathFunctions.h
│ │ │ │ │ ├── GenericPacketMathFunctionsFwd.h
│ │ │ │ │ ├── Half.h
│ │ │ │ │ ├── Settings.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── GPU
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── HIP
│ │ │ │ │ └── hcc
│ │ │ │ │ │ └── math_constants.h
│ │ │ │ ├── MSA
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ └── PacketMath.h
│ │ │ │ ├── NEON
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── GeneralBlockPanelKernel.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── SSE
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── SVE
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ ├── SYCL
│ │ │ │ │ ├── InteropHeaders.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ ├── SyclMemoryModel.h
│ │ │ │ │ └── TypeCasting.h
│ │ │ │ └── ZVector
│ │ │ │ │ ├── Complex.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ └── PacketMath.h
│ │ │ ├── functors
│ │ │ │ ├── AssignmentFunctors.h
│ │ │ │ ├── BinaryFunctors.h
│ │ │ │ ├── NullaryFunctors.h
│ │ │ │ ├── StlFunctors.h
│ │ │ │ ├── TernaryFunctors.h
│ │ │ │ └── UnaryFunctors.h
│ │ │ ├── products
│ │ │ │ ├── GeneralBlockPanelKernel.h
│ │ │ │ ├── GeneralMatrixMatrix.h
│ │ │ │ ├── GeneralMatrixMatrixTriangular.h
│ │ │ │ ├── GeneralMatrixMatrixTriangular_BLAS.h
│ │ │ │ ├── GeneralMatrixMatrix_BLAS.h
│ │ │ │ ├── GeneralMatrixVector.h
│ │ │ │ ├── GeneralMatrixVector_BLAS.h
│ │ │ │ ├── Parallelizer.h
│ │ │ │ ├── SelfadjointMatrixMatrix.h
│ │ │ │ ├── SelfadjointMatrixMatrix_BLAS.h
│ │ │ │ ├── SelfadjointMatrixVector.h
│ │ │ │ ├── SelfadjointMatrixVector_BLAS.h
│ │ │ │ ├── SelfadjointProduct.h
│ │ │ │ ├── SelfadjointRank2Update.h
│ │ │ │ ├── TriangularMatrixMatrix.h
│ │ │ │ ├── TriangularMatrixMatrix_BLAS.h
│ │ │ │ ├── TriangularMatrixVector.h
│ │ │ │ ├── TriangularMatrixVector_BLAS.h
│ │ │ │ ├── TriangularSolverMatrix.h
│ │ │ │ ├── TriangularSolverMatrix_BLAS.h
│ │ │ │ └── TriangularSolverVector.h
│ │ │ └── util
│ │ │ │ ├── BlasUtil.h
│ │ │ │ ├── ConfigureVectorization.h
│ │ │ │ ├── Constants.h
│ │ │ │ ├── DisableStupidWarnings.h
│ │ │ │ ├── ForwardDeclarations.h
│ │ │ │ ├── IndexedViewHelper.h
│ │ │ │ ├── IntegralConstant.h
│ │ │ │ ├── MKL_support.h
│ │ │ │ ├── Macros.h
│ │ │ │ ├── Memory.h
│ │ │ │ ├── Meta.h
│ │ │ │ ├── NonMPL2.h
│ │ │ │ ├── ReenableStupidWarnings.h
│ │ │ │ ├── ReshapedHelper.h
│ │ │ │ ├── StaticAssert.h
│ │ │ │ ├── SymbolicIndex.h
│ │ │ │ └── XprHelper.h
│ │ │ ├── Eigenvalues
│ │ │ ├── ComplexEigenSolver.h
│ │ │ ├── ComplexSchur.h
│ │ │ ├── ComplexSchur_LAPACKE.h
│ │ │ ├── EigenSolver.h
│ │ │ ├── GeneralizedEigenSolver.h
│ │ │ ├── GeneralizedSelfAdjointEigenSolver.h
│ │ │ ├── HessenbergDecomposition.h
│ │ │ ├── MatrixBaseEigenvalues.h
│ │ │ ├── RealQZ.h
│ │ │ ├── RealSchur.h
│ │ │ ├── RealSchur_LAPACKE.h
│ │ │ ├── SelfAdjointEigenSolver.h
│ │ │ ├── SelfAdjointEigenSolver_LAPACKE.h
│ │ │ └── Tridiagonalization.h
│ │ │ ├── Geometry
│ │ │ ├── AlignedBox.h
│ │ │ ├── AngleAxis.h
│ │ │ ├── EulerAngles.h
│ │ │ ├── Homogeneous.h
│ │ │ ├── Hyperplane.h
│ │ │ ├── OrthoMethods.h
│ │ │ ├── ParametrizedLine.h
│ │ │ ├── Quaternion.h
│ │ │ ├── Rotation2D.h
│ │ │ ├── RotationBase.h
│ │ │ ├── Scaling.h
│ │ │ ├── Transform.h
│ │ │ ├── Translation.h
│ │ │ ├── Umeyama.h
│ │ │ └── arch
│ │ │ │ └── Geometry_SIMD.h
│ │ │ ├── Householder
│ │ │ ├── BlockHouseholder.h
│ │ │ ├── Householder.h
│ │ │ └── HouseholderSequence.h
│ │ │ ├── IterativeLinearSolvers
│ │ │ ├── BasicPreconditioners.h
│ │ │ ├── BiCGSTAB.h
│ │ │ ├── ConjugateGradient.h
│ │ │ ├── IncompleteCholesky.h
│ │ │ ├── IncompleteLUT.h
│ │ │ ├── IterativeSolverBase.h
│ │ │ ├── LeastSquareConjugateGradient.h
│ │ │ └── SolveWithGuess.h
│ │ │ ├── Jacobi
│ │ │ └── Jacobi.h
│ │ │ ├── KLUSupport
│ │ │ └── KLUSupport.h
│ │ │ ├── LU
│ │ │ ├── Determinant.h
│ │ │ ├── FullPivLU.h
│ │ │ ├── InverseImpl.h
│ │ │ ├── PartialPivLU.h
│ │ │ ├── PartialPivLU_LAPACKE.h
│ │ │ └── arch
│ │ │ │ └── InverseSize4.h
│ │ │ ├── MetisSupport
│ │ │ └── MetisSupport.h
│ │ │ ├── OrderingMethods
│ │ │ ├── Amd.h
│ │ │ ├── Eigen_Colamd.h
│ │ │ └── Ordering.h
│ │ │ ├── PaStiXSupport
│ │ │ └── PaStiXSupport.h
│ │ │ ├── PardisoSupport
│ │ │ └── PardisoSupport.h
│ │ │ ├── QR
│ │ │ ├── ColPivHouseholderQR.h
│ │ │ ├── ColPivHouseholderQR_LAPACKE.h
│ │ │ ├── CompleteOrthogonalDecomposition.h
│ │ │ ├── FullPivHouseholderQR.h
│ │ │ ├── HouseholderQR.h
│ │ │ └── HouseholderQR_LAPACKE.h
│ │ │ ├── SPQRSupport
│ │ │ └── SuiteSparseQRSupport.h
│ │ │ ├── SVD
│ │ │ ├── BDCSVD.h
│ │ │ ├── JacobiSVD.h
│ │ │ ├── JacobiSVD_LAPACKE.h
│ │ │ ├── SVDBase.h
│ │ │ └── UpperBidiagonalization.h
│ │ │ ├── SparseCholesky
│ │ │ ├── SimplicialCholesky.h
│ │ │ └── SimplicialCholesky_impl.h
│ │ │ ├── SparseCore
│ │ │ ├── AmbiVector.h
│ │ │ ├── CompressedStorage.h
│ │ │ ├── ConservativeSparseSparseProduct.h
│ │ │ ├── MappedSparseMatrix.h
│ │ │ ├── SparseAssign.h
│ │ │ ├── SparseBlock.h
│ │ │ ├── SparseColEtree.h
│ │ │ ├── SparseCompressedBase.h
│ │ │ ├── SparseCwiseBinaryOp.h
│ │ │ ├── SparseCwiseUnaryOp.h
│ │ │ ├── SparseDenseProduct.h
│ │ │ ├── SparseDiagonalProduct.h
│ │ │ ├── SparseDot.h
│ │ │ ├── SparseFuzzy.h
│ │ │ ├── SparseMap.h
│ │ │ ├── SparseMatrix.h
│ │ │ ├── SparseMatrixBase.h
│ │ │ ├── SparsePermutation.h
│ │ │ ├── SparseProduct.h
│ │ │ ├── SparseRedux.h
│ │ │ ├── SparseRef.h
│ │ │ ├── SparseSelfAdjointView.h
│ │ │ ├── SparseSolverBase.h
│ │ │ ├── SparseSparseProductWithPruning.h
│ │ │ ├── SparseTranspose.h
│ │ │ ├── SparseTriangularView.h
│ │ │ ├── SparseUtil.h
│ │ │ ├── SparseVector.h
│ │ │ ├── SparseView.h
│ │ │ └── TriangularSolver.h
│ │ │ ├── SparseLU
│ │ │ ├── SparseLU.h
│ │ │ ├── SparseLUImpl.h
│ │ │ ├── SparseLU_Memory.h
│ │ │ ├── SparseLU_Structs.h
│ │ │ ├── SparseLU_SupernodalMatrix.h
│ │ │ ├── SparseLU_Utils.h
│ │ │ ├── SparseLU_column_bmod.h
│ │ │ ├── SparseLU_column_dfs.h
│ │ │ ├── SparseLU_copy_to_ucol.h
│ │ │ ├── SparseLU_gemm_kernel.h
│ │ │ ├── SparseLU_heap_relax_snode.h
│ │ │ ├── SparseLU_kernel_bmod.h
│ │ │ ├── SparseLU_panel_bmod.h
│ │ │ ├── SparseLU_panel_dfs.h
│ │ │ ├── SparseLU_pivotL.h
│ │ │ ├── SparseLU_pruneL.h
│ │ │ └── SparseLU_relax_snode.h
│ │ │ ├── SparseQR
│ │ │ └── SparseQR.h
│ │ │ ├── StlSupport
│ │ │ ├── StdDeque.h
│ │ │ ├── StdList.h
│ │ │ ├── StdVector.h
│ │ │ └── details.h
│ │ │ ├── SuperLUSupport
│ │ │ └── SuperLUSupport.h
│ │ │ ├── UmfPackSupport
│ │ │ └── UmfPackSupport.h
│ │ │ ├── misc
│ │ │ ├── Image.h
│ │ │ ├── Kernel.h
│ │ │ ├── RealSvd2x2.h
│ │ │ ├── blas.h
│ │ │ ├── lapack.h
│ │ │ ├── lapacke.h
│ │ │ └── lapacke_mangling.h
│ │ │ └── plugins
│ │ │ ├── ArrayCwiseBinaryOps.h
│ │ │ ├── ArrayCwiseUnaryOps.h
│ │ │ ├── BlockMethods.h
│ │ │ ├── CommonCwiseBinaryOps.h
│ │ │ ├── CommonCwiseUnaryOps.h
│ │ │ ├── IndexedViewMethods.h
│ │ │ ├── MatrixCwiseBinaryOps.h
│ │ │ ├── MatrixCwiseUnaryOps.h
│ │ │ └── ReshapedMethods.h
│ ├── IzzoLam.h
│ ├── LambertProblem.hpp
│ ├── LambertProblemT.hpp
│ ├── MyvectorT.hpp
│ ├── sofa.h
│ └── sofam.h
└── Src
│ ├── AsAtmosphere.cpp
│ ├── AsAttitude.cpp
│ ├── AsAttitudeParam.cpp
│ ├── AsAttitudeParam_2023.cpp
│ ├── AsCommon.cpp
│ ├── AsCoordSystem_2023.cpp
│ ├── AsCoordinate.cpp
│ ├── AsCoordinate_2023.cpp
│ ├── AsDResolve.cpp
│ ├── AsInterpolation.cpp
│ ├── AsMath.cpp
│ ├── AsMatrix.cpp
│ ├── AsOrbit.cpp
│ ├── AsOrbitParam.cpp
│ ├── AsOrbitParam_2023.cpp
│ ├── AsPlanetProp.cpp
│ ├── AsRandom.cpp
│ ├── AsRightFunction.cpp
│ ├── AsTimeSystem.cpp
│ ├── AsVector.cpp
│ ├── IzzoLam.cpp
│ └── Sofa
│ ├── a2af.c
│ ├── a2tf.c
│ ├── ab.c
│ ├── ae2hd.c
│ ├── af2a.c
│ ├── anp.c
│ ├── anpm.c
│ ├── apcg.c
│ ├── apcg13.c
│ ├── apci.c
│ ├── apci13.c
│ ├── apco.c
│ ├── apco13.c
│ ├── apcs.c
│ ├── apcs13.c
│ ├── aper.c
│ ├── aper13.c
│ ├── apio.c
│ ├── apio13.c
│ ├── atcc13.c
│ ├── atccq.c
│ ├── atci13.c
│ ├── atciq.c
│ ├── atciqn.c
│ ├── atciqz.c
│ ├── atco13.c
│ ├── atic13.c
│ ├── aticq.c
│ ├── aticqn.c
│ ├── atio13.c
│ ├── atioq.c
│ ├── atoc13.c
│ ├── atoi13.c
│ ├── atoiq.c
│ ├── bi00.c
│ ├── bp00.c
│ ├── bp06.c
│ ├── bpn2xy.c
│ ├── c2i00a.c
│ ├── c2i00b.c
│ ├── c2i06a.c
│ ├── c2ibpn.c
│ ├── c2ixy.c
│ ├── c2ixys.c
│ ├── c2s.c
│ ├── c2t00a.c
│ ├── c2t00b.c
│ ├── c2t06a.c
│ ├── c2tcio.c
│ ├── c2teqx.c
│ ├── c2tpe.c
│ ├── c2txy.c
│ ├── cal2jd.c
│ ├── cp.c
│ ├── cpv.c
│ ├── cr.c
│ ├── d2dtf.c
│ ├── d2tf.c
│ ├── dat.c
│ ├── dtdb.c
│ ├── dtf2d.c
│ ├── eceq06.c
│ ├── ecm06.c
│ ├── ee00.c
│ ├── ee00a.c
│ ├── ee00b.c
│ ├── ee06a.c
│ ├── eect00.c
│ ├── eform.c
│ ├── eo06a.c
│ ├── eors.c
│ ├── epb.c
│ ├── epb2jd.c
│ ├── epj.c
│ ├── epj2jd.c
│ ├── epv00.c
│ ├── eqec06.c
│ ├── eqeq94.c
│ ├── era00.c
│ ├── fad03.c
│ ├── fae03.c
│ ├── faf03.c
│ ├── faju03.c
│ ├── fal03.c
│ ├── falp03.c
│ ├── fama03.c
│ ├── fame03.c
│ ├── fane03.c
│ ├── faom03.c
│ ├── fapa03.c
│ ├── fasa03.c
│ ├── faur03.c
│ ├── fave03.c
│ ├── fk425.c
│ ├── fk45z.c
│ ├── fk524.c
│ ├── fk52h.c
│ ├── fk54z.c
│ ├── fk5hip.c
│ ├── fk5hz.c
│ ├── fw2m.c
│ ├── fw2xy.c
│ ├── g2icrs.c
│ ├── gc2gd.c
│ ├── gc2gde.c
│ ├── gd2gc.c
│ ├── gd2gce.c
│ ├── gmst00.c
│ ├── gmst06.c
│ ├── gmst82.c
│ ├── gst00a.c
│ ├── gst00b.c
│ ├── gst06.c
│ ├── gst06a.c
│ ├── gst94.c
│ ├── h2fk5.c
│ ├── hd2ae.c
│ ├── hd2pa.c
│ ├── hfk5z.c
│ ├── icrs2g.c
│ ├── ir.c
│ ├── jd2cal.c
│ ├── jdcalf.c
│ ├── ld.c
│ ├── ldn.c
│ ├── ldsun.c
│ ├── lteceq.c
│ ├── ltecm.c
│ ├── lteqec.c
│ ├── ltp.c
│ ├── ltpb.c
│ ├── ltpecl.c
│ ├── ltpequ.c
│ ├── makefile
│ ├── moon98.c
│ ├── num00a.c
│ ├── num00b.c
│ ├── num06a.c
│ ├── numat.c
│ ├── nut00a.c
│ ├── nut00b.c
│ ├── nut06a.c
│ ├── nut80.c
│ ├── nutm80.c
│ ├── obl06.c
│ ├── obl80.c
│ ├── p06e.c
│ ├── p2pv.c
│ ├── p2s.c
│ ├── pap.c
│ ├── pas.c
│ ├── pb06.c
│ ├── pdp.c
│ ├── pfw06.c
│ ├── plan94.c
│ ├── pm.c
│ ├── pmat00.c
│ ├── pmat06.c
│ ├── pmat76.c
│ ├── pmp.c
│ ├── pmpx.c
│ ├── pmsafe.c
│ ├── pn.c
│ ├── pn00.c
│ ├── pn00a.c
│ ├── pn00b.c
│ ├── pn06.c
│ ├── pn06a.c
│ ├── pnm00a.c
│ ├── pnm00b.c
│ ├── pnm06a.c
│ ├── pnm80.c
│ ├── pom00.c
│ ├── ppp.c
│ ├── ppsp.c
│ ├── pr00.c
│ ├── prec76.c
│ ├── pv2p.c
│ ├── pv2s.c
│ ├── pvdpv.c
│ ├── pvm.c
│ ├── pvmpv.c
│ ├── pvppv.c
│ ├── pvstar.c
│ ├── pvtob.c
│ ├── pvu.c
│ ├── pvup.c
│ ├── pvxpv.c
│ ├── pxp.c
│ ├── refco.c
│ ├── rm2v.c
│ ├── rv2m.c
│ ├── rx.c
│ ├── rxp.c
│ ├── rxpv.c
│ ├── rxr.c
│ ├── ry.c
│ ├── rz.c
│ ├── s00.c
│ ├── s00a.c
│ ├── s00b.c
│ ├── s06.c
│ ├── s06a.c
│ ├── s2c.c
│ ├── s2p.c
│ ├── s2pv.c
│ ├── s2xpv.c
│ ├── sepp.c
│ ├── seps.c
│ ├── sp00.c
│ ├── starpm.c
│ ├── starpv.c
│ ├── sxp.c
│ ├── sxpv.c
│ ├── t_sofa_c.c
│ ├── taitt.c
│ ├── taiut1.c
│ ├── taiutc.c
│ ├── tcbtdb.c
│ ├── tcgtt.c
│ ├── tdbtcb.c
│ ├── tdbtt.c
│ ├── tf2a.c
│ ├── tf2d.c
│ ├── tpors.c
│ ├── tporv.c
│ ├── tpsts.c
│ ├── tpstv.c
│ ├── tpxes.c
│ ├── tpxev.c
│ ├── tr.c
│ ├── trxp.c
│ ├── trxpv.c
│ ├── tttai.c
│ ├── tttcg.c
│ ├── tttdb.c
│ ├── ttut1.c
│ ├── ut1tai.c
│ ├── ut1tt.c
│ ├── ut1utc.c
│ ├── utctai.c
│ ├── utcut1.c
│ ├── xy06.c
│ ├── xys00a.c
│ ├── xys00b.c
│ ├── xys06a.c
│ ├── zp.c
│ ├── zpv.c
│ └── zr.c
├── Examples
├── AstroLibExamples.cpp
├── AstroLibExamples.h
├── Examples.vcproj
├── Examples.vcxproj
├── Examples.vcxproj.filters
├── Examples.vcxproj.user
├── ReadMe.txt
└── Src
│ ├── ExampleAttitude.cpp
│ ├── ExampleAttitude.h
│ ├── ExampleMath.cpp
│ ├── ExampleMath.h
│ ├── ExampleODEResolve.cpp
│ ├── ExampleODEResolve.h
│ ├── ExampleOrbElemConv.cpp
│ ├── ExampleOrbElemConv.h
│ ├── ExampleOrbProp.cpp
│ └── ExampleOrbProp.h
├── Graphics3D
├── 2k_earth_daymap.bmp
├── Graphics3D.cpp
├── Graphics3D.filters
├── Graphics3D.h
├── Graphics3D.user
├── Graphics3D.vcxproj
├── Graphics3D.vcxproj.filters
├── ReadMe.txt
├── glut.def
├── glut.h
├── glut32.dll
├── glut32.lib
├── glut32bit64bit.zip
├── glut64.dll
├── glut64.lib
├── msvcp100d.dll
├── msvcr100d.dll
├── ucrtbased.dll
├── vcruntime140.dll
└── vcruntime140d.dll
├── LICENSE
├── LowOrbitConstellation
├── Coverage.cpp
├── LowOrbitConstellation.cpp
├── LowOrbitConstellation.h
├── LowOrbitConstellation.vcproj
├── LowOrbitConstellation.vcxproj
├── LowOrbitConstellation.vcxproj.filters
├── LowOrbitConstellation.vcxproj.user
├── Output
│ ├── 目标卫星星历.txt
│ ├── 观测卫星1星历.txt
│ └── 观测卫星2星历.txt
├── ReadMe.txt
└── Readxingli.cpp
├── Matlab
├── MonteCarlo_Matlab
│ ├── blade1D.m
│ ├── bladeLtbc.m
│ ├── bladedet.m
│ ├── bladeuni.m
│ └── uniforml.m
└── SimDoF6_Matlab
│ ├── DoF6.mdl
│ ├── actxlicense.m
│ └── slprj
│ ├── grt
│ └── DoF6
│ │ └── tmwinternal
│ │ └── minfo.mat
│ ├── modeladvisor
│ └── DoF6
│ │ └── 6DoF_20_28Quaternion_29
│ │ ├── Thumbs.db
│ │ ├── copy.png
│ │ ├── cut.png
│ │ ├── folder.png
│ │ ├── folder_failed.png
│ │ ├── folder_pass.png
│ │ ├── folder_warning.png
│ │ ├── geninfo.mat
│ │ ├── icon_folder.png
│ │ ├── icon_procedure.png
│ │ ├── icon_task.png
│ │ ├── icon_task_disabled.png
│ │ ├── icon_task_pselected.png
│ │ ├── icon_task_required.png
│ │ ├── info_icon.png
│ │ ├── mdladvinfo.mat
│ │ ├── minus.png
│ │ ├── paste.png
│ │ ├── plus.png
│ │ ├── procedure_failed.png
│ │ ├── procedure_passed.png
│ │ ├── procedure_warning.png
│ │ ├── task_failed.png
│ │ ├── task_forcepass.png
│ │ ├── task_passed.png
│ │ ├── task_req_forcepassed.png
│ │ ├── task_req_passed.png
│ │ ├── task_warning.png
│ │ ├── vandv.png
│ │ └── vandvback.png
│ └── sl_proj.tmw
├── MultiRendezvous
├── MultiRendezvous.vcxproj
├── MultiRendezvous.vcxproj.filters
├── MultiRendezvous.vcxproj.user
├── ReadMe.txt
├── Src
│ ├── MulChCtrl.cpp
│ ├── MulChCtrl.h
│ ├── MulSpacecraft.cpp
│ ├── MulSpacecraft.h
│ ├── ObserveGEO.cpp
│ └── ObserveGEO.h
└── output
│ ├── Chase.txt
│ ├── MulRend.png
│ ├── RelPosVel.txt
│ ├── Target0.txt
│ ├── main_mp4.m
│ ├── main_plot.m
│ └── my_animation.mp4
├── ParallelSim
├── ParallelSim.cpp
├── ParallelSim.vcxproj
├── ParallelSim.vcxproj.filters
├── ParallelSim.vcxproj.user
├── ReadMe.txt
└── Src
│ ├── MultiThread.h
│ ├── MultiThreadAtomic.cpp
│ ├── MultiThreadDynamic.cpp
│ ├── MultiThreadStatic.cpp
│ ├── SimOpenMP.cpp
│ └── SimOpenMP.h
├── README.en.md
├── README.md
├── Rendezvous
├── Output
│ ├── 500次结果
│ │ ├── Chase.txt
│ │ ├── MonteCarlo.txt
│ │ ├── RelPosVel.txt
│ │ ├── Target.txt
│ │ ├── graph.asv
│ │ └── plotgraph.m
│ ├── Chase.txt
│ ├── MonteCarlo.txt
│ ├── RelPosVel.txt
│ ├── Target.txt
│ ├── graphTest.m
│ └── plotgraph.m
├── ReadMe.txt
├── Rendezvous.cpp
├── Rendezvous.h
├── Rendezvous.vcxproj
├── Rendezvous.vcxproj.filters
├── Rendezvous.vcxproj.user
└── Src
│ ├── ChCtrl.cpp
│ ├── ChCtrl.h
│ ├── Spacecraft.cpp
│ └── Spacecraft.h
├── SimDoF6
├── Output
│ ├── Result.txt
│ └── plotgraph.m
├── ReadMe.txt
├── SimDoF6.cpp
├── SimDoF6.h
├── SimDoF6.vcproj.CMSE01.Wang.user
├── SimDoF6.vcxproj
├── SimDoF6.vcxproj.filters
├── SimDoF6.vcxproj.user
└── Src
│ ├── DoF6.cpp
│ └── DoF6.h
├── VisibilityAnalysis
├── Parameter.h
├── ToolFunction.cpp
├── ToolFunctions.h
├── VisibilityAnalysis.vcxproj
├── VisibilityAnalysis.vcxproj.filters
└── main.cpp
└── docs
└── resources
├── AstroLib.png
├── Example_Ui.png
├── Graphics3D_Ui.png
├── Rendezvous_Ui.png
├── Rendezvous_pos.png
├── Rendezvous_xyz.png
├── Rendezvous_xz.png
├── SimDoF6_AngVel.png
├── SimDoF6_PosVel.png
└── SimDoF6_Ui.png
/.gitee/ISSUE_TEMPLATE.zh-CN.md:
--------------------------------------------------------------------------------
1 | ### 该问题是怎么引起的?
2 |
3 |
4 |
5 | ### 重现步骤
6 |
7 |
8 |
9 | ### 报错信息
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.gitee/PULL_REQUEST_TEMPLATE.zh-CN.md:
--------------------------------------------------------------------------------
1 | ### 相关的Issue
2 |
3 |
4 | ### 原因(目的、解决的问题等)
5 |
6 |
7 | ### 描述(做了什么,变更了什么)
8 |
9 |
10 | ### 测试用例(新增、改动、可能影响的功能)
11 |
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Prerequisites
2 | *.d
3 |
4 | # Compiled Object files
5 | *.slo
6 | *.lo
7 | *.o
8 | *.obj
9 |
10 | # Precompiled Headers
11 | *.gch
12 | *.pch
13 |
14 | # Compiled Dynamic libraries
15 | *.so
16 | *.dylib
17 | *.dll
18 |
19 | # Fortran module files
20 | *.mod
21 | *.smod
22 |
23 | # Compiled Static libraries
24 | *.lai
25 | *.la
26 | *.a
27 | *.lib
28 |
29 | # Executables
30 | *.exe
31 | *.out
32 | *.app
33 | /AstroLib.opensdf
34 |
35 | #Build results
36 | Debug/
37 | Release/
38 | x64/
39 | x86/
40 | *.tlog/
41 |
42 | #Visual Studio 2015/2017 cache/options directory
43 | .vs/
44 |
45 | #files built by Visual Studio
46 | *.sbr
47 | *.obj
48 | *.ilk
49 | *.log
50 | *.ipdb
51 | *.pdb
52 | *.idb
53 | *.opt
54 | *.iobj
55 | *.ipdb
56 | *.tlog
57 |
58 | #Visual C++ cache files
59 | ipch/
60 | *.aps
61 | *.ncb
62 | *.opendb
63 | *.sdf
64 | *.cachefile
65 | *.VC.db
--------------------------------------------------------------------------------
/AstroLib.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/wanghmail/AstroLib/139587f024d63a9a19b7c7beac0209b245e309d3/AstroLib.suo
--------------------------------------------------------------------------------
/AstroLib/AstroLib.vcproj.CMSE01.Wang.user:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
35 |
36 |
39 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/AstroLib/AstroLib.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/AstroLib/AstroLib_ReadMe.txt:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2003-2022 //
4 | // Wang Hua //
5 | // //
6 | ////////////////////////////////////////////////////////////////////////////
7 |
8 | 该程序包作为《航天系统建模与仿真》的一个配套程序
9 | 提供了矢量、矩阵、姿态、轨道、插值、积分算法等仿真需要的基本程序。
10 |
11 | ========================================================================
12 | 航天仿真库 AstroLib
13 | 《航天系统建模与仿真》配套代码
14 | <>
15 | 源码地址:https://gitee.com/wanghmail/AstroLib
16 | ========================================================================
17 |
18 |
19 | ========================================================================
20 | 功能
21 | ========================================================================
22 | 1. 矢量和矩阵;
23 | 2. 数值算法, 包括数学基本运算,随机数生成,插值,常微分方程初值问题求解等;
24 | 3. 时间系统和坐标系统;
25 | 4. 姿态参数, 姿态参数转换;
26 | 5. 轨道参数, 轨道参数转换;
27 | 6. 姿态动力学;
28 | 7. 轨道动力学;
29 | 8. 空间环境;
30 | 9. 飞行器六自由度仿真实例;
31 | 10. 并行仿真实例;
32 | 11. 交会对接接近段仿真实例.
33 |
34 |
35 |
36 | ========================================================================
37 | 使用方法
38 | ========================================================================
39 | 1. 将AstroLib.h文件和Include、Lib目录拷贝到自己的项目目录下;
40 | 2. 在需要用到库中函数的地方包含"AstroLib.h"文件即可.
41 |
42 |
43 | ========================================================================
44 | 命名约定
45 | ========================================================================
46 | 类类型 C
47 | 枚举类型 E
48 | 枚举量 AsE
49 | 常数 AsC
50 | 全局变量 AsG
51 | 全局函数 As
52 |
53 | Note: 本命名约定仅用于AstroLib程序内部.
54 |
55 |
56 |
57 |
58 | ////////////////////////////////////////////////////////////////////////////
59 | // //
60 | // Copyright (c) 2003-2022 //
61 | // Wang Hua //
62 | // //
63 | ////////////////////////////////////////////////////////////////////////////
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsAtmosphere.h:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2000-2021 //
4 | // Wang Hua //
5 | // //
6 | ////////////////////////////////////////////////////////////////////////////
7 |
8 | // AsAtmosphere.h
9 | //
10 | //////////////////////////////////////////////////////////////////////
11 | /// @file
12 | /// @brief 大气模型头文件
13 |
14 | #if !defined(ASATMOSPHERE_H_)
15 | #define ASATMOSPHERE_H_
16 |
17 |
18 | #include "AsCommon.h"
19 |
20 |
21 |
22 |
23 | //====================================================================
24 | //
25 | // Grouping: 大气模型系列函数
26 | //
27 | //====================================================================
28 |
29 | //********************************************************************
30 | /// finds the atmospheric density using exponential atmosphere model.
31 | /// returns the density based on the exponential model.
32 | /// refDensity * exp((refHeight - height) / scaleHeight);
33 | /// @Author Wang Hua
34 | /// @Date 2007.1.22
35 | /// @Input
36 | /// @Param refDensity reference density
37 | /// @Param refHeight reference height
38 | /// @Param scaleHeight scale height
39 | /// @Param height the altitude of interest
40 | /// @Return Density (kg/m^3)
41 | //********************************************************************
42 | double AsExponentialAtmDens (
43 | double refDensity,
44 | double refHeight,
45 | double scaleHeight,
46 | double height);
47 |
48 | //********************************************************************
49 | /// 采用公式拟合GB1920-80标准大气,计算大气密度、压强和温度
50 | /// <<远程火箭弹道学>> P41
51 | /// @Author 张海联 2002-10-17, Wang Hua 2009-11-3
52 | /// @Date 2009-11-3
53 | /// @Input
54 | /// @Param alt 几何高度(米)
55 | /// @Output
56 | /// @Param density 大气密度(单位:千克/立方米)
57 | /// @Param pressure 大气压力(单位:帕)
58 | /// @Param temperature 温度 (单位:K)
59 | /// @Param sonicSpeed 音速 (单位:m/s)
60 | /// @Return
61 | //********************************************************************
62 | void AsGB1980FitAtm(
63 | double alt,
64 | double& density,
65 | double& pressure,
66 | double& temperature,
67 | double& sonicSpeed);
68 |
69 |
70 |
71 |
72 |
73 | #endif // !defined(_ASATMOSPHERE_H_)
74 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsAttitude.h:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2000-2021 //
4 | // Wang Hua //
5 | // //
6 | ////////////////////////////////////////////////////////////////////////////
7 |
8 | // AsAttitude.h
9 | //
10 | //////////////////////////////////////////////////////////////////////
11 | /// @file
12 | /// @brief 姿态函数,头文件
13 |
14 | #if !defined(_AsAttitude_H__INCLUDED_)
15 | #define _AsAttitude_H__INCLUDED_
16 |
17 |
18 | #include "AsCoordinate.h"
19 | #include "AsAttitudeParam.h"
20 | #include "AsRightFunction.h"
21 |
22 |
23 | class CAttitude
24 | {
25 | //
26 | //Operation.
27 | //
28 | public:
29 | CAttitude();
30 | virtual ~CAttitude();
31 |
32 | void AttitudeStep(double step,
33 | const CMatrix& inertia, const CCoord& torque,
34 | CQuaternion& quat, CCoord& angVel);
35 |
36 |
37 | //
38 | //Attribute.
39 | //
40 | private:
41 | //轨道姿态计算右函数类
42 | class CFuncAtt : public CRightFunc
43 | {
44 | //
45 | //Operation.
46 | //
47 | public:
48 | CFuncAtt();
49 | virtual ~CFuncAtt();
50 |
51 | void operator()(double t, const CVector &x, CVector &result) const;
52 |
53 | //
54 | //Attribute
55 | //
56 | public:
57 | CCoord m_Torque;
58 | CMatrix m_Inertia;
59 |
60 | }m_FuncAtt;
61 | };
62 |
63 | #endif // !defined(_AsAttitude_H__INCLUDED_)
64 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsAttitudeParam_2023.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "AsCoordinate.h"
4 | #include "AsMath.h"
5 | #include "AsAttitudeParam.h"
6 |
7 |
8 |
9 |
10 | ///***********************************************************************
11 | /// The conversion from matrix to axis and angle.
12 | /// @Author Xiao Yao
13 | /// @Date 2023.4.2
14 | /// @Input
15 | /// @Param mtx 坐标转换矩阵
16 | /// @Output
17 | /// @Param axis 旋转轴矢量
18 | /// @Param angle 旋转角[0, pi]
19 | ///***********************************************************************
20 | void AsMtxToAxAng(const CMatrix& mtx, CCoord& axis, double& angle);
21 |
22 | ///***********************************************************************
23 | ///将四元数转化成欧拉角_123转序
24 | /// @Author Liu Tianqing
25 | /// @Date 2023.04.06
26 | /// @Input
27 | /// @Param q 标准化四元数
28 | /// @Output
29 | /// @Param euler 欧拉角
30 | ///***********************************************************************
31 | bool AsQuatToEuler123(const CQuaternion& q, CEuler& euler);
32 |
33 | ///***********************************************************************
34 | /// 方向余弦阵转321转序欧拉角
35 | /// @Author Li Sibei
36 | /// @Date 2023.04.06
37 | /// @Input
38 | /// @Param mtx 方向余弦阵
39 | /// @Output
40 | /// @Param euler 欧拉角
41 | ///***********************************************************************
42 | void AsMtxToEuler321(const CMatrix& mtx, CEuler& euler);
43 |
44 | ///***********************************************************************
45 | /// 方向余弦矩阵转为313转序Euler角
46 | /// @Author Wang Weili
47 | /// @Date 2023.4
48 | /// @Input
49 | /// @Param mtx 坐标转移矩阵
50 | /// @Output
51 | /// @Param euler 欧拉角
52 | ///***********************************************************************
53 | void AsMtxToEuler313(const CMatrix& mtx, CEuler& euler);
54 |
55 | ///***********************************************************************
56 | /// 方向余弦矩阵转为312转序Euler角
57 | /// @Author Zhang Xuaying
58 | /// @Date 2023.04.01
59 | /// @Input
60 | /// @Param mtx 方向余弦矩阵
61 | /// @Output
62 | /// @Param euler 欧拉角(rad)
63 | ///***********************************************************************
64 | void AsMtxToEuler312(const CMatrix& mtx, CEuler& euler);
65 |
66 | ///******************************************************
67 | /// 根据转序和坐标转移矩阵计算Euler角,转序为2-3-1
68 | /// @author Sun Fengyan
69 | /// @data 2023.4
70 | /// @Version 1.0
71 | /// @Input
72 | /// @Param mtx 坐标转移矩阵
73 | /// @Output
74 | /// @Param euler 欧拉角返回值(单位:rad)
75 | ///******************************************************
76 | void AsMtxToEuler231(const CMatrix& mtx, CEuler& euler);
77 |
78 | ///***********************************************************************
79 | /// 方向余弦阵转123转序欧拉角
80 | /// @Author Gong he
81 | /// @Date 2023.04.14
82 | /// @Input
83 | /// @Param mtx 方向余弦阵
84 | /// @Output
85 | /// @Param angle 欧拉角
86 | ///***********************************************************************
87 | void AsMtxToEuler123(const CMatrix& mtx, CEuler& euler);
--------------------------------------------------------------------------------
/AstroLib/Include/AsCommon.h:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2003-2008 //
4 | // Wang Hua //
5 | // //
6 | ////////////////////////////////////////////////////////////////////////////
7 |
8 | // AsCommon.h
9 | //
10 | //////////////////////////////////////////////////////////////////////
11 |
12 | #if !defined(_ASCOMMON_H_)
13 | #define _ASCOMMON_H_
14 |
15 |
16 |
17 |
18 | #endif // !defined(_ASCOMMON_H_)
19 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsCoordinate_2023.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsDResolve.h:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2003-2008 //
4 | // Wang Hua //
5 | // //
6 | ////////////////////////////////////////////////////////////////////////////
7 |
8 | // AsDResolve.h
9 | //
10 | //////////////////////////////////////////////////////////////////////
11 |
12 | #if !defined(_ASDRESOLVE_H_)
13 | #define _ASDRESOLVE_H_
14 |
15 |
16 | #include "AsCommon.h"
17 | #include "AsRightFunction.h"
18 | #include "AsVector.h"
19 | #include "AsMatrix.h"
20 |
21 |
22 |
23 |
24 |
25 | //
26 | //Fixed stepsize integration function of ordinary differential equations.
27 | //
28 |
29 |
30 | //*********************************************************************
31 | /// Fourth-order Runge-Kutta method.
32 | /// @Author Wang Hua
33 | /// @Date 2005.1
34 | /// @Input
35 | /// @Param func user-supplied class that computes the right-hand side derivatives.
36 | /// @Param step stepsize
37 | /// @Param t starting value of the indepentent variable.
38 | /// @In/Out
39 | /// @Param x input dependent variable at the starting. output new value
40 | // of dependent variable.
41 | /// @Output
42 | //*********************************************************************
43 | void AsODERungeKutta4 (
44 | const CRightFunc& func,
45 | double step,
46 | double t,
47 | CVector& x);
48 |
49 |
50 |
51 |
52 |
53 |
54 | #endif // !defined(_ASDRESOLVE_H_)
55 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsOrbitParam_2023.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "AsOrbitParam.h"
3 | #include "AsCoordinate.h"
4 | #include "AsMath.h"
5 |
6 |
7 | //********************************************************************
8 | /// 修正轨道根数转换为位置速度/modified orbit element to cartesian state element.
9 | /// @Author Zhang Yu
10 | /// @Date 2023/4/2
11 | /// @Input
12 | /// @Param modOrb 修正轨道根数
13 | /// @Param gm 中心体引力常数
14 | /// @Output
15 | /// @Param pos 位置
16 | /// @Param vel 速度
17 | /// @Return true=成功; false=输入错误
18 | //********************************************************************
19 | bool AsModOrbElemToCart(
20 | const CModOrbElem& modOrb,
21 | double gm,
22 | CCoord& pos,
23 | CCoord& vel);
24 |
25 | //********************************************************************
26 | /// cartesian state element to modified orbit element
27 | /// @Author Zhang Sai
28 | /// @Date 2023.04.03
29 | /// @Input
30 | /// @Param pos 位置
31 | /// @Param vel 速度
32 | /// @Param gm 中心体引力常数
33 | /// @Output
34 | /// @Param modOrb m_I [0, pi]
35 | /// m_RAAN [0, 2pi]
36 | /// m_ArgPeri [0, 2pi]
37 | /// m_TrueA [0, 2pi]
38 | /// @Return true=成功; false=输入错误
39 | //********************************************************************
40 | bool AsCartToModOrbElem(const CCoord3& pos, const CCoord3& vel, double gm, CModOrbElem& modOrb);
41 |
42 | ///***********************************************************************
43 | /// 轨道六根数变换位置速度
44 | /// 在参考坐标系下,物体坐标为(r*cos(trueA), r*sin(trueA), 0)
45 | /// 统一单位 m kg rad
46 | /// @Author Guan Yuming
47 | /// @Date 2023.04.06
48 | /// @Input
49 | /// @Param Orb 轨道根数
50 | /// @Output
51 | /// @Param cartPos; 地心坐标系中位置矢量
52 | /// @Param cartVel 地心坐标系中速度矢量
53 | ///***********************************************************************
54 | bool AsOrbElemToCart(const COrbElem& Orb, double gm, CCoord& cartPos, CCoord & cartVel);
55 |
56 | //********************************************************************
57 | /// 由位置坐标s.m_Pos和速度矢量s.m_Vel计算经典轨道根数
58 | /// @Author Zhang Zhongneng
59 | /// @Date 2023.04.06
60 | /// @Input
61 | /// @Param pos 位置
62 | /// @Param vel 速度
63 | /// @Param gm 中心体引力常数
64 | /// @Output
65 | /// @Param elem 飞行器轨道根数
66 | /// @Return true=成功; false=输入错误
67 | //********************************************************************
68 | bool AsCartToOrbElem(
69 | const CCoord& pos,
70 | const CCoord& vel,
71 | double gm,
72 | COrbElem& elem);
73 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsPlanetProp.h:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2000-2021 //
4 | // Wang Hua //
5 | // National University of Defense Technology //
6 | // //
7 | ////////////////////////////////////////////////////////////////////////////
8 |
9 | // AsPlanetProp.h
10 | //
11 | //////////////////////////////////////////////////////////////////////
12 |
13 | #if !defined(ASPLANETPROP_H_)
14 | #define ASPLANETPROP_H_
15 |
16 |
17 | #include "AsCommon.h"
18 | #include "AsMatrix.h"
19 | #include
20 |
21 |
22 |
23 |
24 | class CCoord;
25 |
26 |
27 |
28 | //********************************************************************
29 | /// 计算地心赤道坐标系中的太阳位置
30 | /// calcuLates the Geocentric Equatorial position for the SUN given the Julian Date.
31 | /// @Author Wang Hua
32 | /// @Date 2004.11.15
33 | /// @Input
34 | /// @Param julianDate Julian Date
35 | /// @Output
36 | /// @Param sunPos Geocentric Equatorial Position vector of the SUN (meter)
37 | /// @Return
38 | //********************************************************************
39 | void AsSunProp (
40 | double julianDate,
41 | CCoord& sunPos);
42 |
43 |
44 |
45 | #endif // !defined(_ASPLANETPROP_H_)
46 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsRandom.h:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2003-2008 //
4 | // Wang Hua //
5 | // //
6 | ////////////////////////////////////////////////////////////////////////////
7 |
8 | // AsRandom.h
9 | //
10 | //////////////////////////////////////////////////////////////////////
11 | /// @file
12 | /// @brief 随机数类,头文件
13 |
14 | #if !defined(_ASRANDOM_H_)
15 | #define _ASRANDOM_H_
16 |
17 |
18 | #include "AsCommon.h"
19 | #include
20 | #include
21 |
22 |
23 |
24 |
25 |
26 | //
27 | //Random number generator class.
28 | //
29 | class CRandom
30 | {
31 | //
32 | //Operation.
33 | //
34 | public:
35 | CRandom();
36 | CRandom(int seed);
37 | virtual ~CRandom();
38 |
39 | //
40 | //seed operate function
41 | //
42 | void Init (int seed);
43 | int GetSeed ();
44 |
45 | //
46 | //Uniform derivates
47 | //
48 | double Rand0 ();
49 |
50 | double Gauss(); ///< 生成均值为0方差为1的Gauss分布随机数
51 |
52 | //
53 | //Attribute.
54 | //
55 | private:
56 | int m_Seed; ///< seed of random
57 |
58 | //Gauss().
59 | int m_iset;
60 | double m_gset;
61 |
62 | };
63 |
64 |
65 | //***********************************************************************
66 | /// 获取随机数种子
67 | /// @Author Wang Hua
68 | /// @Date 2007.4.29
69 | /// @Input
70 | /// @Return 随机数种子,负整数
71 | //***********************************************************************
72 | inline int AsRandomSeed()
73 | {
74 | time_t ltime;
75 | time(& ltime);
76 | return static_cast(-ltime-rand());
77 | }
78 |
79 |
80 | //
81 | //Inline funciton
82 | //
83 | //***********************************************************************
84 | /// 初始化随机数种子,需要产生独立分布的随机数时必须调用这个函数
85 | /// @Author Wang Hua
86 | /// @Date 2007.4.29
87 | /// @Input
88 | /// @Param seed 随机数种子,负整数
89 | //***********************************************************************
90 | inline void CRandom::Init(int seed)
91 | {
92 | m_Seed = seed;
93 | }
94 |
95 |
96 | //***********************************************************************
97 | /// 返回当前的随机数种子
98 | /// @Author Wang Hua
99 | /// @Date 2007.4.29
100 | /// @Output
101 | /// @Param seed 随机数种子,负整数
102 | //***********************************************************************
103 | inline int CRandom::GetSeed()
104 | {
105 | return m_Seed;
106 | }
107 |
108 |
109 |
110 |
111 |
112 | #endif // !defined(_ASRANDOM_H_)
113 |
--------------------------------------------------------------------------------
/AstroLib/Include/AsRightFunction.h:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////
2 | // //
3 | // Copyright (c) 2003-2008 //
4 | // Wang Hua //
5 | // //
6 | ////////////////////////////////////////////////////////////////////////////
7 |
8 | // AsRightFunction.h
9 | //
10 | //////////////////////////////////////////////////////////////////////
11 |
12 | #if !defined(_ASRIGHTFUNCTION_H_)
13 | #define _ASRIGHTFUNCTION_H_
14 |
15 |
16 | #include "AsCommon.h"
17 | #include "AsVector.h"
18 |
19 |
20 |
21 |
22 |
23 | //
24 | //右函数类,用于其它右函数计算类的基类
25 | //
26 | class CRightFunc
27 | {
28 | public:
29 | CRightFunc(){};
30 | virtual ~CRightFunc(){};
31 |
32 | /// @Input
33 | /// @Param t 自变量的值
34 | /// @Param x 初始函数值
35 | /// @Output
36 | /// @Param result 计算得到的函数值
37 | virtual void operator() (double t, const CVector& x, CVector& result) const = 0;
38 |
39 | };
40 |
41 |
42 | //
43 | //右函数类,用于其它右函数计算类的基类
44 | //double * version
45 | //
46 | class AsTRightFunc
47 | {
48 | public:
49 | AsTRightFunc(){};
50 | virtual ~AsTRightFunc(){};
51 |
52 | /// @Input
53 | /// @Param t 自变量的值
54 | /// @Param x 初始函数值
55 | /// @Param n 初始函数值的个数
56 | /// @Output
57 | /// @Param result 计算得到的函数值
58 | virtual void operator() (double t, const double* x, int n, double* result) const = 0;
59 |
60 | };
61 |
62 |
63 |
64 |
65 |
66 | #endif // !defined(_ASRIGHTFUNCTION_H_)
67 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen.h:
--------------------------------------------------------------------------------
1 | #ifndef Eigen_Include
2 | #define Eigen_Include
3 |
4 |
5 | //
6 | //Include file.
7 | //
8 | #include "./Eigen/Cholesky"
9 | #include "./Eigen/Core"
10 | #include "./Eigen/Dense"
11 | #include "./Eigen/Eigen"
12 | #include "./Eigen/Eigenvalues"
13 | #include "./Eigen/Geometry"
14 | #include "./Eigen/Householder"
15 | #include "./Eigen/IterativeLinearSolvers"
16 | #include "./Eigen/Jacobi"
17 | #include "./Eigen/LU"
18 | #include "./Eigen/OrderingMethods"
19 | #include "./Eigen/QR"
20 | #include "./Eigen/QtAlignedMalloc"
21 | #include "./Eigen/Sparse"
22 | #include "./Eigen/SparseCholesky"
23 | #include "./Eigen/SparseCore"
24 | #include "./Eigen/SparseLU"
25 | #include "./Eigen/SparseQR"
26 | #include "./Eigen/StdDeque"
27 | #include "./Eigen/StdList"
28 | #include "./Eigen/StdVector"
29 | #include "./Eigen/SVD"
30 |
31 | //#include "./Eigen/CholmodSupport"
32 | //#include "./Eigen/KLUSupport"
33 | //#include "./Eigen/MetisSupport"
34 | //#include "./Eigen/PardisoSupport"
35 | //#include "./Eigen/PaStiXSupport"
36 | //#include "./Eigen/SPQRSupport"
37 | //#include "./Eigen/SuperLUSupport"
38 | //#include "./Eigen/UmfPackSupport"
39 |
40 |
41 | #endif //Eigen_Include
42 |
43 |
44 | ////////////////////////////////////////////////////////////////////////////
45 | // //
46 | // Copyright (c) 2003-2023 //
47 | // Wang Hua //
48 | // //
49 | ////////////////////////////////////////////////////////////////////////////
50 |
51 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Cholesky:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_CHOLESKY_MODULE_H
9 | #define EIGEN_CHOLESKY_MODULE_H
10 |
11 | #include "Core"
12 | #include "Jacobi"
13 |
14 | #include "src/Core/util/DisableStupidWarnings.h"
15 |
16 | /** \defgroup Cholesky_Module Cholesky module
17 | *
18 | *
19 | *
20 | * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
21 | * Those decompositions are also accessible via the following methods:
22 | * - MatrixBase::llt()
23 | * - MatrixBase::ldlt()
24 | * - SelfAdjointView::llt()
25 | * - SelfAdjointView::ldlt()
26 | *
27 | * \code
28 | * #include
29 | * \endcode
30 | */
31 |
32 | #include "src/Cholesky/LLT.h"
33 | #include "src/Cholesky/LDLT.h"
34 | #ifdef EIGEN_USE_LAPACKE
35 | #ifdef EIGEN_USE_MKL
36 | #include "mkl_lapacke.h"
37 | #else
38 | #include "src/misc/lapacke.h"
39 | #endif
40 | #include "src/Cholesky/LLT_LAPACKE.h"
41 | #endif
42 |
43 | #include "src/Core/util/ReenableStupidWarnings.h"
44 |
45 | #endif // EIGEN_CHOLESKY_MODULE_H
46 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/CholmodSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_CHOLMODSUPPORT_MODULE_H
9 | #define EIGEN_CHOLMODSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | extern "C" {
16 | #include
17 | }
18 |
19 | /** \ingroup Support_modules
20 | * \defgroup CholmodSupport_Module CholmodSupport module
21 | *
22 | * This module provides an interface to the Cholmod library which is part of the suitesparse package.
23 | * It provides the two following main factorization classes:
24 | * - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization.
25 | * - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial).
26 | *
27 | * For the sake of completeness, this module also propose the two following classes:
28 | * - class CholmodSimplicialLLT
29 | * - class CholmodSimplicialLDLT
30 | * Note that these classes does not bring any particular advantage compared to the built-in
31 | * SimplicialLLT and SimplicialLDLT factorization classes.
32 | *
33 | * \code
34 | * #include
35 | * \endcode
36 | *
37 | * In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies.
38 | * The dependencies depend on how cholmod has been compiled.
39 | * For a cmake based project, you can use our FindCholmod.cmake module to help you in this task.
40 | *
41 | */
42 |
43 | #include "src/CholmodSupport/CholmodSupport.h"
44 |
45 | #include "src/Core/util/ReenableStupidWarnings.h"
46 |
47 | #endif // EIGEN_CHOLMODSUPPORT_MODULE_H
48 |
49 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Dense:
--------------------------------------------------------------------------------
1 | #include "Core"
2 | #include "LU"
3 | #include "Cholesky"
4 | #include "QR"
5 | #include "SVD"
6 | #include "Geometry"
7 | #include "Eigenvalues"
8 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Eigen:
--------------------------------------------------------------------------------
1 | #include "Dense"
2 | #include "Sparse"
3 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Eigenvalues:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_EIGENVALUES_MODULE_H
9 | #define EIGEN_EIGENVALUES_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "Cholesky"
14 | #include "Jacobi"
15 | #include "Householder"
16 | #include "LU"
17 | #include "Geometry"
18 |
19 | #include "src/Core/util/DisableStupidWarnings.h"
20 |
21 | /** \defgroup Eigenvalues_Module Eigenvalues module
22 | *
23 | *
24 | *
25 | * This module mainly provides various eigenvalue solvers.
26 | * This module also provides some MatrixBase methods, including:
27 | * - MatrixBase::eigenvalues(),
28 | * - MatrixBase::operatorNorm()
29 | *
30 | * \code
31 | * #include
32 | * \endcode
33 | */
34 |
35 | #include "src/misc/RealSvd2x2.h"
36 | #include "src/Eigenvalues/Tridiagonalization.h"
37 | #include "src/Eigenvalues/RealSchur.h"
38 | #include "src/Eigenvalues/EigenSolver.h"
39 | #include "src/Eigenvalues/SelfAdjointEigenSolver.h"
40 | #include "src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h"
41 | #include "src/Eigenvalues/HessenbergDecomposition.h"
42 | #include "src/Eigenvalues/ComplexSchur.h"
43 | #include "src/Eigenvalues/ComplexEigenSolver.h"
44 | #include "src/Eigenvalues/RealQZ.h"
45 | #include "src/Eigenvalues/GeneralizedEigenSolver.h"
46 | #include "src/Eigenvalues/MatrixBaseEigenvalues.h"
47 | #ifdef EIGEN_USE_LAPACKE
48 | #ifdef EIGEN_USE_MKL
49 | #include "mkl_lapacke.h"
50 | #else
51 | #include "src/misc/lapacke.h"
52 | #endif
53 | #include "src/Eigenvalues/RealSchur_LAPACKE.h"
54 | #include "src/Eigenvalues/ComplexSchur_LAPACKE.h"
55 | #include "src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h"
56 | #endif
57 |
58 | #include "src/Core/util/ReenableStupidWarnings.h"
59 |
60 | #endif // EIGEN_EIGENVALUES_MODULE_H
61 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Geometry:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_GEOMETRY_MODULE_H
9 | #define EIGEN_GEOMETRY_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "SVD"
14 | #include "LU"
15 | #include
16 |
17 | #include "src/Core/util/DisableStupidWarnings.h"
18 |
19 | /** \defgroup Geometry_Module Geometry module
20 | *
21 | * This module provides support for:
22 | * - fixed-size homogeneous transformations
23 | * - translation, scaling, 2D and 3D rotations
24 | * - \link Quaternion quaternions \endlink
25 | * - cross products (\ref MatrixBase::cross, \ref MatrixBase::cross3)
26 | * - orthognal vector generation (\ref MatrixBase::unitOrthogonal)
27 | * - some linear components: \link ParametrizedLine parametrized-lines \endlink and \link Hyperplane hyperplanes \endlink
28 | * - \link AlignedBox axis aligned bounding boxes \endlink
29 | * - \link umeyama least-square transformation fitting \endlink
30 | *
31 | * \code
32 | * #include
33 | * \endcode
34 | */
35 |
36 | #include "src/Geometry/OrthoMethods.h"
37 | #include "src/Geometry/EulerAngles.h"
38 |
39 | #include "src/Geometry/Homogeneous.h"
40 | #include "src/Geometry/RotationBase.h"
41 | #include "src/Geometry/Rotation2D.h"
42 | #include "src/Geometry/Quaternion.h"
43 | #include "src/Geometry/AngleAxis.h"
44 | #include "src/Geometry/Transform.h"
45 | #include "src/Geometry/Translation.h"
46 | #include "src/Geometry/Scaling.h"
47 | #include "src/Geometry/Hyperplane.h"
48 | #include "src/Geometry/ParametrizedLine.h"
49 | #include "src/Geometry/AlignedBox.h"
50 | #include "src/Geometry/Umeyama.h"
51 |
52 | // Use the SSE optimized version whenever possible.
53 | #if (defined EIGEN_VECTORIZE_SSE) || (defined EIGEN_VECTORIZE_NEON)
54 | #include "src/Geometry/arch/Geometry_SIMD.h"
55 | #endif
56 |
57 | #include "src/Core/util/ReenableStupidWarnings.h"
58 |
59 | #endif // EIGEN_GEOMETRY_MODULE_H
60 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Householder:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_HOUSEHOLDER_MODULE_H
9 | #define EIGEN_HOUSEHOLDER_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /** \defgroup Householder_Module Householder module
16 | * This module provides Householder transformations.
17 | *
18 | * \code
19 | * #include
20 | * \endcode
21 | */
22 |
23 | #include "src/Householder/Householder.h"
24 | #include "src/Householder/HouseholderSequence.h"
25 | #include "src/Householder/BlockHouseholder.h"
26 |
27 | #include "src/Core/util/ReenableStupidWarnings.h"
28 |
29 | #endif // EIGEN_HOUSEHOLDER_MODULE_H
30 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/IterativeLinearSolvers:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
9 | #define EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
10 |
11 | #include "SparseCore"
12 | #include "OrderingMethods"
13 |
14 | #include "src/Core/util/DisableStupidWarnings.h"
15 |
16 | /**
17 | * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module
18 | *
19 | * This module currently provides iterative methods to solve problems of the form \c A \c x = \c b, where \c A is a squared matrix, usually very large and sparse.
20 | * Those solvers are accessible via the following classes:
21 | * - ConjugateGradient for selfadjoint (hermitian) matrices,
22 | * - LeastSquaresConjugateGradient for rectangular least-square problems,
23 | * - BiCGSTAB for general square matrices.
24 | *
25 | * These iterative solvers are associated with some preconditioners:
26 | * - IdentityPreconditioner - not really useful
27 | * - DiagonalPreconditioner - also called Jacobi preconditioner, work very well on diagonal dominant matrices.
28 | * - IncompleteLUT - incomplete LU factorization with dual thresholding
29 | *
30 | * Such problems can also be solved using the direct sparse decomposition modules: SparseCholesky, CholmodSupport, UmfPackSupport, SuperLUSupport.
31 | *
32 | \code
33 | #include
34 | \endcode
35 | */
36 |
37 | #include "src/IterativeLinearSolvers/SolveWithGuess.h"
38 | #include "src/IterativeLinearSolvers/IterativeSolverBase.h"
39 | #include "src/IterativeLinearSolvers/BasicPreconditioners.h"
40 | #include "src/IterativeLinearSolvers/ConjugateGradient.h"
41 | #include "src/IterativeLinearSolvers/LeastSquareConjugateGradient.h"
42 | #include "src/IterativeLinearSolvers/BiCGSTAB.h"
43 | #include "src/IterativeLinearSolvers/IncompleteLUT.h"
44 | #include "src/IterativeLinearSolvers/IncompleteCholesky.h"
45 |
46 | #include "src/Core/util/ReenableStupidWarnings.h"
47 |
48 | #endif // EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
49 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Jacobi:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_JACOBI_MODULE_H
9 | #define EIGEN_JACOBI_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /** \defgroup Jacobi_Module Jacobi module
16 | * This module provides Jacobi and Givens rotations.
17 | *
18 | * \code
19 | * #include
20 | * \endcode
21 | *
22 | * In addition to listed classes, it defines the two following MatrixBase methods to apply a Jacobi or Givens rotation:
23 | * - MatrixBase::applyOnTheLeft()
24 | * - MatrixBase::applyOnTheRight().
25 | */
26 |
27 | #include "src/Jacobi/Jacobi.h"
28 |
29 | #include "src/Core/util/ReenableStupidWarnings.h"
30 |
31 | #endif // EIGEN_JACOBI_MODULE_H
32 |
33 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/KLUSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_KLUSUPPORT_MODULE_H
9 | #define EIGEN_KLUSUPPORT_MODULE_H
10 |
11 | #include
12 |
13 | #include
14 |
15 | extern "C" {
16 | #include
17 | #include
18 | }
19 |
20 | /** \ingroup Support_modules
21 | * \defgroup KLUSupport_Module KLUSupport module
22 | *
23 | * This module provides an interface to the KLU library which is part of the suitesparse package.
24 | * It provides the following factorization class:
25 | * - class KLU: a sparse LU factorization, well-suited for circuit simulation.
26 | *
27 | * \code
28 | * #include
29 | * \endcode
30 | *
31 | * In order to use this module, the klu and btf headers must be accessible from the include paths, and your binary must be linked to the klu library and its dependencies.
32 | * The dependencies depend on how umfpack has been compiled.
33 | * For a cmake based project, you can use our FindKLU.cmake module to help you in this task.
34 | *
35 | */
36 |
37 | #include "src/KLUSupport/KLUSupport.h"
38 |
39 | #include
40 |
41 | #endif // EIGEN_KLUSUPPORT_MODULE_H
42 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/LU:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_LU_MODULE_H
9 | #define EIGEN_LU_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /** \defgroup LU_Module LU module
16 | * This module includes %LU decomposition and related notions such as matrix inversion and determinant.
17 | * This module defines the following MatrixBase methods:
18 | * - MatrixBase::inverse()
19 | * - MatrixBase::determinant()
20 | *
21 | * \code
22 | * #include
23 | * \endcode
24 | */
25 |
26 | #include "src/misc/Kernel.h"
27 | #include "src/misc/Image.h"
28 | #include "src/LU/FullPivLU.h"
29 | #include "src/LU/PartialPivLU.h"
30 | #ifdef EIGEN_USE_LAPACKE
31 | #ifdef EIGEN_USE_MKL
32 | #include "mkl_lapacke.h"
33 | #else
34 | #include "src/misc/lapacke.h"
35 | #endif
36 | #include "src/LU/PartialPivLU_LAPACKE.h"
37 | #endif
38 | #include "src/LU/Determinant.h"
39 | #include "src/LU/InverseImpl.h"
40 |
41 | #if defined EIGEN_VECTORIZE_SSE || defined EIGEN_VECTORIZE_NEON
42 | #include "src/LU/arch/InverseSize4.h"
43 | #endif
44 |
45 | #include "src/Core/util/ReenableStupidWarnings.h"
46 |
47 | #endif // EIGEN_LU_MODULE_H
48 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/MetisSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_METISSUPPORT_MODULE_H
9 | #define EIGEN_METISSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | extern "C" {
16 | #include
17 | }
18 |
19 |
20 | /** \ingroup Support_modules
21 | * \defgroup MetisSupport_Module MetisSupport module
22 | *
23 | * \code
24 | * #include
25 | * \endcode
26 | * This module defines an interface to the METIS reordering package (http://glaros.dtc.umn.edu/gkhome/views/metis).
27 | * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink
28 | */
29 |
30 |
31 | #include "src/MetisSupport/MetisSupport.h"
32 |
33 | #include "src/Core/util/ReenableStupidWarnings.h"
34 |
35 | #endif // EIGEN_METISSUPPORT_MODULE_H
36 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/OrderingMethods:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_ORDERINGMETHODS_MODULE_H
9 | #define EIGEN_ORDERINGMETHODS_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /**
16 | * \defgroup OrderingMethods_Module OrderingMethods module
17 | *
18 | * This module is currently for internal use only
19 | *
20 | * It defines various built-in and external ordering methods for sparse matrices.
21 | * They are typically used to reduce the number of elements during
22 | * the sparse matrix decomposition (LLT, LU, QR).
23 | * Precisely, in a preprocessing step, a permutation matrix P is computed using
24 | * those ordering methods and applied to the columns of the matrix.
25 | * Using for instance the sparse Cholesky decomposition, it is expected that
26 | * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A).
27 | *
28 | *
29 | * Usage :
30 | * \code
31 | * #include
32 | * \endcode
33 | *
34 | * A simple usage is as a template parameter in the sparse decomposition classes :
35 | *
36 | * \code
37 | * SparseLU > solver;
38 | * \endcode
39 | *
40 | * \code
41 | * SparseQR > solver;
42 | * \endcode
43 | *
44 | * It is possible as well to call directly a particular ordering method for your own purpose,
45 | * \code
46 | * AMDOrdering ordering;
47 | * PermutationMatrix perm;
48 | * SparseMatrix A;
49 | * //Fill the matrix ...
50 | *
51 | * ordering(A, perm); // Call AMD
52 | * \endcode
53 | *
54 | * \note Some of these methods (like AMD or METIS), need the sparsity pattern
55 | * of the input matrix to be symmetric. When the matrix is structurally unsymmetric,
56 | * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method.
57 | * If your matrix is already symmetric (at leat in structure), you can avoid that
58 | * by calling the method with a SelfAdjointView type.
59 | *
60 | * \code
61 | * // Call the ordering on the pattern of the lower triangular matrix A
62 | * ordering(A.selfadjointView(), perm);
63 | * \endcode
64 | */
65 |
66 | #include "src/OrderingMethods/Amd.h"
67 | #include "src/OrderingMethods/Ordering.h"
68 | #include "src/Core/util/ReenableStupidWarnings.h"
69 |
70 | #endif // EIGEN_ORDERINGMETHODS_MODULE_H
71 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/PaStiXSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_PASTIXSUPPORT_MODULE_H
9 | #define EIGEN_PASTIXSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | extern "C" {
16 | #include
17 | #include
18 | }
19 |
20 | #ifdef complex
21 | #undef complex
22 | #endif
23 |
24 | /** \ingroup Support_modules
25 | * \defgroup PaStiXSupport_Module PaStiXSupport module
26 | *
27 | * This module provides an interface to the PaSTiX library.
28 | * PaSTiX is a general \b supernodal, \b parallel and \b opensource sparse solver.
29 | * It provides the two following main factorization classes:
30 | * - class PastixLLT : a supernodal, parallel LLt Cholesky factorization.
31 | * - class PastixLDLT: a supernodal, parallel LDLt Cholesky factorization.
32 | * - class PastixLU : a supernodal, parallel LU factorization (optimized for a symmetric pattern).
33 | *
34 | * \code
35 | * #include
36 | * \endcode
37 | *
38 | * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies.
39 | * This wrapper resuires PaStiX version 5.x compiled without MPI support.
40 | * The dependencies depend on how PaSTiX has been compiled.
41 | * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task.
42 | *
43 | */
44 |
45 | #include "src/PaStiXSupport/PaStiXSupport.h"
46 |
47 | #include "src/Core/util/ReenableStupidWarnings.h"
48 |
49 | #endif // EIGEN_PASTIXSUPPORT_MODULE_H
50 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/PardisoSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_PARDISOSUPPORT_MODULE_H
9 | #define EIGEN_PARDISOSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | #include
16 |
17 | /** \ingroup Support_modules
18 | * \defgroup PardisoSupport_Module PardisoSupport module
19 | *
20 | * This module brings support for the Intel(R) MKL PARDISO direct sparse solvers.
21 | *
22 | * \code
23 | * #include
24 | * \endcode
25 | *
26 | * In order to use this module, the MKL headers must be accessible from the include paths, and your binary must be linked to the MKL library and its dependencies.
27 | * See this \ref TopicUsingIntelMKL "page" for more information on MKL-Eigen integration.
28 | *
29 | */
30 |
31 | #include "src/PardisoSupport/PardisoSupport.h"
32 |
33 | #include "src/Core/util/ReenableStupidWarnings.h"
34 |
35 | #endif // EIGEN_PARDISOSUPPORT_MODULE_H
36 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/QR:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_QR_MODULE_H
9 | #define EIGEN_QR_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "Cholesky"
14 | #include "Jacobi"
15 | #include "Householder"
16 |
17 | #include "src/Core/util/DisableStupidWarnings.h"
18 |
19 | /** \defgroup QR_Module QR module
20 | *
21 | *
22 | *
23 | * This module provides various QR decompositions
24 | * This module also provides some MatrixBase methods, including:
25 | * - MatrixBase::householderQr()
26 | * - MatrixBase::colPivHouseholderQr()
27 | * - MatrixBase::fullPivHouseholderQr()
28 | *
29 | * \code
30 | * #include
31 | * \endcode
32 | */
33 |
34 | #include "src/QR/HouseholderQR.h"
35 | #include "src/QR/FullPivHouseholderQR.h"
36 | #include "src/QR/ColPivHouseholderQR.h"
37 | #include "src/QR/CompleteOrthogonalDecomposition.h"
38 | #ifdef EIGEN_USE_LAPACKE
39 | #ifdef EIGEN_USE_MKL
40 | #include "mkl_lapacke.h"
41 | #else
42 | #include "src/misc/lapacke.h"
43 | #endif
44 | #include "src/QR/HouseholderQR_LAPACKE.h"
45 | #include "src/QR/ColPivHouseholderQR_LAPACKE.h"
46 | #endif
47 |
48 | #include "src/Core/util/ReenableStupidWarnings.h"
49 |
50 | #endif // EIGEN_QR_MODULE_H
51 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/QtAlignedMalloc:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_QTMALLOC_MODULE_H
9 | #define EIGEN_QTMALLOC_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #if (!EIGEN_MALLOC_ALREADY_ALIGNED)
14 |
15 | #include "src/Core/util/DisableStupidWarnings.h"
16 |
17 | void *qMalloc(std::size_t size)
18 | {
19 | return Eigen::internal::aligned_malloc(size);
20 | }
21 |
22 | void qFree(void *ptr)
23 | {
24 | Eigen::internal::aligned_free(ptr);
25 | }
26 |
27 | void *qRealloc(void *ptr, std::size_t size)
28 | {
29 | void* newPtr = Eigen::internal::aligned_malloc(size);
30 | std::memcpy(newPtr, ptr, size);
31 | Eigen::internal::aligned_free(ptr);
32 | return newPtr;
33 | }
34 |
35 | #include "src/Core/util/ReenableStupidWarnings.h"
36 |
37 | #endif
38 |
39 | #endif // EIGEN_QTMALLOC_MODULE_H
40 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/SPQRSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SPQRSUPPORT_MODULE_H
9 | #define EIGEN_SPQRSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | #include "SuiteSparseQR.hpp"
16 |
17 | /** \ingroup Support_modules
18 | * \defgroup SPQRSupport_Module SuiteSparseQR module
19 | *
20 | * This module provides an interface to the SPQR library, which is part of the suitesparse package.
21 | *
22 | * \code
23 | * #include
24 | * \endcode
25 | *
26 | * In order to use this module, the SPQR headers must be accessible from the include paths, and your binary must be linked to the SPQR library and its dependencies (Cholmod, AMD, COLAMD,...).
27 | * For a cmake based project, you can use our FindSPQR.cmake and FindCholmod.Cmake modules
28 | *
29 | */
30 |
31 | #include "src/CholmodSupport/CholmodSupport.h"
32 | #include "src/SPQRSupport/SuiteSparseQRSupport.h"
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/SVD:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SVD_MODULE_H
9 | #define EIGEN_SVD_MODULE_H
10 |
11 | #include "QR"
12 | #include "Householder"
13 | #include "Jacobi"
14 |
15 | #include "src/Core/util/DisableStupidWarnings.h"
16 |
17 | /** \defgroup SVD_Module SVD module
18 | *
19 | *
20 | *
21 | * This module provides SVD decomposition for matrices (both real and complex).
22 | * Two decomposition algorithms are provided:
23 | * - JacobiSVD implementing two-sided Jacobi iterations is numerically very accurate, fast for small matrices, but very slow for larger ones.
24 | * - BDCSVD implementing a recursive divide & conquer strategy on top of an upper-bidiagonalization which remains fast for large problems.
25 | * These decompositions are accessible via the respective classes and following MatrixBase methods:
26 | * - MatrixBase::jacobiSvd()
27 | * - MatrixBase::bdcSvd()
28 | *
29 | * \code
30 | * #include
31 | * \endcode
32 | */
33 |
34 | #include "src/misc/RealSvd2x2.h"
35 | #include "src/SVD/UpperBidiagonalization.h"
36 | #include "src/SVD/SVDBase.h"
37 | #include "src/SVD/JacobiSVD.h"
38 | #include "src/SVD/BDCSVD.h"
39 | #if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT)
40 | #ifdef EIGEN_USE_MKL
41 | #include "mkl_lapacke.h"
42 | #else
43 | #include "src/misc/lapacke.h"
44 | #endif
45 | #include "src/SVD/JacobiSVD_LAPACKE.h"
46 | #endif
47 |
48 | #include "src/Core/util/ReenableStupidWarnings.h"
49 |
50 | #endif // EIGEN_SVD_MODULE_H
51 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/Sparse:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SPARSE_MODULE_H
9 | #define EIGEN_SPARSE_MODULE_H
10 |
11 | /** \defgroup Sparse_Module Sparse meta-module
12 | *
13 | * Meta-module including all related modules:
14 | * - \ref SparseCore_Module
15 | * - \ref OrderingMethods_Module
16 | * - \ref SparseCholesky_Module
17 | * - \ref SparseLU_Module
18 | * - \ref SparseQR_Module
19 | * - \ref IterativeLinearSolvers_Module
20 | *
21 | \code
22 | #include
23 | \endcode
24 | */
25 |
26 | #include "SparseCore"
27 | #include "OrderingMethods"
28 | #include "SparseCholesky"
29 | #include "SparseLU"
30 | #include "SparseQR"
31 | #include "IterativeLinearSolvers"
32 |
33 | #endif // EIGEN_SPARSE_MODULE_H
34 |
35 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/SparseCholesky:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // Copyright (C) 2008-2013 Gael Guennebaud
5 | //
6 | // This Source Code Form is subject to the terms of the Mozilla
7 | // Public License v. 2.0. If a copy of the MPL was not distributed
8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 |
10 | #ifndef EIGEN_SPARSECHOLESKY_MODULE_H
11 | #define EIGEN_SPARSECHOLESKY_MODULE_H
12 |
13 | #include "SparseCore"
14 | #include "OrderingMethods"
15 |
16 | #include "src/Core/util/DisableStupidWarnings.h"
17 |
18 | /**
19 | * \defgroup SparseCholesky_Module SparseCholesky module
20 | *
21 | * This module currently provides two variants of the direct sparse Cholesky decomposition for selfadjoint (hermitian) matrices.
22 | * Those decompositions are accessible via the following classes:
23 | * - SimplicialLLt,
24 | * - SimplicialLDLt
25 | *
26 | * Such problems can also be solved using the ConjugateGradient solver from the IterativeLinearSolvers module.
27 | *
28 | * \code
29 | * #include
30 | * \endcode
31 | */
32 |
33 | #include "src/SparseCholesky/SimplicialCholesky.h"
34 | #include "src/SparseCholesky/SimplicialCholesky_impl.h"
35 | #include "src/Core/util/ReenableStupidWarnings.h"
36 |
37 | #endif // EIGEN_SPARSECHOLESKY_MODULE_H
38 |
--------------------------------------------------------------------------------
/AstroLib/Include/Eigen/SparseCore:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SPARSECORE_MODULE_H
9 | #define EIGEN_SPARSECORE_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | #include
16 | #include