//RT: returns thermal conductivity for given pressure and temperature Foam::scalar Foam::tc_pT(scalar p, scalar T) { return freesteam_k(freesteam_set_pT(p,T)); }
//RT: returns viscosity for given pressure and temperature Foam::scalar Foam::mu_pT(scalar p, scalar T) { return freesteam_mu(freesteam_set_pT(p,T)); }
//CL: returns density for given pressure and temperature Foam::scalar Foam::rho_pT(scalar p,scalar T) { return 1/freesteam_v(freesteam_set_pT(p,T)); }
//CL: returns Cv (heat capacity @ contant volume) for given pressure and temperature Foam::scalar Foam::cv_pT(scalar p,scalar T) { return freesteam_cv(freesteam_set_pT(p,T)); }
int eval_state (TableData *data) { double var1, var2; int active_sol_class; int active_sol; /* read input without units conversion */ var1 = atof (gtk_entry_get_text (data->indep_var1_entry) ); var2 = atof (gtk_entry_get_text (data->indep_var2_entry) ); active_sol_class = gtk_combo_box_get_active (data->SolverClassCombo); active_sol = gtk_combo_box_get_active (data->IndVariablesCombo); /* single phase state */ /**********************/ if( active_sol_class == SINGLE_PHASE_SOLVER ) { switch (active_sol) { case SOLVER_PT: if (1) data->S = freesteam_set_pT (var1*1e+5, var2+273.15); else return DOMAIN_ERROR; break; case SOLVER_PH: if (!freesteam_bounds_ph (var1*1e+5, var2*1e+3, VERBOSE)) { data->S = freesteam_set_ph (var1 * 1e+5, var2 * 1e+3); if (data->S.region == REGION_4) { var1 = freesteam_region4_Tsat_p (var1 * 1e+5); /* T in K */ data->SLiq = freesteam_set_Tx (var1, 0.0); data->SVap = freesteam_set_Tx (var1, 1.0); data->SMix = data->S; } } else return DOMAIN_ERROR; break; case SOLVER_PS: if (!freesteam_bounds_ps (var1*1e+5, var2*1e+3, VERBOSE)) { data->S = freesteam_set_ps (var1 * 1e+5, var2 * 1e+3); } else return DOMAIN_ERROR; break; case SOLVER_PU: data->S = freesteam_set_pu (var1 * 1e+5, var2 * 1e+3); break; case SOLVER_PV: if (freesteam_bounds_pv (var1 * 1e+5, var2, VERBOSE)) { data->S = freesteam_set_pv (var1 * 1e+5, var2); } else return DOMAIN_ERROR; break; case SOLVER_TS: if (!freesteam_bounds_Ts (var1+273.15, var2*1e+3, VERBOSE)) { data->S = freesteam_set_Ts( var1 + 273.15, var2 * 1e+3); } else return DOMAIN_ERROR; } /* switch */ } /* saturation state */ /********************/ else if (active_sol_class == SATURATION_SOLVER) { data->S.region = REGION_4; switch (active_sol) { case SAT_SOLVER_TX: if (!freesteam_bounds_Tx (var1 + 273.15, var2, 1)) { data->SLiq = freesteam_set_Tx (var1 + 273.15, 0.0); data->SVap = freesteam_set_Tx (var1 + 273.15, 1.0); data->SMix = freesteam_set_Tx (var1 + 273.15, var2); } else return DOMAIN_ERROR; break; case SAT_SOLVER_PX: if (1) { var1 = freesteam_region4_Tsat_p (var1 * 1e+5); /* T in K */ data->SLiq = freesteam_set_Tx (var1, 0.0); data->SVap = freesteam_set_Tx (var1, 1.0); data->SMix = freesteam_set_Tx (var1, var2); } else return DOMAIN_ERROR; break; } } /* solution found for new state */ switch (data->S.region) { case REGION_1: update_table_liststore( COL_LIQUID, 1, data, &data->S ); break; case REGION_2: update_table_liststore( COL_VAPOUR, 1, data, &data->S ); break; case REGION_3: update_table_liststore( COL_LIQUID, 1, data, &data->S ); break; case REGION_4: update_table_liststore (COL_VAPOUR, 0, data, &data->SVap); update_table_liststore (COL_LIQUID, 0, data, &data->SLiq); update_table_liststore (COL_MIXED , 0, data, &data->SMix); break; case REGION_5: update_table_liststore( COL_VAPOUR, 1, data, &data->S ); break; } return 0; }