The smooth non-corregated version of the helium-carbon nanotube potential.
More...
#include <potential.h>
|
| GraphenePotential (const double, const double, const double, const double, const double) |
| Constructor.
|
|
| ~GraphenePotential () |
| Destructor.
|
|
double | V (const dVec &r) |
| Return the value of the van der Waals' interaction between a graphene sheet and a helium adatom at a position, r, above the sheet. More...
|
|
Array< dVec, 1 > | initialConfig (const Container *, MTRand &, const int) |
| Initial configuration corresponding to graphene-helium vdW potential. More...
|
|
| PotentialBase () |
| Constructor.
|
|
virtual | ~PotentialBase () |
| Destructor.
|
|
virtual double | V (const dVec &, const dVec &) |
| The effective potential for the pair product approximation.
|
|
virtual dVec | gradV (const dVec &) |
| The gradient of the potential.
|
|
virtual double | grad2V (const dVec &) |
| Grad^2 of the potential.
|
|
virtual double | dVdlambda (const dVec &, const dVec &) |
| The derivative of the effective potential with respect to lambda and tau.
|
|
virtual double | dVdtau (const dVec &, const dVec &) |
|
void | output (const double) |
| A debug method that output's the potential to a supplied separation. More...
|
|
virtual Array< double, 1 > | getExcLen () |
| Array to hold data elements. More...
|
|
|
double | tailV |
| Tail correction factor.
|
|
double | deltaSeparation (double sep1, double sep2) const |
| Return the minimum image difference for 1D separations.
|
|
The smooth non-corregated version of the helium-carbon nanotube potential.
- See also
- http://prb.aps.org/abstract/PRB/v62/i3/p2173_1
Returns van der Waals' potential between a helium adatom and a graphene sheet using summation in reciprocal space.
Author: Nathan Nichols Returns the potential energy resulting from a van der Waals' interaction between a helium adatom and a fixed infinite graphene lattice
Definition at line 1174 of file potential.h.
◆ initialConfig()
Array< dVec, 1 > GraphenePotential::initialConfig |
( |
const Container * |
boxPtr, |
|
|
MTRand & |
random, |
|
|
const int |
numParticles |
|
) |
| |
|
virtual |
Initial configuration corresponding to graphene-helium vdW potential.
Return an initial particle configuration.
We create particles at random locations above the graphene sheet.
Reimplemented from PotentialBase.
Definition at line 2571 of file potential.cpp.
2575 Array<dVec,1> initialPos(numParticles);
2577 double initSideCube = 1.0*numParticles;
2579 for (
int i = 0; i <
NDIM - 1; i++) {
2580 initSideCube /= boxPtr->
side[i];
2583 initSideCube /= ((boxPtr->
side[
NDIM-1] / 2.0) - 6.0);
2586 double initSide = pow((initSideCube),-1.0/(1.0*
NDIM));
2590 int totNumGridBoxes = 1;
2594 for (
int i = 0; i <
NDIM - 1; i++) {
2595 numNNGrid[i] =
static_cast<int>(ceil((boxPtr->
side[i] / initSide) -
EPS));
2598 if (numNNGrid[i] < 1)
2602 sizeNNGrid[i] = boxPtr->
side[i] / (1.0 * numNNGrid[i]);
2605 totNumGridBoxes *= numNNGrid[i];
2608 numNNGrid[
NDIM-1] =
static_cast<int>(ceil(((boxPtr->
side[
NDIM-1] - 12.0) / (2.0 * initSide)) -
EPS));
2611 if (numNNGrid[
NDIM-1] < 1)
2612 numNNGrid[
NDIM-1] = 1;
2615 sizeNNGrid[
NDIM-1] = (boxPtr->
side[
NDIM-1] - 12.0) / (2.0 * numNNGrid[
NDIM-1]);
2618 totNumGridBoxes *= numNNGrid[
NDIM-1];
2623 for (
int n = 0; n < totNumGridBoxes; n++) {
2626 for (
int i = 0; i <
NDIM; i++) {
2628 for (
int j = i+1; j <
NDIM; j++)
2629 scale *= numNNGrid[j];
2630 gridIndex[i] = (n/scale) % numNNGrid[i];
2633 for (
int i = 0; i <
NDIM - 1; i++)
2634 pos[i] = (gridIndex[i]+0.5)*sizeNNGrid[i] - 0.5*boxPtr->
side[i];
2636 pos[
NDIM - 1] = (gridIndex[
NDIM - 1]+0.5)*sizeNNGrid[
NDIM - 1] + 3.0;
2640 if (n < numParticles)
2641 initialPos(n) = pos;
virtual void putInside(dVec &) const =0
Place a vector inside the simulation cell.
dVec side
The linear dimensions of the box.
#define NDIM
Number of spatial dimnsions.
#define EPS
A small number.
TinyVector< double, NDIM > dVec
A NDIM-vector of type double.
#define PIMC_ASSERT(X)
Rename assert method.
TinyVector< int, NDIM > iVec
A NDIM-vector of type integer.
◆ V()
double GraphenePotential::V |
( |
const dVec & |
r | ) |
|
|
virtual |
Return the value of the van der Waals' interaction between a graphene sheet and a helium adatom at a position, r, above the sheet.
- Parameters
-
r | the position of a helium particle |
- Returns
- the van der Waals' potential for graphene-helium
Reimplemented from PotentialBase.
Definition at line 2526 of file potential.cpp.
2528 double z = r[2] + Lzo2;
2543 double prefactor = 0.;
2545 double v = (4.*M_PI/A)*epsilon*sigma*sigma*( ((2./5.)*pow((sigma/z),10)) - pow((sigma/z),4) );
2547 for (
double m = -1; m < 1+1; m++) {
2548 for (
double n = -1; n < 1+1; n++) {
2549 if ((m != 0) || (n != 0)){
2550 g = sqrt(pow((m*g1x + n*g2x),2.) + pow((m*g1y + n*g2y),2.));
2551 gdotb1 = ((m*g1x + n*g2x)*(b1x+x)) + ((m*g1y + n*g2y)*(b1y+y));
2552 gdotb2 = ((m*g1x + n*g2x)*(b2x+x)) + ((m*g1y + n*g2y)*(b2y+y));
2553 k5term = pow((g*sigma*sigma/2./z),5.)*boost::math::cyl_bessel_k(5., g*z)/30.;
2554 k2term = 2.*pow((g*sigma*sigma/2./z),2.)*boost::math::cyl_bessel_k(2., g*z);
2555 prefactor = epsilon*sigma*sigma*2.*M_PI/A;
2557 v_g = prefactor*(k5term-k2term);
2558 v += (cos(gdotb1)+cos(gdotb2))*v_g;
The documentation for this class was generated from the following files: