PSCF v1.1
BinaryRelaxIterator.h
1#ifndef FD1D_BINARY_RELAX_ITERATOR_H
2#define FD1D_BINARY_RELAX_ITERATOR_H
3
4/*
5* PSCF - Polymer Self-Consistent Field Theory
6*
7* Copyright 2016 - 2022, The Regents of the University of Minnesota
8* Distributed under the terms of the GNU General Public License.
9*/
10
11#include "Iterator.h"
12#include <fd1d/solvers/Mixture.h>
13#include <pscf/math/LuSolver.h>
14#include <util/containers/Array.h>
15#include <util/containers/DArray.h>
16#include <util/containers/DMatrix.h>
17
18
19namespace Pscf {
20namespace Fd1d
21{
22
23 using namespace Util;
24
38 {
39
40 public:
41
46
51
58
62 virtual ~BinaryRelaxIterator();
63
69 void readParameters(std::istream& in);
70
77 int solve(bool isContinuation = false);
78
79 private:
80
81
83 DArray<WField> wFieldsNew_;
84
86 DArray<WField> cFieldsNew_;
87
88
90 DArray<double> cArray_;
91
93 DArray<double> wArray_;
94
96 DArray<double> residual_;
97
99 DArray<double> residualNew_;
100
102 DArray<WField> dW_;
103
104 DArray<WField> dWNew_;
105
107 double dWNorm_;
108
109 double dWNormNew_;
110
112 double epsilon_;
113
115 double lambdaPlus_;
116
118 double lambdaMinus_;
119
121 int maxItr_;
122
124 bool isAllocated_;
125
127 bool isCanonical_;
128
132 void allocate();
133
142 void computeDW(Array<WField> const & wOld,
143 Array<CField> const & cFields,
144 Array<WField> & dW,
145 double & dWNorm);
146
154 void updateWFields(Array<WField> const & wOld,
155 Array<WField> const & dW_,
156 Array<WField> & wNew);
157
158 };
159
160} // namespace Fd1d
161} // namespace Pscf
162#endif
Relaxation iterator for SCF equations for two-monomer system.
Mixture::WField WField
Monomer chemical potential field.
virtual ~BinaryRelaxIterator()
Destructor.
Mixture::CField CField
Monomer concentration / volume fraction field.
int solve(bool isContinuation=false)
Iterate self-consistent field equations to solution.
void readParameters(std::istream &in)
Read all parameters and initialize.
Base class for iterative solvers for SCF equations.
DArray< System::CField > & cFields()
Get array of all chemical potential fields.
Definition: SystemAccess.h:270
const System & system() const
Get parent System by reference.
Definition: SystemAccess.h:158
Main class in SCFT simulation of one system.
Definition: fd1d/System.h:63
Array container class template.
Definition: Array.h:34
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.
Definition: accumulators.mod:1