MoM_Kernels.GeosIntervalMoM_Kernels.MLFMAParamsMoM_Kernels.ParallelParamsMoM_Kernels.SSCgMoM_Kernels.SSCgdivnp2MoM_Kernels.VSC₃ⁿMoM_Kernels.CubeInfoMoM_Kernels.GLPolesInfoMoM_Kernels.GeosIntervalTypeMoM_Kernels.LagrangeInterp1StepInfoMoM_Kernels.LagrangeInterp1StepInfoMoM_Kernels.LagrangeInterpInfoMoM_Kernels.LagrangeInterpInfoMoM_Kernels.LevelInfoMoM_Kernels.MLFMAIteratorMoM_Kernels.MLFMAIteratorMoM_Kernels.MLFMAParamsTypeMoM_Kernels.MatrixChunkMoM_Kernels.MatrixChunkMoM_Kernels.OctreeInfoMoM_Kernels.OctreeInfoMoM_Kernels.PartitionedVectorMoM_Kernels.SAIChunkPrecMoM_Kernels.SAIPrecMoM_Kernels.ZnearChunksStructMoM_Kernels.ZnearChunksStructMoM_Kernels.ZnearTBase.:*Base.:*Base.:*Base.:*Base.:*Base.:*Base.convertBase.eltypeBase.getindexBase.getindexBase.getindexBase.setindex!Base.setindex!Base.sizeLinearAlgebra.ldiv!LinearAlgebra.ldiv!LinearAlgebra.mul!LinearAlgebra.mul!LinearAlgebra.mul!LinearAlgebra.mul!LinearAlgebra.mul!MoM_Kernels.CFIEOnNearTrisMoM_Kernels.CFIEOnTrisMoM_Kernels.CFIEOnTrisMoM_Kernels.EFIEOnHexaPWCMoM_Kernels.EFIEOnHexaPWCSepPVMoM_Kernels.EFIEOnHexaRBFMoM_Kernels.EFIEOnHexaTetraPWCMoM_Kernels.EFIEOnHexaTetraPWCMoM_Kernels.EFIEOnHexasPWCMoM_Kernels.EFIEOnHexasRBFMoM_Kernels.EFIEOnNearHexaTetraPWCMoM_Kernels.EFIEOnNearHexaTetraPWCMoM_Kernels.EFIEOnNearHexasPWCMoM_Kernels.EFIEOnNearHexasRBFMoM_Kernels.EFIEOnNearRWGPWCMoM_Kernels.EFIEOnNearRWGPWCMoM_Kernels.EFIEOnNearRWGPWCMoM_Kernels.EFIEOnNearRWGPWCMoM_Kernels.EFIEOnNearRWGRBFMoM_Kernels.EFIEOnNearRWGRBFMoM_Kernels.EFIEOnNearRWGSWGMoM_Kernels.EFIEOnNearRWGSWGMoM_Kernels.EFIEOnNearTetrasPWCMoM_Kernels.EFIEOnNearTetrasSWGMoM_Kernels.EFIEOnNearTrisMoM_Kernels.EFIEOnRWGPWCMoM_Kernels.EFIEOnRWGPWCMoM_Kernels.EFIEOnRWGPWCMoM_Kernels.EFIEOnRWGPWCMoM_Kernels.EFIEOnRWGRBFMoM_Kernels.EFIEOnRWGRBFMoM_Kernels.EFIEOnRWGSWGMoM_Kernels.EFIEOnRWGSWGMoM_Kernels.EFIEOnTetraPWCMoM_Kernels.EFIEOnTetraPWCSepPVMoM_Kernels.EFIEOnTetraSWGMoM_Kernels.EFIEOnTetrasPWCMoM_Kernels.EFIEOnTetrasSWGMoM_Kernels.EFIEOnTrisMoM_Kernels.EFIEOnTrisMoM_Kernels.MFIEOnNearTrisMoM_Kernels.MFIEOnTrisMoM_Kernels.MFIEOnTrisMoM_Kernels.RCSPlotMoM_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.aggSBFOnLevelMoM_Kernels.aggSBFOnLevel!MoM_Kernels.aggSBFOnLevel!MoM_Kernels.aggSBFOnLevel!MoM_Kernels.aggSBFOnLevel!MoM_Kernels.aggSBFOnLevelCFIEMoM_Kernels.aggSBFOnLevelCFIE!MoM_Kernels.aggSBFOnLevelEFIEMoM_Kernels.aggSBFOnLevelEFIE!MoM_Kernels.aggSBFOnLevelMFIEMoM_Kernels.aggSBFOnLevelMFIE!MoM_Kernels.anterpolateMoM_Kernels.anterpolateMoM_Kernels.anterpolate!MoM_Kernels.anterpolate!MoM_Kernels.calZfarI!MoM_Kernels.calZnearCSCMoM_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.coeffgreenMoM_Kernels.convergencePlotMoM_Kernels.cooraInCoorbMoM_Kernels.disagg2KidLevel!MoM_Kernels.disagg2KidLevel!MoM_Kernels.disagg2LeafLevel!MoM_Kernels.disaggOnBF!MoM_Kernels.electricJCalMoM_Kernels.electricJCalMoM_Kernels.excitationVectorCFIEMoM_Kernels.excitationVectorCFIEMoM_Kernels.excitationVectorCFIE!MoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIEMoM_Kernels.excitationVectorEFIE!MoM_Kernels.excitationVectorEFIE!MoM_Kernels.excitationVectorEFIE!MoM_Kernels.excitationVectorEFIE!MoM_Kernels.excitationVectorMFIEMoM_Kernels.excitationVectorMFIEMoM_Kernels.excitationVectorMFIE!MoM_Kernels.faceSingularityIgMoM_Kernels.faceSingularityIgMoM_Kernels.faceSingularityIgMoM_Kernels.faceSingularityIgIvecgMoM_Kernels.faceSingularityIgIvecgI∇gSMoM_Kernels.faceSingularityIᵣIᵨMoM_Kernels.farEPlotMoM_Kernels.farFieldMoM_Kernels.farFieldMoM_Kernels.farFieldMoM_Kernels.farFieldMoM_Kernels.func4Cube1stkIntervalMoM_Kernels.geoElectricJCalMoM_Kernels.geoElectricJCalMoM_Kernels.geoElectricJCalMoM_Kernels.geoElectricJCalMoM_Kernels.geoElectricJCalMoM_Kernels.getAggSBFOnLevelMoM_Kernels.getAggSBFOnLevelMoM_Kernels.getAggSBFOnLevelMoM_Kernels.getBfsCenterMoM_Kernels.getBfsCenterMoM_Kernels.getCubeIDsWithGeosMoM_Kernels.getExcitationVectorMoM_Kernels.getExcitationVectorMoM_Kernels.getExcitationVectorMoM_Kernels.getGeoIDsInCubeChunkMoM_Kernels.getGeosIntervalMoM_Kernels.getImpedanceMatAndExciteVMoM_Kernels.getImpedanceMatAndExciteVMoM_Kernels.getImpedanceMatrixMoM_Kernels.getImpedanceOptMoM_Kernels.getImpedanceOptAndExciteVOctreeMoM_Kernels.getLeafCubeLMoM_Kernels.getLeafCubeLMoM_Kernels.getLeafCubeLMoM_Kernels.getLeafCubeLMoM_Kernels.getMeshDataSaveGeosIntervalMoM_Kernels.getNeiFarNeighborCubeIDsMoM_Kernels.getNeighborCubeIDsMoM_Kernels.getOctreeAndReOrderBFs!MoM_Kernels.get_Interpolation_MethodMoM_Kernels.get_chunks_minmax_colMoM_Kernels.get_leafCubeSizeMoM_Kernels.get_partitionMoM_Kernels.get_partition_mapMoM_Kernels.gq_xsws_on_sphereMoM_Kernels.greenfunc_starMoM_Kernels.iluPreconditionMoM_Kernels.impedancemat4CFIE4PECMoM_Kernels.impedancemat4EFIE4PECMoM_Kernels.impedancemat4EFIE4PEC!MoM_Kernels.impedancemat4MFIE4PECMoM_Kernels.impedancemat4RWGPWC!MoM_Kernels.impedancemat4RWGPWC!MoM_Kernels.impedancemat4RWGRBF!MoM_Kernels.impedancemat4RWGSWG!MoM_Kernels.impedancemat4VIEMoM_Kernels.impedancemat4VIEMoM_Kernels.impedancemat4VIEMoM_Kernels.impedancemat4VIEMoM_Kernels.impedancemat4VIEMoM_Kernels.impedancemat4VIE!MoM_Kernels.impedancemat4VIE!MoM_Kernels.impedancemat4VIE!MoM_Kernels.impedancemat4VIE!MoM_Kernels.impedancemat4VIE!MoM_Kernels.impedancemat4VIE!MoM_Kernels.impedancemat4VSIEMoM_Kernels.impedancemat4VSIERWGPWCMoM_Kernels.impedancemat4VSIERWGRBFMoM_Kernels.impedancemat4VSIERWGSWGMoM_Kernels.initialVMulZchunks!MoM_Kernels.initialZchunksMulV!MoM_Kernels.initialZnearCSCMoM_Kernels.initialZnearCSRMoM_Kernels.initialZnearChunksMoM_Kernels.inputParametersMoM_Kernels.integral1DXWMoM_Kernels.interpolateMoM_Kernels.interpolateMoM_Kernels.interpolate!MoM_Kernels.interpolate!MoM_Kernels.interpolationCSCMatCalMoM_Kernels.iterSolverSetMoM_Kernels.levelIntegralInfoCalMoM_Kernels.loadCurrentMoM_Kernels.loadGeoIntervalMoM_Kernels.memoryAllocationOnLevels!MoM_Kernels.modiSingularityRelatedConsts!MoM_Kernels.octreeXWNCalMoM_Kernels.pickCycleVecMoM_Kernels.pickθMoM_Kernels.pickϕMoM_Kernels.radarCrossSectionMoM_Kernels.radarCrossSectionMoM_Kernels.radarCrossSectionMoM_Kernels.raditionalIntegralNCalMoM_Kernels.raditionalIntegralNθϕCalMoM_Kernels.raditionalIntegralNθϕCalMoM_Kernels.raditionalIntegralNθϕCalMoM_Kernels.raditionalIntegralNθϕCalMoM_Kernels.reOrderBasisFunctionAndGeoInfo!MoM_Kernels.reOrderBasisFunctionAndGeoInfo!MoM_Kernels.reOrderBasisFunctionAndGeoInfo!MoM_Kernels.reOrderCubeID!MoM_Kernels.record_memorysMoM_Kernels.restore_infosMoM_Kernels.saveCubesMoM_Kernels.saveCurrentMoM_Kernels.saveGeoIntervalMoM_Kernels.saveGeosInfoChunksMoM_Kernels.saveLevelMoM_Kernels.saveOctreeMoM_Kernels.saveVec2ChunksMoM_Kernels.saveVec2ChunksMoM_Kernels.searchNearCubesMoM_Kernels.setBFInterval!MoM_Kernels.setBigCubeMoM_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.singularF1MoM_Kernels.singularF1MoM_Kernels.singularF21MoM_Kernels.singularF22MoM_Kernels.sizeChunks2cutsMoM_Kernels.sizeChunks2idxsMoM_Kernels.sizeChunksCuts2indicesMoM_Kernels.slicedim2boundsMoM_Kernels.slicedim2partitionMoM_Kernels.solveMoM_Kernels.solve!MoM_Kernels.sparseApproximateInversePlMoM_Kernels.sparseApproximateInversePlMoM_Kernels.sparseApproximateInversePlMoM_Kernels.sparseApproximateInversePlMoM_Kernels.sparseApproximateInversePrMoM_Kernels.sparseApproximateInversePrMoM_Kernels.sparseApproximateInversePrMoM_Kernels.spherical_h1lMoM_Kernels.spherical_h1lMoM_Kernels.spherical_h1l_arrayMoM_Kernels.spherical_h1l_arrayMoM_Kernels.spherical_h2lMoM_Kernels.spherical_h2lMoM_Kernels.spherical_h2l_arrayMoM_Kernels.spherical_h2l_arrayMoM_Kernels.transOnLevel!MoM_Kernels.transOnLevels!MoM_Kernels.truncationLCalMoM_Kernels.truncationLCalMoM_Kernels.use_CSRMoM_Kernels.volumeSingularityIgMoM_Kernels.volumeSingularityIgIvecgMoM_Kernels.volumeSingularityLOpDyadMoM_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的区间
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} 本盒子在本层的三维全局坐标MoM_Kernels.GLPolesInfo — Type多极子的极信息,即角谱空间采样信息 Xθs::Vector{FT},θ方向的采样点坐标(rad单位),高斯-勒让德求积 Xϕs::Vector{FT},ϕ方向的采样点坐标(rad单位),均值求积 Wθϕs::Vector{FT},采样点权重,用于积分时使用,在MLFMA中直接乘在转移项
MoM_Kernels.GeosIntervalType — TypeGeosIntervalType{T}保存网格数据区间的类。
MoM_Kernels.LagrangeInterp1StepInfo — Type保存总的 稀疏插值矩阵,用于单步插值,根据稀疏度决定保存稀疏阵或是稠密阵 θϕCSC ::AbstractMatrix{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 θϕCSCT ::AbstractMatrix{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值
MoM_Kernels.LagrangeInterp1StepInfo — Method带参数的构造函数
MoM_Kernels.LagrangeInterpInfo — Type保存 θ, ϕ 两个方向的稀疏插值矩阵, θ方向为 (npXθs, ntXθs) 稀疏矩阵, 用于左乘本层多极子矩阵,在 θ 方向插值 ϕ方向为 (ntXϕs, ntXϕs) 稀疏矩阵, 用于右乘本层多极子矩阵,在 ϕ 方向插值 θCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 ϕCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值
MoM_Kernels.LagrangeInterpInfo — Method带参数的构造函数
MoM_Kernels.LevelInfo — TypeLevelInfo{IT<:Integer, FT<:Real, IPT} <: AbstractLevel层信息:
ID ::IT 层序号
isleaf ::Bool 是否为叶层
L ::IT 本层截断项数
cubes ::Vector{CubeInfo{IT, FT}} 包含每一个盒子信息的向量
cubeEdgel ::FT 本层盒子的边长
poles ::PolesInfo{IT, FT} 多极子采样信息
interpWθϕ ::InterpInfo{IT, FT} 插值信息
aggS ::Array{Complex{FT}, 3} 聚合项
disaggG ::Array{Complex{FT}, 3} 解聚项
phaseShift2Kids ::Array{Complex{FT}, 3}本层盒子到子层盒子的相移因子
αTrans ::Array{Complex{FT}, 3} 本层盒子远亲组之间的转移因子,根据相对位置共有 7^3 - 3^3 = 316 个
αTransIndex ::Array{IT, 2} 远亲盒子的相对位置到其转移因子在所有转移因子数组的索引MoM_Kernels.MLFMAIterator — Type保存 MLFMA 相关信息的结构体
MoM_Kernels.MLFMAIterator — Method实现矩阵向量乘积,并封装为线性算子
MoM_Kernels.MLFMAParamsType — Type创建可变参数类型以在频率更改时对应更改 MLFMA 的相关参数
MoM_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} 用于右乘其它矩阵、向量的临时数组,大小与行数相同MoM_Kernels.MatrixChunk — MethodMatrixChunk{T}(rowIndices, colIndices) where {T<:Number}用行、列索引 rowIndices, colIndices 初始化矩阵块。
MoM_Kernels.OctreeInfo — Type八叉树类 nLevels ::Integer, 叶层ID(定义大盒子为(“0” 层),叶层为第“n”层,nLevels取“n”的值) leafCubeEdgel::FT,叶层盒子边长 bigCubeLowerCoor::MVec3D{FT},第0层盒子的角坐标 levels ::Dict{Int, LevelInfo},保存各层信息的字典
MoM_Kernels.OctreeInfo — Method构建八叉树类
MoM_Kernels.PartitionedVector — TypePartitionedVector{T} <: AbstractVector{T}用于保存向量块的类,同时在块内保存一些其他块的数据。
size::Int 原始 Vector 的大小
data::OffsetVector{T, Vector{T}} 本地保存的数据
indices::UnitRange{Int} 本地保存数据的索引区间
ghostdata::SparseVector{T, Int} 用到的其它数据
ghostindices::Vector{Int} 用到的其它数据的索引区间MoM_Kernels.SAIChunkPrec — TypeSAIChunkPrec{T} <: AbstractMatrix{T}分块系数近似逆的结构体。
MoM_Kernels.SAIPrec — TypeSAIPrec{T} <: AbstractMatrix{T}封装系数近似逆矩阵的类型。
MoM_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} 用于左乘其它矩阵、向量的临时分布式数组,大小与列数相同,默认不分配MoM_Kernels.ZnearChunksStruct — MethodZnearChunksStruct{T}(chunks; m, n) where {T<:Number}ZnearChunksStruct 类的初始化函数。
Base.:* — Method*(mat::AbstractMatrix, Z::T) where{T<:MatrixChunk}实现右乘其它矩阵,默认矩阵块较小,不在本阶段并行。
Base.:* — Method*(x::AbstractVector, Z::T) where{T<:MatrixChunk}实现矩阵块 Z 右乘其它向量,默认矩阵块较小,不在本阶段并行。
Base.:* — MethodBase.:*(Z::ZNEARCHUNK{T}, mat::AbstractMatrix) where{T<:Number}实现左乘其它矩阵
Base.:* — Method*(Z::T, mat::AbstractMatrix) where{T<:MatrixChunk}实现矩阵块 Z 左乘其它矩阵,默认矩阵块较小,不在本阶段并行。
Base.:* — MethodBase.:*(Z::T, x::AbstractVector) where{T<:MatrixChunk}实现左乘其它向量,默认矩阵块较小,因此不在本阶段并行
Base.:* — MethodBase.:*(Z::T, x::AbstractVector) where{T<:ZnearChunksStruct}实现左乘其它向量
Base.convert — Method实现包含分布式层的
Base.eltype — Methodeltype(opt::ILUFactorization)提供 ilu 的算子 eltype 函数。
Base.getindex — MethodBase.getindex(A::PartitionedVector, i::I) where {I<:Integer}重载 PartitionedVector 类型的 getindex 函数。
Base.getindex — Methodgetindex(Z::T, i1::Int, i2::Int) where{T<:MatrixChunk}重载 getindex 函数。
Base.getindex — Method重载 getindex 函数
Base.setindex! — Methodsetindex!(Z::T, x, i1::Int, i2::Int) where{T<:MatrixChunk}重载 setindex! 函数
Base.setindex! — Methodsetindex!(Z::T, x, i1::Int, i2::Int) where{T<:ZNEARCHUNK}重载 setindex! 函数
Base.size — Methodsize(operator::T) where {T<:ILUFactorization}提供 ilu 的算子 size 函数。
LinearAlgebra.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。
LinearAlgebra.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。
LinearAlgebra.mul! — MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
重载以实现矩阵向量乘积计算TBW
LinearAlgebra.mul! — MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
重载以实现矩阵向量乘积计算TBW
LinearAlgebra.mul! — Methodmul!(y, Z::T, x::AbstractVector) where{T<:MatrixChunk}实现矩阵块 Z 的矩阵向量乘积计算。
LinearAlgebra.mul! — MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
重载以实现矩阵向量乘积计算TBW
LinearAlgebra.mul! — MethodLinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
重载以实现矩阵向量乘积计算TBW
MoM_Kernels.CFIEOnNearTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
MoM_Kernels.CFIEOnTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
MoM_Kernels.CFIEOnTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
MoM_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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
MoM_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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
MoM_Kernels.EFIEOnHexaRBF — Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入 hexat : HexahedraInfo, 场六面体和源六面体
MoM_Kernels.EFIEOnHexaTetraPWC — Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat::HexahedraInfo, 场六面体 tetras::TetrahedraInfo 源四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_Kernels.EFIEOnHexaTetraPWC — Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_Kernels.EFIEOnHexasPWC — Method采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_Kernels.EFIEOnHexasRBF — Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体
MoM_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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_Kernels.EFIEOnNearHexaTetraPWC — Method采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_Kernels.EFIEOnNearHexasRBF — Method计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合但相隔较近的情况,输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体
MoM_Kernels.EFIEOnNearRWGPWC — Method计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体
MoM_Kernels.EFIEOnNearRWGPWC — Method计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, TetrahedraInfo, 源四面体、四面体
MoM_Kernels.EFIEOnNearRWGPWC — Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体
MoM_Kernels.EFIEOnNearRWGPWC — Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体
MoM_Kernels.EFIEOnNearRWGRBF — Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
MoM_Kernels.EFIEOnNearRWGRBF — Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
MoM_Kernels.EFIEOnNearRWGSWG — Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
MoM_Kernels.EFIEOnNearRWGSWG — Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
MoM_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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_Kernels.EFIEOnNearTetrasSWG — Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合但相隔较近的情况,输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
MoM_Kernels.EFIEOnNearTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
MoM_Kernels.EFIEOnRWGPWC — Method计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体
MoM_Kernels.EFIEOnRWGPWC — Method计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, 源四面体
MoM_Kernels.EFIEOnRWGPWC — Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体
MoM_Kernels.EFIEOnRWGPWC — Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体
MoM_Kernels.EFIEOnRWGRBF — Method计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体
MoM_Kernels.EFIEOnRWGRBF — Method计算三角形和六面体上相关的 18 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 hexas :: HexahedraInfo, 源六面体
MoM_Kernels.EFIEOnRWGSWG — Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
MoM_Kernels.EFIEOnRWGSWG — Method计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体
MoM_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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。
MoM_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' 注意为与两两作用不同,函数将主值积分分开返回以便它用
MoM_Kernels.EFIEOnTetraSWG — Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
MoM_Kernels.EFIEOnTetrasPWC — Method采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入: tetrat tetras : TetrahedraInfo, 场四面体和四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。
MoM_Kernels.EFIEOnTetrasSWG — Method计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体
MoM_Kernels.EFIEOnTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
MoM_Kernels.EFIEOnTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
MoM_Kernels.MFIEOnNearTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
MoM_Kernels.MFIEOnTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形
MoM_Kernels.MFIEOnTris — Method计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo
MoM_Kernels.RCSPlot — MethodRCS 绘图
MoM_Kernels.ZnearChunkMulIVec! — MethodZnearChunkMulIVec!(ZnearChunk, resultChunk, IVec)计算某一块的矩阵向量乘积
MoM_Kernels.adjoint_agg2HighLevel! — Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
MoM_Kernels.adjoint_agg2Level2! — Method从叶层聚合到第 '2' 层
MoM_Kernels.adjoint_aggOnBF! — Method在叶层从基函数向盒子聚合
MoM_Kernels.adjoint_disagg2KidLevel! — Method向低层解聚 tLevel :: 本层 kLevel :: 子层
MoM_Kernels.adjoint_disagg2LeafLevel! — Method解聚到叶层
MoM_Kernels.adjoint_disaggOnBF! — Method在叶层往测试基函数解聚
MoM_Kernels.adjoint_transOnLevel! — Method层内转移
MoM_Kernels.adjoint_transOnLevels! — Method各层内转移
MoM_Kernels.agg2HighLevel! — Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
MoM_Kernels.agg2HighLevel! — Method从子层聚合到本层 tLevel :: 本层 kLevel :: 子层
MoM_Kernels.agg2Level2! — Method从叶层聚合到第 '2' 层
MoM_Kernels.aggOnBF! — Method在叶层从基函数向盒子聚合
MoM_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。
MoM_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。
MoM_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。
MoM_Kernels.aggSBFOnLevel! — MethodaggSBFOnLevel!(aggSBF, disaggSBF, level, hexasInfo::AbstractVector{VT},
::Type{BFT}; setzero = true) where {VT<:HexahedraInfo, BFT<:RBF}计算某层采用 EFIE 时在六面体上的 RBF 基函数的辐射函数 aggSBF 、配置函数 disaggSBF。
MoM_Kernels.aggSBFOnLevel — MethodaggSBFOnLevel(level::LT, geosInfo::AbstractVector{VT},
bfsInfo::AbstractVector{BFT}) where {LT<:LevelInfo, VT<:VolumeCellType, BFT<:BasisFunctionType}计算某层采用 EFIE 时 SWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF。
MoM_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。
MoM_Kernels.aggSBFOnLevelCFIE — MethodaggSBFOnLevelCFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
bfsInfo) where {IT<:Integer, FT<:Real}计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF , 输入为层信息 level 、三角形信息 trianglesInfo 和基函数信息 bfsInfo。
MoM_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。
MoM_Kernels.aggSBFOnLevelEFIE — MethodaggSBFOnLevelEFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
bfsInfo) where {IT<:Integer, FT<:Real}计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF , 输入为层信息 level 、三角形信息 trianglesInfo 和基函数信息 bfsInfo。
MoM_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。
MoM_Kernels.aggSBFOnLevelMFIE — MethodaggSBFOnLevelMFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}},
bfsInfo::Vector{RWG{IT, FT}}) where {IT<:Integer, FT<:Real}计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF。
MoM_Kernels.anterpolate! — Method拉格朗日单步反插值
MoM_Kernels.anterpolate! — Method拉格朗日分步反插值
MoM_Kernels.anterpolate — Method拉格朗日单步反插值
MoM_Kernels.anterpolate — Method拉格朗日分步反插值
MoM_Kernels.calZfarI! — Method计算远区矩阵向量乘积
MoM_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 计算近场阻抗矩阵。
MoM_Kernels.calZnearCSC — MethodcalZnearCSC(level, geosInfo::Vector, bfsInfo::Vector)根据八叉树层信息 level 和几何信息 geosInfo 、基函数信息 bfsInfo 计算近场阻抗矩阵。
MoM_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 稀疏矩阵中。
MoM_Kernels.calZnearCSCEFIE! — Method采用 PWC 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 PWC 基函数计算四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 SWG 基函数计算网格元 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 RWG + RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 RWG + SWG 基函数计算 三角形 + 四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 RWG 基函数计算 EFIE 面积分(SIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 PWC + PWC 基函数计算 四面体 + 六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIE! — Method采用 RWG + PWC 基函数计算 三角形 + 四面体/六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCEFIEnew! — Method采用 RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.calZnearCSCMFIE! — Method采用 RWG 基函数计算 MFIE 面积分(SIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中
MoM_Kernels.caladjZfarI! — Method计算远区矩阵的伴随矩阵向量乘积
MoM_Kernels.calαTransOnLevel! — Method计算 level 层的转移因子, 转移因子只存在于远亲组,每层远亲组最多有 7^3 - 3^3 = 316种结果
MoM_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}\]
MoM_Kernels.convergencePlot — Method计算完成后绘制收敛曲线
MoM_Kernels.cooraInCoorb — Method计算一维坐标coora在坐标corrb中的位置
MoM_Kernels.disagg2KidLevel! — Method向低层解聚 tLevel :: 本层 kLevel :: 子层
MoM_Kernels.disagg2KidLevel! — Method向低层解聚 tLevel :: 本层 kLevel :: 子层
MoM_Kernels.disagg2LeafLevel! — Method解聚到叶层
MoM_Kernels.disaggOnBF! — Method在叶层往测试基函数解聚
MoM_Kernels.electricJCal — Method计算给定三角形面片位置 r 处的电流 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: r ::Vec3D{FT} ICoeff ::Vec3D{CT} 三角形上的三个基函数的计算得到的电流系数 triangleInfo ::TriangleInfo{IT, FT},三角形信息 输出值: Jtrir ::Complex{FT}, 三角形上加权后的电流
MoM_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}}, 三角形上加权后的电流
MoM_Kernels.excitationVectorCFIE! — Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
MoM_Kernels.excitationVectorCFIE — Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
MoM_Kernels.excitationVectorCFIE — Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
MoM_Kernels.excitationVectorEFIE! — Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量
MoM_Kernels.excitationVectorEFIE! — Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
MoM_Kernels.excitationVectorEFIE! — Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
MoM_Kernels.excitationVectorEFIE! — Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
MoM_Kernels.excitationVectorEFIE — Method计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息
MoM_Kernels.excitationVectorEFIE — Method计算平面波在给定六面体的六个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息
MoM_Kernels.excitationVectorEFIE — Method计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息
MoM_Kernels.excitationVectorEFIE — Method计算平面波在给定四面体的四个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息
MoM_Kernels.excitationVectorEFIE — Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
MoM_Kernels.excitationVectorEFIE — Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
MoM_Kernels.excitationVectorEFIE — Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量
MoM_Kernels.excitationVectorEFIE — Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
MoM_Kernels.excitationVectorEFIE — Method计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量
MoM_Kernels.excitationVectorMFIE! — Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
MoM_Kernels.excitationVectorMFIE — Method计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息
MoM_Kernels.excitationVectorMFIE — Method计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目
MoM_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}\]
MoM_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}\]
MoM_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}\]
MoM_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}\]
MoM_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 )
MoM_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⁻)]}
MoM_Kernels.farEPlot — MethodfarE 绘图
MoM_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ₙ) )
MoM_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ₙ) )
MoM_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ₙ) )
MoM_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ₙ) )
MoM_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这六个函数用于寻找盒子的子盒子区间内的比较函数,多重分派以实现不同数据类型的比较。
MoM_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}}, 六面体上的电流
MoM_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}}, 六面体上加权后的电流
MoM_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}}, 四面体上的电流
MoM_Kernels.geoElectricJCal — Method计算四面体上的电流。 分片常数基 SWG 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在四个基函数,因此 Jₜ = ∑ₜₙ₌₁⁴ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上加权后的电流
MoM_Kernels.geoElectricJCal — Method计算三角形面片上的加权电流。 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流
MoM_Kernels.getAggSBFOnLevel — Method根据积分方程类型计算基层聚合项
MoM_Kernels.getAggSBFOnLevel — Method根据积分方程类型计算基层聚合项
MoM_Kernels.getAggSBFOnLevel — Method根据积分方程类型计算基层聚合项
MoM_Kernels.getBfsCenter — Method计算基函数中心的数组,用于方便混合基函数使用时的情况
MoM_Kernels.getBfsCenter — Method计算基函数中心的数组,用于方便混合基函数使用时的情况
MoM_Kernels.getCubeIDsWithGeos — Method找到 geosInfo 所在的所有 cude id
MoM_Kernels.getExcitationVector — Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
MoM_Kernels.getExcitationVector — Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
MoM_Kernels.getExcitationVector — Method根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量
MoM_Kernels.getGeoIDsInCubeChunk — MethodgetGeoIDsInCubeChunk(cubes, chunkIndice::Tuple)
getGeoIDsInCubeChunk(cubes, ckunkIndice::UnitRange)获取 ckunkIndice 内的所有 cubes 的编号, 返回为 Tuple 形式以适应数组索引相关API
MoM_Kernels.getGeosInterval — MethodgetGeosInterval(geosInfo::T) where {T<:AbstractVector}
getGeosInterval(geosInfo::T) where {T<:OffsetVector}获取几何信息数组的区间,针对普通 Vector 和 OffsetVector 分别派发。
MoM_Kernels.getImpedanceMatAndExciteV — Method根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量
MoM_Kernels.getImpedanceMatAndExciteV — Method根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 bfsInfo:: 基函数信息 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量
MoM_Kernels.getImpedanceMatrix — Method根据几何信息与基函数数量,计算阻抗矩阵 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 返回: Zmat
MoM_Kernels.getImpedanceOpt — Method根据几何信息与基函数数量,计算阻抗矩阵算子 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元
MoM_Kernels.getImpedanceOptAndExciteVOctree — Method根据几何信息与基函数数量,计算阻抗矩阵算子和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元
MoM_Kernels.getLeafCubeL — Method六面体从网格平均尺寸设置整体的叶层盒子边长
MoM_Kernels.getLeafCubeL — Method四面体从网格平均尺寸设置整体的叶层盒子边长
MoM_Kernels.getLeafCubeL — Method三角形面网格直接设置为的叶层盒子边长
MoM_Kernels.getLeafCubeL — Method混合网格从第2类里的网格平均尺寸设置整体的叶层盒子边长
MoM_Kernels.getMeshDataSaveGeosInterval — MethodgetMeshDataSaveGeosInterval(filename[; meshUnit=:mm, dir = "temp/GeosInfo"])在获取网格数据 meshData 和介电参数 εᵣs 的同时保存网格数据 meshData 中各类型网格的区间。
MoM_Kernels.getNeiFarNeighborCubeIDs — MethodgetNeiFarNeighborCubeIDs(cubes, chunkIndice::Tuple)获取 ckunkIndice 内的所有 cubes 的 远亲盒子 序号, 返回为 Tuple 形式以适应数组索引相关 API。
MoM_Kernels.getNeighborCubeIDs — MethodgetNeighborCubeIDs(cubes, chunkIndice::Tuple)
getNeighborCubeIDs(cubes, chunkIndice::AbstractVector)获取 ckunkIndice 内的所有 cubes 的 邻盒子 编号, 返回为 Tuple 形式以适应数组索引相关API
MoM_Kernels.getOctreeAndReOrderBFs! — Method根据基函数中心位置构建八叉树,并重排基函数信息、将新基函数 ID 赋值给几何元信息数组 返回值: nLevels:: 层数 octree:: 得到的八叉树 leafCubeEdgel:: 控制叶层盒子大小 isDistribute:: 控制是否为分布式计算
MoM_Kernels.get_Interpolation_Method — Methodget_Interpolation_Method(method::Symbol)
get_Interpolation_Method(method::Union{Val{:Lagrange2Step}, Val{:Lagrange1Step}})获取插值算法。
MoM_Kernels.get_chunks_minmax_col — Methodget_chunks_minmax_col(matchunks)MoM_Kernels.get_leafCubeSize — Method获取叶层盒子边长
MoM_Kernels.get_partition — Methodget_partition(nCubes, sizePoles, np)根据给定的盒子数 nCubes 、多极子数 sizePoles、进程数 np 返回该层辐射函数的三个维度的划分数量。
MoM_Kernels.get_partition_map — Methodget_partition_map(partition, kcubeIndices)根据 partition 计算在盒子方向本层所有 rank 到子层所有 rank 的 map 。
MoM_Kernels.gq_xsws_on_sphere — Methodgq_xsws_on_sphere(L)
计算单位球面 2(L+1) 阶高斯求积的采样点坐标权重TBW
MoM_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}.\]
MoM_Kernels.iluPrecondition — MethodiluPrecondition(A, level; τ = 1e-3)从 (IncompleteLU.jl)[https://github.com/haampie/IncompleteLU.jl.git] 包实现ilu, 再次封装是因为要加入一些判断
MoM_Kernels.impedancemat4CFIE4PEC — Method本函数用于计算PEC的CFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4EFIE4PEC! — Method本函数用于在有矩阵的情况下计算PEC的EFIE阻抗矩阵。 输入信息: Zmat trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4EFIE4PEC — Method本函数用于计算PEC的EFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4MFIE4PEC — Method本函数用于计算PEC的MFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4RWGPWC! — MethodRWG + PWC 部分的阻抗矩阵
MoM_Kernels.impedancemat4RWGPWC! — MethodRWG + PWC 部分的阻抗矩阵
MoM_Kernels.impedancemat4RWGRBF! — MethodRWG + RBF 部分的阻抗矩阵
MoM_Kernels.impedancemat4RWGSWG! — MethodRWG + SWG 部分的阻抗矩阵
MoM_Kernels.impedancemat4VIE! — Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
MoM_Kernels.impedancemat4VIE! — Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
MoM_Kernels.impedancemat4VIE! — Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4VIE! — Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
MoM_Kernels.impedancemat4VIE! — Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
MoM_Kernels.impedancemat4VIE! — Method本函数用于计算介质的 EFIE 阻抗矩阵。 输入信息: Zmat : 已初始化的阻抗矩阵 tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4VIE — Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
MoM_Kernels.impedancemat4VIE — Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4VIE — Method本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵
MoM_Kernels.impedancemat4VIE — Method本函数用于计算介质的EFIE阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4VIE — Method本函数用于计算混合网格(四面体+六面体)下介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: geosInfo : 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵
MoM_Kernels.impedancemat4VSIE — Method计算VSIE的矩阵
MoM_Kernels.impedancemat4VSIERWGPWC — Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4VSIERWGRBF — Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.impedancemat4VSIERWGSWG — Method本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵
注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确
MoM_Kernels.initialVMulZchunks! — MethodinitialVMulZchunks!(Z::T) where{T<:ZnearChunksStruct}初始化 阻抗矩阵 右乘 向量 乘积的 分布式数组
MoM_Kernels.initialZchunksMulV! — MethodinitialZchunksMulV!(Z::T) where{T<:ZnearChunksStruct}初始化 阻抗矩阵 左乘 向量 乘积的 分布式数组。
MoM_Kernels.initialZnearCSC — MethodinitialZnearCSC(level, nbf::Int)根据八叉树层信息 level 初始化近场阻抗矩阵。
MoM_Kernels.initialZnearCSR — MethodinitialZnearCSR(level, nbf::Int)根据八叉树层信息 level 初始化近场阻抗矩阵,用 transpose 实现 CSR 压缩稀疏行。
MoM_Kernels.initialZnearChunks — MethodinitialZnearChunks(cube, cubes::AbstractVector; CT = Complex{Precision.FT})根据八叉树某个盒子 cube 信息初始化 cube 对应的近场矩阵元块。
MoM_Kernels.inputParameters — MethodinputParameters(;args...)用于输入仿真参数,并修改奇异性处理中频率相关常量。 详见 [MoM_Basics.inputBasicParameters] 和 modiSingularityRelatedConsts!。
MoM_Kernels.integral1DXW — Method计算分别采用高斯求积、中点求积计算 θ,ϕ 方向的采样点的坐标、权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 Nsample::IT, 采样点数 mod::Symbol, 模式,接受 :uni, 均值积分 :glq, 高斯-勒让德积分 两种模式
MoM_Kernels.interpolate! — Method拉格朗日单步插值
MoM_Kernels.interpolate! — Method拉格朗日分步插值
MoM_Kernels.interpolate — Method拉格朗日单步插值
MoM_Kernels.interpolate — Method拉格朗日分步插值
MoM_Kernels.interpolationCSCMatCal — Method采用局部插值、两步插值法,计算局部坐标到全局坐标的稀疏插值矩阵,Julia数据存储为列主的,因此使用 压缩稀疏列(Compressed Sparse Column, CSC) pLevelPoles::GLPolesInfo{FT}, 父层多极子信息 tLevelPoles::GLPolesInfo{FT}, 本层多极子信息
MoM_Kernels.iterSolverSet — Method迭代求解器选择
MoM_Kernels.levelIntegralInfoCal — Method计算八叉树的积分相关信息,包括截断项、各层积分点和求积权重数据 输入: levelCubeEdgel::FT, 层盒子边长, 一般叶层为0.25λ,其中 λ 为区域局部波长。 返回值 L ::IT, 层 截断项 levelsPoles ::Vector{GLPolesInfo{FT}},从叶层到第 “2” 层的角谱空间采样信息
MoM_Kernels.loadCurrent — Method读取电流系数
MoM_Kernels.loadGeoInterval — Methodset_geosInterval!(fn)载入文件 fn 读取网格数据区间。
MoM_Kernels.memoryAllocationOnLevels! — Method预分配各层上的聚合项、解聚项
MoM_Kernels.modiSingularityRelatedConsts! — Method用于输入参数(特指频率)改变时的更改相关常数项
MoM_Kernels.octreeXWNCal — Method计算各层八叉树求积坐标、求积权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 nlevels::IT, 八叉树叶层ID mod::Symbol, 模式,接受 :uni, 均值积分(ϕ方向) :glq, 高斯-勒让德积分(θ方向) 两种模式
MoM_Kernels.pickCycleVec — Method根据循环向量 cycleVec 的周期性索引超出上下界的 index 对应的值
MoM_Kernels.pickθ — Method利用 θ 在极点附近的对称性计算索引超出上下界的 θ 值
MoM_Kernels.pickϕ — Method利用 ϕ 的周期性索引超出上下界的 ϕ 值
MoM_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ₙ) )
MoM_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ₙ) )
MoM_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ₙ) )
MoM_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ₙ) )
MoM_Kernels.raditionalIntegralNθϕCal — Method在球坐标为r̂θϕ处计算辐射积分,采用 RBF 基函数时,六面体上没有统一的电流值 N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dV)
MoM_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ₙ) )
MoM_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ₙ) )
MoM_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ₙ) )
MoM_Kernels.reOrderBasisFunctionAndGeoInfo! — Method根据按八叉树重新排序的id重排基函数信息
MoM_Kernels.reOrderBasisFunctionAndGeoInfo! — Method根据按八叉树重新排序的id重排基函数信息,此函数适用于 PWC 基函数的情况
MoM_Kernels.reOrderBasisFunctionAndGeoInfo! — Method根据按八叉树重新排序的id重排基函数信息
MoM_Kernels.reOrderCubeID! — Method根据排序后的新id重新排列子层盒子以及盒子的邻盒子信息,以将同一个父盒子层的盒子相邻排列,这样有利于计算 更新的量:父层盒子的kidsInterval, 本层的盒子顺序,本层盒子的邻盒子id
MoM_Kernels.record_memorys — Method展示
MoM_Kernels.restore_infos — Methodrestore_infos()
记录各部分内存和各阶段计算时间。TBW
MoM_Kernels.saveCubes — MethodsaveCubes(cubes[, nchunk = ParallelParams.nprocs; name, dir="", kcubeIndices = nothing])将盒子 cubes 分为 nchunk 块以 name 为名保存在 dir中。kcubeIndices 同于计算不同分区间重复的部分。
MoM_Kernels.saveCurrent — Method保存电流系数
MoM_Kernels.saveGeoInterval — MethodsaveGeoInterval(meshData[; dir = "temp/GeosInfo"])保存网格数据 meshData 中各类型网格的区间。
MoM_Kernels.saveGeosInfoChunks — MethodsaveGeosInfoChunks(geos::AbstractVector, cubes, name::AbstractString, nchunk::Int[; dir = "", cubes_ChunksIndices = sizeChunks2idxs(length(cubes), nchunk)])将几何信息 geos 根据分块数量 nchunk 和在 cubes 中的分布进行分块并保存。
MoM_Kernels.saveLevel — FunctionsaveLevel(level[, np = ParallelParams.nprocs; dir="", kcubeIndices = nothing])将层 level 信息保存,其中的盒子信息由 get_partition 计算的分块信息部分保存。
MoM_Kernels.saveOctree — MethodsaveOctree(octree[; dir=""])将八叉树 octree 保存在 dir 中。
MoM_Kernels.saveVec2Chunks — MethodsaveVec2Chunks(y::AbstractVector, name::AbstractString, indices[; dir = "", showpmeter = false, message = ""])把向量 y 以 name 按索引 indices 块保存在 dir 文件夹中。
MoM_Kernels.saveVec2Chunks — MethodsaveVec2Chunks(y::AbstractVector, name::AbstractString, nchunk::Int[; dir = ""])把向量 y 以 name 分为 nchunk 块保存在 dir 文件夹中。
MoM_Kernels.searchNearCubes — Method用于寻找邻盒子的函数 输入 cubesID3D::Matrix{Int},(n×3)盒子在本层的三维坐标 levelID::Integer 层编号,(定义大盒子为(“0” 层),叶层为第“n”层
MoM_Kernels.setBFInterval! — Method根据已经排序好的层的盒子信息,从叶层到顶层更新盒子包含的基函数区间
MoM_Kernels.setBigCube — Method计算包围目标的大盒子信息 输入: nodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标,或者为构成网格的所有点 leafCubeEdgel::FT,叶层盒子边长,用于计算总层数和大盒子的坐标信息
MoM_Kernels.setGeoIDsInLeafCubes! — Method用于设置给定层的盒子中包含的几何体,采用常数基函数时,同一个盒子不会出现重复值。
MoM_Kernels.setGeoIDsInLeafCubes! — Method用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。
MoM_Kernels.setGeoIDsInLeafCubes! — Method用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。
MoM_Kernels.setKidLevelFarNeighbors! — Method寻找子层的远亲盒子 输入:: thisLevel::LevelInfo{IT, FT, IPT}, 本层信息 kidLevel::LevelInfo{IT, FT, IPT}, 子层信息
MoM_Kernels.setLevelInfo! — Method非叶层LevelInfo的构造函数,输入为空间三维坐标数组 levelID::计算层的id leafnodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标 cubeEdgel::FT,本层盒子边长
MoM_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 层类MoM_Kernels.setLevelTransFactor! — Method计算 第“2”层 到 叶 层的转移因子, 转移因子只存在于远亲组,每层远亲组最多有 7^3 - 3^3 = 316种结果
MoM_Kernels.setLevelsCubesKidsIn8! — Method计算(nLevel-1)-2 层每层的非空盒子的非空子盒子在其8个子盒子中的位置
MoM_Kernels.setLevelsShiftFactor! — Method本函数用于给输入的本(level)层的盒子与其子盒子之间计算相移因子, 由盒子排列的规律性和相移因子的对称性,可知: 只需要计算8个相移因子,即可用于所有盒子到其子盒子的相移, 且这八个盒子关于原点对称的两两之间的相移因子为共轭关系 计算完成直接保存在 level 不再返回
MoM_Kernels.setVSC₁₂₃ⁿ! — MethodsetVSC₁₂₃ⁿ!()计算体奇异性三个系数。
MoM_Kernels.set_Interpolation_Method! — Method设置插值算法
MoM_Kernels.set_geosInterval! — Methodset_geosInterval!(fn)通过文件 fn 设置网格数据区间。
MoM_Kernels.set_leafCubeSize! — Method设置叶层盒子边长
MoM_Kernels.set_nprocs! — Methodset_nprocs!([;nprocs=1, np=nprocs])设置并行核心数量为 nprocs 。
MoM_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}$ 的解析值。
MoM_Kernels.singularF1 — MethodsingularF1(a::FT, b::FT, c::FT) where{FT<:AbstractFloat}计算边长为a, b, c的三角形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。
MoM_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 即基函数自作用的情况。
MoM_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 即同一三角形的不同基函数作用的情况。
MoM_Kernels.sizeChunks2cuts — MethodsizeChunks2cuts(Asize, chunks)
sizeChunks2cuts(Asize::Int, chunks)
sizeChunks2cuts(Asize, chunks::Int)
sizeChunks2cuts(Asize::Int, chunks::Int)将数组大小 Asize 按 chunks 进行分块。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
MoM_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 同步。
MoM_Kernels.sizeChunksCuts2indices — MethodsizeChunksCuts2indices(Asize, nchunk, cuts::Tuple)
sizeChunksCuts2indices(Asize, nchunk, cuts::Vector{I}) where{I<:Integer}根据数组大小 Asize 分块数量 nchunk 以及各块索引区间 cuts 计算各块的索引。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
MoM_Kernels.slicedim2bounds — Methodslicedim2bounds(sz::Int, nc::Int)将区间 1:sz 划分为 nc 个区间并返回区间上下界。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
MoM_Kernels.slicedim2partition — Methodslicedim2bounds(dims, nc::Int)将区间 dims 划分为 nc 个区间并返回区间上下界。 从 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。
MoM_Kernels.solve! — Method矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型
MoM_Kernels.solve — Method矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型
MoM_Kernels.sparseApproximateInversePl — MethodsparseApproximateInversePl(ZnearChunks::ZnearChunksStruct{CT}, level; nbf = 0) where {FT<:Real, CT<:Complex{FT}}根据块状近场阻抗矩阵 ZnearChunks 和计算阻抗矩阵层的盒子信息 cubes 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
MoM_Kernels.sparseApproximateInversePl — MethodsparseApproximateInversePl(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}根据近场阻抗矩阵 Znear 和计算阻抗矩阵层的盒子信息 cubes 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
MoM_Kernels.sparseApproximateInversePl — MethodsparseApproximateInversePl(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}根据近场阻抗矩阵 Znear 和八叉树 octree 叶层计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
MoM_Kernels.sparseApproximateInversePl — MethodsparseApproximateInversePl(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}根据近场阻抗矩阵 Znear 和计算阻抗矩阵层信息 level 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
MoM_Kernels.sparseApproximateInversePr — MethodsparseApproximateInversePr(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}根据近场阻抗矩阵 Znear 和计算阻抗矩阵层的盒子信息 cubes 计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
MoM_Kernels.sparseApproximateInversePr — MethodsparseApproximateInversePr(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}根据近场阻抗矩阵 Znear 和八叉树 octree 叶层计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
MoM_Kernels.sparseApproximateInversePr — MethodsparseApproximateInversePr(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}根据近场阻抗矩阵 Znear 和计算阻抗矩阵层信息 level 计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。
MoM_Kernels.spherical_h1l — Method第一类球汉克尔函数,使用GSL.jl(GNU Scientific Library),适用于 l 为整数,x 为浮点数时算的更快
MoM_Kernels.spherical_h1l — Method第一类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用
MoM_Kernels.spherical_h1l_array — Method一次计算 0:lmax 的多阶第一类球汉克尔函数, 保存在数组里
MoM_Kernels.spherical_h1l_array — Method一次计算 0:lmax 的多阶第一类球汉克尔函数, 保存在数组里
MoM_Kernels.spherical_h2l — Method第二类球汉克尔函数,使用GSL.jl(GNU Scientific Library),,适用于 l 为整数,x 为浮点数时算的更快
MoM_Kernels.spherical_h2l — Method第二类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用
MoM_Kernels.spherical_h2l_array — Method一次计算 0:lmax 的多阶第二类球汉克尔函数, 保存在数组里
MoM_Kernels.spherical_h2l_array — Method一次计算 0:lmax 的多阶第二类球汉克尔函数, 保存在数组里
MoM_Kernels.transOnLevel! — Method层内转移
MoM_Kernels.transOnLevels! — Method各层内转移
MoM_Kernels.truncationLCal — Method该函数计算八叉树各层截断项数 输入为本层最小盒子的边长
MoM_Kernels.truncationLCal — MethodtruncationLCal(;rel_l) where {FT<:Real}该函数计算八叉树各层截断项数 输入为相对波长
MoM_Kernels.use_CSR — Methoduse_CSR()
use_CSC()设置近场阻抗矩阵是否采用CSR(CSC转置)。
MoM_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}\]
MoM_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}\]
MoM_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}\]
MoM_Kernels.writeZtt! — Method为适应类型变化而将写入部分单独封装