forked from lijiext/lammps
git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@14331 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
parent
87a47d8b99
commit
493f9c469b
|
@ -37,6 +37,7 @@ ComputeTempDrude::ComputeTempDrude(LAMMPS *lmp, int narg, char **arg) :
|
|||
if (narg != 3) error->all(FLERR,"Illegal compute temp command");
|
||||
|
||||
vector_flag = 1;
|
||||
scalar_flag = 1;
|
||||
size_vector = 6;
|
||||
extscalar = 0;
|
||||
extvector = -1;
|
||||
|
@ -216,3 +217,9 @@ void ComputeTempDrude::compute_vector()
|
|||
vector[5] = kineng_drude;
|
||||
}
|
||||
|
||||
double ComputeTempDrude::compute_scalar(){
|
||||
compute_vector();
|
||||
scalar = vector[0];
|
||||
return scalar;
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ class ComputeTempDrude : public Compute {
|
|||
void init();
|
||||
void setup();
|
||||
void compute_vector();
|
||||
double compute_scalar();
|
||||
int modify_param(int, char **);
|
||||
|
||||
private:
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
#include "modify.h"
|
||||
#include "error.h"
|
||||
#include "memory.h"
|
||||
#include "molecule.h"
|
||||
#include "atom_vec.h"
|
||||
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
@ -38,6 +40,7 @@ FixDrude::FixDrude(LAMMPS *lmp, int narg, char **arg) :
|
|||
comm_border = 1; // drudeid
|
||||
special_alter_flag = 1;
|
||||
create_attribute = 1;
|
||||
is_reduced = false;
|
||||
|
||||
memory->create(drudetype, atom->ntypes+1, "fix_drude::drudetype");
|
||||
for (int i=3; i<narg; i++) {
|
||||
|
@ -109,13 +112,38 @@ void FixDrude::build_drudeid(){
|
|||
partner_set = new std::set<tagint>[nlocal]; // Temporary sets of bond partner tags
|
||||
|
||||
sptr = this;
|
||||
// Build list of my atoms' bond partners
|
||||
for (int i=0; i<nlocal; i++){
|
||||
if (drudetype[type[i]] == NOPOL_TYPE) continue;
|
||||
drudeid[i] = 0;
|
||||
for (int k=0; k<atom->num_bond[i]; k++){
|
||||
core_drude_vec.push_back(atom->tag[i]);
|
||||
core_drude_vec.push_back(atom->bond_atom[i][k]);
|
||||
if (atom->molecular == 1)
|
||||
{
|
||||
// Build list of my atoms' bond partners
|
||||
for (int i=0; i<nlocal; i++){
|
||||
if (drudetype[type[i]] == NOPOL_TYPE) continue;
|
||||
drudeid[i] = 0;
|
||||
for (int k=0; k<atom->num_bond[i]; k++){
|
||||
core_drude_vec.push_back(atom->tag[i]);
|
||||
core_drude_vec.push_back(atom->bond_atom[i][k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Template case
|
||||
class Molecule **atommols;
|
||||
atommols = atom->avec->onemols;
|
||||
|
||||
// Build list of my atoms' bond partners
|
||||
for (int i=0; i<nlocal; i++){
|
||||
int imol = atom->molindex[i];
|
||||
int iatom = atom->molatom[i];
|
||||
tagint *batom = atommols[imol]->bond_atom[iatom];
|
||||
tagint tagprev = atom->tag[i] - iatom - 1;
|
||||
int nbonds = atommols[imol]->num_bond[iatom];
|
||||
|
||||
if (drudetype[type[i]] == NOPOL_TYPE) continue;
|
||||
drudeid[i] = 0;
|
||||
for (int k=0; k<nbonds; k++){
|
||||
core_drude_vec.push_back(atom->tag[i]);
|
||||
core_drude_vec.push_back(batom[k]+tagprev);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Loop on procs to fill my atoms' sets of bond partners
|
||||
|
@ -275,6 +303,9 @@ void FixDrude::rebuild_special(){
|
|||
tagint **special = atom->special;
|
||||
int *type = atom->type;
|
||||
|
||||
if (atom->molecular != 1)
|
||||
return;
|
||||
|
||||
// Make sure that drude partners know each other
|
||||
//build_drudeid();
|
||||
|
||||
|
|
|
@ -44,12 +44,8 @@ FixLangevinDrude::FixLangevinDrude(LAMMPS *lmp, int narg, char **arg) :
|
|||
|
||||
// Langevin thermostat should be applied every step
|
||||
nevery = 1;
|
||||
vector_flag = 1;
|
||||
global_freq = nevery;
|
||||
extvector = 0;
|
||||
size_vector = 6;
|
||||
comm_reverse = 3;
|
||||
//extscalar = 1;
|
||||
|
||||
// core temperature
|
||||
tstr_core = NULL;
|
||||
|
|
|
@ -577,7 +577,7 @@ void PairLJCutTholeLong::read_restart_settings(FILE *fp)
|
|||
void PairLJCutTholeLong::write_data(FILE *fp)
|
||||
{
|
||||
for (int i = 1; i <= atom->ntypes; i++)
|
||||
fprintf(fp,"%d %g %g\n",i,epsilon[i][i],sigma[i][i]);
|
||||
fprintf(fp,"%d %g %g %g %g\n",i,epsilon[i][i],sigma[i][i],polar[i][i],thole[i][i]);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
|
@ -588,7 +588,7 @@ void PairLJCutTholeLong::write_data_all(FILE *fp)
|
|||
{
|
||||
for (int i = 1; i <= atom->ntypes; i++)
|
||||
for (int j = i; j <= atom->ntypes; j++)
|
||||
fprintf(fp,"%d %d %g %g %g\n",i,j,epsilon[i][j],sigma[i][j],cut_lj[i][j]);
|
||||
fprintf(fp,"%d %d %g %g %g %g %g\n",i,j,epsilon[i][j],sigma[i][j],polar[i][j],thole[i][j],cut_lj[i][j]);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
|
Loading…
Reference in New Issue