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

Comparing branches/development/src/flucq/FluctuatingChargePropagator.cpp (file contents):
Revision 1756 by gezelter, Mon Jun 18 18:23:20 2012 UTC vs.
Revision 1766 by gezelter, Thu Jul 5 17:08:25 2012 UTC

# Line 48 | Line 48
48   #include "optimization/StatusFunction.hpp"
49   #include "optimization/OptimizationFactory.hpp"
50  
51
52
51   #ifdef IS_MPI
52   #include <mpi.h>
53   #endif
# Line 57 | Line 55 | namespace OpenMD {
55   using namespace QuantLib;
56   namespace OpenMD {
57  
58 <  FluctuatingChargePropagator::FluctuatingChargePropagator(SimInfo* info,
59 <                                                           ForceManager* fm) :
62 <    info_(info), forceMan_(fm), hasFlucQ_(false) {
58 >  FluctuatingChargePropagator::FluctuatingChargePropagator(SimInfo* info) :
59 >    info_(info), hasFlucQ_(false), forceMan_(NULL) {
60      
61 +    Globals* simParams = info_->getSimParams();
62 +    fqParams_ = simParams->getFluctuatingChargeParameters();
63 +
64 +  }
65 +
66 +  void FluctuatingChargePropagator::setForceManager(ForceManager* forceMan) {
67 +    forceMan_ = forceMan;
68 +  }
69 +
70 +  void FluctuatingChargePropagator::initialize() {
71 +
72      if (info_->usesFluctuatingCharges()) {
73        if (info_->getNFluctuatingCharges() > 0) {
66        
74          hasFlucQ_ = true;
75 <        Globals* simParams = info_->getSimParams();
69 <        fqParams_ = simParams->getFluctuatingChargeParameters();
70 <        fqConstraints_ = new FluctuatingChargeConstraints(info_);
71 <        
75 >        fqConstraints_ = new FluctuatingChargeConstraints(info_);        
76        }
77      }
74  }
78  
76  void FluctuatingChargePropagator::initialize() {
77
79      if (!hasFlucQ_) return;
80  
81      SimInfo::MoleculeIterator i;
# Line 90 | Line 91 | namespace OpenMD {
91          atom->setFlucQVel(0.0);
92        }
93      }
93
94    std::cerr << "doing a minimization\n";
94      
95      fqConstraints_ = new FluctuatingChargeConstraints(info_);
96      FluctuatingChargeObjectiveFunction flucQobjf(info_, forceMan_, fqConstraints_);    
# Line 100 | Line 99 | namespace OpenMD {
99      EndCriteria endCriteria(1000, 100, 1e-5, 1e-5, 1e-5);      
100      OptimizationMethod* minim = OptimizationFactory::getInstance()->createOptimization("SD", info_);
101  
102 <    DumpStatusFunction dsf(info_);                           // we want a dump file written every iteration
102 >    DumpStatusFunction dsf(info_);  // we want a dump file written every iteration
103  
104      minim->minimize(problem, endCriteria);
106    cerr << "Finished minimization\n";
107    for (mol = info_->beginMolecule(i); mol != NULL;
108         mol = info_->nextMolecule(i)) {
109      for (atom = mol->beginFluctuatingCharge(j); atom != NULL;
110           atom = mol->nextFluctuatingCharge(j)) {
111        cerr << atom->getType() << "\tQ Pos: " << atom->getFlucQPos() << "\n";
112      }
113    }
114    // std::cerr << "after minim\n";
115    // for (mol = info_->beginMolecule(i); mol != NULL;
116    //      mol = info_->nextMolecule(i)) {
117    //   for (atom = mol->beginFluctuatingCharge(j); atom != NULL;
118    //        atom = mol->nextFluctuatingCharge(j)) {
119    //     cerr << "q = " << atom->getFlucQPos(0.0) << "\n";
120    //   }
121    // }
105  
123
106    }
107  
126
108    void FluctuatingChargePropagator::applyConstraints() {
109      if (!hasFlucQ_) return;
110  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines