1#ifndef PSCF_MIXTURE_TMPL_TPP
2#define PSCF_MIXTURE_TMPL_TPP
11#include "MixtureTmpl.h"
19 template <
class PT,
class ST>
30 template <
class PT,
class ST>
37 template <
class PT,
class ST>
47 template <
class PT,
class ST>
57 template <
class PT,
class ST>
62 monomers_.allocate(nMonomer_);
63 for (
int i = 0; i < nMonomer_; ++i) {
64 monomers_[i].setId(i);
66 readDArray< Monomer >(in,
"monomers", monomers_, nMonomer_);
87 polymers_.allocate(nPolymer_);
88 for (
int i = 0; i < nPolymer_; ++i) {
90 nBlock_ = nBlock_ +
polymer(i).nBlock();
96 for (
int i = 0; i < nPolymer_; ++i) {
97 for (
int j = 0; j < polymer(i).nBlock(); ++j) {
98 monomerId = polymer(i).block(j).monomerId();
99 kuhn = monomer(monomerId).kuhn();
100 polymer(i).block(j).setKuhn(kuhn);
109 solvents_.allocate(nSolvent_);
110 for (
int i = 0; i < nSolvent_; ++i) {
118 readOptional(in,
"vMonomer", vMonomer_);
MixtureBase()
Constructor.
PolymerSpecies const & polymerSpecies(int id) const final
Get a PolymerSpecies descriptor by const reference.
virtual void readParameters(std::istream &in)
Read parameters from file and initialize.
~MixtureTmpl()
Destructor.
PolymerT & polymer(int id)
MixtureTmpl()
Constructor.
SolventSpecies const & solventSpecies(int id) const final
Set a SolventSpecies descriptor object by const reference.
Descriptor for a linear or acyclic branched block polymer.
SolventT & solvent(int id)
Get a solvent solver object.
Descriptor for a solvent species.
ScalarParam< Type > & read(std::istream &in, const char *label, Type &value)
Add and read a new required ScalarParam < Type > object.
ScalarParam< Type > & readOptional(std::istream &in, const char *label, Type &value)
Add and read a new optional ScalarParam < Type > object.
ParamComposite()
Constructor.
void readParamComposite(std::istream &in, ParamComposite &child, bool next=true)
Add and read a required child ParamComposite.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
PSCF package top-level namespace.