二氧化碳捕获和电化学转化(Python代码实现)

简介: 二氧化碳捕获和电化学转化(Python代码实现)

💥1 概述

二氧化碳(二氧化碳需要大幅减少向大气中的排放,以遏制气候变化的各种不良影响。一种方法是从化石燃料发电厂转向太阳能、风能和水等可再生能源,这还有一个额外的好处,那就是我们减少了对全球化石燃料供应减少的依赖。然而,由于其间歇性,可再生能源可以提供的能源比例将限制在30%,除非有大规模储能的方法可用。或者,二氧化碳可以从发电厂等点源捕获,然后转化为具有经济价值的化学品[1,2,3]。潜在的产物包括甲酸[4••,5],甲醇,CO[4••,6,7•,8,9,10,11,12,13••]和乙烯[4••,14•],它们可以使用均相催化[15,16],多相催化[17••,18],光催化[19],光还原[19]或电化学还原等工艺形成 - 这是本综述的主题。除了减少温室气体排放外,一氧化碳2转化过程将减少我们对化学合成化石燃料的依赖。然而,在这一点上,尚不清楚这些策略中哪些在技术上可行,并且具有经济和实践意义[1]。电化学二氧化碳减少的好处是,它可能是一种利用间歇性可再生能源的多余能量代替大规模储能的方法。


📚2 运行结果

2.1 算例1

2.2 算例2

2.3 算例3

2.4 算例4

部分代码:

#Assuming the amine solution with salts has the same conductivity to 1 M KOH aq solution.
plt.rcParams['font.family']='Arial' #set font to be Arial
plt.rcParams['font.size']=8 #set font size to be 8
fig=plt.gcf()
fig.set_size_inches((2.33*4/3, 2.33)) #set figure size
ax= fig.add_subplot(111)
current=np.arange(-4, 305, 5) #define current densities from 1 to 300 mA cm-2
Eoer, Ememb, Eanolyte, Ecatholyte=estEwithsalts(current) #calculate the potential losses
plt.plot(current, Eoer, 'k', lw=1) #plot the anode potential loss
plt.plot(current, Ecatholyte+Eoer, 'k', lw=1) #plot ohmic loss from capture media
plt.plot(current, Eanolyte+Ecatholyte+Eoer, 'k', lw=1) #plot ohmic loss from anolyte
plt.plot(current, Ecatholyte+Eanolyte+Ememb+Eoer, 'k', lw=1) #plot ohmic loss from membrane
#Fill different colors to highlight the potential contributions
plt.fill_between(current, Eoer, 0, facecolor='darkcyan')
plt.fill_between(current, Eoer+Ecatholyte, Eoer, facecolor='indianred')
plt.fill_between(current, Eoer+Ecatholyte, Eoer+Ecatholyte, facecolor='r')
plt.fill_between(current, Eanolyte+Ecatholyte+Eoer, Eoer+Ecatholyte, facecolor='lightsteelblue')
plt.fill_between(current, Ecatholyte+Eanolyte+Ememb+Eoer, Eanolyte+Ecatholyte+Eoer, facecolor='firebrick')
plt.xlim(0,300) #set x-axis limits
plt.ylim(0,5) #set y-axis limits
plt.xlabel('Current densities (mA cm$^{-2}$)') #set xlabel
plt.ylabel('Potential (V)') #set ylabel
plt.show()
#fig.savefig('Figure/potentials breakup with inorganic salts.eps', bbox_inches='tight', pad_inches=0, transparent=True)
f=pd.read_excel('literature data.xlsx', sheet_name='Combine') #Read literature data of integrated electrolyzer in the excel spreadsheet
j_combine=f['Current densities'] #Read all the reported current densities of integrated electrolyzer, mA cm-2
fe_combine=f['FE(%) of CO']/100 #Read all the reported Faradaic efficiencies of the integrated electrolyzer
Ec_combine=f['Cathode Potential (V)'] #Read reported cathode potential, V
Eother_combine=estEother(j_combine) #Calculate the total potential except cathode potential from current densities
E_combine=-Ec_combine+Eother_combine #Calculate the cell potential
Q_combine=np.dot(E_combine, 2*96485)/(fe_combine*1000) #Calculate the energy cost of the integrated electrolyzers
ff=pd.read_excel('literature data.xlsx', sheet_name='Separate') #Read literature data of gas-fed electrolyzer in the excel spreadsheet
z = 2 #Number of charge transfered to produce one molecule of product
F = 96485 # A mol-1 Faraday constant
j_s=ff['Current densities'] #Read all the reported current densities of gas-fed electrolyzer, mA cm-2
E_s=ff['Calculated Cell Voltage (V) '] #Read all the reported cell potentials of the gas-fed electrolyzers
fe_s=ff['FE(%) of CO']/100 #Read all the reported Faradaic efficiencies of the gas-fed electrolyzer
Q_s=np.dot(E_s, z*F)/(fe_s*1000) #Calculate the energy cost of the gas-fed electrolyzers
FE=np.arange(0.01,1.01,0.01) # Set a range of CO FE
E=np.arange(1.23+0.104,8,(8-1.23-0.104)/100) #Set a range of cell potentials
FEFE, EE = np.meshgrid(FE, E) #build a mesh grid of CO FE and cell potentials
Q=EE*z*F/FEFE/1000 #Calculate the energy cost of the electrolyzer using the mesh grid, kJ/molCO2 converted.
plt.rcParams['font.family']='Arial' #Set font to be Arial
plt.rcParams['font.size']=8 #Set fontsize to be 8
fig=plt.gcf()
fig.set_size_inches((2.33*4/3*1.5, 2.33*1.5)) #Set Figure size
ax= fig.add_subplot(111)
plt.plot(FE*100, Q.T[:,0],'k', lw=1) #Plot the lower limit
plt.plot(FE*100, Q.T[:,-1],'k',lw=1) #Plot the upper limit
#Highlight the region the electrolyzer will fall in.
plt.fill_between(FE*100, Q.T[:, 0], Q.T[:,-1], facecolor='lightsteelblue')
#Plot the energy performance of the integrated electrolyzers
plt.scatter(fe_combine[:-1]*100, Q_combine[:-1],
         s=j_combine[:-1].values, alpha=0.5,  facecolor='white', edgecolors='darkred')
#Plot the energy performance of the gas-fed electrolyzers
plt.scatter(fe_s*100, Q_s, s=j_s.values,  facecolor='w', alpha=0.5, edgecolors='darkcyan')
plt.xlim(0,100) #Set xaxis limits
plt.xlabel('Faradaic efficiency (%)') #Set xlabel
plt.ylabel('Energy required per CO$_2$ electrochemically converted \n (kJ mol$^{-1}$)') #Set ylabel
plt.yscale('log') #Set y-axis in log scale.
plt.show()
#fig.savefig('Figure/co2 electrolysis comparison.png', bbox_inches='tight', dpi=1200, pad_inches=0, transparent=True) #Save the figure.


🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]葛建邦. LiCl基熔盐体系中CO_2的捕获和电化学研究[D].北京科技大学,2017.


[2]Energy comparison of sequential and integrated CO2 capture and electrochemical conversion The contributing authors include Mengran Li, Erdem Irtem, Hugo Pieter Iglesias van Montfort, Maryam Abdinejad, Thomas Burdyny*

🌈4 Python代码实现

相关文章
|
1月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
37 6
|
2月前
|
存储 缓存 测试技术
Python中的装饰器:功能增强与代码复用的利器
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者以简洁优雅的方式增强函数或方法的功能。本文将深入探讨装饰器的定义、工作原理、应用场景以及如何自定义装饰器。通过实例演示,我们将展示装饰器如何在不修改原有代码的基础上添加新的行为,从而提高代码的可读性、可维护性和复用性。此外,我们还将讨论装饰器在实际应用中的一些最佳实践和潜在陷阱。
|
5天前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
50 33
|
6天前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
31 10
|
2月前
|
人工智能 数据挖掘 Python
Python编程基础:从零开始的代码旅程
【10月更文挑战第41天】在这篇文章中,我们将一起探索Python编程的世界。无论你是编程新手还是希望复习基础知识,本文都将是你的理想之选。我们将从最基础的语法讲起,逐步深入到更复杂的主题。文章将通过实例和练习,让你在实践中学习和理解Python编程。让我们一起开启这段代码之旅吧!
|
26天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
64 8
|
1月前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
52 11
|
1月前
|
测试技术 Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界中,装饰器是那些能够为我们的代码增添魔力的小精灵。它们不仅让代码看起来更加优雅,还能在不改变原有函数定义的情况下,增加额外的功能。本文将通过生动的例子和易于理解的语言,带你领略装饰器的奥秘,从基础概念到实际应用,一起开启Python装饰器的奇妙旅程。
41 11
|
30天前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
1月前
|
程序员 测试技术 数据安全/隐私保护
深入理解Python装饰器:提升代码重用与可读性
本文旨在为中高级Python开发者提供一份关于装饰器的深度解析。通过探讨装饰器的基本原理、类型以及在实际项目中的应用案例,帮助读者更好地理解并运用这一强大的语言特性。不同于常规摘要,本文将以一个实际的软件开发场景引入,逐步揭示装饰器如何优化代码结构,提高开发效率和代码质量。
48 6