Tinker9 70bd052 (Thu Nov 9 12:11:35 2023 -0800)
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
Particle Mesh Ewald

Classes

struct  tinker::PME
 Particle mesh ewald girds and parameters. More...
 

Typedefs

using tinker::PMEUnit = GenericUnit< PME, GenericUnitVersion::ENABLE_ON_DEVICE >
 

Functions

void tinker::pmeData (RcOp)
 
void tinker::fftData (RcOp)
 
void tinker::fftfront (PMEUnit)
 
void tinker::fftback (PMEUnit)
 
template<int LEVEL, int bsorder>
__device__ void tinker::bsplgen (real w, real *__restrict__ thetai, volatile real *__restrict__ bsbuild_)
 B-spline coefficients and derivatives for a single PME atomic site along a particular direction. See also subroutine bsplgen in pmestuf.f file. More...
 

Variables

cudaStream_t tinker::g::spme
 CUDA stream for the OpenACC async PME queue. More...
 
cudaEvent_t tinker::pme_event_start
 
cudaEvent_t tinker::pme_event_finish
 
PMEUnit tinker::epme_unit
 
PMEUnit tinker::ppme_unit
 
PMEUnit tinker::pvpme_unit
 
PMEUnit tinker::dpme_unit
 
real(* tinker::cmp )[10]
 
real(* tinker::fmp )[10]
 
real(* tinker::cphi )[10]
 
real(* tinker::fphi )[20]
 
real(* tinker::fuind )[3]
 
real(* tinker::fuinp )[3]
 
real(* tinker::fdip_phi1 )[10]
 
real(* tinker::fdip_phi2 )[10]
 
real(* tinker::cphidp )[10]
 
real(* tinker::fphidp )[20]
 
VirialBuffer tinker::vir_m
 
constexpr int tinker::TINKER_CU_THETA_ON_THE_FLY_GRID_MPOLE = 1
 
constexpr int tinker::TINKER_CU_THETA_ON_THE_FLY_GRID_UIND = 0
 
void tinker::bsplineFill (PMEUnit, int level)
 
void tinker::gridPchg (PMEUnit, real *pchg)
 
void tinker::gridDisp (PMEUnit, real *csix)
 
void tinker::gridMpole (PMEUnit, real(*fmp)[10])
 
void tinker::gridUind (PMEUnit, real(*find)[3], real(*finp)[3])
 
void tinker::pmeConv (PMEUnit)
 
void tinker::pmeConv (PMEUnit, VirialBuffer v)
 
void tinker::pmeConv (PMEUnit, EnergyBuffer e)
 
void tinker::pmeConv (PMEUnit, EnergyBuffer e, VirialBuffer v)
 
void tinker::fphiMpole (PMEUnit)
 
void tinker::fphiUind (PMEUnit, real(*fdip_phi1)[10], real(*fdip_phi2)[10], real(*fdip_sum_phi)[20])
 
void tinker::fphiUind2 (PMEUnit, real(*fdip_phi1)[10], real(*fdip_phi2)[10])
 
void tinker::rpoleToCmp ()
 
void tinker::cmpToFmp (PMEUnit, const real(*cmp)[10], real(*fmp)[10])
 
void tinker::cuindToFuind (PMEUnit, const real(*cind)[3], const real(*cinp)[3], real(*fuind)[3], real(*fuinp)[3])
 
void tinker::fphiToCphi (PMEUnit, const real(*fphi)[20], real(*cphi)[10])
 
void tinker::pmeStreamStartRecord (bool usePmeStream)
 
void tinker::pmeStreamStartWait (bool usePmeStream)
 
void tinker::pmeStreamFinishRecord (bool usePmeStream)
 
void tinker::pmeStreamFinishWait (bool usePmeStream)
 

Detailed Description


Class Documentation

◆ tinker::PME

struct tinker::PME

Particle mesh ewald girds and parameters.

!! In Tinker:
allocate igrid(3,n)
allocate (bsbuild(bsorder,bsorder))
allocate (thetai1(4,bsorder,n))
allocate (thetai2(4,bsorder,n))
allocate (thetai3(4,bsorder,n))
allocate (qfac(nfft1,nfft2,nfft3))
allocate (bsmod1(nfft1))
allocate (bsmod2(nfft2))
allocate (bsmod3(nfft3))
allocate (qgrid(2,nfft1,nfft2,nfft3))

Public Member Functions

void setParams (const Params &p)
 
PME::Params getParams () const
 
bool operator== (const Params &p) const
 
 ~PME ()
 

Public Attributes

real aewald
 
int nfft1
 
int nfft2
 
int nfft3
 
int bsorder
 
realbsmod1
 
realbsmod2
 
realbsmod3
 
realqgrid
 
int * igrid
 
realthetai1
 
realthetai2
 
realthetai3
 

Constructor & Destructor Documentation

◆ ~PME()

tinker::PME::~PME ( )

Member Function Documentation

◆ getParams()

PME::Params tinker::PME::getParams ( ) const

◆ operator==()

bool tinker::PME::operator== ( const Params p) const

◆ setParams()

void tinker::PME::setParams ( const Params p)

Member Data Documentation

◆ aewald

real tinker::PME::aewald

◆ bsmod1

real* tinker::PME::bsmod1

◆ bsmod2

real * tinker::PME::bsmod2

◆ bsmod3

real * tinker::PME::bsmod3

◆ bsorder

int tinker::PME::bsorder

◆ igrid

int* tinker::PME::igrid

◆ nfft1

int tinker::PME::nfft1

◆ nfft2

int tinker::PME::nfft2

◆ nfft3

int tinker::PME::nfft3

◆ qgrid

real* tinker::PME::qgrid

◆ thetai1

real* tinker::PME::thetai1

◆ thetai2

real * tinker::PME::thetai2

◆ thetai3

real * tinker::PME::thetai3

Typedef Documentation

◆ PMEUnit

using tinker::PMEUnit = typedef GenericUnit<PME, GenericUnitVersion::ENABLE_ON_DEVICE>

Function Documentation

◆ bsplgen()

template<int LEVEL, int bsorder>
__device__ void tinker::bsplgen ( real  w,
real *__restrict__  thetai,
volatile real *__restrict__  bsbuild_ 
)

B-spline coefficients and derivatives for a single PME atomic site along a particular direction. See also subroutine bsplgen in pmestuf.f file.

Template Parameters
bsorderDesired B-spline order; MAX_BSORDER is hard-coded to 5.
LEVELFlag to control the results in thetai, and must be:
  • greater than 0.
  • less than bsorder.
Parameters
wFractional distance to the reference PME grid point along a particular direction.
thetaiOutput array of size thetai[bsorder][MAX_BSORDER-1] in C or thetai(MAX_BSORDER-1,bsorder) in Fortran. Based on the value of LEVEL, the output is as follows,
  • LEVEL=1, B-spline coefficients are in thetai(1,:);
  • LEVEL=2, first derivatives are in thetai(2,:);
  • LEVEL=3, second derivatives are in thetai(3,:);
  • LEVEL=4, third derivatives are in thetai(4,:).
bsbuild_A CUDA working array of size MAX_BSORDER*MAX_BSORDER.

◆ bsplineFill()

void tinker::bsplineFill ( PMEUnit  ,
int  level 
)

◆ cmpToFmp()

void tinker::cmpToFmp ( PMEUnit  ,
const real(*)  cmp[10],
real(*)  fmp[10] 
)

◆ cuindToFuind()

void tinker::cuindToFuind ( PMEUnit  ,
const real(*)  cind[3],
const real(*)  cinp[3],
real(*)  fuind[3],
real(*)  fuinp[3] 
)

◆ fftback()

void tinker::fftback ( PMEUnit  )

◆ fftData()

void tinker::fftData ( RcOp  )
Note
This function must be called after pmeData has been called because it needs to know the number of pme objects created.

◆ fftfront()

void tinker::fftfront ( PMEUnit  )

◆ fphiMpole()

void tinker::fphiMpole ( PMEUnit  )

◆ fphiToCphi()

void tinker::fphiToCphi ( PMEUnit  ,
const real(*)  fphi[20],
real(*)  cphi[10] 
)

◆ fphiUind()

void tinker::fphiUind ( PMEUnit  ,
real(*)  fdip_phi1[10],
real(*)  fdip_phi2[10],
real(*)  fdip_sum_phi[20] 
)

◆ fphiUind2()

void tinker::fphiUind2 ( PMEUnit  ,
real(*)  fdip_phi1[10],
real(*)  fdip_phi2[10] 
)

◆ gridDisp()

void tinker::gridDisp ( PMEUnit  ,
real csix 
)

◆ gridMpole()

void tinker::gridMpole ( PMEUnit  ,
real(*)  fmp[10] 
)

◆ gridPchg()

void tinker::gridPchg ( PMEUnit  ,
real pchg 
)

◆ gridUind()

void tinker::gridUind ( PMEUnit  ,
real(*)  find[3],
real(*)  finp[3] 
)

◆ pmeConv() [1/4]

void tinker::pmeConv ( PMEUnit  )

◆ pmeConv() [2/4]

void tinker::pmeConv ( PMEUnit  ,
EnergyBuffer  e 
)

◆ pmeConv() [3/4]

void tinker::pmeConv ( PMEUnit  ,
EnergyBuffer  e,
VirialBuffer  v 
)

◆ pmeConv() [4/4]

void tinker::pmeConv ( PMEUnit  ,
VirialBuffer  v 
)

◆ pmeData()

void tinker::pmeData ( RcOp  )

◆ pmeStreamFinishRecord()

void tinker::pmeStreamFinishRecord ( bool  usePmeStream)

◆ pmeStreamFinishWait()

void tinker::pmeStreamFinishWait ( bool  usePmeStream)

◆ pmeStreamStartRecord()

void tinker::pmeStreamStartRecord ( bool  usePmeStream)

◆ pmeStreamStartWait()

void tinker::pmeStreamStartWait ( bool  usePmeStream)

◆ rpoleToCmp()

void tinker::rpoleToCmp ( )

Variable Documentation

◆ cmp

real(* tinker::cmp)[10]
extern

◆ cphi

real(* tinker::cphi)[10]
extern

◆ cphidp

real(* tinker::cphidp)[10]
extern

◆ dpme_unit

PMEUnit tinker::dpme_unit
extern

◆ epme_unit

PMEUnit tinker::epme_unit
extern

◆ fdip_phi1

real(* tinker::fdip_phi1)[10]
extern

◆ fdip_phi2

real(* tinker::fdip_phi2)[10]
extern

◆ fmp

real(* tinker::fmp)[10]
extern

◆ fphi

real(* tinker::fphi)[20]
extern

◆ fphidp

real(* tinker::fphidp)[20]
extern

◆ fuind

real(* tinker::fuind)[3]
extern

◆ fuinp

real(* tinker::fuinp)[3]
extern

◆ pme_event_finish

cudaEvent_t tinker::pme_event_finish
extern

◆ pme_event_start

cudaEvent_t tinker::pme_event_start
extern

◆ ppme_unit

PMEUnit tinker::ppme_unit
extern

◆ pvpme_unit

PMEUnit tinker::pvpme_unit
extern

◆ spme

cudaStream_t tinker::g::spme
extern

CUDA stream for the OpenACC async PME queue.

◆ TINKER_CU_THETA_ON_THE_FLY_GRID_MPOLE

constexpr int tinker::TINKER_CU_THETA_ON_THE_FLY_GRID_MPOLE = 1
constexpr

◆ TINKER_CU_THETA_ON_THE_FLY_GRID_UIND

constexpr int tinker::TINKER_CU_THETA_ON_THE_FLY_GRID_UIND = 0
constexpr

◆ vir_m

VirialBuffer tinker::vir_m
extern