Quadrature

Quadrature points

NESSie.QuadPts2DType
struct QuadPts2D{T} <: QuadraturePoints{T}
    num   ::Int         # number of points
    x     ::Vector{T}   # x values
    y     ::Vector{T}   # y values
    weight::Vector{T}   # weights
end

Quadrature points and weights for triangles

source
NESSie.QuadPts3DType
struct QuadPts3D{T} <: QuadraturePoints{T}
    num   ::Int         # number of points
    x     ::Vector{T}   # x values
    y     ::Vector{T}   # y values
    z     ::Vector{T}   # z values
    weight::Vector{T}   # weights
end

Quadrature points and weights for tetrahedra

source

Quadrature points on elements

NESSie.ElementQuadType
abstract type ElementQuad{T <: AbstractFloat} end

Abstract base type for quadrature points on specific elements

source
NESSie.TriangleQuadType
struct TriangleQuad{T} <: ElementQuad{T}
    elem   ::Triangle{T}   # given element
    qpts   ::Matrix{T}     # quadrature points on the element
    weights::Vector{T}     # weights for the quadrature points
end

Quadrature points on a specific surface triangle, including weights.

Special constructors

julia TriangleQuad(elem::Triangle{T})` Computes quadrature points and weights for the given triangle.

source

Generators

NESSie.quadraturepointsFunction
quadraturepoints(::Type{Tetrahedron{Float64}})
quadraturepoints(::Type{Tetrahedron{Float32}})
quadraturepoints(::Type{Triangle{Float64}})
quadraturepoints(::Type{Triangle{Float32}})

Generator function for quadrature points:

  • Triangles: 7 points per element [Rad48]
  • Tetrahedra: 5 points per element [Kea86]

Return type

QuadPts2D or QuadPts3D

source

Laplace potential

NESSie.Rjasanow.laplacecollFunction
laplacecoll(
    ptype::Type{<: PotentialType},
    ξ    ::AbstractVector{T},
    elem ::AbstractVector{Triangle{T}};
    # kwargs
    dat  ::AbstractVector{T} = Vector{T}(undef, 12)
)

Analytical solution for the single or double layer Laplace potential for a given triangle and observation point ξ [Rja90].

Arguments

  • dat Writable vector for internal use (pre-allocate and reuse if possible)
Note

The result is premultiplied by 4π.

Return type

Void

source
NESSie.Rjasanow.laplacecoll!Function
laplacecoll!(
    ptype   ::Type{<: PotentialType},
    dest    ::AbstractVector{T},
    elements::AbstractVector{Triangle{T}},
    Ξ       ::AbstractVector{Vector{T}},
    fvals   ::AbstractVector{T}
)

laplacecoll!(
    ptype   ::Type{<: PotentialType},
    dest    ::AbstractMatrix{T},
    elements::AbstractVector{Triangle{T}},
    Ξ       ::AbstractVector{Vector{T}}
)

Analytical solution for the single or double layer Laplace potential for a given list of triangles and observation points Ξ [Rja90].

The first version of this function uses a vector as destination dest, where each element represents the dot product of the corresponding coefficient matrix row and the fvals vector.

Note

The result is premultiplied by 4π.

Return type

Void

source

Yukawa potential

NESSie.Radon.regularyukawacollFunction
regularyukawacoll(
          ::Type{<: PotentialType},
    ξ     ::AbstractVector{T},
    elem  ::Union{Triangle{T}, TriangleQuad{T}},
    yukawa::T
)

Computes the regular part of the single or double layer Yukawa potential (that is, Yukawa minus Laplace) using a seven-point Radon cubature [Rad48] for a given triangle and observation point ξ.

Note

The result is premultiplied by 4π.

Note

If you need to call this method repeatedly for the same surface triangle, you should consider passing the elem parameter as TriangleQuad object to avoid expensive recomputations.

Arguments

  • yukawa Exponent of the Yukawa operator's fundamental solution

Return type

Void

source
NESSie.Radon.regularyukawacoll!Function
regularyukawacoll!(
            ::Type{<: PotentialType},
    dest    ::AbstractVector{T},
    elements::AbstractVector{Triangle{T}},
    Ξ       ::AbstractVector{Vector{T}},
    yukawa  ::T,
    fvals   ::AbstractVector{T}
)

regularyukawacoll!(
            ::Type{<: PotentialType},
    dest    ::AbstractMatrix{T},
    elements::AbstractVector{Triangle{T}},
    Ξ       ::AbstractVector{Vector{T}},
    yukawa  ::T
)

Computes the regular part of the single or double layer Yukawa potential (that is, Yukawa minus Laplace) using a seven-point Radon cubature [Rad48] for a given list of triangles and observation points Ξ.

The first version of this function uses a vector as destination dest, where each element represents the dot product of the corresponding coefficient matrix row and the fvals vector.

Note

The result is premultiplied by 4π.

Arguments

  • yukawa Exponent of the Yukawa operator's fundamental solution

Return type

Void

source