int freesteam_bounds_pv(double p, double v, int verbose){ #define BOUND_WARN(MSG) \ if(verbose){\ fprintf(stderr,"%s (%s:%d): WARNING " MSG " (p = %g MPa, v = %g m3/kg)\n"\ ,__func__,__FILE__,__LINE__,p/1e6,v);\ } if(p <= 0){ BOUND_WARN("p <= 0"); return 1; } if(p > IAPWS97_PMAX){ BOUND_WARN("p > PMAX"); return 2; } double vmin = freesteam_region1_v_pT(p,IAPWS97_TMIN); if(v < vmin){ BOUND_WARN("v < v_region1(p,T_min)"); return 3; } double vmax = freesteam_region2_v_pT(p,REGION2_TMAX); if(v>vmax){ BOUND_WARN("v > v_region2(p,T_max)"); return 4; } return 0; #undef BOUND_WARN }
int freesteam_bounds_Tx(double T, double x, int verbose) { #define BOUND_WARN(MSG) \ if(verbose){\ fprintf(stderr,"%s (%s:%d): WARNING " MSG " (T = %g K, x = %g)\n"\ ,__func__,__FILE__,__LINE__,T,x);\ } if(T <= IAPWS97_TMIN) { BOUND_WARN("T <= TMIN"); return 1; } if(T > IAPWS97_TCRIT) { BOUND_WARN("T > TCRIT"); return 2; } if(x < 0) { BOUND_WARN("x < 0"); return 3; } else if(x > 1) { BOUND_WARN("x > 1"); return 4; } return 0; #undef BOUND_WARN }