Solvers

BEM solvers

NESSie.BEM.BEMResultType
abstract type BEMResult{T, E <: SurfaceElement{T}} end

Abstract base type for all BEM solver results

source
NESSie.BEM.LocalBEMResultType
struct LocalBEMResult{T, E} <: BEMResult{T, E}
    model::Model{T, E}
    u    ::Vector{T}   # [γ₀int(φ*)](ξ)    ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
    q    ::Vector{T}   # [γ₁int(φ*)](ξ)    ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
    umol ::Vector{T}   # [γ₀int(φ*mol)](ξ) ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
    qmol ::Vector{T}   # [γ₁int(φ*mol)](ξ) ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
end

Result data of the local solving process to be used for potential computation and post-processing, with Ξ being the list of observation points, that is, the set of triangle centroids.

source
NESSie.BEM.NonlocalBEMResultType
struct NonlocalBEMResult{T, E} <: BEMResult{T, E}
    model::Model{T, E}
    u    ::SubArray{T,1}   # [γ₀int(φ*)](ξ)    ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
    q    ::SubArray{T,1}   # [γ₁int(φ*)](ξ)    ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
    w    ::SubArray{T,1}   # [γ₀ext(Ψ)](ξ)     ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
    umol ::Vector{T}       # [γ₀int(φ*mol)](ξ) ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
    qmol ::Vector{T}       # [γ₁int(φ*mol)](ξ) ∀ ξ ∈ Ξ; premultiplied by 4π⋅ε0
end

Result data of the nonlocal solving process to be used for potential computation and post-processing, with Ξ being the list of observation points, that is, the set of triangle centroids.

source
NESSie.BEM.solveFunction
solve(::Type{<: LocalityType}, ::Model{T, Triangle{T}})

Computes the full local or nonlocal cauchy data on the surface of the given biomolecule.

Return type

LocalBEMResult{T, Triangle{T}} or NonlocalBEMResult{T, Triangle{T}}

Supported keyword arguments

  • method::Symbol = :gmres Solver implementation to be used (supported arguments: :gmres and :blas)
Note

The :blas method uses an explicit representation for the BEM systems and requires a substantial amount of memory that might easily exceed the available resources on your machine (the memory demands scale quadratically with the number of surface elements). The :gmres method, on the other hand, uses implicit system representations, which provide a small memory footprint even for large systems (the memory demands scale only linearly with the number of surface elements). This comes at the cost of additional computation time, which might exceed several hours, depending on the system size. If possible, we recommend the use of our CUDA- accelerated solvers from the CuNESSie.jl package instead.

source