关键词:复合材料,立体织物,建模,诺丁汉大学,TexgGen软件
Ps:全文科普写法,复合材料行业外的人也能读懂。
国内一提起开发工业软件,很多人第一感觉就是“高大上”,似乎离自己很遥远。即便是力学相关专业的人,也很少有人萌生自己去开发的想法。
长期以来,大家的主要关注点在“学习使用”国外软件上,稍微高阶点的操作,也不过是搞一些二次开发。
这当然和我们的发展阶段有关系,前20年,航空、航天、土建、机械等行业蓬勃发展,海量的研发科研资金洒下。掌握现有国外商用软件,在有个还不错的学校或者院所平台,就足以去接一堆项目,吃喝不愁。
相比之下自己开发软件,难度高不说,也没有市场,自然没有动力去做。
除此之外,工业软件姓“工”还是姓“软”也是大家的纠结点之一,搞力学、机械的,感觉开发软件不是自己的事情。搞软件工程的,又不了解物理机理。
因此,综合各方面原因,我们天然的就把自己放在了软件使用者的视角上。
实际上,开发工业软件并没有我们想象那么难。至少当我们决定做,就已经成功了不少。一个高校课题组,实质上就具备了开发行业中小型工业软件的基本能力。
本文就以著名的TexGen复合材料立体织物建模软件的故事为例,看看一个高校课题组是如何开发出成功的工业软件的。
首先简单科普一下立体织物。常用的复合材料构件,被称作“层合板”,它一层一层按照一定的方向铺起来。

这种结构有点很多:设计简单,加工方便。即便没有现代化的铺丝机、热压罐设备,自己剪裁、刷胶、手糊也能制作出很多部件。我在学校读书的时候,基础的拉压弯剪试验件都是自己手搓的。
但是层合板有个巨大力学劣势,就是长期使用后,层与层之间容易脱粘,出现分层现象。
于是,有人就把纺织领域的纺织技术用在了复合材料材料上,通过在厚度方向加入贯穿不同层的纤维束,把不同的层“穿起来”,这样就不容易分层了。于是就有了所谓的立体织物。

2.5D立体织物
由于这个优点,现在最先进的航空发动机上开始使用立体织物复合材料。
纺织属于轻工业,但是复合材料的应用领域很多在航空航天汽车这些重工业领域。因此,立体织物也是轻重工业结合的典范。
立体化的织物,意味着纤维的方向可设计性大大增加。在设计中,织物的建模就成了一个难题。
TexGen软件就是在这个背景下,从90年代末,由英国诺丁汉大学逐渐开发完成。它可以通过简单的界面交互实现织物的快速建模、网格划分,同时也开放了Python二次开发接口供用户进行自定义建模,目前被广泛应用于航空航天、汽车和纺织工业中。

TexGen软件
Andrew Long 教授是诺丁汉大学复合材料制造领域的顶尖学者(曾任工程学院副院长)。他在 20 世纪 90 年代末前瞻性地意识到,要准确预测复合材料的力学行为,必须先在计算机中精确建立纺织纤维的 3D 几何模型。他是 TexGen 项目的总负责人和历代开发者的导师。

1998 年,在英国工程与物理科学研究理事会(EPSRC)项目的资助下,安德鲁教授启动了该项目。最初的算法和 Version 1 代码由 François Robitaille 博士和 Ben Souter 完成。2002 年,Martin Sherburn (马丁·舍伯恩)在其本科毕业设计中将软件重写为 Version 2。此时,软件仅在研究组内部及少数合作伙伴之间闭源共享。
课题组老板决定了一个课题组的发展方向,是做工业上有用且立马就能用的东西,还是做一个自娱自乐发几篇论文的东西?
高校课题组开发工业软件的第一个条件达成:大老板要搞,并且是真搞。
每个课题组在一定的时期都有一个“大师兄”,大师兄啥都会,代师授艺。马丁就是这样的“大师兄”。
马丁本科阶段就参与了 TexGen v2 的重写工作。在攻读博士期间,为解决早期TexGen的平台架构限制,将 TexGen 完全重构为跨平台、模块化且独立于特定平台的代码,并在 SourceForge 上以 GPL 开源协议正式发布 Version 3。这一举措让 TexGen 的下载量和国际学术影响力爆发式增长。

需要指出的,马丁并不是计算机专业的学生。但是本科阶段具有极强的可塑性,只要具有一定的代码和数理基础,就可以参与到开发工作中了。
我们前面介绍的TexGen功能可以看出,这个软件从技术上来说最根本的就是几何算法:
(1)纤维的截面、方向;
(2)纤维之间的空间关系;
(3)空间的网格离散技术。
高等数学和解析几何知识就可以开发大部分模块了。
有趣的是,马丁博士毕业后并没有继续从事立体织物研究。早在学校期间,他就对游戏开发感兴趣,并一直在以业余身份从事游戏开发工作,学习从零开始制作游戏所需的所有基本技能。
毕业后,马丁决定投身游戏行业。目前在从事计算机系统内核开发和嵌入式系统的开发。
其实科研搞深入了,无非就是道与术,数学、力学是是我们的道。软件开发应用,就是术了。有扎实的“道”,自然可以切换到不同的术。
路易丝的经历更为传奇。她本科学习的是机械与复合材料工程。上大学时便开始接触编程,并逐渐对编写软件产生了兴趣,在攻读博士学位期间,她意识到成为一名软件工程师要比成为一名机械工程师更有前途。

早期在诺丁汉大学完成了关于“纤维缠绕工艺”的博士学位,毕业后,她曾在计算机系工作,开发用于工业刺绣机的自动化 CAD 设计工具。

后来女儿出生后,还经历了一次手术。为照顾女儿,路易丝决定在家“兼 职”。
当时她的一位同事曾创办了一家企业,专门开发用于制作十字绣等手工艺品的软件。因此,路易丝度过了一段快乐的时光,期间兼 职编写与编织、梭织花边、拼布相关的软件。
这份工作非常灵活,因此进展得颇为顺利。随后路易丝又找到另一份工作,负责为旅行证件(如护照、旅行文件等)绘制识别图案。然而,不久被裁了。
一个偶然的机会,她看到了一则招聘广告:寻找一位软件工程师来负责管理一个开源软件项目。
该项目就是TexGen。
就这样,整整13年,兜了一圈又回到了科研,回到了读博士学位的复合材料小组。从社会上回到学校,就要搞发 论文、申请基金那一套。当时路易丝没有多少论文,更没有高影响因子的论文。
但是,她长期积累的织物编程技术正是TexGen所需要的。因此她仍然成功申请到了科研基金。这种奇遇在我们这,基本是不可能发生的。
就这样路易丝一边开发TexGen,为 TexGen 引入了 Python API 接口、先进的自动网格划分技术,并重点开发了针对航空航天领域日益复杂的 3D 编织物(3D Weaves)的建模功能。
另外一方面,路易丝给学生教授c语言、Matlab编程等课程,可以说是国际复合材料软件工程界最具代表性的女性科学家之一。
路易丝的经历也反映出高校课题组开发工业软件的一个困境:铁打的软件流水的兵。一个软件如果缺乏长期维护、升级,也是很难发展的。
课题组的人不断的进进出出,未必就刚好有能接的上的人持续进行软件开发。只能迫不得已从外部招聘引入人才。
以前的文章中,我也提到过自研类似于TexGen的工作。作为高校课题组也可以开发出“TexGen”的佐证,我用了几个月的时间,也开发出了针对三维机织、平面机织、机织蜂窝结构建模软件。
我一个人尚且可以做出点东西,我相信,只要大家有决心有动力去做,一定可以在各个行业做出类似“TexGen”的工业软件。
