二氧化碳捕获和电化学转化(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天前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
12 6
基于Python访问Hive的pytest测试代码实现
|
4天前
|
设计模式 缓存 开发者
Python中的装饰器:简化代码,提高可读性
【9月更文挑战第10天】在Python编程的世界中,装饰器是一种强大的工具,它允许开发者在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和生动的例子,带你了解装饰器的概念、使用方法及其在实际开发中的应用价值。我们将一起探索如何利用装饰器来简化代码结构,提升代码的可读性和可维护性,让你的编程之旅更加顺畅。
|
2天前
|
存储 安全 数据安全/隐私保护
安全升级!Python AES加密实战,为你的代码加上一层神秘保护罩
【9月更文挑战第12天】在软件开发中,数据安全至关重要。本文将深入探讨如何使用Python中的AES加密技术保护代码免受非法访问和篡改。AES(高级加密标准)因其高效性和灵活性,已成为全球最广泛使用的对称加密算法之一。通过实战演练,我们将展示如何利用pycryptodome库实现AES加密,包括生成密钥、初始化向量(IV)、加密和解密文本数据等步骤。此外,还将介绍密钥管理和IV随机性等安全注意事项。通过本文的学习,你将掌握使用AES加密保护敏感数据的方法,为代码增添坚实的安全屏障。
18 8
|
10天前
|
Python
探索Python中的装饰器:简化代码,增强功能
【9月更文挑战第3天】在Python的世界里,装饰器是那些静悄悄站在角落、却能大大改变游戏规则的神奇工具。它们就像是给你的函数穿上一件隐形的超级英雄斗篷,让函数拥有了超乎寻常的能力。本文将带领你一探究竟,看看如何通过几行简单的代码,就能让你的函数变得更加智能和强大。
|
2天前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
15 4
|
4天前
|
开发者 Python
Python中的装饰器:简化你的代码
【9月更文挑战第9天】本文将介绍Python中的一种强大工具——装饰器。我们将从基础概念开始,逐步深入到装饰器的实际应用,包括函数装饰器和类装饰器。我们将通过实例来展示如何利用装饰器简化代码,提高代码的可读性和可维护性。最后,我们将探讨装饰器的一些高级用法,以及如何避免在使用时可能遇到的问题。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解和使用装饰器。
14 6
|
6天前
|
Python
揭秘!Python系统编程里那些让代码自由穿梭的神奇代码行
【9月更文挑战第9天】在Python的世界里,一些简洁的代码行却蕴含着强大的功能,如列表推导式让列表生成仅需一行代码:`squares = [x**2 for x in range(10)]`。`with`语句则能自动管理文件和网络连接的关闭,如`with open('example.txt', 'r') as file:`。`lambda`函数和装饰器则允许快速定义函数和增强功能,而上下文管理器更是资源处理的利器。这些特性让Python代码更加优雅高效。
16 4
|
7天前
|
缓存 测试技术 开发者
探索Python中的装饰器:简化你的代码之旅
【9月更文挑战第6天】本文将深入探讨Python中一个强大而神秘的特性——装饰器。我们将通过实际例子揭示装饰器的工作原理,并展示如何利用它们来简化和增强你的代码。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇门,让你的代码更加优雅和高效。
|
4天前
|
安全 数据安全/隐私保护 Python
Python系统编程实战:文件系统操作与I/O管理,让你的代码更优雅
【9月更文挑战第10天】Python不仅在数据分析和Web开发中表现出色,在系统编程领域也展现出独特魅力。本文将带你深入探讨Python中的文件系统操作与I/O管理,涵盖os、shutil和pathlib等模块的基础使用方法,并通过示例代码展示如何优雅地实现这些功能。通过掌握缓冲、异步I/O等高级特性,你将能够编写更高效、安全且易于维护的Python代码。示例包括使用pathlib遍历目录、设置缓冲区提升文件写入性能以及使用aiofiles实现异步文件操作。掌握这些技能,让你在Python系统编程中更加得心应手。
11 2
|
10天前
|
Python
Python中的装饰器:简化你的代码
【9月更文挑战第3天】装饰器,这个听起来有些神秘的名词,实际上在Python中扮演着重要的角色。它们就像是你的代码的小助手,帮你自动完成一些重复性的工作,让你的代码更加简洁、易读。本文将通过一个简单的例子,带你走进装饰器的世界,看看它们是如何工作的。