PSCF v1.1
Interaction.h
1#ifndef PSCF_INTERACTION_H
2#define PSCF_INTERACTION_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 <util/param/ParamComposite.h> // base class
12#include <util/containers/Array.h> // argument (template)
13#include <util/containers/Matrix.h> // argument (template)
14#include <util/global.h>
15
16namespace Pscf {
17
18 using namespace Util;
19
26 {
27
28 public:
29
34
38 virtual ~Interaction();
39
45 void setNMonomer(int nMonomer);
46
52 virtual void readParameters(std::istream& in);
53
61 void setChi(int i, int j, double chi);
62
68 virtual
69 double fHelmholtz(Array<double> const & c) const;
70
77 virtual
78 void computeW(Array<double> const & c, Array<double>& w)
79 const;
80
88 virtual
89 void computeC(Array<double> const & w, Array<double>& c, double& xi)
90 const;
91
98 virtual
99 void computeXi(Array<double> const & w, double& xi)
100 const;
101
114 virtual
115 void computeDwDc(Array<double> const & c, Matrix<double>& dWdC)
116 const;
117
124 double chi(int i, int j) const;
125
132 double chiInverse(int i, int j) const;
133
137 int nMonomer() const;
138
139 private:
140
141 // Symmetric matrix of interaction parameters.
142 DMatrix<double> chi_;
143
144 // Inverse of matrix chi_.
145 DMatrix<double> chiInverse_;
146
148 int nMonomer_;
149
154 void updateMembers();
155
156 };
157
158 // Inline function
159
160 inline int Interaction::nMonomer() const
161 { return nMonomer_; }
162
163 inline double Interaction::chi(int i, int j) const
164 { return chi_(i, j); }
165
166 inline double Interaction::chiInverse(int i, int j) const
167 { return chiInverse_(i, j); }
168
169} // namespace Pscf
170#endif
Flory-Huggins excess free energy model.
Definition: Interaction.h:26
virtual double fHelmholtz(Array< double > const &c) const
Compute excess Helmholtz free energy per monomer.
Definition: Interaction.cpp:92
virtual void computeDwDc(Array< double > const &c, Matrix< double > &dWdC) const
Compute second derivatives of free energy.
double chi(int i, int j) const
Return one element of the chi matrix.
Definition: Interaction.h:163
double chiInverse(int i, int j) const
Return one element of the inverse chi matrix.
Definition: Interaction.h:166
virtual void readParameters(std::istream &in)
Read chi parameters.
Definition: Interaction.cpp:43
virtual void computeW(Array< double > const &c, Array< double > &w) const
Compute chemical potential from concentration.
virtual void computeC(Array< double > const &w, Array< double > &c, double &xi) const
Compute concentration from chemical potential fields.
void setChi(int i, int j, double chi)
Change one element of the chi matrix.
Definition: Interaction.cpp:78
void setNMonomer(int nMonomer)
Set the number of monomer types.
Definition: Interaction.cpp:31
Interaction()
Constructor.
Definition: Interaction.cpp:18
virtual ~Interaction()
Destructor.
Definition: Interaction.cpp:25
int nMonomer() const
Get number of monomer types.
Definition: Interaction.h:160
virtual void computeXi(Array< double > const &w, double &xi) const
Compute Langrange multiplier xi from chemical potential fields.
Array container class template.
Definition: Array.h:34
Dynamically allocated Matrix.
Definition: DMatrix.h:25
Two-dimensional array container template (abstract).
Definition: Matrix.h:32
An object that can read multiple parameters from file.
File containing preprocessor macros for error handling.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.
Definition: accumulators.mod:1