Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F73381210
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
Sat, Jul 20, 23:59
Size
3 KB
Mime Type
text/x-c
Expires
Mon, Jul 22, 23:59 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
19187111
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