15 inline void dump_param(FILE *file,
const char *name,
int value) {
16 fprintf(file,
"%s %d\n",name,value);
19 inline void dump_param(FILE *file,
const char *name,
double value) {
20 fprintf(file,
"%s %g\n",name,value);
24 fprintf(file,
"%s %f %f %f\n",name,value.
x,value.
y,value.
z);
31 fprintf(file,
"SIMPARAMETERS_BEGIN\n");
35 #define SIMPARAM(T,N,V) dump_param(file,#N,simParams->N) 39 fprintf(file,
"SIMPARAMETERS_END\n");
41 fprintf(file,
"LJTABLE_BEGIN\n");
46 fprintf(file,
"%d\n",table_dim);
50 for ( i=0; i < table_dim; ++i) {
51 for ( j=i; j < table_dim; ++j)
54 fprintf(file,
"%g %g %g %g\n",curij->
A,curij->
B,
55 (curij+1)->A,(curij+1)->B);
59 fprintf(file,
"LJTABLE_END\n");
61 fprintf(file,
"MOLECULE_BEGIN\n");
69 #ifdef MEM_OPT_VERSION 70 Index exclIdx = mol->getAtomExclSigId(i);
76 int min = i+excl->
min;
77 int max = i+excl->
max;
88 fprintf(file,
"%d %d %d",vdw,min,max);
90 int s = max - min + 1;
91 const char *f = excl->
flags;
92 for (
int k=0; k<s; ++k ) {
94 fprintf(file,
" %d",fk);
100 fprintf(file,
"MOLECULE_END\n");
103 fprintf(file,
"BONDS_BEGIN\n");
105 #ifdef MEM_OPT_VERSION 107 int sigId = node->
molecule->getAtomSigId(i);
110 fprintf(file,
"%d: ===\n", i);
113 fprintf(file,
"%d:", i);
123 fprintf(file,
"%d: ===\n", i);
126 fprintf(file,
"%d:", i);
134 fprintf(file,
"BONDS_END\n");
136 fprintf(file,
"ANGLES_BEGIN\n");
138 #ifdef MEM_OPT_VERSION 140 int sigId = node->
molecule->getAtomSigId(i);
143 fprintf(file,
"%d: ===\n", i);
146 fprintf(file,
"%d:", i);
148 int offset0 = (sig->
angleSigs[j]).offset[0];
149 int offset1 = (sig->
angleSigs[j]).offset[1];
158 fprintf(file,
"%d: ===\n", i);
161 fprintf(file,
"%d:", i);
164 int offset0 = t->
atom2 - i;
165 int offset1 = t->
atom3 - i;
166 fprintf(file,
" (%d, %d | %d)", offset0, offset1, t->
angle_type);
171 fprintf(file,
"ANGLES_END\n");
173 fprintf(file,
"DIHEDRALS_BEGIN\n");
175 #ifdef MEM_OPT_VERSION 177 int sigId = node->
molecule->getAtomSigId(i);
180 fprintf(file,
"%d: ===\n", i);
183 fprintf(file,
"%d:", i);
196 fprintf(file,
"%d: ===\n", i);
199 fprintf(file,
"%d:", i);
202 int offset0 = t->
atom2 - i;
203 int offset1 = t->
atom3 - i;
204 int offset2 = t->
atom4 - i;
205 fprintf(file,
" (%d, %d, %d | %d)", offset0, offset1, offset2, t->
dihedral_type);
210 fprintf(file,
"DIHEDRALS_END\n");
212 fprintf(file,
"IMPROPERS_BEGIN\n");
214 #ifdef MEM_OPT_VERSION 216 int sigId = node->
molecule->getAtomSigId(i);
219 fprintf(file,
"%d: ===\n", i);
222 fprintf(file,
"%d:", i);
235 fprintf(file,
"%d: ===\n", i);
238 fprintf(file,
"%d:", i);
241 int offset0 = t->
atom2 - i;
242 int offset1 = t->
atom3 - i;
243 int offset2 = t->
atom4 - i;
244 fprintf(file,
" (%d, %d, %d | %d)", offset0, offset1, offset2, t->
improper_type);
249 fprintf(file,
"IMPROPERS_END\n");
252 fprintf(file,
"PATCHLIST_BEGIN\n");
256 fprintf(file,
"%d\n",numPatches);
258 for ( i=0; i<numPatches; ++i) {
260 fprintf(file,
"PATCH_BEGIN\n");
262 fprintf(file,
"%d\n",numAtoms);
264 for ( j=0; j<numAtoms; ++j) {
267 int id,hgs,ngia,af,gf,part;
278 fprintf(file,
"%f %f %f %f %d %d %d %d %d %d\n",
279 x,y,z,q,
id,hgs,ngia,af,gf,part);
281 fprintf(file,
"PATCH_END\n");
284 fprintf(file,
"PATCHLIST_END\n");
286 fprintf(file,
"COMPUTEPAIR_BEGIN\n");
290 int numPairComputes = 0;
291 for ( i=0; i<numComputes; ++i) {
293 && computeMap->
partition(i) == 0 ) ++numPairComputes;
295 fprintf(file,
"%d\n",numPairComputes);
296 for ( i=0; i<numComputes; ++i) {
299 int pid1 = computeMap->
pid(i,0);
300 int trans1 = computeMap->
trans(i,0);
301 int pid2 = computeMap->
pid(i,1);
302 int trans2 = computeMap->
trans(i,1);
303 fprintf(file,
"%d %d %d %d\n",pid1,trans1,pid2,trans2);
307 fprintf(file,
"COMPUTEPAIR_END\n");
int32 * get_dihedrals_for_atom(int anum)
static PatchMap * Object()
TupleSignature * improperSigs
SimParameters * simParameters
TupleSignature * dihedralSigs
const TableEntry * get_table() const
HomePatch * homePatch(PatchID pid)
Dihedral * get_dihedral(int dnum) const
const ExclusionCheck * get_excl_check_for_atom(int anum) const
Molecule stores the structural information for the system.
int32 * get_angles_for_atom(int anum)
Angle * get_angle(int anum) const
FullAtomList & getAtomList()
int numPatches(void) const
int32 * get_impropers_for_atom(int anum)
ComputeType type(ComputeID cid)
Index atomvdwtype(int anum) const
int get_table_dim() const
int32 * get_bonds_for_atom(int anum)
TupleSignature * bondSigs
int partition(ComputeID cid)
static ComputeMap * Object()
static const LJTable * ljTable
int dumpbench(FILE *file)
int pid(ComputeID cid, int i)
Bond * get_bond(int bnum) const
int trans(ComputeID cid, int i)
TupleSignature * angleSigs
void dump_param(FILE *file, const char *name, int value)
Improper * get_improper(int inum) const