Python代码

class pH2pH:
    def __init__(self,pH,pH_1,Temp,TDS):
        self.pH=pH
        self.pH_1=pH_1
        self.T=Temp + 273.15
        self.E=(60954/(self.T+116))-68.937
        self.A=1825000*((self.E*self.T)**-1.5)
        self.I=(2.5*10**-5)*TDS
        self.lgfm=-self.A*(((self.I**1/2)/(1+self.I**1/2))-0.2*self.I)
        self.lgfd=4*self.lgfm
        self.Kw=6.0486-(4471.33/self.T)-(0.017053*self.T)-2*self.lgfm
  
    def raisepH(self):
        if self.pH<7:
            a1 = (10**-self.pH) /0.83
        else:
            a1 = (10**-(-self.Kw-self.pH)) /0.76
        if self.pH_1<7:
            a2 = (10**-self.pH_1) /0.83
        else:
            a2 = (10**-(-self.Kw-self.pH_1)) /0.76
        if self.pH<7:
            if self.pH_1<7:
                a = a1-a2
            else:
                a = a1+a2
        else:
            a = a2-a1
        return (a)
 
    def lowerpH(self):
        if self.pH<7:
            a1 = (10**-self.pH) /0.83
        else:
            a1 = (10**-(-self.Kw-self.pH)) /0.76
        if self.pH_1<7:
            a2 = (10**-self.pH_1) /0.83
        else:
            a2 = (10**-(-self.Kw-self.pH_1)) /0.76
        if self.pH<7:
            a = a2-a1
        else:
            if self.pH_1>7:
                a = a1-a2
            else:
                a = a1+a2
        return (a)
 
def re_Cr6byH2O2(pH1,pH2,Cr6,Temp,TDS):
    pH = pH1
    ne = Cr6/51.9961/1000*3
    required_nH = ne*4/3
    nH2O2 = ne/2
    providenH_H2O2 = 0
    controlpH_H2O2 = 1.8
    a = pH2pH(pH, controlpH_H2O2,Temp,TDS).raisepH()+providenH_H2O2-required_nH
    if a > 0:
        nH_H2O2 = 0
        endpH_H2O2 = -math.log10(a*0.83)
    else:
        nH_H2O2 = -a
        endpH_H2O2 = controlpH_H2O2
    scalingpH_H2O2 = pH2
    nOH_H2O2 = pH2pH(endpH_H2O2, scalingpH_H2O2,Temp,TDS).raisepH()
    return(nH_H2O2, nOH_H2O2, nH2O2,0)
 
def re_Cr6byHSO3(pH1,pH2,Cr6,Temp,TDS):
    pH = pH1
    ne = Cr6/51.9961/1000*3
    required_nH = ne*4/3
    nHSO3 = ne/2
    providenH_HSO3 = ne/2
    controlpH_HSO3 = 2.5
    b = pH2pH(pH, controlpH_HSO3,Temp,TDS).raisepH()+providenH_HSO3-required_nH
    if b > 0:
        nH_HSO3 = 0
        endpH_HSO3 = -math.log10(b*0.83)
    else:
        nH_HSO3 = -b
        endpH_HSO3 = controlpH_HSO3
    scalingpH_HSO3 = pH2
    nOH_HSO3 = pH2pH(endpH_HSO3, scalingpH_HSO3,Temp,TDS).raisepH()
    return(nH_HSO3, nOH_HSO3, nHSO3,0)
 
def re_Cr6byN2H4(pH1,pH2,Cr6,Temp,TDS):
    pH = pH1
    ne = Cr6/51.9961/1000*3
    required_nH = ne*4/3                
    nN2H4 = ne/4
    providenH_N2H4 = 0
    controlpH_N2H4 = 2
    c = pH2pH(pH, controlpH_N2H4,Temp,TDS).raisepH()+providenH_N2H4-required_nH
    if c > 0:
        nH_N2H4 = 0
        endpH_N2H4 = -math.log10(c*0.83)
    else:
        nH_N2H4 = -c
        endpH_N2H4 = controlpH_N2H4
    scalingpH_N2H4 = pH2
    nOH__N2H4 = pH2pH(endpH_N2H4 , scalingpH_N2H4,Temp,TDS).raisepH()
    return (nH_N2H4, nOH__N2H4, nN2H4,0)
 
def re_Cr6byFeII(pH1,pH2,Cr6,Temp,TDS):
    pH = pH1
    ne = Cr6/51.9961/1000*3
    required_nH = ne*4/3        
    nFeII = ne
    providenH_FeII = -ne/2
    controlpH_FeII = 11
    d = pH2pH(pH, controlpH_FeII,Temp,TDS).raisepH()+providenH_FeII-required_nH
    if d > 0:
        nH_FeII = 0
        endpH_FeII = -math.log10(d*0.83)
    else:
        nH_FeII = -d
        endpH_FeII = controlpH_FeII
    scalingpH_FeII = pH2
    if scalingpH_FeII-endpH_FeII>0:
        nOH__FeII = pH2pH(endpH_FeII , scalingpH_FeII,Temp,TDS).raisepH()+nFeII*3
    else:
        nOH__FeII = -pH2pH(endpH_FeII , scalingpH_FeII,Temp,TDS).lowerpH()+nFeII*3
    return (nH_FeII, nOH__FeII, nFeII,nFeII*(55.845+17.0064*3))        
  
def s_CrOH(TCr):
    nTCr=TCr/1000/51.9961
    return(nTCr*(51.9961+17.0064*3),nTCr*3)
 
def s_CuOH(Cu):
    nCu = Cu/1000/63.546
    return(nCu*(63.546+17.0064*2),nCu*2)    
 
def s_NiOH(Ni):
    nNi = Ni/1000/58.6934
    return(nNi*(58.6934+17.0064*2),nNi*2)
 
def s_ZnOH(Zn):
    nZn = Zn/1000/65.38
    return(nZn*(65.38+17.0064*2),nZn*2)
 
def s_FeOH(Fe):
    nFe = Fe/1000/55.845
    return(nFe*(55.845+17.0064*3),nFe*3)
 
def s_CaSO4(Ca,SO4):
    nCa = Ca/40.078/1000
    nSO4 = SO4/96.0626/1000
    ksp_CaSO4 = 1.5e-4
    st = nCa * nSO4 *0.8*0.8*0.5*0.5
    CaSO4 = 0
    if st - ksp_CaSO4 > 0:
        x = symbols('x')   # 定义符号x
        equations = [(nCa-x)*(nSO4-x)*0.8*0.8*0.5*0.5 - ksp_CaSO4]  # 将方程添加到列表中
        result = solve(equations, x)  # 解方程
        a = float(result[0][0])
        b = float(result[1][0])
        c = min(a,b)
        Ca = (nCa - c) * 40.078*1000
        SO4 = (nSO4 - c) * 96.0626*1000
        CaSO4 = c*(40.078+96.0626+36) #这里计算二水硫酸钙
    return (CaSO4,Ca,SO4)
 
def CostofCr6(price_H2O2,price_HSO3,price_N2H4,price_FeII,price_CaOH,percent_CaOH,price_NaOH,percent_NaOH,price_HCl,percent_HCl,pH1,pH2,TCr,Cr6,Cu,Ni,Zn,Fe,SO4,TDS,Temp):
    H2O2 = re_Cr6byH2O2(pH1, pH2, Cr6, Temp, TDS)
    HSO3 = re_Cr6byHSO3(pH1, pH2, Cr6, Temp, TDS)
    N2H4 = re_Cr6byN2H4(pH1, pH2, Cr6, Temp, TDS)
    FeII = re_Cr6byFeII(pH1,pH2,Cr6,Temp,TDS)
    CrOH = s_CrOH(TCr)
    CuOH = s_CuOH(Cu)
    NiOH = s_NiOH(Ni)
    ZnOH = s_ZnOH(Zn)
    FeOH = s_FeOH(Fe)
    #计算药剂摩尔价格
    price_nH2O2 = 34/0.275*price_H2O2
    price_nN2H4 = 32/0.90*price_N2H4
    price_nHSO3 = 190/2/0.95*price_HSO3
    price_nFeII = 56/0.20*price_FeII
    price_nCaOH = 74/2*percent_CaOH*price_CaOH
    price_nHCl = 36.5/percent_HCl*price_HCl
    price_nNaOH = 40*percent_NaOH*price_NaOH
    propCr, propCu, propNi, propZn, propFe = [0.99,0.95,0.9,0.99,0.99]#计算重金属阳离子沉淀比例
    s_nCaOH = 74/2/percent_CaOH*(1-percent_CaOH) #每1/2摩尔石灰沉淀量
  
    #计算重金属阳离子沉淀量以及沉淀所需的OH的量
    s_OH =sum([CrOH[0]*propCr,CuOH[0]*propCu,NiOH[0]*propNi,ZnOH[0]*propZn,FeOH[0]*propFe])
    nOH_OH =sum([CrOH[1]*propCr,CuOH[1]*propCu,NiOH[1]*propNi,ZnOH[1]*propZn,FeOH[1]*propFe])
  
    # 计算双氧水成本及污泥量
    nOH_h2o2 = H2O2[1]+nOH_OH
    cost_h2o2_ca = H2O2[2]*price_nH2O2 + nOH_h2o2*price_nCaOH + H2O2[0]*price_nHCl
    cost_h2o2_na = H2O2[2]*price_nH2O2 + nOH_h2o2*price_nNaOH + H2O2[0]*price_nHCl
    Ca_h2o2 = nOH_h2o2/2*40*1000
    CaSO4_h2o2 = s_CaSO4(Ca_h2o2,SO4)
    sludge_h2o2_ca = (s_OH + CaSO4_h2o2[0] + nOH_h2o2*s_nCaOH)*2.5
    sludge_h2o2_na = s_OH*2.5    
  
    # 计算焦亚硫酸钠成本及污泥量
    nOH_hso3 = HSO3[1]+nOH_OH
    cost_hso3_ca = HSO3[2]*price_nHSO3 + nOH_hso3*price_nCaOH + HSO3[0]*price_nHCl
    cost_hso3_na = HSO3[2]*price_nHSO3 + nOH_hso3*price_nNaOH + HSO3[0]*price_nHCl
    Ca_hso3 = nOH_hso3/2*40*1000
    SO4_hso3 = SO4 + HSO3[2]*96.0626*1000
    CaSO4_hso3 = s_CaSO4(Ca_hso3,SO4_hso3)
    sludge_hso3_ca = (s_OH + CaSO4_hso3[0] + nOH_hso3*s_nCaOH)*2.5
    sludge_hso3_na = s_OH*2.5
 
    # 计算水合肼成本及污泥量
    nOH_n2h4 = N2H4[1]+nOH_OH
    cost_n2h4_ca = N2H4[2]*price_nN2H4 + nOH_n2h4*price_nCaOH + N2H4[0]*price_nHCl
    cost_n2h4_na = N2H4[2]*price_nN2H4 + nOH_n2h4*price_nNaOH + N2H4[0]*price_nHCl
    Ca_n2h4 = nOH_n2h4/2*40*1000
    CaSO4_n2h4 = s_CaSO4(Ca_n2h4,SO4)
    sludge_n2h4_ca = (s_OH + CaSO4_n2h4[0] + nOH_n2h4*s_nCaOH)*2.5
    sludge_n2h4_na = s_OH*2.5    
    
    # 计算氯化亚铁成本及污泥量
    nOH_feii = FeII[1]+ nOH_OH
    cost_feii_ca = FeII[2]*price_nFeII + nOH_feii*price_nCaOH + FeII[0]*price_nHCl
    cost_feii_na = FeII[2]*price_nFeII + nOH_feii*price_nNaOH + FeII[0]*price_nHCl
    Ca_feii = nOH_feii/2*40*1000
    CaSO4_feii = s_CaSO4(Ca_feii,SO4)
    sludge_feii_ca = (s_OH + CaSO4_feii[0] + nOH_feii*s_nCaOH+FeII[3])*2.5
    sludge_feii_na = (s_OH+FeII[3] )*2.5    
    return(round(cost_h2o2_ca, 2), round(cost_h2o2_na, 2), round(sludge_h2o2_ca, 2), round(sludge_h2o2_na, 2),
           round(cost_hso3_ca, 2), round(cost_hso3_na, 2), round(sludge_hso3_ca, 2), round(sludge_hso3_na, 2),
           round(cost_n2h4_ca, 2), round(cost_n2h4_na, 2), round(sludge_n2h4_ca, 2), round(sludge_n2h4_na, 2),
           round(cost_feii_ca, 2), round(cost_feii_na, 2), round(sludge_feii_ca, 2), round(sludge_feii_na,2))

函数与代码的方法和用途

函数

  • pH2pH:计算两种 pH 值之间的 pH 变化。
  • re_Cr6byH2O2:计算使用双氧水还原六价铬所需的试剂量和 pH 值变化。
  • re_Cr6byHSO3:计算使用焦亚硫酸钠还原六价铬所需的试剂量和 pH 值变化。
  • re_Cr6byN2H4:计算使用水合肼还原六价铬所需的试剂量和 pH 值变化。
  • re_Cr6byFeII:计算使用氯化亚铁还原六价铬所需的试剂量和 pH 值变化。
  • s_CrOH:计算氢氧化铬的沉淀量和所需的氢氧化物量。
  • s_CuOH:计算氢氧化铜的沉淀量和所需的氢氧化物量。
  • s_NiOH:计算氢氧化镍的沉淀量和所需的氢氧化物量。
  • s_ZnOH:计算氢氧化锌的沉淀量和所需的氢氧化物量。
  • s_FeOH:计算氢氧化铁的沉淀量和所需的氢氧化物量。
  • s_CaSO4:计算硫酸钙的沉淀量和所需的钙和硫酸根离子量。
  • CostofCr6:计算使用不同试剂还原六价铬的成本和污泥量。

代码

  • 代码首先定义了一些变量,包括 pH 值、六价铬浓度、重金属离子浓度、硫酸根离子浓度、总溶解固体浓度和温度。
  • 然后,代码调用 CostofCr6 函数来计算使用不同试剂还原六价铬的成本和污泥量。
  • 最后,代码打印出计算结果。

方法和用途

  • 该函数和代码可以用来计算使用不同试剂还原六价铬的成本和污泥量。
  • 该函数和代码可以帮助用户选择最合适的还原剂来处理六价铬污染。
  • 该函数和代码还可以用来评估不同还原剂的成本和环境影响。

示例

假设我们想计算使用双氧水、焦亚硫酸钠、水合肼和氯化亚铁还原六价铬的成本和污泥量。我们可以使用以下代码:

pH1 = 2
pH2 = 7
TCr = 1000
Cr6 = 50
Cu = 100
Ni = 50
Zn = 100
Fe = 50
SO4 = 1000
TDS = 1000
Temp = 25
  
cost_h2o2_ca, cost_h2o2_na, sludge_h2o2_ca, sludge_h2o2_na, \
cost_hso3_ca, cost_hso3_na, sludge_hso3_ca, sludge_hso3_na, \
cost_n2h4_ca, cost_n2h4_na, sludge_n2h4_ca, sludge_n2h4_na, \
cost_feii_ca, cost_feii_na, sludge_feii_ca, sludge_feii_na = \
CostofCr6(price_H2O2, price_HSO3, price_N2H4, price_FeII, price_CaOH, percent_CaOH, price_NaOH, percent_NaOH, price_HCl, percent_HCl, pH1, pH2, TCr, Cr6, Cu, Ni, Zn, Fe, SO4, TDS, Temp)
 
print("双氧水还原六价铬的成本和污泥量:")
print("成本(钙基):", cost_h2o2_ca)
print("成本(钠基):", cost_h2o2_na)
print("污泥量(钙基):", sludge_h2o2_ca)
print("污泥量(钠基):", sludge_h2o2_na)
  
print("焦亚硫酸钠还原六价铬的成本和污泥量:")
print("成本(钙基):", cost_hso3_ca)
print("成本(钠基):", cost_hso3_na)
print("污泥量(钙基):", sludge_hso3_ca)
print("污泥量(钠基):", sludge_hso3_na)
  
print("水合肼还原六价铬的成本和污泥量:")
print("成本(钙基):", cost_n2h4_ca)
print("成本(钠基):", cost_n2h4_na)
print("污泥量(钙基):", sludge_n2h4_ca)
print("污泥量(钠基):", sludge_n2h4_na)
 
print("氯化亚铁还原六价铬的成本和污泥量:")
print("成本(钙基):", cost_feii_ca)
print("成本(钠基):", cost_feii_na)
print("污泥量(钙基):", sludge_feii_ca)
print("污泥量(钠基):", sludge_feii_na)

或者使用应用CalcCr6Process,使用页面如下: Pasted image 20240126163423