1#ifndef PRDC_SCFT_THERMO_TMPL_H
2#define PRDC_SCFT_THERMO_TMPL_H
11#include "SystemConstRefTmpl.h"
28 template <
int D,
class ST>
147 using MixtureT =
typename Base::MixtureT;
148 using InteractionT =
typename Base::InteractionT;
149 using DomainT =
typename Base::DomainT;
150 using WFieldsT =
typename Base::WFieldsT;
151 using CFieldsT =
typename Base::CFieldsT;
152 using MaskT =
typename Base::MaskT;
153 using RFieldT =
typename Base::RFieldT;
223 template <
int D,
class ST>
231 template <
int D,
class ST>
239 template <
int D,
class ST>
247 template <
int D,
class ST>
255 template <
int D,
class ST>
263 template <
int D,
class ST>
void write(std::ostream &out)
Write SCFT thermodynamic properties to a file.
double pressure() const
Get the precomputed pressure times monomer volume / kT.
void compute()
Compute SCFT free energy density and pressure for current fields.
virtual double innerProduct(RFieldT const &A, RFieldT const &B) const
Inner product of two fields.
typename Base::SystemT SystemT
Parent System type name alias.
SystemT const & system() const
void clear()
Clear all thermodynamic data.
SystemConstRefTmpl< ST > Base
Base class type name alias.
virtual ~ScftThermoTmpl()
Destructor.
double fHelmholtz() const
Get total Helmholtz free energy per monomer / kT.
bool hasData() const
Have free energies and pressure been computed?
double fIdeal() const
Get the ideal gas contribution to fHelmholtz.
double fExt() const
Get the external field contribution to fHelmholtz.
double fInter() const
Get the interaction contribution to fHelmholtz.
ScftThermoTmpl(SystemT const &system)
Constructor.
MaskT const & mask() const
WFieldsT const & w() const
CFieldsT const & c() const
SystemT const & system() const
InteractionT const & interaction() const
WFieldsT const & h() const
MixtureT const & mixture() const
DomainT const & domain() const
SystemConstRefTmpl()
Default constructor.
FileMaster const & fileMaster() const
File containing preprocessor macros for error handling.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Periodic fields and crystallography.
PSCF package top-level namespace.