Solvers
BEM solvers
NESSie.BEM.BEMResult
— Typeabstract type BEMResult{T, E <: SurfaceElement{T}} end
Abstract base type for all BEM solver results
NESSie.BEM.LocalBEMResult
— Typestruct 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.
NESSie.BEM.NonlocalBEMResult
— Typestruct 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.
NESSie.BEM.solve
— Functionsolve(::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
)
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.