34template<> Domain1DCabinet* Domain1DCabinet::s_storage = 0;
37template<> Flow1DCabinet* Flow1DCabinet::s_storage;
40template<> SolutionCabinet* SolutionCabinet::s_storage;
43template<> Boundary1DCabinet* Boundary1DCabinet::s_storage;
53 return Domain1DCabinet::add(
newFlow1D(domainType, SolutionCabinet::at(solution),
id));
63 return Domain1DCabinet::add(
newBoundary1D(domainType, SolutionCabinet::at(solution),
id));
73 string out = Domain1DCabinet::at(handle)->domainType();
75 return int(out.size()) + 1;
85 return static_cast<int32_t
>(Domain1DCabinet::at(handle)->domainIndex());
95 return static_cast<int32_t
>(Domain1DCabinet::at(handle)->index(n, j));
105 return static_cast<int32_t
>(Domain1DCabinet::at(handle)->nComponents());
115 return static_cast<int32_t
>(Domain1DCabinet::at(handle)->nPoints());
125 string out = Domain1DCabinet::at(handle)->componentName(n);
127 return int(out.size()) + 1;
137 return static_cast<int32_t
>(Domain1DCabinet::at(handle)->componentIndex(name));
147 return SolutionCabinet::add(Domain1DCabinet::at(handle)->phase());
157 Domain1DCabinet::at(handle)->updateState(loc);
168 return Domain1DCabinet::at(handle)->value(component);
178 Domain1DCabinet::at(handle)->setValue(component, value);
185 int32_t
domain_values(int32_t handle,
const char* component, int32_t bufLen,
double* buf)
189 vector<double> out = Domain1DCabinet::at(handle)->values(component);
190 std::copy(out.begin(), out.end(), buf);
191 return int(out.size());
197 int32_t
domain_getValues(int32_t handle,
const char* component, int32_t valuesLen,
double* values)
201 vector<double> values_(valuesLen);
202 Domain1DCabinet::at(handle)->getValues(component, values_);
203 std::copy(values_.begin(), values_.end(), values);
210 int32_t
domain_setValues(int32_t handle,
const char* component, int32_t valuesLen,
const double* values)
214 const vector<double> values_(values, values + valuesLen);
215 Domain1DCabinet::at(handle)->setValues(component, values_);
222 int32_t
domain_residuals(int32_t handle,
const char* component, int32_t bufLen,
double* buf)
226 vector<double> out = Domain1DCabinet::at(handle)->residuals(component);
227 std::copy(out.begin(), out.end(), buf);
228 return int(out.size());
234 int32_t
domain_setProfile(int32_t handle,
const char* component, int32_t posLen,
const double* pos, int32_t valuesLen,
const double* values)
238 const vector<double> pos_(pos, pos + posLen);
239 const vector<double> values_(values, values + valuesLen);
240 Domain1DCabinet::at(handle)->setProfile(component, pos_, values_);
251 Domain1DCabinet::at(handle)->setFlatProfile(component, value);
262 Domain1DCabinet::at(handle)->setBounds(n, lower, upper);
273 return Domain1DCabinet::at(handle)->lowerBound(n);
283 return Domain1DCabinet::at(handle)->upperBound(n);
293 Domain1DCabinet::at(handle)->setSteadyTolerances(rtol, atol, n);
304 Domain1DCabinet::at(handle)->setTransientTolerances(rtol, atol, n);
315 return Domain1DCabinet::at(handle)->rtol(n);
325 return Domain1DCabinet::at(handle)->atol(n);
335 const vector<double> grid_(grid, grid + gridLen);
336 Domain1DCabinet::at(handle)->setupGrid(grid_);
347 Domain1DCabinet::at(handle)->setupUniformGrid(points, length, start);
358 Domain1DCabinet::at(handle)->setID(s);
369 auto& obj = Domain1DCabinet::at(handle);
371 vector<double>& out = obj->grid();
372 std::copy(out.begin(), out.end(), buf);
373 return int(out.size());
383 Domain1DCabinet::as<Boundary1D>(handle)->setMdot(mdot);
394 Domain1DCabinet::as<Boundary1D>(handle)->setTemperature(t);
405 Domain1DCabinet::as<Boundary1D>(handle)->setSpreadRate(V0);
416 Domain1DCabinet::as<Boundary1D>(handle)->setMoleFractions(xin);
427 auto obj = Domain1DCabinet::as<Boundary1D>(handle);
429 obj->setMoleFractions(xin);
440 return Domain1DCabinet::as<Boundary1D>(handle)->mdot();
450 return Domain1DCabinet::as<Boundary1D>(handle)->temperature();
460 return Domain1DCabinet::as<Boundary1D>(handle)->spreadRate();
470 return Domain1DCabinet::as<Boundary1D>(handle)->massFraction(k);
480 string out = Domain1DCabinet::as<Flow1D>(handle)->transportModel();
482 return int(out.size()) + 1;
492 Domain1DCabinet::at(handle)->setTransportModel(model);
503 bool withSoret_ = (withSoret != 0);
504 Domain1DCabinet::as<Flow1D>(handle)->enableSoret(withSoret_);
515 Domain1DCabinet::as<Flow1D>(handle)->setPressure(p);
526 return Domain1DCabinet::as<Flow1D>(handle)->pressure();
536 const vector<double> zfixed_(zfixed, zfixed + zfixedLen);
537 const vector<double> tfixed_(tfixed, tfixed + tfixedLen);
538 Domain1DCabinet::as<Flow1D>(handle)->setFixedTempProfile(zfixed_, tfixed_);
549 Domain1DCabinet::as<Flow1D>(handle)->solveEnergyEqn(j);
560 bool out = Domain1DCabinet::as<Flow1D>(handle)->allOfEnergyEnabled();
571 bool out = Domain1DCabinet::as<Flow1D>(handle)->noneOfEnergyEnabled();
582 bool flag_ = (flag != 0);
583 Domain1DCabinet::as<Flow1D>(handle)->setEnergyEnabled(flag_);
594 bool docov_ = (docov != 0);
595 Domain1DCabinet::as<ReactingSurf1D>(handle)->enableCoverageEquations(docov_);
606 auto& obj = Domain1DCabinet::at(handle);
608 vector<double> out = obj->getRefineCriteria();
609 std::copy(out.begin(), out.end(), buf);
610 return int(out.size());
620 Domain1DCabinet::at(handle)->setRefineCriteria(ratio, slope, curve, prune);
627 int32_t
domain_info(int32_t handle, int32_t rows, int32_t width, int32_t bufLen,
char* buf)
631 string out = Domain1DCabinet::at(handle)->_info(rows, width);
633 return int(out.size()) + 1;
643 Domain1DCabinet::del(handle);
655 return Domain1DCabinet::size();
Boundary objects for one-dimensional simulations.
Template for classes to hold pointers to objects.
CTDOMAIN - Generated CLib Cantera interface library.
int32_t domain_cabinetSize()
Return size of Domain1D storage.
double bdry_spreadRate(int32_t handle)
Tangential velocity gradient [1/s] at this boundary.
double domain_rtol(int32_t handle, int32_t n)
Relative tolerance of the nth component.
int32_t domain_setTransportModel(int32_t handle, const char *model)
Set transport model by name.
double domain_atol(int32_t handle, int32_t n)
Absolute tolerance of the nth component.
int32_t domain_setupUniformGrid(int32_t handle, int32_t points, double length, double start)
Set up uniform grid.
double bdry_temperature(int32_t handle)
Temperature [K].
int32_t domain_grid(int32_t handle, int32_t bufLen, double *buf)
Access the array of grid coordinates [m].
int32_t domain_phase(int32_t handle)
Return thermo/kinetics/transport manager used in the domain.
int32_t domain_componentName(int32_t handle, int32_t n, int32_t bufLen, char *buf)
Name of component n.
int32_t domain_setProfile(int32_t handle, const char *component, int32_t posLen, const double *pos, int32_t valuesLen, const double *values)
Specify a profile for a component.
int32_t domain_updateState(int32_t handle, int32_t loc)
Update state at given location to state of associated Solution object.
int32_t flow_enableSoret(int32_t handle, int32_t withSoret)
Enable thermal diffusion, also known as Soret diffusion.
double domain_value(int32_t handle, const char *component)
Set a single component value at a boundary.
int32_t flow_solveEnergyEqn(int32_t handle, int32_t j)
Specify that the energy equation should be solved at point j.
int32_t flow_setEnergyEnabled(int32_t handle, int32_t flag)
Set energy enabled flag for entire domain.
int32_t domain_getValues(int32_t handle, const char *component, int32_t valuesLen, double *values)
Retrieve component values.
int32_t domain_setID(int32_t handle, const char *s)
Specify an identifying tag for this domain.
int32_t domain_nPoints(int32_t handle)
Number of grid points in this domain.
double domain_upperBound(int32_t handle, int32_t n)
Upper bound on the nth component.
int32_t domain_setTransientTolerances(int32_t handle, double rtol, double atol, int32_t n)
Set tolerances for time-stepping mode.
int32_t domain_setValues(int32_t handle, const char *component, int32_t valuesLen, const double *values)
Specify component values.
int32_t bdry_setSpreadRate(int32_t handle, double V0)
Set tangential velocity gradient [1/s] at this boundary.
int32_t domain_setRefineCriteria(int32_t handle, double ratio, double slope, double curve, double prune)
Set grid refinement criteria.
int32_t domain_getRefineCriteria(int32_t handle, int32_t bufLen, double *buf)
Get the grid refinement criteria.
int32_t domain_residuals(int32_t handle, const char *component, int32_t bufLen, double *buf)
Retrieve internal work array values for a component.
int32_t flow_noneOfEnergyEnabled(int32_t handle)
Check if energy is disabled for entire domain.
int32_t flow_setFixedTempProfile(int32_t handle, int32_t zfixedLen, const double *zfixed, int32_t tfixedLen, const double *tfixed)
Set fixed temperature profile.
double bdry_mdot(int32_t handle)
The total mass flow rate [kg/m2/s].
int32_t flow_allOfEnergyEnabled(int32_t handle)
Check if energy is enabled for entire domain.
int32_t domain_setupGrid(int32_t handle, int32_t gridLen, const double *grid)
Set up initial grid.
int32_t domain_del(int32_t handle)
Delete Domain1D object.
int32_t domain_setValue(int32_t handle, const char *component, double value)
Set a single component value in a flow domain or at a boundary.
int32_t domain_newBoundary1D(const char *domainType, int32_t solution, const char *id)
Create a Boundary1D object of the specified type.
int32_t domain_nComponents(int32_t handle)
Number of components at each grid point.
double bdry_massFraction(int32_t handle, int32_t k)
Mass fraction of species k.
int32_t reactingsurf_enableCoverageEquations(int32_t handle, int32_t docov)
Set whether to solve the equations for the surface species coverages.
int32_t domain_index(int32_t handle, int32_t n, int32_t j)
Returns the index of the solution vector, which corresponds to component n at grid point j.
int32_t flow_transportModel(int32_t handle, int32_t bufLen, char *buf)
Retrieve transport model.
int32_t bdry_setTemperature(int32_t handle, double t)
Set the temperature.
int32_t bdry_setMoleFractions(int32_t handle, int32_t xinLen, const double *xin)
Set the mole fractions by specifying an array.
int32_t bdry_setMoleFractionsByName(int32_t handle, const char *xin)
Set the mole fractions by specifying a string.
double domain_lowerBound(int32_t handle, int32_t n)
Lower bound on the nth component.
int32_t domain_domainType(int32_t handle, int32_t bufLen, char *buf)
Domain type flag.
int32_t domain_values(int32_t handle, const char *component, int32_t bufLen, double *buf)
Retrieve component values.
int32_t flow_setPressure(int32_t handle, double p)
Set the pressure.
int32_t domain_newFlow1D(const char *domainType, int32_t solution, const char *id)
Create a Flow1D object of the specified type.
int32_t domain_setSteadyTolerances(int32_t handle, double rtol, double atol, int32_t n)
Set tolerances for steady-state mode.
double flow_pressure(int32_t handle)
The current pressure [Pa].
int32_t domain_info(int32_t handle, int32_t rows, int32_t width, int32_t bufLen, char *buf)
Return a concise summary of a Domain.
int32_t bdry_setMdot(int32_t handle, double mdot)
Set the total mass flow rate [kg/m²/s].
int32_t domain_domainIndex(int32_t handle)
The left-to-right location of this domain.
int32_t domain_componentIndex(int32_t handle, const char *name)
Index of component with name name.
int32_t domain_setFlatProfile(int32_t handle, const char *component, double value)
Specify a flat profile for a component.
int32_t domain_setBounds(int32_t handle, int32_t n, double lower, double upper)
Set the upper and lower bounds for a solution component, n.
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< Flow1D > newFlow1D(const string &domainType, shared_ptr< Solution > solution, const string &id)
Create a Flow1D object of the specified type.
shared_ptr< Boundary1D > newBoundary1D(const string &domainType, shared_ptr< Solution > solution, const string &id)
Create a Boundary1D object of the specified type.
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.