occ
Loading...
Searching...
No Matches
occ::dma::LinearMultipoleShifter Class Reference

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.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ LinearMultipoleShifter()

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.

Parameters
positionSource position along the axis
multipolesSource multipoles to be moved
site_positionsMatrix of site positions (only z-component used)
site_radiiVector of site radii
site_limitsVector of maximum multipole ranks for each site
site_multipolesVector of multipoles at each site
max_rankMaximum multipole rank to consider

Member Function Documentation

◆ move_to_sites()

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.

◆ shift_along_axis()

static void occ::dma::LinearMultipoleShifter::shift_along_axis ( const Mult source,
int  l1,
int  m1,
Mult destination,
int  m2,
double  displacement 
)
static

Shift multipoles along the axis between two points.

Parameters
sourceSource multipoles
l1Minimum rank to shift
m1Maximum rank to shift from source
destinationDestination multipoles
m2Maximum rank to keep at destination
displacementDisplacement along the axis

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