ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/dynamicProps/DynamicProps.cpp
Revision: 1596
Committed: Mon Jul 25 17:30:53 2011 UTC (13 years, 9 months ago) by gezelter
File size: 5876 byte(s)
Log Message:
Updated the BlockSnapshotManager to use a specified memory footprint
in constructor and not to rely on physmem and residentMem to figure
out free memory. DynamicProps is the only program that uses the
BlockSnapshotManager, so substantial changes were needed there as
well.


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     * [4] Vardeman & Gezelter, in progress (2009).
40 tim 321 */
41    
42     #include <iostream>
43     #include <fstream>
44     #include <string>
45    
46     #include "brains/Register.hpp"
47     #include "brains/SimCreator.hpp"
48     #include "brains/SimInfo.hpp"
49 gezelter 1596 #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 chuckv 1565 #include "applications/dynamicProps/StressCorrFunc.hpp"
62 tim 321
63 tim 876
64 gezelter 1390 using namespace OpenMD;
65 tim 321
66     int main(int argc, char* argv[]){
67    
68 gezelter 507 //register force fields
69     registerForceFields();
70 tim 321
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 1596 // 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 tim 917 if (args_info.dcorr_given){
127 gezelter 1596 corrFunc = new DipoleCorrFunc(info, dumpFileName, sele1, sele2, memSize);
128 gezelter 507 } else if (args_info.rcorr_given) {
129 gezelter 1596 corrFunc = new RCorrFunc(info, dumpFileName, sele1, sele2, memSize);
130 chuckv 1098 } else if (args_info.r_rcorr_given) {
131 gezelter 1596 corrFunc = new RadialRCorrFunc(info, dumpFileName, sele1, sele2, memSize);
132 chuckv 1112 } else if (args_info.thetacorr_given) {
133 gezelter 1596 corrFunc = new ThetaCorrFunc(info, dumpFileName, sele1, sele2, memSize);
134 xsun 1183 } else if (args_info.drcorr_given) {
135 gezelter 1596 corrFunc = new DirectionalRCorrFunc(info, dumpFileName, sele1, sele2, memSize);
136 chuckv 1245 } else if (args_info.vcorr_given) {
137 gezelter 1596 corrFunc = new VCorrFunc(info, dumpFileName, sele1, sele2, memSize);
138 chuckv 1245 } else if (args_info.helfandEcorr_given){
139 gezelter 1596 corrFunc = new EnergyCorrFunc(info, dumpFileName, sele1, sele2, memSize);
140 chuckv 1566 } else if (args_info.stresscorr_given){
141 gezelter 1596 corrFunc = new StressCorrFunc(info, dumpFileName, sele1, sele2, memSize);
142 tim 876 } else if (args_info.lcorr_given) {
143     int order;
144     if (args_info.order_given)
145     order = args_info.order_arg;
146     else {
147     sprintf( painCave.errMsg,
148     "--order must be set if --lcoor is set\n");
149 gezelter 1390 painCave.severity = OPENMD_ERROR;
150 tim 876 painCave.isFatal = 1;
151     simError();
152     }
153    
154 gezelter 1596 corrFunc = new LegendreCorrFunc(info, dumpFileName, sele1, sele2, order, memSize);
155 gezelter 507 }
156 tim 321
157 gezelter 507 if (args_info.output_given) {
158     corrFunc->setOutputName(args_info.output_arg);
159     }
160 tim 321
161    
162 gezelter 507 corrFunc->doCorrelate();
163 tim 321
164 gezelter 507 delete corrFunc;
165     delete info;
166 tim 321
167 gezelter 507 return 0;
168 tim 321 }
169    
170    

Properties

Name Value
svn:keywords Author Id Revision Date