92 simulator().saveState();
95 const int nMonomer = system().mixture().nMonomer();
96 const int meshSize = system().domain().mesh().size();
100 for (i = 0; i < nMonomer; ++i) {
101 wp_[i] = system().w().rgrid(i);
106 dwp_ = simulator().wc(nMonomer-1);
109 const double vSystem = system().domain().unitCell().volume();
110 const double a = -1.0 * mobility_;
111 const double stddev = sqrt(2.0*mobility_*
double(meshSize)/vSystem);
112 const double mean = 0.0;
115 for (j = 0; j < nMonomer - 1; ++j) {
116 BdStepT::vecRandom().normal(eta_[j], stddev, mean);
122 for (j = 0; j < nMonomer - 1; ++j) {
123 RFieldT
const & dc = simulator().dc(j);
127 for (i = 0; i < nMonomer; ++i) {
128 double evec = simulator().chiEvecs(j,i);
134 system().w().setRGrid(wp_);
137 int compress = simulator().compressor().compress();
139 simulator().restoreState();
140 bool isConverged =
false;
146 simulator().clearData();
147 simulator().computeWc();
148 simulator().computeCc();
149 simulator().computeDc();
153 RFieldT
const & wp = simulator().wc(nMonomer-1);
157 for (i = 0; i < nMonomer; ++i) {
162 const double ha = 0.5*a;
163 for (j = 0; j < nMonomer - 1; ++j) {
164 RFieldT
const & dcp = simulator().dc(j);
166 for (i = 0; i < nMonomer; ++i) {
167 double evec = simulator().chiEvecs(j,i);
173 system().w().setRGrid(wf_);
176 int compress2 = simulator().compressor().compress();
178 simulator().restoreState();
179 bool isConverged =
false;
185 simulator().clearState();
186 simulator().clearData();
187 simulator().computeWc();
188 simulator().computeCc();
189 simulator().computeDc();
192 bool isConverged =
true;