MoM_Kernels.GeosInterval
MoM_Kernels.MLFMAParams
MoM_Kernels.ParallelParams
MoM_Kernels.SSCg
MoM_Kernels.SSCgdivnp2
MoM_Kernels.VSC₃ⁿ
MoM_Kernels.CubeInfo
MoM_Kernels.GLPolesInfo
MoM_Kernels.GeosIntervalType
MoM_Kernels.LagrangeInterp1StepInfo
MoM_Kernels.LagrangeInterp1StepInfo
MoM_Kernels.LagrangeInterpInfo
MoM_Kernels.LagrangeInterpInfo
MoM_Kernels.LevelInfo
MoM_Kernels.MLFMAIterator
MoM_Kernels.MLFMAIterator
MoM_Kernels.MLFMAParamsType
MoM_Kernels.MatrixChunk
MoM_Kernels.MatrixChunk
MoM_Kernels.OctreeInfo
MoM_Kernels.OctreeInfo
MoM_Kernels.PartitionedVector
MoM_Kernels.SAIChunkPrec
MoM_Kernels.SAIPrec
MoM_Kernels.ZnearChunksStruct
MoM_Kernels.ZnearChunksStruct
MoM_Kernels.ZnearT
Base.:*
Base.:*
Base.:*
Base.:*
Base.:*
Base.:*
Base.convert
Base.eltype
Base.getindex
Base.getindex
Base.getindex
Base.setindex!
Base.setindex!
Base.size
LinearAlgebra.ldiv!
LinearAlgebra.ldiv!
LinearAlgebra.mul!
LinearAlgebra.mul!
LinearAlgebra.mul!
LinearAlgebra.mul!
LinearAlgebra.mul!
MoM_Kernels.CFIEOnNearTris
MoM_Kernels.CFIEOnTris
MoM_Kernels.CFIEOnTris
MoM_Kernels.EFIEOnHexaPWC
MoM_Kernels.EFIEOnHexaPWCSepPV
MoM_Kernels.EFIEOnHexaRBF
MoM_Kernels.EFIEOnHexaTetraPWC
MoM_Kernels.EFIEOnHexaTetraPWC
MoM_Kernels.EFIEOnHexasPWC
MoM_Kernels.EFIEOnHexasRBF
MoM_Kernels.EFIEOnNearHexaTetraPWC
MoM_Kernels.EFIEOnNearHexaTetraPWC
MoM_Kernels.EFIEOnNearHexasPWC
MoM_Kernels.EFIEOnNearHexasRBF
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGRBF
MoM_Kernels.EFIEOnNearRWGRBF
MoM_Kernels.EFIEOnNearRWGSWG
MoM_Kernels.EFIEOnNearRWGSWG
MoM_Kernels.EFIEOnNearTetrasPWC
MoM_Kernels.EFIEOnNearTetrasSWG
MoM_Kernels.EFIEOnNearTris
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGRBF
MoM_Kernels.EFIEOnRWGRBF
MoM_Kernels.EFIEOnRWGSWG
MoM_Kernels.EFIEOnRWGSWG
MoM_Kernels.EFIEOnTetraPWC
MoM_Kernels.EFIEOnTetraPWCSepPV
MoM_Kernels.EFIEOnTetraSWG
MoM_Kernels.EFIEOnTetrasPWC
MoM_Kernels.EFIEOnTetrasSWG
MoM_Kernels.EFIEOnTris
MoM_Kernels.EFIEOnTris
MoM_Kernels.MFIEOnNearTris
MoM_Kernels.MFIEOnTris
MoM_Kernels.MFIEOnTris
MoM_Kernels.RCSPlot
MoM_Kernels.ZnearChunkMulIVec!
MoM_Kernels.adjoint_agg2HighLevel!
MoM_Kernels.adjoint_agg2Level2!
MoM_Kernels.adjoint_aggOnBF!
MoM_Kernels.adjoint_disagg2KidLevel!
MoM_Kernels.adjoint_disagg2LeafLevel!
MoM_Kernels.adjoint_disaggOnBF!
MoM_Kernels.adjoint_transOnLevel!
MoM_Kernels.adjoint_transOnLevels!
MoM_Kernels.agg2HighLevel!
MoM_Kernels.agg2HighLevel!
MoM_Kernels.agg2Level2!
MoM_Kernels.aggOnBF!
MoM_Kernels.aggSBFOnLevel
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevelCFIE
MoM_Kernels.aggSBFOnLevelCFIE!
MoM_Kernels.aggSBFOnLevelEFIE
MoM_Kernels.aggSBFOnLevelEFIE!
MoM_Kernels.aggSBFOnLevelMFIE
MoM_Kernels.aggSBFOnLevelMFIE!
MoM_Kernels.anterpolate
MoM_Kernels.anterpolate
MoM_Kernels.anterpolate!
MoM_Kernels.anterpolate!
MoM_Kernels.calZfarI!
MoM_Kernels.calZnearCSC
MoM_Kernels.calZnearCSC!
MoM_Kernels.calZnearCSCCFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIEnew!
MoM_Kernels.calZnearCSCMFIE!
MoM_Kernels.caladjZfarI!
MoM_Kernels.calαTransOnLevel!
MoM_Kernels.coeffgreen
MoM_Kernels.convergencePlot
MoM_Kernels.cooraInCoorb
MoM_Kernels.disagg2KidLevel!
MoM_Kernels.disagg2KidLevel!
MoM_Kernels.disagg2LeafLevel!
MoM_Kernels.disaggOnBF!
MoM_Kernels.electricJCal
MoM_Kernels.electricJCal
MoM_Kernels.excitationVectorCFIE
MoM_Kernels.excitationVectorCFIE
MoM_Kernels.excitationVectorCFIE!
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorMFIE
MoM_Kernels.excitationVectorMFIE
MoM_Kernels.excitationVectorMFIE!
MoM_Kernels.faceSingularityIg
MoM_Kernels.faceSingularityIg
MoM_Kernels.faceSingularityIg
MoM_Kernels.faceSingularityIgIvecg
MoM_Kernels.faceSingularityIgIvecgI∇gS
MoM_Kernels.faceSingularityIᵣIᵨ
MoM_Kernels.farEPlot
MoM_Kernels.farField
MoM_Kernels.farField
MoM_Kernels.farField
MoM_Kernels.farField
MoM_Kernels.func4Cube1stkInterval
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.getAggSBFOnLevel
MoM_Kernels.getAggSBFOnLevel
MoM_Kernels.getAggSBFOnLevel
MoM_Kernels.getBfsCenter
MoM_Kernels.getBfsCenter
MoM_Kernels.getCubeIDsWithGeos
MoM_Kernels.getExcitationVector
MoM_Kernels.getExcitationVector
MoM_Kernels.getExcitationVector
MoM_Kernels.getGeoIDsInCubeChunk
MoM_Kernels.getGeosInterval
MoM_Kernels.getImpedanceMatAndExciteV
MoM_Kernels.getImpedanceMatAndExciteV
MoM_Kernels.getImpedanceMatrix
MoM_Kernels.getImpedanceOpt
MoM_Kernels.getImpedanceOptAndExciteVOctree
MoM_Kernels.getLeafCubeL
MoM_Kernels.getLeafCubeL
MoM_Kernels.getLeafCubeL
MoM_Kernels.getLeafCubeL
MoM_Kernels.getMeshDataSaveGeosInterval
MoM_Kernels.getNeiFarNeighborCubeIDs
MoM_Kernels.getNeighborCubeIDs
MoM_Kernels.getOctreeAndReOrderBFs!
MoM_Kernels.get_Interpolation_Method
MoM_Kernels.get_chunks_minmax_col
MoM_Kernels.get_leafCubeSize
MoM_Kernels.get_partition
MoM_Kernels.get_partition_map
MoM_Kernels.gq_xsws_on_sphere
MoM_Kernels.greenfunc_star
MoM_Kernels.iluPrecondition
MoM_Kernels.impedancemat4CFIE4PEC
MoM_Kernels.impedancemat4EFIE4PEC
MoM_Kernels.impedancemat4EFIE4PEC!
MoM_Kernels.impedancemat4MFIE4PEC
MoM_Kernels.impedancemat4RWGPWC!
MoM_Kernels.impedancemat4RWGPWC!
MoM_Kernels.impedancemat4RWGRBF!
MoM_Kernels.impedancemat4RWGSWG!
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VSIE
MoM_Kernels.impedancemat4VSIERWGPWC
MoM_Kernels.impedancemat4VSIERWGRBF
MoM_Kernels.impedancemat4VSIERWGSWG
MoM_Kernels.initialVMulZchunks!
MoM_Kernels.initialZchunksMulV!
MoM_Kernels.initialZnearCSC
MoM_Kernels.initialZnearCSR
MoM_Kernels.initialZnearChunks
MoM_Kernels.inputParameters
MoM_Kernels.integral1DXW
MoM_Kernels.interpolate
MoM_Kernels.interpolate
MoM_Kernels.interpolate!
MoM_Kernels.interpolate!
MoM_Kernels.interpolationCSCMatCal
MoM_Kernels.iterSolverSet
MoM_Kernels.levelIntegralInfoCal
MoM_Kernels.loadCurrent
MoM_Kernels.loadGeoInterval
MoM_Kernels.memoryAllocationOnLevels!
MoM_Kernels.modiSingularityRelatedConsts!
MoM_Kernels.octreeXWNCal
MoM_Kernels.pickCycleVec
MoM_Kernels.pickθ
MoM_Kernels.pickϕ
MoM_Kernels.radarCrossSection
MoM_Kernels.radarCrossSection
MoM_Kernels.radarCrossSection
MoM_Kernels.raditionalIntegralNCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.reOrderBasisFunctionAndGeoInfo!
MoM_Kernels.reOrderBasisFunctionAndGeoInfo!
MoM_Kernels.reOrderBasisFunctionAndGeoInfo!
MoM_Kernels.reOrderCubeID!
MoM_Kernels.record_memorys
MoM_Kernels.restore_infos
MoM_Kernels.saveCubes
MoM_Kernels.saveCurrent
MoM_Kernels.saveGeoInterval
MoM_Kernels.saveGeosInfoChunks
MoM_Kernels.saveLevel
MoM_Kernels.saveOctree
MoM_Kernels.saveVec2Chunks
MoM_Kernels.saveVec2Chunks
MoM_Kernels.searchNearCubes
MoM_Kernels.setBFInterval!
MoM_Kernels.setBigCube
MoM_Kernels.setGeoIDsInLeafCubes!
MoM_Kernels.setGeoIDsInLeafCubes!
MoM_Kernels.setGeoIDsInLeafCubes!
MoM_Kernels.setKidLevelFarNeighbors!
MoM_Kernels.setLevelInfo!
MoM_Kernels.setLevelInfo!
MoM_Kernels.setLevelTransFactor!
MoM_Kernels.setLevelsCubesKidsIn8!
MoM_Kernels.setLevelsShiftFactor!
MoM_Kernels.setVSC₁₂₃ⁿ!
MoM_Kernels.set_Interpolation_Method!
MoM_Kernels.set_geosInterval!
MoM_Kernels.set_leafCubeSize!
MoM_Kernels.set_nprocs!
MoM_Kernels.singularF1
MoM_Kernels.singularF1
MoM_Kernels.singularF21
MoM_Kernels.singularF22
MoM_Kernels.sizeChunks2cuts
MoM_Kernels.sizeChunks2idxs
MoM_Kernels.sizeChunksCuts2indices
MoM_Kernels.slicedim2bounds
MoM_Kernels.slicedim2partition
MoM_Kernels.solve
MoM_Kernels.solve!
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePr
MoM_Kernels.sparseApproximateInversePr
MoM_Kernels.sparseApproximateInversePr
MoM_Kernels.spherical_h1l
MoM_Kernels.spherical_h1l
MoM_Kernels.spherical_h1l_array
MoM_Kernels.spherical_h1l_array
MoM_Kernels.spherical_h2l
MoM_Kernels.spherical_h2l
MoM_Kernels.spherical_h2l_array
MoM_Kernels.spherical_h2l_array
MoM_Kernels.transOnLevel!
MoM_Kernels.transOnLevels!
MoM_Kernels.truncationLCal
MoM_Kernels.truncationLCal
MoM_Kernels.use_CSR
MoM_Kernels.volumeSingularityIg
MoM_Kernels.volumeSingularityIgIvecg
MoM_Kernels.volumeSingularityLOpDyad
MoM_Kernels.writeZtt!
MoM_Kernels.GeosInterval
— Constant保存网格数据区间的实例。
MoM_Kernels.MLFMAParams
— Constant多层快速多极子的可调参数
MoM_Kernels.ParallelParams
— Constant保存并行参数的实例。
MoM_Kernels.SSCg
— Constant计算面奇异性时用的两个系数。
MoM_Kernels.SSCgdivnp2
— Constant计算体奇异性时用到的一些系数。
MoM_Kernels.VSC₃ⁿ
— Constant这一项面、体奇异性都用到了,处理对格林函数梯度求积时的奇异性时用到的。
MoM_Kernels.ZnearT
— Type近场阻抗矩阵的类型集合。
MoM_Kernels.CubeInfo
— TypeCubeInfo{IT<:Integer, FT<:Real}
盒子信息,包括:
kidsInterval ::UnitRange{IT} 子层盒子id的区间
+API · MoM_Kernels.jl MoM_Kernels.GeosInterval
MoM_Kernels.MLFMAParams
MoM_Kernels.ParallelParams
MoM_Kernels.SSCg
MoM_Kernels.SSCgdivnp2
MoM_Kernels.VSC₃ⁿ
MoM_Kernels.CubeInfo
MoM_Kernels.GLPolesInfo
MoM_Kernels.GeosIntervalType
MoM_Kernels.LagrangeInterp1StepInfo
MoM_Kernels.LagrangeInterp1StepInfo
MoM_Kernels.LagrangeInterpInfo
MoM_Kernels.LagrangeInterpInfo
MoM_Kernels.LevelInfo
MoM_Kernels.MLFMAIterator
MoM_Kernels.MLFMAIterator
MoM_Kernels.MLFMAParamsType
MoM_Kernels.MatrixChunk
MoM_Kernels.MatrixChunk
MoM_Kernels.OctreeInfo
MoM_Kernels.OctreeInfo
MoM_Kernels.PartitionedVector
MoM_Kernels.SAIChunkPrec
MoM_Kernels.SAIPrec
MoM_Kernels.ZnearChunksStruct
MoM_Kernels.ZnearChunksStruct
MoM_Kernels.ZnearT
Base.:*
Base.:*
Base.:*
Base.:*
Base.:*
Base.:*
Base.convert
Base.eltype
Base.getindex
Base.getindex
Base.getindex
Base.setindex!
Base.setindex!
Base.size
LinearAlgebra.ldiv!
LinearAlgebra.ldiv!
LinearAlgebra.mul!
LinearAlgebra.mul!
LinearAlgebra.mul!
LinearAlgebra.mul!
LinearAlgebra.mul!
MoM_Kernels.CFIEOnNearTris
MoM_Kernels.CFIEOnTris
MoM_Kernels.CFIEOnTris
MoM_Kernels.EFIEOnHexaPWC
MoM_Kernels.EFIEOnHexaPWCSepPV
MoM_Kernels.EFIEOnHexaRBF
MoM_Kernels.EFIEOnHexaTetraPWC
MoM_Kernels.EFIEOnHexaTetraPWC
MoM_Kernels.EFIEOnHexasPWC
MoM_Kernels.EFIEOnHexasRBF
MoM_Kernels.EFIEOnNearHexaTetraPWC
MoM_Kernels.EFIEOnNearHexaTetraPWC
MoM_Kernels.EFIEOnNearHexasPWC
MoM_Kernels.EFIEOnNearHexasRBF
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGPWC
MoM_Kernels.EFIEOnNearRWGRBF
MoM_Kernels.EFIEOnNearRWGRBF
MoM_Kernels.EFIEOnNearRWGSWG
MoM_Kernels.EFIEOnNearRWGSWG
MoM_Kernels.EFIEOnNearTetrasPWC
MoM_Kernels.EFIEOnNearTetrasSWG
MoM_Kernels.EFIEOnNearTris
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGPWC
MoM_Kernels.EFIEOnRWGRBF
MoM_Kernels.EFIEOnRWGRBF
MoM_Kernels.EFIEOnRWGSWG
MoM_Kernels.EFIEOnRWGSWG
MoM_Kernels.EFIEOnTetraPWC
MoM_Kernels.EFIEOnTetraPWCSepPV
MoM_Kernels.EFIEOnTetraSWG
MoM_Kernels.EFIEOnTetrasPWC
MoM_Kernels.EFIEOnTetrasSWG
MoM_Kernels.EFIEOnTris
MoM_Kernels.EFIEOnTris
MoM_Kernels.MFIEOnNearTris
MoM_Kernels.MFIEOnTris
MoM_Kernels.MFIEOnTris
MoM_Kernels.RCSPlot
MoM_Kernels.ZnearChunkMulIVec!
MoM_Kernels.adjoint_agg2HighLevel!
MoM_Kernels.adjoint_agg2Level2!
MoM_Kernels.adjoint_aggOnBF!
MoM_Kernels.adjoint_disagg2KidLevel!
MoM_Kernels.adjoint_disagg2LeafLevel!
MoM_Kernels.adjoint_disaggOnBF!
MoM_Kernels.adjoint_transOnLevel!
MoM_Kernels.adjoint_transOnLevels!
MoM_Kernels.agg2HighLevel!
MoM_Kernels.agg2HighLevel!
MoM_Kernels.agg2Level2!
MoM_Kernels.aggOnBF!
MoM_Kernels.aggSBFOnLevel
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevel!
MoM_Kernels.aggSBFOnLevelCFIE
MoM_Kernels.aggSBFOnLevelCFIE!
MoM_Kernels.aggSBFOnLevelEFIE
MoM_Kernels.aggSBFOnLevelEFIE!
MoM_Kernels.aggSBFOnLevelMFIE
MoM_Kernels.aggSBFOnLevelMFIE!
MoM_Kernels.anterpolate
MoM_Kernels.anterpolate
MoM_Kernels.anterpolate!
MoM_Kernels.anterpolate!
MoM_Kernels.calZfarI!
MoM_Kernels.calZnearCSC
MoM_Kernels.calZnearCSC!
MoM_Kernels.calZnearCSCCFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIE!
MoM_Kernels.calZnearCSCEFIEnew!
MoM_Kernels.calZnearCSCMFIE!
MoM_Kernels.caladjZfarI!
MoM_Kernels.calαTransOnLevel!
MoM_Kernels.coeffgreen
MoM_Kernels.convergencePlot
MoM_Kernels.cooraInCoorb
MoM_Kernels.disagg2KidLevel!
MoM_Kernels.disagg2KidLevel!
MoM_Kernels.disagg2LeafLevel!
MoM_Kernels.disaggOnBF!
MoM_Kernels.electricJCal
MoM_Kernels.electricJCal
MoM_Kernels.excitationVectorCFIE
MoM_Kernels.excitationVectorCFIE
MoM_Kernels.excitationVectorCFIE!
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorEFIE!
MoM_Kernels.excitationVectorMFIE
MoM_Kernels.excitationVectorMFIE
MoM_Kernels.excitationVectorMFIE!
MoM_Kernels.faceSingularityIg
MoM_Kernels.faceSingularityIg
MoM_Kernels.faceSingularityIg
MoM_Kernels.faceSingularityIgIvecg
MoM_Kernels.faceSingularityIgIvecgI∇gS
MoM_Kernels.faceSingularityIᵣIᵨ
MoM_Kernels.farEPlot
MoM_Kernels.farField
MoM_Kernels.farField
MoM_Kernels.farField
MoM_Kernels.farField
MoM_Kernels.func4Cube1stkInterval
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.geoElectricJCal
MoM_Kernels.getAggSBFOnLevel
MoM_Kernels.getAggSBFOnLevel
MoM_Kernels.getAggSBFOnLevel
MoM_Kernels.getBfsCenter
MoM_Kernels.getBfsCenter
MoM_Kernels.getCubeIDsWithGeos
MoM_Kernels.getExcitationVector
MoM_Kernels.getExcitationVector
MoM_Kernels.getExcitationVector
MoM_Kernels.getGeoIDsInCubeChunk
MoM_Kernels.getGeosInterval
MoM_Kernels.getImpedanceMatAndExciteV
MoM_Kernels.getImpedanceMatAndExciteV
MoM_Kernels.getImpedanceMatrix
MoM_Kernels.getImpedanceOpt
MoM_Kernels.getImpedanceOptAndExciteVOctree
MoM_Kernels.getLeafCubeL
MoM_Kernels.getLeafCubeL
MoM_Kernels.getLeafCubeL
MoM_Kernels.getLeafCubeL
MoM_Kernels.getMeshDataSaveGeosInterval
MoM_Kernels.getNeiFarNeighborCubeIDs
MoM_Kernels.getNeighborCubeIDs
MoM_Kernels.getOctreeAndReOrderBFs!
MoM_Kernels.get_Interpolation_Method
MoM_Kernels.get_chunks_minmax_col
MoM_Kernels.get_leafCubeSize
MoM_Kernels.get_partition
MoM_Kernels.get_partition_map
MoM_Kernels.gq_xsws_on_sphere
MoM_Kernels.greenfunc_star
MoM_Kernels.iluPrecondition
MoM_Kernels.impedancemat4CFIE4PEC
MoM_Kernels.impedancemat4EFIE4PEC
MoM_Kernels.impedancemat4EFIE4PEC!
MoM_Kernels.impedancemat4MFIE4PEC
MoM_Kernels.impedancemat4RWGPWC!
MoM_Kernels.impedancemat4RWGPWC!
MoM_Kernels.impedancemat4RWGRBF!
MoM_Kernels.impedancemat4RWGSWG!
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VIE!
MoM_Kernels.impedancemat4VSIE
MoM_Kernels.impedancemat4VSIERWGPWC
MoM_Kernels.impedancemat4VSIERWGRBF
MoM_Kernels.impedancemat4VSIERWGSWG
MoM_Kernels.initialVMulZchunks!
MoM_Kernels.initialZchunksMulV!
MoM_Kernels.initialZnearCSC
MoM_Kernels.initialZnearCSR
MoM_Kernels.initialZnearChunks
MoM_Kernels.inputParameters
MoM_Kernels.integral1DXW
MoM_Kernels.interpolate
MoM_Kernels.interpolate
MoM_Kernels.interpolate!
MoM_Kernels.interpolate!
MoM_Kernels.interpolationCSCMatCal
MoM_Kernels.iterSolverSet
MoM_Kernels.levelIntegralInfoCal
MoM_Kernels.loadCurrent
MoM_Kernels.loadGeoInterval
MoM_Kernels.memoryAllocationOnLevels!
MoM_Kernels.modiSingularityRelatedConsts!
MoM_Kernels.octreeXWNCal
MoM_Kernels.pickCycleVec
MoM_Kernels.pickθ
MoM_Kernels.pickϕ
MoM_Kernels.radarCrossSection
MoM_Kernels.radarCrossSection
MoM_Kernels.radarCrossSection
MoM_Kernels.raditionalIntegralNCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.raditionalIntegralNθϕCal
MoM_Kernels.reOrderBasisFunctionAndGeoInfo!
MoM_Kernels.reOrderBasisFunctionAndGeoInfo!
MoM_Kernels.reOrderBasisFunctionAndGeoInfo!
MoM_Kernels.reOrderCubeID!
MoM_Kernels.record_memorys
MoM_Kernels.restore_infos
MoM_Kernels.saveCubes
MoM_Kernels.saveCurrent
MoM_Kernels.saveGeoInterval
MoM_Kernels.saveGeosInfoChunks
MoM_Kernels.saveLevel
MoM_Kernels.saveOctree
MoM_Kernels.saveVec2Chunks
MoM_Kernels.saveVec2Chunks
MoM_Kernels.searchNearCubes
MoM_Kernels.setBFInterval!
MoM_Kernels.setBigCube
MoM_Kernels.setGeoIDsInLeafCubes!
MoM_Kernels.setGeoIDsInLeafCubes!
MoM_Kernels.setGeoIDsInLeafCubes!
MoM_Kernels.setKidLevelFarNeighbors!
MoM_Kernels.setLevelInfo!
MoM_Kernels.setLevelInfo!
MoM_Kernels.setLevelTransFactor!
MoM_Kernels.setLevelsCubesKidsIn8!
MoM_Kernels.setLevelsShiftFactor!
MoM_Kernels.setVSC₁₂₃ⁿ!
MoM_Kernels.set_Interpolation_Method!
MoM_Kernels.set_geosInterval!
MoM_Kernels.set_leafCubeSize!
MoM_Kernels.set_nprocs!
MoM_Kernels.singularF1
MoM_Kernels.singularF1
MoM_Kernels.singularF21
MoM_Kernels.singularF22
MoM_Kernels.sizeChunks2cuts
MoM_Kernels.sizeChunks2idxs
MoM_Kernels.sizeChunksCuts2indices
MoM_Kernels.slicedim2bounds
MoM_Kernels.slicedim2partition
MoM_Kernels.solve
MoM_Kernels.solve!
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePl
MoM_Kernels.sparseApproximateInversePr
MoM_Kernels.sparseApproximateInversePr
MoM_Kernels.sparseApproximateInversePr
MoM_Kernels.spherical_h1l
MoM_Kernels.spherical_h1l
MoM_Kernels.spherical_h1l_array
MoM_Kernels.spherical_h1l_array
MoM_Kernels.spherical_h2l
MoM_Kernels.spherical_h2l
MoM_Kernels.spherical_h2l_array
MoM_Kernels.spherical_h2l_array
MoM_Kernels.transOnLevel!
MoM_Kernels.transOnLevels!
MoM_Kernels.truncationLCal
MoM_Kernels.truncationLCal
MoM_Kernels.use_CSR
MoM_Kernels.volumeSingularityIg
MoM_Kernels.volumeSingularityIgIvecg
MoM_Kernels.volumeSingularityLOpDyad
MoM_Kernels.writeZtt!
MoM_Kernels.GeosInterval
— Constant保存网格数据区间的实例。
sourceMoM_Kernels.MLFMAParams
— Constant多层快速多极子的可调参数
sourceMoM_Kernels.ParallelParams
— Constant保存并行参数的实例。
sourceMoM_Kernels.SSCg
— Constant计算面奇异性时用的两个系数。
sourceMoM_Kernels.SSCgdivnp2
— Constant计算体奇异性时用到的一些系数。
sourceMoM_Kernels.VSC₃ⁿ
— Constant这一项面、体奇异性都用到了,处理对格林函数梯度求积时的奇异性时用到的。
sourceMoM_Kernels.ZnearT
— Type近场阻抗矩阵的类型集合。
sourceMoM_Kernels.CubeInfo
— TypeCubeInfo{IT<:Integer, FT<:Real}
盒子信息,包括:
kidsInterval ::UnitRange{IT} 子层盒子id的区间
bfInterval ::UnitRange{IT} 包含的基函数区间
kidsIn8 ::Vector{IT} 非空子盒子在8个子盒子中的id
geoIDs ::Vector{IT} 包含的网格如三角形、四面体的id,以基函数进行分,因此边界上的同一个网格可能被分到不同的盒子内。
neighbors ::Vector{IT} 邻盒子id
farneighbors ::Vector{IT} 远亲盒子的id
ID3D ::MVec3D{IT} 本盒子在本层的三维整数坐标
-center ::MVec3D{FT} 本盒子在本层的三维全局坐标
sourceMoM_Kernels.GLPolesInfo
— Type多极子的极信息,即角谱空间采样信息 Xθs::Vector{FT},θ方向的采样点坐标(rad单位),高斯-勒让德求积 Xϕs::Vector{FT},ϕ方向的采样点坐标(rad单位),均值求积 Wθϕs::Vector{FT},采样点权重,用于积分时使用,在MLFMA中直接乘在转移项
sourceMoM_Kernels.GeosIntervalType
— TypeGeosIntervalType{T}
保存网格数据区间的类。
sourceMoM_Kernels.LagrangeInterp1StepInfo
— Type保存总的 稀疏插值矩阵,用于单步插值,根据稀疏度决定保存稀疏阵或是稠密阵 θϕCSC ::AbstractMatrix{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 θϕCSCT ::AbstractMatrix{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值
sourceMoM_Kernels.LagrangeInterp1StepInfo
— Method带参数的构造函数
sourceMoM_Kernels.LagrangeInterpInfo
— Type保存 θ, ϕ 两个方向的稀疏插值矩阵, θ方向为 (npXθs, ntXθs) 稀疏矩阵, 用于左乘本层多极子矩阵,在 θ 方向插值 ϕ方向为 (ntXϕs, ntXϕs) 稀疏矩阵, 用于右乘本层多极子矩阵,在 ϕ 方向插值 θCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 ϕCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值
sourceMoM_Kernels.LagrangeInterpInfo
— Method带参数的构造函数
sourceMoM_Kernels.LevelInfo
— TypeLevelInfo{IT<:Integer, FT<:Real, IPT} <: AbstractLevel
层信息:
ID ::IT 层序号
+center ::MVec3D{FT} 本盒子在本层的三维全局坐标
sourceMoM_Kernels.GLPolesInfo
— Type多极子的极信息,即角谱空间采样信息 Xθs::Vector{FT},θ方向的采样点坐标(rad单位),高斯-勒让德求积 Xϕs::Vector{FT},ϕ方向的采样点坐标(rad单位),均值求积 Wθϕs::Vector{FT},采样点权重,用于积分时使用,在MLFMA中直接乘在转移项
sourceMoM_Kernels.GeosIntervalType
— TypeGeosIntervalType{T}
保存网格数据区间的类。
sourceMoM_Kernels.LagrangeInterp1StepInfo
— Type保存总的 稀疏插值矩阵,用于单步插值,根据稀疏度决定保存稀疏阵或是稠密阵 θϕCSC ::AbstractMatrix{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 θϕCSCT ::AbstractMatrix{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值
sourceMoM_Kernels.LagrangeInterp1StepInfo
— Method带参数的构造函数
sourceMoM_Kernels.LagrangeInterpInfo
— Type保存 θ, ϕ 两个方向的稀疏插值矩阵, θ方向为 (npXθs, ntXθs) 稀疏矩阵, 用于左乘本层多极子矩阵,在 θ 方向插值 ϕ方向为 (ntXϕs, ntXϕs) 稀疏矩阵, 用于右乘本层多极子矩阵,在 ϕ 方向插值 θCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 ϕCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值
sourceMoM_Kernels.LagrangeInterpInfo
— Method带参数的构造函数
sourceMoM_Kernels.LevelInfo
— TypeLevelInfo{IT<:Integer, FT<:Real, IPT} <: AbstractLevel
层信息:
ID ::IT 层序号
isleaf ::Bool 是否为叶层
L ::IT 本层截断项数
cubes ::Vector{CubeInfo{IT, FT}} 包含每一个盒子信息的向量
@@ -17,106 +17,106 @@
disaggG ::Array{Complex{FT}, 3} 解聚项
phaseShift2Kids ::Array{Complex{FT}, 3}本层盒子到子层盒子的相移因子
αTrans ::Array{Complex{FT}, 3} 本层盒子远亲组之间的转移因子,根据相对位置共有 7^3 - 3^3 = 316 个
-αTransIndex ::Array{IT, 2} 远亲盒子的相对位置到其转移因子在所有转移因子数组的索引
sourceMoM_Kernels.MLFMAIterator
— Type保存 MLFMA 相关信息的结构体
sourceMoM_Kernels.MLFMAIterator
— Method实现矩阵向量乘积,并封装为线性算子
sourceMoM_Kernels.MLFMAParamsType
— Type创建可变参数类型以在频率更改时对应更改 MLFMA 的相关参数
sourceMoM_Kernels.MatrixChunk
— TypeMatrixChunk{T<:Number} <:AbstractMatrix{T}
创建近场矩阵块结构体,所包含的数据为某一盒子内的近场矩阵元。
m::Int 行数
+αTransIndex ::Array{IT, 2} 远亲盒子的相对位置到其转移因子在所有转移因子数组的索引
sourceMoM_Kernels.MLFMAIterator
— Type保存 MLFMA 相关信息的结构体
sourceMoM_Kernels.MLFMAIterator
— Method实现矩阵向量乘积,并封装为线性算子
sourceMoM_Kernels.MLFMAParamsType
— Type创建可变参数类型以在频率更改时对应更改 MLFMA 的相关参数
sourceMoM_Kernels.MatrixChunk
— TypeMatrixChunk{T<:Number} <:AbstractMatrix{T}
创建近场矩阵块结构体,所包含的数据为某一盒子内的近场矩阵元。
m::Int 行数
n::Int 列数
mat::Matrix{T} 矩阵
rowIndices::AbstractVector{Int} 行索引
colIndices::AbstractVector{Int} 列索引
lmul::AbstractVector{T} 用于左乘其它矩阵、向量的临时数组,大小与列数相同
-rmul::AbstractVector{T} 用于右乘其它矩阵、向量的临时数组,大小与行数相同
sourceMoM_Kernels.MatrixChunk
— MethodMatrixChunk{T}(rowIndices, colIndices) where {T<:Number}
用行、列索引 rowIndices, colIndices
初始化矩阵块。
sourceMoM_Kernels.OctreeInfo
— Type八叉树类 nLevels ::Integer, 叶层ID(定义大盒子为(“0” 层),叶层为第“n”层,nLevels取“n”的值) leafCubeEdgel::FT,叶层盒子边长 bigCubeLowerCoor::MVec3D{FT},第0层盒子的角坐标 levels ::Dict{Int, LevelInfo},保存各层信息的字典
sourceMoM_Kernels.OctreeInfo
— Method构建八叉树类
sourceMoM_Kernels.PartitionedVector
— TypePartitionedVector{T} <: AbstractVector{T}
用于保存向量块的类,同时在块内保存一些其他块的数据。
size::Int 原始 Vector 的大小
+rmul::AbstractVector{T} 用于右乘其它矩阵、向量的临时数组,大小与行数相同
sourceMoM_Kernels.MatrixChunk
— MethodMatrixChunk{T}(rowIndices, colIndices) where {T<:Number}
用行、列索引 rowIndices, colIndices
初始化矩阵块。
sourceMoM_Kernels.OctreeInfo
— Type八叉树类 nLevels ::Integer, 叶层ID(定义大盒子为(“0” 层),叶层为第“n”层,nLevels取“n”的值) leafCubeEdgel::FT,叶层盒子边长 bigCubeLowerCoor::MVec3D{FT},第0层盒子的角坐标 levels ::Dict{Int, LevelInfo},保存各层信息的字典
sourceMoM_Kernels.OctreeInfo
— Method构建八叉树类
sourceMoM_Kernels.PartitionedVector
— TypePartitionedVector{T} <: AbstractVector{T}
用于保存向量块的类,同时在块内保存一些其他块的数据。
size::Int 原始 Vector 的大小
data::OffsetVector{T, Vector{T}} 本地保存的数据
indices::UnitRange{Int} 本地保存数据的索引区间
ghostdata::SparseVector{T, Int} 用到的其它数据
-ghostindices::Vector{Int} 用到的其它数据的索引区间
sourceMoM_Kernels.SAIChunkPrec
— TypeSAIChunkPrec{T} <: AbstractMatrix{T}
分块系数近似逆的结构体。
sourceMoM_Kernels.SAIPrec
— TypeSAIPrec{T} <: AbstractMatrix{T}
封装系数近似逆矩阵的类型。
sourceMoM_Kernels.ZnearChunksStruct
— Type创建近场矩阵结构体,所包含的数据为所有盒子内的近场矩阵元,多线程版本
m::Int 行数
+ghostindices::Vector{Int} 用到的其它数据的索引区间
sourceMoM_Kernels.SAIChunkPrec
— TypeSAIChunkPrec{T} <: AbstractMatrix{T}
分块系数近似逆的结构体。
sourceMoM_Kernels.SAIPrec
— TypeSAIPrec{T} <: AbstractMatrix{T}
封装系数近似逆矩阵的类型。
sourceMoM_Kernels.ZnearChunksStruct
— Type创建近场矩阵结构体,所包含的数据为所有盒子内的近场矩阵元,多线程版本
m::Int 行数
n::Int 列数
nChunks::Int 矩阵块儿数
chunks::Vector{ZnearChunksStruct{T}} 矩阵
lmul::Vector{T} 用于左乘其它矩阵、向量的临时数组,大小与列数相同
lmuld::Vector{T} 用于左乘其它矩阵、向量的临时分布式数组,大小与列数相同,默认不分配
rmul::Vector{T} 用于右乘其它矩阵、向量的临时数组,大小与行数相同
-lmuld::Vector{T} 用于左乘其它矩阵、向量的临时分布式数组,大小与列数相同,默认不分配
sourceMoM_Kernels.ZnearChunksStruct
— MethodZnearChunksStruct{T}(chunks; m, n) where {T<:Number}
ZnearChunksStruct 类的初始化函数。
sourceBase.:*
— Method*(mat::AbstractMatrix, Z::T) where{T<:MatrixChunk}
实现右乘其它矩阵,默认矩阵块较小,不在本阶段并行。
sourceBase.:*
— Method*(x::AbstractVector, Z::T) where{T<:MatrixChunk}
实现矩阵块 Z
右乘其它向量,默认矩阵块较小,不在本阶段并行。
sourceBase.:*
— MethodBase.:*(Z::ZNEARCHUNK{T}, mat::AbstractMatrix) where{T<:Number}
实现左乘其它矩阵
sourceBase.:*
— Method*(Z::T, mat::AbstractMatrix) where{T<:MatrixChunk}
实现矩阵块 Z
左乘其它矩阵,默认矩阵块较小,不在本阶段并行。
sourceBase.:*
— MethodBase.:*(Z::T, x::AbstractVector) where{T<:MatrixChunk}
实现左乘其它向量,默认矩阵块较小,因此不在本阶段并行
sourceBase.:*
— MethodBase.:*(Z::T, x::AbstractVector) where{T<:ZnearChunksStruct}
实现左乘其它向量
sourceBase.convert
— Method实现包含分布式层的
sourceBase.eltype
— Methodeltype(opt::ILUFactorization)
提供 ilu 的算子 eltype 函数。
sourceBase.getindex
— MethodBase.getindex(A::PartitionedVector, i::I) where {I<:Integer}
重载 PartitionedVector
类型的 getindex
函数。
sourceBase.getindex
— Methodgetindex(Z::T, i1::Int, i2::Int) where{T<:MatrixChunk}
重载 getindex 函数。
sourceBase.getindex
— Method重载 getindex 函数
sourceBase.setindex!
— Methodsetindex!(Z::T, x, i1::Int, i2::Int) where{T<:MatrixChunk}
重载 setindex! 函数
sourceBase.setindex!
— Methodsetindex!(Z::T, x, i1::Int, i2::Int) where{T<:ZNEARCHUNK}
重载 setindex! 函数
sourceBase.size
— Methodsize(operator::T) where {T<:ILUFactorization}
提供 ilu 的算子 size 函数。
sourceLinearAlgebra.ldiv!
— Methodldiv!(M::SAIChunkPrec{T}, x::AbstractVector) where {T}
-ldiv!(y::AbstractVector, M::SAIChunkPrec{T}, x::AbstractVector) where {T}
实现 x .= M * x
或 y .= M * x
。
sourceLinearAlgebra.ldiv!
— Methodldiv!(M::SAIPrec{T}, x::AbstractVector) where {T}
-ldiv!(y::AbstractVector, M::SAIPrec{T}, x::AbstractVector) where {T}
实现 x .= M * x
或 y .= M * x
。
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+lmuld::Vector{T} 用于左乘其它矩阵、向量的临时分布式数组,大小与列数相同,默认不分配
sourceMoM_Kernels.ZnearChunksStruct
— MethodZnearChunksStruct{T}(chunks; m, n) where {T<:Number}
ZnearChunksStruct 类的初始化函数。
sourceBase.:*
— Method*(mat::AbstractMatrix, Z::T) where{T<:MatrixChunk}
实现右乘其它矩阵,默认矩阵块较小,不在本阶段并行。
sourceBase.:*
— Method*(x::AbstractVector, Z::T) where{T<:MatrixChunk}
实现矩阵块 Z
右乘其它向量,默认矩阵块较小,不在本阶段并行。
sourceBase.:*
— MethodBase.:*(Z::ZNEARCHUNK{T}, mat::AbstractMatrix) where{T<:Number}
实现左乘其它矩阵
sourceBase.:*
— Method*(Z::T, mat::AbstractMatrix) where{T<:MatrixChunk}
实现矩阵块 Z
左乘其它矩阵,默认矩阵块较小,不在本阶段并行。
sourceBase.:*
— MethodBase.:*(Z::T, x::AbstractVector) where{T<:MatrixChunk}
实现左乘其它向量,默认矩阵块较小,因此不在本阶段并行
sourceBase.:*
— MethodBase.:*(Z::T, x::AbstractVector) where{T<:ZnearChunksStruct}
实现左乘其它向量
sourceBase.convert
— Method实现包含分布式层的
sourceBase.eltype
— Methodeltype(opt::ILUFactorization)
提供 ilu 的算子 eltype 函数。
sourceBase.getindex
— MethodBase.getindex(A::PartitionedVector, i::I) where {I<:Integer}
重载 PartitionedVector
类型的 getindex
函数。
sourceBase.getindex
— Methodgetindex(Z::T, i1::Int, i2::Int) where{T<:MatrixChunk}
重载 getindex 函数。
sourceBase.getindex
— Method重载 getindex 函数
sourceBase.setindex!
— Methodsetindex!(Z::T, x, i1::Int, i2::Int) where{T<:MatrixChunk}
重载 setindex! 函数
sourceBase.setindex!
— Methodsetindex!(Z::T, x, i1::Int, i2::Int) where{T<:ZNEARCHUNK}
重载 setindex! 函数
sourceBase.size
— Methodsize(operator::T) where {T<:ILUFactorization}
提供 ilu 的算子 size 函数。
sourceLinearAlgebra.ldiv!
— Methodldiv!(M::SAIChunkPrec{T}, x::AbstractVector) where {T}
+ldiv!(y::AbstractVector, M::SAIChunkPrec{T}, x::AbstractVector) where {T}
实现 x .= M * x
或 y .= M * x
。
sourceLinearAlgebra.ldiv!
— Methodldiv!(M::SAIPrec{T}, x::AbstractVector) where {T}
+ldiv!(y::AbstractVector, M::SAIPrec{T}, x::AbstractVector) where {T}
实现 x .= M * x
或 y .= M * x
。
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
-重载以实现矩阵向量乘积计算
TBW
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+重载以实现矩阵向量乘积计算
TBW
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
-重载以实现矩阵向量乘积计算
TBW
sourceLinearAlgebra.mul!
— Methodmul!(y, Z::T, x::AbstractVector) where{T<:MatrixChunk}
实现矩阵块 Z
的矩阵向量乘积计算。
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+重载以实现矩阵向量乘积计算
TBW
sourceLinearAlgebra.mul!
— Methodmul!(y, Z::T, x::AbstractVector) where{T<:MatrixChunk}
实现矩阵块 Z
的矩阵向量乘积计算。
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
-重载以实现矩阵向量乘积计算
TBW
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+重载以实现矩阵向量乘积计算
TBW
sourceLinearAlgebra.mul!
— MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
-重载以实现矩阵向量乘积计算
TBW
sourceMoM_Kernels.CFIEOnNearTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.CFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.CFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
sourceMoM_Kernels.EFIEOnHexaPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入: hexat HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
sourceMoM_Kernels.EFIEOnHexaPWCSepPV
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入: hexat HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
sourceMoM_Kernels.EFIEOnHexaRBF
— Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入 hexat : HexahedraInfo, 场六面体和源六面体
sourceMoM_Kernels.EFIEOnHexaTetraPWC
— Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat::HexahedraInfo, 场六面体 tetras::TetrahedraInfo 源四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnHexaTetraPWC
— Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnHexasPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnHexasRBF
— Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体
sourceMoM_Kernels.EFIEOnNearHexaTetraPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearHexaTetraPWC
— Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearHexasPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearHexasRBF
— Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合但相隔较近的情况,输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, TetrahedraInfo, 源四面体、四面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体
sourceMoM_Kernels.EFIEOnNearRWGRBF
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnNearRWGRBF
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnNearRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnNearRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnNearTetrasPWC
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况,因此输入有两个四面体信息类型实例 输入: tetrat tetras : TetrahedraInfo, 场四面体和四面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearTetrasSWG
— Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合但相隔较近的情况,输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
sourceMoM_Kernels.EFIEOnNearTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, 源四面体
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体
sourceMoM_Kernels.EFIEOnRWGRBF
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnRWGRBF
— Method计算三角形和六面体上相关的 18 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 hexas :: HexahedraInfo, 源六面体
sourceMoM_Kernels.EFIEOnRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnTetraPWC
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体重合的情况,因此输入有一个四面体信息类型实例 输入: tetrat TetrahedraInfo, 场四面体和四面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
sourceMoM_Kernels.EFIEOnTetraPWCSepPV
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体重合的情况,因此输入有一个四面体信息类型实例 输入: tetrat TetrahedraInfo, 场四面体和四面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,函数将主值积分分开返回以便它用
sourceMoM_Kernels.EFIEOnTetraSWG
— Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
sourceMoM_Kernels.EFIEOnTetrasPWC
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入: tetrat tetras : TetrahedraInfo, 场四面体和四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnTetrasSWG
— Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
sourceMoM_Kernels.EFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.EFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
sourceMoM_Kernels.MFIEOnNearTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.MFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.MFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
sourceMoM_Kernels.RCSPlot
— MethodRCS 绘图
sourceMoM_Kernels.ZnearChunkMulIVec!
— MethodZnearChunkMulIVec!(ZnearChunk, resultChunk, IVec)
计算某一块的矩阵向量乘积
sourceMoM_Kernels.adjoint_agg2HighLevel!
— Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.adjoint_agg2Level2!
— Method从叶层聚合到第 '2' 层
sourceMoM_Kernels.adjoint_aggOnBF!
— Method在叶层从基函数向盒子聚合
sourceMoM_Kernels.adjoint_disagg2KidLevel!
— Method向低层解聚 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.adjoint_disagg2LeafLevel!
— Method解聚到叶层
sourceMoM_Kernels.adjoint_disaggOnBF!
— Method在叶层往测试基函数解聚
sourceMoM_Kernels.adjoint_transOnLevel!
— Method层内转移
sourceMoM_Kernels.adjoint_transOnLevels!
— Method各层内转移
sourceMoM_Kernels.agg2HighLevel!
— Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.agg2HighLevel!
— Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.agg2Level2!
— Method从叶层聚合到第 '2' 层
sourceMoM_Kernels.aggOnBF!
— Method在叶层从基函数向盒子聚合
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}},
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:PWC}
计算某层采用 EFIE 时在六面体上的 PWC 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}},
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:PWC}
计算某层采用 EFIE 时在四面体上的 PWC 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}},
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:SWG}
计算某层采用 EFIE 时 SWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, hexasInfo::AbstractVector{VT},
-::Type{BFT}; setzero = true) where {VT<:HexahedraInfo, BFT<:RBF}
计算某层采用 EFIE 时在六面体上的 RBF 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel
— MethodaggSBFOnLevel(level::LT, geosInfo::AbstractVector{VT},
-bfsInfo::AbstractVector{BFT}) where {LT<:LevelInfo, VT<:VolumeCellType, BFT<:BasisFunctionType}
计算某层采用 EFIE 时 SWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelCFIE!
— MethodaggSBFOnLevelCFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}
计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelCFIE
— MethodaggSBFOnLevelCFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
-bfsInfo) where {IT<:Integer, FT<:Real}
计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
, 输入为层信息 level
、三角形信息 trianglesInfo
和基函数信息 bfsInfo
。
sourceMoM_Kernels.aggSBFOnLevelEFIE!
— MethodaggSBFOnLevelEFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}
计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelEFIE
— MethodaggSBFOnLevelEFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
-bfsInfo) where {IT<:Integer, FT<:Real}
计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
, 输入为层信息 level
、三角形信息 trianglesInfo
和基函数信息 bfsInfo
。
sourceMoM_Kernels.aggSBFOnLevelMFIE!
— MethodaggSBFOnLevelMFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}
计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelMFIE
— MethodaggSBFOnLevelMFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
-bfsInfo::Vector{RWG{IT, FT}}) where {IT<:Integer, FT<:Real}
计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.anterpolate!
— Method拉格朗日单步反插值
sourceMoM_Kernels.anterpolate!
— Method拉格朗日分步反插值
sourceMoM_Kernels.anterpolate
— Method拉格朗日单步反插值
sourceMoM_Kernels.anterpolate
— Method拉格朗日分步反插值
sourceMoM_Kernels.calZfarI!
— Method计算远区矩阵向量乘积
sourceMoM_Kernels.calZnearCSC!
— MethodcalZnearCSC!(level, geosInfo::AbstractVector{VSCellT},
+重载以实现矩阵向量乘积计算
TBW
sourceMoM_Kernels.CFIEOnNearTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.CFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.CFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
sourceMoM_Kernels.EFIEOnHexaPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入: hexat HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
sourceMoM_Kernels.EFIEOnHexaPWCSepPV
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入: hexat HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
sourceMoM_Kernels.EFIEOnHexaRBF
— Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入 hexat : HexahedraInfo, 场六面体和源六面体
sourceMoM_Kernels.EFIEOnHexaTetraPWC
— Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat::HexahedraInfo, 场六面体 tetras::TetrahedraInfo 源四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnHexaTetraPWC
— Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnHexasPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnHexasRBF
— Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体
sourceMoM_Kernels.EFIEOnNearHexaTetraPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearHexaTetraPWC
— Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV
注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearHexasPWC
— Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearHexasRBF
— Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合但相隔较近的情况,输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, TetrahedraInfo, 源四面体、四面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnNearRWGPWC
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体
sourceMoM_Kernels.EFIEOnNearRWGRBF
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnNearRWGRBF
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnNearRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnNearRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnNearTetrasPWC
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况,因此输入有两个四面体信息类型实例 输入: tetrat tetras : TetrahedraInfo, 场四面体和四面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnNearTetrasSWG
— Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合但相隔较近的情况,输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
sourceMoM_Kernels.EFIEOnNearTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, 源四面体
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnRWGPWC
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体
sourceMoM_Kernels.EFIEOnRWGRBF
— Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
sourceMoM_Kernels.EFIEOnRWGRBF
— Method计算三角形和六面体上相关的 18 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 hexas :: HexahedraInfo, 源六面体
sourceMoM_Kernels.EFIEOnRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnRWGSWG
— Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
sourceMoM_Kernels.EFIEOnTetraPWC
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体重合的情况,因此输入有一个四面体信息类型实例 输入: tetrat TetrahedraInfo, 场四面体和四面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
sourceMoM_Kernels.EFIEOnTetraPWCSepPV
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体重合的情况,因此输入有一个四面体信息类型实例 输入: tetrat TetrahedraInfo, 场四面体和四面体 计算: jkη₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 其中, ∫ₜ∫ₛ∇∇G(R)dV′dV = ∫ₜ∑ᵢn̂ᵢ(∫ᵢR̂(jk + 1/R)G(R)dS′)dV 计算得到结果为并矢:: jη₀/k ∫∫ (k²I + ∇∇)G(R) dV'dV Kᵣⁿ = ∫ Rⁿ dV' K̂ᵣⁿ = ∫ R̂Rⁿ dV' 注意为与两两作用不同,函数将主值积分分开返回以便它用
sourceMoM_Kernels.EFIEOnTetraSWG
— Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
sourceMoM_Kernels.EFIEOnTetrasPWC
— Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入: tetrat tetras : TetrahedraInfo, 场四面体和四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
sourceMoM_Kernels.EFIEOnTetrasSWG
— Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
sourceMoM_Kernels.EFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.EFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
sourceMoM_Kernels.MFIEOnNearTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.MFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
sourceMoM_Kernels.MFIEOnTris
— Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
sourceMoM_Kernels.RCSPlot
— MethodRCS 绘图
sourceMoM_Kernels.ZnearChunkMulIVec!
— MethodZnearChunkMulIVec!(ZnearChunk, resultChunk, IVec)
计算某一块的矩阵向量乘积
sourceMoM_Kernels.adjoint_agg2HighLevel!
— Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.adjoint_agg2Level2!
— Method从叶层聚合到第 '2' 层
sourceMoM_Kernels.adjoint_aggOnBF!
— Method在叶层从基函数向盒子聚合
sourceMoM_Kernels.adjoint_disagg2KidLevel!
— Method向低层解聚 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.adjoint_disagg2LeafLevel!
— Method解聚到叶层
sourceMoM_Kernels.adjoint_disaggOnBF!
— Method在叶层往测试基函数解聚
sourceMoM_Kernels.adjoint_transOnLevel!
— Method层内转移
sourceMoM_Kernels.adjoint_transOnLevels!
— Method各层内转移
sourceMoM_Kernels.agg2HighLevel!
— Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.agg2HighLevel!
— Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.agg2Level2!
— Method从叶层聚合到第 '2' 层
sourceMoM_Kernels.aggOnBF!
— Method在叶层从基函数向盒子聚合
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}},
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:PWC}
计算某层采用 EFIE 时在六面体上的 PWC 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}},
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:PWC}
计算某层采用 EFIE 时在四面体上的 PWC 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}},
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:SWG}
计算某层采用 EFIE 时 SWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel!
— MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, hexasInfo::AbstractVector{VT},
+::Type{BFT}; setzero = true) where {VT<:HexahedraInfo, BFT<:RBF}
计算某层采用 EFIE 时在六面体上的 RBF 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevel
— MethodaggSBFOnLevel(level::LT, geosInfo::AbstractVector{VT},
+bfsInfo::AbstractVector{BFT}) where {LT<:LevelInfo, VT<:VolumeCellType, BFT<:BasisFunctionType}
计算某层采用 EFIE 时 SWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelCFIE!
— MethodaggSBFOnLevelCFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}
计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelCFIE
— MethodaggSBFOnLevelCFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
+bfsInfo) where {IT<:Integer, FT<:Real}
计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
, 输入为层信息 level
、三角形信息 trianglesInfo
和基函数信息 bfsInfo
。
sourceMoM_Kernels.aggSBFOnLevelEFIE!
— MethodaggSBFOnLevelEFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}
计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelEFIE
— MethodaggSBFOnLevelEFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
+bfsInfo) where {IT<:Integer, FT<:Real}
计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
, 输入为层信息 level
、三角形信息 trianglesInfo
和基函数信息 bfsInfo
。
sourceMoM_Kernels.aggSBFOnLevelMFIE!
— MethodaggSBFOnLevelMFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}
计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.aggSBFOnLevelMFIE
— MethodaggSBFOnLevelMFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
+bfsInfo::Vector{RWG{IT, FT}}) where {IT<:Integer, FT<:Real}
计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF
、配置函数 disaggSBF
。
sourceMoM_Kernels.anterpolate!
— Method拉格朗日单步反插值
sourceMoM_Kernels.anterpolate!
— Method拉格朗日分步反插值
sourceMoM_Kernels.anterpolate
— Method拉格朗日单步反插值
sourceMoM_Kernels.anterpolate
— Method拉格朗日分步反插值
sourceMoM_Kernels.calZfarI!
— Method计算远区矩阵向量乘积
sourceMoM_Kernels.calZnearCSC!
— MethodcalZnearCSC!(level, geosInfo::AbstractVector{VSCellT},
Znear, bfT::Type{BFT} = VSBFTypes.sbfType) where {BFT<:BasisFunctionType, VSCellT<:SurfaceCellType}
calZnearCSC!(level, geosInfo::AbstractVector{VSCellT},
Znear, bfT::Type{BFT} = VSBFTypes.vbfType) where {BFT<:BasisFunctionType, VSCellT<:VolumeCellType}
calZnearCSC!(level, geosInfo::AbstractVector{VT},
- Znear) where {VT<:AbstractVector}
根据八叉树层信息 level
和几何信息 geosInfo
、基函数信息 bfsInfo
计算近场阻抗矩阵。
sourceMoM_Kernels.calZnearCSC
— MethodcalZnearCSC(level, geosInfo::Vector, bfsInfo::Vector)
根据八叉树层信息 level
和几何信息 geosInfo
、基函数信息 bfsInfo
计算近场阻抗矩阵。
sourceMoM_Kernels.calZnearCSCCFIE!
— MethodcalZnearCSCCFIE!(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
- Znear::ZnearT{CT}, ::Type{BFT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:RWG}
采用 RWG 基函数计算 CFIE 面积分(SIE)阻抗矩阵近场元并将结果放在 ZnearCSC 稀疏矩阵中。
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 PWC 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 PWC 基函数计算四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 SWG 基函数计算网格元 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG + RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG + SWG 基函数计算 三角形 + 四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG 基函数计算 EFIE 面积分(SIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 PWC + PWC 基函数计算 四面体 + 六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG + PWC 基函数计算 三角形 + 四面体/六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIEnew!
— Method采用 RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCMFIE!
— Method采用 RWG 基函数计算 MFIE 面积分(SIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.caladjZfarI!
— Method计算远区矩阵的伴随矩阵向量乘积
sourceMoM_Kernels.calαTransOnLevel!
— Method计算 level 层的转移因子, 转移因子只存在于远亲组,每层远亲组最多有 7^3 - 3^3 = 316种结果
sourceMoM_Kernels.coeffgreen
— Methodcoeffgreen(n::Integer)
归一化格林函数 (不包括$\frac{1}{4π}$项) 的展开系数函数,从 0 阶 到 n 阶:
\[\begin{aligned}
+ Znear) where {VT<:AbstractVector}
根据八叉树层信息 level
和几何信息 geosInfo
、基函数信息 bfsInfo
计算近场阻抗矩阵。
sourceMoM_Kernels.calZnearCSC
— MethodcalZnearCSC(level, geosInfo::Vector, bfsInfo::Vector)
根据八叉树层信息 level
和几何信息 geosInfo
、基函数信息 bfsInfo
计算近场阻抗矩阵。
sourceMoM_Kernels.calZnearCSCCFIE!
— MethodcalZnearCSCCFIE!(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
+ Znear::ZnearT{CT}, ::Type{BFT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}, BFT<:RWG}
采用 RWG 基函数计算 CFIE 面积分(SIE)阻抗矩阵近场元并将结果放在 ZnearCSC 稀疏矩阵中。
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 PWC 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 PWC 基函数计算四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 SWG 基函数计算网格元 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG + RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG + SWG 基函数计算 三角形 + 四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG 基函数计算 EFIE 面积分(SIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 PWC + PWC 基函数计算 四面体 + 六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIE!
— Method采用 RWG + PWC 基函数计算 三角形 + 四面体/六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCEFIEnew!
— Method采用 RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.calZnearCSCMFIE!
— Method采用 RWG 基函数计算 MFIE 面积分(SIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
sourceMoM_Kernels.caladjZfarI!
— Method计算远区矩阵的伴随矩阵向量乘积
sourceMoM_Kernels.calαTransOnLevel!
— Method计算 level 层的转移因子, 转移因子只存在于远亲组,每层远亲组最多有 7^3 - 3^3 = 316种结果
sourceMoM_Kernels.coeffgreen
— Methodcoeffgreen(n::Integer)
归一化格林函数 (不包括$\frac{1}{4π}$项) 的展开系数函数,从 0 阶 到 n 阶:
\[\begin{aligned}
g(R) &= \frac{e^{-jkR}}{R} = \sum_{n=0}^{SglrOrder}coeffgreen(n)R^{n-1}\\
coeffgreen(n) &= \frac{{-jk}^{n}}{n!}\\
-\end{aligned}\]
sourceMoM_Kernels.convergencePlot
— Method计算完成后绘制收敛曲线
sourceMoM_Kernels.cooraInCoorb
— Method计算一维坐标coora在坐标corrb中的位置
sourceMoM_Kernels.disagg2KidLevel!
— Method向低层解聚 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.disagg2KidLevel!
— Method向低层解聚 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.disagg2LeafLevel!
— Method解聚到叶层
sourceMoM_Kernels.disaggOnBF!
— Method在叶层往测试基函数解聚
sourceMoM_Kernels.electricJCal
— Method计算给定三角形面片位置 r 处的电流 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: r ::Vec3D{FT} ICoeff ::Vec3D{CT} 三角形上的三个基函数的计算得到的电流系数 triangleInfo ::TriangleInfo{IT, FT},三角形信息 输出值: Jtrir ::Complex{FT}, 三角形上加权后的电流
sourceMoM_Kernels.electricJCal
— Method计算所有三角形上的高斯求积点电流权重乘积 JₙᵢWᵢ 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 JₙᵢWᵢ = ∑ₜₙ₌₁³ Iₜₙlₜₙ/2Sₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流
sourceMoM_Kernels.excitationVectorCFIE!
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorCFIE
— Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
sourceMoM_Kernels.excitationVectorCFIE
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定六面体的六个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定四面体的四个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorMFIE!
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorMFIE
— Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
sourceMoM_Kernels.excitationVectorMFIE
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.faceSingularityIg
— MethodfaceSingularityIg(rgt::AbstractVector{FT}, tris::TriangleInfo{IT, FT}, area::FT, facen̂::AbstractVector{FT}) where {IT<:Integer, FT<:Real}
计算场点rgt
在源三角形tris
上的奇异性,tris
的面积为area
,外法向量为facen̂
。 计算结果为:
\[\begin{aligned}
+\end{aligned}\]
sourceMoM_Kernels.convergencePlot
— Method计算完成后绘制收敛曲线
sourceMoM_Kernels.cooraInCoorb
— Method计算一维坐标coora在坐标corrb中的位置
sourceMoM_Kernels.disagg2KidLevel!
— Method向低层解聚 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.disagg2KidLevel!
— Method向低层解聚 tLevel :: 本层 kLevel :: 子层
sourceMoM_Kernels.disagg2LeafLevel!
— Method解聚到叶层
sourceMoM_Kernels.disaggOnBF!
— Method在叶层往测试基函数解聚
sourceMoM_Kernels.electricJCal
— Method计算给定三角形面片位置 r 处的电流 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: r ::Vec3D{FT} ICoeff ::Vec3D{CT} 三角形上的三个基函数的计算得到的电流系数 triangleInfo ::TriangleInfo{IT, FT},三角形信息 输出值: Jtrir ::Complex{FT}, 三角形上加权后的电流
sourceMoM_Kernels.electricJCal
— Method计算所有三角形上的高斯求积点电流权重乘积 JₙᵢWᵢ 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 JₙᵢWᵢ = ∑ₜₙ₌₁³ Iₜₙlₜₙ/2Sₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流
sourceMoM_Kernels.excitationVectorCFIE!
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorCFIE
— Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
sourceMoM_Kernels.excitationVectorCFIE
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorEFIE!
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定六面体的六个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定四面体的四个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorEFIE
— Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
sourceMoM_Kernels.excitationVectorMFIE!
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.excitationVectorMFIE
— Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
sourceMoM_Kernels.excitationVectorMFIE
— Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
sourceMoM_Kernels.faceSingularityIg
— MethodfaceSingularityIg(rgt::AbstractVector{FT}, tris::TriangleInfo{IT, FT}, area::FT, facen̂::AbstractVector{FT}) where {IT<:Integer, FT<:Real}
计算场点rgt
在源三角形tris
上的奇异性,tris
的面积为area
,外法向量为facen̂
。 计算结果为:
\[\begin{aligned}
I_{gS} &= \int{g(R)dS'}\\
&= \sum_{n=0}^{SglrOrder}{coeffgreen(n)I^{n-1}_{RS}}\\
I^{n}_{RS} &= \int{R^{n}dS'}
-\end{aligned}\]
sourceMoM_Kernels.faceSingularityIg
— MethodfaceSingularityIg(rgt::AbstractVector{FT}, tris::Tris4Tetra{IT, FT}, area::FT, facen̂::AbstractVector{FT}) where {IT<:Integer, FT<:Real}
计算场点rgt
在源三角形tris
(该三角形为组成四面体的某一面)上的奇异性,tris
的面积为area
,外法向量为facen̂
。 计算结果为:
\[\begin{aligned}
+\end{aligned}\]
sourceMoM_Kernels.faceSingularityIg
— MethodfaceSingularityIg(rgt::AbstractVector{FT}, tris::Tris4Tetra{IT, FT}, area::FT, facen̂::AbstractVector{FT}) where {IT<:Integer, FT<:Real}
计算场点rgt
在源三角形tris
(该三角形为组成四面体的某一面)上的奇异性,tris
的面积为area
,外法向量为facen̂
。 计算结果为:
\[\begin{aligned}
I_{gS} &= \int{g(R)dS'}\\
&= \sum_{n=0}^{SglrOrder}{coeffgreen(n)I^{n-1}_{RS}}\\
I^{n}_{RS} &= \int{R^{n}dS'}
-\end{aligned}\]
sourceMoM_Kernels.faceSingularityIg
— MethodfaceSingularityIg(rgt::AbstractVector{FT}, polys::ST, area::FT,
+\end{aligned}\]
sourceMoM_Kernels.faceSingularityIg
— MethodfaceSingularityIg(rgt::AbstractVector{FT}, polys::ST, area::FT,
facen̂::AbstractVector{FT}) where {IT<:Integer, FT<:Real, ST<:SurfaceCellType{IT, FT}}
计算场点rgt
在多边形polys
上的奇异性,polys
的面积为area
,外法向量为facen̂
。 计算结果为:
\[\begin{aligned}
I_{gS} &= \int{g(R)dS'}\\
&= \sum_{n=0}^{SglrOrder}{coeffgreen(n)I^{n-1}_{RS}}\\
I^{n}_{RS} &= \int{R^{n}dS'}
-\end{aligned}\]
sourceMoM_Kernels.faceSingularityIgIvecg
— MethodfaceSingularityIgIvecg(rgt::AbstractVector{FT}, polys::ST, area,
+\end{aligned}\]
sourceMoM_Kernels.faceSingularityIgIvecg
— MethodfaceSingularityIgIvecg(rgt::AbstractVector{FT}, polys::ST, area,
facen̂::AbstractVector) where {FT<:Real, ST<:SurfaceCellType{IT, FT}}
计算场点rgt
在多边形polys
上的奇异性,polys
的面积为area
,外法向量为facen̂
。 计算结果为:
\[\begin{aligned}
I_{gS} &= \int{g(R)dS'}\\
&= \sum_{n=0}^{SglrOrder}{coeffgreen(n)I^{n-1}_{RS}}\\
\boldsymbol{I}_{gS} &= \int{\boldsymbol{R}g(R)dS'}\\
&= \sum_{l_j}{\hat{\bm{u}}_j \sum_{n=0}^{SglrOrder}{\frac{coeffgreen(n)}{n+1}I^{n-1}_{lr}}} + d\bm{n}I^{n-1}_{gS}\\
-\end{aligned}\]
sourceMoM_Kernels.faceSingularityIgIvecgI∇gS
— Method面上的近奇异性 rgt, 为场三角形的求积点 tris::TriangleInfo{IT, FT}, 源三角形信息 计算得到结果:: IgS = ∫ g(R) dS' = ∑ₙ₌₀(coeffgreen(n)IR[n-1]) IvecgS = ∫ Rvec g(R) dS' = ∑ₗⱼ ûⱼ ∑ₙ₌₀(coeffgreen(n)/(n+1)Ilᵣ[n-1]) + dn̂IgS I∇gS = ∫ ∇g(R) dS' = ∑ₙ₌₀VSC₃ⁿ*(-1/(n+2)∑ₗⱼûⱼIlᵣ[n+2] + dn̂IgS )
sourceMoM_Kernels.faceSingularityIᵣIᵨ
— Method面上的近奇异性 rgts::MMatrix{GQPNTriSglr, 3, Complex{FT}}, 为场三角形的所有高斯求积点 tris::TriangleInfo{IT, FT}, 源三角形信息 计算得到结果:: r0tProj2s::MMatrix{3, GQPNTriSglr, Complex{FT}, 3GQPNTriSglr}, 积分点在源三角形上的投影点 Iᵣ = ∫ 1/R dS' = ∑₁³(p02ilfᵢ - dtsAbsβᵢ) Iᵨ = ∫ ρ/R dS' = 0.5∑₁³{ûᵢ[(R0^2fᵢ + li⁺R⁺ - li⁻*R⁻)]}
sourceMoM_Kernels.farEPlot
— MethodfarE 绘图
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.func4Cube1stkInterval
— Methodfunc4Cube1stkInterval(cube::CubeInfo)
+\end{aligned}\]
sourceMoM_Kernels.faceSingularityIgIvecgI∇gS
— Method面上的近奇异性 rgt, 为场三角形的求积点 tris::TriangleInfo{IT, FT}, 源三角形信息 计算得到结果:: IgS = ∫ g(R) dS' = ∑ₙ₌₀(coeffgreen(n)IR[n-1]) IvecgS = ∫ Rvec g(R) dS' = ∑ₗⱼ ûⱼ ∑ₙ₌₀(coeffgreen(n)/(n+1)Ilᵣ[n-1]) + dn̂IgS I∇gS = ∫ ∇g(R) dS' = ∑ₙ₌₀VSC₃ⁿ*(-1/(n+2)∑ₗⱼûⱼIlᵣ[n+2] + dn̂IgS )
sourceMoM_Kernels.faceSingularityIᵣIᵨ
— Method面上的近奇异性 rgts::MMatrix{GQPNTriSglr, 3, Complex{FT}}, 为场三角形的所有高斯求积点 tris::TriangleInfo{IT, FT}, 源三角形信息 计算得到结果:: r0tProj2s::MMatrix{3, GQPNTriSglr, Complex{FT}, 3GQPNTriSglr}, 积分点在源三角形上的投影点 Iᵣ = ∫ 1/R dS' = ∑₁³(p02ilfᵢ - dtsAbsβᵢ) Iᵨ = ∫ ρ/R dS' = 0.5∑₁³{ûᵢ[(R0^2fᵢ + li⁺R⁺ - li⁻*R⁻)]}
sourceMoM_Kernels.farEPlot
— MethodfarE 绘图
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.farField
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.func4Cube1stkInterval
— Methodfunc4Cube1stkInterval(cube::CubeInfo)
func4Cube1stkInterval(i::T) where T
func4Cube1stkInterval(interval::T) where T <: UnitRange
func4CubelastkInterval(cube::CubeInfo)
func4CubelastkInterval(i::T) where T
-func4CubelastkInterval(interval::T) where T
这六个函数用于寻找盒子的子盒子区间内的比较函数,多重分派以实现不同数据类型的比较。
sourceMoM_Kernels.geoElectricJCal
— Method计算六面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算六面体上的电流。 分片常数基 RBF 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 6 或 3 个基函数,因此 Jₜ = ∑ₜₙ₌₁ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上加权后的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算四面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算四面体上的电流。 分片常数基 SWG 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在四个基函数,因此 Jₜ = ∑ₜₙ₌₁⁴ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上加权后的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算三角形面片上的加权电流。 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流
sourceMoM_Kernels.getAggSBFOnLevel
— Method根据积分方程类型计算基层聚合项
sourceMoM_Kernels.getAggSBFOnLevel
— Method根据积分方程类型计算基层聚合项
sourceMoM_Kernels.getAggSBFOnLevel
— Method根据积分方程类型计算基层聚合项
sourceMoM_Kernels.getBfsCenter
— Method计算基函数中心的数组,用于方便混合基函数使用时的情况
sourceMoM_Kernels.getBfsCenter
— Method计算基函数中心的数组,用于方便混合基函数使用时的情况
sourceMoM_Kernels.getCubeIDsWithGeos
— Method找到 geosInfo 所在的所有 cude id
sourceMoM_Kernels.getExcitationVector
— Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
sourceMoM_Kernels.getExcitationVector
— Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
sourceMoM_Kernels.getExcitationVector
— Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
sourceMoM_Kernels.getGeoIDsInCubeChunk
— MethodgetGeoIDsInCubeChunk(cubes, chunkIndice::Tuple)
-getGeoIDsInCubeChunk(cubes, ckunkIndice::UnitRange)
获取 ckunkIndice
内的所有 cubes
的编号, 返回为 Tuple 形式以适应数组索引相关API
sourceMoM_Kernels.getGeosInterval
— MethodgetGeosInterval(geosInfo::T) where {T<:AbstractVector}
-getGeosInterval(geosInfo::T) where {T<:OffsetVector}
获取几何信息数组的区间,针对普通 Vector
和 OffsetVector
分别派发。
sourceMoM_Kernels.getImpedanceMatAndExciteV
— Method根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量
sourceMoM_Kernels.getImpedanceMatAndExciteV
— Method根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 bfsInfo:: 基函数信息 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量
sourceMoM_Kernels.getImpedanceMatrix
— Method根据几何信息与基函数数量,计算阻抗矩阵 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 返回: Zmat
sourceMoM_Kernels.getImpedanceOpt
— Method根据几何信息与基函数数量,计算阻抗矩阵算子 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元
sourceMoM_Kernels.getImpedanceOptAndExciteVOctree
— Method根据几何信息与基函数数量,计算阻抗矩阵算子和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元
sourceMoM_Kernels.getLeafCubeL
— Method六面体从网格平均尺寸设置整体的叶层盒子边长
sourceMoM_Kernels.getLeafCubeL
— Method四面体从网格平均尺寸设置整体的叶层盒子边长
sourceMoM_Kernels.getLeafCubeL
— Method三角形面网格直接设置为的叶层盒子边长
sourceMoM_Kernels.getLeafCubeL
— Method混合网格从第2类里的网格平均尺寸设置整体的叶层盒子边长
sourceMoM_Kernels.getMeshDataSaveGeosInterval
— MethodgetMeshDataSaveGeosInterval(filename[; meshUnit=:mm, dir = "temp/GeosInfo"])
在获取网格数据 meshData
和介电参数 εᵣs
的同时保存网格数据 meshData
中各类型网格的区间。
sourceMoM_Kernels.getNeiFarNeighborCubeIDs
— MethodgetNeiFarNeighborCubeIDs(cubes, chunkIndice::Tuple)
获取 ckunkIndice
内的所有 cubes
的 远亲盒子 序号, 返回为 Tuple
形式以适应数组索引相关 API。
sourceMoM_Kernels.getNeighborCubeIDs
— MethodgetNeighborCubeIDs(cubes, chunkIndice::Tuple)
-getNeighborCubeIDs(cubes, chunkIndice::AbstractVector)
获取 ckunkIndice
内的所有 cubes
的 邻盒子
编号, 返回为 Tuple
形式以适应数组索引相关API
sourceMoM_Kernels.getOctreeAndReOrderBFs!
— Method根据基函数中心位置构建八叉树,并重排基函数信息、将新基函数 ID 赋值给几何元信息数组 返回值: nLevels:: 层数 octree:: 得到的八叉树 leafCubeEdgel:: 控制叶层盒子大小 isDistribute:: 控制是否为分布式计算
sourceMoM_Kernels.get_Interpolation_Method
— Methodget_Interpolation_Method(method::Symbol)
-get_Interpolation_Method(method::Union{Val{:Lagrange2Step}, Val{:Lagrange1Step}})
获取插值算法。
sourceMoM_Kernels.get_chunks_minmax_col
— Methodget_chunks_minmax_col(matchunks)
sourceMoM_Kernels.get_leafCubeSize
— Method获取叶层盒子边长
sourceMoM_Kernels.get_partition
— Methodget_partition(nCubes, sizePoles, np)
根据给定的盒子数 nCubes
、多极子数 sizePoles
、进程数 np
返回该层辐射函数的三个维度的划分数量。
sourceMoM_Kernels.get_partition_map
— Methodget_partition_map(partition, kcubeIndices)
根据 partition
计算在盒子方向本层所有 rank 到子层所有 rank 的 map 。
sourceMoM_Kernels.gq_xsws_on_sphere
— Methodgq_xsws_on_sphere(L)
+func4CubelastkInterval(interval::T) where T
这六个函数用于寻找盒子的子盒子区间内的比较函数,多重分派以实现不同数据类型的比较。
sourceMoM_Kernels.geoElectricJCal
— Method计算六面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算六面体上的电流。 分片常数基 RBF 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 6 或 3 个基函数,因此 Jₜ = ∑ₜₙ₌₁ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上加权后的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算四面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算四面体上的电流。 分片常数基 SWG 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在四个基函数,因此 Jₜ = ∑ₜₙ₌₁⁴ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上加权后的电流
sourceMoM_Kernels.geoElectricJCal
— Method计算三角形面片上的加权电流。 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流
sourceMoM_Kernels.getAggSBFOnLevel
— Method根据积分方程类型计算基层聚合项
sourceMoM_Kernels.getAggSBFOnLevel
— Method根据积分方程类型计算基层聚合项
sourceMoM_Kernels.getAggSBFOnLevel
— Method根据积分方程类型计算基层聚合项
sourceMoM_Kernels.getBfsCenter
— Method计算基函数中心的数组,用于方便混合基函数使用时的情况
sourceMoM_Kernels.getBfsCenter
— Method计算基函数中心的数组,用于方便混合基函数使用时的情况
sourceMoM_Kernels.getCubeIDsWithGeos
— Method找到 geosInfo 所在的所有 cude id
sourceMoM_Kernels.getExcitationVector
— Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
sourceMoM_Kernels.getExcitationVector
— Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
sourceMoM_Kernels.getExcitationVector
— Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
sourceMoM_Kernels.getGeoIDsInCubeChunk
— MethodgetGeoIDsInCubeChunk(cubes, chunkIndice::Tuple)
+getGeoIDsInCubeChunk(cubes, ckunkIndice::UnitRange)
获取 ckunkIndice
内的所有 cubes
的编号, 返回为 Tuple 形式以适应数组索引相关API
sourceMoM_Kernels.getGeosInterval
— MethodgetGeosInterval(geosInfo::T) where {T<:AbstractVector}
+getGeosInterval(geosInfo::T) where {T<:OffsetVector}
获取几何信息数组的区间,针对普通 Vector
和 OffsetVector
分别派发。
sourceMoM_Kernels.getImpedanceMatAndExciteV
— Method根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量
sourceMoM_Kernels.getImpedanceMatAndExciteV
— Method根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 bfsInfo:: 基函数信息 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量
sourceMoM_Kernels.getImpedanceMatrix
— Method根据几何信息与基函数数量,计算阻抗矩阵 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 返回: Zmat
sourceMoM_Kernels.getImpedanceOpt
— Method根据几何信息与基函数数量,计算阻抗矩阵算子 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元
sourceMoM_Kernels.getImpedanceOptAndExciteVOctree
— Method根据几何信息与基函数数量,计算阻抗矩阵算子和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元
sourceMoM_Kernels.getLeafCubeL
— Method六面体从网格平均尺寸设置整体的叶层盒子边长
sourceMoM_Kernels.getLeafCubeL
— Method四面体从网格平均尺寸设置整体的叶层盒子边长
sourceMoM_Kernels.getLeafCubeL
— Method三角形面网格直接设置为的叶层盒子边长
sourceMoM_Kernels.getLeafCubeL
— Method混合网格从第2类里的网格平均尺寸设置整体的叶层盒子边长
sourceMoM_Kernels.getMeshDataSaveGeosInterval
— MethodgetMeshDataSaveGeosInterval(filename[; meshUnit=:mm, dir = "temp/GeosInfo"])
在获取网格数据 meshData
和介电参数 εᵣs
的同时保存网格数据 meshData
中各类型网格的区间。
sourceMoM_Kernels.getNeiFarNeighborCubeIDs
— MethodgetNeiFarNeighborCubeIDs(cubes, chunkIndice::Tuple)
获取 ckunkIndice
内的所有 cubes
的 远亲盒子 序号, 返回为 Tuple
形式以适应数组索引相关 API。
sourceMoM_Kernels.getNeighborCubeIDs
— MethodgetNeighborCubeIDs(cubes, chunkIndice::Tuple)
+getNeighborCubeIDs(cubes, chunkIndice::AbstractVector)
获取 ckunkIndice
内的所有 cubes
的 邻盒子
编号, 返回为 Tuple
形式以适应数组索引相关API
sourceMoM_Kernels.getOctreeAndReOrderBFs!
— Method根据基函数中心位置构建八叉树,并重排基函数信息、将新基函数 ID 赋值给几何元信息数组 返回值: nLevels:: 层数 octree:: 得到的八叉树 leafCubeEdgel:: 控制叶层盒子大小 isDistribute:: 控制是否为分布式计算
sourceMoM_Kernels.get_Interpolation_Method
— Methodget_Interpolation_Method(method::Symbol)
+get_Interpolation_Method(method::Union{Val{:Lagrange2Step}, Val{:Lagrange1Step}})
获取插值算法。
sourceMoM_Kernels.get_chunks_minmax_col
— Methodget_chunks_minmax_col(matchunks)
sourceMoM_Kernels.get_leafCubeSize
— Method获取叶层盒子边长
sourceMoM_Kernels.get_partition
— Methodget_partition(nCubes, sizePoles, np)
根据给定的盒子数 nCubes
、多极子数 sizePoles
、进程数 np
返回该层辐射函数的三个维度的划分数量。
sourceMoM_Kernels.get_partition_map
— Methodget_partition_map(partition, kcubeIndices)
根据 partition
计算在盒子方向本层所有 rank 到子层所有 rank 的 map 。
sourceMoM_Kernels.gq_xsws_on_sphere
— Methodgq_xsws_on_sphere(L)
-计算单位球面 2(L+1) 阶高斯求积的采样点坐标权重
TBW
sourceMoM_Kernels.greenfunc_star
— Methodgreenfunc_star(pa::Vec3D{T}, pb::Vec3D{T}[; k=Params.K_0, taylorOrder = SglrOrder]) where {T<:AbstractFloat}
归一化格林函数 $4πG(R)$ 泰勒展开后去奇异项:
\[g^{*}(R) = \frac{e^{-jkR}}{R} - \frac{1}{R}
- = \sum_{n=1}^{SglrOrder}\frac{{-jk}^{n}}{n!}R^{n-1}.\]
sourceMoM_Kernels.iluPrecondition
— MethodiluPrecondition(A, level; τ = 1e-3)
从 (IncompleteLU.jl)[https://github.com/haampie/IncompleteLU.jl.git] 包实现ilu, 再次封装是因为要加入一些判断
sourceMoM_Kernels.impedancemat4CFIE4PEC
— Method本函数用于计算PEC的CFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4EFIE4PEC!
— Method本函数用于在有矩阵的情况下计算PEC的EFIE阻抗矩阵。 输入信息: Zmat trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4EFIE4PEC
— Method本函数用于计算PEC的EFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4MFIE4PEC
— Method本函数用于计算PEC的MFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4RWGPWC!
— MethodRWG + PWC 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4RWGPWC!
— MethodRWG + PWC 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4RWGRBF!
— MethodRWG + RBF 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4RWGSWG!
— MethodRWG + SWG 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质的 EFIE 阻抗矩阵。 输入信息: Zmat : 已初始化的阻抗矩阵 tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算混合网格(四面体+六面体)下介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: geosInfo : 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VSIE
— Method计算VSIE的矩阵
sourceMoM_Kernels.impedancemat4VSIERWGPWC
— Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VSIERWGRBF
— Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VSIERWGSWG
— Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.initialVMulZchunks!
— MethodinitialVMulZchunks!(Z::T) where{T<:ZnearChunksStruct}
初始化 阻抗矩阵 右乘 向量 乘积的 分布式数组
sourceMoM_Kernels.initialZchunksMulV!
— MethodinitialZchunksMulV!(Z::T) where{T<:ZnearChunksStruct}
初始化 阻抗矩阵 左乘 向量 乘积的 分布式数组。
sourceMoM_Kernels.initialZnearCSC
— MethodinitialZnearCSC(level, nbf::Int)
根据八叉树层信息 level
初始化近场阻抗矩阵。
sourceMoM_Kernels.initialZnearCSR
— MethodinitialZnearCSR(level, nbf::Int)
根据八叉树层信息 level
初始化近场阻抗矩阵,用 transpose
实现 CSR 压缩稀疏行。
sourceMoM_Kernels.initialZnearChunks
— MethodinitialZnearChunks(cube, cubes::AbstractVector; CT = Complex{Precision.FT})
根据八叉树某个盒子 cube
信息初始化 cube
对应的近场矩阵元块。
sourceMoM_Kernels.inputParameters
— MethodinputParameters(;args...)
用于输入仿真参数,并修改奇异性处理中频率相关常量。 详见 [MoM_Basics.inputBasicParameters
] 和 modiSingularityRelatedConsts!
。
sourceMoM_Kernels.integral1DXW
— Method计算分别采用高斯求积、中点求积计算 θ,ϕ 方向的采样点的坐标、权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 Nsample::IT, 采样点数 mod::Symbol, 模式,接受 :uni, 均值积分 :glq, 高斯-勒让德积分 两种模式
sourceMoM_Kernels.interpolate!
— Method拉格朗日单步插值
sourceMoM_Kernels.interpolate!
— Method拉格朗日分步插值
sourceMoM_Kernels.interpolate
— Method拉格朗日单步插值
sourceMoM_Kernels.interpolate
— Method拉格朗日分步插值
sourceMoM_Kernels.interpolationCSCMatCal
— Method采用局部插值、两步插值法,计算局部坐标到全局坐标的稀疏插值矩阵,Julia数据存储为列主的,因此使用 压缩稀疏列(Compressed Sparse Column, CSC) pLevelPoles::GLPolesInfo{FT}, 父层多极子信息 tLevelPoles::GLPolesInfo{FT}, 本层多极子信息
sourceMoM_Kernels.iterSolverSet
— Method迭代求解器选择
sourceMoM_Kernels.levelIntegralInfoCal
— Method计算八叉树的积分相关信息,包括截断项、各层积分点和求积权重数据 输入: levelCubeEdgel::FT, 层盒子边长, 一般叶层为0.25λ,其中 λ 为区域局部波长。 返回值 L ::IT, 层 截断项 levelsPoles ::Vector{GLPolesInfo{FT}},从叶层到第 “2” 层的角谱空间采样信息
sourceMoM_Kernels.loadCurrent
— Method读取电流系数
sourceMoM_Kernels.loadGeoInterval
— Methodset_geosInterval!(fn)
载入文件 fn
读取网格数据区间。
sourceMoM_Kernels.memoryAllocationOnLevels!
— Method预分配各层上的聚合项、解聚项
sourceMoM_Kernels.modiSingularityRelatedConsts!
— Method用于输入参数(特指频率)改变时的更改相关常数项
sourceMoM_Kernels.octreeXWNCal
— Method计算各层八叉树求积坐标、求积权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 nlevels::IT, 八叉树叶层ID mod::Symbol, 模式,接受 :uni, 均值积分(ϕ方向) :glq, 高斯-勒让德积分(θ方向) 两种模式
sourceMoM_Kernels.pickCycleVec
— Method根据循环向量 cycleVec 的周期性索引超出上下界的 index 对应的值
sourceMoM_Kernels.pickθ
— Method利用 θ 在极点附近的对称性计算索引超出上下界的 θ 值
sourceMoM_Kernels.pickϕ
— Method利用 ϕ 的周期性索引超出上下界的 ϕ 值
sourceMoM_Kernels.radarCrossSection
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.radarCrossSection
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.radarCrossSection
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNCal
— Method在设定好的观测角度上的球坐标处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用 RBF 基函数时,六面体上没有统一的电流值 N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dV)
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用 SWG 基函数时,四面体上没有统一的电流值,每一点上都是四面电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dV) = ∑ₙ(∫ₛ (∑ₜₙ₌₁⁴ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dV) = ∑ₙ(Sₜ (∑ₜₙ₌₁⁴ IₙSₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁⁴ IₙSₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.reOrderBasisFunctionAndGeoInfo!
— Method根据按八叉树重新排序的id重排基函数信息
sourceMoM_Kernels.reOrderBasisFunctionAndGeoInfo!
— Method根据按八叉树重新排序的id重排基函数信息,此函数适用于 PWC 基函数的情况
sourceMoM_Kernels.reOrderBasisFunctionAndGeoInfo!
— Method根据按八叉树重新排序的id重排基函数信息
sourceMoM_Kernels.reOrderCubeID!
— Method根据排序后的新id重新排列子层盒子以及盒子的邻盒子信息,以将同一个父盒子层的盒子相邻排列,这样有利于计算 更新的量:父层盒子的kidsInterval, 本层的盒子顺序,本层盒子的邻盒子id
sourceMoM_Kernels.record_memorys
— Method展示
sourceMoM_Kernels.restore_infos
— Methodrestore_infos()
-记录各部分内存和各阶段计算时间。
TBW
sourceMoM_Kernels.saveCubes
— MethodsaveCubes(cubes[, nchunk = ParallelParams.nprocs; name, dir="", kcubeIndices = nothing])
将盒子 cubes
分为 nchunk
块以 name
为名保存在 dir
中。kcubeIndices
同于计算不同分区间重复的部分。
sourceMoM_Kernels.saveCurrent
— Method保存电流系数
sourceMoM_Kernels.saveGeoInterval
— MethodsaveGeoInterval(meshData[; dir = "temp/GeosInfo"])
保存网格数据 meshData
中各类型网格的区间。
sourceMoM_Kernels.saveGeosInfoChunks
— MethodsaveGeosInfoChunks(geos::AbstractVector, cubes, name::AbstractString, nchunk::Int[; dir = "", cubes_ChunksIndices = sizeChunks2idxs(length(cubes), nchunk)])
将几何信息 geos
根据分块数量 nchunk
和在 cubes
中的分布进行分块并保存。
sourceMoM_Kernels.saveLevel
— FunctionsaveLevel(level[, np = ParallelParams.nprocs; dir="", kcubeIndices = nothing])
将层 level
信息保存,其中的盒子信息由 get_partition
计算的分块信息部分保存。
sourceMoM_Kernels.saveOctree
— MethodsaveOctree(octree[; dir=""])
将八叉树 octree
保存在 dir
中。
sourceMoM_Kernels.saveVec2Chunks
— MethodsaveVec2Chunks(y::AbstractVector, name::AbstractString, indices[; dir = "", showpmeter = false, message = ""])
把向量 y
以 name
按索引 indices
块保存在 dir
文件夹中。
sourceMoM_Kernels.saveVec2Chunks
— MethodsaveVec2Chunks(y::AbstractVector, name::AbstractString, nchunk::Int[; dir = ""])
把向量 y
以 name
分为 nchunk
块保存在 dir
文件夹中。
sourceMoM_Kernels.searchNearCubes
— Method用于寻找邻盒子的函数 输入 cubesID3D::Matrix{Int},(n×3)盒子在本层的三维坐标 levelID::Integer 层编号,(定义大盒子为(“0” 层),叶层为第“n”层
sourceMoM_Kernels.setBFInterval!
— Method根据已经排序好的层的盒子信息,从叶层到顶层更新盒子包含的基函数区间
sourceMoM_Kernels.setBigCube
— Method计算包围目标的大盒子信息 输入: nodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标,或者为构成网格的所有点 leafCubeEdgel::FT,叶层盒子边长,用于计算总层数和大盒子的坐标信息
sourceMoM_Kernels.setGeoIDsInLeafCubes!
— Method用于设置给定层的盒子中包含的几何体,采用常数基函数时,同一个盒子不会出现重复值。
sourceMoM_Kernels.setGeoIDsInLeafCubes!
— Method用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。
sourceMoM_Kernels.setGeoIDsInLeafCubes!
— Method用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。
sourceMoM_Kernels.setKidLevelFarNeighbors!
— Method寻找子层的远亲盒子 输入:: thisLevel::LevelInfo{IT, FT, IPT}, 本层信息 kidLevel::LevelInfo{IT, FT, IPT}, 子层信息
sourceMoM_Kernels.setLevelInfo!
— Method非叶层LevelInfo的构造函数,输入为空间三维坐标数组 levelID::计算层的id leafnodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标 cubeEdgel::FT,本层盒子边长
sourceMoM_Kernels.setLevelInfo!
— MethodsetLevelInfo!(nLevels::Integer, leafnodes::Matrix{FT},cubeEdgel::FT, bigCubeLowerCoor::Vec3D{FT}[;
+计算单位球面 2(L+1) 阶高斯求积的采样点坐标权重
TBW
sourceMoM_Kernels.greenfunc_star
— Methodgreenfunc_star(pa::Vec3D{T}, pb::Vec3D{T}[; k=Params.K_0, taylorOrder = SglrOrder]) where {T<:AbstractFloat}
归一化格林函数 $4πG(R)$ 泰勒展开后去奇异项:
\[g^{*}(R) = \frac{e^{-jkR}}{R} - \frac{1}{R}
+ = \sum_{n=1}^{SglrOrder}\frac{{-jk}^{n}}{n!}R^{n-1}.\]
sourceMoM_Kernels.iluPrecondition
— MethodiluPrecondition(A, level; τ = 1e-3)
从 (IncompleteLU.jl)[https://github.com/haampie/IncompleteLU.jl.git] 包实现ilu, 再次封装是因为要加入一些判断
sourceMoM_Kernels.impedancemat4CFIE4PEC
— Method本函数用于计算PEC的CFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4EFIE4PEC!
— Method本函数用于在有矩阵的情况下计算PEC的EFIE阻抗矩阵。 输入信息: Zmat trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4EFIE4PEC
— Method本函数用于计算PEC的EFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4MFIE4PEC
— Method本函数用于计算PEC的MFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4RWGPWC!
— MethodRWG + PWC 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4RWGPWC!
— MethodRWG + PWC 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4RWGRBF!
— MethodRWG + RBF 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4RWGSWG!
— MethodRWG + SWG 部分的阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE!
— Method本函数用于计算介质的 EFIE 阻抗矩阵。 输入信息: Zmat : 已初始化的阻抗矩阵 tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VIE
— Method本函数用于计算混合网格(四面体+六面体)下介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: geosInfo : 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
sourceMoM_Kernels.impedancemat4VSIE
— Method计算VSIE的矩阵
sourceMoM_Kernels.impedancemat4VSIERWGPWC
— Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VSIERWGRBF
— Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.impedancemat4VSIERWGSWG
— Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
sourceMoM_Kernels.initialVMulZchunks!
— MethodinitialVMulZchunks!(Z::T) where{T<:ZnearChunksStruct}
初始化 阻抗矩阵 右乘 向量 乘积的 分布式数组
sourceMoM_Kernels.initialZchunksMulV!
— MethodinitialZchunksMulV!(Z::T) where{T<:ZnearChunksStruct}
初始化 阻抗矩阵 左乘 向量 乘积的 分布式数组。
sourceMoM_Kernels.initialZnearCSC
— MethodinitialZnearCSC(level, nbf::Int)
根据八叉树层信息 level
初始化近场阻抗矩阵。
sourceMoM_Kernels.initialZnearCSR
— MethodinitialZnearCSR(level, nbf::Int)
根据八叉树层信息 level
初始化近场阻抗矩阵,用 transpose
实现 CSR 压缩稀疏行。
sourceMoM_Kernels.initialZnearChunks
— MethodinitialZnearChunks(cube, cubes::AbstractVector; CT = Complex{Precision.FT})
根据八叉树某个盒子 cube
信息初始化 cube
对应的近场矩阵元块。
sourceMoM_Kernels.inputParameters
— MethodinputParameters(;args...)
用于输入仿真参数,并修改奇异性处理中频率相关常量。 详见 [MoM_Basics.inputBasicParameters
] 和 modiSingularityRelatedConsts!
。
sourceMoM_Kernels.integral1DXW
— Method计算分别采用高斯求积、中点求积计算 θ,ϕ 方向的采样点的坐标、权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 Nsample::IT, 采样点数 mod::Symbol, 模式,接受 :uni, 均值积分 :glq, 高斯-勒让德积分 两种模式
sourceMoM_Kernels.interpolate!
— Method拉格朗日单步插值
sourceMoM_Kernels.interpolate!
— Method拉格朗日分步插值
sourceMoM_Kernels.interpolate
— Method拉格朗日单步插值
sourceMoM_Kernels.interpolate
— Method拉格朗日分步插值
sourceMoM_Kernels.interpolationCSCMatCal
— Method采用局部插值、两步插值法,计算局部坐标到全局坐标的稀疏插值矩阵,Julia数据存储为列主的,因此使用 压缩稀疏列(Compressed Sparse Column, CSC) pLevelPoles::GLPolesInfo{FT}, 父层多极子信息 tLevelPoles::GLPolesInfo{FT}, 本层多极子信息
sourceMoM_Kernels.iterSolverSet
— Method迭代求解器选择
sourceMoM_Kernels.levelIntegralInfoCal
— Method计算八叉树的积分相关信息,包括截断项、各层积分点和求积权重数据 输入: levelCubeEdgel::FT, 层盒子边长, 一般叶层为0.25λ,其中 λ 为区域局部波长。 返回值 L ::IT, 层 截断项 levelsPoles ::Vector{GLPolesInfo{FT}},从叶层到第 “2” 层的角谱空间采样信息
sourceMoM_Kernels.loadCurrent
— Method读取电流系数
sourceMoM_Kernels.loadGeoInterval
— Methodset_geosInterval!(fn)
载入文件 fn
读取网格数据区间。
sourceMoM_Kernels.memoryAllocationOnLevels!
— Method预分配各层上的聚合项、解聚项
sourceMoM_Kernels.modiSingularityRelatedConsts!
— Method用于输入参数(特指频率)改变时的更改相关常数项
sourceMoM_Kernels.octreeXWNCal
— Method计算各层八叉树求积坐标、求积权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 nlevels::IT, 八叉树叶层ID mod::Symbol, 模式,接受 :uni, 均值积分(ϕ方向) :glq, 高斯-勒让德积分(θ方向) 两种模式
sourceMoM_Kernels.pickCycleVec
— Method根据循环向量 cycleVec 的周期性索引超出上下界的 index 对应的值
sourceMoM_Kernels.pickθ
— Method利用 θ 在极点附近的对称性计算索引超出上下界的 θ 值
sourceMoM_Kernels.pickϕ
— Method利用 ϕ 的周期性索引超出上下界的 ϕ 值
sourceMoM_Kernels.radarCrossSection
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.radarCrossSection
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.radarCrossSection
— Method在球坐标为r̂θϕ处计算辐射积分,采用SWG基函数时,四面体上没有统一的电流值,每一点上都是四个SWG基函数电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙsₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙsₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNCal
— Method在设定好的观测角度上的球坐标处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用 RBF 基函数时,六面体上没有统一的电流值 N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dV)
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用 SWG 基函数时,四面体上没有统一的电流值,每一点上都是四面电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dV) = ∑ₙ(∫ₛ (∑ₜₙ₌₁⁴ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dV) = ∑ₙ(Sₜ (∑ₜₙ₌₁⁴ IₙSₙρₙ/(3Vₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁⁴ IₙSₙρₙ/3)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.raditionalIntegralNθϕCal
— Method在球坐标为r̂θϕ处计算辐射积分,采用RWG基函数时,三角形上没有统一的电流值,每一点上都是三边电流的叠加, 此时: N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dS) = ∑ₙ(∫ₛ (∑ₜₙ₌₁³ Iₙfₙ)exp(jkr̂(θ, ϕ)⋅rₙ) dS) = ∑ₙ(Sₜ (∑ₜₙ₌₁³ Iₙlₙρₙ/(2Sₙ))exp(jkr̂(θ, ϕ)⋅rₙ) ) = ∑ₙ(∑ᵢWᵢ(∑ₜₙ₌₁³ Iₙlₙρₙ/2)exp(jkr̂(θ, ϕ)⋅rₙ) )
sourceMoM_Kernels.reOrderBasisFunctionAndGeoInfo!
— Method根据按八叉树重新排序的id重排基函数信息
sourceMoM_Kernels.reOrderBasisFunctionAndGeoInfo!
— Method根据按八叉树重新排序的id重排基函数信息,此函数适用于 PWC 基函数的情况
sourceMoM_Kernels.reOrderBasisFunctionAndGeoInfo!
— Method根据按八叉树重新排序的id重排基函数信息
sourceMoM_Kernels.reOrderCubeID!
— Method根据排序后的新id重新排列子层盒子以及盒子的邻盒子信息,以将同一个父盒子层的盒子相邻排列,这样有利于计算 更新的量:父层盒子的kidsInterval, 本层的盒子顺序,本层盒子的邻盒子id
sourceMoM_Kernels.record_memorys
— Method展示
sourceMoM_Kernels.restore_infos
— Methodrestore_infos()
+记录各部分内存和各阶段计算时间。
TBW
sourceMoM_Kernels.saveCubes
— MethodsaveCubes(cubes[, nchunk = ParallelParams.nprocs; name, dir="", kcubeIndices = nothing])
将盒子 cubes
分为 nchunk
块以 name
为名保存在 dir
中。kcubeIndices
同于计算不同分区间重复的部分。
sourceMoM_Kernels.saveCurrent
— Method保存电流系数
sourceMoM_Kernels.saveGeoInterval
— MethodsaveGeoInterval(meshData[; dir = "temp/GeosInfo"])
保存网格数据 meshData
中各类型网格的区间。
sourceMoM_Kernels.saveGeosInfoChunks
— MethodsaveGeosInfoChunks(geos::AbstractVector, cubes, name::AbstractString, nchunk::Int[; dir = "", cubes_ChunksIndices = sizeChunks2idxs(length(cubes), nchunk)])
将几何信息 geos
根据分块数量 nchunk
和在 cubes
中的分布进行分块并保存。
sourceMoM_Kernels.saveLevel
— FunctionsaveLevel(level[, np = ParallelParams.nprocs; dir="", kcubeIndices = nothing])
将层 level
信息保存,其中的盒子信息由 get_partition
计算的分块信息部分保存。
sourceMoM_Kernels.saveOctree
— MethodsaveOctree(octree[; dir=""])
将八叉树 octree
保存在 dir
中。
sourceMoM_Kernels.saveVec2Chunks
— MethodsaveVec2Chunks(y::AbstractVector, name::AbstractString, indices[; dir = "", showpmeter = false, message = ""])
把向量 y
以 name
按索引 indices
块保存在 dir
文件夹中。
sourceMoM_Kernels.saveVec2Chunks
— MethodsaveVec2Chunks(y::AbstractVector, name::AbstractString, nchunk::Int[; dir = ""])
把向量 y
以 name
分为 nchunk
块保存在 dir
文件夹中。
sourceMoM_Kernels.searchNearCubes
— Method用于寻找邻盒子的函数 输入 cubesID3D::Matrix{Int},(n×3)盒子在本层的三维坐标 levelID::Integer 层编号,(定义大盒子为(“0” 层),叶层为第“n”层
sourceMoM_Kernels.setBFInterval!
— Method根据已经排序好的层的盒子信息,从叶层到顶层更新盒子包含的基函数区间
sourceMoM_Kernels.setBigCube
— Method计算包围目标的大盒子信息 输入: nodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标,或者为构成网格的所有点 leafCubeEdgel::FT,叶层盒子边长,用于计算总层数和大盒子的坐标信息
sourceMoM_Kernels.setGeoIDsInLeafCubes!
— Method用于设置给定层的盒子中包含的几何体,采用常数基函数时,同一个盒子不会出现重复值。
sourceMoM_Kernels.setGeoIDsInLeafCubes!
— Method用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。
sourceMoM_Kernels.setGeoIDsInLeafCubes!
— Method用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。
sourceMoM_Kernels.setKidLevelFarNeighbors!
— Method寻找子层的远亲盒子 输入:: thisLevel::LevelInfo{IT, FT, IPT}, 本层信息 kidLevel::LevelInfo{IT, FT, IPT}, 子层信息
sourceMoM_Kernels.setLevelInfo!
— Method非叶层LevelInfo的构造函数,输入为空间三维坐标数组 levelID::计算层的id leafnodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标 cubeEdgel::FT,本层盒子边长
sourceMoM_Kernels.setLevelInfo!
— MethodsetLevelInfo!(nLevels::Integer, leafnodes::Matrix{FT},cubeEdgel::FT, bigCubeLowerCoor::Vec3D{FT}[;
IPT = get_Interpolation_Method(MLFMAParams.InterpolationMethod), LT = LevelInfo]) where{FT<:Real}
叶层 LevelInfo 的构造函数,输入信息:
nLevels::IT 层数,亦为叶层层ID
leafnodes::Matrix{FT} 大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标
cubeEdgel::FT 叶层盒子边长
bigCubeLowerCoor::Vec3D{FT} 大盒子的角坐标
IPT 插值算法类型
-LT = LevelInfo 层类
sourceMoM_Kernels.setLevelTransFactor!
— Method计算 第“2”层 到 叶 层的转移因子, 转移因子只存在于远亲组,每层远亲组最多有 7^3 - 3^3 = 316种结果
sourceMoM_Kernels.setLevelsCubesKidsIn8!
— Method计算(nLevel-1)-2 层每层的非空盒子的非空子盒子在其8个子盒子中的位置
sourceMoM_Kernels.setLevelsShiftFactor!
— Method本函数用于给输入的本(level)层的盒子与其子盒子之间计算相移因子, 由盒子排列的规律性和相移因子的对称性,可知: 只需要计算8个相移因子,即可用于所有盒子到其子盒子的相移, 且这八个盒子关于原点对称的两两之间的相移因子为共轭关系 计算完成直接保存在 level 不再返回
sourceMoM_Kernels.setVSC₁₂₃ⁿ!
— MethodsetVSC₁₂₃ⁿ!()
计算体奇异性三个系数。
sourceMoM_Kernels.set_Interpolation_Method!
— Method设置插值算法
sourceMoM_Kernels.set_geosInterval!
— Methodset_geosInterval!(fn)
通过文件 fn
设置网格数据区间。
sourceMoM_Kernels.set_leafCubeSize!
— Method设置叶层盒子边长
sourceMoM_Kernels.set_nprocs!
— Methodset_nprocs!([;nprocs=1, np=nprocs])
设置并行核心数量为 nprocs
。
sourceMoM_Kernels.singularF1
— MethodsingularF1(a::FT, b::FT, c::FT, d::FT) where{FT<:AbstractFloat}
计算边长为a, b, c, d
的四边形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。
sourceMoM_Kernels.singularF1
— MethodsingularF1(a::FT, b::FT, c::FT) where{FT<:AbstractFloat}
计算边长为a, b, c
的三角形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。
sourceMoM_Kernels.singularF21
— MethodsingularF21(a::FT, b::FT, c::FT, area2::FT) where{FT<:AbstractFloat}
计算边长为a, b, c
,面积平方为area2
的三角形重合时的奇异性F2项,即 $\int{\int{\frac{\boldsymbol{\rho}_{m}\cdot\boldsymbol{\rho}_{n}}{R}}dS}$ 的解析值,该函数处理 m==n 即基函数自作用的情况。
sourceMoM_Kernels.singularF22
— MethodsingularF21(a::FT, b::FT, c::FT, area2::FT) where{FT<:AbstractFloat}
计算边长为a, b, c
,面积平方为area2
的三角形重合时的奇异性F2项,即 $\int{\int{\frac{\boldsymbol{\rho}_{m}\cdot\boldsymbol{\rho}_{n}}{R}}dS}$ 的解析值,该函数处理 m!=n 即同一三角形的不同基函数作用的情况。
sourceMoM_Kernels.sizeChunks2cuts
— MethodsizeChunks2cuts(Asize, chunks)
+LT = LevelInfo 层类
sourceMoM_Kernels.setLevelTransFactor!
— Method计算 第“2”层 到 叶 层的转移因子, 转移因子只存在于远亲组,每层远亲组最多有 7^3 - 3^3 = 316种结果
sourceMoM_Kernels.setLevelsCubesKidsIn8!
— Method计算(nLevel-1)-2 层每层的非空盒子的非空子盒子在其8个子盒子中的位置
sourceMoM_Kernels.setLevelsShiftFactor!
— Method本函数用于给输入的本(level)层的盒子与其子盒子之间计算相移因子, 由盒子排列的规律性和相移因子的对称性,可知: 只需要计算8个相移因子,即可用于所有盒子到其子盒子的相移, 且这八个盒子关于原点对称的两两之间的相移因子为共轭关系 计算完成直接保存在 level 不再返回
sourceMoM_Kernels.setVSC₁₂₃ⁿ!
— MethodsetVSC₁₂₃ⁿ!()
计算体奇异性三个系数。
sourceMoM_Kernels.set_Interpolation_Method!
— Method设置插值算法
sourceMoM_Kernels.set_geosInterval!
— Methodset_geosInterval!(fn)
通过文件 fn
设置网格数据区间。
sourceMoM_Kernels.set_leafCubeSize!
— Method设置叶层盒子边长
sourceMoM_Kernels.set_nprocs!
— Methodset_nprocs!([;nprocs=1, np=nprocs])
设置并行核心数量为 nprocs
。
sourceMoM_Kernels.singularF1
— MethodsingularF1(a::FT, b::FT, c::FT, d::FT) where{FT<:AbstractFloat}
计算边长为a, b, c, d
的四边形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。
sourceMoM_Kernels.singularF1
— MethodsingularF1(a::FT, b::FT, c::FT) where{FT<:AbstractFloat}
计算边长为a, b, c
的三角形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。
sourceMoM_Kernels.singularF21
— MethodsingularF21(a::FT, b::FT, c::FT, area2::FT) where{FT<:AbstractFloat}
计算边长为a, b, c
,面积平方为area2
的三角形重合时的奇异性F2项,即 $\int{\int{\frac{\boldsymbol{\rho}_{m}\cdot\boldsymbol{\rho}_{n}}{R}}dS}$ 的解析值,该函数处理 m==n 即基函数自作用的情况。
sourceMoM_Kernels.singularF22
— MethodsingularF21(a::FT, b::FT, c::FT, area2::FT) where{FT<:AbstractFloat}
计算边长为a, b, c
,面积平方为area2
的三角形重合时的奇异性F2项,即 $\int{\int{\frac{\boldsymbol{\rho}_{m}\cdot\boldsymbol{\rho}_{n}}{R}}dS}$ 的解析值,该函数处理 m!=n 即同一三角形的不同基函数作用的情况。
sourceMoM_Kernels.sizeChunks2cuts
— MethodsizeChunks2cuts(Asize, chunks)
sizeChunks2cuts(Asize::Int, chunks)
sizeChunks2cuts(Asize, chunks::Int)
-sizeChunks2cuts(Asize::Int, chunks::Int)
将数组大小 Asize
按 chunks
进行分块。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.sizeChunks2idxs
— MethodsizeChunks2idxs(Asize, nchunk)
Borrowed form DistributedArray.jl, get the slice of matrix size Asize on each dimension with nchunk. 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.sizeChunksCuts2indices
— MethodsizeChunksCuts2indices(Asize, nchunk, cuts::Tuple)
-sizeChunksCuts2indices(Asize, nchunk, cuts::Vector{I}) where{I<:Integer}
根据数组大小 Asize
分块数量 nchunk
以及各块索引区间 cuts
计算各块的索引。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.slicedim2bounds
— Methodslicedim2bounds(sz::Int, nc::Int)
将区间 1:sz
划分为 nc
个区间并返回区间上下界。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.slicedim2partition
— Methodslicedim2bounds(dims, nc::Int)
将区间 dims
划分为 nc
个区间并返回区间上下界。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.solve!
— Method矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型
sourceMoM_Kernels.solve
— Method矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(ZnearChunks::ZnearChunksStruct{CT}, level; nbf = 0) where {FT<:Real, CT<:Complex{FT}}
根据块状近场阻抗矩阵 ZnearChunks
和计算阻抗矩阵层的盒子信息 cubes
计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层的盒子信息 cubes
计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}
根据近场阻抗矩阵 Znear
和八叉树 octree
叶层计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层信息 level
计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePr
— MethodsparseApproximateInversePr(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层的盒子信息 cubes
计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePr
— MethodsparseApproximateInversePr(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}
根据近场阻抗矩阵 Znear
和八叉树 octree
叶层计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePr
— MethodsparseApproximateInversePr(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层信息 level
计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.spherical_h1l
— Method第一类球汉克尔函数,使用GSL.jl(GNU Scientific Library),适用于 l 为整数,x 为浮点数时算的更快
sourceMoM_Kernels.spherical_h1l
— Method第一类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用
sourceMoM_Kernels.spherical_h1l_array
— Method一次计算 0:lmax 的多阶第一类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.spherical_h1l_array
— Method一次计算 0:lmax 的多阶第一类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.spherical_h2l
— Method第二类球汉克尔函数,使用GSL.jl(GNU Scientific Library),,适用于 l 为整数,x 为浮点数时算的更快
sourceMoM_Kernels.spherical_h2l
— Method第二类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用
sourceMoM_Kernels.spherical_h2l_array
— Method一次计算 0:lmax 的多阶第二类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.spherical_h2l_array
— Method一次计算 0:lmax 的多阶第二类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.transOnLevel!
— Method层内转移
sourceMoM_Kernels.transOnLevels!
— Method各层内转移
sourceMoM_Kernels.truncationLCal
— Method该函数计算八叉树各层截断项数 输入为本层最小盒子的边长
sourceMoM_Kernels.truncationLCal
— MethodtruncationLCal(;rel_l) where {FT<:Real}
该函数计算八叉树各层截断项数 输入为相对波长
sourceMoM_Kernels.use_CSR
— Methoduse_CSR()
-use_CSC()
设置近场阻抗矩阵是否采用CSR(CSC转置)。
sourceMoM_Kernels.volumeSingularityIg
— MethodvolumeSingularityIg(rtveclc::AbstractVector{FT}, volumeCell::HexahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
计算场点rgt
在体网格volumeCell
上的奇异性。 计算结果为:
\[\begin{aligned}
+sizeChunks2cuts(Asize::Int, chunks::Int)
将数组大小 Asize
按 chunks
进行分块。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.sizeChunks2idxs
— MethodsizeChunks2idxs(Asize, nchunk)
Borrowed form DistributedArray.jl, get the slice of matrix size Asize on each dimension with nchunk. 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.sizeChunksCuts2indices
— MethodsizeChunksCuts2indices(Asize, nchunk, cuts::Tuple)
+sizeChunksCuts2indices(Asize, nchunk, cuts::Vector{I}) where{I<:Integer}
根据数组大小 Asize
分块数量 nchunk
以及各块索引区间 cuts
计算各块的索引。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.slicedim2bounds
— Methodslicedim2bounds(sz::Int, nc::Int)
将区间 1:sz
划分为 nc
个区间并返回区间上下界。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.slicedim2partition
— Methodslicedim2bounds(dims, nc::Int)
将区间 dims
划分为 nc
个区间并返回区间上下界。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
sourceMoM_Kernels.solve!
— Method矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型
sourceMoM_Kernels.solve
— Method矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(ZnearChunks::ZnearChunksStruct{CT}, level; nbf = 0) where {FT<:Real, CT<:Complex{FT}}
根据块状近场阻抗矩阵 ZnearChunks
和计算阻抗矩阵层的盒子信息 cubes
计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层的盒子信息 cubes
计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}
根据近场阻抗矩阵 Znear
和八叉树 octree
叶层计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePl
— MethodsparseApproximateInversePl(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层信息 level
计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePr
— MethodsparseApproximateInversePr(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层的盒子信息 cubes
计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePr
— MethodsparseApproximateInversePr(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}
根据近场阻抗矩阵 Znear
和八叉树 octree
叶层计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.sparseApproximateInversePr
— MethodsparseApproximateInversePr(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}
根据近场阻抗矩阵 Znear
和计算阻抗矩阵层信息 level
计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
sourceMoM_Kernels.spherical_h1l
— Method第一类球汉克尔函数,使用GSL.jl(GNU Scientific Library),适用于 l 为整数,x 为浮点数时算的更快
sourceMoM_Kernels.spherical_h1l
— Method第一类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用
sourceMoM_Kernels.spherical_h1l_array
— Method一次计算 0:lmax 的多阶第一类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.spherical_h1l_array
— Method一次计算 0:lmax 的多阶第一类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.spherical_h2l
— Method第二类球汉克尔函数,使用GSL.jl(GNU Scientific Library),,适用于 l 为整数,x 为浮点数时算的更快
sourceMoM_Kernels.spherical_h2l
— Method第二类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用
sourceMoM_Kernels.spherical_h2l_array
— Method一次计算 0:lmax 的多阶第二类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.spherical_h2l_array
— Method一次计算 0:lmax 的多阶第二类球汉克尔函数, 保存在数组里
sourceMoM_Kernels.transOnLevel!
— Method层内转移
sourceMoM_Kernels.transOnLevels!
— Method各层内转移
sourceMoM_Kernels.truncationLCal
— Method该函数计算八叉树各层截断项数 输入为本层最小盒子的边长
sourceMoM_Kernels.truncationLCal
— MethodtruncationLCal(;rel_l) where {FT<:Real}
该函数计算八叉树各层截断项数 输入为相对波长
sourceMoM_Kernels.use_CSR
— Methoduse_CSR()
+use_CSC()
设置近场阻抗矩阵是否采用CSR(CSC转置)。
sourceMoM_Kernels.volumeSingularityIg
— MethodvolumeSingularityIg(rtveclc::AbstractVector{FT}, volumeCell::HexahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
计算场点rgt
在体网格volumeCell
上的奇异性。 计算结果为:
\[\begin{aligned}
I_{gV} &= \int{g(R)dV'}\\
&= -\sum_{S_i}{d_i\sum_{n}^{SglrOrder}{\frac{coeffgreen(n)}{n+2}I_{RS}^{n-1}}}\\
-\end{aligned}\]
sourceMoM_Kernels.volumeSingularityIgIvecg
— MethodvolumeSingularityIgIvecg(rtveclc::AbstractVector{FT}, volumeCell::TetrahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
+\end{aligned}\]
sourceMoM_Kernels.volumeSingularityIgIvecg
— MethodvolumeSingularityIgIvecg(rtveclc::AbstractVector{FT}, volumeCell::TetrahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
volumeSingularityIgIvecg(rtveclc::AbstractVector{FT}, volumeCell::HexahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
计算场点rgt
在体网格volumeCell
上的奇异性。 计算结果为:
\[\begin{aligned}
I_{gV} &= \int{g(R)dV'}\\
&= -\sum_{S_i}{d_i\sum_{n}^{SglrOrder}{\frac{coeffgreen(n)}{n+2}I_{RS}^{n-1}}}\\
\boldsymbol{I}_{gV} &= \int{\boldsymbol{R}g(R)dV'}\\
&= -\sum_{S_i}{\hat{\bm{n}}_i \sum_{n=0}^{SglrOrder}{\frac{coeffgreen(n)}{n+1}I^{n+1}_{RS}}}\\
-\end{aligned}\]
sourceMoM_Kernels.volumeSingularityLOpDyad
— MethodvolumeSingularityLOpDyad(rtveclc::AbstractVector{FT}, volumeCell::TetrahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
+\end{aligned}\]
sourceMoM_Kernels.volumeSingularityLOpDyad
— MethodvolumeSingularityLOpDyad(rtveclc::AbstractVector{FT}, volumeCell::TetrahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
volumeSingularityLOpDyad(rtveclc::AbstractVector{FT}, volumeCell::HexahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
计算场点rtveclc
在体网格volumeCell
上的并矢格林函数奇异性。 计算结果为:
\[\begin{aligned}
\overline{I}_{V} &= \int{(k^2 I + ∇∇)G(R) dV'}
-\end{aligned}\]
sourceMoM_Kernels.writeZtt!
— Method为适应类型变化而将写入部分单独封装
sourceSettings
This document was generated with Documenter.jl version 1.4.1 on Thursday 2 May 2024. Using Julia version 1.10.3.
+\end{aligned}\]
MoM_Kernels.writeZtt!
— Method为适应类型变化而将写入部分单独封装