FluidPropSolver::FluidPropSolver(const string &mediumName, const string &libraryName, const string &substanceName) : BaseSolver(mediumName, libraryName, substanceName){ string ErrorMsg; string Comp[20]; double Conc[20]; // Build FluidProp object with the libraryName and substanceName info Comp[0] = substanceName.c_str(); Conc[0] = 1.0; FluidProp.SetFluid(libraryName.substr(libraryName.find(".")+1), 1, Comp, Conc, &ErrorMsg); if (isError(ErrorMsg)) // An error occurred { // Build error message and pass it to the Modelica environment char error[300]; sprintf(error, "FluidProp error: %s\n", ErrorMsg.c_str()); errorMessage(error); } // Set SI units FluidProp.SetUnits("SI", " ", " ", " ", &ErrorMsg); if (isError(ErrorMsg)) // An error occurred { // Build error message and pass it to the Modelica environment char error[300]; sprintf(error, "FluidProp error: %s\n", ErrorMsg.c_str()); errorMessage(error); } // Set fluid constants setFluidConstants(); }
CoolPropSolver::CoolPropSolver(const std::string &mediumName, const std::string &libraryName, const std::string &substanceName) : BaseSolver(mediumName, libraryName, substanceName){ setFluidConstants(); iFluid = get_Fluid_index(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 enable_TTSE = false; debug_level = 0; calc_transport = 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"; enable_TTSE = true; } else if (!param_val[1].compare("0") || !param_val[1].compare("false")) { std::cout << "TTSE is off"; enable_TTSE = false; } else 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("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; } } state = new CoolPropStateClassSI(name_options[0]); }
TestSolver::TestSolver(const string &mediumName, const string &libraryName, const string &substanceName) : BaseSolver(mediumName, libraryName, substanceName){ setFluidConstants(); }