Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F90426974
ATC_HardyKernel.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Nov 1, 13:45
Size
3 KB
Mime Type
text/x-c
Expires
Sun, Nov 3, 13:45 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21762258
Attached To
rLAMMPS lammps
ATC_HardyKernel.h
View Options
/** ATC_HardyKernel: Hardy smoothing */
#ifndef ATC_HARDY_KERNEL_H
#define ATC_HARDY_KERNEL_H
#include "LammpsInterface.h"
#include "MatrixLibrary.h"
namespace ATC {
class ATC_HardyKernel {
public:
// constructor
ATC_HardyKernel(int nparameters, double* parameters);
// destructor
virtual ~ATC_HardyKernel() {};
// function value
virtual double value(DENS_VEC& x_atom)=0;
// bond function value via quadrature
virtual double bond(DENS_VEC& xa, DENS_VEC&xb, double lam1, double lam2);
// localization-volume intercepts for bond calculation
virtual void bond_intercepts(DENS_VEC& xa,
DENS_VEC& xb, double &lam1, double &lam2);
double inv_vol(void) { return invVol_; }
protected:
double invVol_; // normalization factor
double Rc_, invRc_; // cutoff radius
int nsd_ ; // number of dimensions
/** pointer to lammps interface class */
LammpsInterface * lammpsInterface_;
/** periodicity flags and lengths */
int periodicity[3];
double box_bounds[2][3];
double box_length[3];
};
/** a step with spherical support */
class ATC_HardyKernelStep : public ATC_HardyKernel {
public:
// constructor
ATC_HardyKernelStep(int nparameters, double* parameters);
// destructor
virtual ~ATC_HardyKernelStep() {};
// function value
double value(DENS_VEC& x_atom);
// bond function value
virtual double bond(DENS_VEC& xa, DENS_VEC&xb, double lam1, double lam2)
{return lam2 -lam1;}
};
/** a step with rectangular support suitable for a rectangular grid */
class ATC_HardyKernelCell : public ATC_HardyKernel {
public:
// constructor
ATC_HardyKernelCell(int nparameters, double* parameters);
// destructor
virtual ~ATC_HardyKernelCell() {};
// function value
virtual double value(DENS_VEC& x_atom);
// bond function value
virtual double bond(DENS_VEC& xa, DENS_VEC&xb, double lam1, double lam2)
{return lam2 -lam1;}
// bond intercept values : origin is the node position
void bond_intercepts(DENS_VEC& xa,
DENS_VEC& xb, double &lam1, double &lam2);
protected:
double hx, hy, hz;
DENS_VEC cellBounds_;
};
class ATC_HardyKernelCubicSphere : public ATC_HardyKernel {
public:
// constructor
ATC_HardyKernelCubicSphere(int nparameters, double* parameters);
// destructor
virtual ~ATC_HardyKernelCubicSphere() {};
// function value
virtual double value(DENS_VEC& x_atom);
};
class ATC_HardyKernelQuarticSphere : public ATC_HardyKernel {
public:
// constructor
ATC_HardyKernelQuarticSphere(int nparameters, double* parameters);
// destructor
virtual ~ATC_HardyKernelQuarticSphere() {};
// function value
virtual double value(DENS_VEC& x_atom);
};
class ATC_HardyKernelCubicCyl : public ATC_HardyKernel {
public:
// constructor
ATC_HardyKernelCubicCyl(int nparameters, double* parameters);
// destructor
virtual ~ATC_HardyKernelCubicCyl() {};
// function value
virtual double value(DENS_VEC& x_atom) ;
};
class ATC_HardyKernelQuarticCyl : public ATC_HardyKernel {
public:
// constructor
ATC_HardyKernelQuarticCyl(int nparameters, double* parameters);
// destructor
virtual ~ATC_HardyKernelQuarticCyl() {};
// function value
virtual double value(DENS_VEC& x_atom);
};
};
#endif
Event Timeline
Log In to Comment