Example #1
0
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
}
Example #2
0
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
}