39 virtual double V(
const dVec &) {
return 0.0; }
42 virtual double V(
const dVec &,
const dVec &) {
return 0.0; }
53 virtual double dVdtau(
const dVec &,
const dVec &) {
return 0.0;}
101 virtual double newtonGregory(
const Array<double,1>&,
const TinyVector<double,2>&,
const double);
104 virtual double direct(
const Array<double,1>&,
const TinyVector<double,2>&,
const double);
107 virtual double valueV (
const double) = 0;
129 double V(
const dVec &sep) {
return 0.0*sep[0]; };
155 return (omega2*dot(r,r)/(4.0*
constants()->lambda()));
162 return (omega2*tempr/(2.0*
constants()->lambda()));
182 double r2 = dot(r,r);
183 return ( 0.5*r2 + r2*r2 );
188 double r2 = dot(r,r);
191 return ((1.0 + 4.0*r2)*tempr);
210 for (
int i=0; i <
NDIM-1; i++)
212 return ( 0.5 * c *
constants()->m() * w * w * r2 );
219 for (
int i=0; i <
NDIM-1; i++)
221 return ( c *
constants()->m() * w * w * tempr );
250 return (norm*exp(-dot(r,r)*inv2sigma2));
259 return (-2.0*r*norm*inv2sigma2*exp(-dot(r,r)*inv2sigma2));
286 return (norm / (a*a + dot(r,r)));
295 double b = a*a + dot(r,r);
296 return ((-(2.0*norm*a)/(b*b))*r);
322 double x = pioL*(sqrt(dot(r,r)) +
EPS);
323 return g * pioL * pioL / (sin(x)*sin(x));
330 double rnorm = sqrt(dot(r,r)) +
EPS;
331 double x = pioL*rnorm;
333 return (-2.0* g * pioL * pioL * pioL * cos(x) / (s*s*s*rnorm)) * r;
340 double x = pioL*(sqrt(dot(r,r))+
EPS);
342 return 2.0* g * pioL * pioL * pioL * pioL * (2.0+cos(2*x)) /
369 double x = sqrt(dot(r,r));
380 double x = sqrt(dot(r,r));
383 return (-3.0/(x*x*x*x*x)) * r;
390 double x = sqrt(dot(r,r));
393 return 6.0/(x*x*x*x*x);
412 if (sqrt(r[0]*r[0]+r[1]*r[1]) >= R)
423 if (abs((r[0]*r[0]+r[1]*r[1])-R*R)<1.0E-3)
447 int k =
static_cast<int>(sqrt(r[0]*r[0] + r[1]*r[1])/dR);
465 double V_ (
const double,
const double,
const double,
const double,
const double);
466 double dVdr_ (
const double,
const double,
const double,
const double,
const double);
469 double densityPlated;
471 double epsilonPlated;
483 double valueV (
const double);
484 double valuedVdr (
const double);
485 double valued2Vdr2 (
const double);
497 double rnorm = sqrt(r[0]*r[0] + r[1]*r[1]);
501 int k =
static_cast<int>(rnorm/dR);
515 double rnorm = sqrt(r[0]*r[0] + r[1]*r[1]);
519 int k =
static_cast<int>(rnorm/dR);
542 int k =
static_cast<int>(sqrt(r[0]*r[0] + r[1]*r[1])/dR);
570 double valueV (
const double);
571 double valuedVdr (
const double);
572 double valued2Vdr2 (
const double);
584 double rnorm = sqrt(r[0]*r[0] + r[1]*r[1]);
588 int k =
static_cast<int>(rnorm/dR);
602 double rnorm = sqrt(r[0]*r[0] + r[1]*r[1]);
606 int k =
static_cast<int>(rnorm/dR);
629 double V(
const dVec &);
661 double Rlinear(
double z) {
662 return (2.0*dR*abs(z)/L + R - dR);
665 double Rtanh(
double z) {
666 double t = R0*tanh(z*invd);
667 return (dR*t*t + R - dR);
684 double V(
const dVec &);
694 double rm, A, epsilon, alpha, D, C6, C8, C10;
697 double valueV (
const double);
698 double valuedVdr (
const double);
699 double valued2Vdr2 (
const double);
702 double F(
const double x) {
703 return (x < D ? exp(-(D/x - 1.0)*(D/x - 1.0)) : 1.0 );
707 double dF(
const double x) {
709 double r = 2.0*D*ix*ix*(D*ix-1.0)*exp(-(D*ix - 1.0)*(D*ix - 1.0));
710 return (x < D ? r : 0.0 );
715 double d2F(
const double x) {
717 double r = 2.0*D*ix*ix*ix*( 2.0*D*D*D*ix*ix*ix - 4.0*D*D*ix*ix
718 - D*ix + 2.0) * exp(-(D*ix - 1.0)*(D*ix - 1.0));
719 return (x < D ? r : 0.0 );
744 double rnorm = sqrt(dot(r,r));
759 double rnorm = sqrt(dot(r,r));
780 double V(
const dVec &);
790 double rm = 2.9262186279335958;
791 double Cn[17] = { 0.0,
809 double a = 3.64890303652830;
810 double b = 2.36824871743591;
811 double eta = 4.09423805117871;
812 double Pn[3] = {-25.4701669416621, 269.244425630616, -56.3879970402079};
813 double Qn[2] = {38.7957487310071, -2.76577136772754};
814 long int factorials[17] = { 1,
832 double valueV (
const double);
833 double valuedVdr (
const double);
834 double valued2Vdr2 (
const double);
838 double fn(
const double x,
const int n) {
840 for (
int i = 0; i < n + 1; i++) {
841 s1 += pow(x,i)/factorials[i];
843 return 1.0 - (exp(-x)*s1);
847 double dfn(
const double x,
const int n) {
848 return (exp(-x)*pow(x,n)/factorials[n]);
852 double d2fn(
const double x,
const int n) {
853 return (exp(-x)*(n-x)*pow(x,(n-1))/factorials[n]);
859 double fn2(
const double x,
const int n) {
862 for (
int i = 0; i < 17; i++) {
863 s1 += (pow(-1,i)*pow(x,(i+1)))/(factorials[i]*(n+i+1));
865 s1 *= pow(x,n)/factorials[n];
891 double rnorm = sqrt(dot(r,r));
906 double rnorm = sqrt(dot(r,r));
932 double V(
const dVec &r);
942 Array <dVec,1> fixedParticles;
943 Array <int,2> fixedBeadsInGrid;
944 Array <int,1> numFixedBeadsInGrid;
945 int numFixedParticles;
969 double V(
const dVec &r);
977 Array <dVec,1> fixedParticles;
978 int numFixedParticles;
998 if ((r[2] >= -excZ) && (r[2] <= excZ) && (r[1] >= -excY) && (r[1] <= excY))
1039 return ((sqrt(dot(r,r)) <= a) ?
LBIG : 0.0);
1084 double xiSqrtPIOver2;
1087 double Wint(
double yt,
double dxt);
1088 double dWdyt(
double yt,
double dxt);
1089 double dWdxi(
double yt,
double dxt);
1090 double dWddxt(
double yt,
double dxt);
1109 return ((sqrt(dot(r,r)) <= a) ?
LBIG : 0.0);
1177 GraphenePotential(
const double,
const double,
const double,
const double,
const double);
1182 double V(
const dVec &r);
1230 double V(
const dVec &r);
1263 double invWallWidth;
1268 static const int gnum = 3;
1269 static const int gtot = 16;
1279 Array<int,1> gMagID;
1283 Array<double,2> gradvg;
1304 double V(
const dVec &);
1315 void put_in_uc(
dVec &,
double,
double);
1316 void cartesian_to_uc(
dVec &,
double,
double,
double,
double);
1317 double trilinear_interpolation(Array<double,3>,
dVec,
double,
double,
double);
1318 double direct_lookup(Array<double,3>,
dVec,
double,
double,
double);
1323 double invWallWidth;
1331 double cell_length_a;
1332 double cell_length_b;
1343 Array<double,3> V3d;
1344 Array<double,3> gradV3d_x;
1345 Array<double,3> gradV3d_y;
1346 Array<double,3> gradV3d_z;
1347 Array<double,3> grad2V3d;
1348 Array<double,1> LUTinfo;
1355 inline void GrapheneLUT3DPotential::put_in_uc(
dVec &r,
double cell_length_a,
double cell_length_b) {
1356 r[0] -= cell_length_a * floor(r[0]/cell_length_a);
1357 r[1] -= cell_length_b * floor(r[1]/cell_length_b);
1364 inline void GrapheneLUT3DPotential::cartesian_to_uc(
dVec &r,
double A11,
double A12,
double A21,
double A22) {
1365 double _x = A11 * r[0] + A12*r[1];
1366 double _y = A21 * r[0] + A22*r[1];
1371 inline double GrapheneLUT3DPotential::trilinear_interpolation(Array<double,3> P,
dVec r,
double dx,
double dy,
double dz) {
1376 double _xidx = floor(x/dx);
1377 double _yidx = floor(y/dy);
1378 double _zidx = floor(z/dz);
1379 int xidx =
static_cast<int>(_xidx);
1380 int yidx =
static_cast<int>(_yidx);
1381 int zidx =
static_cast<int>(_zidx);
1383 double Delta_x = x/dx - _xidx;
1384 double Delta_y = y/dy - _yidx;
1385 double Delta_z = z/dz - _zidx;
1387 double c00 = P(xidx,yidx,zidx)*(1 - Delta_x) + P(xidx + 1,yidx,zidx)*Delta_x;
1388 double c01 = P(xidx,yidx,zidx + 1)*(1 - Delta_x) + P(xidx + 1,yidx,zidx + 1)*Delta_x;
1389 double c10 = P(xidx,yidx + 1,zidx)*(1 - Delta_x) + P(xidx + 1,yidx + 1,zidx)*Delta_x;
1390 double c11 = P(xidx,yidx + 1,zidx + 1)*(1 - Delta_x) + P(xidx + 1,yidx + 1,zidx + 1)*Delta_x;
1392 double c0 = c00*(1 - Delta_y) + c10*Delta_y;
1393 double c1 = c01*(1 - Delta_y) + c11*Delta_y;
1395 double c = c0*(1 - Delta_z) + c1*Delta_z;
1399 inline double GrapheneLUT3DPotential::direct_lookup(Array<double,3> P,
dVec r,
double dx,
double dy,
double dz) {
1404 int xidx =
static_cast<int>(x/dx);
1405 int yidx =
static_cast<int>(y/dy);
1406 int zidx =
static_cast<int>(z/dz);
1408 double c0 = P(xidx,yidx,zidx);
1426 const double,
const double,
const double,
const double,
1444 double Vz_64(
double,
double,
double,
int );
1445 double Vz_64(
double,
double,
double );
1446 double Vz_64(
double,
double );
1448 double gradVz_x_64(
double,
double,
double,
int );
1449 double gradVz_x_64(
double,
double,
double );
1450 double gradVz_x_64(
double,
double );
1452 double gradVz_y_64(
double,
double,
double,
int );
1453 double gradVz_y_64(
double,
double,
double );
1454 double gradVz_y_64(
double,
double );
1457 double gradVz_z_64(
double,
double,
double,
int );
1458 double gradVz_z_64(
double,
double,
double );
1459 double gradVz_z_64(
double,
double );
1461 double grad2Vz_64(
double,
double,
double,
int );
1462 double grad2Vz_64(
double,
double,
double );
1463 double grad2Vz_64(
double,
double );
1465 double Vg_64(
double,
double,
double,
double,
double,
double,
double,
1466 double,
double,
double );
1467 double Vg_64(
double,
double,
double,
double,
double,
double,
double,
1470 double gradVg_x_64(
double,
double,
double,
double,
double,
double,
double,
1471 double,
double,
double );
1472 double gradVg_x_64(
double,
double,
double,
double,
double,
double,
double,
1475 double gradVg_y_64(
double,
double,
double,
double,
double,
double,
double,
1476 double,
double,
double );
1477 double gradVg_y_64(
double,
double,
double,
double,
double,
double,
double,
1480 double gradVg_z_64(
double,
double,
double,
double,
double,
double,
double,
1481 double,
double,
double );
1482 double gradVg_z_64(
double,
double,
double,
double,
double,
double,
double,
1485 double grad2Vg_64(
double,
double,
double,
double,
double,
double,
double,
1486 double,
double,
double );
1487 double grad2Vg_64(
double,
double,
double,
double,
double,
double,
double,
1490 double V_64(
double,
double,
double,
double,
double,
double,
1491 TinyVector<double,2>, TinyVector<double,2>,
1492 TinyVector<double,2>, TinyVector<double,2>, Array<int,1>,
1493 Array<int,1>, Array<double,1> );
1495 double gradV_x_64(
double,
double,
double,
double,
double,
double,
1496 TinyVector<double,2>, TinyVector<double,2>,
1497 TinyVector<double,2>, TinyVector<double,2>, Array<int,1>,
1498 Array<int,1>, Array<double,1> );
1500 double gradV_y_64(
double,
double,
double,
double,
double,
double,
1501 TinyVector<double,2>, TinyVector<double,2>,
1502 TinyVector<double,2>, TinyVector<double,2>, Array<int,1>,
1503 Array<int,1>, Array<double,1> );
1505 double gradV_z_64(
double,
double,
double,
double,
double,
double,
1506 TinyVector<double,2>, TinyVector<double,2>,
1507 TinyVector<double,2>, TinyVector<double,2>, Array<int,1>,
1508 Array<int,1>, Array<double,1> );
1510 double grad2V_64(
double,
double,
double,
double,
double,
double,
1511 TinyVector<double,2>, TinyVector<double,2>,
1512 TinyVector<double,2>, TinyVector<double,2>, Array<int,1>,
1513 Array<int,1>, Array<double,1> );
1516 TinyVector<double,2>, TinyVector<double,2>,
1517 TinyVector<double,2>, TinyVector<double,2>,
1518 TinyVector<double,2>, TinyVector<double,2>
1519 > get_graphene_vectors();
1521 TinyVector<double,2>, TinyVector<double,2>,
1522 TinyVector<double,2>, TinyVector<double,2>,
1523 TinyVector<double,2>, TinyVector<double,2>
1524 > get_graphene_vectors(
double );
1526 TinyVector<double,2>, TinyVector<double,2>,
1527 TinyVector<double,2>, TinyVector<double,2>,
1528 TinyVector<double,2>, TinyVector<double,2>
1529 > get_graphene_vectors(
double,
double,
double );
1531 TinyVector<double,2>, TinyVector<double,2>,
1532 TinyVector<double,2>, TinyVector<double,2>,
1533 TinyVector<double,2>, TinyVector<double,2>
1534 > get_graphene_vectors_old(
double,
double,
double );
1535 std::tuple< Array<int,1>, Array<int,1>, Array<double,1>
1536 > get_g_magnitudes( TinyVector<double,2>, TinyVector<double,2> );
1538 template <
class T>
double calculate_magnitude( T vec ) {
1539 return sqrt(dot(vec,vec));
1542 template <
class T1,
class T2>
double calculate_angle(
1543 T1 x, T2 y,
double magnitude_x,
double magnitude_y ) {
1544 return acos(dot(x,y)/magnitude_x/magnitude_y);
1547 template <
class T1,
class T2>
double calculate_angle( T1 x, T2 y ) {
1548 return calculate_angle(x,y,calculate_magnitude(x),calculate_magnitude(y));
1551 void calculate_V3D_64(
1552 Array<double,3>, Array<double,2>, Array<double,2>,
1553 Array<double,1>,
double,
double,
1554 double, TinyVector<double,2>, TinyVector<double,2>,
1555 TinyVector<double,2>, TinyVector<double,2>,
1556 Array<int,1>, Array<int,1>,
1559 void calculate_gradV3D_x_64(
1560 Array<double,3>, Array<double,2>, Array<double,2>,
1561 Array<double,1>,
double,
double,
1562 double, TinyVector<double,2>, TinyVector<double,2>,
1563 TinyVector<double,2>, TinyVector<double,2>,
1564 Array<int,1>, Array<int,1>,
1567 void calculate_gradV3D_y_64(
1568 Array<double,3>, Array<double,2>, Array<double,2>,
1569 Array<double,1>,
double,
double,
1570 double, TinyVector<double,2>, TinyVector<double,2>,
1571 TinyVector<double,2>, TinyVector<double,2>,
1572 Array<int,1>, Array<int,1>,
1575 void calculate_gradV3D_z_64(
1576 Array<double,3>, Array<double,2>, Array<double,2>,
1577 Array<double,1>,
double,
double,
1578 double, TinyVector<double,2>, TinyVector<double,2>,
1579 TinyVector<double,2>, TinyVector<double,2>,
1580 Array<int,1>, Array<int,1>,
1583 void calculate_grad2V3D_64(
1584 Array<double,3>, Array<double,2>, Array<double,2>,
1585 Array<double,1>,
double,
double,
1586 double, TinyVector<double,2>, TinyVector<double,2>,
1587 TinyVector<double,2>, TinyVector<double,2>,
1588 Array<int,1>, Array<int,1>,
1591 std::pair<double, double> get_z_min_V_min(
1592 double,
double,
double,
double,
double,
1593 TinyVector<double,2>, TinyVector<double,2>,
1594 TinyVector<double,2>, TinyVector<double,2>,
1595 Array<int,1>, Array<int,1>, Array<double,1> );
1597 std::pair<double, double> get_z_V_to_find(
1598 double,
double,
double,
1599 TinyVector<double,2>, TinyVector<double,2>,
1600 TinyVector<double,2>, TinyVector<double,2>,
1601 Array<int,1>, Array<int,1>, Array<double,1> );
1603 Array<double,3> get_V3D(
1604 double,
double,
double,
int,
int,
int,
double,
double );
1605 std::pair<Array<double,3> , Array<double,1>> get_V3D(
1606 double,
double,
double,
int,
int,
int,
double );
1608 Array<double,3>, Array<double,3>, Array<double,3>,
1609 Array<double,3>, Array<double,3>, Array<double,2>,
1610 Array<double,2>, Array<double,1>
1611 > get_V3D_all(
double,
double,
double,
int,
int,
int,
double );
1631 Array<double,3> V3d;
1632 Array<double,3> gradV3d_x;
1633 Array<double,3> gradV3d_y;
1634 Array<double,3> gradV3d_z;
1635 Array<double,3> grad2V3d;
1636 Array<double,1> LUTinfo;
1657 Array<double,3> V3d;
1658 Array<double,3> gradV3d_x;
1659 Array<double,3> gradV3d_y;
1660 Array<double,3> gradV3d_z;
1661 Array<double,3> grad2V3d;
1662 Array<double,1> LUTinfo;
Computes the value of the semi-empircal Aziz potential that is known to be accurate for He-4.
~AzizPotential()
Destructor.
dVec gradV(const dVec &)
Return the gradient of aziz potential for separation r using a lookup table.
double grad2V(const dVec &)
Return the Laplacian of aziz potential for separation r using a lookup table.
AzizPotential(const Container *)
Constructor.
double V(const dVec &)
Return the aziz potential for separation r using a lookup table.
The base class which holds details on the generalized box that our system will be simulated inside of...
Computes the effective potential from the exact two-body density matrix for delta interactions in 1D.
~Delta1DPotential()
Destructor.
double dVdlambda(const dVec &, const dVec &)
The derivative of the effective potential with respect to lambda.
double dVdtau(const dVec &, const dVec &)
The derivative of the effective potential with respect to tau.
virtual double V(const dVec &r)
The classical potential.
Delta1DPotential(double)
Constructor.
Computes the potential energy for delta function interaction potential, approximated here as the limi...
dVec gradV(const dVec &r)
Return the gradient of the delta function potential with strength g approximated as the limit of a Ga...
DeltaPotential(double, double)
Constructor.
double V(const dVec &r)
Return the delta function potential with strength g approximated as the limit of a Gaussian distribut...
~DeltaPotential()
Destructor.
Computes the potential energy for polarized electrical dipoles with strength D in reduced units where...
double grad2V(const dVec &r)
Return the Laplacian of the dipolar potential.
double V(const dVec &r)
Return the dipole potential 1/r^3.
dVec gradV(const dVec &r)
Return the gradient of the dipole potential.
DipolePotential()
Constructor.
~DipolePotential()
Destructor.
Computes the potential energy resulting from a series of fixed helium atoms that are not updated and ...
dVec gradV(const dVec &r)
The gradient of the total potential coming from the interaction of a particle with all fixed particle...
double V(const dVec &r)
The total potential coming from the interaction of a particle with all fixed particles.
~FixedAzizPotential()
Destructor.
FixedAzizPotential(const Container *)
Constructor.
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to FixedAziz potential.
Returns Lennard-Jones potential between adatoms and fixed postions in FILENAME.
FixedPositionLJPotential(const double, const double, const Container *)
Constructor.
~FixedPositionLJPotential()
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 ...
dVec gradV(const dVec &pos)
The gradient of the potential.
FreePotential()
Constructor.
~FreePotential()
Destructor.
double V(const dVec &sep)
The potential.
Computes potential energy for Gasparini potential.
Array< double, 1 > getExcLen()
get the exclusion lengths ay and az
Gasparini_1_Potential(double, double, const Container *)
Constructor.
double V(const dVec &r)
The potential.
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to FixedAziz potential.
dVec gradV(const dVec &)
The gradient of the potential.
~Gasparini_1_Potential()
Destructor.
double grad2V(const dVec &r)
Laplacian of the potential.
FIXME Returns van der Waals' potential between a helium adatom and a graphene sheet using summation i...
~GrapheneLUT3DPotentialGenerate()
Destructor.
GrapheneLUT3DPotentialGenerate(const double, const double, const double, const double, const double, const Container *)
Constructor.
FIXME Returns van der Waals' potential between a helium adatom and a graphene sheet using summation i...
~GrapheneLUT3DPotentialToBinary()
Destructor.
GrapheneLUT3DPotentialToBinary(const string, const Container *)
Constructor.
FIXME Returns van der Waals' potential between a helium adatom and a graphene sheet using summation i...
GrapheneLUT3DPotentialToText(const string, const Container *)
Constructor.
~GrapheneLUT3DPotentialToText()
Destructor.
Returns van der Waals' potential between a helium adatom and a graphene sheet using summation in reci...
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to graphene-helium vdW potential.
dVec gradV(const dVec &)
Return the gradient of the van der Waals' interaction between a graphene sheet and a helium adatom at...
double V(const dVec &)
Return the value of the van der Waals' interaction between a graphene sheet and a helium adatom at a ...
double grad2V(const dVec &)
Return the gradient of the van der Waals' interaction between a graphene sheet and a helium adatom at...
~GrapheneLUT3DPotential()
Destructor.
GrapheneLUT3DPotential(const string, const Container *)
Constructor.
Array< dVec, 1 > initialConfig1(const Container *, MTRand &, const int)
Return an initial particle configuration.
Returns van der Waals' potential between a helium adatom and a graphene sheet using summation in reci...
dVec gradV(const dVec &r)
Return the gradient of the van der Waals' interaction between a graphene sheet and a helium adatom at...
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to graphene-helium vdW potential.
GrapheneLUTPotential(const double, const double, const double, const double, const double, const Container *)
Constructor.
double V(const dVec &r)
Return the value of the van der Waals' interaction between a graphene sheet and a helium adatom at a ...
~GrapheneLUTPotential()
Destructor.
The smooth non-corregated version of the helium-carbon nanotube potential.
GraphenePotential(const double, const double, const double, const double, const double)
Constructor.
double V(const dVec &r)
Return the value of the van der Waals' interaction between a graphene sheet and a helium adatom at a ...
~GraphenePotential()
Destructor.
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to graphene-helium vdW potential.
Computes the value of the external wall potential for a hard-walled cylindrical cavity.
~HardCylinderPotential()
Destructor.
HardCylinderPotential(const double)
Constructor.
dVec gradV(const dVec &r)
A delta function at rho=R.
double V(const dVec &r)
A step function at rho=R.
Computes the effective potential from the exact two-body density matrix for hard rods in 1D.
HardRodPotential(double)
Constructor.
double dVdlambda(const dVec &, const dVec &)
The derivative of the effective potential with respect to lambda.
~HardRodPotential()
Destructor.
virtual double V(const dVec &r)
The classical potential.
double dVdtau(const dVec &, const dVec &)
The derivative of the effective potential with respect to tau.
Computes the effective potential from the exact two-body density matrix for hard spheres in 3D.
virtual double V(const dVec &r)
The classical potential.
double dVdlambda(const dVec &, const dVec &)
The derivative of the effective potential with respect to lambda.
~HardSpherePotential()
Destructor.
HardSpherePotential(double)
Constructor.
double dVdtau(const dVec &, const dVec &)
The derivative of the effective potential with respect to tau.
Computes the potential energy for an external harmonic potential with axial symmetry.
double V(const dVec &r)
The potential.
HarmonicCylinderPotential(const double)
Constructor.
~HarmonicCylinderPotential()
Destructor.
dVec gradV(const dVec &r)
The gradient of the potential.
Computes the potential energy for an external harmonic potential.
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to Harmonic potential.
~HarmonicPotential()
Destructor.
double V(const dVec &r)
The potential.
dVec gradV(const dVec &r)
The gradient of the potential.
Computes the value of the external wall potential for a cylindrical cavity.
LJCylinderPotential(const double)
Constructor.
double grad2V(const dVec &)
Return the Laplacian of aziz potential for separation r using a lookup table.
~LJCylinderPotential()
Destructor.
double V(const dVec &r)
The integrated LJ Wall potential.
dVec gradV(const dVec &)
Return the gradient of aziz potential for separation r using a lookup table.
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to the LJ cylinder potential.
Computes the value of the external wall potential for an hour-glass shaped cavity.
LJHourGlassPotential(const double, const double, const double)
Constructor.
double grad2V(const dVec &pos)
Grad^2 of the potential.
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to the LJ cylinder potential.
double V(const dVec &)
The integrated LJ hour glass potential.
Array< dVec, 1 > initialConfig1(const Container *, MTRand &, const int)
Return a set of initial positions inside the hourglass.
dVec gradV(const dVec &pos)
The gradient of the potential.
~LJHourGlassPotential()
Destructor.
The particle (bead) lookup table.
Computes the potential energy for delta function interaction potential, approximated here as the limi...
~LorentzianPotential()
Destructor.
LorentzianPotential(double, double)
Constructor.
double V(const dVec &r)
Return the delta function potential with strength 2c approximated as the limit of a Lorentzian distri...
dVec gradV(const dVec &r)
Return the gradient of the delta function potential with strength 2c approximated as the limit of a L...
The space-time trajectories.
Computes the value of the external wall potential for a plated cylindrical cavity.
double V(const dVec &r)
The integrated LJ Wall potential.
dVec gradV(const dVec &)
Return the gradient of aziz potential for separation r using a lookup table.
double grad2V(const dVec &)
Return the Laplacian of aziz potential for separation r using a lookup table.
PlatedLJCylinderPotential(const double, const double, const double, const double, const double)
Constructor.
~PlatedLJCylinderPotential()
Destructor.
Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Initial configuration corresponding to the LJ cylinder potential.
The base class from which all specific potentials are derived from.
double deltaSeparation(double sep1, double sep2) const
Return the minimum image difference for 1D separations.
PotentialBase()
Constructor.
virtual double grad2V(const dVec &)
Grad^2 of the potential.
virtual Array< dVec, 1 > initialConfig(const Container *, MTRand &, const int)
Default Initial configuration of particles.
virtual ~PotentialBase()
Destructor.
double tailV
Tail correction factor.
void output(const double)
A debug method that output's the potential to a supplied separation.
virtual dVec gradV(const dVec &)
The gradient of the potential.
virtual Array< double, 1 > getExcLen()
Array to hold data elements.
virtual double dVdlambda(const dVec &, const dVec &)
The derivative of the effective potential with respect to lambda and tau.
virtual double V(const dVec &, const dVec &)
The effective potential for the pair product approximation.
virtual double V(const dVec &)
The potential.
Computes the potential energy for an external single well potential.
~SingleWellPotential()
Destructor.
SingleWellPotential()
Constructor.
dVec gradV(const dVec &r)
The gradient of the potential.
double V(const dVec &r)
The potential.
Computes the potential energy for the periodic Sutherland model which approximates long-range 1/r^2 i...
dVec gradV(const dVec &r)
Return the gradient of the Sutherland potential.
double V(const dVec &r)
Return the Sutherland potential g/r^2.
double grad2V(const dVec &r)
Return the Laplacian of the Sutherland potential.
~SutherlandPotential()
Destructor.
SutherlandPotential(double)
Constructor.
Computes the value of the semi-empircal Szalewicz potential that is known to be accurate for He-4.
dVec gradV(const dVec &)
Return the gradient of Szalewicz potential for separation r using a lookup table.
~SzalewiczPotential()
Destructor.
double grad2V(const dVec &)
Return the Laplacian of Szalewicz potential for separation r using a lookup table.
double V(const dVec &)
Return the Szalewicz potential for separation r using a lookup table.
SzalewiczPotential(const Container *)
Constructor.
Pre-tabulated potential for complicated functions.
Array< double, 1 > lookupd2Vdr2
A lookup table for d2Vint/dr2.
TabulatedPotential()
Constructor.
int tableLength
The number of elements in the lookup table.
TinyVector< double, 2 > extdVdr
Extremal value of dV/dr.
virtual ~TabulatedPotential()
Destructor.
virtual double valuedVdr(const double)=0
The functional value of dV/dr.
TinyVector< double, 2 > extV
Extremal value of V.
void initLookupTable(const double, const double)
Given a discretization factor and the system size, create and fill the lookup tables for the potentia...
Array< double, 1 > lookupdVdr
A lookup table for dVint/dr.
virtual double valued2Vdr2(const double)=0
The functional value of d2V/dr2.
virtual double valueV(const double)=0
The functional value of V.
virtual double direct(const Array< double, 1 > &, const TinyVector< double, 2 > &, const double)
Use a direct lookup for the potential table.
virtual double newtonGregory(const Array< double, 1 > &, const TinyVector< double, 2 > &, const double)
Use the Newton-Gregory forward difference method to do a 2-point lookup on the potential table.
TinyVector< double, 2 > extd2Vdr2
Extremal value of d2V/dr2.
Array< double, 1 > lookupV
A potential lookup table.
double dr
The discretization for the lookup table.
Global common header with shared dependencies and methods.
#define NDIM
Number of spatial dimnsions.
#define EPS
A small number.
#define LBIG
The log of a big number.
TinyVector< double, NDIM > dVec
A NDIM-vector of type double.
ConstantParameters class definition.
ConstantParameters * constants()
Global public access to the constants.