"""
Created on Wed Jan 13 14:20:38 2021
@author: xujifa
"""
from sympy import *
import numpy as np
''' 待求解方程:61.08x/(61.08x+18.02*(1-x-0.15*x)) = 0.3
61.08x/(61.08x+18.02*(1-x-0.15*x))-0.3 = 0
其中0.3表示mea的质量分数为0.3
0.15*x中的0.15表示co2的负载为0.15mol/mol,y/x = 0.15
x表示mea的摩尔分数
61.08为mea的分子量
18.02为h2o的分子量
44.009 为co2的分子量
'''
print('1 → MEA质量浓度为变量\n2 → co2的负载为变量\n3 → 负荷和浓度为一个数,无变量')
dec = eval(input('请选择变量(输入对应数字):'))
if dec == 1:
q = eval(input('请输入co2的负载'))
mf1 = eval(input('请输入MEA质量分数的 最小值'))
mf2 = eval(input('请输入MEA质量分数的 最大值'))
mf3 = eval(input('请输入MEA质量分数的 间距'))
mf = np.arange(mf1,mf2+mf3,mf3)
a = np.zeros([len(mf),3])
for li in range(len(mf)):
x = symbols('x')
print('MEA的质量分数为:',mf[li])
print('co2的负荷为:',q)
z = solve(61.08*x/(61.08*x+18.02*(1-x-q*x)) - mf[li], x)
mmea = round(z[0],4)
mco2 = round(mmea*q,4)
mh2o = 1-mmea-mco2
a[li,0] = mmea
a[li,1] = mh2o
a[li,2] = mco2
print('共------%s------个工况'%(len(mf)))
print('计算的摩尔分数如下:')
print('1 → mea,2 → H2O,3 → CO2')
print(a)
elif dec ==2:
q = eval(input('请输入MEA的质量分数'))
mf1 = eval(input('请输入co2负载的 最小值'))
mf2 = eval(input('请输入co2负载的 最大值'))
mf3 = eval(input('请输入co2负载的 间距'))
mf = np.arange(mf1,mf2+mf3,mf3)
a = np.zeros([len(mf),3])
for li in range(len(mf)):
print('MEA的质量分数为:',q)
print('co2的负荷为:',mf[li])
x = symbols('x')
z = solve(61.08*x/(61.08*x+18.02*(1-x-mf[li]*x)) - q, x)
mmea = round(z[0],4)
mco2 = round(mmea*mf[li],4)
mh2o = round(1-mmea-mco2,4)
a[li,0] = mmea
a[li,1] = mh2o
a[li,2] = mco2
print('共------%s------个工况'%(len(mf)))
print('计算的摩尔分数如下:')
print('1 → mea,2 → H2O,3 → CO2')
print(a)
else:
q = eval(input('请输入co2的负载'))
mf = eval(input('请输入MEA的质量浓度'))
x = symbols('x')
z = solve(61.08*x/(61.08*x+18.02*(1-x-q*x)) - mf, x)
'''保留4位小数'''
mea = round(z[0],4)
co2 = round(mea*q,4)
h2o = 1-mea-co2
print('mea的摩尔分数为:',mea)
print('co2的摩尔分数为:',co2)
print('h2o的摩尔分数为:',h2o)