ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/rnemd/RNEMD.hpp
Revision: 1722
Committed: Thu May 24 14:23:40 2012 UTC (12 years, 11 months ago) by gezelter
Original Path: branches/development/src/integrators/RNEMD.hpp
File size: 5416 byte(s)
Log Message:
Merging Shenyu's RNEMD changes from openmd-1 into the development branch.

File Contents

# User Rev Content
1 gezelter 1329 /*
2     * 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 gezelter 1329 * notice, this list of conditions and the following disclaimer.
11     *
12 gezelter 1390 * 2. Redistributions in binary form must reproduce the above copyright
13 gezelter 1329 * 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 1722 * [4] Vardeman & Gezelter, in progress (2009).
40 gezelter 1329 */
41    
42     /**
43     * @file RNEMD.hpp
44     * @author gezelter
45     * @date 03/13/2009
46     * @time 15:56pm
47     * @version 1.0
48     */
49    
50     #ifndef INTEGRATORS_RNEMD_HPP
51     #define INTEGRATORS_RNEMD_HPP
52     #include "brains/SimInfo.hpp"
53     #include "math/RandNumGen.hpp"
54 gezelter 1331 #include "selection/SelectionEvaluator.hpp"
55     #include "selection/SelectionManager.hpp"
56 skuang 1368 #include <iostream>
57 gezelter 1329
58 gezelter 1629 using namespace std;
59 gezelter 1390 namespace OpenMD {
60 gezelter 1329
61     /**
62     * @class RNEMD RNEMD.hpp "integrators/RNEMD.hpp"
63     * @todo document
64     */
65     class RNEMD {
66     public:
67     RNEMD(SimInfo* info);
68     virtual ~RNEMD();
69 skuang 1368
70     void doRNEMD();
71 gezelter 1329 void doSwap();
72 skuang 1368 void doScale();
73 gezelter 1722 void doShiftScale();
74 skuang 1368 void collectData();
75     void getStarted();
76 skuang 1338 void getStatus();
77 skuang 1368 void set_RNEMD_exchange_time(RealType exchangeTime) {
78     exchangeTime_ = exchangeTime;
79     }
80 gezelter 1329 void set_RNEMD_nBins(int nbins) { nBins_ = nbins; }
81 gezelter 1629 void set_RNEMD_logWidth(int logWidth) { rnemdLogWidth_ = logWidth; }
82 skuang 1368 void set_RNEMD_exchange_total(RealType et) { exchangeSum_ = et; }
83     void set_RNEMD_target_flux(RealType targetFlux) {targetFlux_ = targetFlux;}
84 gezelter 1722 void set_RNEMD_target_JzKE(RealType targetJzKE) {targetJzKE_ = targetJzKE;}
85     void set_RNEMD_target_jzpx(RealType targetJzpx) {targetJzpx_ = targetJzpx;}
86     void set_RNEMD_target_jzpy(RealType targetJzpy) {targetJzpy_ = targetJzpy;}
87     void set_RNEMD_target_jzpz(RealType targetJzpz) {targetJzpz_ = targetJzpz;}
88 gezelter 1629 RealType get_RNEMD_exchange_total() { return exchangeSum_; }
89 gezelter 1331
90 gezelter 1329 private:
91 gezelter 1331
92 gezelter 1329 enum RNEMDTypeEnum {
93 skuang 1368 rnemdKineticSwap,
94     rnemdKineticScale,
95 gezelter 1722 rnemdKineticScaleVAM,
96     rnemdKineticScaleAM,
97 skuang 1368 rnemdPxScale,
98     rnemdPyScale,
99     rnemdPzScale,
100 gezelter 1329 rnemdPx,
101     rnemdPy,
102     rnemdPz,
103 gezelter 1722 rnemdShiftScaleV,
104     rnemdShiftScaleVAM,
105 gezelter 1329 rnemdUnknown
106     };
107 skuang 1368
108 gezelter 1329 SimInfo* info_;
109     RandNumGen* randNumGen_;
110 gezelter 1629 map<string, RNEMDTypeEnum> stringToEnumMap_;
111 gezelter 1329 RNEMDTypeEnum rnemdType_;
112 gezelter 1629 string rnemdObjectSelection_;
113 skuang 1368 SelectionEvaluator evaluator_;
114 gezelter 1331 SelectionManager seleMan_;
115     bool usePeriodicBoundaryConditions_;
116 gezelter 1722 bool outputTemp_;
117     bool outputVx_;
118     bool outputVy_;
119 gezelter 1629 bool output3DTemp_;
120 gezelter 1722 bool outputRotTemp_;
121 gezelter 1629 int nBins_; /**< The number of bins to divide the simulation box into. */
122     /*!
123     The middle bin for the RNEMD method. midBin_ = nBins_/2;
124     Depending on the setting of the flux, this box should contain the minimum energy (temperature)
125     within the simulation.
126     */
127 skuang 1368 int midBin_;
128 gezelter 1629 int rnemdLogWidth_; /**< Number of elements to print out in logs */
129     RealType zShift_;
130 skuang 1368 RealType exchangeTime_;
131     RealType targetFlux_;
132 gezelter 1722 RealType targetJzKE_;
133     RealType targetJzpx_;
134     RealType targetJzpy_;
135     RealType targetJzpz_;
136     Vector3d jzp_, njzp_;
137 skuang 1368 RealType exchangeSum_;
138     int failTrialCount_;
139     int failRootCount_;
140 gezelter 1722 ofstream tempLog_, vxzLog_, vyzLog_;
141     ofstream xTempLog_, yTempLog_, zTempLog_, rotTempLog_;
142 skuang 1368 // keeps track of what's being averaged
143 gezelter 1722 vector<RealType> tempHist_, pxzHist_, pyzHist_, mHist_;
144     vector<RealType> xTempHist_, yTempHist_, zTempHist_, rotTempHist_;
145 skuang 1368 // keeps track of the number of degrees of freedom being averaged
146 gezelter 1722 //vector<int> pxzCount_, pyzCount_;
147     vector<int> tempCount_, xyzTempCount_, rotTempCount_;
148 gezelter 1329 };
149    
150     }
151 skuang 1368 #endif //INTEGRATORS_RNEMD_HPP

Properties

Name Value
svn:keywords Author Id Revision Date