ATC version 2.0, date: Aug7
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@10561 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
88
lib/atc/CbPotential.cpp
Normal file
88
lib/atc/CbPotential.cpp
Normal file
@ -0,0 +1,88 @@
|
||||
#include "CbPotential.h"
|
||||
#include <cmath>
|
||||
namespace ATC
|
||||
{
|
||||
static const double EPS = 1.0e-8;
|
||||
|
||||
// Approximates the derivative of phi
|
||||
double CbPotential::phi_r(const double &r) const
|
||||
{
|
||||
const double dr = r*EPS;
|
||||
return (phi(r+dr)-phi(r)) / dr;
|
||||
}
|
||||
// Approximates the second derivative of phi
|
||||
double CbPotential::phi_rr(const double &r) const
|
||||
{
|
||||
const double dr = r*EPS;
|
||||
return (phi_r(r+dr)-phi_r(r)) / dr;
|
||||
}
|
||||
// Approximates the third derivative of phi
|
||||
double CbPotential::phi_rrr(const double &r) const
|
||||
{
|
||||
const double dr = r*EPS;
|
||||
return (phi_rr(r+dr)-phi_rr(r)) / dr;
|
||||
}
|
||||
// Approximates the derivative of rho
|
||||
double CbPotential::rho_r(const double &r) const
|
||||
{
|
||||
const double dr = r*EPS;
|
||||
return (rho(r+dr)-rho(r)) / dr;
|
||||
}
|
||||
// Approximates the second derivative of rho
|
||||
double CbPotential::rho_rr(const double &r) const
|
||||
{
|
||||
const double dr = r*EPS;
|
||||
return (rho_r(r+dr)-rho_r(r)) / dr;
|
||||
}
|
||||
// Approximates the third derivative of rho
|
||||
double CbPotential::rho_rrr(const double &r) const
|
||||
{
|
||||
const double dr = r*EPS;
|
||||
return (rho_rr(r+dr)-rho_rr(r)) / dr;
|
||||
}
|
||||
// Approximates the derivative of the embedding function
|
||||
double CbPotential::F_p(const double &p) const
|
||||
{
|
||||
const double dp = p*EPS;
|
||||
return (F(p+dp)-F(p)) / dp;
|
||||
}
|
||||
// Approximates the second derivative of the embedding function
|
||||
double CbPotential::F_pp(const double &p) const
|
||||
{
|
||||
const double dp = p*EPS;
|
||||
return (F_p(p+dp)-F_p(p)) / dp;
|
||||
}
|
||||
// Approximates the third derivative of the embedding function
|
||||
double CbPotential::F_ppp(const double &p) const
|
||||
{
|
||||
const double dp = p*EPS;
|
||||
return (F_pp(p+dp)-F_pp(p)) / dp;
|
||||
}
|
||||
// Approximates the derivative of phi3.
|
||||
double CbPotential::phi3_q (const double &q) const
|
||||
{
|
||||
const double dq = q*EPS;
|
||||
return (phi3(q+dq)-phi3(q)) / dq;
|
||||
}
|
||||
// Approximates the second derivative of phi3.
|
||||
double CbPotential::phi3_qq(const double &q) const
|
||||
{
|
||||
const double dq = q*EPS;
|
||||
return (phi3_q(q+dq)-phi3_q(q)) / dq;
|
||||
}
|
||||
// Compute bond angle jik from the squared length of vectors ij,ik,kj.
|
||||
double calculate_theta(double ij2, double ik2, double jk2)
|
||||
{
|
||||
return acos( 0.5*(ik2+ij2-jk2)/sqrt(ij2*ik2) );
|
||||
}
|
||||
// Initializes atomic interactions for up to three different terms.
|
||||
Interactions::Interactions(int a, int b, int c)
|
||||
{
|
||||
// bitwise OR combines the terms that are listed
|
||||
const int abc = a|b|c;
|
||||
pairwise = (abc&PAIRWISE)>0;
|
||||
embedding = (abc&EAM)>0;
|
||||
three_body = (abc&THREE_BDY)>0;
|
||||
angle_bending = (abc&ANGLE_BND)>0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user