88 McMoveT::totalTimer_.start();
89 McMoveT::incrementNAttempt();
97 const int nMonomer = system().mixture().nMonomer();
98 const int meshSize = system().domain().mesh().size();
102 double oldHamiltonian = simulator().hamiltonian();
105 simulator().saveState();
108 simulator().clearData();
110 McMoveT::attemptMoveTimer_.start();
113 for (i = 0; i < nMonomer; ++i) {
118 for (i = 0; i < nMonomer - 1; ++i) {
123 const double vSystem = system().domain().unitCell().volume();
124 const double vNode = vSystem/double(meshSize);
125 const double a = -1.0*mobility_;
126 const double b = sqrt(2.0*mobility_/vNode);
127 const double stddev = 1.0;
128 const double mean = 0.0;
132 for (j = 0; j < nMonomer - 1; ++j) {
135 McMoveT::vecRandom().normal(eta_, stddev, mean);
141 for (i = 0; i < nMonomer; ++i) {
142 double evec = simulator().chiEvecs(j,i);
149 system().w().setRGrid(w_);
150 simulator().clearData();
152 McMoveT::attemptMoveTimer_.stop();
155 McMoveT::compressorTimer_.start();
156 int compress = simulator().compressor().compress();
158 McMoveT::compressorTimer_.stop();
160 bool isConverged =
false;
162 McMoveT::incrementNFail();
163 simulator().restoreState();
168 McMoveT::componentTimer_.start();
169 simulator().computeWc();
171 simulator().computeCc();
172 simulator().computeDc();
173 McMoveT::componentTimer_.stop();
176 McMoveT::hamiltonianTimer_.start();
177 simulator().computeHamiltonian();
178 double newHamiltonian = simulator().hamiltonian();
179 double dH = newHamiltonian - oldHamiltonian;
183 for (j = 0; j < nMonomer - 1; ++j) {
184 RFieldT
const & di = dc_[j];
185 RFieldT
const & df = simulator().dc(j);
186 computeForceBias(biasField_, di, df, dwc_[j], mobility_);
190 McMoveT::hamiltonianTimer_.stop();
193 McMoveT::decisionTimer_.start();
195 double weight = exp(bias - dH);
196 accept = McMoveT::random().metropolis(weight);
198 McMoveT::incrementNAccept();
199 simulator().clearState();
201 simulator().restoreState();
203 McMoveT::decisionTimer_.stop();
205 McMoveT::totalTimer_.stop();
213 template <
int D,
class T>