Beispiel #1
0
//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));
}
Beispiel #2
0
//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));
}
Beispiel #3
0
//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));
}
Beispiel #4
0
//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));
}
Beispiel #5
0
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;
}