1#ifndef RPC_BASIS_FIELD_STATE_TPP
2#define RPC_BASIS_FIELD_STATE_TPP
11#include "BasisFieldState.h"
12#include "FieldState.tpp"
13#include <rpc/solvers/Mixture.h>
14#include <rpc/field/Domain.h>
55 int nMonomer =
system().mixture().nMonomer();
57 if (
fields().isAllocated()) {
60 fields().allocate(nMonomer);
63 int nBasis =
system().domain().basis().nBasis();
65 for (
int i = 0; i < nMonomer; ++i) {
66 if (
field(i).isAllocated()) {
69 field(i).allocate(nBasis);
106 int nMonomer =
system().mixture().nMonomer();
107 int nBasis =
system().domain().basis().nBasis();
109 for (i = 0; i < nMonomer; ++i) {
112 for (j = 0; j < nBasis; ++j) {
113 stateField[j] = systemField[j];
void write(const std::string &filename)
Write state to file.
BasisFieldState()
Default constructor.
void allocate()
Allocate all fields.
void setSystemState(bool isFlexible)
Set the state of the associated system to this state.
~BasisFieldState()
Destructor.
void read(const std::string &filename)
Read state from file.
void getSystemState()
Copy the current state of the associated system.
File input/output operations and format conversions for fields.
void writeFieldsBasis(std::ostream &out, DArray< DArray< double > > const &fields, UnitCell< D > const &unitCell) const
Write an array of fields in basis format to an output stream.
void readFieldsBasis(std::istream &in, DArray< DArray< double > > &fields, UnitCell< D > &unitCell) const
Read an array of fields in basis format from an input stream.
const UnitCell< D > & unitCell() const
const DArray< FT > & fields() const
const DArray< double > & field(int monomerId) const
Main class, representing a complete physical system.
Dynamically allocatable contiguous array template.
File containing preprocessor macros for error handling.
#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.