1#ifndef RPC_CHI_DERIVATIVE_TPP
2#define RPC_CHI_DERIVATIVE_TPP
11#include "ChiDerivative.h"
13#include <rpc/system/System.h>
14#include <rpc/fts/simulator/Simulator.h>
15#include <rpc/solvers/Mixture.h>
16#include <rpc/field/Domain.h>
17#include <pscf/inter/Interaction.h>
47 const int nMonomer =
system().mixture().nMonomer();
50 const double vSystem =
system().domain().unitCell().volume();
51 const double vMonomer =
system().mixture().vMonomer();
52 const double nMonomerSystem = vSystem / vMonomer;
53 const int meshSize =
system().domain().mesh().size();
54 double chi=
system().interaction().chi(0,1);
61 if (!
system().c().hasData()) {
70 double hField =
simulator().fieldHamiltonian()/nMonomerSystem;
73 double dfdchi = -(hField - 0.5*
simulator().sc(nMonomer - 1))/chi + 1.0/4.0;
75 dfdchi *= nMonomerSystem;
78 dfdchi += double(meshSize)/(2.0 * chi);
87 double chi=
system().interaction().chi(0,1);
90 outputFile_ <<
Int(step);
91 outputFile_ <<
Dbl(chi);
92 outputFile_ <<
Dbl(value);
AverageAnalyzer(Simulator< D > &simulator, System< D > &system)
Constructor.
int nSamplePerOutput() const
Get value of nSamplePerOutput.
virtual void outputValue(int step, double value)
Output a sampled or block average value.
Simulator< D > & simulator()
Return reference to parent simulator.
System< D > & system()
Return reference to parent system.
virtual ~ChiDerivative()
Destructor.
void setClassName(const char *className)
Set class name string.
virtual double compute()
Compute and return the derivative of H w/ respect to chi.
virtual void outputValue(int step, double value)
Output a sampled or block average value.
ChiDerivative(Simulator< D > &simulator, System< D > &system)
Constructor.
Field theoretic simulator (base class).
Main class, representing one complete system.
Wrapper for a double precision number, for formatted ostream output.
Wrapper for an int, for formatted ostream output.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Real periodic fields, SCFT and PS-FTS (CPU).
PSCF package top-level namespace.