34template<> ReactorBaseCabinet* ReactorBaseCabinet::s_storage = 0;
37template<> ReactorSurfaceCabinet* ReactorSurfaceCabinet::s_storage;
40template<> SolutionCabinet* SolutionCabinet::s_storage;
46 int32_t
reactor_new(
const char* model, int32_t contents, int32_t clone,
const char* name)
50 bool clone_ = (clone != 0);
51 return ReactorBaseCabinet::add(
newReactorBase(model, SolutionCabinet::at(contents), clone_, name));
57 int32_t
reactor_newSurface(int32_t contents, int32_t reactorsLen,
const int32_t* reactors, int32_t clone,
const char* name)
61 vector<shared_ptr<ReactorBase>> reactors_;
62 for (
int i = 0; i < reactorsLen; i++) {
63 reactors_.push_back(ReactorBaseCabinet::at(reactors[i]));
65 bool clone_ = (clone != 0);
66 return ReactorBaseCabinet::add(
newReactorSurface(SolutionCabinet::at(contents), reactors_, clone_, name));
76 string out = ReactorBaseCabinet::at(handle)->type();
78 return int(out.size()) + 1;
88 string out = ReactorBaseCabinet::at(handle)->name();
90 return int(out.size()) + 1;
100 ReactorBaseCabinet::at(handle)->setName(name);
111 return SolutionCabinet::add(ReactorBaseCabinet::at(handle)->contents4());
121 ReactorBaseCabinet::at(handle)->setInitialVolume(vol);
132 bool cflag_ = (cflag != 0);
133 ReactorBaseCabinet::at(handle)->setChemistry(cflag_);
144 ReactorBaseCabinet::at(handle)->setEnergy(eflag);
155 return ReactorBaseCabinet::at(handle)->mass();
165 return ReactorBaseCabinet::at(handle)->volume();
175 return ReactorBaseCabinet::at(handle)->density();
185 return ReactorBaseCabinet::at(handle)->temperature();
195 return ReactorBaseCabinet::at(handle)->enthalpy_mass();
205 return ReactorBaseCabinet::at(handle)->intEnergy_mass();
215 return ReactorBaseCabinet::at(handle)->pressure();
225 return ReactorBaseCabinet::at(handle)->massFraction(k);
235 return ReactorBaseCabinet::at(handle)->nSensParams();
245 ReactorBaseCabinet::at(handle)->addSensitivityReaction(rxn);
256 ReactorBaseCabinet::at(handle)->addSurface(ReactorBaseCabinet::at(surf));
267 ReactorBaseCabinet::as<FlowReactor>(handle)->setMassFlowRate(mdot);
278 return ReactorBaseCabinet::as<FlowReactor>(handle)->area();
288 ReactorBaseCabinet::as<FlowReactor>(handle)->setArea(area);
299 ReactorBaseCabinet::del(handle);
311 return ReactorBaseCabinet::size();
Header file for class ReactorSurface.
Template for classes to hold pointers to objects.
int32_t reactor_nSensParams(int32_t handle)
Number of sensitivity parameters associated with this reactor.
double reactor_volume(int32_t handle)
Returns the current volume (m^3) of the reactor.
int32_t reactor_setName(int32_t handle, const char *name)
Set the name of this reactor.
int32_t reactor_del(int32_t handle)
Delete ReactorBase object.
double reactor_enthalpy_mass(int32_t handle)
Returns the current enthalpy (J/kg) of the reactor's contents.
double reactor_pressure(int32_t handle)
Returns the current pressure (Pa) of the reactor.
int32_t reactor_addSurface(int32_t handle, int32_t surf)
Add a ReactorSurface object to a Reactor object.
int32_t reactor_newSurface(int32_t contents, int32_t reactorsLen, const int32_t *reactors, int32_t clone, const char *name)
Create a ReactorSurface object with the specified contents and adjacent reactors participating in sur...
int32_t reactor_contents(int32_t handle)
Access the Solution object used to represent the contents of this reactor.
double reactor_mass(int32_t handle)
Returns the mass (kg) of the reactor's contents.
int32_t reactor_setArea(int32_t handle, double area)
Sets the area of the reactor [m^2].
int32_t reactor_setMassFlowRate(int32_t handle, double mdot)
Set the mass flow rate through the reactor [kg/s].
double reactor_area(int32_t handle)
The cross-sectional area of the reactor [m^2].
int32_t reactor_setEnergy(int32_t handle, int32_t eflag)
Set the energy equation on or off.
int32_t reactor_setInitialVolume(int32_t handle, double vol)
Set the initial reactor volume.
double reactor_temperature(int32_t handle)
Returns the current temperature (K) of the reactor's contents.
int32_t reactor_setChemistry(int32_t handle, int32_t cflag)
Enable or disable changes in reactor composition due to chemical reactions.
double reactor_massFraction(int32_t handle, int32_t k)
Return the mass fraction of the k-th species.
double reactor_intEnergy_mass(int32_t handle)
Returns the current internal energy (J/kg) of the reactor's contents.
int32_t reactor_addSensitivityReaction(int32_t handle, int32_t rxn)
Add a sensitivity parameter associated with the reaction number rxn
int32_t reactor_new(const char *model, int32_t contents, int32_t clone, const char *name)
Create a ReactorBase object of the specified type and contents.
double reactor_density(int32_t handle)
Returns the current density (kg/m^3) of the reactor's contents.
int32_t reactor_type(int32_t handle, int32_t bufLen, char *buf)
String indicating the reactor model implemented.
int32_t reactor_name(int32_t handle, int32_t bufLen, char *buf)
Return the name of this reactor.
int32_t reactor_cabinetSize()
Return size of ReactorBase storage.
size_t copyString(const string &source, char *dest, size_t length)
Copy the contents of a string into a char array of a given length.
shared_ptr< ReactorBase > newReactorBase(const string &model, shared_ptr< Solution > contents, bool clone, const string &name)
Create a ReactorBase object of the specified type and contents.
shared_ptr< ReactorSurface > newReactorSurface(shared_ptr< Solution > contents, const vector< shared_ptr< ReactorBase > > &reactors, bool clone, const string &name)
Create a ReactorSurface object with the specified contents and adjacent reactors participating in sur...
CTREACTOR - Generated CLib Cantera interface library.
Namespace for the Cantera kernel.
T handleAllExceptions(T ctErrorCode, T otherErrorCode)
Exception handler used at language interface boundaries.
Contains declarations for string manipulation functions within Cantera.