def main(): if len(sys.argv) != 2: print("Usage: python extract_r32_vle.py [iteration number]") exit(1) else: iternum = sys.argv[1] R32 = R32Constants() run_path = "/scratch365/rdefever/hfcs-fffit/hfcs-fffit/runs/" itername = "r32-vle-iter" + str(iternum) project_path = run_path + itername csv_name = "csv/" + itername + "-results.csv" property_names = [ "liq_density", "vap_density", "Hvap", "Pvap", "liq_enthalpy", "vap_enthalpy", ] project = signac.get_project(project_path) save_signac_results(project, R32.param_names, property_names, csv_name)
import sys import numpy as np import pandas as pd import matplotlib import matplotlib.pyplot as plt import seaborn sys.path.append("../../") from scipy.stats import linregress from utils.r32 import R32Constants from matplotlib.ticker import MultipleLocator, AutoMinorLocator R32 = R32Constants() matplotlib.rc("font", family="sans-serif") matplotlib.rc("font", serif="Arial") df = pd.read_csv("../../csv/r32-pareto.csv", index_col=0).loc[23] df_gaff = pd.read_csv("../../csv/r32-gaff.csv", index_col=0) df_raabe = pd.read_csv("../../csv/r32-raabe.csv", index_col=0) def main(): # Plot VLE envelopes clrs = seaborn.color_palette('bright', n_colors=1) fig, ax = plt.subplots(figsize=(8, 6)) temps = list(R32.expt_liq_density.keys()) final_temp = temps[-1]
def init_project(): # Initialize project project = signac.init_project("r32-vle-iter3") # Define temps temps = [241.0 * u.K, 261.0 * u.K, 281.0 * u.K, 301.0 * u.K, 321.0 * u.K] # Run at vapor pressure press = { 241: (2.5159 * u.bar), 261: (5.4327 * u.bar), 281: (10.426 * u.bar), 301: (18.295 * u.bar), 321: (29.989 * u.bar), } n_vap = 200 n_liq = 800 # Experimental density R32 = R32Constants() # Load samples lh_samples = np.genfromtxt( "../../analysis/csv/r32-vle-iter3-params.csv", delimiter=",", skip_header=1, )[:, 1:] # Define bounds on sigma/epsilon bounds_sigma = np.asarray( [[3.0, 4.0], [2.5, 3.5], [1.7, 2.7],] ) # C # F # H bounds_epsilon = np.asarray( [[20.0, 60.0], [15.0, 40.0], [2.0, 10.0],] # C # F # H ) bounds = np.vstack((bounds_sigma, bounds_epsilon)) # Convert scaled latin hypercube samples to physical values scaled_params = values_scaled_to_real(lh_samples, bounds) for temp in temps: for sample in scaled_params: # Unpack the sample ( sigma_C, sigma_F, sigma_H, epsilon_C, epsilon_F, epsilon_H, ) = sample # Define the state point state_point = { "T": float(temp.in_units(u.K).value), "P": float( press[int(temp.in_units(u.K).value)].in_units(u.bar).value ), "sigma_C": float((sigma_C * u.Angstrom).in_units(u.nm).value), "sigma_F": float((sigma_F * u.Angstrom).in_units(u.nm).value), "sigma_H": float((sigma_H * u.Angstrom).in_units(u.nm).value), "epsilon_C": float( (epsilon_C * u.K * u.kb).in_units("kJ/mol").value ), "epsilon_F": float( (epsilon_F * u.K * u.kb).in_units("kJ/mol").value ), "epsilon_H": float( (epsilon_H * u.K * u.kb).in_units("kJ/mol").value ), "N_vap": n_vap, "N_liq": n_liq, "expt_liq_density": R32.expt_liq_density[ int(temp.in_units(u.K).value) ], "nsteps_liqeq": 5000, "nsteps_eq": 10000, "nsteps_prod": 100000, } job = project.open_job(state_point) job.init()