From 435066977165998b8775e95e53e1b654ac2e6179 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Thu, 2 May 2024 17:44:53 +0000 Subject: [PATCH] build based on e8adb0d --- dev/.documenter-siteinfo.json | 2 +- dev/api/index.html | 90 +++++++++++++++++------------------ dev/index.html | 2 +- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index ace4a32..932b59d 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.3","generation_timestamp":"2024-05-02T17:14:07","documenter_version":"1.4.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.3","generation_timestamp":"2024-05-02T17:44:50","documenter_version":"1.4.1"}} \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index 1d55c34..9e52f21 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -1,12 +1,12 @@ -API · MoM_Kernels.jl
MoM_Kernels.VSC₃ⁿConstant

这一项面、体奇异性都用到了,处理对格林函数梯度求积时的奇异性时用到的。

source
MoM_Kernels.CubeInfoType
CubeInfo{IT<:Integer, FT<:Real}

盒子信息,包括:

kidsInterval    ::UnitRange{IT}     子层盒子id的区间
+API · MoM_Kernels.jl
MoM_Kernels.VSC₃ⁿConstant

这一项面、体奇异性都用到了,处理对格林函数梯度求积时的奇异性时用到的。

source
MoM_Kernels.CubeInfoType
CubeInfo{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}        本盒子在本层的三维全局坐标
source
MoM_Kernels.GLPolesInfoType

多极子的极信息,即角谱空间采样信息 Xθs::Vector{FT},θ方向的采样点坐标(rad单位),高斯-勒让德求积 Xϕs::Vector{FT},ϕ方向的采样点坐标(rad单位),均值求积 Wθϕs::Vector{FT},采样点权重,用于积分时使用,在MLFMA中直接乘在转移项

source
MoM_Kernels.LagrangeInterp1StepInfoType

保存总的 稀疏插值矩阵,用于单步插值,根据稀疏度决定保存稀疏阵或是稠密阵 θϕCSC ::AbstractMatrix{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 θϕCSCT ::AbstractMatrix{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值

source
MoM_Kernels.LagrangeInterpInfoType

保存 θ, ϕ 两个方向的稀疏插值矩阵, θ方向为 (npXθs, ntXθs) 稀疏矩阵, 用于左乘本层多极子矩阵,在 θ 方向插值 ϕ方向为 (ntXϕs, ntXϕs) 稀疏矩阵, 用于右乘本层多极子矩阵,在 ϕ 方向插值 θCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 ϕCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值

source
MoM_Kernels.LevelInfoType
LevelInfo{IT<:Integer, FT<:Real, IPT} <: AbstractLevel

层信息:

ID          ::IT                        层序号
+center          ::MVec3D{FT}        本盒子在本层的三维全局坐标
source
MoM_Kernels.GLPolesInfoType

多极子的极信息,即角谱空间采样信息 Xθs::Vector{FT},θ方向的采样点坐标(rad单位),高斯-勒让德求积 Xϕs::Vector{FT},ϕ方向的采样点坐标(rad单位),均值求积 Wθϕs::Vector{FT},采样点权重,用于积分时使用,在MLFMA中直接乘在转移项

source
MoM_Kernels.LagrangeInterp1StepInfoType

保存总的 稀疏插值矩阵,用于单步插值,根据稀疏度决定保存稀疏阵或是稠密阵 θϕCSC ::AbstractMatrix{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 θϕCSCT ::AbstractMatrix{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值

source
MoM_Kernels.LagrangeInterpInfoType

保存 θ, ϕ 两个方向的稀疏插值矩阵, θ方向为 (npXθs, ntXθs) 稀疏矩阵, 用于左乘本层多极子矩阵,在 θ 方向插值 ϕ方向为 (ntXϕs, ntXϕs) 稀疏矩阵, 用于右乘本层多极子矩阵,在 ϕ 方向插值 θCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, θ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 θ 方向反插值 ϕCSCT ::SparseMatrixCSC{FT} 稀疏矩阵, ϕ 方向插值矩阵的转置,用于左乘本层多极子矩阵,在 ϕ 方向反插值

source
MoM_Kernels.LevelInfoType
LevelInfo{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}              远亲盒子的相对位置到其转移因子在所有转移因子数组的索引
source
MoM_Kernels.MatrixChunkType
MatrixChunk{T<:Number} <:AbstractMatrix{T}

创建近场矩阵块结构体,所包含的数据为某一盒子内的近场矩阵元。

m::Int                          行数
+αTransIndex ::Array{IT, 2}              远亲盒子的相对位置到其转移因子在所有转移因子数组的索引
source
MoM_Kernels.MatrixChunkType
MatrixChunk{T<:Number} <:AbstractMatrix{T}

创建近场矩阵块结构体,所包含的数据为某一盒子内的近场矩阵元。

m::Int                          行数
 n::Int                          列数
 mat::Matrix{T}                  矩阵
 rowIndices::AbstractVector{Int} 行索引
 colIndices::AbstractVector{Int} 列索引
 lmul::AbstractVector{T}         用于左乘其它矩阵、向量的临时数组,大小与列数相同
-rmul::AbstractVector{T}         用于右乘其它矩阵、向量的临时数组,大小与行数相同
source
MoM_Kernels.MatrixChunkMethod
MatrixChunk{T}(rowIndices, colIndices) where {T<:Number}

用行、列索引 rowIndices, colIndices 初始化矩阵块。

source
MoM_Kernels.OctreeInfoType

八叉树类 nLevels ::Integer, 叶层ID(定义大盒子为(“0” 层),叶层为第“n”层,nLevels取“n”的值) leafCubeEdgel::FT,叶层盒子边长 bigCubeLowerCoor::MVec3D{FT},第0层盒子的角坐标 levels ::Dict{Int, LevelInfo},保存各层信息的字典

source
MoM_Kernels.PartitionedVectorType
PartitionedVector{T} <: AbstractVector{T}

用于保存向量块的类,同时在块内保存一些其他块的数据。

size::Int                           原始 Vector 的大小
+rmul::AbstractVector{T}         用于右乘其它矩阵、向量的临时数组,大小与行数相同
source
MoM_Kernels.MatrixChunkMethod
MatrixChunk{T}(rowIndices, colIndices) where {T<:Number}

用行、列索引 rowIndices, colIndices 初始化矩阵块。

source
MoM_Kernels.OctreeInfoType

八叉树类 nLevels ::Integer, 叶层ID(定义大盒子为(“0” 层),叶层为第“n”层,nLevels取“n”的值) leafCubeEdgel::FT,叶层盒子边长 bigCubeLowerCoor::MVec3D{FT},第0层盒子的角坐标 levels ::Dict{Int, LevelInfo},保存各层信息的字典

source
MoM_Kernels.PartitionedVectorType
PartitionedVector{T} <: AbstractVector{T}

用于保存向量块的类,同时在块内保存一些其他块的数据。

size::Int                           原始 Vector 的大小
 data::OffsetVector{T, Vector{T}}    本地保存的数据
 indices::UnitRange{Int}             本地保存数据的索引区间
 ghostdata::SparseVector{T, Int}     用到的其它数据
-ghostindices::Vector{Int}           用到的其它数据的索引区间
source
MoM_Kernels.ZnearChunksStructType

创建近场矩阵结构体,所包含的数据为所有盒子内的近场矩阵元,多线程版本

m::Int                  行数
+ghostindices::Vector{Int}           用到的其它数据的索引区间
source
MoM_Kernels.ZnearChunksStructType

创建近场矩阵结构体,所包含的数据为所有盒子内的近场矩阵元,多线程版本

m::Int                  行数
 n::Int                  列数
 nChunks::Int            矩阵块儿数
 chunks::Vector{ZnearChunksStruct{T}}    矩阵
 lmul::Vector{T}         用于左乘其它矩阵、向量的临时数组,大小与列数相同
 lmuld::Vector{T}        用于左乘其它矩阵、向量的临时分布式数组,大小与列数相同,默认不分配
 rmul::Vector{T}         用于右乘其它矩阵、向量的临时数组,大小与行数相同
-lmuld::Vector{T}        用于左乘其它矩阵、向量的临时分布式数组,大小与列数相同,默认不分配
source
Base.:*Method
*(mat::AbstractMatrix, Z::T) where{T<:MatrixChunk}

实现右乘其它矩阵,默认矩阵块较小,不在本阶段并行。

source
Base.:*Method
*(x::AbstractVector, Z::T) where{T<:MatrixChunk}

实现矩阵块 Z 右乘其它向量,默认矩阵块较小,不在本阶段并行。

source
Base.:*Method
Base.:*(Z::ZNEARCHUNK{T}, mat::AbstractMatrix) where{T<:Number}

实现左乘其它矩阵

source
Base.:*Method
*(Z::T, mat::AbstractMatrix) where{T<:MatrixChunk}

实现矩阵块 Z 左乘其它矩阵,默认矩阵块较小,不在本阶段并行。

source
Base.:*Method
Base.:*(Z::T, x::AbstractVector) where{T<:MatrixChunk}

实现左乘其它向量,默认矩阵块较小,因此不在本阶段并行

source
Base.:*Method
Base.:*(Z::T, x::AbstractVector) where{T<:ZnearChunksStruct}

实现左乘其它向量

source
Base.eltypeMethod
eltype(opt::ILUFactorization)

提供 ilu 的算子 eltype 函数。

source
Base.getindexMethod
Base.getindex(A::PartitionedVector, i::I) where {I<:Integer}

重载 PartitionedVector 类型的 getindex 函数。

source
Base.getindexMethod
getindex(Z::T, i1::Int, i2::Int) where{T<:MatrixChunk}

重载 getindex 函数。

source
Base.setindex!Method
setindex!(Z::T, x, i1::Int, i2::Int) where{T<:MatrixChunk}

重载 setindex! 函数

source
Base.setindex!Method
setindex!(Z::T, x, i1::Int, i2::Int) where{T<:ZNEARCHUNK}

重载 setindex! 函数

source
Base.sizeMethod
size(operator::T) where {T<:ILUFactorization}

提供 ilu 的算子 size 函数。

source
LinearAlgebra.ldiv!Method
ldiv!(M::SAIChunkPrec{T}, x::AbstractVector) where {T}
-ldiv!(y::AbstractVector, M::SAIChunkPrec{T}, x::AbstractVector) where {T}

实现 x .= M * xy .= M * x

source
LinearAlgebra.ldiv!Method
ldiv!(M::SAIPrec{T}, x::AbstractVector) where {T}
-ldiv!(y::AbstractVector, M::SAIPrec{T}, x::AbstractVector) where {T}

实现 x .= M * xy .= M * x

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+lmuld::Vector{T}        用于左乘其它矩阵、向量的临时分布式数组,大小与列数相同,默认不分配
source
Base.:*Method
*(mat::AbstractMatrix, Z::T) where{T<:MatrixChunk}

实现右乘其它矩阵,默认矩阵块较小,不在本阶段并行。

source
Base.:*Method
*(x::AbstractVector, Z::T) where{T<:MatrixChunk}

实现矩阵块 Z 右乘其它向量,默认矩阵块较小,不在本阶段并行。

source
Base.:*Method
Base.:*(Z::ZNEARCHUNK{T}, mat::AbstractMatrix) where{T<:Number}

实现左乘其它矩阵

source
Base.:*Method
*(Z::T, mat::AbstractMatrix) where{T<:MatrixChunk}

实现矩阵块 Z 左乘其它矩阵,默认矩阵块较小,不在本阶段并行。

source
Base.:*Method
Base.:*(Z::T, x::AbstractVector) where{T<:MatrixChunk}

实现左乘其它向量,默认矩阵块较小,因此不在本阶段并行

source
Base.:*Method
Base.:*(Z::T, x::AbstractVector) where{T<:ZnearChunksStruct}

实现左乘其它向量

source
Base.eltypeMethod
eltype(opt::ILUFactorization)

提供 ilu 的算子 eltype 函数。

source
Base.getindexMethod
Base.getindex(A::PartitionedVector, i::I) where {I<:Integer}

重载 PartitionedVector 类型的 getindex 函数。

source
Base.getindexMethod
getindex(Z::T, i1::Int, i2::Int) where{T<:MatrixChunk}

重载 getindex 函数。

source
Base.setindex!Method
setindex!(Z::T, x, i1::Int, i2::Int) where{T<:MatrixChunk}

重载 setindex! 函数

source
Base.setindex!Method
setindex!(Z::T, x, i1::Int, i2::Int) where{T<:ZNEARCHUNK}

重载 setindex! 函数

source
Base.sizeMethod
size(operator::T) where {T<:ILUFactorization}

提供 ilu 的算子 size 函数。

source
LinearAlgebra.ldiv!Method
ldiv!(M::SAIChunkPrec{T}, x::AbstractVector) where {T}
+ldiv!(y::AbstractVector, M::SAIChunkPrec{T}, x::AbstractVector) where {T}

实现 x .= M * xy .= M * x

source
LinearAlgebra.ldiv!Method
ldiv!(M::SAIPrec{T}, x::AbstractVector) where {T}
+ldiv!(y::AbstractVector, M::SAIPrec{T}, x::AbstractVector) where {T}

实现 x .= M * xy .= M * x

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
 
-重载以实现矩阵向量乘积计算

TBW

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+重载以实现矩阵向量乘积计算

TBW

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
 
-重载以实现矩阵向量乘积计算

TBW

source
LinearAlgebra.mul!Method
mul!(y, Z::T, x::AbstractVector) where{T<:MatrixChunk}

实现矩阵块 Z 的矩阵向量乘积计算。

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+重载以实现矩阵向量乘积计算

TBW

source
LinearAlgebra.mul!Method
mul!(y, Z::T, x::AbstractVector) where{T<:MatrixChunk}

实现矩阵块 Z 的矩阵向量乘积计算。

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
 
-重载以实现矩阵向量乘积计算

TBW

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
+重载以实现矩阵向量乘积计算

TBW

source
LinearAlgebra.mul!Method
LinearAlgebra.mul!(y, Zopt::MLFMAIterator, x)
 
-重载以实现矩阵向量乘积计算

TBW

source
MoM_Kernels.CFIEOnNearTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.CFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.CFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo

source
MoM_Kernels.EFIEOnHexaPWCMethod

采用 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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。

source
MoM_Kernels.EFIEOnHexaPWCSepPVMethod

采用 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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。

source
MoM_Kernels.EFIEOnHexaRBFMethod

计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入 hexat : HexahedraInfo, 场六面体和源六面体

source
MoM_Kernels.EFIEOnHexaTetraPWCMethod

采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat::HexahedraInfo, 场六面体 tetras::TetrahedraInfo 源四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnHexaTetraPWCMethod

采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnHexasPWCMethod

采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnHexasRBFMethod

计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体

source
MoM_Kernels.EFIEOnNearHexaTetraPWCMethod

采用 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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearHexaTetraPWCMethod

采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearHexasPWCMethod

采用 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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearHexasRBFMethod

计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合但相隔较近的情况,输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, TetrahedraInfo, 源四面体、四面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体

source
MoM_Kernels.EFIEOnNearRWGRBFMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnNearRWGRBFMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnNearRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnNearRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnNearTetrasPWCMethod

采用 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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearTetrasSWGMethod

计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合但相隔较近的情况,输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体

source
MoM_Kernels.EFIEOnNearTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, 源四面体

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体

source
MoM_Kernels.EFIEOnRWGRBFMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnRWGRBFMethod

计算三角形和六面体上相关的 18 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 hexas :: HexahedraInfo, 源六面体

source
MoM_Kernels.EFIEOnRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnTetraPWCMethod

采用 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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。

source
MoM_Kernels.EFIEOnTetraPWCSepPVMethod

采用 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' 注意为与两两作用不同,函数将主值积分分开返回以便它用

source
MoM_Kernels.EFIEOnTetraSWGMethod

计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体

source
MoM_Kernels.EFIEOnTetrasPWCMethod

采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入: tetrat tetras : TetrahedraInfo, 场四面体和四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnTetrasSWGMethod

计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体

source
MoM_Kernels.EFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.EFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo

source
MoM_Kernels.MFIEOnNearTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.MFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.MFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(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

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(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

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(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

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(aggSBF, disaggSBF, level, hexasInfo::AbstractVector{VT}, 
-::Type{BFT}; setzero = true) where {VT<:HexahedraInfo, BFT<:RBF}

计算某层采用 EFIE 时在六面体上的 RBF 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelMethod
aggSBFOnLevel(level::LT, geosInfo::AbstractVector{VT}, 
-bfsInfo::AbstractVector{BFT}) where {LT<:LevelInfo, VT<:VolumeCellType, BFT<:BasisFunctionType}

计算某层采用 EFIE 时 SWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelCFIE!Method
aggSBFOnLevelCFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}

计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelCFIEMethod
aggSBFOnLevelCFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
-bfsInfo) where {IT<:Integer, FT<:Real}

计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF , 输入为层信息 level 、三角形信息 trianglesInfo 和基函数信息 bfsInfo

source
MoM_Kernels.aggSBFOnLevelEFIE!Method
aggSBFOnLevelEFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}

计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelEFIEMethod
aggSBFOnLevelEFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
-bfsInfo) where {IT<:Integer, FT<:Real}

计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF , 输入为层信息 level 、三角形信息 trianglesInfo 和基函数信息 bfsInfo

source
MoM_Kernels.aggSBFOnLevelMFIE!Method
aggSBFOnLevelMFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
-::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}

计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelMFIEMethod
aggSBFOnLevelMFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
-bfsInfo::Vector{RWG{IT, FT}}) where {IT<:Integer, FT<:Real}

计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.CFIEOnNearTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.CFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.CFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo

source
MoM_Kernels.EFIEOnHexaPWCMethod

采用 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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。

source
MoM_Kernels.EFIEOnHexaPWCSepPVMethod

采用 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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。

source
MoM_Kernels.EFIEOnHexaRBFMethod

计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体重合的情况,因此输入有一个六面体信息类型实例 输入 hexat : HexahedraInfo, 场六面体和源六面体

source
MoM_Kernels.EFIEOnHexaTetraPWCMethod

采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat::HexahedraInfo, 场六面体 tetras::TetrahedraInfo 源四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnHexaTetraPWCMethod

采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnHexasPWCMethod

采用 PWC 基函数 计算六面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: hexat hexas : HexahedraInfo, 场六面体和六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnHexasRBFMethod

计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体

source
MoM_Kernels.EFIEOnNearHexaTetraPWCMethod

采用 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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearHexaTetraPWCMethod

采用 PWC 基函数 计算六面体和四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况,因此输入有两个六面体信息类型实例 输入: tetrat::TetrahedraInfo 场四面体 hexas::HexahedraInfo, 源六面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearHexasPWCMethod

采用 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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearHexasRBFMethod

计算六面体上相关的 36 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合但相隔较近的情况,输入有两个六面体信息类型实例 输入 hexat, hexas : HexahedraInfo, 场六面体和源六面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, TetrahedraInfo, 源四面体、四面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnNearRWGPWCMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体

source
MoM_Kernels.EFIEOnNearRWGRBFMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnNearRWGRBFMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnNearRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnNearRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较近的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnNearTetrasPWCMethod

采用 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' 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnNearTetrasSWGMethod

计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合但相隔较近的情况,输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体

source
MoM_Kernels.EFIEOnNearTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和六面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: HexahedraInfo, 源六面体

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和四面体上相关的 9 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 geos :: TetrahedraInfo, 源四面体

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnRWGPWCMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 geot :: TetrahedraInfo, TetrahedraInfo, 场四面体、四面体

source
MoM_Kernels.EFIEOnRWGRBFMethod

计算三角形和六面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 hexat :: HexahedraInfo, 场六面体

source
MoM_Kernels.EFIEOnRWGRBFMethod

计算三角形和六面体上相关的 18 个阻抗矩阵元, 此函数方法用于计算场源六面体不重合且相隔较远的情况 输入 trit :: TriangleInfo, 场三角形面体 hexas :: HexahedraInfo, 源六面体

source
MoM_Kernels.EFIEOnRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnRWGSWGMethod

计算三角形和四面体上相关的 12 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况 输入 tris :: TriangleInfo, 源三角形面体 tetrat :: TetrahedraInfo, 场四面体

source
MoM_Kernels.EFIEOnTetraPWCMethod

采用 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' 注意为与两两作用不同,此处加上了 κ 项,因此后续填充时不需加上。

source
MoM_Kernels.EFIEOnTetraPWCSepPVMethod

采用 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' 注意为与两两作用不同,函数将主值积分分开返回以便它用

source
MoM_Kernels.EFIEOnTetraSWGMethod

计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体

source
MoM_Kernels.EFIEOnTetrasPWCMethod

采用 PWC 基函数 计算四面体上相关的9个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入: tetrat tetras : TetrahedraInfo, 场四面体和四面体 计算: jk₀η₀∫ₜ∫ₛ(I + 1/k²∇∇)G(R)dV′dV 注意为方便对称性快速填充矩阵元,没有加入 κ 项,因此后续填充时要注意加上。

source
MoM_Kernels.EFIEOnTetrasSWGMethod

计算四面体上相关的 16 个阻抗矩阵元, 此函数方法用于计算场源四面体不重合且相隔较远的情况,因此输入有两个四面体信息类型实例 输入 tetrat, tetras : TetrahedraInfo, 场四面体和源四面体

source
MoM_Kernels.EFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.EFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo

source
MoM_Kernels.MFIEOnNearTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合但相隔较近的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.MFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形不重合且相隔较远的情况,因此输入有两个个三角形信息类型实例 输入 trit, tris : TriangleInfo, 场三角形和源三角形

source
MoM_Kernels.MFIEOnTrisMethod

计算三角形上相关9个阻抗矩阵元, 此函数方法用于计算场源三角形重合的情况,因此输入只有一个三角形信息类型实例 输入 tri : TriangleInfo

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(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

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(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

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(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

source
MoM_Kernels.aggSBFOnLevel!Method
aggSBFOnLevel!(aggSBF, disaggSBF, level, hexasInfo::AbstractVector{VT}, 
+::Type{BFT}; setzero = true) where {VT<:HexahedraInfo, BFT<:RBF}

计算某层采用 EFIE 时在六面体上的 RBF 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelMethod
aggSBFOnLevel(level::LT, geosInfo::AbstractVector{VT}, 
+bfsInfo::AbstractVector{BFT}) where {LT<:LevelInfo, VT<:VolumeCellType, BFT<:BasisFunctionType}

计算某层采用 EFIE 时 SWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelCFIE!Method
aggSBFOnLevelCFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}

计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelCFIEMethod
aggSBFOnLevelCFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
+bfsInfo) where {IT<:Integer, FT<:Real}

计算某层采用 CFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF , 输入为层信息 level 、三角形信息 trianglesInfo 和基函数信息 bfsInfo

source
MoM_Kernels.aggSBFOnLevelEFIE!Method
aggSBFOnLevelEFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}

计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelEFIEMethod
aggSBFOnLevelEFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
+bfsInfo) where {IT<:Integer, FT<:Real}

计算某层采用 EFIE 时 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF , 输入为层信息 level 、三角形信息 trianglesInfo 和基函数信息 bfsInfo

source
MoM_Kernels.aggSBFOnLevelMFIE!Method
aggSBFOnLevelMFIE!(aggSBF, disaggSBF, level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
+::Type{BFT}; setzero = true) where {IT<:Integer, FT<:Real, BFT<:RWG}

计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.aggSBFOnLevelMFIEMethod
aggSBFOnLevelMFIE(level, trianglesInfo::Vector{TriangleInfo{IT, FT}}, 
+bfsInfo::Vector{RWG{IT, FT}}) where {IT<:Integer, FT<:Real}

计算某层采用 MFIE 时在三角形上的 RWG 基函数的辐射函数 aggSBF 、配置函数 disaggSBF

source
MoM_Kernels.calZnearCSC!Method
calZnearCSC!(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 计算近场阻抗矩阵。

source
MoM_Kernels.calZnearCSCMethod
calZnearCSC(level, geosInfo::Vector, bfsInfo::Vector)

根据八叉树层信息 level 和几何信息 geosInfo 、基函数信息 bfsInfo 计算近场阻抗矩阵。

source
MoM_Kernels.calZnearCSCCFIE!Method
calZnearCSCCFIE!(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 稀疏矩阵中。

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 RWG + RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 RWG + SWG 基函数计算 三角形 + 四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 PWC + PWC 基函数计算 四面体 + 六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 RWG + PWC 基函数计算 三角形 + 四面体/六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.coeffgreenMethod
coeffgreen(n::Integer)

归一化格林函数 (不包括$\frac{1}{4π}$项) 的展开系数函数,从 0 阶 到 n 阶:

\[\begin{aligned} + Znear) where {VT<:AbstractVector}

根据八叉树层信息 level 和几何信息 geosInfo 、基函数信息 bfsInfo 计算近场阻抗矩阵。

source
MoM_Kernels.calZnearCSCMethod
calZnearCSC(level, geosInfo::Vector, bfsInfo::Vector)

根据八叉树层信息 level 和几何信息 geosInfo 、基函数信息 bfsInfo 计算近场阻抗矩阵。

source
MoM_Kernels.calZnearCSCCFIE!Method
calZnearCSCCFIE!(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 稀疏矩阵中。

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 RWG + RBF 基函数计算六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 RWG + SWG 基函数计算 三角形 + 四面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 PWC + PWC 基函数计算 四面体 + 六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.calZnearCSCEFIE!Method

采用 RWG + PWC 基函数计算 三角形 + 四面体/六面体 EFIE 的体积分(VIE)阻抗矩阵近场元并将结果放在ZnearCSC稀疏矩阵中

source
MoM_Kernels.coeffgreenMethod
coeffgreen(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}\]

source
MoM_Kernels.electricJCalMethod

计算给定三角形面片位置 r 处的电流 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: r ::Vec3D{FT} ICoeff ::Vec3D{CT} 三角形上的三个基函数的计算得到的电流系数 triangleInfo ::TriangleInfo{IT, FT},三角形信息 输出值: Jtrir ::Complex{FT}, 三角形上加权后的电流

source
MoM_Kernels.electricJCalMethod

计算所有三角形上的高斯求积点电流权重乘积 JₙᵢWᵢ 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 JₙᵢWᵢ = ∑ₜₙ₌₁³ Iₜₙlₜₙ/2Sₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流

source
MoM_Kernels.excitationVectorCFIE!Method

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorCFIEMethod

计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息

source
MoM_Kernels.excitationVectorCFIEMethod

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定六面体的六个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定四面体的四个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorMFIE!Method

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorMFIEMethod

计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息

source
MoM_Kernels.excitationVectorMFIEMethod

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.faceSingularityIgMethod
faceSingularityIg(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}\]

source
MoM_Kernels.electricJCalMethod

计算给定三角形面片位置 r 处的电流 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: r ::Vec3D{FT} ICoeff ::Vec3D{CT} 三角形上的三个基函数的计算得到的电流系数 triangleInfo ::TriangleInfo{IT, FT},三角形信息 输出值: Jtrir ::Complex{FT}, 三角形上加权后的电流

source
MoM_Kernels.electricJCalMethod

计算所有三角形上的高斯求积点电流权重乘积 JₙᵢWᵢ 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 JₙᵢWᵢ = ∑ₜₙ₌₁³ Iₜₙlₜₙ/2Sₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流

source
MoM_Kernels.excitationVectorCFIE!Method

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorCFIEMethod

计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息

source
MoM_Kernels.excitationVectorCFIEMethod

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorEFIE!Method

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定六面体的六个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 hexa ::HexahedraInfo{IT, FT, CT},六面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定四面体的三个 PWC 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定四面体的四个 半SWG 基函数上的激励向量 输入: source ::ST, 波源 tetra ::TetrahedraInfo{IT, FT, CT},四面体信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存四面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorEFIEMethod

计算平面波在 基函数 上的激励向量 输入: source ::ST, 平面波源 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}},保存六面体信息的向量 nbf ::Integer,基函数数量

source
MoM_Kernels.excitationVectorMFIE!Method

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.excitationVectorMFIEMethod

计算平面波在给定三角形的三个 半RWG 基函数上的激励向量 输入: source ::ST, 波源 tri ::TriangleInfo{IT, FT},三角形信息

source
MoM_Kernels.excitationVectorMFIEMethod

计算平面波在 RWG 基函数上的激励向量 输入: source ::ST, 波源 trianglesInfo ::Vector{TriangleInfo{IT, FT}},保存三角形信息的向量 nbf ::Integer,基函数数目

source
MoM_Kernels.faceSingularityIgMethod
faceSingularityIg(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}\]

source
MoM_Kernels.faceSingularityIgMethod
faceSingularityIg(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}\]

source
MoM_Kernels.faceSingularityIgMethod
faceSingularityIg(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}\]

source
MoM_Kernels.faceSingularityIgMethod
faceSingularityIg(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}\]

source
MoM_Kernels.faceSingularityIgIvecgMethod
faceSingularityIgIvecg(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}\]

source
MoM_Kernels.faceSingularityIgIvecgI∇gSMethod

面上的近奇异性 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 )

source
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⁻)]}

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.faceSingularityIgIvecgI∇gSMethod

面上的近奇异性 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 )

source
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⁻)]}

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.farFieldMethod

在球坐标为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ₙ) )

source
MoM_Kernels.func4Cube1stkIntervalMethod
func4Cube1stkInterval(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

这六个函数用于寻找盒子的子盒子区间内的比较函数,多重分派以实现不同数据类型的比较。

source
MoM_Kernels.geoElectricJCalMethod

计算六面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上的电流

source
MoM_Kernels.geoElectricJCalMethod

计算六面体上的电流。 分片常数基 RBF 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 6 或 3 个基函数,因此 Jₜ = ∑ₜₙ₌₁ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上加权后的电流

source
MoM_Kernels.geoElectricJCalMethod

计算四面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上的电流

source
MoM_Kernels.geoElectricJCalMethod

计算四面体上的电流。 分片常数基 SWG 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在四个基函数,因此 Jₜ = ∑ₜₙ₌₁⁴ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上加权后的电流

source
MoM_Kernels.geoElectricJCalMethod

计算三角形面片上的加权电流。 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流

source
MoM_Kernels.getExcitationVectorMethod

根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量

source
MoM_Kernels.getExcitationVectorMethod

根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量

source
MoM_Kernels.getExcitationVectorMethod

根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量

source
MoM_Kernels.getGeoIDsInCubeChunkMethod
getGeoIDsInCubeChunk(cubes, chunkIndice::Tuple)
-getGeoIDsInCubeChunk(cubes, ckunkIndice::UnitRange)

获取 ckunkIndice 内的所有 cubes 的编号, 返回为 Tuple 形式以适应数组索引相关API

source
MoM_Kernels.getGeosIntervalMethod
getGeosInterval(geosInfo::T) where {T<:AbstractVector}
-getGeosInterval(geosInfo::T) where {T<:OffsetVector}

获取几何信息数组的区间,针对普通 VectorOffsetVector 分别派发。

source
MoM_Kernels.getImpedanceMatAndExciteVMethod

根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量

source
MoM_Kernels.getImpedanceMatAndExciteVMethod

根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 bfsInfo:: 基函数信息 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量

source
MoM_Kernels.getImpedanceMatrixMethod

根据几何信息与基函数数量,计算阻抗矩阵 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 返回: Zmat

source
MoM_Kernels.getImpedanceOptMethod

根据几何信息与基函数数量,计算阻抗矩阵算子 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元

source
MoM_Kernels.getImpedanceOptAndExciteVOctreeMethod

根据几何信息与基函数数量,计算阻抗矩阵算子和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元

source
MoM_Kernels.getMeshDataSaveGeosIntervalMethod
getMeshDataSaveGeosInterval(filename[; meshUnit=:mm, dir = "temp/GeosInfo"])

在获取网格数据 meshData 和介电参数 εᵣs 的同时保存网格数据 meshData 中各类型网格的区间。

source
MoM_Kernels.getNeiFarNeighborCubeIDsMethod
getNeiFarNeighborCubeIDs(cubes, chunkIndice::Tuple)

获取 ckunkIndice 内的所有 cubes 的 远亲盒子 序号, 返回为 Tuple 形式以适应数组索引相关 API。

source
MoM_Kernels.getNeighborCubeIDsMethod
getNeighborCubeIDs(cubes, chunkIndice::Tuple)
-getNeighborCubeIDs(cubes, chunkIndice::AbstractVector)

获取 ckunkIndice 内的所有 cubes邻盒子 编号, 返回为 Tuple 形式以适应数组索引相关API

source
MoM_Kernels.getOctreeAndReOrderBFs!Method

根据基函数中心位置构建八叉树,并重排基函数信息、将新基函数 ID 赋值给几何元信息数组 返回值: nLevels:: 层数 octree:: 得到的八叉树 leafCubeEdgel:: 控制叶层盒子大小 isDistribute:: 控制是否为分布式计算

source
MoM_Kernels.get_partitionMethod
get_partition(nCubes, sizePoles, np)

根据给定的盒子数 nCubes 、多极子数 sizePoles、进程数 np 返回该层辐射函数的三个维度的划分数量。

source
MoM_Kernels.get_partition_mapMethod
get_partition_map(partition, kcubeIndices)

根据 partition 计算在盒子方向本层所有 rank 到子层所有 rank 的 map 。

source
MoM_Kernels.gq_xsws_on_sphereMethod
gq_xsws_on_sphere(L)
+func4CubelastkInterval(interval::T) where T

这六个函数用于寻找盒子的子盒子区间内的比较函数,多重分派以实现不同数据类型的比较。

source
MoM_Kernels.geoElectricJCalMethod

计算六面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上的电流

source
MoM_Kernels.geoElectricJCalMethod

计算六面体上的电流。 分片常数基 RBF 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个六面体面片上存在 6 或 3 个基函数,因此 Jₜ = ∑ₜₙ₌₁ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 hexasInfo ::Vector{HexahedraInfo{IT, FT, CT}}, 输出值: Jhexa ::Marrix{Complex{FT}}, 六面体上加权后的电流

source
MoM_Kernels.geoElectricJCalMethod

计算四面体上的电流。 分片常数基 PWC 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在 x̂, ŷ, ẑ 方向的三个基函数,因此 Jₜ = κₜ ∑ₜₙ₌₁³Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上的电流

source
MoM_Kernels.geoElectricJCalMethod

计算四面体上的电流。 分片常数基 SWG 基函数 电流基函数公式为:Jₙ = κₙIₙfₙ 同一个四面体面片上存在四个基函数,因此 Jₜ = ∑ₜₙ₌₁⁴ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 tetrasInfo ::Vector{TetrahedraInfo{IT, FT, CT}}, 输出值: Jtetra ::Marrix{Complex{FT}}, 四面体上加权后的电流

source
MoM_Kernels.geoElectricJCalMethod

计算三角形面片上的加权电流。 电流基函数公式为:Jₙ = Iₙfₙ 同一个三角形面片上存在三个基函数,因此 Jₜ = ∑ₜₙ₌₁³ Iₜₙfₜₙ 输入: ICoeff ::Vector{Complex{FT}} 计算得到的电流系数 trianglesInfo ::Vector{TriangleInfo{IT, FT}},三角形信息 输出值: Jtri ::Marrix{Complex{FT}}, 三角形上加权后的电流

source
MoM_Kernels.getExcitationVectorMethod

根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量

source
MoM_Kernels.getExcitationVectorMethod

根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量

source
MoM_Kernels.getExcitationVectorMethod

根据几何信息与基函数数量,计算激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: V:: 激励向量

source
MoM_Kernels.getGeoIDsInCubeChunkMethod
getGeoIDsInCubeChunk(cubes, chunkIndice::Tuple)
+getGeoIDsInCubeChunk(cubes, ckunkIndice::UnitRange)

获取 ckunkIndice 内的所有 cubes 的编号, 返回为 Tuple 形式以适应数组索引相关API

source
MoM_Kernels.getGeosIntervalMethod
getGeosInterval(geosInfo::T) where {T<:AbstractVector}
+getGeosInterval(geosInfo::T) where {T<:OffsetVector}

获取几何信息数组的区间,针对普通 VectorOffsetVector 分别派发。

source
MoM_Kernels.getImpedanceMatAndExciteVMethod

根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量

source
MoM_Kernels.getImpedanceMatAndExciteVMethod

根据几何信息与基函数数量,计算阻抗矩阵和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 bfsInfo:: 基函数信息 source:: 激励源 返回: Zmat:: 阻抗矩阵 V:: 激励向量

source
MoM_Kernels.getImpedanceMatrixMethod

根据几何信息与基函数数量,计算阻抗矩阵 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 返回: Zmat

source
MoM_Kernels.getImpedanceOptMethod

根据几何信息与基函数数量,计算阻抗矩阵算子 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元

source
MoM_Kernels.getImpedanceOptAndExciteVOctreeMethod

根据几何信息与基函数数量,计算阻抗矩阵算子和激励向量 输入: geosInfo:: 几何信息,三角形、四面体、六面体的向量 nbf:: 基函数数量 source:: 激励源 返回: Zopt:: 阻抗矩阵算子,由近场稀疏矩阵和远场八叉树聚合、转移、解聚组成 V:: 激励向量 Octree:: 八叉树 Znear:: 阻抗矩阵近场元

source
MoM_Kernels.getMeshDataSaveGeosIntervalMethod
getMeshDataSaveGeosInterval(filename[; meshUnit=:mm, dir = "temp/GeosInfo"])

在获取网格数据 meshData 和介电参数 εᵣs 的同时保存网格数据 meshData 中各类型网格的区间。

source
MoM_Kernels.getNeiFarNeighborCubeIDsMethod
getNeiFarNeighborCubeIDs(cubes, chunkIndice::Tuple)

获取 ckunkIndice 内的所有 cubes 的 远亲盒子 序号, 返回为 Tuple 形式以适应数组索引相关 API。

source
MoM_Kernels.getNeighborCubeIDsMethod
getNeighborCubeIDs(cubes, chunkIndice::Tuple)
+getNeighborCubeIDs(cubes, chunkIndice::AbstractVector)

获取 ckunkIndice 内的所有 cubes邻盒子 编号, 返回为 Tuple 形式以适应数组索引相关API

source
MoM_Kernels.getOctreeAndReOrderBFs!Method

根据基函数中心位置构建八叉树,并重排基函数信息、将新基函数 ID 赋值给几何元信息数组 返回值: nLevels:: 层数 octree:: 得到的八叉树 leafCubeEdgel:: 控制叶层盒子大小 isDistribute:: 控制是否为分布式计算

source
MoM_Kernels.get_partitionMethod
get_partition(nCubes, sizePoles, np)

根据给定的盒子数 nCubes 、多极子数 sizePoles、进程数 np 返回该层辐射函数的三个维度的划分数量。

source
MoM_Kernels.get_partition_mapMethod
get_partition_map(partition, kcubeIndices)

根据 partition 计算在盒子方向本层所有 rank 到子层所有 rank 的 map 。

source
MoM_Kernels.greenfunc_starMethod
greenfunc_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}.\]

source
MoM_Kernels.iluPreconditionMethod
iluPrecondition(A, level; τ = 1e-3)

从 (IncompleteLU.jl)[https://github.com/haampie/IncompleteLU.jl.git] 包实现ilu, 再次封装是因为要加入一些判断

source
MoM_Kernels.impedancemat4CFIE4PECMethod

本函数用于计算PEC的CFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4EFIE4PEC!Method

本函数用于在有矩阵的情况下计算PEC的EFIE阻抗矩阵。 输入信息: Zmat trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4EFIE4PECMethod

本函数用于计算PEC的EFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4MFIE4PECMethod

本函数用于计算PEC的MFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质的 EFIE 阻抗矩阵。 输入信息: Zmat : 已初始化的阻抗矩阵 tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质的EFIE阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算混合网格(四面体+六面体)下介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: geosInfo : 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VSIERWGPWCMethod

本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VSIERWGRBFMethod

本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VSIERWGSWGMethod

本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.initialZnearCSRMethod
initialZnearCSR(level, nbf::Int)

根据八叉树层信息 level 初始化近场阻抗矩阵,用 transpose 实现 CSR 压缩稀疏行。

source
MoM_Kernels.initialZnearChunksMethod
initialZnearChunks(cube, cubes::AbstractVector; CT = Complex{Precision.FT})

根据八叉树某个盒子 cube 信息初始化 cube 对应的近场矩阵元块。

source
MoM_Kernels.integral1DXWMethod

计算分别采用高斯求积、中点求积计算 θ,ϕ 方向的采样点的坐标、权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 Nsample::IT, 采样点数 mod::Symbol, 模式,接受 :uni, 均值积分 :glq, 高斯-勒让德积分 两种模式

source
MoM_Kernels.interpolationCSCMatCalMethod

采用局部插值、两步插值法,计算局部坐标到全局坐标的稀疏插值矩阵,Julia数据存储为列主的,因此使用 压缩稀疏列(Compressed Sparse Column, CSC) pLevelPoles::GLPolesInfo{FT}, 父层多极子信息 tLevelPoles::GLPolesInfo{FT}, 本层多极子信息

source
MoM_Kernels.levelIntegralInfoCalMethod

计算八叉树的积分相关信息,包括截断项、各层积分点和求积权重数据 输入: levelCubeEdgel::FT, 层盒子边长, 一般叶层为0.25λ,其中 λ 为区域局部波长。 返回值 L ::IT, 层 截断项 levelsPoles ::Vector{GLPolesInfo{FT}},从叶层到第 “2” 层的角谱空间采样信息

source
MoM_Kernels.octreeXWNCalMethod

计算各层八叉树求积坐标、求积权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 nlevels::IT, 八叉树叶层ID mod::Symbol, 模式,接受 :uni, 均值积分(ϕ方向) :glq, 高斯-勒让德积分(θ方向) 两种模式

source
MoM_Kernels.radarCrossSectionMethod

在球坐标为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ₙ) )

source
MoM_Kernels.radarCrossSectionMethod

在球坐标为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ₙ) )

source
MoM_Kernels.radarCrossSectionMethod

在球坐标为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ₙ) )

source
MoM_Kernels.raditionalIntegralNCalMethod

在设定好的观测角度上的球坐标处计算辐射积分,采用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ₙ) )

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为r̂θϕ处计算辐射积分,采用 RBF 基函数时,六面体上没有统一的电流值 N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dV)

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为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ₙ) )

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为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ₙ) )

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为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ₙ) )

source
MoM_Kernels.reOrderCubeID!Method

根据排序后的新id重新排列子层盒子以及盒子的邻盒子信息,以将同一个父盒子层的盒子相邻排列,这样有利于计算 更新的量:父层盒子的kidsInterval, 本层的盒子顺序,本层盒子的邻盒子id

source
MoM_Kernels.saveCubesMethod
saveCubes(cubes[, nchunk = ParallelParams.nprocs; name, dir="", kcubeIndices = nothing])

将盒子 cubes 分为 nchunk 块以 name 为名保存在 dir中。kcubeIndices 同于计算不同分区间重复的部分。

source
MoM_Kernels.saveGeosInfoChunksMethod
saveGeosInfoChunks(geos::AbstractVector, cubes, name::AbstractString, nchunk::Int[; dir = "", cubes_ChunksIndices = sizeChunks2idxs(length(cubes), nchunk)])

将几何信息 geos 根据分块数量 nchunk 和在 cubes 中的分布进行分块并保存。

source
MoM_Kernels.saveLevelFunction
saveLevel(level[, np = ParallelParams.nprocs; dir="", kcubeIndices = nothing])

将层 level 信息保存,其中的盒子信息由 get_partition 计算的分块信息部分保存。

source
MoM_Kernels.saveVec2ChunksMethod
saveVec2Chunks(y::AbstractVector, name::AbstractString, indices[; dir = "", showpmeter = false, message = ""])

把向量 yname 按索引 indices 块保存在 dir 文件夹中。

source
MoM_Kernels.saveVec2ChunksMethod
saveVec2Chunks(y::AbstractVector, name::AbstractString, nchunk::Int[; dir = ""])

把向量 yname 分为 nchunk 块保存在 dir 文件夹中。

source
MoM_Kernels.searchNearCubesMethod

用于寻找邻盒子的函数 输入 cubesID3D::Matrix{Int},(n×3)盒子在本层的三维坐标 levelID::Integer 层编号,(定义大盒子为(“0” 层),叶层为第“n”层

source
MoM_Kernels.setBigCubeMethod

计算包围目标的大盒子信息 输入: nodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标,或者为构成网格的所有点 leafCubeEdgel::FT,叶层盒子边长,用于计算总层数和大盒子的坐标信息

source
MoM_Kernels.setGeoIDsInLeafCubes!Method

用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。

source
MoM_Kernels.setGeoIDsInLeafCubes!Method

用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。

source
MoM_Kernels.setLevelInfo!Method

非叶层LevelInfo的构造函数,输入为空间三维坐标数组 levelID::计算层的id leafnodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标 cubeEdgel::FT,本层盒子边长

source
MoM_Kernels.setLevelInfo!Method
setLevelInfo!(nLevels::Integer, leafnodes::Matrix{FT},cubeEdgel::FT, bigCubeLowerCoor::Vec3D{FT}[; 
+计算单位球面 2(L+1) 阶高斯求积的采样点坐标权重

TBW

source
MoM_Kernels.greenfunc_starMethod
greenfunc_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}.\]

source
MoM_Kernels.iluPreconditionMethod
iluPrecondition(A, level; τ = 1e-3)

从 (IncompleteLU.jl)[https://github.com/haampie/IncompleteLU.jl.git] 包实现ilu, 再次封装是因为要加入一些判断

source
MoM_Kernels.impedancemat4CFIE4PECMethod

本函数用于计算PEC的CFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4EFIE4PEC!Method

本函数用于在有矩阵的情况下计算PEC的EFIE阻抗矩阵。 输入信息: Zmat trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4EFIE4PECMethod

本函数用于计算PEC的EFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4MFIE4PECMethod

本函数用于计算PEC的MFIE阻抗矩阵。 输入信息: trianglesInfo: 为包含三角形信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对三角形循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}, 为包含六面体信息实例的向量 tetrasInfo::AbstractVector{TetrahedraInfo{IT, FT, CT}}, 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIE!Method

本函数用于计算介质的 EFIE 阻抗矩阵。 输入信息: Zmat : 已初始化的阻抗矩阵 tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质的EFIE阻抗矩阵。 输入信息: hexasInfo : 为包含六面体信息实例的向量 nrbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对六面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nrwg : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算介质的EFIE阻抗矩阵。 输入信息: tetrasInfo : 为包含四面体信息实例的向量 nswg : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对四面体循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VIEMethod

本函数用于计算混合网格(四面体+六面体)下介质体的 PWC 基函数下的 EFIE 阻抗矩阵。 输入信息: geosInfo : 为包含四面体信息实例的向量 nPWC : 基函数数目 返回值 Zmat : 阻抗矩阵

source
MoM_Kernels.impedancemat4VSIERWGPWCMethod

本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VSIERWGRBFMethod

本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.impedancemat4VSIERWGSWGMethod

本函数用于计算金属介质混合体的EFIE阻抗矩阵。 输入信息: geosInfo : 为包含几何体信息实例的向量 nbf : 基函数数目 返回值 Zmat : 阻抗矩阵

注意,此程序由于采用的对网格元(几何体)循环计算,因此在并行化时,会出现不同线程计算出同一个矩阵元,导致写入冲突,因此要加线程锁保证结果写入正确

source
MoM_Kernels.initialZnearCSRMethod
initialZnearCSR(level, nbf::Int)

根据八叉树层信息 level 初始化近场阻抗矩阵,用 transpose 实现 CSR 压缩稀疏行。

source
MoM_Kernels.initialZnearChunksMethod
initialZnearChunks(cube, cubes::AbstractVector; CT = Complex{Precision.FT})

根据八叉树某个盒子 cube 信息初始化 cube 对应的近场矩阵元块。

source
MoM_Kernels.integral1DXWMethod

计算分别采用高斯求积、中点求积计算 θ,ϕ 方向的采样点的坐标、权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 Nsample::IT, 采样点数 mod::Symbol, 模式,接受 :uni, 均值积分 :glq, 高斯-勒让德积分 两种模式

source
MoM_Kernels.interpolationCSCMatCalMethod

采用局部插值、两步插值法,计算局部坐标到全局坐标的稀疏插值矩阵,Julia数据存储为列主的,因此使用 压缩稀疏列(Compressed Sparse Column, CSC) pLevelPoles::GLPolesInfo{FT}, 父层多极子信息 tLevelPoles::GLPolesInfo{FT}, 本层多极子信息

source
MoM_Kernels.levelIntegralInfoCalMethod

计算八叉树的积分相关信息,包括截断项、各层积分点和求积权重数据 输入: levelCubeEdgel::FT, 层盒子边长, 一般叶层为0.25λ,其中 λ 为区域局部波长。 返回值 L ::IT, 层 截断项 levelsPoles ::Vector{GLPolesInfo{FT}},从叶层到第 “2” 层的角谱空间采样信息

source
MoM_Kernels.octreeXWNCalMethod

计算各层八叉树求积坐标、求积权重 lb::FT, 积分区域下界 hb::FT, 积分区域上界 nlevels::IT, 八叉树叶层ID mod::Symbol, 模式,接受 :uni, 均值积分(ϕ方向) :glq, 高斯-勒让德积分(θ方向) 两种模式

source
MoM_Kernels.radarCrossSectionMethod

在球坐标为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ₙ) )

source
MoM_Kernels.radarCrossSectionMethod

在球坐标为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ₙ) )

source
MoM_Kernels.radarCrossSectionMethod

在球坐标为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ₙ) )

source
MoM_Kernels.raditionalIntegralNCalMethod

在设定好的观测角度上的球坐标处计算辐射积分,采用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ₙ) )

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为r̂θϕ处计算辐射积分,采用 RBF 基函数时,六面体上没有统一的电流值 N(θ, ϕ) = ∑ₙ(∫ₛ Jˢ exp( jkr̂(θ, ϕ)⋅rₙ ) dV)

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为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ₙ) )

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为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ₙ) )

source
MoM_Kernels.raditionalIntegralNθϕCalMethod

在球坐标为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ₙ) )

source
MoM_Kernels.reOrderCubeID!Method

根据排序后的新id重新排列子层盒子以及盒子的邻盒子信息,以将同一个父盒子层的盒子相邻排列,这样有利于计算 更新的量:父层盒子的kidsInterval, 本层的盒子顺序,本层盒子的邻盒子id

source
MoM_Kernels.saveCubesMethod
saveCubes(cubes[, nchunk = ParallelParams.nprocs; name, dir="", kcubeIndices = nothing])

将盒子 cubes 分为 nchunk 块以 name 为名保存在 dir中。kcubeIndices 同于计算不同分区间重复的部分。

source
MoM_Kernels.saveGeosInfoChunksMethod
saveGeosInfoChunks(geos::AbstractVector, cubes, name::AbstractString, nchunk::Int[; dir = "", cubes_ChunksIndices = sizeChunks2idxs(length(cubes), nchunk)])

将几何信息 geos 根据分块数量 nchunk 和在 cubes 中的分布进行分块并保存。

source
MoM_Kernels.saveLevelFunction
saveLevel(level[, np = ParallelParams.nprocs; dir="", kcubeIndices = nothing])

将层 level 信息保存,其中的盒子信息由 get_partition 计算的分块信息部分保存。

source
MoM_Kernels.saveVec2ChunksMethod
saveVec2Chunks(y::AbstractVector, name::AbstractString, indices[; dir = "", showpmeter = false, message = ""])

把向量 yname 按索引 indices 块保存在 dir 文件夹中。

source
MoM_Kernels.saveVec2ChunksMethod
saveVec2Chunks(y::AbstractVector, name::AbstractString, nchunk::Int[; dir = ""])

把向量 yname 分为 nchunk 块保存在 dir 文件夹中。

source
MoM_Kernels.searchNearCubesMethod

用于寻找邻盒子的函数 输入 cubesID3D::Matrix{Int},(n×3)盒子在本层的三维坐标 levelID::Integer 层编号,(定义大盒子为(“0” 层),叶层为第“n”层

source
MoM_Kernels.setBigCubeMethod

计算包围目标的大盒子信息 输入: nodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标,或者为构成网格的所有点 leafCubeEdgel::FT,叶层盒子边长,用于计算总层数和大盒子的坐标信息

source
MoM_Kernels.setGeoIDsInLeafCubes!Method

用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。

source
MoM_Kernels.setGeoIDsInLeafCubes!Method

用于设置给定层的盒子中包含的几何体,采用 RWG、SWG、RBF 基函数时,八叉树分组依据为基函数, 同一个几何体会被分在不同的基函数上会被分入入不同的盒子,因此邻盒子中的几何体 id 大概率出现重复值。

source
MoM_Kernels.setLevelInfo!Method

非叶层LevelInfo的构造函数,输入为空间三维坐标数组 levelID::计算层的id leafnodes::Matrix{FT},大小为 (3, n) 的用于分割成八叉树的空间点,如基函数的中心坐标 cubeEdgel::FT,本层盒子边长

source
MoM_Kernels.setLevelInfo!Method
setLevelInfo!(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              层类
source
MoM_Kernels.setLevelsShiftFactor!Method

本函数用于给输入的本(level)层的盒子与其子盒子之间计算相移因子, 由盒子排列的规律性和相移因子的对称性,可知: 只需要计算8个相移因子,即可用于所有盒子到其子盒子的相移, 且这八个盒子关于原点对称的两两之间的相移因子为共轭关系 计算完成直接保存在 level 不再返回

source
MoM_Kernels.singularF1Method
singularF1(a::FT, b::FT, c::FT, d::FT) where{FT<:AbstractFloat}

计算边长为a, b, c, d的四边形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。

source
MoM_Kernels.singularF1Method
singularF1(a::FT, b::FT, c::FT) where{FT<:AbstractFloat}

计算边长为a, b, c的三角形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。

source
MoM_Kernels.singularF21Method
singularF21(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 即基函数自作用的情况。

source
MoM_Kernels.singularF22Method
singularF21(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 即同一三角形的不同基函数作用的情况。

source
MoM_Kernels.setLevelsShiftFactor!Method

本函数用于给输入的本(level)层的盒子与其子盒子之间计算相移因子, 由盒子排列的规律性和相移因子的对称性,可知: 只需要计算8个相移因子,即可用于所有盒子到其子盒子的相移, 且这八个盒子关于原点对称的两两之间的相移因子为共轭关系 计算完成直接保存在 level 不再返回

source
MoM_Kernels.singularF1Method
singularF1(a::FT, b::FT, c::FT, d::FT) where{FT<:AbstractFloat}

计算边长为a, b, c, d的四边形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。

source
MoM_Kernels.singularF1Method
singularF1(a::FT, b::FT, c::FT) where{FT<:AbstractFloat}

计算边长为a, b, c的三角形重合时的奇异性F1项,即 $\int{\int{\frac{1}{R}}dS}$ 的解析值。

source
MoM_Kernels.singularF21Method
singularF21(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 即基函数自作用的情况。

source
MoM_Kernels.singularF22Method
singularF21(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 即同一三角形的不同基函数作用的情况。

source
MoM_Kernels.sizeChunks2cutsMethod
sizeChunks2cuts(Asize, chunks)
 sizeChunks2cuts(Asize::Int, chunks)
 sizeChunks2cuts(Asize, chunks::Int)
-sizeChunks2cuts(Asize::Int, chunks::Int)

将数组大小 Asizechunks 进行分块。 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。

source
MoM_Kernels.sizeChunks2idxsMethod
sizeChunks2idxs(Asize, nchunk)

Borrowed form DistributedArray.jl, get the slice of matrix size Asize on each dimension with nchunk. MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。

source
MoM_Kernels.sizeChunksCuts2indicesMethod
sizeChunksCuts2indices(Asize, nchunk, cuts::Tuple)
-sizeChunksCuts2indices(Asize, nchunk, cuts::Vector{I}) where{I<:Integer}

根据数组大小 Asize 分块数量 nchunk 以及各块索引区间 cuts 计算各块的索引。 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。

source
MoM_Kernels.solve!Method

矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型

source
MoM_Kernels.solveMethod

矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(ZnearChunks::ZnearChunksStruct{CT}, level; nbf = 0) where {FT<:Real, CT<:Complex{FT}}

根据块状近场阻抗矩阵 ZnearChunks 和计算阻抗矩阵层的盒子信息 cubes 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层的盒子信息 cubes 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}

根据近场阻抗矩阵 Znear 和八叉树 octree 叶层计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层信息 level 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePrMethod
sparseApproximateInversePr(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层的盒子信息 cubes 计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePrMethod
sparseApproximateInversePr(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}

根据近场阻抗矩阵 Znear 和八叉树 octree 叶层计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePrMethod
sparseApproximateInversePr(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层信息 level 计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.spherical_h1lMethod

第一类球汉克尔函数,使用GSL.jl(GNU Scientific Library),适用于 l 为整数,x 为浮点数时算的更快

source
MoM_Kernels.spherical_h1lMethod

第一类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用

source
MoM_Kernels.spherical_h2lMethod

第二类球汉克尔函数,使用GSL.jl(GNU Scientific Library),,适用于 l 为整数,x 为浮点数时算的更快

source
MoM_Kernels.spherical_h2lMethod

第二类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用

source
MoM_Kernels.volumeSingularityIgMethod
volumeSingularityIg(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)

将数组大小 Asizechunks 进行分块。 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。

source
MoM_Kernels.sizeChunks2idxsMethod
sizeChunks2idxs(Asize, nchunk)

Borrowed form DistributedArray.jl, get the slice of matrix size Asize on each dimension with nchunk. MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。

source
MoM_Kernels.sizeChunksCuts2indicesMethod
sizeChunksCuts2indices(Asize, nchunk, cuts::Tuple)
+sizeChunksCuts2indices(Asize, nchunk, cuts::Vector{I}) where{I<:Integer}

根据数组大小 Asize 分块数量 nchunk 以及各块索引区间 cuts 计算各块的索引。 MPIArray4MoMs 借的! 为的是避免提前引入 MPI 导致在集群上的 bug。因此该函数的修改必须与 MPIArray4MoMs 同步。

source
MoM_Kernels.solve!Method

矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型

source
MoM_Kernels.solveMethod

矩阵方程 Ax=b 复合求解函数 输入值: A::LinearMapType{T}, b::Vector{T} solverT::Symbol 求解器类型

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(ZnearChunks::ZnearChunksStruct{CT}, level; nbf = 0) where {FT<:Real, CT<:Complex{FT}}

根据块状近场阻抗矩阵 ZnearChunks 和计算阻抗矩阵层的盒子信息 cubes 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层的盒子信息 cubes 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}

根据近场阻抗矩阵 Znear 和八叉树 octree 叶层计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePlMethod
sparseApproximateInversePl(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层信息 level 计算左稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePrMethod
sparseApproximateInversePr(Znear::ZnearT{CT}, cubes::AbstractVector) where {FT<:Real, CT<:Complex{FT}}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层的盒子信息 cubes 计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePrMethod
sparseApproximateInversePr(Znear::ZnearT{CT}, octree::OctreeInfo{FT, LT}) where { FT<:Real, CT<:Complex{FT}, LT}

根据近场阻抗矩阵 Znear 和八叉树 octree 叶层计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.sparseApproximateInversePrMethod
sparseApproximateInversePr(Znear::ZnearT{CT}, level::LT) where { CT<:Complex, LT <: AbstractLevel}

根据近场阻抗矩阵 Znear 和计算阻抗矩阵层信息 level 计算右稀疏近似逆 (Sparse Approximate Inverse (SAI)) 。

source
MoM_Kernels.spherical_h1lMethod

第一类球汉克尔函数,使用GSL.jl(GNU Scientific Library),适用于 l 为整数,x 为浮点数时算的更快

source
MoM_Kernels.spherical_h1lMethod

第一类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用

source
MoM_Kernels.spherical_h2lMethod

第二类球汉克尔函数,使用GSL.jl(GNU Scientific Library),,适用于 l 为整数,x 为浮点数时算的更快

source
MoM_Kernels.spherical_h2lMethod

第二类球汉克尔函数,使用 SpecialFunctions.jl, 适用于非整数阶、复数变量,算的较慢,只在计算有耗介质(复数波矢)时调用

source
MoM_Kernels.volumeSingularityIgMethod
volumeSingularityIg(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}\]

source
MoM_Kernels.volumeSingularityIgIvecgMethod
volumeSingularityIgIvecg(rtveclc::AbstractVector{FT}, volumeCell::TetrahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
+\end{aligned}\]

source
MoM_Kernels.volumeSingularityIgIvecgMethod
volumeSingularityIgIvecg(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}\]

source
MoM_Kernels.volumeSingularityLOpDyadMethod
volumeSingularityLOpDyad(rtveclc::AbstractVector{FT}, volumeCell::TetrahedraInfo{IT, FT, CT}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
+\end{aligned}\]

source
MoM_Kernels.volumeSingularityLOpDyadMethod
volumeSingularityLOpDyad(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}\]

source
+\end{aligned}\]

source diff --git a/dev/index.html b/dev/index.html index 5efe4c9..053c378 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Home · MoM_Kernels.jl

MoM

MoM_Kernels

star

Stable Dev Build Status Coverage

Size Downloads License

介绍

提供 CEM_MoMs (github, gitee) 包的核心算法,包括各类基函数的矩阵元计算、多层快速多极子(MLFMA)各种类型和函数、求解器、后处理(RCS、远场计算等功能),但不包含绘图函数。 CEM_MoMs 本身被拆分为几个独立的包以方便开发时快速编译,同时避免在无图形化界面使用时调入绘图相关包而导致报错。

安装与测试

安装

可直接在 Julia REPL 的包管理模式中安装:

julia> Pkg.add("MoM_Kernels")

pkg> add MoM_Kernels

测试

同样可直接在 Julia REPL 的包管理模式中测试包:

julia> Pkg.test("MoM_Kernels")

pkg> add MoM_Kernels
+Home · MoM_Kernels.jl

MoM

MoM_Kernels

star

Stable Dev Build Status Coverage

Size Downloads License

介绍

提供 CEM_MoMs (github, gitee) 包的核心算法,包括各类基函数的矩阵元计算、多层快速多极子(MLFMA)各种类型和函数、求解器、后处理(RCS、远场计算等功能),但不包含绘图函数。 CEM_MoMs 本身被拆分为几个独立的包以方便开发时快速编译,同时避免在无图形化界面使用时调入绘图相关包而导致报错。

安装与测试

安装

可直接在 Julia REPL 的包管理模式中安装:

julia> Pkg.add("MoM_Kernels")

pkg> add MoM_Kernels

测试

同样可直接在 Julia REPL 的包管理模式中测试包:

julia> Pkg.test("MoM_Kernels")

pkg> add MoM_Kernels