sync with SVN
This commit is contained in:
@ -2303,8 +2303,8 @@ fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector :pre
|
|||||||
|
|
||||||
compute cc1 all chunk/atom molecule
|
compute cc1 all chunk/atom molecule
|
||||||
fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out
|
fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out
|
||||||
variable xave equal ave(f_1[2])
|
variable xave equal ave(f_1\[2\])
|
||||||
variable xmax equal max(f_1[2])
|
variable xmax equal max(f_1\[2\])
|
||||||
thermo 1000
|
thermo 1000
|
||||||
thermo_style custom step temp v_xave v_xmax :pre
|
thermo_style custom step temp v_xave v_xmax :pre
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ KOKKOS_USE_TPLS ?= ""
|
|||||||
#Options: c++11
|
#Options: c++11
|
||||||
KOKKOS_CXX_STANDARD ?= "c++11"
|
KOKKOS_CXX_STANDARD ?= "c++11"
|
||||||
#Options: aggressive_vectorization,disable_profiling
|
#Options: aggressive_vectorization,disable_profiling
|
||||||
KOKKOS_OPTIONS ?= "aggressive_vectorization"
|
KOKKOS_OPTIONS ?= ""
|
||||||
|
|
||||||
#Default settings specific options
|
#Default settings specific options
|
||||||
#Options: force_uvm,use_ldg,rdc,enable_lambda
|
#Options: force_uvm,use_ldg,rdc,enable_lambda
|
||||||
|
|||||||
@ -3878,14 +3878,16 @@ void PairReaxCKokkos<DeviceType>::ev_setup(int eflag, int vflag)
|
|||||||
// reallocate per-atom arrays if necessary
|
// reallocate per-atom arrays if necessary
|
||||||
|
|
||||||
if (eflag_atom && atom->nmax > maxeatom) {
|
if (eflag_atom && atom->nmax > maxeatom) {
|
||||||
memory->destroy_kokkos(k_eatom,eatom);
|
maxeatom = atom->nmax;
|
||||||
memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom");
|
memory->destroy_kokkos(k_eatom,eatom);
|
||||||
v_eatom = k_eatom.view<DeviceType>();
|
memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom");
|
||||||
|
v_eatom = k_eatom.view<DeviceType>();
|
||||||
}
|
}
|
||||||
if (vflag_atom && atom->nmax > maxvatom) {
|
if (vflag_atom && atom->nmax > maxvatom) {
|
||||||
memory->destroy_kokkos(k_vatom,vatom);
|
maxvatom = atom->nmax;
|
||||||
memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom");
|
memory->destroy_kokkos(k_vatom,vatom);
|
||||||
v_vatom = k_vatom.view<DeviceType>();
|
memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom");
|
||||||
|
v_vatom = k_vatom.view<DeviceType>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// zero accumulators
|
// zero accumulators
|
||||||
|
|||||||
@ -27,7 +27,8 @@ using namespace LAMMPS_NS;
|
|||||||
|
|
||||||
ComputeOmegaChunk::ComputeOmegaChunk(LAMMPS *lmp, int narg, char **arg) :
|
ComputeOmegaChunk::ComputeOmegaChunk(LAMMPS *lmp, int narg, char **arg) :
|
||||||
Compute(lmp, narg, arg),
|
Compute(lmp, narg, arg),
|
||||||
idchunk(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL), angmom(NULL), angmomall(NULL)
|
idchunk(NULL), massproc(NULL), masstotal(NULL), com(NULL), comall(NULL),
|
||||||
|
angmom(NULL), angmomall(NULL)
|
||||||
{
|
{
|
||||||
if (narg != 4) error->all(FLERR,"Illegal compute omega/chunk command");
|
if (narg != 4) error->all(FLERR,"Illegal compute omega/chunk command");
|
||||||
|
|
||||||
@ -192,13 +193,13 @@ void ComputeOmegaChunk::compute_array()
|
|||||||
|
|
||||||
double ione[3][3],inverse[3][3];
|
double ione[3][3],inverse[3][3];
|
||||||
|
|
||||||
for (i = 0; i < nchunk; i++) {
|
for (m = 0; m < nchunk; m++) {
|
||||||
ione[0][0] = inertiaall[i][0];
|
ione[0][0] = inertiaall[m][0];
|
||||||
ione[1][1] = inertiaall[i][1];
|
ione[1][1] = inertiaall[m][1];
|
||||||
ione[2][2] = inertiaall[i][2];
|
ione[2][2] = inertiaall[m][2];
|
||||||
ione[0][1] = inertiaall[i][3];
|
ione[0][1] = inertiaall[m][3];
|
||||||
ione[1][2] = inertiaall[i][4];
|
ione[1][2] = inertiaall[m][4];
|
||||||
ione[0][2] = inertiaall[i][5];
|
ione[0][2] = inertiaall[m][5];
|
||||||
ione[1][0] = ione[0][1];
|
ione[1][0] = ione[0][1];
|
||||||
ione[2][1] = ione[1][2];
|
ione[2][1] = ione[1][2];
|
||||||
ione[2][0] = ione[0][2];
|
ione[2][0] = ione[0][2];
|
||||||
@ -221,15 +222,15 @@ void ComputeOmegaChunk::compute_array()
|
|||||||
ione[2][0]*ione[1][1]*ione[0][2];
|
ione[2][0]*ione[1][1]*ione[0][2];
|
||||||
|
|
||||||
if (determinant > 0.0)
|
if (determinant > 0.0)
|
||||||
for (int i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
for (int j = 0; j < 3; j++)
|
for (j = 0; j < 3; j++)
|
||||||
inverse[i][j] /= determinant;
|
inverse[i][j] /= determinant;
|
||||||
|
|
||||||
omega[i][0] = inverse[0][0]*angmom[i][0] + inverse[0][1]*angmom[i][1] +
|
omega[m][0] = inverse[0][0]*angmom[m][0] + inverse[0][1]*angmom[m][1] +
|
||||||
inverse[0][2]*angmom[i][2];
|
inverse[0][2]*angmom[m][2];
|
||||||
omega[i][1] = inverse[1][0]*angmom[i][0] + inverse[1][1]*angmom[i][1] +
|
omega[m][1] = inverse[1][0]*angmom[m][0] + inverse[1][1]*angmom[m][1] +
|
||||||
inverse[1][2]*angmom[i][2];
|
inverse[1][2]*angmom[m][2];
|
||||||
omega[i][2] = inverse[2][0]*angmom[i][0] + inverse[2][1]*angmom[i][1] +
|
omega[m][2] = inverse[2][0]*angmom[m][0] + inverse[2][1]*angmom[m][1] +
|
||||||
inverse[2][2]*angmom[i][2];
|
inverse[2][2]*angmom[i][2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,8 +35,7 @@ enum{LAYOUT_UNIFORM,LAYOUT_NONUNIFORM,LAYOUT_TILED}; // several files
|
|||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) :
|
FixBalance::FixBalance(LAMMPS *lmp, int narg, char **arg) :
|
||||||
Fix(lmp, narg, arg),
|
Fix(lmp, narg, arg), fp(NULL)
|
||||||
fp(NULL), nimbalance(0), imbalance(NULL), imb_fix(NULL), balance(NULL), irregular(NULL)
|
|
||||||
{
|
{
|
||||||
if (narg < 6) error->all(FLERR,"Illegal fix balance command");
|
if (narg < 6) error->all(FLERR,"Illegal fix balance command");
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,8 @@ namespace MathExtra {
|
|||||||
inline void negate3(double *v);
|
inline void negate3(double *v);
|
||||||
inline void scale3(double s, double *v);
|
inline void scale3(double s, double *v);
|
||||||
inline void add3(const double *v1, const double *v2, double *ans);
|
inline void add3(const double *v1, const double *v2, double *ans);
|
||||||
inline void scaleadd3(double s, const double *v1, const double *v2, double *ans);
|
inline void scaleadd3(double s, const double *v1, const double *v2,
|
||||||
|
double *ans);
|
||||||
inline void sub3(const double *v1, const double *v2, double *ans);
|
inline void sub3(const double *v1, const double *v2, double *ans);
|
||||||
inline double len3(const double *v);
|
inline double len3(const double *v);
|
||||||
inline double lensq3(const double *v);
|
inline double lensq3(const double *v);
|
||||||
@ -389,8 +390,8 @@ inline void MathExtra::times3(const double m[3][3], const double m2[3][3],
|
|||||||
multiply the transpose of mat1 times mat2
|
multiply the transpose of mat1 times mat2
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
inline void MathExtra::transpose_times3(const double m[3][3], const double m2[3][3],
|
inline void MathExtra::transpose_times3(const double m[3][3],
|
||||||
double ans[3][3])
|
const double m2[3][3],double ans[3][3])
|
||||||
{
|
{
|
||||||
ans[0][0] = m[0][0]*m2[0][0] + m[1][0]*m2[1][0] + m[2][0]*m2[2][0];
|
ans[0][0] = m[0][0]*m2[0][0] + m[1][0]*m2[1][0] + m[2][0]*m2[2][0];
|
||||||
ans[0][1] = m[0][0]*m2[0][1] + m[1][0]*m2[1][1] + m[2][0]*m2[2][1];
|
ans[0][1] = m[0][0]*m2[0][1] + m[1][0]*m2[1][1] + m[2][0]*m2[2][1];
|
||||||
@ -407,8 +408,8 @@ inline void MathExtra::transpose_times3(const double m[3][3], const double m2[3]
|
|||||||
multiply mat1 times transpose of mat2
|
multiply mat1 times transpose of mat2
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
inline void MathExtra::times3_transpose(const double m[3][3], const double m2[3][3],
|
inline void MathExtra::times3_transpose(const double m[3][3],
|
||||||
double ans[3][3])
|
const double m2[3][3],double ans[3][3])
|
||||||
{
|
{
|
||||||
ans[0][0] = m[0][0]*m2[0][0] + m[0][1]*m2[0][1] + m[0][2]*m2[0][2];
|
ans[0][0] = m[0][0]*m2[0][0] + m[0][1]*m2[0][1] + m[0][2]*m2[0][2];
|
||||||
ans[0][1] = m[0][0]*m2[1][0] + m[0][1]*m2[1][1] + m[0][2]*m2[1][2];
|
ans[0][1] = m[0][0]*m2[1][0] + m[0][1]*m2[1][1] + m[0][2]*m2[1][2];
|
||||||
@ -423,7 +424,7 @@ inline void MathExtra::times3_transpose(const double m[3][3], const double m2[3]
|
|||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
invert a matrix
|
invert a matrix
|
||||||
does NOT checks for singular or badly scaled matrix
|
does NOT check for singular or badly scaled matrix
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
inline void MathExtra::invert3(const double m[3][3], double ans[3][3])
|
inline void MathExtra::invert3(const double m[3][3], double ans[3][3])
|
||||||
@ -631,7 +632,7 @@ inline void MathExtra::invquatvec(double *a, double *b, double *c)
|
|||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
inline void MathExtra::axisangle_to_quat(const double *v, const double angle,
|
inline void MathExtra::axisangle_to_quat(const double *v, const double angle,
|
||||||
double *quat)
|
double *quat)
|
||||||
{
|
{
|
||||||
double halfa = 0.5*angle;
|
double halfa = 0.5*angle;
|
||||||
double sina = sin(halfa);
|
double sina = sin(halfa);
|
||||||
@ -663,7 +664,8 @@ inline void MathExtra::rotation_generator_x(const double m[3][3],
|
|||||||
Apply principal rotation generator about y to rotation matrix m
|
Apply principal rotation generator about y to rotation matrix m
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
inline void MathExtra::rotation_generator_y(const double m[3][3], double ans[3][3])
|
inline void MathExtra::rotation_generator_y(const double m[3][3],
|
||||||
|
double ans[3][3])
|
||||||
{
|
{
|
||||||
ans[0][0] = m[0][2];
|
ans[0][0] = m[0][2];
|
||||||
ans[0][1] = 0;
|
ans[0][1] = 0;
|
||||||
@ -680,7 +682,8 @@ inline void MathExtra::rotation_generator_y(const double m[3][3], double ans[3][
|
|||||||
Apply principal rotation generator about z to rotation matrix m
|
Apply principal rotation generator about z to rotation matrix m
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
inline void MathExtra::rotation_generator_z(const double m[3][3], double ans[3][3])
|
inline void MathExtra::rotation_generator_z(const double m[3][3],
|
||||||
|
double ans[3][3])
|
||||||
{
|
{
|
||||||
ans[0][0] = -m[0][1];
|
ans[0][0] = -m[0][1];
|
||||||
ans[0][1] = m[0][0];
|
ans[0][1] = m[0][0];
|
||||||
|
|||||||
Reference in New Issue
Block a user