occ
|
Handles 1D multipole shifting operations along a single axis. More...
#include <linear_multipole_shifter.h>
Public Member Functions | |
LinearMultipoleShifter (double position, Mult &multipoles, const Mat3N &site_positions, const Vec &site_radii, const IVec &site_limits, std::vector< Mult > &site_multipoles, int max_rank) | |
Construct a shifter for moving multipoles to sites along an axis. | |
void | move_to_sites () |
Move multipoles from source position to nearest appropriate sites. | |
Static Public Member Functions | |
static void | shift_along_axis (const Mult &source, int l1, int m1, Mult &destination, int m2, double displacement) |
Shift multipoles along the axis between two points. | |
Handles 1D multipole shifting operations along a single axis.
This class encapsulates the functionality for shifting multipole moments along a linear axis (typically z-axis) and moving them between sites. It provides a modern C++ interface for operations that were originally implemented as separate shiftz/movez functions.
occ::dma::LinearMultipoleShifter::LinearMultipoleShifter | ( | double | position, |
Mult & | multipoles, | ||
const Mat3N & | site_positions, | ||
const Vec & | site_radii, | ||
const IVec & | site_limits, | ||
std::vector< Mult > & | site_multipoles, | ||
int | max_rank | ||
) |
Construct a shifter for moving multipoles to sites along an axis.
position | Source position along the axis |
multipoles | Source multipoles to be moved |
site_positions | Matrix of site positions (only z-component used) |
site_radii | Vector of site radii |
site_limits | Vector of maximum multipole ranks for each site |
site_multipoles | Vector of multipoles at each site |
max_rank | Maximum multipole rank to consider |
void occ::dma::LinearMultipoleShifter::move_to_sites | ( | ) |
Move multipoles from source position to nearest appropriate sites.
This implements the logic from the original movez function, distributing multipoles to the nearest sites along the axis based on distance and site limits.
|
static |
Shift multipoles along the axis between two points.
source | Source multipoles |
l1 | Minimum rank to shift |
m1 | Maximum rank to shift from source |
destination | Destination multipoles |
m2 | Maximum rank to keep at destination |
displacement | Displacement along the axis |