PSCF v1.4.0
cpc/solvers/Mixture.h
1#ifndef CPC_MIXTURE_H
2#define CPC_MIXTURE_H
3
4/*
5* PSCF - Polymer Self-Consistent Field
6*
7* Copyright 2015 - 2025, The Regents of the University of Minnesota
8* Distributed under the terms of the GNU General Public License.
9*/
10
11#include <cp/solvers/Mixture.h> // base class template
12#include <cpc/system/Types.h> // base class template argument
13
14namespace Pscf {
15namespace Cpc {
16
17 // Forward declarations
18 template <int D> class Polymer;
19 template <int D> class Solvent;
20
21 using namespace Util;
22 using namespace Prdc;
23
34 template <int D>
35 class Mixture
36 : public Cp::Mixture<D, Polymer<D>, Solvent<D>, Types<D> >
37 {
38
39 public:
40
44 using typename CpMixtureT::MixtureTmplT;
45 using typename CpMixtureT::MixtureBaseT;
46
47 using typename CpMixtureT::FieldT;
48
51
52 protected:
53
54 using CpMixtureT::mesh;
55 using CpMixtureT::ds;
56
57 private:
58
65 void eqS(FieldT& A, double s) const override;
66
73 void addEqV(FieldT& A, FieldT const & B) const override;
74
78 void allocateBlocks() override;
79
80 };
81
82} // namespace Cpc
83} // namespace Pscf
84
85// Explicit instantiation declarations
86namespace Pscf {
87 namespace Cp {
88 extern template
89 class Mixture<1, Cpc::Polymer<1>, Cpc::Solvent<1>, Cpc::Types<1> >;
90 extern template
91 class Mixture<2, Cpc::Polymer<2>, Cpc::Solvent<2>, Cpc::Types<2> >;
92 extern template
93 class Mixture<3, Cpc::Polymer<3>, Cpc::Solvent<3>, Cpc::Types<3> >;
94 }
95 namespace Cpc {
96 extern template class Mixture<1>;
97 extern template class Mixture<2>;
98 extern template class Mixture<3>;
99 }
100}
101#endif
Solver and descriptor for a mixture of polymers and solvents.
Solver and descriptor for a mixture of polymers and solvents.
typename Cp::Mixture< D, Polymer< D >, Solvent< D >, Types< D > > CpMixtureT
Base classes.
Descriptor and solver for one polymer species.
Solver and descriptor for a solvent species.
List of aliases for types used the in Cpc namespace.
Complex periodic fields, CL-FTS (CPU).
Definition cpc.mod:6
Periodic fields and crystallography.
Definition complex.cpp:11
PSCF package top-level namespace.