def P_sat_rule1(block, i): if i in m.COMP_PARAFFIN: n_n0 = cal_cnumber(i) - e.nonhenry.n0_paraffin elif i in m.COMP_OLEFIN: n_n0 = cal_cnumber(i) - e.nonhenry.n0_olefin return block.P_sat_Y[i] == e.nonhenry.Y_inf_0 + block.P_sat_dY_inf*(n_n0) \ - block.P_sat_dY0*pe.exp(-e.nonhenry.beta*(n_n0)**e.nonhenry.gamma)
def V_L_nonHen_rule(block, i): if i in m.COMP_PARAFFIN: n_n0 = cal_cnumber(i) - e.V_L_nonhenry.n0_paraffin n_n0_ = cal_cnumber(i) + e.V_L_nonhenry.n0_paraffin elif i in m.COMP_OLEFIN: n_n0 = cal_cnumber(i) - e.V_L_nonhenry.n0_olefin n_n0_ = cal_cnumber(i) + e.V_L_nonhenry.n0_olefin return block.V_L[i] == e.V_L_nonhenry.Y_inf_0 + block.V_L_dY_inf*(n_n0) \ - block.V_L_dY0*pe.exp(-e.V_L_nonhenry.beta*(n_n0_)**e.V_L_nonhenry.gamma)
def trans_cnumber(dic): molefraction = {} for i in cnumber_range: molefraction[i] = [] for i in m.COMP_ORG: molefraction[cal_cnumber(i)].append(np.array(dic[i])) for i in cnumber_range: molefraction[i] = np.sum(molefraction[i], 0) tmp = [] for i in cnumber_range: tmp.append(molefraction[i]) return tmp
def trans_cnumber(dic): molefraction = {} for i in range(1, 57): molefraction[i] = [] for i in m.COMP_ORG: molefraction[cal_cnumber(i)].append(np.array(dic[i])) for i in range(1, 57): molefraction[i] = np.sum(molefraction[i], 0) length = len(molefraction[1]) tmp = {} for j in range(length): tmp[j] = [] for i in range(1, 57): tmp[j].append(molefraction[i][j]) return tmp
def n_ave_rule(block): return block.n_ave_cal == sum(block.parent_block().x[i]*cal_cnumber(i) for i in m.COMP_PARAFFIN | \ m.COMP_OLEFIN)/(1-sum(block.parent_block().x[i] for i in m.COMP_INORG))
def gamma_rule(block, i): return pe.log(block.gamma[i])*(block.n_ave - cal_cnumber('C6H14')) == \ pe.log(block.gamma_ref)*(block.n_ave - cal_cnumber(i))
def trans_product_mole(dic): product = {} product['c1'] = [i for i in m.COMP_ORG if cal_cnumber(i) == 1] product['c2'] = [i for i in m.COMP_ORG if cal_cnumber(i) == 2] product['c3'] = [i for i in m.COMP_ORG if cal_cnumber(i) == 3] product['c4'] = [i for i in m.COMP_ORG if cal_cnumber(i) == 4] product['napha'] = [ i for i in m.COMP_ORG if cal_cnumber(i) >= 5 and cal_cnumber(i) <= 7 ] product['gasoline'] = [ i for i in m.COMP_ORG if cal_cnumber(i) >= 8 and cal_cnumber(i) <= 12 ] product['diesel'] = [ i for i in m.COMP_ORG if cal_cnumber(i) >= 13 and cal_cnumber(i) <= 18 ] product['heavy'] = [ i for i in m.COMP_ORG if cal_cnumber(i) >= 19 and cal_cnumber(i) <= 56 ] # compute mole flow rate dataset = {} for c in product.keys(): for i in product[c]: tmp = np.array([np.array(dic[i]) for i in product[c]]) dataset[c] = np.sum(tmp, 0) # compute mole % scaled dataset_scaled = copy.deepcopy(dataset) scale_factor = 1 / sum(dataset_scaled[i] for i in dataset_scaled.keys()) for i in dataset_scaled.keys(): dataset_scaled[i] = dataset_scaled[i] * scale_factor return {'unscaled': dataset, 'scaled': dataset_scaled}
m = pe.ConcreteModel() m.COMP_OLEFIN = pe.Set(initialize=['C{0}H{1}'.format(i,2*i) for i in range(2,21)],ordered=True) m.COMP_PARAFFIN = pe.Set(initialize=['C{0}H{1}'.format(i,2*i+2) for i in range(1,57)],ordered=True) m.COMP_INORG = pe.Set(initialize=['H2','CO','CO2','H2O'],ordered=True) m.COMP_ORG = m.COMP_OLEFIN | m.COMP_PARAFFIN m.COMP_TOTAL = m.COMP_INORG | m.COMP_OLEFIN | m.COMP_PARAFFIN m.COMP_FEED = pe.Set(initialize=['H2','CO','C30H62'],ordered=True) # m.COMP_FEED = m.COMP_INORG | m.COMP_OLEFIN | m.COMP_PARAFFIN ''' Sort components based on boiling point ''' product_boiling_C = [(i,Tb[i]) for i in m.COMP_ORG] def pick_comp(x): return x[1] m.COMP_SORTED_BP = pe.Set(initialize=[i for i,T in sorted(product_boiling_C,key =pick_comp )],ordered=True) ''' Product definition ''' m.PRODUCT = pe.Set(initialize=['naphtha','gasoline','diesel','heavy','intermediate'],ordered=True) m.PRODUCT_cnumber = pe.Set(m.PRODUCT) m.PRODUCT_cnumber['naphtha'] = [i for i in m.COMP_ORG if cal_cnumber(i) >= 5 and cal_cnumber(i) <= 7] m.PRODUCT_cnumber['gasoline'] = [i for i in m.COMP_ORG if cal_cnumber(i) >= 8 and cal_cnumber(i) <= 12] m.PRODUCT_cnumber['diesel'] = [i for i in m.COMP_ORG if cal_cnumber(i) >= 13 and cal_cnumber(i) <= 18] m.PRODUCT_cnumber['heavy'] = [i for i in m.COMP_ORG if cal_cnumber(i) >= 19 and cal_cnumber(i) <= 56] m.PRODUCT_cnumber['intermediate'] = [i for i in m.COMP_ORG if cal_cnumber(i) >= 1 and cal_cnumber(i) <= 56]