From 759ee1f3e88b16ed78e46d85c24e83e2bc9dec1b Mon Sep 17 00:00:00 2001 From: sjplimp <sjplimp@f3b2605a-c512-4ea7-a41b-209d697bcdaa> Date: Thu, 14 Apr 2011 17:40:40 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@5940 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/ASPHERE/atom_vec_ellipsoid.cpp | 116 ++++++++++++++++++---------- src/ASPHERE/atom_vec_ellipsoid.h | 12 +-- src/DIPOLE/atom_vec_dipole.cpp | 73 +++++++++++------ src/DIPOLE/atom_vec_dipole.h | 8 +- src/MOLECULE/atom_vec_angle.cpp | 23 ++++-- src/MOLECULE/atom_vec_angle.h | 4 +- src/MOLECULE/atom_vec_bond.cpp | 23 ++++-- src/MOLECULE/atom_vec_bond.h | 4 +- src/MOLECULE/atom_vec_full.cpp | 28 +++++-- src/MOLECULE/atom_vec_full.h | 4 +- src/MOLECULE/atom_vec_molecular.cpp | 23 ++++-- src/MOLECULE/atom_vec_molecular.h | 4 +- src/PERI/atom_vec_peri.cpp | 63 ++++++++++----- src/PERI/atom_vec_peri.h | 8 +- src/SRD/fix_srd.cpp | 2 - src/USER-EFF/atom_vec_electron.cpp | 86 ++++++++++++++------- src/USER-EFF/atom_vec_electron.h | 12 +-- src/atom.cpp | 4 +- src/atom.h | 2 +- src/atom_vec.h | 12 +-- src/atom_vec_charge.cpp | 23 ++++-- src/atom_vec_charge.h | 4 +- src/atom_vec_hybrid.cpp | 109 ++++++++++++++++---------- src/atom_vec_sphere.cpp | 88 ++++++++++++++------- src/atom_vec_sphere.h | 12 +-- src/pair_dpd_tstat.cpp | 2 +- 26 files changed, 490 insertions(+), 259 deletions(-) diff --git a/src/ASPHERE/atom_vec_ellipsoid.cpp b/src/ASPHERE/atom_vec_ellipsoid.cpp index e6c7a127e4..50820debe8 100755 --- a/src/ASPHERE/atom_vec_ellipsoid.cpp +++ b/src/ASPHERE/atom_vec_ellipsoid.cpp @@ -262,13 +262,19 @@ int AtomVecEllipsoid::pack_comm_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_comm_one(int i, double *buf) +int AtomVecEllipsoid::pack_comm_hybrid(int n, int *list, double *buf) { - buf[0] = quat[i][0]; - buf[1] = quat[i][1]; - buf[2] = quat[i][2]; - buf[3] = quat[i][3]; - return 4; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = quat[i][0]; + buf[m++] = quat[i][1]; + buf[m++] = quat[i][2]; + buf[m++] = quat[i][3]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -317,13 +323,19 @@ void AtomVecEllipsoid::unpack_comm_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::unpack_comm_one(int i, double *buf) +int AtomVecEllipsoid::unpack_comm_hybrid(int n, int first, double *buf) { - quat[i][0] = buf[0]; - quat[i][1] = buf[1]; - quat[i][2] = buf[2]; - quat[i][3] = buf[3]; - return 4; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + quat[i][0] = buf[m++]; + quat[i][1] = buf[m++]; + quat[i][2] = buf[m++]; + quat[i][3] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -347,12 +359,18 @@ int AtomVecEllipsoid::pack_reverse(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_reverse_one(int i, double *buf) +int AtomVecEllipsoid::pack_reverse_hybrid(int n, int first, double *buf) { - buf[0] = torque[i][0]; - buf[1] = torque[i][1]; - buf[2] = torque[i][2]; - return 3; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = torque[i][0]; + buf[m++] = torque[i][1]; + buf[m++] = torque[i][2]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -375,12 +393,18 @@ void AtomVecEllipsoid::unpack_reverse(int n, int *list, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::unpack_reverse_one(int i, double *buf) +int AtomVecEllipsoid::unpack_reverse_hybrid(int n, int *list, double *buf) { - torque[i][0] += buf[0]; - torque[i][1] += buf[1]; - torque[i][2] += buf[2]; - return 3; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + torque[j][0] += buf[m++]; + torque[j][1] += buf[m++]; + torque[j][2] += buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -543,16 +567,22 @@ int AtomVecEllipsoid::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::pack_border_one(int i, double *buf) +int AtomVecEllipsoid::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = shape[i][0]; - buf[1] = shape[i][1]; - buf[2] = shape[i][2]; - buf[3] = quat[i][0]; - buf[4] = quat[i][1]; - buf[5] = quat[i][2]; - buf[6] = quat[i][3]; - return 7; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = shape[j][0]; + buf[m++] = shape[j][1]; + buf[m++] = shape[j][2]; + buf[m++] = quat[j][0]; + buf[m++] = quat[j][1]; + buf[m++] = quat[j][2]; + buf[m++] = quat[j][3]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -615,16 +645,22 @@ void AtomVecEllipsoid::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecEllipsoid::unpack_border_one(int i, double *buf) +int AtomVecEllipsoid::unpack_border_hybrid(int n, int first, double *buf) { - shape[i][0] = buf[0]; - shape[i][1] = buf[1]; - shape[i][2] = buf[2]; - quat[i][0] = buf[3]; - quat[i][1] = buf[4]; - quat[i][2] = buf[5]; - quat[i][3] = buf[6]; - return 7; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + shape[i][0] = buf[m++]; + shape[i][1] = buf[m++]; + shape[i][2] = buf[m++]; + quat[i][0] = buf[m++]; + quat[i][1] = buf[m++]; + quat[i][2] = buf[m++]; + quat[i][3] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- diff --git a/src/ASPHERE/atom_vec_ellipsoid.h b/src/ASPHERE/atom_vec_ellipsoid.h index e3f0938047..b1a4a81341 100755 --- a/src/ASPHERE/atom_vec_ellipsoid.h +++ b/src/ASPHERE/atom_vec_ellipsoid.h @@ -33,20 +33,20 @@ class AtomVecEllipsoid : public AtomVec { void copy(int, int); int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_one(int, double *); + int pack_comm_hybrid(int, int *, double *); void unpack_comm(int, int, double *); void unpack_comm_vel(int, int, double *); - int unpack_comm_one(int, double *); + int unpack_comm_hybrid(int, int, double *); int pack_reverse(int, int, double *); - int pack_reverse_one(int, double *); + int pack_reverse_hybrid(int, int, double *); void unpack_reverse(int, int *, double *); - int unpack_reverse_one(int, double *); + int unpack_reverse_hybrid(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/DIPOLE/atom_vec_dipole.cpp b/src/DIPOLE/atom_vec_dipole.cpp index 7a1bc6be14..71c9d1407b 100644 --- a/src/DIPOLE/atom_vec_dipole.cpp +++ b/src/DIPOLE/atom_vec_dipole.cpp @@ -44,7 +44,6 @@ AtomVecDipole::AtomVecDipole(LAMMPS *lmp, int narg, char **arg) : size_data_vel = 7; xcol_data = 4; - atom->dipole_flag = 1; atom->q_flag = atom->mu_flag = 1; } @@ -232,12 +231,18 @@ int AtomVecDipole::pack_comm_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecDipole::pack_comm_one(int i, double *buf) +int AtomVecDipole::pack_comm_hybrid(int n, int *list, double *buf) { - buf[0] = mu[i][0]; - buf[1] = mu[i][1]; - buf[2] = mu[i][2]; - return 3; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -281,12 +286,18 @@ void AtomVecDipole::unpack_comm_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecDipole::unpack_comm_one(int i, double *buf) +int AtomVecDipole::unpack_comm_hybrid(int n, int first, double *buf) { - mu[i][0] = buf[0]; - mu[i][1] = buf[1]; - mu[i][2] = buf[2]; - return 3; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -461,14 +472,20 @@ int AtomVecDipole::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecDipole::pack_border_one(int i, double *buf) +int AtomVecDipole::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = q[i]; - buf[1] = mu[i][0]; - buf[2] = mu[i][1]; - buf[3] = mu[i][2]; - buf[4] = mu[i][3]; - return 5; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = q[j]; + buf[m++] = mu[j][0]; + buf[m++] = mu[j][1]; + buf[m++] = mu[j][2]; + buf[m++] = mu[j][3]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -524,14 +541,20 @@ void AtomVecDipole::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecDipole::unpack_border_one(int i, double *buf) +int AtomVecDipole::unpack_border_hybrid(int n, int first, double *buf) { - q[i] = buf[0]; - mu[i][0] = buf[1]; - mu[i][1] = buf[2]; - mu[i][2] = buf[3]; - mu[i][3] = buf[4]; - return 5; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + q[i] = buf[m++]; + mu[i][0] = buf[m++]; + mu[i][1] = buf[m++]; + mu[i][2] = buf[m++]; + mu[i][3] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- diff --git a/src/DIPOLE/atom_vec_dipole.h b/src/DIPOLE/atom_vec_dipole.h index 5cfd54c3d1..8e8c77bdc8 100644 --- a/src/DIPOLE/atom_vec_dipole.h +++ b/src/DIPOLE/atom_vec_dipole.h @@ -32,18 +32,18 @@ class AtomVecDipole : public AtomVec { void copy(int, int); int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_one(int, double *); + int pack_comm_hybrid(int, int *, double *); void unpack_comm(int, int, double *); void unpack_comm_vel(int, int, double *); - int unpack_comm_one(int, double *); + int unpack_comm_hybrid(int, int, double *); int pack_reverse(int, int, double *); void unpack_reverse(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/MOLECULE/atom_vec_angle.cpp b/src/MOLECULE/atom_vec_angle.cpp index 54c5cc6746..26e3968bcf 100644 --- a/src/MOLECULE/atom_vec_angle.cpp +++ b/src/MOLECULE/atom_vec_angle.cpp @@ -428,10 +428,16 @@ int AtomVecAngle::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecAngle::pack_border_one(int i, double *buf) +int AtomVecAngle::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = molecule[i]; - return 1; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = molecule[j]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -479,10 +485,15 @@ void AtomVecAngle::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecAngle::unpack_border_one(int i, double *buf) +int AtomVecAngle::unpack_border_hybrid(int n, int first, double *buf) { - molecule[i] = static_cast<int> (buf[0]); - return 1; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + molecule[i] = static_cast<int> (buf[m++]); + return m; } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/atom_vec_angle.h b/src/MOLECULE/atom_vec_angle.h index bd73a7ef38..009a38d8eb 100644 --- a/src/MOLECULE/atom_vec_angle.h +++ b/src/MOLECULE/atom_vec_angle.h @@ -38,10 +38,10 @@ class AtomVecAngle : public AtomVec { void unpack_reverse(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/MOLECULE/atom_vec_bond.cpp b/src/MOLECULE/atom_vec_bond.cpp index 5900aa4609..81660e1e2f 100644 --- a/src/MOLECULE/atom_vec_bond.cpp +++ b/src/MOLECULE/atom_vec_bond.cpp @@ -421,10 +421,16 @@ int AtomVecBond::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecBond::pack_border_one(int i, double *buf) +int AtomVecBond::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = molecule[i]; - return 1; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = molecule[j]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -472,10 +478,15 @@ void AtomVecBond::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecBond::unpack_border_one(int i, double *buf) +int AtomVecBond::unpack_border_hybrid(int n, int first, double *buf) { - molecule[i] = static_cast<int> (buf[0]); - return 1; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + molecule[i] = static_cast<int> (buf[m++]); + return m; } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/atom_vec_bond.h b/src/MOLECULE/atom_vec_bond.h index 5a6648651c..3274e3a0cf 100644 --- a/src/MOLECULE/atom_vec_bond.h +++ b/src/MOLECULE/atom_vec_bond.h @@ -38,10 +38,10 @@ class AtomVecBond : public AtomVec { void unpack_reverse(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/MOLECULE/atom_vec_full.cpp b/src/MOLECULE/atom_vec_full.cpp index 8261b4317e..428c8957ca 100644 --- a/src/MOLECULE/atom_vec_full.cpp +++ b/src/MOLECULE/atom_vec_full.cpp @@ -506,11 +506,17 @@ int AtomVecFull::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecFull::pack_border_one(int i, double *buf) +int AtomVecFull::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = q[i]; - buf[1] = molecule[i]; - return 2; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = q[j]; + buf[m++] = molecule[j]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -560,11 +566,17 @@ void AtomVecFull::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecFull::unpack_border_one(int i, double *buf) +int AtomVecFull::unpack_border_hybrid(int n, int first, double *buf) { - q[i] = buf[0]; - molecule[i] = static_cast<int> (buf[1]); - return 2; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + q[i] = buf[m++]; + molecule[i] = static_cast<int> (buf[m++]); + } + return m; } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/atom_vec_full.h b/src/MOLECULE/atom_vec_full.h index 4fea6a5ea5..c2c23881d7 100644 --- a/src/MOLECULE/atom_vec_full.h +++ b/src/MOLECULE/atom_vec_full.h @@ -38,10 +38,10 @@ class AtomVecFull : public AtomVec { void unpack_reverse(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/MOLECULE/atom_vec_molecular.cpp b/src/MOLECULE/atom_vec_molecular.cpp index 84bfa9f27a..ac26f00c49 100644 --- a/src/MOLECULE/atom_vec_molecular.cpp +++ b/src/MOLECULE/atom_vec_molecular.cpp @@ -499,10 +499,16 @@ int AtomVecMolecular::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecMolecular::pack_border_one(int i, double *buf) +int AtomVecMolecular::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = molecule[i]; - return 1; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = molecule[j]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -550,10 +556,15 @@ void AtomVecMolecular::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecMolecular::unpack_border_one(int i, double *buf) +int AtomVecMolecular::unpack_border_hybrid(int n, int first, double *buf) { - molecule[i] = static_cast<int> (buf[0]); - return 1; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + molecule[i] = static_cast<int> (buf[m++]); + return m; } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/atom_vec_molecular.h b/src/MOLECULE/atom_vec_molecular.h index 2f1ce1006f..6249b8bf1e 100644 --- a/src/MOLECULE/atom_vec_molecular.h +++ b/src/MOLECULE/atom_vec_molecular.h @@ -38,10 +38,10 @@ class AtomVecMolecular : public AtomVec { void unpack_reverse(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/PERI/atom_vec_peri.cpp b/src/PERI/atom_vec_peri.cpp index d23fe810f3..b4d94e3fa8 100644 --- a/src/PERI/atom_vec_peri.cpp +++ b/src/PERI/atom_vec_peri.cpp @@ -231,10 +231,16 @@ int AtomVecPeri::pack_comm_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecPeri::pack_comm_one(int i, double *buf) +int AtomVecPeri::pack_comm_hybrid(int n, int *list, double *buf) { - buf[0] = s0[i]; - return 1; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = s0[i]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -274,10 +280,15 @@ void AtomVecPeri::unpack_comm_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecPeri::unpack_comm_one(int i, double *buf) +int AtomVecPeri::unpack_comm_hybrid(int n, int first, double *buf) { - s0[i] = buf[0]; - return 1; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + s0[i] = buf[m++]; + return m; } /* ---------------------------------------------------------------------- */ @@ -452,14 +463,20 @@ int AtomVecPeri::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecPeri::pack_border_one(int i, double *buf) +int AtomVecPeri::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = vfrac[i]; - buf[1] = s0[i]; - buf[2] = x0[i][0]; - buf[3] = x0[i][1]; - buf[4] = x0[i][2]; - return 5; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = vfrac[j]; + buf[m++] = s0[j]; + buf[m++] = x0[j][0]; + buf[m++] = x0[j][1]; + buf[m++] = x0[j][2]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -515,14 +532,20 @@ void AtomVecPeri::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecPeri::unpack_border_one(int i, double *buf) +int AtomVecPeri::unpack_border_hybrid(int n, int first, double *buf) { - vfrac[i] = buf[0]; - s0[i] = buf[1]; - x0[i][0] = buf[2]; - x0[i][1] = buf[3]; - x0[i][2] = buf[4]; - return 5; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + vfrac[i] = buf[m++]; + s0[i] = buf[m++]; + x0[i][0] = buf[m++]; + x0[i][1] = buf[m++]; + x0[i][2] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- diff --git a/src/PERI/atom_vec_peri.h b/src/PERI/atom_vec_peri.h index 333e452b5a..4b14c04b42 100755 --- a/src/PERI/atom_vec_peri.h +++ b/src/PERI/atom_vec_peri.h @@ -32,18 +32,18 @@ class AtomVecPeri : public AtomVec { void copy(int, int); int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_one(int, double *); + int pack_comm_hybrid(int, int *, double *); void unpack_comm(int, int, double *); void unpack_comm_vel(int, int, double *); - int unpack_comm_one(int, double *); + int unpack_comm_hybrid(int, int, double *); int pack_reverse(int, int, double *); void unpack_reverse(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/SRD/fix_srd.cpp b/src/SRD/fix_srd.cpp index 41f9040625..ec8716f403 100644 --- a/src/SRD/fix_srd.cpp +++ b/src/SRD/fix_srd.cpp @@ -291,8 +291,6 @@ void FixSRD::init() if (bigexist && !atom->sphere_flag && !atom->ellipsoid_flag) error->all("Fix SRD requires atom style sphere or ellipsoid"); - if (bigexist && atom->angmom_flag && atom->omega_flag) - error->all("Fix SRD cannot have both atom attributes angmom and omega"); if (bigexist && collidestyle == NOSLIP && !atom->torque_flag) error->all("Fix SRD no-slip requires atom attribute torque"); diff --git a/src/USER-EFF/atom_vec_electron.cpp b/src/USER-EFF/atom_vec_electron.cpp index 7ddb37d004..0a13aa1a76 100644 --- a/src/USER-EFF/atom_vec_electron.cpp +++ b/src/USER-EFF/atom_vec_electron.cpp @@ -228,6 +228,20 @@ int AtomVecElectron::pack_comm_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ +int AtomVecElectron::pack_comm_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = eradius[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + void AtomVecElectron::unpack_comm(int n, int first, double *buf) { int i,m,last; @@ -263,18 +277,15 @@ void AtomVecElectron::unpack_comm_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecElectron::pack_comm_one(int i, double *buf) +int AtomVecElectron::unpack_comm_hybrid(int n, int first, double *buf) { - buf[0] = eradius[i]; - return 1; -} - -/* ---------------------------------------------------------------------- */ + int i,m,last; -int AtomVecElectron::unpack_comm_one(int i, double *buf) -{ - eradius[i] = buf[0]; - return 1; + m = 0; + last = first + n; + for (i = first; i < last; i++) + eradius[i] = buf[m++]; + return m; } /* ---------------------------------------------------------------------- */ @@ -296,10 +307,15 @@ int AtomVecElectron::pack_reverse(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecElectron::pack_reverse_one(int i, double *buf) +int AtomVecElectron::pack_reverse_hybrid(int n, int first, double *buf) { - buf[0] = erforce[i]; - return 1; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + buf[m++] = erforce[i]; + return m; } /* ---------------------------------------------------------------------- */ @@ -320,10 +336,16 @@ void AtomVecElectron::unpack_reverse(int n, int *list, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecElectron::unpack_reverse_one(int i, double *buf) +int AtomVecElectron::unpack_reverse_hybrid(int n, int *list, double *buf) { - erforce[i] += buf[0]; - return 1; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + erforce[j] += buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -457,12 +479,18 @@ int AtomVecElectron::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecElectron::pack_border_one(int i, double *buf) +int AtomVecElectron::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = q[i]; - buf[1] = spin[i]; - buf[2] = eradius[i]; - return 3; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = q[j]; + buf[m++] = spin[j]; + buf[m++] = eradius[j]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -514,12 +542,18 @@ void AtomVecElectron::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecElectron::unpack_border_one(int i, double *buf) +int AtomVecElectron::unpack_border_hybrid(int n, int first, double *buf) { - q[i] = buf[0]; - spin[i] = static_cast<int> (buf[1]); - eradius[i] = buf[2]; - return 3; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + q[i] = buf[m++]; + spin[i] = static_cast<int> (buf[m++]); + eradius[i] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- diff --git a/src/USER-EFF/atom_vec_electron.h b/src/USER-EFF/atom_vec_electron.h index 3670958c16..3ae836ae23 100644 --- a/src/USER-EFF/atom_vec_electron.h +++ b/src/USER-EFF/atom_vec_electron.h @@ -33,20 +33,20 @@ class AtomVecElectron : public AtomVec { void copy(int, int); int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_one(int, double *); + int pack_comm_hybrid(int, int *, double *); void unpack_comm(int, int, double *); void unpack_comm_vel(int, int, double *); - int unpack_comm_one(int, double *); + int unpack_comm_hybrid(int, int, double *); int pack_reverse(int, int, double *); - int pack_reverse_one(int, double *); + int pack_reverse_hybrid(int, int, double *); void unpack_reverse(int, int *, double *); - int unpack_reverse_one(int, double *); + int unpack_reverse_hybrid(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/atom.cpp b/src/atom.cpp index d31f20c1e3..81ca000a40 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -99,7 +99,7 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) // initialize atom style and array existence flags // customize by adding new flag - sphere_flag = ellipsoid_flag = peri_flag = dipole_flag = electron_flag = 0; + sphere_flag = ellipsoid_flag = peri_flag = electron_flag = 0; molecule_flag = q_flag = mu_flag = 0; rmass_flag = radius_flag = omega_flag = torque_flag = 0; @@ -253,7 +253,7 @@ void Atom::create_avec(const char *style, int narg, char **arg) // may have been set by old avec // customize by adding new flag - sphere_flag = ellipsoid_flag = peri_flag = dipole_flag = electron_flag = 0; + sphere_flag = ellipsoid_flag = peri_flag = electron_flag = 0; molecule_flag = q_flag = mu_flag = 0; rmass_flag = radius_flag = omega_flag = torque_flag = 0; diff --git a/src/atom.h b/src/atom.h index e05929eaa5..47bad27ffe 100644 --- a/src/atom.h +++ b/src/atom.h @@ -78,7 +78,7 @@ class Atom : protected Pointers { // atom style and per-atom array existence flags // customize by adding new flag - int sphere_flag,ellipsoid_flag,peri_flag,dipole_flag,electron_flag; + int sphere_flag,ellipsoid_flag,peri_flag,electron_flag; int molecule_flag,q_flag,mu_flag; int rmass_flag,radius_flag,omega_flag,torque_flag; diff --git a/src/atom_vec.h b/src/atom_vec.h index 7c399bf44b..594931507e 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -47,22 +47,22 @@ class AtomVec : protected Pointers { virtual int pack_comm(int, int *, double *, int, int *) = 0; virtual int pack_comm_vel(int, int *, double *, int, int *) = 0; - virtual int pack_comm_one(int, double *) {return 0;} + virtual int pack_comm_hybrid(int, int *, double *) {return 0;} virtual void unpack_comm(int, int, double *) = 0; virtual void unpack_comm_vel(int, int, double *) = 0; - virtual int unpack_comm_one(int, double *) {return 0;} + virtual int unpack_comm_hybrid(int, int, double *) {return 0;} virtual int pack_reverse(int, int, double *) = 0; - virtual int pack_reverse_one(int, double *) {return 0;} + virtual int pack_reverse_hybrid(int, int, double *) {return 0;} virtual void unpack_reverse(int, int *, double *) = 0; - virtual int unpack_reverse_one(int, double *) {return 0;} + virtual int unpack_reverse_hybrid(int, int *, double *) {return 0;} virtual int pack_border(int, int *, double *, int, int *) = 0; virtual int pack_border_vel(int, int *, double *, int, int *) = 0; - virtual int pack_border_one(int, double *) {return 0;} + virtual int pack_border_hybrid(int, int *, double *) {return 0;} virtual void unpack_border(int, int, double *) = 0; virtual void unpack_border_vel(int, int, double *) = 0; - virtual int unpack_border_one(int, double *) {return 0;} + virtual int unpack_border_hybrid(int, int, double *) {return 0;} virtual int pack_exchange(int, double *) = 0; virtual int unpack_exchange(double *) = 0; diff --git a/src/atom_vec_charge.cpp b/src/atom_vec_charge.cpp index e2f6ac4c03..5088361cbd 100644 --- a/src/atom_vec_charge.cpp +++ b/src/atom_vec_charge.cpp @@ -392,10 +392,16 @@ int AtomVecCharge::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecCharge::pack_border_one(int i, double *buf) +int AtomVecCharge::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = q[i]; - return 1; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = q[j]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -443,10 +449,15 @@ void AtomVecCharge::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecCharge::unpack_border_one(int i, double *buf) +int AtomVecCharge::unpack_border_hybrid(int n, int first, double *buf) { - q[i] = buf[0]; - return 1; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + q[i] = buf[m++]; + return m; } /* ---------------------------------------------------------------------- diff --git a/src/atom_vec_charge.h b/src/atom_vec_charge.h index 80786edc48..a25641f76d 100644 --- a/src/atom_vec_charge.h +++ b/src/atom_vec_charge.h @@ -38,10 +38,10 @@ class AtomVecCharge : public AtomVec { void unpack_reverse(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/atom_vec_hybrid.cpp b/src/atom_vec_hybrid.cpp index f630b67557..d4e148245c 100644 --- a/src/atom_vec_hybrid.cpp +++ b/src/atom_vec_hybrid.cpp @@ -187,8 +187,6 @@ int AtomVecHybrid::pack_comm(int n, int *list, double *buf, buf[m++] = x[j][0]; buf[m++] = x[j][1]; buf[m++] = x[j][2]; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_one(j,&buf[m]); } } else { if (domain->triclinic == 0) { @@ -205,10 +203,14 @@ int AtomVecHybrid::pack_comm(int n, int *list, double *buf, buf[m++] = x[j][0] + dx; buf[m++] = x[j][1] + dy; buf[m++] = x[j][2] + dz; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_one(j,&buf[m]); } } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); + return m; } @@ -242,8 +244,6 @@ int AtomVecHybrid::pack_comm_vel(int n, int *list, double *buf, buf[m++] = angmom[j][1]; buf[m++] = angmom[j][2]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_one(j,&buf[m]); } } else { if (domain->triclinic == 0) { @@ -274,8 +274,6 @@ int AtomVecHybrid::pack_comm_vel(int n, int *list, double *buf, buf[m++] = angmom[j][1]; buf[m++] = angmom[j][2]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_one(j,&buf[m]); } } else { dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; @@ -305,11 +303,15 @@ int AtomVecHybrid::pack_comm_vel(int n, int *list, double *buf, buf[m++] = angmom[j][1]; buf[m++] = angmom[j][2]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_comm_one(j,&buf[m]); } } } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); + return m; } @@ -317,28 +319,31 @@ int AtomVecHybrid::pack_comm_vel(int n, int *list, double *buf, void AtomVecHybrid::unpack_comm(int n, int first, double *buf) { - int i,k,last; + int i,k,m,last; - int m = 0; + m = 0; last = first + n; for (i = first; i < last; i++) { x[i][0] = buf[m++]; x[i][1] = buf[m++]; x[i][2] = buf[m++]; - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_comm_one(i,&buf[m]); } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); } /* ---------------------------------------------------------------------- */ void AtomVecHybrid::unpack_comm_vel(int n, int first, double *buf) { - int i,k,last; + int i,k,m,last; int omega_flag = atom->omega_flag; int angmom_flag = atom->angmom_flag; - int m = 0; + m = 0; last = first + n; for (i = first; i < last; i++) { x[i][0] = buf[m++]; @@ -357,26 +362,33 @@ void AtomVecHybrid::unpack_comm_vel(int n, int first, double *buf) angmom[i][1] = buf[m++]; angmom[i][2] = buf[m++]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_comm_one(i,&buf[m]); } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); } /* ---------------------------------------------------------------------- */ int AtomVecHybrid::pack_reverse(int n, int first, double *buf) { - int i,k,last; + int i,k,m,last; - int m = 0; + m = 0; last = first + n; for (i = first; i < last; i++) { buf[m++] = f[i][0]; buf[m++] = f[i][1]; buf[m++] = f[i][2]; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_reverse_one(i,&buf[m]); } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_reverse_hybrid(n,first,&buf[m]); + return m; } @@ -392,9 +404,12 @@ void AtomVecHybrid::unpack_reverse(int n, int *list, double *buf) f[j][0] += buf[m++]; f[j][1] += buf[m++]; f[j][2] += buf[m++]; - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_reverse_one(j,&buf[m]); } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_reverse_hybrid(n,list,&buf[m]); } /* ---------------------------------------------------------------------- */ @@ -415,8 +430,6 @@ int AtomVecHybrid::pack_border(int n, int *list, double *buf, buf[m++] = tag[j]; buf[m++] = type[j]; buf[m++] = mask[j]; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_one(j,&buf[m]); } } else { if (domain->triclinic == 0) { @@ -436,10 +449,14 @@ int AtomVecHybrid::pack_border(int n, int *list, double *buf, buf[m++] = tag[j]; buf[m++] = type[j]; buf[m++] = mask[j]; - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_one(j,&buf[m]); } } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_border_hybrid(n,list,&buf[m]); + return m; } @@ -476,8 +493,6 @@ int AtomVecHybrid::pack_border_vel(int n, int *list, double *buf, buf[m++] = angmom[j][1]; buf[m++] = angmom[j][2]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_one(j,&buf[m]); } } else { if (domain->triclinic == 0) { @@ -511,8 +526,6 @@ int AtomVecHybrid::pack_border_vel(int n, int *list, double *buf, buf[m++] = angmom[j][1]; buf[m++] = angmom[j][2]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_one(j,&buf[m]); } } else { dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; @@ -545,11 +558,15 @@ int AtomVecHybrid::pack_border_vel(int n, int *list, double *buf, buf[m++] = angmom[j][1]; buf[m++] = angmom[j][2]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->pack_border_one(j,&buf[m]); } } } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_border_hybrid(n,list,&buf[m]); + return m; } @@ -569,9 +586,12 @@ void AtomVecHybrid::unpack_border(int n, int first, double *buf) tag[i] = static_cast<int> (buf[m++]); type[i] = static_cast<int> (buf[m++]); mask[i] = static_cast<int> (buf[m++]); - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_border_one(i,&buf[m]); } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); } /* ---------------------------------------------------------------------- */ @@ -605,9 +625,12 @@ void AtomVecHybrid::unpack_border_vel(int n, int first, double *buf) angmom[i][1] = buf[m++]; angmom[i][2] = buf[m++]; } - for (k = 0; k < nstyles; k++) - m += styles[k]->unpack_border_one(i,&buf[m]); } + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); } /* ---------------------------------------------------------------------- @@ -617,12 +640,12 @@ void AtomVecHybrid::unpack_border_vel(int n, int first, double *buf) int AtomVecHybrid::pack_exchange(int i, double *buf) { - int k; + int k,m; int tmp = atom->nextra_grow; atom->nextra_grow = 0; - int m = 0; + m = 0; for (k = 0; k < nstyles; k++) m += styles[k]->pack_exchange(i,&buf[m]); @@ -644,14 +667,16 @@ int AtomVecHybrid::pack_exchange(int i, double *buf) int AtomVecHybrid::unpack_exchange(double *buf) { + int k,m; + int nlocal = atom->nlocal; if (nlocal == nmax) grow(0); int tmp = atom->nextra_grow; atom->nextra_grow = 0; - int m = 0; - for (int k = 0; k < nstyles; k++) { + m = 0; + for (k = 0; k < nstyles; k++) { m += styles[k]->unpack_exchange(&buf[m]); atom->nlocal--; } diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index 6b7ff6eb18..1aa886c7ed 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -363,13 +363,19 @@ int AtomVecSphere::pack_comm_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecSphere::pack_comm_one(int i, double *buf) +int AtomVecSphere::pack_comm_hybrid(int n, int *list, double *buf) { + int i,j,m; + if (radvary == 0) return 0; - buf[0] = radius[i]; - buf[1] = rmass[i]; - return 2; + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = radius[i]; + buf[m++] = rmass[i]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -440,13 +446,19 @@ void AtomVecSphere::unpack_comm_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecSphere::unpack_comm_one(int i, double *buf) +int AtomVecSphere::unpack_comm_hybrid(int n, int first, double *buf) { + int i,m,last; + if (radvary == 0) return 0; - radius[i] = buf[0]; - rmass[i] = buf[1]; - return 2; + m = 0; + last = first + n; + for (i = first; i < last; i++) { + radius[i] = buf[m++]; + rmass[i] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -470,12 +482,18 @@ int AtomVecSphere::pack_reverse(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecSphere::pack_reverse_one(int i, double *buf) +int AtomVecSphere::pack_reverse_hybrid(int n, int first, double *buf) { - buf[0] = torque[i][0]; - buf[1] = torque[i][1]; - buf[2] = torque[i][2]; - return 3; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = torque[i][0]; + buf[m++] = torque[i][1]; + buf[m++] = torque[i][2]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -498,12 +516,18 @@ void AtomVecSphere::unpack_reverse(int n, int *list, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecSphere::unpack_reverse_one(int i, double *buf) +int AtomVecSphere::unpack_reverse_hybrid(int n, int *list, double *buf) { - torque[i][0] += buf[0]; - torque[i][1] += buf[1]; - torque[i][2] += buf[2]; - return 3; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + torque[j][0] += buf[m++]; + torque[j][1] += buf[m++]; + torque[j][2] += buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -641,11 +665,17 @@ int AtomVecSphere::pack_border_vel(int n, int *list, double *buf, /* ---------------------------------------------------------------------- */ -int AtomVecSphere::pack_border_one(int i, double *buf) +int AtomVecSphere::pack_border_hybrid(int n, int *list, double *buf) { - buf[0] = radius[i]; - buf[1] = rmass[i]; - return 2; + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = radius[j]; + buf[m++] = rmass[j]; + } + return m; } /* ---------------------------------------------------------------------- */ @@ -699,11 +729,17 @@ void AtomVecSphere::unpack_border_vel(int n, int first, double *buf) /* ---------------------------------------------------------------------- */ -int AtomVecSphere::unpack_border_one(int i, double *buf) +int AtomVecSphere::unpack_border_hybrid(int n, int first, double *buf) { - radius[i] = buf[0]; - rmass[i] = buf[1]; - return 2; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + radius[i] = buf[m++]; + rmass[i] = buf[m++]; + } + return m; } /* ---------------------------------------------------------------------- diff --git a/src/atom_vec_sphere.h b/src/atom_vec_sphere.h index d1fa9ba42b..566db3ff96 100644 --- a/src/atom_vec_sphere.h +++ b/src/atom_vec_sphere.h @@ -34,20 +34,20 @@ class AtomVecSphere : public AtomVec { void copy(int, int); int pack_comm(int, int *, double *, int, int *); int pack_comm_vel(int, int *, double *, int, int *); - int pack_comm_one(int, double *); + int pack_comm_hybrid(int, int *, double *); void unpack_comm(int, int, double *); void unpack_comm_vel(int, int, double *); - int unpack_comm_one(int, double *); + int unpack_comm_hybrid(int, int, double *); int pack_reverse(int, int, double *); - int pack_reverse_one(int, double *); + int pack_reverse_hybrid(int, int, double *); void unpack_reverse(int, int *, double *); - int unpack_reverse_one(int, double *); + int unpack_reverse_hybrid(int, int *, double *); int pack_border(int, int *, double *, int, int *); int pack_border_vel(int, int *, double *, int, int *); - int pack_border_one(int, double *); + int pack_border_hybrid(int, int *, double *); void unpack_border(int, int, double *); void unpack_border_vel(int, int, double *); - int unpack_border_one(int, double *); + int unpack_border_hybrid(int, int, double *); int pack_exchange(int, double *); int unpack_exchange(double *); int size_restart(); diff --git a/src/pair_dpd_tstat.cpp b/src/pair_dpd_tstat.cpp index b64ff6b0f2..1546d22340 100644 --- a/src/pair_dpd_tstat.cpp +++ b/src/pair_dpd_tstat.cpp @@ -56,7 +56,7 @@ void PairDPDTstat::compute(int eflag, int vflag) temperature = t_start + delta * (t_stop-t_start); double boltz = force->boltz; for (i = 1; i <= atom->ntypes; i++) - for (j = i+1; j <= atom->ntypes; j++) + for (j = i; j <= atom->ntypes; j++) sigma[i][j] = sigma[j][i] = sqrt(2.0*boltz*temperature*gamma[i][j]); } -- GitLab