PSCF v1.4.0
fts/brownian/LMBdStep.h
1#ifndef RP_LM_BD_STEP_H
2#define RP_LM_BD_STEP_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 <util/containers/DArray.h> // member
12
13namespace Pscf {
14namespace Rp {
15
16 using namespace Util;
17
50 template <int D, class T>
51 class LMBdStep : public T::BdStep
52 {
53 public:
54
55 // Protected constructor and destructor (see below).
56
62 void readParameters(std::istream &in) override;
63
67 void setup() override;
68
74 bool step() override;
75
76 protected:
77
83 LMBdStep(typename T::BdSimulator& simulator);
84
85 ~LMBdStep() = default;
86
87 // Alias for base class.
88 using BdStepT = typename T::BdStep;
89
90 // Inherited functions (selected)
91 using BdStepT::system;
92 using BdStepT::simulator;
93 using BdStepT::vecRandom;
94
95 private:
96
97 using RFieldT = typename T::RField;
98
99 // Private data members
100
101 // New field values
103
104 // Random displacements (A)
105 DArray< RFieldT > etaA_;
106
107 // Random displacements (B)
108 DArray< RFieldT > etaB_;
109
110 // Change in one field component
111 RFieldT dwc_;
112
113 // Pointer to new random displacements
114 DArray< RFieldT >* etaNewPtr_;
115
116 // Pointer to old random displacements
117 DArray< RFieldT >* etaOldPtr_;
118
119 // Prefactor of -dc_ in deterministic drift term
120 double mobility_;
121
122 // Private member functions
123
124 RFieldT& etaNew(int i)
125 { return (*etaNewPtr_)[i]; }
126
127 RFieldT& etaOld(int i)
128 { return (*etaOldPtr_)[i]; }
129
131 void generateEtaNew();
132
134 void exchangeOldNew();
135
136 };
137
138}
139}
140#endif
void readParameters(std::istream &in) override
Read body of parameter file block.
Definition LMBdStep.tpp:40
bool step() override
Take a single Brownian dynamics step.
Definition LMBdStep.tpp:120
void setup() override
Setup before simulation loop.
Definition LMBdStep.tpp:94
LMBdStep(typename T::BdSimulator &simulator)
Constructor.
Definition LMBdStep.tpp:25
Class templates for real-valued periodic fields.
PSCF package top-level namespace.