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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
/* -*- 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.
------------------------------------------------------------------------- */
#ifndef LMP_OUTPUT_H
#define LMP_OUTPUT_H
#include "pointers.h"
#include <map>
#include <string>
namespace LAMMPS_NS {
class Output : protected Pointers {
public:
bigint next; // next timestep for any kind of output
bigint next_thermo; // next timestep for thermo output
int thermo_every; // output freq for thermo, 0 if first/last only
bigint last_thermo; // last timestep thermo was output
char *var_thermo; // variable name for thermo freq, NULL if every
int ivar_thermo; // variable index for thermo frequency
class Thermo *thermo; // Thermodynamic computations
int ndump; // # of Dumps defined
int max_dump; // max size of Dump list
bigint next_dump_any; // next timestep for any Dump
int *every_dump; // write freq for each Dump, 0 if var
bigint *next_dump; // next timestep to do each Dump
bigint *last_dump; // last timestep each snapshot was output
char **var_dump; // variable name for dump frequency
int *ivar_dump; // variable index for dump frequency
class Dump **dump; // list of defined Dumps
int restart_flag; // 1 if any restart files are written
int restart_flag_single; // 1 if single restart files are written
int restart_flag_double; // 1 if double restart files are written
bigint next_restart; // next timestep to write any restart file
bigint next_restart_single; // next timestep to write a single restart file
bigint next_restart_double; // next timestep to write a double restart file
int restart_every_single; // single restart file write freq, 0 if var
int restart_every_double; // double restart file write freq, 0 if var
bigint last_restart; // last timestep any restart file was output
int restart_toggle; // 0 if use restart2a as prefix, 1 if restart2b
char *var_restart_single; // variable name for single restart freq
char *var_restart_double; // variable name for double restart freq
int ivar_restart_single; // index of var_restart_single
int ivar_restart_double; // index of var_restart_double
char *restart1; // name single restart file
char *restart2a,*restart2b; // names of double restart files
class WriteRestart *restart; // class for writing restart files
typedef Dump *(*DumpCreator)(LAMMPS *,int,char**);
typedef std::map<std::string,DumpCreator> DumpCreatorMap;
DumpCreatorMap *dump_map;
Output(class LAMMPS *);
~Output();
void init();
void setup(int memflag = 1); // initial output before run/min
void write(bigint); // output for current timestep
void write_dump(bigint); // force output of dump snapshots
void write_restart(bigint); // force output of a restart file
void reset_timestep(bigint); // reset next timestep for all output
void add_dump(int, char **); // add a Dump to Dump list
void modify_dump(int, char **); // modify a Dump
void delete_dump(char *); // delete a Dump from Dump list
int find_dump(const char *); // find a Dump ID
void set_thermo(int, char **); // set thermo output freqquency
void create_thermo(int, char **); // create a thermo style
void create_restart(int, char **); // create Restart and restart files
void memory_usage(); // print out memory usage
private:
template <typename T> static Dump *dump_creator(LAMMPS *, int, char **);
};
}
#endif
/* ERROR/WARNING messages:
E: Variable name for thermo every does not exist
Self-explanatory.
E: Variable for thermo every is invalid style
Only equal-style variables can be used.
E: Variable name for dump every does not exist
Self-explanatory.
E: Variable for dump every is invalid style
Only equal-style variables can be used.
E: Variable name for restart does not exist
Self-explanatory.
E: Variable for restart is invalid style
Only equal-style variables can be used.
E: Dump every variable returned a bad timestep
The variable must return a timestep greater than the current timestep.
E: Restart variable returned a bad timestep
The variable must return a timestep greater than the current timestep.
E: Thermo every variable returned a bad timestep
The variable must return a timestep greater than the current timestep.
E: Thermo_modify every variable returned a bad timestep
The returned timestep is less than or equal to the current timestep.
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: Reuse of dump ID
A dump ID cannot be used twice.
E: Could not find dump group ID
A group ID used in the dump command does not exist.
E: Invalid dump frequency
Dump frequency must be 1 or greater.
E: Unrecognized dump style
The choice of dump style is unknown.
E: Cound not find dump_modify ID
Self-explanatory.
E: Could not find undump ID
A dump ID used in the undump command does not exist.
E: Thermo_style command before simulation box is defined
The thermo_style command cannot be used before a read_data,
read_restart, or create_box command.
W: New thermo_style command, previous thermo_modify settings will be lost
If a thermo_style command is used after a thermo_modify command, the
settings changed by the thermo_modify command will be reset to their
default values. This is because the thermo_modify command acts on
the currently defined thermo style, and a thermo_style command creates
a new style.
E: Both restart files must use % or neither
Self-explanatory.
E: Both restart files must use MPI-IO or neither
Self-explanatory.
*/