✨ 长期致力于改性MXenes、小分子活化、密度泛函理论、机器学习研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1构建高通量密度泛函理论计算流程针对二维碳氮化物表面官能团改性对析氢反应活性的影响开发了一套自动化工作流。采用维也纳第一性原理计算包设置平面波截断能为五百二十电子伏特布里渊区采样采用伽马中心网格。计算了二百九十九种不同组分和官能团的MXenes材料的氢吸附自由能。以Ti2CO2为基准发现硫官能团修饰可以显著降低氢吸附自由能其中Sc2CS2的ΔGH*达到负零点零九电子伏特。通过Bader电荷分析揭示硫官能团增强了表面金属原子到吸附氢的电荷转移量平均转移零点二三个电子比氧官能团多零点零七电子伏特。2发展基于图神经网络的快速预测模型为绕过昂贵的第一性原理计算构建了考虑原子种类、配位数及局部环境的消息传递神经网络。每个原子节点通过三层图卷积更新特征全局池化后输出ΔGH*预测值。训练集包含一千二百个吸附构型验证集三百个。模型在测试集上的平均绝对误差达到零点零五电子伏特预测速度比密度泛函理论快五个数量级。利用该模型从六万种虚拟MXenes中筛选出四十种潜在高性能析氢催化剂其中一种双金属MXenes Mo2TiC2S2的预测ΔGH*为负零点零二电子伏特接近铂催化剂。3揭示甲烷部分氧化制甲醇的反应路径采用密度泛函理论结合爬坡弹性带方法研究了Pd单原子和双原子负载于Mo2CO2上的催化机理。计算发现Pd二聚体比单原子更有利于甲烷碳氢键的活化活化能垒仅零点六八电子伏特。反应遵循氧解离路径首先氧分子在Pd二聚体上解离生成原子氧然后甲烷与原子氧反应生成甲氧基中间体最后加氢生成甲醇。整个反应的限速步骤为碳氢键断裂能垒零点七三电子伏特。与Pt基催化剂相比Pd2/Mo2CO2对深度氧化产物二氧化碳的选择性降低百分之四十因为甲醇脱附能垒零点四五电子伏特低于甲醇进一步氧化的能垒零点九一电子伏特。import numpy as np import torch import torch.nn as nn import torch.nn.functional as F from torch_geometric.nn import MessagePassing, global_mean_pool class MXeneGNN(MessagePassing): def __init__(self, in_channels64, hidden128, out_channels1): super().__init__(aggradd) self.lin1 nn.Linear(in_channels, hidden) self.lin2 nn.Linear(hidden, hidden) self.lin_out nn.Linear(hidden, out_channels) def forward(self, x, edge_index, batch): x self.lin1(x) x self.propagate(edge_index, xx) x F.relu(x) x self.lin2(x) x global_mean_pool(x, batch) return self.lin_out(x) def message(self, x_j): return x_j def calculate_band_center(dos_energies, dos_states): # simple d-band center calculation if len(dos_energies) 0: return 0.0 weighted np.sum(dos_states * dos_energies) total np.sum(dos_states) return weighted / total if total ! 0 else 0.0 def nudge_elastic_band(initial_path, forces_fn, n_images9, max_iter200): path initial_path.copy() spring_k 0.02 for it in range(max_iter): gradients [] for i, r in enumerate(path): grad forces_fn(r) if i 0 or i len(path)-1: grad grad * 0 # fix endpoints else: tangent (path[i1] - path[i-1]) tangent tangent / (np.linalg.norm(tangent)1e-6) # spring force along tangent spring spring_k * (2*path[i] - path[i-1] - path[i1]) spring_proj np.dot(spring, tangent) * tangent grad grad spring_proj gradients.append(grad) step 0.1 path path - step * np.array(gradients) if np.max(np.abs(gradients)) 0.001: break return path