Ejemplo n.º 1
0
    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));
    }
Ejemplo n.º 2
0
// 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);
	}	
  	
}
Ejemplo n.º 3
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;
    }