JDFTx  1.7.0
ColumnBundleTransform Class Reference

Handle transformation of ColumnBundles upon symmetry operations. More...

#include <ColumnBundleTransform.h>

Classes

struct  BasisWrapper
 

Public Member Functions

 ColumnBundleTransform (const vector3<> &kC, const Basis &basisC, const vector3<> &kD, const BasisWrapper &basisDwrapper, int nSpinor, const SpaceGroupOp &sym, int invert, const matrix3< int > &super=matrix3< int >(1, 1, 1))
 
 ColumnBundleTransform (const ColumnBundleTransform &)=delete
 
ColumnBundleTransformoperator= (const ColumnBundleTransform &)=delete
 
void scatterAxpy (complex alpha, const ColumnBundle &C_C, int bC, ColumnBundle &C_D, int bD) const
 scatter-accumulate a single column
 
void gatherAxpy (complex alpha, const ColumnBundle &C_D, int bD, ColumnBundle &C_C, int bC) const
 gather-accumulate a single column
 
void scatterAxpy (complex alpha, const ColumnBundle &C_C, ColumnBundle &C_D, int bDstart, int bDstep) const
 scatter-accumulate all columns of C_C
 
void gatherAxpy (complex alpha, const ColumnBundle &C_D, int bDstart, int bDstep, ColumnBundle &C_C) const
 gather-accumulate all columns of C_C
 
std::vector< matrixtransformVdagC (const std::vector< matrix > &VdagC_C, int iSym) const
 

Friends

class WannierMinimizer
 

Detailed Description

Handle transformation of ColumnBundles upon symmetry operations.

Constructor & Destructor Documentation

◆ ColumnBundleTransform()

ColumnBundleTransform::ColumnBundleTransform ( const vector3<> &  kC,
const Basis basisC,
const vector3<> &  kD,
const BasisWrapper basisDwrapper,
int  nSpinor,
const SpaceGroupOp sym,
int  invert,
const matrix3< int > &  super = matrix3< int >(1, 1, 1) 
)

Define transformations between basis/k 'C' indexed continuously and basis/k 'D' indexed discontinuously i.e. scatter will occur from C to D, whereas gather will occur from D to C. The D basis is wrapped so that a lookup table generated during construction can be reused if many transformations to a common D are required. The symmetry operation sym is in covariant lattice coordinates, and explicit k-point inversion is specified by invert = +/- 1. Optionally, super specifies a transform to a supercell (D corresponds to a supercell of C); columnbundles will however not be automatically re-normalized for the supercell Note that the transformation is kD = kC * sym * invert * super + offset (where offset is determined automatically). If the ColumnBundles are spinorial (nSpinor=2), corresponding spin-space transformations will also be applied

Member Function Documentation

◆ transformVdagC()

std::vector<matrix> ColumnBundleTransform::transformVdagC ( const std::vector< matrix > &  VdagC_C,
int  iSym 
) const

Transform psp projection VdagC_C to VdagC_D. Need iSym for spherical and atom transformations. Does not support supercell transformations.


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