API
Index
MoM_Basics.GaussQuadrature4Geo
MoM_Basics.EDGEVmINTriVsID
MoM_Basics.EDGEVpINTriVsID
MoM_Basics.GQ1DID2GQ3DIDVector
MoM_Basics.GQPNQuad
MoM_Basics.GQPNQuad1D
MoM_Basics.GQPNQuad1DSSglr
MoM_Basics.GQPNQuad1DSglr
MoM_Basics.GQPNQuadSSglr
MoM_Basics.GQPNQuadSglr
MoM_Basics.Params
MoM_Basics.Precision
MoM_Basics.QuadGQInfo
MoM_Basics.QuadGQInfoSSglr
MoM_Basics.QuadGQInfoSglr
MoM_Basics.SimulationParams
MoM_Basics.VSBFTypes
MoM_Basics.Vec3IdxCircle
MoM_Basics.facen2OppositeID
MoM_Basics.facesVertIDs
MoM_Basics.memory
MoM_Basics.oppFacesVertIDs
MoM_Basics.timer
MoM_Basics.uv2FreeVnsDict
MoM_Basics.AbstractAntennaArray
MoM_Basics.AntennaArray
MoM_Basics.AntennaArray
MoM_Basics.AntennaType
MoM_Basics.BasisFunctionType
MoM_Basics.ConstBasisFunction
MoM_Basics.ExcitingSource
MoM_Basics.ExcitingSources
MoM_Basics.GaussQuadrature4Geo.GaussQuadratureInfoStruct
MoM_Basics.HexahedraInfo
MoM_Basics.HexahedraInfo
MoM_Basics.HexahedraMesh
MoM_Basics.LinearBasisFunction
MoM_Basics.MagneticDipole
MoM_Basics.MagneticDipole
MoM_Basics.MagneticDipole
MoM_Basics.MeshDataType
MoM_Basics.MeshFormat
MoM_Basics.MeshNodeTriTetraHexa
MoM_Basics.NasMesh
MoM_Basics.PWC
MoM_Basics.PWC
MoM_Basics.ParamsType
MoM_Basics.ParamsType
MoM_Basics.PlaneWave
MoM_Basics.PlaneWave
MoM_Basics.PrecisionT
MoM_Basics.Quads4Hexa
MoM_Basics.Quads4Hexa
MoM_Basics.Quads4Hexa
MoM_Basics.RBF
MoM_Basics.RBF
MoM_Basics.RWG
MoM_Basics.RWG
MoM_Basics.SWG
MoM_Basics.SWG
MoM_Basics.SimulationParamsType
MoM_Basics.SimulationParamsType
MoM_Basics.SurfaceCellType
MoM_Basics.TetrahedraInfo
MoM_Basics.TetrahedraInfo
MoM_Basics.TetrahedraMesh
MoM_Basics.TriangleInfo
MoM_Basics.TriangleInfo
MoM_Basics.TriangleMesh
MoM_Basics.Tris4Tetra
MoM_Basics.Tris4Tetra
MoM_Basics.VSBFTstruct
MoM_Basics.VSCellType
MoM_Basics.VecCart2SphereMat
MoM_Basics.VecCart2SphereMat
MoM_Basics.VolumeCellType
MoM_Basics.r̂θϕInfo
MoM_Basics.r̂θϕInfo
MoM_Basics.r̂θϕInfo
MoM_Basics.θϕInfo
MoM_Basics.θϕInfo
MoM_Basics.θϕInfo
MoM_Basics.∠Info
Base.:*
MoM_Basics.GaussQuadrature4Geo.GaussQuadratureInfo
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureHexa
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureQuad
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureTetra
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureTri
MoM_Basics.TaylorWins.calculateFm
MoM_Basics.TaylorWins.taylorwin
MoM_Basics._nastran_string_to_float
MoM_Basics.acrossbcrossc
MoM_Basics.add_phase!
MoM_Basics.antennaArray
MoM_Basics.area
MoM_Basics.area
MoM_Basics.boundaryRBF
MoM_Basics.byte2other
MoM_Basics.cart2sphere
MoM_Basics.cart2sphereMat
MoM_Basics.constructFloat2IndexDict
MoM_Basics.constructGQ1DID2GQ3DIDVector
MoM_Basics.dist
MoM_Basics.eulerRMat2αβγ
MoM_Basics.eulerRotationMat
MoM_Basics.eulerRotationMat
MoM_Basics.eulerRotationMat
MoM_Basics.eulerZunit
MoM_Basics.getBFTfromCellT
MoM_Basics.getBFsFromMeshData
MoM_Basics.getCellsBFs
MoM_Basics.getCellsBFsFromFileName
MoM_Basics.getCellsFromFileName
MoM_Basics.getConnectionMatrix
MoM_Basics.getFreeVIDFromGQ3DID
MoM_Basics.getFreeVIDFromGQ3DIDSSglr
MoM_Basics.getFreeVIDFromGQ3DIDSglr
MoM_Basics.getFreeVns
MoM_Basics.getFreeVnsSSglr
MoM_Basics.getFreeVnsSglr
MoM_Basics.getGQPHexa
MoM_Basics.getGQPHexaSSglr
MoM_Basics.getGQPHexaSglr
MoM_Basics.getGQPQuad
MoM_Basics.getGQPQuadSSglr
MoM_Basics.getGQPQuadSglr
MoM_Basics.getGQPTetra
MoM_Basics.getGQPTetraSglr
MoM_Basics.getGQPTri
MoM_Basics.getGQPTri
MoM_Basics.getGQPTriSglr
MoM_Basics.getGQPTriSglr
MoM_Basics.getHexasInfo
MoM_Basics.getMeshData
MoM_Basics.getNodeElems
MoM_Basics.getNodeElems
MoM_Basics.getNodeElems
MoM_Basics.getTetrasInfo
MoM_Basics.getTriangleInfo
MoM_Basics.globalObs2LocalObs
MoM_Basics.globalrvec2Local
MoM_Basics.globalrvec2Local
MoM_Basics.globalrvec2Local
MoM_Basics.globalrvec2Local
MoM_Basics.greenfunc
MoM_Basics.initialize_time_and_mem
MoM_Basics.inputBasicParameters
MoM_Basics.localObs2GlobalObs
MoM_Basics.localrvec2Global
MoM_Basics.localrvec2Global
MoM_Basics.localrvec2Global
MoM_Basics.localrvec2Global
MoM_Basics.modiParams!
MoM_Basics.modiSimulationParams!
MoM_Basics.nodes2Poles
MoM_Basics.radiationDirectionCoeff
MoM_Basics.radiationIntegralL0
MoM_Basics.radiationIntensityU_m
MoM_Basics.radiationPower
MoM_Basics.random_rhat
MoM_Basics.record_BFsInfo
MoM_Basics.record_CellInfo
MoM_Basics.rwgbfConstructerTrianglesInfoModifiers!
MoM_Basics.rwgbfnohalfConstructerTrianglesInfoModifiers!
MoM_Basics.saveSimulationParams
MoM_Basics.second_to_other
MoM_Basics.selectFreeVnID
MoM_Basics.selectFreeVnSSglrID
MoM_Basics.selectFreeVnSglrID
MoM_Basics.setGeosPermittivity!
MoM_Basics.setGeosPermittivity!
MoM_Basics.setHexaCoor!
MoM_Basics.setHexaParam!
MoM_Basics.setPrecision!
MoM_Basics.setQuad4Hexas!
MoM_Basics.setQuad4Hexas!
MoM_Basics.setRecordMem!
MoM_Basics.setTetraCoor!
MoM_Basics.setTetraParam!
MoM_Basics.setTriParam!
MoM_Basics.setTriangles4Tetras!
MoM_Basics.setTriangles4Tetras!
MoM_Basics.setTricoor!
MoM_Basics.setdiffArray!
MoM_Basics.setδκ!
MoM_Basics.setδκ!
MoM_Basics.show_memory_time
MoM_Basics.sincmath
MoM_Basics.sourceEfield
MoM_Basics.sourceEfield
MoM_Basics.sourceEfield
MoM_Basics.sourceEfield
MoM_Basics.sourceFarEfield
MoM_Basics.sourceFarEfield
MoM_Basics.sourceFarEfield
MoM_Basics.sourceHfield
MoM_Basics.sourceLocalEfield
MoM_Basics.sourceLocalEfield
MoM_Basics.sourceLocalFarEfield
MoM_Basics.sourceLocalFarEfield
MoM_Basics.sphere2cart
MoM_Basics.updateVSBFTParams!
MoM_Basics.updateVSBFTypes!
MoM_Basics.update_orient!
MoM_Basics.update_orient!
MoM_Basics.update_phase!
MoM_Basics.update_phase!
MoM_Basics.volume
MoM_Basics.volume
MoM_Basics.θϕInfofromCart
MoM_Basics.@clock
Docs
MoM_Basics.EDGEVmINTriVsID
— Constant三角形在构建时构成第i个边的两个点为三角形中的除了第i个点的两个点,以下为索引构成第i个边的第一个点(计算边向量被 - 掉)时采用的对应点
MoM_Basics.EDGEVpINTriVsID
— Constant三角形在构建时构成第i个边的两个点为三角形中的除了第i个点的两个点,以下为索引构成第i个边的第二个点(计算边向量时用于减去第二个点 掉)时采用的对应点
MoM_Basics.ExcitingSources
— Type复合激励类
MoM_Basics.GQ1DID2GQ3DIDVector
— Constant构建从六面体的 高斯求积线性索引 映射到 三维索引的数组
MoM_Basics.GQPNQuad
— Constant六面体边界四边形正常处理高斯求积时高斯求积点数。
MoM_Basics.GQPNQuad1D
— Constant六面体边界四边形 1 维度高斯求积点数。
MoM_Basics.GQPNQuad1DSSglr
— Constant处理超奇异性时六面体边界四边形 1 维度高斯求积点数。
MoM_Basics.GQPNQuad1DSglr
— Constant处理奇异性时六面体边界四边形 1 维度高斯求积点数。
MoM_Basics.GQPNQuadSSglr
— Constant六面体边界四边形处理超奇异性时高斯求积点数。
MoM_Basics.GQPNQuadSglr
— Constant六面体边界四边形处理奇异性时高斯求积点数。
MoM_Basics.Params
— Constant保存仿真参数的实例。
MoM_Basics.Precision
— Constant创建实例控制精度
MoM_Basics.QuadGQInfo
— Constant六面体边界四边形正常处理高斯求积信息。
MoM_Basics.QuadGQInfoSSglr
— Constant六面体边界四边形处理超奇异性高斯求积信息。
MoM_Basics.QuadGQInfoSglr
— Constant六面体边界四边形处理奇异性高斯求积信息。
MoM_Basics.SimulationParams
— Constant非数值仿真参数实例
MoM_Basics.VSBFTypes
— Constant创建常数实例保存仿真时的面、体基函数类型。
MoM_Basics.Vec3IdxCircle
— Constant1-3 的循环
MoM_Basics.facen2OppositeID
— Constant六面体的六个面的对面
MoM_Basics.facesVertIDs
— Constant六面体的六个面的端点
MoM_Basics.memory
— Constant程序内存记录字典
MoM_Basics.oppFacesVertIDs
— Constant六面体的六个面的 对面的 端点
MoM_Basics.timer
— Constant程序计时器字典
MoM_Basics.uv2FreeVnsDict
— Constant从四边形的 $uv$ 坐标映射到 自由端的 id
MoM_Basics.AbstractAntennaArray
— Type阵列天线抽象类
MoM_Basics.AntennaArray
— TypeAntennaArray{FT<:Real, AT, N} <: AbstractAntennaArray
机扫阵列天线 (mechanically scanned array, MSA)、相控阵 (Phased Array)阵列天线 orient 采用的是欧拉角,参考eulerRotationMat
注意阵列初始指向由提供的天线单元合成,作为阵列只提供指向旋转。
MoM_Basics.AntennaArray
— MethodAntennaArray(antennas::AbstractArray{AT, N}; center = zero(MVec3D{Precison.FT}), orient = (0., 0., 0.)) where {AT, N}
初始化阵列天线,默认为方阵。
MoM_Basics.AntennaType
— Type天线抽象类
MoM_Basics.BasisFunctionType
— Type基函数抽象类型
MoM_Basics.ConstBasisFunction
— Type常数基抽象类
MoM_Basics.ExcitingSource
— Type激励源抽象类
MoM_Basics.HexahedraInfo
— TypeHexahedraInfo{IT<: Integer, FT<:AbstractFloat, CT<:Complex} <: VolumeCellType{IT, FT, CT}
六面体信息结构体:
hexaID ::IT 编号
volume ::FT 体积
ε ::CT 相对介电常数
κ ::CT 介质对比度
center ::MVec3D{FT} 中心坐标
verticesID ::MVector{8, IT} 所在节点id
vertices ::MMatrix{3, 8, FT,24} 六面体4个角点坐标,每列为一个点
facesn̂ ::MMatrix{3, 8, FT,24} 四个面的外法向量
facesvid ::MMatrix{3, 8, IT,24} 四个面包含的四个id
facesArea ::MVector{6, FT} 四个面的面积(根据为unitri正负部分赋予正负号)
faces ::Vector{Quads4Hexa{IT, FT}} 四个面的具体信息
inBfsID ::Vector{IT} 六面体所在的基函数的ID
MoM_Basics.HexahedraInfo
— MethodHexahedraInfo{IT, FT, CT}(hexaID::IT = zero(IT)) where {IT <: Integer, FT<:AbstractFloat, CT<:Complex}
HexahedraInfo
的默认构造函数,除了输入的编号 hexaID
外所有元素置零。
MoM_Basics.HexahedraMesh
— TypeHexahedraMesh{IT, FT} <: MeshDataType
六面体网格文件,包括六面体数 hexnum
、节点 node
、构成六面体的节点 id 数组 hexahedras
等信息。
MoM_Basics.LinearBasisFunction
— Type线性基抽象类
MoM_Basics.MagneticDipole
— TypeMagneticDipole(id = 0; Iml = 0., phase = 0., orient = zero(MVec3D{Float32}), centerlc = zero(MVec3D{Float32}), centergb = zero(MVec3D{Float32}))
精度可变的 MagneticDipole 构造函数
MoM_Basics.MagneticDipole
— TypeMagneticDipole{FT<: Real}<:AntennaType
磁偶极子天线类型。
id ::Integer 编号
Iml ::Complex{FT} 磁流线值
V ::FT 磁流线幅值
phase ::FT 相位
orient ::MVec3D{FT} 指向欧拉角
centerlc::MVec3D{FT} 局部坐标下的中心位置
centergb::MVec3D{FT} 全局坐标下的中心位置
l2gRot ::MMatrix{3, 3, FT, 9} 局部坐标到全局坐标的旋转变换矩阵
MoM_Basics.MagneticDipole
— Method MagneticDipole{FT}(
id ::Int32 = zero(Int32); # 编号
Iml ::CT = zero(CT), # 磁流线值
phase ::FT = zero(FT), # 相位(输入弧度(rad)单位)
orient ::MVec3D{FT} = zero(MVec3D{FT}), # 指向欧拉角
centerlc::MVec3D{FT} = zero(MVec3D{FT}), # 局部坐标下的中心位置
centergb::MVec3D{FT} = zero(MVec3D{FT}), # 全局坐标下的中心位置
I0S ::FT = zero(FT), # 电流环幅值
unit = :rad )
where{FT <: Real, CT <: Complex{FT}}
MoM_Basics.MeshDataType
— Type网格数据抽象类型
MoM_Basics.MeshFormat
— Type网格文件抽象类型
MoM_Basics.MeshNodeTriTetraHexa
— TypeMeshNodeTriTetraHexa{IT, FT} <: MeshDataType
三角形、四面体、六面体混合网格数据类型:
geonum ::Int 包含的所有网格元的数量
meshT ::DataType 网格类型 单一的以其网格类型表示,混合以 VSCellType 表示
trinum ::Int 包含的三角形数量
tetranum ::Int 包含的四面体数量
hexanum ::Int 包含的六面体数量
node ::Array{FT, 2} 节点坐标数组(3*nodenum)
triangles ::Array{IT, 2} 三角形包含的nodeid数组:(3*trinum)
tetrahedras ::Array{IT, 2} 四面体包含的nodeid数组:(4*tetranum)
hexahedras ::Array{IT, 2} 六面体包含的nodeid数组:(6*hexanum)
MoM_Basics.NasMesh
— Type.nas 网格文件类型。
MoM_Basics.PWC
— TypePWC{IT<:Integer , FT<:AbstractFloat} <: ConstBasisFunction
PWC 基函数复合类型:
bfID ::IT 基函数编号
inGeo ::IT 基函数所在两个四面体编号
center ::MVec3D{FT} 基函数中心,用于八叉树分组
MoM_Basics.PWC
— MethodPWC{IT, FT}() where {IT <: Integer, FT<:AbstractFloat}
PWC 的默认构造函数,所有元素置零。
MoM_Basics.ParamsType
— TypeParamsType{FT<:AbstractFloat, CT<:Complex{FT}}
创建参数类型以方便保存仿真参数并控制精度:
frequency ::FT 频率
ω_0 ::FT 角频率
K_0 ::FT 波数
λ_0 ::CT 波长
Jη_0divK ::CT 常数
JK_0 ::CT 常数
k² ::FT 常数
divJω ::CT 常数
mk²div9 ::FT 常数
mJη_0div4πK ::CT 常数
C4divk² ::FT 常数
JKηdiv16π ::CT 常数
div9Jω ::CT 常数
Rsglr ::FT 处理奇异性的相对距离阈值
resultDir ::String 存放结果的位置
MoM_Basics.ParamsType
— MethodParamsType{FT, CT}(frequency::FT) where{FT<:AbstractFloat, CT<:Complex{FT}}
ParamsType(frequency::FT) where {FT<:AbstractFloat}
ParamsType{FT}(frequency) where {FT<:AbstractFloat}
输入频率创建仿真参数实例。
MoM_Basics.PlaneWave
— TypePlaneWave{FT<:Real}<:ExcitingSource
平面波源:
θ ::FT 球坐标角度θ
ϕ ::FT 球坐标角度ϕ
α ::FT 波极化方向相对于 θhat_source 绕K̂_v旋转的角度
f ::FT 波频率
V ::FT 波激励幅度
E_v ::SVec3D{FT} 入射波电场极化矢量
k̂ ::SVec3D{FT} 入射波波矢向量
默认构造函数:
PlaneWave{FT}(θ::FT, ϕ::FT, α::FT, V::FT = one(FT))
MoM_Basics.PlaneWave
— MethodPlaneWave{FT}(θ, ϕ, α, V = one(FT)) where {FT}
类型自动转换的 PlaneWave
构造函数。
MoM_Basics.PrecisionT
— Type创建类型用于控制程序精度
MoM_Basics.Quads4Hexa
— TypeQuads4Hexa{IT<: Integer, FT<:AbstractFloat} <: SurfaceCellType{IT, FT}
单个构成六面体的四边形信息:
isbd ::Bool 是否在体区域边界,
δκ ::Complex{FT} 介质对比度变化量,
vertices ::MMatrix{3, 4, FT, 12} 四边形 4 个角点坐标,每列为一个点,
edgel ::MVector{4, FT} 四个边长,
edgev̂ ::MMatrix{3, 4, FT, 12} 四个边的单位指向向量,
edgen̂ ::MMatrix{3, 4, FT, 12} 四个边的单位外法向量。
合理安排位置后,四个基函数的自由端即为四边形四个点的顺序。
MoM_Basics.Quads4Hexa
— Method(q::Quads4Hexa)(u::FT, v::FT) where {FT}
计算六面体边界四边形在局部坐标 (u, v)
下的点。
MoM_Basics.Quads4Hexa
— MethodQuads4Hexa{IT, FT}() where {IT <: Integer, FT<:AbstractFloat}
Quads4Hexa的默认构造函数,默认为边界,其它所有元素置零。
MoM_Basics.RBF
— TypeRBF{IT<:Integer , FT<:AbstractFloat} <: LinearBasisFunction
屋顶基函数 (Rooftop basis function, RBF) 基函数复合类型:
isbd ::Bool 是否为边界元即半基函数,布尔类型
bfID ::IT 基函数编号,整形
inGeo ::MVector{2, IT} 基函数所在两个六面体编号(半基函数为1个,赋值成一样的两个),长度为2的向量数组
inGeoID ::MVector{2, IT} 基函数在两个六面体中的局部编号(半基函数为1个,赋值成一样的两个),取值1:4,长度为2的向量数组
center ::MVec3D{FT} 基函数中心,用于八叉树分组
MoM_Basics.RBF
— MethodRBF{IT, FT}() where {IT <: Integer, FT<:AbstractFloat}
RBF 的默认构造函数,所有元素置零。
MoM_Basics.RWG
— TypeRWG{IT<:Integer , FT<:AbstractFloat} <: LinearBasisFunction
RWG基函数复合类型:
isbd ::Bool 是否为边界元即半基函数,布尔类型
bfID ::IT 基函数编号,整形
edgel ::FT 基函数边长,浮点型
inGeo ::MVector{2, IT} 基函数所在两个三角形编号(半基函数为1个,赋值成一样的两个),长度为2的向量数组
inGeoID ::MVector{2, IT} 基函数在两个上面三角形中的局部编号(半基函数为1个,赋值成一样的两个),取值1:3,长度为2的向量数组
center ::MVec3D{FT} 基函数中心,用于八叉树分组
MoM_Basics.RWG
— MethodRWG{IT, FT}()where {IT <: Integer, FT<:AbstractFloat}
RWG 的默认构造函数,默认非面的边界,所有元素置零。
MoM_Basics.SWG
— TypeSWG 基函数复合类型参数解释:
isbd ::Bool 是否为边界元即半基函数
bfID ::IT 基函数编号,整形
inGeo ::MVector{2, IT} 基函数所在两个四面体编号(半基函数为1个,赋值成一样的两个),长度为2的向量数组
inGeoID ::MVector{2, IT} 基函数在两个四面体中的局部编号(半基函数为1个,赋值成一样的两个),取值1:4,长度为2的向量数组
center ::MVec3D{FT} 基函数公共面中心,用于八叉树分组
MoM_Basics.SWG
— MethodSWG{IT, FT}() where {IT <: Integer, FT<:AbstractFloat}
SWG 的默认构造函数,所有元素置零。
MoM_Basics.SimulationParamsType
— TypeSimulationParamsType
非数值仿真参数信息:
resultDir ::String 结果文件夹路径
ieT ::Symbol 积分方程类型,包括 EFIE, MFIE, CFIE等
meshfilename::String 网格文件名称
meshunit ::Symbol 网格文件单位
SHOWIMAGE ::Bool 根是否要在前端显示图片
discreteVar ::String 离散的体未知量类型,支持位移电流 `"D"` 或等效电流 `"J"`
sbfT ::Symbol 面基函数类型,目前仅支持 `:RWG`
vbfT ::Symbol 体基函数类型,目前支持 `:SWG, :RBF, :PWC`
recordMem ::Bool 是否记录内存信息
MoM_Basics.SimulationParamsType
— MethodSimulationParamsType(;ieT::Symbol=:EFIE, meshfilename::String = "", meshunit::Symbol = :mm,
SHOWIMAGE = true, discreteVar = "D", sbfT = :RWG, vbfT = :nothing)
SimulationParamsType
的默认构造函数。
MoM_Basics.SurfaceCellType
— Type面元
MoM_Basics.TetrahedraInfo
— TypeTetrahedraInfo{IT<: Integer, FT<:AbstractFloat, CT<:Complex} <: VolumeCellType{IT, FT, CT}
四面体信息结构体:
tetraID ::IT 编号
volume ::FT 体积
ε ::CT 相对介电常数
κ ::CT 介质对比度
center ::MVec3D{FT} 中心坐标
verticesID ::MVector{4, IT} 所在节点id
vertices ::MMatrix{3, 4, FT, 12} 四面体4个角点坐标,每列为一个点
facesn̂ ::MMatrix{3, 4, FT, 12} 四个面的外法向量
facesvid ::MMatrix{3, 4, IT, 12} 四个面包含的三个id
facesArea ::MVector{4, FT} 四个面的面积(根据为unitri正负部分赋予正负号)
faces ::Vector{Tris4Tetra{IT, FT}} 四个面的具体信息
inBfsID ::Vector{IT} 四面体所在的基函数的ID
MoM_Basics.TetrahedraInfo
— MethodTetrahedraInfo{IT, FT, CT}(hexaID::IT = zero(IT)) where {IT <: Integer, FT<:AbstractFloat, CT<:Complex}
TetrahedraInfo
的默认构造函数,除了输入的编号 tetraID
外所有元素置零。
MoM_Basics.TetrahedraMesh
— TypeHexahedraMesh{IT, FT} <: MeshDataType
四面体网格文件,包括四面体数 tetranum
、节点 node
、构成四面体的节点 id 数组 tetrahedras
等信息。
MoM_Basics.TriangleInfo
— TypeTriangleInfo{IT<: Integer, FT<:AbstractFloat} <: SurfaceCellType{IT, FT}
三角形信息结构体:
triID ::IT 编号
area ::FT 面积
verticesID ::MVector{3, IT} 所在节点id
vertices ::MMatrix{3, 3, FT, 9} 三角形3个角点坐标,每列为一个点
center ::MVec3D{FT} 中心坐标
facen̂ ::MVec3D{FT} 面的外法向量
edgel ::MVec3D 三边长
edgev̂ ::MMatrix{3, 3, FT, 9} 三个边的指向向量
edgen̂ ::MMatrix{3, 3, FT, 9} 三个边的外法向量
inBfsID ::MVector{3, IT} 三角形所在的三个基函数的ID
合理安排位置后,三个基函数的自由端即为三角形三个点的顺序。
MoM_Basics.TriangleInfo
— MethodTriangleInfo{IT, FT}(triID::IT = zero(IT)) where {IT <: Integer, FT<:AbstractFloat}
TriangleInfo
的默认构造函数,除了输入的编号 triID
外所有元素置零。
MoM_Basics.TriangleMesh
— TypeTriangleMesh{IT, FT} <: MeshDataType
三角形网格文件,包括三角形数 trinum
、节点 node
、构成三角形的节点 id 数组 triangles
等信息。
MoM_Basics.Tris4Tetra
— TypeTriangleInfo{IT<: Integer, FT<:AbstractFloat} <: SurfaceCellType{IT, FT}
构成四面体的三角形信息结构体:
isbd ::Bool 是否在边界上
δκ ::Complex{FT} 面两侧介质对比度差值
vertices ::MMatrix{3, 3, FT, 9} 三角形3个角点坐标,每列为一个点
edgel ::MVec3D{FT} 三边长
edgev̂ ::MMatrix{3, 3, FT, 9} 三个边的指向向量
edgen̂ ::MMatrix{3, 3, FT, 9} 三个边的外法向量
合理安排位置后,三个基函数的自由端即为三角形三个点的顺序。
MoM_Basics.Tris4Tetra
— MethodTris4Tetra{IT, FT}() where {IT <: Integer, FT<:AbstractFloat}
Tris4Tetra
的默认构造函数,默认在边界上,其它所有元素置零。
MoM_Basics.VSBFTstruct
— Type创建结构体保存面、体基函数类型。
MoM_Basics.VSCellType
— Type网格体、面元
MoM_Basics.VecCart2SphereMat
— TypeVecCart2SphereMat{T} <: FieldVector{3, Vec3D{T}}
矢量坐标系(直角 → 球)转换矩阵
r_hat :: Vec3DCart{T} r 方向的单位向量
θ_hat :: Vec3DCart{T} θ 方向的单位向量
ϕ_hat :: Vec3DCart{T} ϕ 方向的单位向量
MoM_Basics.VecCart2SphereMat
— MethodVecCart2SphereMat{FT}(θϕ::θϕInfo{FT}) where{FT<:AbstractFloat}
VecCart2SphereMat
在给定方向 θϕ
的构造函数。
MoM_Basics.VolumeCellType
— Type体元
MoM_Basics.r̂θϕInfo
— Typer̂θϕInfo{FT<:Real}
r̂ θ ϕ 空间角度信息类型,保存以避免大量重复计算
MoM_Basics.r̂θϕInfo
— Methodr̂θϕInfo{FT}(rvec::AbstractVector{FT}) where {FT<:Real}
输入直角坐标角度 rvec
构造 r̂θϕInfo
实例。
MoM_Basics.r̂θϕInfo
— Methodr̂θϕInfo(θ::FT = zero(FT), ϕ::FT = zero(FT)) where {FT<:Real}
r̂θϕInfo(θ::∠Info{FT}, ϕ::∠Info{FT}) where {FT<:Real}
r̂θϕInfo(θ::FT, ϕ::∠Info{FT}) where {FT<:Real}
r̂θϕInfo(θ::∠Info{FT}, ϕ::FT) where {FT<:Real}
r̂θϕInfo 的构造函数 输入角度 θ
和 ϕ
构造 r̂θϕInfo
实例。
MoM_Basics.θϕInfo
— TypeθϕInfo{FT<:Real}
θ ϕ 空间角度信息类型,保存以避免大量重复计算。
MoM_Basics.θϕInfo
— MethodθϕInfo{FT}(rvec::AbstractVector{FT}) where {FT<:Real}
输入直角坐标角度 rvec
构造 θϕInfo
实例。
MoM_Basics.θϕInfo
— MethodθϕInfo{FT}(θ::FT = zero(FT), ϕ::FT = zero(FT)) where {FT<:Real}
θϕInfo(θ::FT, ϕ::FT) where {FT<:Real}
θϕInfo{FT}(θ::∠Info{FT}, ϕ::∠Info{FT}) where {FT<:Real}
θϕInfo{FT}(θ::FT, ϕ::∠Info{FT}) where {FT<:Real}
θϕInfo{FT}(θ::∠Info{FT}, ϕ::FT) where {FT<:Real}
输入角度 θ
和 ϕ
构造 θϕInfo
实例。
MoM_Basics.∠Info
— Type∠Info{FT<:Real}
∠ 空间角度信息类型,保存以避免大量重复计算。
Base.:*
— MethodBase.:*(c2smat::VecCart2SphereMat{FT}, vec3D::Vec3D{T}) where {T<:Number, FT<:AbstractFloat}
重载 * 函数以计算向量在球坐标下的各个分量
MoM_Basics._nastran_string_to_float
— Method_nastran_string_to_float(string)
解析 .nas
文件中的字符串。
MoM_Basics.acrossbcrossc
— Methodacrossbcrossc(a, b, c)
更高效地计算矢量连续叉乘:$a × b × c = (c⋅a)b - (c⋅b)a$
MoM_Basics.add_phase!
— Methodadd_phase!(md::MagneticDipole{FT}, phase) where {FT <: Real}
为磁偶极 md
附加相位 phase
。
MoM_Basics.antennaArray
— FunctionantennaArray(arysize, aryorient, dgap = Tuple(fill(Params.λ_0/2, length(arysize)));
sourceConstructer, sourceT, sourceorientlc[, orientunit=:rad, coefftype = :uniform, arycenter = zero(MVec3D{Precision.FT})])
提供快捷的阵列构建函数。注意此处输入的阵列、单元指向必须为指定的欧拉角 (ZXZ) eulerRotationMat
。
MoM_Basics.area
— Methodarea(vertices::Vararg{T, 3}) where {T}
计算三个点vertices
组成的三角形面积。
MoM_Basics.area
— Methodarea(vertices::Vararg{T, 3}) where {T}
计算四个点vertices
组成的四边形面积。
MoM_Basics.boundaryRBF
— MethodboundaryRBF(h::vertices::Vararg{T, 8}) where {T}
重载面的提取顺序以匹配屋顶基函数 (RBF) 在六面体中的面按
\[u=1, u=0, v = 1, v = 0, w = 1, w = 0 \]
的顺序排列。
MoM_Basics.byte2other
— Methodbyte2other(v, mem_unit)
将以字节为单位的内存数据 v
转换为其它单位 mem_unit
。
MoM_Basics.cart2sphere
— Methodcart2sphere(xyz::Vararg{T, 3}) where {T}
将直角坐标 xyz
转换到球坐标。
MoM_Basics.cart2sphereMat
— Methodcart2sphereMat(θϕ::θϕInfo{FT}) where{FT<:Real}
cart2sphereMat(θ::FT, ϕ::FT) where{FT<:Real}
计算矢量坐标系(直角 → 球)转换矩阵。
MoM_Basics.constructFloat2IndexDict
— MethodconstructFloat2IndexDict(floats::AbstractVector{FT}) where {FT<:AbstractFloat}
构建有序(从小到大)浮点数为键,值为该组数构成的的二重字典,字典值为键的二维数组的线性坐标
MoM_Basics.constructGQ1DID2GQ3DIDVector
— MethodconstructGQ1DID2GQ3DIDVector(gqInfo)
构建从六面体体高斯求积点线性索引到三维索引的数组。
MoM_Basics.dist
— Methoddist(pa::AbstractVector{FT}, pb::AbstractVector{FT})::FT where {FT<:AbstractFloat}
dist(pa::Vec3D{FT}, pb::Vec3D{FT})::FT where {FT<:AbstractFloat}
dist(pa::Vec3D{FT})::FT where {FT<:AbstractFloat}
计算两点之间距离,比使用norm函数更高效。
MoM_Basics.eulerRMat2αβγ
— MethodeulerRMat2αβγ(l2gMat)
通过局部坐标到全局坐标的旋转矩阵 l2gMat
计算欧拉角。 旋转矩阵按绕 “z轴” → “x轴” → “z轴”的顺序,分别旋转 α, β, γ
度得到,本函数计算对应的三个角度 α, β, γ
。
MoM_Basics.eulerRotationMat
— MethodeulerRotationMat(α::FT, β::FT, γ::FT, unit::Symbol) where{FT<:Real}
根据坐标旋转的欧拉角计算旋转矩阵, 定义旋转顺序为: “滚动” → “俯仰” → “偏航”, 即按绕 “z轴” → “x轴” → “z轴”的顺序,分别旋转 α, β, γ 度 Wikipedia-Euler_angles 输入: α, β, γ, 旋转角度信息 unit: 输入角度值单位,默认为 :rad,可选 :deg 输出: rotMat :: SMatrix{3, 3, FT}, 坐标旋转矩阵 rotMat * vec 将 vec 从局部坐标转换回全局坐标
MoM_Basics.eulerRotationMat
— MethodeulerRotationMat(θ::FT, ϕ::FT, unit::Symbol) where{FT<:AbstractFloat}
计算转到给定指向 θ, ϕ
处的旋转矩阵,旋转一步到位,不发生自旋。
MoM_Basics.eulerRotationMat
— MethodeulerRotationMat(axis::Vec3D{FT}, θ::FT, unit::Symbol) where{FT<:Real}
计算天线阵按给定任意轴 axis
, 旋转 θ
` 角度的旋转矩阵。
MoM_Basics.eulerZunit
— MethodeulerZunit(α::FT, β::FT, γ::FT, unit::Symbol) where{FT<:Real}
计算给定欧拉角局部坐标 z
轴在全局坐标中的位置单位向量。
MoM_Basics.getBFTfromCellT
— Method根据网格元(如三角形、四边形、四面体、六面体等)获取基函数信息用于快速计算当前单元采用的基函数
MoM_Basics.getBFsFromMeshData
— MethodgetBFsFromMeshData(meshData; sbfT = :nothing, vbfT = :nothing)
通过网格信息 meshData
创建基函数信息。
MoM_Basics.getCellsBFs
— MethodgetCellsBFs(meshData, vbfT)
根据读取的网格数据生成网格元 + 基函数信息。
MoM_Basics.getCellsBFsFromFileName
— MethodgetCellsBFsFromFileName(meshFileName; meshUnit = MeshUnit, sbfT = :RWG, vbfT = :nothing)
通过文件名 meshFileName
直接读取网格元、创建基函数信息。
MoM_Basics.getCellsFromFileName
— MethodgetCellsFromFileName(meshFileName; meshUnit = MeshUnit, sbfT = :RWG, vbfT = :nothing)
通过文件名 meshFileName
直接读取网格元。
MoM_Basics.getConnectionMatrix
— MethodgetConnectionMatrix(meshData)
通过 meshData
获取节点与网格元之间的连接稀疏矩阵。
MoM_Basics.getFreeVIDFromGQ3DID
— MethodgetFreeVIDFromGQ3DID(GQ3DID::NTuple{3, Int}, i::Integer)
得到第 i 个面所在的基函数的 正常高斯求积 下,三维坐标为 GQ3DID
的高斯求积点的 “自由端$r₀$” 的序号。
MoM_Basics.getFreeVIDFromGQ3DIDSSglr
— MethodgetFreeVIDFromGQ3DIDSSglr(GQ3DID::NTuple{3, Int}, i::Integer)
得到第 i 个面所在的基函数的 处理超奇异性时,三维坐标为 GQ3DID
的高斯求积点的 “自由端$r₀$” 的序号。
MoM_Basics.getFreeVIDFromGQ3DIDSglr
— MethodgetFreeVIDFromGQ3DIDSglr(GQ3DID::NTuple{3, Int}, i::Integer)
得到第 i 个面所在的基函数的 处理奇异性时,三维坐标为 GQ3DID
的高斯求积点的 “自由端$r₀$” 的序号。
MoM_Basics.getFreeVns
— MethodgetFreeVns(hexa::HexahedraInfo, i::Integer)
得到六面体 hexa
第 i
个所在的基函数的 所有自由端( $r₀$ )。 该面定义为 $uvw$ 坐标中某值为 $1(0)$ 的面, 自由端应定义为在该面的 $uvw$ 坐标中,将该值赋值为 $0(1)$ 时计算得到的点 如 $u = 1$ 的面为六面体的第 $(2,6,7,3)$ 个点构成的面,$r₀$ 为 $uvw$ 坐标为 $(0, v, w)$ 的点,此点等同于 $u = 0$ 的面的四边形的参数坐标为 (v, w) 的点 在构造 RBF 时面按照 按 $u=1, u=0, v = 1, v = 0, w = 1, w = 0$ 的顺序排列, 因此函数根据输入的面的序号进行计算。
MoM_Basics.getFreeVnsSSglr
— MethodgetFreeVnsSSglr(hexa::HexahedraInfo, i::Integer)
得到六面体 hexa
处理超奇异性时第 i
个所在的基函数的 所有自由端( $r₀$ )。 定义详见getFreeVns
MoM_Basics.getFreeVnsSglr
— MethodgetFreeVns(hexa::HexahedraInfo, i::Integer)
得到六面体 hexa
处理奇异性时第 i
个所在的基函数的 所有自由端( $r₀$ )。 定义详见getFreeVns
MoM_Basics.getGQPHexa
— MethodgetGQPHexa(hexa::HexahedraInfo, ii::IT) where {IT <: Integer}
getGQPHexa(hexa::HexahedraInfo)
计算 hexa
正常求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPHexaSSglr
— MethodgetGQPHexaSSglr(hexa::HexahedraInfo, ii::IT) where {IT <: Integer}
getGQPHexaSSglr(hexa::HexahedraInfo)
计算 hexa
处理超奇异性求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPHexaSglr
— MethodgetGQPHexaSglr(hexa::HexahedraInfo, ii::IT) where {IT <: Integer}
getGQPHexaSglr(hexa::HexahedraInfo)
计算 hexa
处理奇异性求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPQuad
— MethodgetGQPQuad(quad::Quads4Hexa, ii::IT) where {IT <: Integer}
getGQPQuad(quad::Quads4Hexa)
计算 quad
正常求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPQuadSSglr
— MethodgetGQPQuadSSglr(quad::Quads4Hexa, ii::IT) where {IT <: Integer}
getGQPQuadSSglr(quad::Quads4Hexa)
计算 quad
处理超奇异性的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPQuadSglr
— MethodgetGQPQuadSglr(quad::Quads4Hexa, ii::IT) where {IT <: Integer}
getGQPQuadSglr(quad::Quads4Hexa)
计算 quad
处理奇异性的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPTetra
— MethodgetGQPTetra(tetra::TetrahedraInfo, i::IT) where {IT <: Integer}
getGQPTetra(tetra::TetrahedraInfo)
计算 tetra
正常求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPTetraSglr
— MethodgetGQPTetraSglr(tetra::TetrahedraInfo, i::IT) where {IT <: Integer}
getGQPTetraSglr(tetra::TetrahedraInfo)
计算 tetra
处理奇异性求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPTri
— MethodgetGQPTri(tri::TriangleInfo, i::IT) where {IT <: Integer}
getGQPTri(tri::TriangleInfo)
计算 tri
正常求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPTri
— MethodgetGQPTri(tri::Tris4Tetra, i::IT) where {IT <: Integer}
getGQPTri(tri::Tris4Tetra)
计算 tri
正常求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPTriSglr
— MethodgetGQPTriSglr(tri::TriangleInfo, i::IT) where {IT <: Integer}
getGQPTriSglr(tri::TriangleInfo)
计算 tri
处理奇异性求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getGQPTriSglr
— MethodgetGQPTriSglr(tri::Tris4Tetra, i::IT) where {IT <: Integer}
getGQPTriSglr(tri::Tris4Tetra)
计算 tri
处理奇异性求积的第 i
个或所有高斯求积坐标。
MoM_Basics.getHexasInfo
— MethodgetHexasInfo(hexameshData::HexahedraMesh{IT, FT}, VolumeBFType::Symbol) where{IT, FT}
根据六面体网格信息 hexameshData
和体基函数类型 VolumeBFType
生成网格信息向量 hexasInfo
和基函数信息向量 bfsInfo
。
MoM_Basics.getMeshData
— MethodgetMeshData(meshFileName::String; meshUnit=:mm)
读取文件中的节点坐标、三角形点、四面体点、六面体点
MoM_Basics.getNodeElems
— MethodgetNodeElems(::Val{:DAT}, pathname::ST; FT::Type{T}=Precision.FT, meshUnit = :m) where {ST <: AbstractString,T<:AbstractFloat}
读取 .dat
格式的自定义项目文件。
MoM_Basics.getNodeElems
— MethodgetNodeElems(::Val{:NAS}, pathname::ST; FT::Type{T}=Precision.FT, meshUnit = :mm) where {ST <: AbstractString,T<:AbstractFloat}
读取 .nas
文件中的节点坐标、三角形点、四面体点、六面体点。
MoM_Basics.getNodeElems
— MethodgetNodeTriTetraHexaVtk(pathname::ST; FT::Type{T}=Precision.FT, meshUnit = :m) where {ST <: AbstractString,T<:AbstractFloat}
读取 .vtk
文件中的节点坐标、三角形点、四面体点、六面体点(目前不支持六面体)。
MoM_Basics.getTetrasInfo
— MethodgetTetrasInfo(tetrameshData::TetrahedraMesh{IT, FT}, VolumeBFType::Symbol) where{IT, FT}
根据四面体网格信息 tetrameshData
和体基函数类型 VolumeBFType
生成网格信息向量 tetrasInfo
和基函数信息向量 bfsInfo
。
MoM_Basics.getTriangleInfo
— MethodgetTriangleInfo(trianglemeshData::TriangleMesh{IT, FT}) where{IT, FT}
根据网格信息 trianglemeshData
生成三角形信息 trianglesInfo
、RWG基函数信息 rwgsInfo
。
MoM_Basics.globalObs2LocalObs
— MethodglobalObs2LocalObs(r̂θϕs_obs::Matrix{r̂θϕInfo{FT}}, l2gRot::StaticMatrix{3,3, FT}) where {FT}
根据全局观测空间角度信息 r̂θϕs_obs
计算给定局部至全局坐标旋转矩阵 l2gRot
下局部坐标的观测空间角度信息。
MoM_Basics.globalrvec2Local
— Methodglobalrvec2Local(rvecglobal::Vec3D{T}, l2gRot::StaticMatrix{3,3, FT}, r0InGlobal::Vec3D{FT}) where {T<:Number, FT<:Real}
计算全局向量 rvecglobal
在给定局部至全局坐标旋转矩阵 l2gRot
下的局部坐标,局部坐标的原点在全局坐标的 r0InGlobal
处。
MoM_Basics.globalrvec2Local
— Methodglobalrvec2Local(rvecglobal::Vec3D{T}, l2gRot::StaticMatrix{3,3, FT}) where {T<:Number, FT<:Real}
计算全局向量 rvecglobal
在给定局部至全局坐标旋转矩阵 l2gRot
下的局部坐标。
MoM_Basics.globalrvec2Local
— Methodglobalrvec2Local(rvecsglobal::Matrix{T}, l2gRot::StaticMatrix{3,3, FT}, r0InGlobal::Vec3D{FT}) where {T<:Number, FT<:Real}
计算全局向量组成的矩阵 rvecsglobal
在给定局部至全局坐标旋转矩阵 l2gRot
下的局部坐标,局部坐标的原点在全局坐标的 r0InGlobal
处。
MoM_Basics.globalrvec2Local
— Methodglobalrvec2Local(rvecsglobal::Matrix{T}, l2gRot::StaticMatrix{3,3, FT}) where {T<:Number, FT<:Real}
计算全局向量组成的矩阵 rvecsglobal
在给定局部至全局坐标旋转矩阵 l2gRot
下的局部坐标。
MoM_Basics.greenfunc
— Methodgreenfunc(R::T) where {T<:AbstractFloat}
greenfunc(pa::Vec3D{T}, pb::Vec3D{T}) where {T<:AbstractFloat}
greenfunc(pa::AbstractVector{T}, pb::AbstractVector{T}) where {T<:AbstractFloat}
greenfunc(R::T, k::T) where {T<:AbstractFloat}
greenfunc(pa::Vec3D{T}, pb::Vec3D{T}, k::T) where {T<:AbstractFloat}
计算归一化自由空间格林函数 $g(R) = exp^{-1im*K_0*R}/R$
MoM_Basics.initialize_time_and_mem
— Methodinitialize_time_and_mem()
初始化计时器 timer
和内存记录 memory
。
MoM_Basics.inputBasicParameters
— MethodinputBasicParameters(;frequency::FT = 1e8, ieT::Symbol = :EFIE, CFIEα::FT = 0.6,
meshfilename::String = SimulationParams.meshfilename) where {FT<:AbstractFloat}
输入频率参数 frequency
,修改其它仿真参数的函数; 积分方程类型参数 ieT
,修改计算过程中采用的积分方程; CFIE混合系数 CFIEα
、网格文件名 meshfilename
。
MoM_Basics.localObs2GlobalObs
— MethodlocalObs2GlobalObs(r̂θϕs_obs::Matrix{r̂θϕInfo{FT}}, l2gRot::StaticMatrix{3,3, FT}) where {FT}
根据局部观测空间角度信息 r̂θϕs_obs
计算给定局部至全局坐标旋转矩阵 l2gRot
下全局坐标的观测空间角度信息。
MoM_Basics.localrvec2Global
— Methodlocalrvec2Global(rvecslocal::Vec3D{T}, l2gRot::StaticMatrix{3,3, FT}, r0InGlobal::Vec3D{FT}) where {T<:Number, FT<:Real}
计算局部向量 rveclocal
在给定局部至全局坐标旋转矩阵 l2gRot
下的全局坐标,局部坐标的原点在全局坐标的 r0InGlobal
处。
MoM_Basics.localrvec2Global
— Methodlocalrvec2Global(rvecslocal::Vec3D{T}, l2gRot::StaticMatrix{3,3, FT}) where {T<:Number, FT<:Real}
计算局部向量 rveclocal
在给定局部至全局坐标旋转矩阵 l2gRot
下的全局坐标。
MoM_Basics.localrvec2Global
— Methodlocalrvec2Global(rvecslocal::Matrix{T}, l2gRot::StaticMatrix{3,3, FT}, r0InGlobal::Vec3D{FT}) where {T<:Number, FT<:Real}
计算局部向量组成的矩阵 rvecslocal
在给定局部至全局坐标旋转矩阵 l2gRot
下的全局坐标,局部坐标的原点在全局坐标的 r0InGlobal
处。
MoM_Basics.localrvec2Global
— Methodlocalrvec2Global(rvecslocal::Matrix{T}, l2gRot::StaticMatrix{3,3, FT}) where {T<:Number, FT<:Real}
计算局部向量组成的矩阵 rvecslocal
在给定局部至全局坐标旋转矩阵 l2gRot
下的全局坐标。
MoM_Basics.modiParams!
— MethodmodiParams!( frequency, ω_0, K_0, λ_0, JKη_0, Jη_0divK, JK_0,
k², divJω, mk²div9, mJη_0div4πK,
C4divk², JKηdiv16π, div9Jω, Rsglr, CFIEα)
输入所有参数修改仿真参数的实例。
MoM_Basics.modiSimulationParams!
— MethodmodiSimulationParams!(;ieT::Symbol=SimulationParams.ieT,
meshfilename::String = SimulationParams.meshfilename,
meshunit = SimulationParams.meshunit,
SHOWIMAGE = SimulationParams.SHOWIMAGE,
discreteVar = SimulationParams.discreteVar
)
ieT ::Symbol, 积分方程类型,包括 EFIE, MFIE, CFIE等
MoM_Basics.nodes2Poles
— Methodnodes2Poles(nodes::Matrix{FT}) where {FT}
将球面散点 nodes
转化为角度信息实例 r̂θϕInfo
数组。
MoM_Basics.radiationDirectionCoeff
— MethodradiationDirectionCoeff(md::MagneticDipole{FT}, θϕ::θϕInfo{FT}) where {FT<:Real}
计算方向性系数:$D_m(θ, ϕ) = 4π U_m(θ, ϕ)/P_{rad}$。
MoM_Basics.radiationIntegralL0
— MethodradiationIntegralL0(md::MagneticDipole, θϕ::θϕInfo{FT}) where {FT<:Real}
磁偶极子的远场辐射积分计算函数,注意 θϕ
为偶极子的局部坐标。
MoM_Basics.radiationIntensityU_m
— MethodradiationIntensityU_m(md::MagneticDipole{FT}, θϕ::θϕInfo{FT}) where {FT<:Real}
计算磁流源的辐射强度函数 $U_m(θ, ϕ) = \frac{Y_0}{8λ_0²}(|L_θ|² + |L_ϕ|²)$。
MoM_Basics.radiationPower
— MethodradiationPower(md::MagneticDipole{FT}) where {FT<:Real}
计算辐射功率。 $P_{rad} = ∫∫ U(θ, ϕ)sinθ dθdϕ$ 对磁偶极子可直接在源缝表面积分: $P_{rad} = ∫∫ |E(r)|²/(2η₀) dxdy$
MoM_Basics.random_rhat
— Methodrandom_rhat(; FT = Precision.FT)
随机生成单位向量。
MoM_Basics.record_BFsInfo
— Methodrecord_BFsInfo(bfT::Symbol, nbf::Int; io::IO = Core.stdout)
在 io
中记录基函数类型 bfT
和数量 nbf
。
MoM_Basics.record_CellInfo
— Functionrecord_CellInfo(io::IO = Core.stdout; ntri = 0, ntetra = 0, nhexa = 0)
record_CellInfo(meshData; io::IO = Core.stdout)
在 io
中记录网格单元数量 ntri, ntetra, nhexa
。
MoM_Basics.rwgbfConstructerTrianglesInfoModifiers!
— MethodrwgbfConstructerTrianglesInfoModifiers!(trianglemeshData::TriangleMesh, trianglesInfo::Vector{TriangleInfo{IT, FT}}) where {IT<:Integer, FT<:AbstractFloat}
此函数采用排序算法,将每个边的两个点、在三角形中的对点、三角形、基函数等属性信息放在一个大数组中, 通过对不同的属性排序(如按边所在点随数组排序即可将边相同的点放在一起),即可得到基函数分组信息,以此可构造RWG基函数。 函数完成以下功能:
- 构造基函数类型实例数组(类似结构化数组)rwgsInfo记录基函数相关信息,并作为返回值;
- 写入三角形类型实例数组trianglesInfo中关于基函数的信息。
MoM_Basics.rwgbfnohalfConstructerTrianglesInfoModifiers!
— MethodrwgbfnohalfConstructerTrianglesInfoModifiers!(trianglemeshData::TriangleMesh, trianglesInfo::Vector{TriangleInfo{IT, FT}}) where {IT<:Integer, FT<:AbstractFloat}
此函数与rwgbfConstructerTrianglesInfoModifiers!
基本一致,不同在于不生成半基函数。
MoM_Basics.saveSimulationParams
— MethodsaveSimulationParams(;meshfilename::String = SimulationParams.meshfilename,
sbfT::Symbol = SimulationParams.sbfT, vbfT::Symbol = SimulationParams.vbfT)
保存仿真参数到结果文件中。
MoM_Basics.second_to_other
— Methodsecond_to_other(v, time_unit)
将以秒为单位的时间数据 v
转换为其它单位 time_unit
。
MoM_Basics.selectFreeVnID
— MethodselectFreeVnID(uvw::AbstractVector{FT}, i::Integer) where {FT}
根据 $uvw$ 计算得到第 i 个面所在的基函数的 正常高斯求积 时 “自由端( $r₀$ )” 的序号。
MoM_Basics.selectFreeVnSSglrID
— MethodselectFreeVnSSglrID(uvw::AbstractVector{FT}, i::Integer) where {FT}
根据 $uvw$ 得到第 i 个面所在的基函数的 处理超奇异性 求积时 “自由端( $r₀$ )” 的序号。
MoM_Basics.selectFreeVnSglrID
— MethodselectFreeVnSglrID(uvw::AbstractVector{FT}, i::Integer) where {FT}
根据 $uvw$ 得到第 i 个面所在的基函数的 处理奇异性 求积时 “自由端( $r₀$ )” 的序号。
MoM_Basics.setGeosPermittivity!
— MethodsetGeosPermittivity!(geosInfo::AbstractVector{VT}, εᵣ::CT = 1.0(1+0im)) where {VT<:TriangleInfo, CT<:Complex}
设置三角形网格介电常数,目前为空派发以方便体面积分方程计算中的多重派发。
MoM_Basics.setGeosPermittivity!
— MethodsetGeosPermittivity!(geosInfo::AbstractVector{VT}, εᵣ::CT = 1.0(1+0im)) where {VT<:VSCellType, CT<:Complex}
setGeosPermittivity!(geosInfo::AbstractVector{VT}, εᵣs::T) where {VT<:VSCellType, T<:AbstractVector}
setGeosPermittivity!(geosInfo::AbstractVector{VT}, εᵣ::CT = 1.0(1+0im)) where {VT<:AbstractVector, CT<:Complex}
设置四面体、六面体的介电常数 εᵣ
,并同时设置介质对比度,修改此函数以得到对应的数据。
MoM_Basics.setHexaCoor!
— MethodsetHexaCoor!( hexasInfo::Vector{HexahedraInfo{IT, FT, CT}}, hexaMeshData::HexahedraMesh{IT, FT}) where {IT<:Integer, FT<:AbstractFloat, CT<:Complex}
在预分配好的六面体数组 hexasInfo
里写入 hexaMeshData
中对应的六面体编号、点坐标、中心位置数据。
MoM_Basics.setHexaParam!
— MethodsetHexaParam!(hexasInfo::Vector{HexahedraInfo{IT, FT, CT}}) where {IT<:Integer, FT<:AbstractFloat, CT<:Complex}
计算六面体体积、面外法向量、面积,并写入 hexasInfo
。
MoM_Basics.setPrecision!
— MethodsetPrecision!(FT::Type{T}) where {T<:Union{Float32, Float64}}
设置仿真精度为 FT
。
MoM_Basics.setQuad4Hexas!
— MethodsetQuad4Hexas!(hexameshData::HexahedraMesh{IT, FT}, hexasInfo::Vector{HexahedraInfo{IT, FT, CT}}, ::Val{:PWC}) where {IT, FT, CT}
计算构成六面体的所有四边形,并将这些信息写入六面体 hexasInfo
,给分片常数 (PWC) 基函数赋值。
MoM_Basics.setQuad4Hexas!
— MethodsetQuad4Hexas!(hexameshData::HexahedraMesh{IT, FT}, hexasInfo::Vector{HexahedraInfo{IT, FT, CT}}, ::Val{:RBF}) where {IT, FT, CT}
计算构成六面体的所有四边形,并写入六面体 hexasInfo
,给屋顶基函数 (RBF) 基函数赋值。
MoM_Basics.setRecordMem!
— Function设置是否开启内存记录
MoM_Basics.setTetraCoor!
— MethodsetHexaCoor!( tetrasInfo::Vector{TetrahedraInfo{IT, FT, CT}}, tetraMeshData::TetrahedraMesh{IT, FT}) where {IT<:Integer, FT<:AbstractFloat, CT<:Complex}
在预分配好的四面体数组 tetrasInfo
里写入 tetraMeshData
中对应的四面体编号、点坐标、中心位置数据。
MoM_Basics.setTetraParam!
— MethodsetTetraParam!(tetrasInfo::Vector{TetrahedraInfo{IT, FT, CT}}) where {IT<:Integer, FT<:AbstractFloat, CT<:Complex}
计算四面体体积、面外法向量、面积,并写入 tetrasInfo
。
MoM_Basics.setTriParam!
— MethodsetTriParam!(triangleInfo::TriangleInfo)
计算三角形边长、边外法向量、面法向量、面积,直接写入 triangleInfo
。
MoM_Basics.setTriangles4Tetras!
— MethodsetTriangles4Tetras!(tetrameshData::TetrahedraMesh{IT, FT}, tetrasInfo::Vector{TetrahedraInfo{IT, FT, CT}}, ::Val{:PWC}) where {IT, FT, CT}
计算构成四面体的所有三角形,并将这些信息写入四面体 tetrasInfo
,给分片常数 (PWC) 基函数赋值。
MoM_Basics.setTriangles4Tetras!
— MethodsetTriangles4Tetras!(tetrameshData::TetrahedraMesh{IT, FT}, tetrasInfo::Vector{TetrahedraInfo{IT, FT, CT}}, ::Val{:SWG}) where {IT, FT, CT}
计算构成四面体的所有三角形,并将这些信息写入四面体 tetrasInfo
,给 SWG 基函数赋值。
MoM_Basics.setTricoor!
— MethodsetTricoor!( trianglesInfo::Vector{TriangleInfo{IT, FT}}, TriangleMeshData::TriangleMesh{IT, FT}) where {IT<:Integer, FT<:AbstractFloat}
在预分配好的三角形数组 trianglesInfo
里写入 TriangleMeshData
中对应的三角形编号、点坐标、中心位置数据。
MoM_Basics.setdiffArray!
— FunctionsetdiffArray!(ary[, dim = 1])
将阵列天线 ary
在 dim
方向一半单元设置为反相位,从而实现差方向图。
MoM_Basics.setδκ!
— Methodsetδκ!(hexasInfo::AbstractVector{HexahedraInfo{IT, FT, CT}}) where {IT<:Integer, FT<:Real, CT<:Complex{FT}}
设置六面体网格信息 hexasInfo
中每个面上的介质对比度差值。
MoM_Basics.setδκ!
— Methodsetδκ!(geosInfo::AbstractVector{VT}) where {VT<:VolumeCellType}
设置体网格信息 geosInfo
中每个面上的介质对比度差值。
MoM_Basics.show_memory_time
— Functionshow_memory_time(io::IO=Core.stdout; mem_unit = :MB, time_unit = :s)
展示时间内存消耗数据记录。
MoM_Basics.sincmath
— Methodsincmath(x::T) where{T<:Number}
Julia 自带 [sinc
] 函数计算的是归一化辛格函数:
$sinc(x) = sin(πx)/(πx)$
此处借用 sinc
,定义数学领域的非归一化 sinc 函数,即计算:
$sin(x)/x$
MoM_Basics.sourceEfield
— MethodsourceEfield(plw::PlaneWave, r)
计算平面波 plw
在全局坐标下给定位置 r
处的电场。
MoM_Basics.sourceEfield
— MethodsourceEfield(ary::AT, rvec::AbstractVector{FT}) where {FT<:Real, AT<:AbstractAntennaArray}
计算天线阵列 ary
在全局坐标下给定位置 rvec
处的电场。
MoM_Basics.sourceEfield
— MethodsourceEfield(md::MagneticDipole{FT}, r_observe::Vec3D{FT}; r_coortype::Symbol=:C) where {FT<:Real}
计算磁偶极 md
在全局坐标下给定位置 rvec
处的电场。
MoM_Basics.sourceEfield
— MethodsourceEfield(sources::Vector{ST}, rvec::AbstractVector{FT}) where {FT<:Real, ST<:ExcitingSource}
计算源向量 sources
在全局坐标下给定位置 rvec
处的远场电场。
MoM_Basics.sourceFarEfield
— MethodsourceFarEfield(ary::AT, r̂θϕ::r̂θϕInfo{FT}) where {FT<:Real, AT<:AbstractAntennaArray}
计算天线阵列 ary
在全局坐标下给定方向 r̂θϕ
的远场电场。
MoM_Basics.sourceFarEfield
— MethodsourceFarEfield(md::MagneticDipole{FT}, r̂θϕ::r̂θϕInfo{FT}) where {FT<:Real}
计算磁偶极 md
在全局坐标下给定方向 r̂θϕ
的远场电场。
MoM_Basics.sourceFarEfield
— MethodsourceFarEfield(sources::Vector{ST}, r̂θϕ::r̂θϕInfo{FT}) where {FT<:Real, ST<:ExcitingSource}
计算源向量 sources
在全局坐标下给定方向 r̂θϕ
的远场电场。
MoM_Basics.sourceHfield
— MethodsourceHfield(plw::PlaneWave, r)
计算平面波 plw
在全局坐标下给定位置 r
处的磁场。
MoM_Basics.sourceLocalEfield
— MethodsourceLocalEfield(ary::AT, rvec::AbstractVector{FT}) where {FT<:Real, AT<:AbstractAntennaArray}
计算天线阵列 ary
在阵列局部坐标下给定位置 rvec
处的电场。
MoM_Basics.sourceLocalEfield
— MethodsourceLocalEfield(md::MagneticDipole{FT}, r_observe::Vec3D{FT}; r_coortype::Symbol=:C) where {FT<:Real}
计算磁偶极 md
在磁偶极局部坐标给定位置 rvec
处的电场。
MoM_Basics.sourceLocalFarEfield
— MethodsourceLocalFarEfield(ary::AT, r̂θϕ::r̂θϕInfo{FT}) where {FT<:Real, AT<:AbstractAntennaArray}
计算天线阵列 ary
在阵列坐标下给定方向 r̂θϕ
的远场电场。
MoM_Basics.sourceLocalFarEfield
— MethodsourceLocalFarEfield(md::MagneticDipole{FT}, r̂θϕ::r̂θϕInfo{FT}) where {FT<:Real}
计算磁偶极 md
在磁偶极局部坐标下给定方向 r̂θϕ
的远场电场。
MoM_Basics.sphere2cart
— Methodsphere2cart(coor_sphere::AbstractVector{T}) where T<:Real
sphere2cart(coor_sphere...)
sphere2cart(r::T, θϕ::θϕInfo{T}) where T<:Real
将球坐标 coor_sphere
转换到直角坐标。
MoM_Basics.updateVSBFTParams!
— MethodupdateVSBFTParams!(;sbfT = :nothing, vbfT = :nothing)
通过输入符号更新体、面基函数类型常数实例。
MoM_Basics.updateVSBFTypes!
— MethodupdateVSBFTypes!(;sbfType = BasisFunctionType, vbfType = BasisFunctionType)
更新体、面基函数类型常数实例。
MoM_Basics.update_orient!
— Methodupdate_orient!(ary::AT; aryorient, sourceorientlc[, orientunit = :rad]) where {AT<:AbstractAntennaArray}
通过机械旋转更新天线阵列 ary
的阵列指向为 aryorient
,天线单元指向为 sourceorientlc
,指向角单位为 orientunit
。
MoM_Basics.update_orient!
— Methodupdate_orient!(md::MagneticDipole{FT}, orient, unit = :rad) where {FT <: Real}
更新磁偶极 md
指向为 orient
。
MoM_Basics.update_phase!
— Methodupdate_phase!(ary::AT, phase) where {AT<:AbstractAntennaArray}
更新指向相位
MoM_Basics.update_phase!
— Methodupdate_phase!(md::MagneticDipole{FT}, phase) where {FT <: Real}
设置磁偶极 md
的相位为 phase
。
MoM_Basics.volume
— Methodvolume(vertices::Vararg{T, 4}) where {T}
计算四个点vertices
组成的四面体体积。
MoM_Basics.volume
— Methodvolume(vertices::Vararg{T, 8}) where {T}
计算八个点vertices
组成的六面体体积。
MoM_Basics.θϕInfofromCart
— MethodθϕInfofromCart(rvec::Vec3D{FT}) where {FT<:Real}
从直角坐标 rvec
计算三角函数:$sinθ, cosθ, sinϕ, cosϕ$
MoM_Basics.@clock
— Macroclock(message, ex)
将表达式 ex
的运行时间以 message
为键保存在字典 timer
中。
MoM_Basics.GaussQuadrature4Geo
— Module创建模组用于支持集合体高斯求积运算。
MoM_Basics.GaussQuadrature4Geo.GaussQuadratureInfoStruct
— TypeGaussQuadratureInfoStruct{FT<:Real}
保存高斯求积相对坐标、权重等信息的结构体。
MoM_Basics.GaussQuadrature4Geo.GaussQuadratureInfo
— MethodGaussQuadratureInfo(GeoS::Symbol, GQN::IT, FT::DataType = Float64) where {IT<:Integer}
通过集合类型 GeoS
、高斯求积点数量 GQN
、浮点数据类型 FT
构造高斯求积信息实例。
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureHexa
— FunctiongaussQuadratureHexa( num::Integer = 8, FT::DataType=Float64)
计算六面体高斯求积局部坐标和权重。 num
为六面体高斯求积点数,本函数给出 1, 8, 27... i³ 的值,默认为8。
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureQuad
— FunctiongaussQuadratureQuad( num::Integer = 4, FT::DataType=Float64)
计算四边形高斯求积局部坐标和权重。 num
为四边形高斯求积点数,本函数给出 1, 4, 9 ... i² 的值,默认为4。
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureTetra
— FunctiongaussQuadratureTetra( num::Integer = 4, FT::DataType=Float64)
计算四面体高斯求积局部坐标和权重。 num
为四面体高斯求积点数,本函数给出1, 4, 5, 11的值,默认为4。
MoM_Basics.GaussQuadrature4Geo.gaussQuadratureTri
— FunctiongaussQuadratureTri( num::Integer = 3, FT::DataType = Float64)
计算三角形高斯求积局部坐标和权重。 num
为三角形高斯求积点数,本函数支持给出1, 3, 4, 6, 7的值,默认为3。
MoM_Basics.TaylorWins.calculateFm
— MethodcalculateFm(m, sp2, A, nbar)
计算 Fm。
MoM_Basics.TaylorWins.taylorwin
— Methodtaylorwin(L::IT, nbar = 4, sll = -30) where {IT<:Integer}
TAYLORWIN Taylor window.
TAYLORWIN(N) returns an N-point Taylor window in a column vector.
TAYLORWIN(N,nbar) returns an N-point Taylor window with nbar nearly constant-level sidelobes adjacent to the mainlobe. nbar must be an integer greater than or equal to one.
TAYLORWIN(N,nbar,sll) returns an N-point Taylor window with sll maximum sidelobe level in dB relative to the mainlobe peak. sll must be a negative value, e.g., -30 dB.
nbar should satisfy nbar >= 2*A^2+0.5, where A is equal to acosh(10^(-sll/20))/pi, otherwise the sidelobe level specified is not guaranteed. If nbar is not specified it defaults to 4. sll defaults to -30 dB if not specified.
EXAMPLE This example generates a 64-point Taylor window with 4 sidelobes adjacent to the mainlobe that are nearly constant-level, and a peak sidelobe level of -35 dB relative to the mainlobe peak.
w = taylorwin(64,5,-35); wvtool(w);
See also CHEBWIN.
Copyright 2005-2018 The MathWorks, Inc.
References: [1] Carrara, Walter G., Ronald M. Majewski, and Ron S. Goodman, Spotlight Synthetic Aperture Radar: Signal Processing Algorithms, Artech House, October 1, 1995. [2] Brookner, Eli, Practical Phased Array Antenna Systems, Artech House, Inc., 1991, pg. 2-51.