occ
Loading...
Searching...
No Matches
occ::mults::MultipoleInteractions Class Reference

High-level API for multipole electrostatic calculations. More...

#include <multipole_interactions.h>

Classes

struct  Config
 Configuration for interaction calculations. More...
 

Public Member Functions

 MultipoleInteractions ()
 
 MultipoleInteractions (const Config &config)
 
double compute_esp (const occ::dma::Mult &multipole, const Vec3 &site_position, const Vec3 &eval_point) const
 Compute electrostatic potential at a point.
 
std::vector< double > compute_esp_grid (const occ::dma::Mult &multipole, const Vec3 &site_position, Mat3NConstRef eval_points) const
 Compute ESP at multiple points (batch)
 
double compute_interaction_energy (const occ::dma::Mult &mult1, const Vec3 &pos1, const occ::dma::Mult &mult2, const Vec3 &pos2) const
 Compute interaction energy between two multipoles.
 
const Configconfig () const
 
const SFunctionEvaluatorevaluator () const
 

Detailed Description

High-level API for multipole electrostatic calculations.

Provides optimized multipole interaction calculations using:

  • Term filtering to skip zero multipole components (75-99% reduction)
  • Batch S-function evaluation
  • Pre-computed coefficients

This is the recommended API for production use.

Constructor & Destructor Documentation

◆ MultipoleInteractions() [1/2]

occ::mults::MultipoleInteractions::MultipoleInteractions ( )
inline

◆ MultipoleInteractions() [2/2]

occ::mults::MultipoleInteractions::MultipoleInteractions ( const Config config)
explicit

Member Function Documentation

◆ compute_esp()

double occ::mults::MultipoleInteractions::compute_esp ( const occ::dma::Mult multipole,
const Vec3 site_position,
const Vec3 eval_point 
) const

Compute electrostatic potential at a point.

ESP is computed as interaction energy between multipole and unit charge. Uses term filtering to skip zero multipole components.

Parameters
multipoleMultipole distribution at site
site_positionPosition of multipole site
eval_pointPosition where ESP is evaluated
Returns
ESP value in atomic units

◆ compute_esp_grid()

std::vector< double > occ::mults::MultipoleInteractions::compute_esp_grid ( const occ::dma::Mult multipole,
const Vec3 site_position,
Mat3NConstRef  eval_points 
) const

Compute ESP at multiple points (batch)

More efficient than calling compute_esp() in a loop because the term list is built once and reused.

Parameters
multipoleMultipole distribution
site_positionPosition of multipole site
eval_points3xN matrix where each column is an evaluation point
Returns
Vector of ESP values (N elements, same order as eval_points columns)

◆ compute_interaction_energy()

double occ::mults::MultipoleInteractions::compute_interaction_energy ( const occ::dma::Mult mult1,
const Vec3 pos1,
const occ::dma::Mult mult2,
const Vec3 pos2 
) const

Compute interaction energy between two multipoles.

Uses term filtering and batch evaluation for optimal performance. Typically 3-5x faster than naive evaluation for hexadecapole interactions.

Parameters
mult1First multipole distribution
pos1Position of first multipole
mult2Second multipole distribution
pos2Position of second multipole
Returns
Interaction energy in atomic units

◆ config()

const Config & occ::mults::MultipoleInteractions::config ( ) const
inline

◆ evaluator()

const SFunctionEvaluator & occ::mults::MultipoleInteractions::evaluator ( ) const
inline

The documentation for this class was generated from the following file: