uint16_t Item::getSubType() const { const ItemType& it = items[id]; if(it.isFluidContainer() || it.isSplash()) return getFluidType(); if(it.charges) return getCharges(); return count; }
uint16_t Item::getSubType() const { const ItemType& it = items[getID()]; if(it.isFluidContainer() || it.isSplash()){ return getFluidType(); } else if(it.charges != 0){ return getCharges(); } return count; }
CoolPropSolver::CoolPropSolver(const std::string &mediumName, const std::string &libraryName, const std::string &substanceName) : BaseSolver(mediumName, libraryName, substanceName){ // Fluid name can be used to pass in other parameters. // The string can be composed like "Propane|enable_TTSE=1|calc_transport=0" std::vector<std::string> name_options = strsplit(substanceName,'|'); // Set the defaults fluidType = -1; enable_TTSE = false; debug_level = 0; calc_transport = false; extend_twophase = false; twophase_derivsmoothing_xend = 0; rho_smoothing_xend = 0; if (name_options.size()>1) { for (unsigned int i = 1; i<name_options.size(); i++) { // Split around the equals sign std::vector<std::string> param_val = strsplit(name_options[i],'='); if (param_val.size() != 2) { errorMessage((char*)format("Could not parse the option [%s], must be in the form param=value",name_options[i].c_str()).c_str()); } // Check each of the options in turn if (!param_val[0].compare("enable_TTSE")) { if (!param_val[1].compare("1") || !param_val[1].compare("true")) { std::cout << "TTSE is on\n"; enable_TTSE = true; } else if (!param_val[1].compare("0") || !param_val[1].compare("false")) { std::cout << "TTSE is off\n"; enable_TTSE = false; } else errorMessage((char*)format("I don't know how to handle this option [%s]",name_options[i].c_str()).c_str()); //throw NotImplementedError((char*)format("I don't know how to handle this option [%s]",name_options[i].c_str()).c_str()); } else if (!param_val[0].compare("calc_transport")) { if (!param_val[1].compare("1") || !param_val[1].compare("true")) calc_transport = true; else if (!param_val[1].compare("0") || !param_val[1].compare("false")) calc_transport = false; else errorMessage((char*)format("I don't know how to handle this option [%s]",name_options[i].c_str()).c_str()); } else if (!param_val[0].compare("enable_EXTTP")) { if (!param_val[1].compare("1") || !param_val[1].compare("true")) extend_twophase = true; else if (!param_val[1].compare("0") || !param_val[1].compare("false")) extend_twophase = false; else errorMessage((char*)format("I don't know how to handle this option [%s]",name_options[i].c_str()).c_str()); } else if (!param_val[0].compare("twophase_derivsmoothing_xend")) { twophase_derivsmoothing_xend = strtod(param_val[1].c_str(),NULL); if (twophase_derivsmoothing_xend<0 || twophase_derivsmoothing_xend > 1) errorMessage((char*)format("I don't know how to handle this twophase_derivsmoothing_xend value [%d]",param_val[0].c_str()).c_str()); } else if (!param_val[0].compare("rho_smoothing_xend")) { rho_smoothing_xend = strtod(param_val[1].c_str(),NULL); if (rho_smoothing_xend<0 || rho_smoothing_xend > 1) errorMessage((char*)format("I don't know how to handle this rho_smoothing_xend value [%d]",param_val[0].c_str()).c_str()); } else if (!param_val[0].compare("debug")) { debug_level = (int)strtol(param_val[1].c_str(),NULL,0); if (debug_level<0 || debug_level > 1000) errorMessage((char*)format("I don't know how to handle this debug level [%s]",param_val[0].c_str()).c_str()); } else { errorMessage((char*)format("This option [%s] was not understood",name_options[i].c_str()).c_str()); } // Some options were passed in, lets see what we have std::cout << param_val[0] << " has the value of " << param_val[1] << std::endl; } } // Handle the name and fill the fluid type if (debug_level > 5) std::cout << "Checking fluid " << name_options[0] << " against database." << std::endl; fluidType = getFluidType(name_options[0]); // Throws an error if unknown fluid if (debug_level > 5) std::cout << "Check passed, reducing " << substanceName << " to " << name_options[0] << std::endl; this->substanceName = name_options[0]; state = new CoolPropStateClassSI(name_options[0]); setFluidConstants(); }