git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@12986 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
pscrozi
2015-01-23 17:28:13 +00:00
parent 3d19d66333
commit 05a0275791
2 changed files with 945 additions and 163 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
/* -*- c++ -*- ---------------------------------------------------------- /* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov Steve Plimpton, sjplimp@sandia.gov
@ -40,10 +40,17 @@ class FixGCMC : public Fix {
void attempt_molecule_deletion(); void attempt_molecule_deletion();
void attempt_molecule_insertion(); void attempt_molecule_insertion();
double energy(int, int, tagint, double *); double energy(int, int, tagint, double *);
void attempt_atomic_translation_full();
void attempt_atomic_deletion_full();
void attempt_atomic_insertion_full();
void attempt_molecule_translation_full();
void attempt_molecule_rotation_full();
void attempt_molecule_deletion_full();
void attempt_molecule_insertion_full();
double energy_full();
int pick_random_gas_atom(); int pick_random_gas_atom();
tagint pick_random_gas_molecule(); tagint pick_random_gas_molecule();
double molecule_energy(tagint); double molecule_energy(tagint);
void get_rotation_matrix(double, double *);
void update_gas_atoms_list(); void update_gas_atoms_list();
double compute_vector(int); double compute_vector(int);
double memory_usage(); double memory_usage();
@ -51,8 +58,10 @@ class FixGCMC : public Fix {
void restart(char *); void restart(char *);
private: private:
int rotation_group,rotation_groupbit; int molecule_group,molecule_group_bit;
int rotation_inversegroupbit; int molecule_group_inversebit;
int exclusion_group,exclusion_group_bit;
int exclusion_group_inversebit;
int ngcmc_type,nevery,seed; int ngcmc_type,nevery,seed;
int ncycles,nexchanges,nmcmoves; int ncycles,nexchanges,nmcmoves;
int ngas; // # of gas atoms on all procs int ngas; // # of gas atoms on all procs
@ -63,7 +72,8 @@ class FixGCMC : public Fix {
int iregion; // GCMC region int iregion; // GCMC region
char *idregion; // GCMC region id char *idregion; // GCMC region id
bool pressure_flag; // true if user specified reservoir pressure bool pressure_flag; // true if user specified reservoir pressure
// else false bool charge_flag; // true if user specified atomic charge
bool full_flag; // true if doing full system energy calculations
int natoms_per_molecule; // number of atoms in each gas molecule int natoms_per_molecule; // number of atoms in each gas molecule
@ -84,10 +94,11 @@ class FixGCMC : public Fix {
double displace; double displace;
double max_rotation_angle; double max_rotation_angle;
double beta,zz,sigma,volume; double beta,zz,sigma,volume;
double pressure,fugacity_coeff; double pressure,fugacity_coeff,charge;
double xlo,xhi,ylo,yhi,zlo,zhi; double xlo,xhi,ylo,yhi,zlo,zhi;
double region_xlo,region_xhi,region_ylo,region_yhi,region_zlo,region_zhi; double region_xlo,region_xhi,region_ylo,region_yhi,region_zlo,region_zhi;
double region_volume; double region_volume;
double energy_stored;
double *sublo,*subhi; double *sublo,*subhi;
int *local_gas_list; int *local_gas_list;
double **cutsq; double **cutsq;
@ -109,6 +120,8 @@ class FixGCMC : public Fix {
int shakeflag; int shakeflag;
char *idshake; char *idshake;
class Compute *c_pe;
void options(int, char **); void options(int, char **);
}; };
@ -169,21 +182,11 @@ Should not choose the GCMC molecule feature if no molecules are being
simulated. The general molecule flag is off, but GCMC's molecule flag simulated. The general molecule flag is off, but GCMC's molecule flag
is on. is on.
E: Fix gcmc incompatible with given pair_style
Some pair_styles do not provide single-atom energies, which are needed
by fix gcmc.
E: Cannot use fix gcmc in a 2d simulation E: Cannot use fix gcmc in a 2d simulation
Fix gcmc is set up to run in 3d only. No 2d simulations with fix gcmc Fix gcmc is set up to run in 3d only. No 2d simulations with fix gcmc
are allowed. are allowed.
E: Cannot use fix gcmc with a triclinic box
Fix gcmc is set up to run with othogonal boxes only. Simulations with
triclinic boxes and fix gcmc are not allowed.
E: Could not find fix gcmc rotation group ID E: Could not find fix gcmc rotation group ID
Self-explanatory. Self-explanatory.