ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/applications/dynamicProps/DynamicProps.cpp
Revision: 1725
Committed: Sat May 26 18:13:43 2012 UTC (12 years, 11 months ago) by gezelter
File size: 6221 byte(s)
Log Message:
Individual ForceField classes have been removed (they were essentially
all duplicates anyway).  

ForceField has moved to brains, and since only one force field is in
play at any time, the ForceFieldFactory and Register methods have been
removed.  


File Contents

# User Rev Content
1 gezelter 507 /*
2 tim 321 * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3     *
4     * The University of Notre Dame grants you ("Licensee") a
5     * non-exclusive, royalty free, license to use, modify and
6     * redistribute this software in source and binary code form, provided
7     * that the following conditions are met:
8     *
9 gezelter 1390 * 1. Redistributions of source code must retain the above copyright
10 tim 321 * notice, this list of conditions and the following disclaimer.
11     *
12 gezelter 1390 * 2. Redistributions in binary form must reproduce the above copyright
13 tim 321 * notice, this list of conditions and the following disclaimer in the
14     * documentation and/or other materials provided with the
15     * distribution.
16     *
17     * This software is provided "AS IS," without a warranty of any
18     * kind. All express or implied conditions, representations and
19     * warranties, including any implied warranty of merchantability,
20     * fitness for a particular purpose or non-infringement, are hereby
21     * excluded. The University of Notre Dame and its licensors shall not
22     * be liable for any damages suffered by licensee as a result of
23     * using, modifying or distributing the software or its
24     * derivatives. In no event will the University of Notre Dame or its
25     * licensors be liable for any lost revenue, profit or data, or for
26     * direct, indirect, special, consequential, incidental or punitive
27     * damages, however caused and regardless of the theory of liability,
28     * arising out of the use of or inability to use software, even if the
29     * University of Notre Dame has been advised of the possibility of
30     * such damages.
31 gezelter 1390 *
32     * SUPPORT OPEN SCIENCE! If you use OpenMD or its source code in your
33     * research, please cite the appropriate papers when you publish your
34     * work. Good starting points are:
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 gezelter 1665 * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010).
40     * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41 tim 321 */
42    
43     #include <iostream>
44     #include <fstream>
45     #include <string>
46    
47     #include "brains/SimCreator.hpp"
48     #include "brains/SimInfo.hpp"
49 gezelter 1629 #include "utils/StringUtils.hpp"
50 tim 321 #include "utils/simError.h"
51    
52     #include "applications/dynamicProps/DynamicPropsCmd.h"
53 tim 324 #include "applications/dynamicProps/DipoleCorrFunc.hpp"
54 tim 321 #include "applications/dynamicProps/RCorrFunc.hpp"
55     #include "applications/dynamicProps/VCorrFunc.hpp"
56 tim 876 #include "applications/dynamicProps/LegendreCorrFunc.hpp"
57 chuckv 1098 #include "applications/dynamicProps/RadialRCorrFunc.hpp"
58 chuckv 1112 #include "applications/dynamicProps/ThetaCorrFunc.hpp"
59 xsun 1183 #include "applications/dynamicProps/DirectionalRCorrFunc.hpp"
60 chuckv 1245 #include "applications/dynamicProps/EnergyCorrFunc.hpp"
61 gezelter 1629 #include "applications/dynamicProps/StressCorrFunc.hpp"
62     #include "applications/dynamicProps/SystemDipoleCorrFunc.hpp"
63     #include "applications/dynamicProps/MomentumCorrFunc.hpp"
64 tim 321
65 tim 876
66 gezelter 1629
67 gezelter 1390 using namespace OpenMD;
68 tim 321
69     int main(int argc, char* argv[]){
70    
71 gezelter 507 gengetopt_args_info args_info;
72 tim 321
73 gezelter 507 //parse the command line option
74     if (cmdline_parser (argc, argv, &args_info) != 0) {
75     exit(1) ;
76     }
77 tim 321
78    
79 gezelter 507 //get the dumpfile name and meta-data file name
80     std::string dumpFileName = args_info.input_arg;
81 tim 321
82 gezelter 507 std::string sele1;
83     std::string sele2;
84 tim 321
85 gezelter 507 if (args_info.sele1_given) {
86     sele1 = args_info.sele1_arg;
87     }else {
88 gezelter 1390 char* sele1Env= getenv("SELECTION1");
89 gezelter 507 if (sele1Env) {
90     sele1 = sele1Env;
91 tim 321 }else {
92 gezelter 507 sprintf( painCave.errMsg,
93 gezelter 1390 "neither --sele1 option nor $SELECTION1 is set");
94     painCave.severity = OPENMD_ERROR;
95 gezelter 507 painCave.isFatal = 1;
96     simError();
97 tim 321 }
98 gezelter 507 }
99 tim 321
100 gezelter 507 if (args_info.sele2_given) {
101     sele2 = args_info.sele2_arg;
102     }else {
103 gezelter 1390 char* sele2Env = getenv("SELECTION2");
104 gezelter 507 if (sele2Env) {
105     sele2 = sele2Env;
106     } else {
107     sele2 = sele1;
108 tim 321 }
109 gezelter 507 }
110 tim 321
111 gezelter 1629 // use the memory string to figure out how much memory we can use:
112     char *end;
113     long long int memSize = memparse(args_info.memory_arg, &end);
114     sprintf( painCave.errMsg,
115     "Amount of memory being used: %llu bytes\n", memSize);
116     painCave.severity = OPENMD_INFO;
117     painCave.isFatal = 0;
118     simError();
119    
120 gezelter 507 //parse md file and set up the system
121     SimCreator creator;
122 gezelter 1026 SimInfo* info = creator.createSim(dumpFileName, false);
123 tim 321
124    
125 gezelter 507 TimeCorrFunc* corrFunc;
126 gezelter 1629 if(args_info.sdcorr_given){
127     corrFunc = new SystemDipoleCorrFunc(info, dumpFileName, sele1, sele2, memSize);
128     } else if (args_info.dcorr_given){
129     corrFunc = new DipoleCorrFunc(info, dumpFileName, sele1, sele2, memSize);
130 gezelter 507 } else if (args_info.rcorr_given) {
131 gezelter 1629 corrFunc = new RCorrFunc(info, dumpFileName, sele1, sele2, memSize);
132 chuckv 1098 } else if (args_info.r_rcorr_given) {
133 gezelter 1629 corrFunc = new RadialRCorrFunc(info, dumpFileName, sele1, sele2, memSize);
134 chuckv 1112 } else if (args_info.thetacorr_given) {
135 gezelter 1629 corrFunc = new ThetaCorrFunc(info, dumpFileName, sele1, sele2, memSize);
136 xsun 1183 } else if (args_info.drcorr_given) {
137 gezelter 1629 corrFunc = new DirectionalRCorrFunc(info, dumpFileName, sele1, sele2, memSize);
138 chuckv 1245 } else if (args_info.vcorr_given) {
139 gezelter 1629 corrFunc = new VCorrFunc(info, dumpFileName, sele1, sele2, memSize);
140 chuckv 1245 } else if (args_info.helfandEcorr_given){
141 gezelter 1629 corrFunc = new EnergyCorrFunc(info, dumpFileName, sele1, sele2, memSize);
142     } else if (args_info.stresscorr_given){
143     corrFunc = new StressCorrFunc(info, dumpFileName, sele1, sele2, memSize);
144     } else if (args_info.momentum_given){
145     corrFunc = new MomentumCorrFunc(info, dumpFileName, sele1, sele2, memSize);
146 tim 876 } else if (args_info.lcorr_given) {
147     int order;
148     if (args_info.order_given)
149     order = args_info.order_arg;
150     else {
151     sprintf( painCave.errMsg,
152     "--order must be set if --lcoor is set\n");
153 gezelter 1390 painCave.severity = OPENMD_ERROR;
154 tim 876 painCave.isFatal = 1;
155     simError();
156     }
157    
158 gezelter 1629 corrFunc = new LegendreCorrFunc(info, dumpFileName, sele1, sele2, order, memSize);
159 gezelter 507 }
160 tim 321
161 gezelter 507 if (args_info.output_given) {
162     corrFunc->setOutputName(args_info.output_arg);
163     }
164 tim 321
165    
166 gezelter 507 corrFunc->doCorrelate();
167 tim 321
168 gezelter 507 delete corrFunc;
169     delete info;
170 tim 321
171 gezelter 507 return 0;
172 tim 321 }
173    
174    

Properties

Name Value
svn:keywords Author Id Revision Date