# | Line 35 | Line 35 | |
---|---|---|
35 | * | |
36 | * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). | |
37 | * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). | |
38 | < | * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). |
39 | < | * [4] Vardeman & Gezelter, in progress (2009). |
38 | > | * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008). |
39 | > | * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). |
40 | > | * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |
41 | */ | |
42 | ||
43 | #include <iostream> | |
44 | #include <fstream> | |
45 | #include <string> | |
46 | ||
46 | – | #include "brains/Register.hpp" |
47 | #include "brains/SimCreator.hpp" | |
48 | #include "brains/SimInfo.hpp" | |
49 | + | #include "utils/StringUtils.hpp" |
50 | #include "utils/simError.h" | |
51 | ||
52 | #include "applications/dynamicProps/DynamicPropsCmd.h" | |
53 | + | #include "applications/dynamicProps/SelectionCorrFunc.hpp" |
54 | #include "applications/dynamicProps/DipoleCorrFunc.hpp" | |
55 | #include "applications/dynamicProps/RCorrFunc.hpp" | |
56 | #include "applications/dynamicProps/VCorrFunc.hpp" | |
57 | #include "applications/dynamicProps/LegendreCorrFunc.hpp" | |
58 | + | #include "applications/dynamicProps/LegendreCorrFuncZ.hpp" |
59 | #include "applications/dynamicProps/RadialRCorrFunc.hpp" | |
60 | #include "applications/dynamicProps/ThetaCorrFunc.hpp" | |
61 | #include "applications/dynamicProps/DirectionalRCorrFunc.hpp" | |
62 | #include "applications/dynamicProps/EnergyCorrFunc.hpp" | |
63 | #include "applications/dynamicProps/StressCorrFunc.hpp" | |
64 | + | #include "applications/dynamicProps/SystemDipoleCorrFunc.hpp" |
65 | + | #include "applications/dynamicProps/MomentumCorrFunc.hpp" |
66 | + | #include "applications/dynamicProps/cOHz.hpp" |
67 | ||
62 | – | |
68 | using namespace OpenMD; | |
69 | ||
70 | int main(int argc, char* argv[]){ | |
71 | ||
67 | – | //register force fields |
68 | – | registerForceFields(); |
69 | – | |
72 | gengetopt_args_info args_info; | |
73 | ||
74 | //parse the command line option | |
# | Line 98 | Line 100 | int main(int argc, char* argv[]){ | |
100 | ||
101 | if (args_info.sele2_given) { | |
102 | sele2 = args_info.sele2_arg; | |
103 | < | }else { |
103 | > | } else { |
104 | char* sele2Env = getenv("SELECTION2"); | |
105 | if (sele2Env) { | |
106 | sele2 = sele2Env; | |
# | Line 107 | Line 109 | int main(int argc, char* argv[]){ | |
109 | } | |
110 | } | |
111 | ||
112 | + | // use the memory string to figure out how much memory we can use: |
113 | + | char *end; |
114 | + | long long int memSize = memparse(args_info.memory_arg, &end); |
115 | + | sprintf( painCave.errMsg, |
116 | + | "Amount of memory being used: %llu bytes\n", memSize); |
117 | + | painCave.severity = OPENMD_INFO; |
118 | + | painCave.isFatal = 0; |
119 | + | simError(); |
120 | + | |
121 | //parse md file and set up the system | |
122 | SimCreator creator; | |
123 | SimInfo* info = creator.createSim(dumpFileName, false); | |
124 | ||
114 | – | |
125 | TimeCorrFunc* corrFunc; | |
126 | < | if (args_info.dcorr_given){ |
127 | < | corrFunc = new DipoleCorrFunc(info, dumpFileName, sele1, sele2); |
126 | > | if(args_info.sdcorr_given){ |
127 | > | corrFunc = new SystemDipoleCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
128 | > | } else if (args_info.selecorr_given){ |
129 | > | corrFunc = new SelectionCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
130 | > | } else if (args_info.dcorr_given){ |
131 | > | corrFunc = new DipoleCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
132 | } else if (args_info.rcorr_given) { | |
133 | < | corrFunc = new RCorrFunc(info, dumpFileName, sele1, sele2); |
133 | > | corrFunc = new RCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
134 | } else if (args_info.r_rcorr_given) { | |
135 | < | corrFunc = new RadialRCorrFunc(info, dumpFileName, sele1, sele2); |
135 | > | corrFunc = new RadialRCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
136 | } else if (args_info.thetacorr_given) { | |
137 | < | corrFunc = new ThetaCorrFunc(info, dumpFileName, sele1, sele2); |
137 | > | corrFunc = new ThetaCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
138 | } else if (args_info.drcorr_given) { | |
139 | < | corrFunc = new DirectionalRCorrFunc(info, dumpFileName, sele1, sele2); |
139 | > | corrFunc = new DirectionalRCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
140 | } else if (args_info.vcorr_given) { | |
141 | < | corrFunc = new VCorrFunc(info, dumpFileName, sele1, sele2); |
141 | > | corrFunc = new VCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
142 | } else if (args_info.helfandEcorr_given){ | |
143 | < | corrFunc = new EnergyCorrFunc(info, dumpFileName, sele1, sele2); |
143 | > | corrFunc = new EnergyCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
144 | } else if (args_info.stresscorr_given){ | |
145 | < | corrFunc = new StressCorrFunc(info, dumpFileName, sele1, sele2); |
145 | > | corrFunc = new StressCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
146 | > | } else if (args_info.momentum_given){ |
147 | > | corrFunc = new MomentumCorrFunc(info, dumpFileName, sele1, sele2, memSize); |
148 | } else if (args_info.lcorr_given) { | |
149 | int order; | |
150 | if (args_info.order_given) | |
151 | order = args_info.order_arg; | |
152 | else { | |
153 | sprintf( painCave.errMsg, | |
154 | < | "--order must be set if --lcoor is set\n"); |
154 | > | "--order must be set if --lcorr is set\n"); |
155 | painCave.severity = OPENMD_ERROR; | |
156 | painCave.isFatal = 1; | |
157 | simError(); | |
158 | } | |
159 | ||
160 | < | corrFunc = new LegendreCorrFunc(info, dumpFileName, sele1, sele2, order); |
160 | > | corrFunc = new LegendreCorrFunc(info, dumpFileName, sele1, sele2, order, memSize); |
161 | > | } else if (args_info.lcorrZ_given) { |
162 | > | int order; |
163 | > | if (args_info.order_given) |
164 | > | order = args_info.order_arg; |
165 | > | else { |
166 | > | sprintf( painCave.errMsg, |
167 | > | "--order must be set if --lcorrZ is set\n"); |
168 | > | painCave.severity = OPENMD_ERROR; |
169 | > | painCave.isFatal = 1; |
170 | > | simError(); |
171 | > | } |
172 | > | |
173 | > | corrFunc = new LegendreCorrFuncZ(info, dumpFileName, sele1, sele2, order, args_info.nzbins_arg, memSize); |
174 | > | |
175 | > | } else if (args_info.cohZ_given) { |
176 | > | int order; |
177 | > | if (args_info.order_given) |
178 | > | order = args_info.order_arg; |
179 | > | else { |
180 | > | sprintf( painCave.errMsg, |
181 | > | "--order must be set if --cohZ is set\n"); |
182 | > | painCave.severity = OPENMD_ERROR; |
183 | > | painCave.isFatal = 1; |
184 | > | simError(); |
185 | > | } |
186 | > | |
187 | > | corrFunc = new COHZ(info, dumpFileName, sele1, sele2, order, args_info.nzbins_arg, memSize); |
188 | > | |
189 | } | |
190 | ||
191 | + | |
192 | + | |
193 | if (args_info.output_given) { | |
194 | corrFunc->setOutputName(args_info.output_arg); | |
195 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |