ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/nonbonded/SwitchingFunction.cpp
(Generate patch)

Comparing:
branches/development/src/nonbonded/SwitchingFunction.cpp (file contents), Revision 1530 by gezelter, Tue Dec 28 21:47:55 2010 UTC vs.
trunk/src/nonbonded/SwitchingFunction.cpp (file contents), Revision 2071 by gezelter, Sat Mar 7 21:41:51 2015 UTC

# 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 <cmath>
44 + #include <iostream>
45 + #include <cstdio>
46  
47   #include "nonbonded/SwitchingFunction.hpp"
48   #include "utils/simError.h"
# Line 47 | Line 50 | namespace OpenMD {
50   using namespace std;
51   namespace OpenMD {
52  
53 <  SwitchingFunction::SwitchingFunction() : np_(150), haveSpline_(false),
54 <                                           isCubic_(true), functionType_(cubic) {}
53 >  SwitchingFunction::SwitchingFunction() : functionType_(cubic),
54 >                                           haveSpline_(false), isCubic_(true),
55 >                                           np_(150) {
56 >    switchSpline_ = new CubicSpline();
57 >  }
58  
59    void SwitchingFunction::setSwitchType(SwitchingFunctionType sft) {
60      if ((sft == fifth_order_poly) || (sft == cubic)) {
61        if (haveSpline_) {
62          delete switchSpline_;
63 +        switchSpline_ = new CubicSpline();
64          setSwitch(rin_, rout_);
65        }
66      } else {
# Line 102 | Line 109 | namespace OpenMD {
109      }
110      
111      // setup r -> sw lookup spline
105    CubicSpline* switchSpline_ = new CubicSpline();
112      if (functionType_ == fifth_order_poly) {
113        isCubic_ = false;
114        RealType c0 = 1.0;
# Line 140 | Line 146 | namespace OpenMD {
146      return;
147    }
148  
149 <  bool SwitchingFunction::getSwitch(RealType r2, RealType sw, RealType dswdr,
150 <                                    RealType r) {
149 >  bool SwitchingFunction::getSwitch(const RealType &r2, RealType &sw,
150 >                                    RealType &dswdr, RealType &r) {
151 >
152      sw = 1.0;
153      dswdr = 0.0;
154 +
155      bool in_switching_region = false;
156  
157      if (r2 > rin2_) {
158        if (r2 > rout2_) {
159          sw = 0.0;
152        dswdr = 0.0;
153        return in_switching_region;
160        } else {
161          in_switching_region = true;
162          r = sqrt(r2);
163 <        pair<RealType, RealType> result = switchSpline_->getValueAndDerivativeAt(r);
158 <        sw = result.first;
159 <        dswdr = result.second;
160 <        return in_switching_region;
163 >        switchSpline_->getValueAndDerivativeAt(r, sw, dswdr);
164        }
162    } else {
163      return in_switching_region;
165      }
166 +    return in_switching_region;
167    }
168   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines