CPluginSource::CPluginSource(const AddonProps &props) : CAddon(props) { CStdString provides; InfoMap::const_iterator i = Props().extrainfo.find("provides"); if (i != Props().extrainfo.end()) provides = i->second; SetProvides(provides); }
double _T_hp_secant(std::string Ref, double h, double p, double T_guess) { double x1=0,x2=0,x3=0,y1=0,y2=0,eps=1e-8,change=999,f=999,T=300; int iter=1; while ((iter<=3 || fabs(f)>eps) && iter<100) { if (iter==1){x1=T_guess; T=x1;} if (iter==2){x2=T_guess+0.1; T=x2;} if (iter>2) {T=x2;} f=Props("H",'T',T,'P',p,Ref)-h; if (iter==1){y1=f;} if (iter>1) { y2=f; x3=x2-y2/(y2-y1)*(x2-x1); change=fabs(y2/(y2-y1)*(x2-x1)); y1=y2; x1=x2; x2=x3; } iter=iter+1; if (iter>100) { throw SolutionError(format("iter %d: T_hp not converging with inputs(%s,%g,%g,%g) value: %0.12g\n",iter,(char*)Ref.c_str(),h,p,T_guess,f)); } } return T; }
CPluginSource::CPluginSource(const cp_extension_t *ext) : CAddon(ext) { CStdString provides; if (ext) { provides = CAddonMgr::Get().GetExtValue(ext->configuration, "provides"); if (!provides.IsEmpty()) Props().extrainfo.insert(make_pair("provides", provides)); } SetProvides(provides); }
void makeIndex (trie_t & trie, props_t & props, bool & abort, Config const & cfg) { try { props_t tmp_props; tmp_props.reserve(1024); std::map<tstring, int, icasecompare> tmp_propmap; for (SearchLocationInfo const & info : cfg.m_locations) { if (abort) return; SearchDirectory( info.m_dir_path, info.m_includes, info.m_excludes, info.m_recursive, info.m_follow_symlinks , TEXT("") , [] (tstring const & fname, tstring const & cmp) { return true; } , [&trie, &tmp_props, &tmp_propmap] (tstring const & fname, tstring const & fpath) { std::map<tstring, int>::iterator it = tmp_propmap.find(fname); if (it == tmp_propmap.end()) { tstring fname_lwr = fname; boost::algorithm::to_lower(fname_lwr); tmp_props.push_back(Props(fname_lwr, fpath)); trie_t::result_type const id = static_cast<trie_t::result_type>(tmp_props.size() - 1); tmp_propmap[fname_lwr] = id; //dbg_printf("insert: fname=%s fpath=%s idx=%i\n", fname_lwr.c_str(), fpath.c_str(), id); trie.update(fname_lwr.c_str(), fname_lwr.length(), id); } else { tmp_props[it->second].m_fpath.push_back(fpath); //dbg_printf("update: fname=%s fpath=%s idx=%i\n", fname.c_str(), fpath.c_str(), it->second); } } , abort); } props = tmp_props; } catch (std::regex_error const & e) { dbg_printf("Exception caught: %s", e.what()); } //printf("keys: %ld\n", trie.num_keys ()); //printf("size: %ld\n", trie.size ()); }
double _Props1(char *Fluid, char *Output) { // Try to load the CoolProp Fluid pFluid = Fluids.get_fluid(Fluid); if (pFluid != NULL) { // It's a CoolProp fluid // Convert the parameter to integer long iOutput = get_param_index(Output); if (iOutput < 0){ throw ValueError(format("Your output key [%s] is not valid. (names are case sensitive)",Output)); } // Get the output using the conventional function return _CoolProp_Fluid_Props(iOutput,0,0,0,0,pFluid); } else if (IsREFPROP(Fluid)) { // REFPROP fluid, or something else that is invalid try{ if (!strcmp(Output,"Ttriple")) return Props('R','T',0,'P',0,Fluid); else if (!strcmp(Output,"Tcrit")) return Props('B','T',0,'P',0,Fluid); else if (!strcmp(Output,"pcrit")) return Props('E','T',0,'P',0,Fluid); else if (!strcmp(Output,"Tmin")) return Props('t','T',0,'P',0,Fluid); else if (!strcmp(Output,"molemass")) return Props('M','T',0,'P',0,Fluid); else if (!strcmp(Output,"rhocrit")) return Props('N','T',0,'P',0,Fluid); else if (!strcmp(Output,"accentric")) return Props('w','T',0,'P',0,Fluid); else throw ValueError(format("Output parameter \"%s\" is invalid for REFPROP fluid",Output)); } // Catch any error that subclasses the std::exception catch(std::exception &e){ err_string = std::string("CoolProp error: ").append(e.what()); return _HUGE; } } else { throw ValueError(format("Fluid \"%s\" is an invalid fluid",Fluid)); } }
bool CScreenSaver::CreateScreenSaver() { #ifdef HAS_PYTHON if (URIUtils::HasExtension(LibPath(), ".py")) { // Don't allow a previously-scheduled alarm to kill our new screensaver g_alarmClock.Stop(PYTHON_ALARM, true); if (!g_pythonParser.StopScript(LibPath())) g_pythonParser.evalFile(LibPath(), AddonPtr(new CScreenSaver(Props()))); return true; } #endif // pass it the screen width,height // and the name of the screensaver int iWidth = g_graphicsContext.GetWidth(); int iHeight = g_graphicsContext.GetHeight(); m_pInfo = new SCR_PROPS; #ifdef HAS_DX m_pInfo->device = g_Windowing.Get3DDevice(); #else m_pInfo->device = NULL; #endif m_pInfo->x = 0; m_pInfo->y = 0; m_pInfo->width = iWidth; m_pInfo->height = iHeight; m_pInfo->pixelRatio = CDisplaySettings::Get().GetResolutionInfo(g_graphicsContext.GetVideoResolution()).fPixelRatio; m_pInfo->name = strdup(Name().c_str()); m_pInfo->presets = strdup(CSpecialProtocol::TranslatePath(Path()).c_str()); m_pInfo->profile = strdup(CSpecialProtocol::TranslatePath(Profile()).c_str()); if (CAddonDll<DllScreenSaver, ScreenSaver, SCR_PROPS>::Create() == ADDON_STATUS_OK) return true; return false; }
double AirClass::conductivity_Trho(double T, double rho) { /* E.W. Lemmon and R.T Jacobsen, Viscosity and Thermal Conductivity Equations for Nitrogen, Oxygen, Argon and Air International Journal of Thermophysics, Vol. 25, No. 1, January 2004, p.28 */ double e_k=103.3, //[K] sigma=0.360, //[nm] Tref=265.262, //[K] zeta0=0.11, //[nm] LAMBDA=0.055, q_D=0.31; //[nm] double eta0,OMEGA,delta,tau,Tstar,lambda0,lambdar,num, cp,cv,OMEGA_tilde,OMEGA_tilde0,zeta,nu,gamma,R0,lambdac,k, pi=3.141592654,mu; double b[]={0.431,-0.4623,0.08406,0.005341,-0.00331}; double N[]={0,1.308,1.405,-1.036,8.743,14.76,-16.62,3.793,-6.142,-0.3778}; double t[]={0,0,-1.1,-0.3,0.1,0.0,0.5,2.7,0.3,1.3}; double d[]={0,0,0,0,1,2,3,7,7,11}; double l[]={0,0,0,0,0,0,2,2,2,2}; double g[]={0,0,0,0,0,0,1,1,1,1}; delta=rho/(10.4477*28.9586); tau=132.6312/T; Tstar=T/(e_k); OMEGA=exp(b[0]*powInt(log(Tstar),0) +b[1]*powInt(log(Tstar),1) +b[2]*powInt(log(Tstar),2) +b[3]*powInt(log(Tstar),3) +b[4]*powInt(log(Tstar),4)); eta0=0.0266958*sqrt(28.9586*T)/(sigma*sigma*OMEGA); lambda0=N[1]*eta0+N[2]*pow(tau,t[2])+N[3]*pow(tau,t[3]); lambdar=N[4]*pow(tau,t[4])*pow(delta,d[4])*exp(-g[4]*pow(delta,l[4])) +N[5]*pow(tau,t[5])*pow(delta,d[5])*exp(-g[5]*pow(delta,l[5])) +N[6]*pow(tau,t[6])*pow(delta,d[6])*exp(-g[6]*pow(delta,l[6])) +N[7]*pow(tau,t[7])*pow(delta,d[7])*exp(-g[7]*pow(delta,l[7])) +N[8]*pow(tau,t[8])*pow(delta,d[8])*exp(-g[8]*pow(delta,l[8])) +N[9]*pow(tau,t[9])*pow(delta,d[9])*exp(-g[9]*pow(delta,l[9])); R0=1.01; nu=0.63; gamma=1.2415; k=1.380658e-23; //[J/K] num=X_tilde(T,crit.T/T,delta)-X_tilde(Tref,crit.T/Tref,delta)*Tref/T; // no critical enhancement if numerator of Eq. 10 is negative if (num<0) return (lambda0+lambdar)/1e6; cp=Props('C','T',T,'D',rho,(char *)"Air"); cv=Props('O','T',T,'D',rho,(char *)"Air"); mu=Props('V','T',T,'D',rho,(char *)"Air")*1e6; //[uPa-s] zeta=zeta0*pow(num/LAMBDA,nu/gamma); //[nm] OMEGA_tilde=2.0/pi*((cp-cv)/cp*atan(zeta/q_D)+cv/cp*(zeta/q_D)); OMEGA_tilde0=2.0/pi*(1.-exp(-1./(q_D/zeta+1.0/3.0*(zeta/q_D)*(zeta/q_D)/delta/delta))); lambdac=rho*(cp*1000.0)*k*R0*T/(6*pi*zeta*mu)*(OMEGA_tilde-OMEGA_tilde0)*1e18; // 1e18 is conversion to mW/m-K (not described in paper) return (lambda0+lambdar+lambdac)/1e6; }
Entity::Props SpacePlane::props()const{return Props();}
EXPORT_CODE double CONVENTION PropsS(const char *Output, const char* Name1, double Prop1, const char* Name2, double Prop2, const char * Ref){ return Props(Output, Name1[0], Prop1, Name2[0], Prop2, Ref); }
double Props(char Output,char Name1, double Prop1, char Name2, double Prop2, char* Ref) { // Go to the std::string, std::string version return Props(std::string(1,Output),Name1,Prop1,Name2,Prop2,std::string(Ref)); }
void CoolPropSolver::setFluidConstants(){ _fluidConstants.pc = Props(substanceName,"pcrit"); _fluidConstants.Tc = Props(substanceName,"Tcrit"); _fluidConstants.MM = Props(substanceName,"molemass"); _fluidConstants.dc = Props(substanceName,"rhocrit"); }
EXPORT_CODE double CONVENTION PropsS(const char *Output, const char* Name1, double Prop1, const char* Name2, double Prop2, const char * Ref){ double val = Props(Output,Name1[0],Prop1,Name2[0],Prop2,Ref); reset_fpu(); return val; }