1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef PAIR_CLASS
PairStyle(coul/streitz,PairCoulStreitz)
#else
#ifndef LMP_PAIR_COUL_Streitz_H
#define LMP_PAIR_COUL_Streitz_H
#include "pair.h"
namespace LAMMPS_NS {
class PairCoulStreitz : public Pair {
public:
PairCoulStreitz(class LAMMPS *);
virtual ~PairCoulStreitz();
virtual void compute(int, int);
void settings(int, char **);
void coeff(int, char **);
void init_style();
double init_one(int, int);
double memory_usage();
virtual void *extract(const char *, int &);
protected:
struct Param {
double chi, eta, gamma, zeta, zcore;
int ielement;
};
int nmax;
int nelements; // # of unique elements
char **elements; // names of unique elements
int *elem2param; // mapping from element triplets to parameters
int *map; // mapping from atom types to elements
int nparams; // # of stored parameter sets
int maxparam; // max # of parameter sets
double precision;
Param *params; // parameter set for an I-J-K interaction
// Kspace parameters
int kspacetype;
double cut_coul, cut_coulsq;
double *cut_respa;
double **scale;
// Wolf
double g_wolf, woself, dwoself;
// Ewald
double g_ewald;
// QEq
double *qeq_x, *qeq_j, *qeq_g, *qeq_z, *qeq_c;
void allocate();
virtual void read_file(char *);
void setup_params();
double self(Param *, double);
void coulomb_integral_wolf(double, double, double, double &, double &,
double &, double &);
void wolf_sum(double, double, double, double, double, double, double,
double, double &, double &);
void coulomb_integral_ewald(double, double, double, double &, double &,
double &, double &);
void ewald_sum(double, double, double, double, double, double, double,
double, double &, double &, double);
};
}
#endif
#endif
/* ERROR/WARNING messages:
E: Illegal ... command
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
E: Incorrect args for pair coefficients
Self-explanatory. Check the input script or data file.
E: Pair style coul/streitz requires atom attribute q
Self-explanatory.
E: Pair style requires a KSpace style
No kspace style is defined.
E: All pair coeffs are not set
All pair coefficients must be set in the data file or by the
pair_coeff command before running a simulation.
E: Cannot open coul/streitz potential file %s
The specified coul/streitz potential file cannot be opened. Check
that the path and name are correct.
E: Incorrect format in coul/streitz potential file
Incorrect number of words per line in the potential file.
E: Illegal coul/streitz parameter
One or more of the coefficients defined in the potential file is
invalid.
E: Potential file has duplicate entry
The potential file has more than one entry for the same element.
E: Potential file is missing an entry
The potential file does not have a needed entry.
*/