17 #ifndef POLYAGGLOMERATE_H_
18 #define POLYAGGLOMERATE_H_
22 namespace FuelCellShop
46 inline void push_back(
const double & volumeFraction, boost::shared_ptr<FuelCellShop::MicroScale::MicroScaleBase> micro){
50 Assert(micro, ExcMessage(
"boost::shared_ptr<FuelCellShop::MicroScale::MicroScaleBase> with null pointer out of range for MicroMap."));
52 vols.push_back(volumeFraction);
69 inline unsigned int size()
const{
73 inline boost::shared_ptr<FuelCellShop::MicroScale::MicroScaleBase>&
at(
unsigned int idx){
74 Assert(idx <
size_, ExcMessage(
"Index out of range for MicroMap."));
78 inline double&
volAt(
unsigned int idx){
79 Assert(idx <
size_, ExcMessage(
"Index out of range for MicroMap."));
86 std::vector<boost::shared_ptr<FuelCellShop::MicroScale::MicroScaleBase>>
micros;
158 virtual void set_solution(
const std::map<VariableNames,SolutionVariable>& sols,
const VariableNames& name,
const int& index);
183 Assert(
false, ExcPureFunctionCalled());
184 return std::vector<double>(3, 0.0);
215 for(
unsigned int i = 0; i <
micro.
size(); i++){
218 micro.
at(i)->print_properties();
231 virtual void make_thread_safe(ParameterHandler ¶m,
unsigned int thread_index);
253 virtual void initialize (ParameterHandler ¶m);
virtual void declare_parameters(ParameterHandler ¶m) const
double & volAt(unsigned int idx)
Definition: poly_agglomerate.h:78
void push_back(const double &volumeFraction, boost::shared_ptr< FuelCellShop::MicroScale::MicroScaleBase > micro)
Definition: poly_agglomerate.h:46
MicroSet()
Definition: poly_agglomerate.h:40
virtual bool has_derivatives()
Returns true if the class instance can calculate current density derivatives.
Definition: poly_agglomerate.h:195
VariableNames
The enumeration containing the names of some of the available FCST solution variables and their deriv...
Definition: system_management.h:63
Convenient storage object for SolutionVariables.
Definition: fcst_variables.h:457
std::vector< boost::shared_ptr< FuelCellShop::MicroScale::MicroScaleBase > > micros
Definition: poly_agglomerate.h:86
virtual void initialize(ParameterHandler ¶m)
~MicroSet()
Definition: poly_agglomerate.h:44
MicroSet micro
Definition: poly_agglomerate.h:281
static bool inf_loop_preventor
Definition: poly_agglomerate.h:284
virtual boost::shared_ptr< MicroScaleBase > create_replica()
This member function is used to create an object of MicroScaleBase.
Definition: poly_agglomerate.h:272
static int num_sub_micro
Definition: poly_agglomerate.h:287
virtual std::string get_name()
Return name of class instance, i.e.
Definition: poly_agglomerate.h:203
PolyAgglomerate()
Definition: poly_agglomerate.h:141
virtual void set_solution(const std::map< VariableNames, SolutionVariable > &sols, const VariableNames &name, const int &index)
Function for setting the solution map(reactant concentration, phi_s, phi_m, etc.).
virtual void set_structure()
virtual double aux_volume_fraction()
MicroScale object may have extra contribution to volume of layer, e.g.
An agglomerate model which considers a combination of agglomerates.
Definition: poly_agglomerate.h:133
FCSTLogStream log
Object used to output data to file and, if file attached recorded to a file as well.
std::vector< double > vols
Definition: poly_agglomerate.h:87
unsigned int size() const
Definition: poly_agglomerate.h:69
The base class for micro scale objects in OpenFCST.
Definition: micro_scale_base.h:134
virtual SolutionMap compute_current()
Function used to compute the current density produced by the micro structure.
virtual void print_properties()
Print out key micro-structural dimensions, defined by child.
Definition: poly_agglomerate.h:210
static PolyAgglomerate const * PROTOTYPE
Definition: poly_agglomerate.h:238
unsigned int size_
Definition: poly_agglomerate.h:85
boost::shared_ptr< FuelCellShop::MicroScale::MicroScaleBase > & at(unsigned int idx)
Definition: poly_agglomerate.h:73
Definition: poly_agglomerate.h:28
static const std::string concrete_name
Definition: poly_agglomerate.h:139
void normalize_vols()
Definition: poly_agglomerate.h:58
virtual ~PolyAgglomerate()
virtual std::vector< double > compute_derivative_current()
Function to compute the derivative of the current density at the local operating conditions.
Definition: poly_agglomerate.h:181
virtual void make_thread_safe(ParameterHandler ¶m, unsigned int thread_index)