79 const int nMonomer = system().mixture().nMonomer();
80 const int meshSize = system().domain().mesh().size();
84 simulator().saveState();
87 for (i = 0; i < nMonomer; ++i) {
88 w_[i] = system().w().rgrid(i);
92 const double vSystem = system().domain().unitCell().volume();
93 const double a = -1.0*mobility_;
94 const double b = sqrt(2.0*mobility_*
double(meshSize)/vSystem);
98 double dwd, dwr, evec;
99 for (j = 0; j < nMonomer - 1; ++j) {
100 RField<D> const & dc = simulator().dc(j);
101 for (k = 0; k < meshSize; ++k) {
103 dwr = b*random().gaussian();
107 for (i = 0; i < nMonomer; ++i) {
109 evec = simulator().chiEvecs(j,i);
110 for (k = 0; k < meshSize; ++k) {
111 w[k] += evec*dwc_[k];
117 system().setWRGrid(w_);
118 simulator().clearData();
121 bool isConverged =
false;
122 int compress = simulator().compressor().compress();
124 simulator().restoreState();
130 simulator().clearState();
131 simulator().computeWc();
132 simulator().computeCc();
133 simulator().computeDc();