void ReactingSurf1D:: init() { m_nv = m_nsp + 1; _init(m_nsp+1); m_fixed_cov.resize(m_nsp, 0.0); m_fixed_cov[0] = 1.0; int nt = m_kin->nTotalSpecies(); m_work.resize(nt, 0.0); // set bounds vector_fp lower(m_nv), upper(m_nv); lower[0] = 200.0; upper[0] = 1.e5; int n; for (n = 0; n < m_nsp; n++) { lower[n+1] = -1.0e-5; upper[n+1] = 2.0; } setBounds(m_nv, DATA_PTR(lower), m_nv, DATA_PTR(upper)); vector_fp rtol(m_nv), atol(m_nv); for (n = 0; n < m_nv; n++) { rtol[n] = 1.0e-5; atol[n] = 1.0e-9; } atol[0] = 1.0e-4; setTolerances(m_nv, DATA_PTR(rtol), m_nv, DATA_PTR(atol)); }
// will check if user input is valid // if user input has no arguements, default 10 seconds will be used // if user input has more than 3 arguments or the second argument is // not a valid integer, then error is printed and program exits void checkInput(int numArg, char *arg) { if (numArg = 1) { procesanager(10); return; } int i; char* end; long val = rtol(arg, &end, 10); // check the whole argument if (numArg == 2 && !end[0] && val >= 0){ processManager(val); return; } else { printf(ERROR: Usage = a3 or a3 [number >= 0]\n"); exit(0); } }
void Inlet1D:: init() { _init(2); // set bounds (mdot, T) const doublereal lower[2] = {-1.0e5, 200.0}; const doublereal upper[2] = {1.0e5, 1.e5}; setBounds(2, lower, 2, upper); // set tolerances vector_fp rtol(2, 1e-4); vector_fp atol(2, 1.e-5); setTolerances(2, DATA_PTR(rtol), 2, DATA_PTR(atol)); // if a flow domain is present on the left, then this must be // a right inlet. Note that an inlet object can only be a // terminal object - it cannot have flows on both the left and // right if (m_flow_left) { m_ilr = RightInlet; m_flow = m_flow_left; } else if (m_flow_right) { m_ilr = LeftInlet; m_flow = m_flow_right; } else { throw CanteraError("Inlet1D::init","no flow!"); } // components = u, V, T, lambda, + mass fractions m_nsp = m_flow->nComponents() - 4; m_yin.resize(m_nsp, 0.0); if (m_xstr != "") setMoleFractions(m_xstr); else m_yin[0] = 1.0; }