1. 为什么需要Solidworks和Atomsk这对“黄金搭档”如果你正在做材料科学、纳米技术或者固体物理方面的研究尤其是涉及到分子动力学模拟那你肯定对“建模”这件事又爱又恨。爱的是它能让你在电脑里“造”出任何你想研究的微观结构恨的是这个过程往往繁琐得让人抓狂。传统的建模方法要么是用脚本语言比如Python一行行地“码”出原子坐标对于复杂几何形状简直是噩梦要么就是用一些专门的模拟软件内置的建模工具灵活性又常常不够。这时候一个“跨界”组合的优势就凸显出来了用Solidworks做宏观3D设计再用Atomsk进行原子级填充和切割。这就像是你先用精密的数控机床Solidworks雕刻出一个完美的模具然后再用一种神奇的“原子喷雾”Atomsk把这个模具内部填满你想要的金属或材料原子最后把模具外的多余原子“吹走”一个完全符合你设计的原子级模型就诞生了。我刚开始接触分子动力学时为了建一个带内部孔洞的纳米线模型折腾了好几天写脚本结果边界原子还总是对不齐。后来发现了这个组合实测下来效率提升不是一点半点。Solidworks大家可能不陌生它是工程师们的老朋友了画个零件、装配个体积可视化操作非常直观。而Atomsk虽然是个命令行工具看起来有点“高冷”但它处理晶体结构和原子操作的能力极其强大和精准。把它们俩结合起来你就能把工程师的“造型”能力和科学家的“造物”能力无缝衔接。这个流程特别适合哪些场景呢我总结了几类复杂几何形状的纳米材料比如多孔材料、核壳结构、异形纳米颗粒、自定义形状的纳米线或薄膜。你想研究一个“星星”形状的纳米金颗粒的光学性质用Solidworks画个星星剩下的交给Atomsk。包含缺陷或界面的复合材料比如你想研究一个特定角度和曲率的晶界或者材料内部一个特定形状的裂纹扩展。先在Solidworks里精确地定义出缺陷的几何形状再用Atomsk在完美的晶体中“雕刻”出这个缺陷。从宏观设计到微观模拟的桥梁很多实际器件比如MEMS微机电系统、特定的电极结构的宏观设计就是在Solidworks中完成的。如果你想从原子尺度研究其中某个关键部位的力学或热学行为这个流程可以直接复用已有的CAD设计避免了重复劳动。简单来说Solidworks负责“形”Atomsk负责“质”。前者解决了“我想要什么形状”的直观设计问题后者解决了“如何用原子精确堆砌出这个形状”的科学问题。下面我就手把手带你走通这个流程从零开始建一个你自己的复杂3D原子模型。2. 第一步搞定你的“设计工作室”与“原子工厂”工欲善其事必先利其器。咱们先把两个核心软件环境准备好。别担心过程并不复杂。2.1 Solidworks你的3D造型车间Solidworks是一个商业软件对于在校学生和研究人员通常可以通过学校或研究机构的正版授权获取。如果你的环境暂时没有也可以使用其他能导出高质量STL文件的3D建模软件作为替代比如FreeCAD、Blender虽然它更偏向动画但建模能力很强或者甚至是在线的Onshape。这里我们以Solidworks为例因为它在工程领域的普及率最高操作也相对标准化。安装过程就是典型的Windows软件安装一路“下一步”即可这里不赘述。关键在于你需要确保Solidworks能正常导出我们后面需要的STLStereolithography文件。STL文件是一种用三角面片来描述三维物体表面的通用格式也是Atomsk能够识别的几种3D格式之一。安装好后打开Solidworks新建一个“零件”。咱们先从一个简单的例子开始不要一上来就挑战狮身人面像。我建议先画一个中心带圆孔的立方体这个结构在纳米多孔材料或膜研究中非常常见也足够演示整个流程。在前视基准面上用“草图”画一个边长50mm的正方形。使用“拉伸凸台”特征给它一个厚度比如20mm得到一个立方体。在立方体的一个面上再画一个草图中心画一个直径20mm的圆。使用“拉伸切除”特征选择“完全贯穿”这样就在立方体上打了一个通孔。现在一个带孔立方体就做好了。关键步骤来了导出STL。点击“文件” - “另存为”。在保存类型中选择“STL (*.stl)”。点击“选项”按钮会弹出一个重要的设置窗口。这里有个坑我踩过“分辨率”一定要选择“精细”。如果选择“粗糙”生成的三角面片太少模型在Atomsk中会显得棱角分明可能丢失细节影响后续原子填充的边界精度。其他参数可以保持默认。给文件起个名字比如perforated_cube.stl保存。这样你的3D几何模具就准备好了。记住这个STL文件的位置。2.2 Atomsk你的命令行原子操纵台Atomsk是一个免费、开源、功能强大的命令行程序专门用于创建和操作分子动力学模拟的原子系统。它没有图形界面所有操作通过命令完成这听起来有点吓人但其实用熟了效率奇高而且可以轻松地写进脚本里进行批量处理。下载与安装直接访问Atomsk的官网这里不贴链接请自行搜索“Atomsk Guillaume”找到下载页面。它提供了预编译好的Windows可执行文件.exe、Linux版本和macOS版本。对于Windows用户最简单的方式就是下载那个.exe文件比如atomsk.exe。我个人的习惯是在C盘或D盘创建一个专门的工作文件夹比如C:\MD_Tools然后把下载的atomsk.exe放进去。为了能在任何命令行窗口里直接调用它最好将它所在的目录添加到系统的环境变量PATH中。如果觉得配置环境变量麻烦也有更简单的办法直接在你存放STL文件和准备工作的文件夹里也放一份atomsk.exe这样你在这个文件夹里打开命令行直接输入atomsk命令就能运行。怎么测试安装成功呢打开命令提示符CMD或PowerShell导航到你的工作文件夹输入atomsk --help如果看到一长串详细的帮助信息和命令列表恭喜你你的“原子工厂”已经就绪可以开始生产了。3. 第二步从零开始构建你的第一个原子模型有了工具我们开始实战。让我们遵循一个清晰的流程先创建一个“原材料”大块晶体然后用我们的STL模具去切割它。3.1 创建基础晶体“原材料坯料”在切割之前我们需要一大块完美的晶体作为原材料。假设我们要研究铝Al它的晶体结构是面心立方FCC。Atomsk可以很方便地创建这种基础晶体。打开命令行进入你的工作目录确保atomsk.exe和perforated_cube.stl都在这里。输入以下命令atomsk --create fcc 4.02 Al -duplicate 30 30 30 Al_supercell.xsf lammps我来拆解一下这个命令--create fcc 4.02 Al这是核心创建命令。fcc指定晶体结构为面心立方4.02是铝的晶格常数单位是埃ÅAl是元素符号。-duplicate 30 30 30这是复制命令。意思是把创建的这个原胞一个最小的FCC单元在X、Y、Z三个方向上各复制30次。这样我们就得到了一个由30x30x30个原胞组成的大超胞。为什么是30这取决于你STL模型的大小和你想要的原子数量。你可以把它想象成用乐高基础块原胞搭出一个足够大的底板超胞这个底板要能完全覆盖住你之后要放的STL模具。30x30x30对于边长50Å左右的模型通常足够了如果不够后续可以调整。Al_supercell.xsf这是输出的第一个文件名。.xsf格式是XCrySDen等可视化软件可以直接看的格式方便我们中途检查。lammps这是一个输出选项。它告诉Atomsk在生成.xsf文件的同时再生成一个LAMMPS可读的data文件名字会自动命名为Al_supercell.lmp。这个文件才是我们最终进行分子动力学模拟所需要的。执行完这条命令你会看到文件夹里多了Al_supercell.xsf和Al_supercell.lmp两个文件。你可以用OVITO、VMD或者XCrySDen打开.xsf文件看一眼应该能看到一个规整的、闪闪发光的铝晶体大块。这就是我们的“原材料坯料”。3.2 使用STL模具进行“原子雕刻”现在激动人心的时刻到了用我们设计的带孔立方体模具从这个大铝块中“切”出我们想要的形状。在命令行中输入以下命令atomsk Al_supercell.lmp -select stl center perforated_cube.stl -select invert -remove-atoms select final_model.lmp这条命令是整个过程的核心包含了多个步骤我们一步步看Al_supercell.lmp这是上一步我们生成的原材料原子系统作为输入。-select stl center perforated_cube.stl这是一个选择操作。-select stl告诉Atomsk要根据一个STL文件来选择原子。center是一个非常重要的选项它会自动将STL模型的几何中心对齐到原子系统的中心。这个功能太实用了想象一下如果你的STL模型原点在角落而原子系统原点在中心不进行对齐的话选择区域会完全错位。center帮你省去了手动计算和移动的麻烦。perforated_cube.stl就是我们的模具文件。 执行完这一步所有位于STL模型内部的原子都被“选中”了。-select invert这是一个反转选择的操作。上一步我们选中了模具内部的原子但通常我们想要的是保留模具形状内的原子删掉外面的。所以这里将选择区域反转现在选中的是STL模型外部的所有原子。-remove-atoms select这个命令顾名思义就是删除当前被选中的所有原子。于是模具外部的原子被清除了。final_model.lmp这是最终输出的文件名一个干净的、只包含带孔立方体形状内铝原子的LAMMPS data文件。运行这条命令后用OVITO打开生成的final_model.lmp文件。你应该会看到一个令人满意的结果一个立方体形状的铝原子团中间有一个圆形的孔洞原子的排列依然保持着完美的FCC晶体序。这就完成了你已经成功地将一个CAD模型转换成了一个原子尺度的模拟模型。4. 进阶技巧与实战避坑指南掌握了基本流程我们可以玩点更花的同时避开一些我当年踩过的坑。4.1 玩转复杂模型从网络资源到自定义形状你并不需要所有的模型都自己从头画。互联网上有海量的免费STL资源比如知名的Cults3D、Thingiverse等3D打印模型网站。你可以下载一个复杂的模型比如一个齿轮、一个镂空的球、甚至是一个微缩雕像用Atomsk把它变成原子模型这无论是用于科学演示还是探索非传统纳米结构的性质都很有趣。操作完全一样下载STL - 用Atomsk命令切割大块晶体。但这里有几个关键注意事项模型尺寸从网上下载的模型尺寸单位可能是毫米、厘米而我们的原子系统尺度是埃Å1 Å 0.1纳米。一个几十毫米的模型对于原子世界来说大如星球。你需要在Solidworks或其他3D软件里将模型按比例缩小到纳米尺度比如边长几十到几百个埃。或者在Atomsk命令中通过-select stl的scale参数来缩放STL模型例如-select stl scale 0.001 center model.stl将模型缩小到原尺寸的千分之一。模型水密性STL文件用于3D打印时要求是“水密”的即没有破面、裂缝。对于Atomsk的选择操作虽然不要求绝对水密但如果模型有严重的法线错误或破洞可能会导致选择区域出现异常一些本该在内部的原子被判定为外部。在Solidworks导出时选择“精细”分辨率并在导出后可以用Meshlab、Netfabb等免费工具检查并修复一下STL是个好习惯。原子数量控制模型越复杂、体积越大最终保留的原子数就越多。原子数量直接决定了后续分子动力学模拟的计算成本。在创建初始超胞-duplicate时要估算一下。一个粗略的估算方法是你的STL模型外包立方体边长如果是L Å铝的晶格常数是4.02 Å那么每个方向上的原胞数大约是 L/4.02。为了确保完全覆盖可以再乘以一个1.2~1.5的系数。4.2 不止于切割原子替换与多材料结构Atomsk的-select功能不仅仅用于删除原子还能进行更精细的操作。比如说你想创建一个核壳结构中心是一种材料外壳是另一种材料。思路是这样的先创建一个大块的材料A比如铝。用一个较小的球形STL模型内核选择内部的原子然后使用-replace命令将这些被选中的铝原子替换成材料B比如镍的原子。命令类似atomsk Al.lmp -select stl sphere_small.stl -replace Al Ni Al_Ni_core.lmp。接着用一个较大的球形STL模型外壳选择原子此时被选中的区域包含了之前的核和壳之间的区域。再次使用-replace命令将这部分原子替换成材料C比如金。但要注意这会覆盖掉内核的原子。为了避免这种情况你可以用-select配合逻辑运算或者分步骤生成不同部分再合并。再比如你想在界面处引入掺杂原子。你可以先切割出主体结构然后用一个薄层状的STL模型选择界面区域的原子再用-replace命令将其中一定比例可以用-random参数的原子替换成掺杂元素。这些操作都需要对Atomsk的命令行选项有更深入的了解官方文档和例子是最好的老师。多尝试多组合你会发现能构建出极其复杂的多组分、多形状的纳米结构。4.3 常见问题与排错“No atoms selected” (没有原子被选中)这是最常见的问题。原因通常有两个一是STL模型和原子系统的相对位置不对。确保使用了center参数让它们中心对齐。二是尺度不匹配。你的STL模型相对于原子系统来说可能太大或太小以至于完全没有交集。先用.xsf和.stl文件在OVITO里同时打开看看OVITO可以导入STL检查它们的相对位置和大小。切割边界不光滑有阶梯状这是因为STL模型的分辨率三角面片数量不够高。回到Solidworks导出STL时务必选择“精细”或自定义更高的分辨率。面片越多模型表面越光滑切割出的原子边界也越精确。最终原子模型有“飞点”即远离主模型的地方零星散落着几个原子。这通常是因为初始超胞不够大STL模型边缘的原子刚好在某个周期性镜像的边界上。解决方法是增大-duplicate的倍数创建更大的初始超胞确保STL模型完全被包裹在超胞的“非周期性”中心区域然后再切割。输出文件在LAMMPS中读取报错Atomsk生成的.lmp文件基本是标准的LAMMPS data格式。如果报错检查一下LAMMPS脚本中read_data命令指定的原子类型、键类型等是否与文件头信息匹配。Atomsk默认不会分配原子类型type对于单质材料所有原子类型都是1。如果你的LAMMPS势函数需要特定的类型可能需要在Atomsk中通过-properties或后续脚本来设置。5. 可视化与后续模拟准备模型建好最终都要用起来。可视化是检验建模成果最直观的方式而导入模拟软件则是最终目的。5.1 使用OVITO进行惊艳的可视化OVITO是一款免费、强大、科学家友好的可视化软件强烈推荐。打开OVITO直接拖入生成的final_model.lmp文件原子就会显示出来。默认可能是小球你可以在修改器Modifiers里添加“Wigner-Seitz缺陷分析”或“共同邻居分析CNA”等修饰器来着色显示不同的晶体结构FCC、BCC、HCP、非晶这样你的纳米孔洞周围的晶格畸变可以看得一清二楚。你还可以在OVITO中同时导入你的原始STL文件File-Import File选择STL格式将其显示为半透明的表面与原子模型叠加。这样可以非常直观地对比看看原子是否精确地填满了你设计的几何形状检查切割效果。5.2 无缝衔接LAMMPS进行模拟Atomsk输出的.lmp文件可以直接被LAMMPS的read_data命令读取。在你的LAMMPS输入脚本中只需要这样一行read_data final_model.lmp在这之前你需要确保在脚本中定义了足够的原子类型对于单质atom types 1就够了、合适的力场势函数文件。读取后这个模型就完全准备好了你可以像对待任何其他LAMMPS系统一样对它进行能量最小化、施加温度压力、进行拉伸或压缩模拟研究其力学性能、热学性质等等。我个人的工作流通常是Solidworks设计 - Atomsk建模 - OVITO快速检查 - LAMMPS模拟 - OVITO/其他工具分析结果。这个流程已经非常顺畅一旦跑通构建复杂模型就从瓶颈变成了乐趣。6. 思维拓展更多可能性与组合技掌握了SolidworksAtomsk这个核心流程你的建模能力已经上了一个大台阶。但别忘了工具是死的思路是活的。这里分享几个我实践过或看到过的进阶思路希望能激发你的灵感。思路一参数化设计与批量建模。如果你用Solidworks的参数化功能可以轻松地生成一系列尺寸渐变的模型比如圆孔直径从10nm到50nm。然后写一个简单的批处理脚本.bat或.sh循环调用Atomsk为每一个STL文件生成对应的原子模型。这样你就能系统地研究某个几何参数如孔径、曲率对材料性能的影响非常适合用于高通量计算或机器学习的数据准备。思路二结合实验图像。有时你的模型灵感来源于真实的实验图像比如扫描电镜SEM或透射电镜TEM照片中看到的特定纳米颗粒形状。你可以将实验图像导入到像ImageJ这样的软件中进行阈值处理和轮廓提取然后将轮廓线导入Solidworks通过拉伸、旋转等操作重建出三维模型再走我们的流程。这实现了从实验观察到模拟验证的闭环。思路三创建非均质材料模型。前面提到了原子替换。你可以更进一步用多个STL文件来定义材料中不同的区域。例如用一个STL定义增强相颗粒的形状和分布用另一个STL定义基体区域。先创建基体原子然后用颗粒STL选择区域并替换成另一种原子这样就能构建出包含随机分布、特定形状增强相的复合材料模型。这对于研究复合材料的界面、载荷传递机制非常有用。思路四引入初始缺陷和应力场。Atomsk本身也有一些内置命令来创建位错、晶界等缺陷。一个更灵活的思路是先用Atomsk创建包含理想晶界的双晶模型然后将这个模型导出为原子坐标再将其“嵌入”到一个由Solidworks设计的大尺寸外壳STL中最后用Atomsk切割出最终的器件形状。这样你就能研究在特定几何约束下缺陷的演化行为。说到底这个组合的核心优势在于将直观的空间几何思维与精确的原子级控制结合了起来。它打破了“建模”和“画图”之间的壁垒让你能够像设计一台机器一样去设计一个纳米材料。我至今还记得第一次用这个方法成功构建出一个复杂纳米螺旋结构时的兴奋感——那种“所想即所得”的控制力在科研中是非常珍贵的体验。遇到问题别怕多查查Atomsk的官方文档里面例子非常丰富多动手试几次参数调一调命令行就是这样一个越用越顺手的东西。希望这篇长文能帮你打开一扇新的大门让你在分子动力学建模的路上走得更快、更远。