Category Archives: 工作笔记

科研和实验笔记

特性粘数

今时今日,还有多少研究生使用乌式粘度计测量特性粘数?而且能够测好来?

觉得自己理论差,数学差,没sense。于是每每跟人说我是做实验的,我是experimental physicist(假如我想吹嘘说我是一个phycist的话)。而实际上,有效数字乘除,误差运算等大学物理实验课第一节课内容,我现在都次次要Google。我连NaCl的分子量都要次次Google。以前说学生都不懂手算了,因为有计算器了。现在Google连计算器都打败了。因为我在键盘上输入n,a,c,l,回车,一共5个键,我在计算器上,按Power On,3,5,.,5,+,2,3,=,一共要9个键,而且还只精确到小数点后1位。再说了,我忘记Cl和Na的原子量了!

所以今时今日,学生就不会自己聚东西 ,能买就买。标签上分子量是几就是几,发文章的时候一率写used as received without further purification,连GPC都不想跑,谁会想去做特性粘数?而且直接不知道这回事,对着乌氏粘度计问“这是什么东西?”

测特性粘数不一定是为了知道分子量。如果要知道分子量,现在有很多好的方法,例如SEC-MALLS、MALDI/ToF等。不过特性粘数本身的信息还有其他价值。它本身的意义就是分子尺寸,单位质量的分子在溶液中的体积。事实上,高分子稀溶液的相当程度是把高分子当软胶体来想的。从胶体流变学的图象来想,光知道个体积分数,就能决定流变学了(等温实验无相互作用力的话),知道体积的话分子是多少意义不大了。换句话说特性粘数反映的是这种聚合物,它一点点质量在一定温度和溶剂中能被撑多开。可想而之这除了跟分子量有关外还会跟温度和溶剂的良劣有关。聚电解质的话更复杂。所以它真不是一个用来测分子量的好方法。回归到它本身给的信息,才不会忽视它的意义。

问题是,特性粘数是重要,但是不是一定得用乌氏粘度计来测呢?我的观点,粘度计、流变仪,都可以测粘度,这是流变学测量的问题,无非是多大程度接近均匀层流和保证no slip的问题,以及仪器测量上下限的问题。对于大多数高分子溶液,其溶剂都是粘度比水小的。因此溶剂粘度在旋转粘度计上测量就已经够呛了,不难理解为何会选用一种毛细管粘度计。乌氏粘度计无非就是一个毛细管粘度计而已,它“乌”无非“乌”在其管子设计上。假如说你的溶剂粘度够高,那完全可以拿到旋转流变仪上做。例如超高分子量聚乙烯要在135 degC溶在十氢萘里测粘度,那在旋转流变仪上做就方便多了,不然还得做一缸油浴,不仅气味重还很容易烫到手。

不过,使用乌氏粘度计还是繁琐,要测准来必须不能偷懒,而且也是个手艺活,不熟练的话,时间花很长。

我使用乌氏粘度计测量特性粘数的手艺还是不错的。最近要投一篇论文,本来就是本科学生的一些不完整的结果,故事上拯救了一下,想投SCI,结果还没被拒,于是审稿人意见当然会导致我必须把该补的数据补全。首先就是当初本科生用的样品来历不明,审稿人纠着不放,要我提供很多对样品基本性质的检测,其中就是要测特性粘数(哪怕不知道分子量)。我基本上就是一把就做成了,结果还挺好。

我嘴边总想冒出诸如“连特性粘数都测不好就别说你是做高分子的”之类的话。但是这里面还有时代的问题。“粘度”这个量越来越不足以反映我们今天想要知道的微观信息了。流变仪这种宏观方法,虽然在过去的几十年里大家建立了很好的理论去服务它,但当我们能直接在显微镜下看到聚合物的reptation和tube relaxation的时候(!),我们似乎已经达到结果,不再去管它造成何种粘度。毕竟,我们的兴趣更多地还是reptation而不是damping function!在以前,如果一个同行很懂reptation,却不懂流变学,我们会认为他很可能是个搞理论的,搞模拟的。但现在,实验上我们也不需要流变学来看reptation了。不过,如果你想知道稀溶液的分子尺寸,还是最好看特性粘数。再者,对于真正的胶体,测特性粘数还能看出粒子的形状信息。

Intrinsic viscosity of a gelatin sample

Intrinsic viscosity of a gelatin sample

关于“材料科学基础”这门课

“材料科学基础”是比较标准的课了,即好像普通物理、有机化学这样的课,内容已经标准化了,课本也很多,体例大致一样。这说明这门课有存在的广泛合理性。我最近在备这门课,觉得有些困惑和见解,在这里梳理一下。

材料科学基础这门课应该包含的内容是比较统一的。例如,我使用的Callister编的教材Materials Science and Engineering: An Introduction的目录:

  1. Introduction
  2. Atomic Structure and Interatomic Bonding
  3. The Structure of Crystalline Solids
  4. Imperfections in Solids
  5. Diffusion
  6. Mechanical Properties of Metals
  7. Dislocation and Strengthening Mechanisms
  8. Failure
  9. Phase Diagrams
  10. Phase Transformations in Metals: Development of Microstructure and Alteration of Mechanical Proerties
  11. Applications and Processing of Metal Alloys
  12. Structures and Properties of Ceramics
  13. Applidations and Processing of Ceramics
  14. Polymer Structures
  15. Characteristics, Applications and Processing of Polymers
  16. Composites
  17. Corrosion and Degradation of Materials
  18. Electrical Properties
  19. Thermal Properties
  20. Magnetic Properties
  21. Optical Properties
  22. Materials Selection and Design Considerations
  23. Economic, Environmental, and Societal Issues in Materials Science and Engineering

我认为这门课的一个总体的原则是这样的:以强调“结构-性能关系”为宗旨。更全面地说应该是“加工、结构、性质(property)、性能(performance)”四个因素的关系。关于表征结构的知识(原子结构、结体结构,织态结构)和解释机理的知识(塑性形变的机理、导电的机理等),应该不超出足以解释性能和加工技术的需要。所以,你在材料性能和加工方法部分讲多细,决定了你在结构和机理部分讲多细。如果你后面根本讲不到这么细,用不到这么深的结构和机理知识,那前面也就不需要讲这么深了。总之最后的目标不是为了介绍一大堆结构,或者介绍一大堆性能。而是通过结构和性能的介绍,体现“结构-性能”这一关系。特定的性能必然源自于特定的结构。你但逢介绍了一种结构,就必然为后面介绍一种性能埋下伏笔。不介绍不导致任何性能的纯结构。这是我的理解。否则既然已经有化学、物理学,还有什么必要另设一门“材料科学”呢?那些对纯结构、纯性质的研究兴趣,对“工程”又有何直接意义?

按照这一理解对这门课的内容有如下看法。

我可以把第3~11章划分成金属部分。因为3、4章中很多例子都是金属。就算不算3、4章,金属部分也占了7章了!这是我最纳闷的地方。不止这本书,我还找了好几本外国教材,都发现金属是大头,而且编书的作者本身就是搞金属的。为什么就没有搞高分子的人去写一本材料科学基础的课本呢?

这个问题引起了我的兴趣。我曾经讲过,“什么是科学”的问题,应该转化成另一个问题“科学是怎么发展到今天这个样子的”,也就是只有用科学发展史才能回答“科学是什么”,因为这不是由某本书,某个人定义出来的,而是发展的结果。所以“材料科学与工程”是什么,也相当于问:今天意义上的材料科学与工程是怎么发展过来的?为此我查了很多资料。

很多课都喜欢介绍材料学的发展跟人类技术文明史的重合,从石器时代人类不直接从天然取材使用(而是经过哪怕最简单的加工)开始讲起。从这个意义上讲材料学(去掉“科”字,仅表示一种古老的学问)有一个从古老的学问转变为现代科学的过程。现代材料科学的发展跟现代物理、现代化学的发展密切相关,更确切的说是化学与凝聚态物理的发展。几乎整个化学都有用,但只有凝聚物物理有用。物理和化学进入现代科学的时间都很早,但是凝聚态物理学科出现和形成就很晚,早期的物理都是什么伽利略啊牛顿啊那些,一直到麦克斯韦方程组都过了好多年了。所以材料科学与工程的发展最先是现代化学的引入。现代原子的概念最初是从化学的角度提出的(J. Dalton),是为定量描述化学反应服务的。这使得化学成分分析的方法可以用于当时的一些材料学研究,例如18世纪人们认识到留意到炼钢时的炭不仅用于烧火,还进入了钢材,影响产品的性能。这是从现代科学意义上认识“结构-性能”关系的早期例子,靠的是现代化学。第一次工业革命时代主要是钢铁时代,化学家的价值最先被认识并被请到各大治炼工厂去。

相比之下,直到20世纪初,人们才搞清楚原子的电子结构,以及原子之间是怎么成键的。同时也是到20世纪,结晶学的研究才开始跟材料的性能联系起来。这两方面基础,才发展了固体物理学。在实验手段方面,也许性能方面的测试可以简单一些,力学性能测试和声光电磁热性能的测试,都拜早期物理学发展所赐,在二十世纪之前都可以做到。但是用原子、分子光谱研究元素组成,用X射线、电子显微镜研究结构这些手段,都必须要在二十世纪之后。这些手段直接使得金属材料和无机非金属材料的研究水平从经验提升到了还原论的层次。主观上认识到有必要组成材料科学与工程这个独立的学科,是两次世界大战和冷战的功劳。所以很多现代材料科学的成果当初都是为了军用的。

与这样的历史相比,高分子实在太年轻,它是十九世纪末才出现的材料,而金属和陶瓷都是远古时代就用的了。对高分子的理论研究是在1920年起,到七、八十年代才算足以构成了一门学科,而且很多问题至今没办法像晶体的固体物理学那样搞得这么清楚。从上述的历史发展来看,金属材料确实是认识最深最早的材料,是材料中的王者。材料科学的研究套路其实只是金属材料的研究套路。即两条线:第一条线是晶体结构,,晶体缺陷的形成,织态结构,塑性形变与缺陷的关系、失效与缺陷的关系;第二条线是相图、织态结构的形成和相转变、力学性能与加工的关系。然后,大家发现,把这样的套路放在无机非晶属材料上也是大致合适的。于是大家就很兴奋,觉得材料科学是一门超越了具体化学元素组成,用“结构与性能关系原则统治万物的学科,但一定程度上,它只是一个固体材料的应用学科,哪怕加入一点生物医用材料以显得赶上时代,讲来讲去也都是骨材料。有了高分子学科,大家也想把它纳入到这种研究套路上去,但其实很多方面是格格不入的。

当人类进入21世纪,先不谈高分子(已经沦为水桶、脸盆!),至少你不能说“液晶”不是材料,OLED不是材料。不要说对于90后一代,就算对于我这一代,手上拿着iphone,kindle,马上要戴上Google Glass了。过来上材料科学基础课,讲了一大半的晶体啊、相图啊,到最后就是联系到什么呢?大炼铁!低碳钢!case hardening!拿铁棍拉一下!这叫学生怎么想?学了材料学,就是去炼铁炼钢烧玻璃吗?不是说金属就不学了,固体就不学了(压电材料也很时髦);结构-性能关系原理确实也没有落后过时。但从对三大材料的侧重上来看,目前的材料科学基础课的内容编排已经赶不上时代!

当然可以讨论这门课是给什么系、什么专业的学生开。我觉得以现在常见的体例,这门适合用来给机械工程、土木工程、建筑专业的学生做材料方面的科普课用。至于材料学专业,不管名字怎么叫,到最后肯定是具体的金属(冶金)、陶瓷或者高分子材料的专业。我们学校还有光电材料、电子材料这样的专业。假如这种材料主要是结晶材料,那么学生肯定会有比较详细的结晶学课程;假如是有机材料,那学生一定会上有机化学和有机合成的课。此外,物理化学也会单独上。加工工程、声光电磁热性能的内容很可能也是独立开课的。所以没必要还在材料科学基础课上学一些半吊子的结晶学和链构象。但是我了解到的是,“材料科学基础”是很多高校材料学专业的必修基础课,放得很早。我们学校大一就上,学生甚至还没完成高等数学,更不要说物理和化学了。所以变成了材料课中关于原子结构和晶体结构的内容就相当于提前给学生上普通化学和晶体学的课;力学性能、声光电磁热的部分,就相当于提前给学生上物理课;扩散、相图和相转变就相当于提前给学生上物理化学课。这使得材料科学基础这门课在讲述上承担了太多的额外负担。目前的所谓“材料科学基础”,实际上只是“晶体材料科学基础”。结晶结构、缺陷、晶界移动、相图这些内容讲得这么细,对金属材料的认识当然可以达到一个比较完善的程度,但高分子只有两章内容,可以说学完了仍然莫衷一是。学完了“材料科学基础”之后,学生要么对所谓“材料学”总体不感兴趣(其实只是对金属不感兴趣),要么就是很想去成为一个金属学家,高分子材料的魅力根本没体现出来。也许很多高校的“材料学”专业其实是冶金和和水泥专业,他们喜欢给学生上一门“材料科学基础”,供学生在具体学习晶体学,固体物理学之前了解一个全貌。如果是这个意义的话,材料科学基础在金属部分的内容确实能够服务得非常好。但我们是一个以高分子为老牌强项的材料学院,我们如果也想上基础课,应该自己编一本高分子科学家视角的材料科学基础,介绍给高分子材料的全貌,上来不是讲晶体学,而是证明链构象,等等。

也有人说,一个全面的“材料学家”,应该是全面了解三大材料的优缺点,能在实际产品设计上做到合理选材的材料学人才,而不能只懂高分子。那也完全可以把金属材料、陶瓷材料的内容放在大三大四作为选修课,给已经学过足够的物理化学知识、并且在材料学方面有了高分子材料的知识的学生讲授。这样,也许只需先补习一些晶体学,就可以有更充分的课时讲材料的性能。比给啥基础都没有的高中毕业生讲要强多了。说大了去,很多学生学完四年本科都对自己的专业没有什么总体认识,就是因为课程设置上各自为政,欠考虑。

我们的材料科学基础还是双语教学,形式上是用英语教材,英语PPT。还有一门“材料科技英语”,事实上也是材料科学基础课和重复,初衷是希望给学生加强一点英语。因此这门课同时也要帮助学生熟适材料学专业英语的环境。但我们都不是英语系毕业的,本身就不专,也许我们自己都犯很多语法错误。很多学生平时就有学英语。除了学校要求的大学英语之外,他们为了飞跃重洋很可能考托考雅思考GRE等等,因此英语比老师牛的人可能都不少。但另一方面,也有一些同学英语比较差(或者说提高总是不快,比较抗拒英语。高考考得上985高校的要说差也差不到哪儿去)。有些同学反映说,他们手头上的那本国外教材,上面好多单词不懂。叫他们捧着这本教材阅读自学是比较困难的。就算你不无限照顾英语差的同学,假想最低标准是四、六级英语水平,这个水平也无法应付大量只有材料科学才使用的新词。总得来说,专业英语无非也是英语,有什么需要另开一门课的必要呢?换一个比较好回答的问题就是,从事科学研究所需要的英语能力,有哪些是学生靠平时英语学习没办法获得的呢?

首先,确实专业英语也是英语,不是法语。所以一些提高英语水平的一般方法是相通的。但是我们国家的大学本科生面对的现实就不是正常地提高英语水平,而是考四六级托福雅思GRE,他们学习英语的具体形式就是捧着一本考试教材和词汇表。功利的学习心态使得他们除了考试教材上的英语之外,平时不再任何综合的提高。但是,他们考这些英语考试,一些能力要求也确实算高的。最大的一个特点就是闭卷考,不能查字典,更不能用电脑上网,所以造成他们长期以来学英语的重头戏就是背单词。不管阅读理解和写作的思维训练达到什么高度,词一不认识啥都没戏。但是,在实际阅读和撰写英语科技文献的时候,不可能有谁不准你查字典不准你上网,恰恰相反最重要的是智慧地利用现代科技把词汇这件事化为小菜一碟,重点放在内容的理解上。因此,阅读的时候辞典不离手应该是一种常态。学生翻开外文课本,感觉好多词不认识,就觉得完了,这是一个误区。以前我们有文曲星,现在手机应用有很多辞典软件,看书的时候带上个笔记本电脑,wifi一上网,连上个有道词典互动百科。当然了,一开始专业词汇量实在太低也许经常要这么做,但完全允许你有这样一个过程。带个笔记本跟我当年去图书馆自习都要抱着一部朗文相比,重量差不多,但功能无法同日而语!很多学生还是带ipad去自习的。

所以,我决定这门课的考试是开卷。手机和电脑自然是不允许的,但允许你带你觉得有用的字典。你就算带十部字典我也允许,反正120分钟给我做完。不能让学生觉得专业英语就是背专业词汇,做名词解释,这样学生的内心从此就跟专业88了。

其次,除去词汇的压力,学生的英语就不成问题了吗?由于现在国内的很多英语考试是以选择题为主,有一条神tip:不懂选就选B。很多学生是靠长期在英语课上的被动接触形成的语感来蒙这些选择题的,从来没有上升到理性认识(语法),阅读理解时遇到长难句就有困难(好在阅读是选择题,选B),作文反正背一些模板,倒是能糊弄过去。很多学生说,上了大学英语就废了,归因于自己不再像高考之前那样努力学习英语。其实真正的原因是长期这样的应试教育完全没有给学生打下独立提高与发展的基础,一脱离应试教育的环境学生才发现其实自己不懂英语。而在专业文献中,由于表达对逻辑性要求比较高,长难句是经常出现的,各种从句的应用很广泛,对一些小词(例如and和or,either和neither)也要求很抠。所以,要想从以往应试的英语学习转化为独立的、面向专业的英语学习,就必须加强语法!以往语法方面比较空白的学生就要去找一本语法课本从第一章冠词开始读起。

专业英语的提高,不能只靠一门课,而是靠把自己沉浸到一个专业的海洋中来提高。你首先要习惯长期面临大量的专业词汇、大量的长难句,然后在此基础上要习惯长时间地进行抽象逻辑思维。采用英语教材来学习专业知识就特别有利于培养抽象逻辑思维,英语教材不管是语言天然特点还是著者的普遍水平都特别有利于逻辑思维的培养。我觉得,语言上的特点也许有利于引人关注局部的、微观的逻辑细节;而一本书的写作水平怎样,会影响到一个人分析问题的能力。教科书的写作,归根结底就是对一个问题的分析过程。学生看教科书就是有样学样。一本教科书写得好,就是对一个问题分析得好,学生学这本书就较好地学到了分析问题的能力;相反,如果用一本烂书,学生也许背重点考试还是知道一些常识,但分析问题的能力就没有受到什么薰陶,独立考虑问题易进入各种误区。我觉得在这方面中文教材普遍有待提高。这也是我想提醒学生在阅读英语教材时留意的一点。

Fourier变换(三)

[mathjax]
通过上一篇我们已经学会怎样通过Fourier变换重构应变和应力的波形。至少In/1是已经可以直接用Fourier变换的结果计算了。本文先介结实际实验数据的导入,再继续上一篇的话题介绍如何计算In/1和其余的LAOS参数。

LAOS实验是怎么实施的

我们是在TA ARES-RFS流变仪上做LAOS实验。公司的名字:TA Instruments。这是一台应变控制型流变仪(strain-controlled rheometer),相比之下同公司的AR-G2则是应力控制型(stress-controlled)。这个小册子上介绍了ARES和AR-G2两台流变仪的特点,其中的原理图和具体参数可以用在毕业论文中。进行LAOS实验需要流变仪持续对样品施加正弦应变,我们是利用流变仪控制软件TA Orchestrator 7.2.1自带的测试模式dynamic time sweep来控制流变仪进行这一操作。Dynamic time sweep是固定振荡的应变幅度γ0和频率ω,测量G’G”随时间变化的测试,所以正适合我们。在Orchestrator软件中设定好dynamic time sweep的应变和频率,仪器就会以相应的正弦函数去控制马达了。此时,我们需要马上从仪器背后的模拟输出端口同时读出仪器的测量信号,并用一个数模转换器(analog-to-digital converter, ADC)转换成数字信号,输入到计算机。我们用的ADC是NI USB-9215A,要通过电脑来控制它何时开始和停止采样,以及以多大的采样频率进行采样。许多软件都可以通过它的驱动程序接口来实施控制(MATLAB本身就可以),在LAOS实验中我们用一个LabView开发的工具FT Meassurement来采集数据。因此,我们用一台电脑,用两个软件分而控制不同的过程。Orchestrator控制流变仪的运作,而FT Meassurement控制ADC。这一流程图可参考[1][2]中的用图。具体信号线接法和处理方式见下面的PPT(可下载)。

上篇文章也说过,从流变仪采集到的一个是马达位移的电压信号,另一个是力矩的电压信号,它们都要乘以一个系数,才是应变和应力。从ARES流变仪的说书中可以查到背板输出信号的具体情况:

  • TORQUE OUT:从0到满量程,对应电压是0 ~ 5 V。由于转矩可以有两个方向,所以总的电压范围就是-5 ~ +5 V
  • STRAIN OUT:虽然标记是STRAIN,但其实只是马达转动的角位移。从0 ~ 0.5 rad对应电压是0~5V,考虑两个转动方向,总电压范围是-5~+5 V

TORQUE OUT的“满量程”到底是多少呢?由于我们的ARES有两个档位的力矩传感器。Xducer 1的传感器叫做“20g FRT”。20g是指该档位的最大量程是20 g·cm,力矩的一个非SI单位,SI单位是N·m。1 g·cm = 98.066E-6 N·m。可以去此网站进行换算。FRT是force rebalance transducer的缩写,这是ARES的传感器采用的一种技术(参考)。所以20g FRT的最大量程是1.96E-3 N·m。另一个档位Xducer2是1k FRT,也就是最大量程是0.0981N·m。因此,到底TORQUE OUT输出的电压值对应多大的力矩,要看当时仪器在线的传感器档位是Xducer1还是Xducer2。以下是更详细的参数:

Transducer 1 2
Transducer Description 20g FRT 1k FRT
Maximum Torque (g·cm) 20 1000
Minimum Torque (g·cm) 0.004 1
Torque Calibration Value 21.34 1050.7
Torque Compliance 6.67E-06 6.67E-06
Inertia Constant (g·cm^2) 660 660
Phase Adjust Constant (rad·s/rad) -5.80E-05 -5.80E-05
Maximum Normal Force (g) 2000 2000
Minimum Normal Force (g) 2.00E+00 2.00E+00
Normal Calibration Value 2101.8 2101.8
Normal Compliance (um/kg) 0.00E+00 0.00E+00
Phase Offset (rad) 0 0
Motor Temp Reference (°C) 3.27E+01
Motor Temp Gain 2.9445
Compliance Gain 7.89E-01

记STRAIN OUT输出电压为Vs,TORQUE OUT输出电压为Vt,换算成相应的角位移θ转矩M的公式是:\theta=k_\text{s}V_\text{s}M=k_{\text{t},i}V_\text{t},其中,转换系数kt = 0.1 rad/V,kt,1 = 3.92E-4 N·m/V,kt,2 = 0.0196 N·m/V。从角位移(rad)到应变(量纲一量),以及从转矩(N·m)到应力(Pa),还各需要乘一个系数FγFσ,这个系数跟所选用的夹具种类和尺寸有关。流变仪的说明书会介绍各种夹具的系数如何从夹具的尺寸来换算。这里只举锥板夹具的例子:

Figure 1 Cone-plate geometry

Figure 1 Cone-plate geometry

$$F_\gamma=\frac{1}{\tan\alpha},\quad F_\sigma=\frac{3}{2\pi R^3}$$所以,最终的应变和应力应该是$$\gamma=F_\gamma k_\text{s}V_\text{s},\quad\sigma=F_\sigma k_{\text{s},i}V_\text{t}$$

实验数据处理

从仪器背板TORQUE OUT和STRAIN OUT连线到ADC的channel 1和channel 2输入,然后在计算机中的FT Measurement控制ADC以一定的采样频率fs进行采样,就会生成一个文本数据文件,此例的文件名是“DTimeSwp (13) 000 .txt”。第一行是一些说明性的数字,然后就是两列数据,分别对应着channel 1和channel 2的电压测量值,按照通常的接线方式,第一列是STRAIN OUT信号,第二列是TORQUE OUT。在MATALB中预览出下:

Figure 2 Data file from FT Measurement

Figure 2 Data file from FT Measurement

用importdata命令可以自动处理具有表头的数据文件,把表头文字和数据分开。


clear all
clc


A=importdata('DTimeSwp (13) 000 .txt')

观察A的返回信息。如果源文件没有表头,是纯数据,A就是直接由这些数据组成的矩阵;如果有表头,A就是一个struct类型,包含一个data单元和一个textdata单元。textdata是以表头为内容的字符串,data单元就是数据组成的矩阵。要调用data,语法是A.data。为了简单,就把数据重新放在一个新的变量中:


x=A.data;

DTimeSwp (13) 000 .txt这个文件,对应的是一个dynamic time sweep测试,命令的应变幅度γ0 = 160%,角频率是ω = 6.283 rad/s(f = 1.0 Hz)。FT Measurement控制ADC以fs = 200 Hz的采样频率进行采样。我们可以从fs重构一列时间数据,拼到变量x中:


fs=200; % the sampling frequency was fixed by the test condition

t=0:1/fs:(length(x)-1)/fs; % construct the time series
t=t(:);

x=[t x]; % combine the time series and the signals

这样,变量x第一列是时间,第2、3列才分别是STRAIN OUT和TORQUE OUT电压信号。这个实验是用一个锥板夹具来做的,直径50 mm,锥度0.04 rad。测试时,在线传感器是xducer 1。因此根据计算公式,Fγ = 24.99,Fσ = 30557.75,kskt,1的值前文已经过了。把x变量的数据转换成应力和应变:


% set all the coefficients
F_gamma=24.99;
F_sigma=30557.75;
ks=0.1;
kt1=3.92e-4;


% convert voltage to strain/stress
x(:,2)=F_gammaks.x(:,2);
x(:,3)=F_sigmakt1.x(:,3);

获取信号的频率

至此,对变量x的波形重构可以完全跟之前文章介绍的一样的,不再重复。但是本文再作一项改进。前面几篇文章说过,实际应变值跟软件设定的命令有可能有所偏差,加上仪器噪音的影响,所以我们要重构应变的信号来准确获得实际的应变幅度和频率。而准确的FFT结果要求待做FFT的信号是“相干取样”的。做相干取样又要求我们至少要准确知道信号的频率。解决这一矛盾的方法是,利用应变必然是正弦波的性质,先通过正弦函数拟合来获取信号的应变和频率。事实上,对于一个正弦波,正弦拟合和FFT都是重构的方法,但实际上正弦拟合的幅度和相位往往不准,所以只要能做好相干取样,我们都偏爱用FFT做重构;但是正弦拟合得到的频率是准的,而这时我们只需要知道一个频率,因此可以采用正弦拟合来完成。

我们调用一个别人开发的代码进行:sinfapm。其语法在代码开头的注释文件中有清楚的介绍。注意,sinfapm代码又调用了另一个用于进行非线性最小平方求解的第三方代码:LMFnlsq,需要都放在同一个文件夹。

sinfapm函数还有一个麻烦之处,就是处理取样频率太高的数据会失效。所以,在使用前要临时对一个未知信号“降采样”(down sampling)。经验表明,对每个周期不超过1000个数据点的数据,sinfapm能够稳定表现。因此就是在使用sinfapm前要加一段代码,如果信号每周期超过1000个点,就降采样为每周期1000个点;否则就不变。麻烦的是,为了知道原信号每周期有多少个点,我们还是要先知道信号的频率。所幸,这一步只需要粗略估算即可,因此,做一个不靠谱(没有相干采样)的FFT粗估一下频率就行了。总之,整个精确获得频率的步骤就是:

  1. 用FFT粗估频率
  2. 根据粗估频率计算信号每周期有多少个数据点,决定降取样比值
  3. 对降取样的数据进行正弦拟合得到精确的频率

以下是代码:


% Roughly estimate the input frequency by FFT
N=length(x);
Xraw=fft(x(:,2)); % needless to renormalized the amplitude coz we only want the frequency

% find the maximum peak and obtain the corresponding row index
% the first data is the DC component which is omitted because the value may
% be higher than the first harmonic and violate the peak finding
[I, J]=max(abs(Xraw(2:end)));
% I is useless

% estimate the points per cycle of the signal
pts_per_cycle=N/J;

if pts_per_cycle > 1000
% select 1 out of every jump data to reach 1000 points per cycle
jump = floor(pts_per_cycle/1000);
else
jump=1;
end

[f, amp, phi]=sinfapm(x(1:jump:end,2),fs/jump);
% amp and phi are useless

f

我们可以作图验证sinfapm是否正常工作了:


plot(t,ampsin(2pift+phi),'r-',t,x(:,2),'bo') % Figure 3

Figure 3 Effect of sinfapm

Figure 3 Effect of sinfapm

连幅度和相位都拟合得这么好,频率的拟合结果应该是可信的了。频率知道了之后,剩下的事情就不新鲜了,参见前一篇文章。


N=length(x);
pts_per_cycle=fs/f;
N_cycle=floor(N/pts_per_cycle);

N_cut=round(round(N_cycle/3)*pts_per_cycle); % use the last third of cycles
x=x(length(x)-N_cut:end,:); % crop the last N_cut data

Xraw=2*fft(x(:,2))/N_cut;
Xraw=Xraw(1:ceil(N_cut/2));
freq=0:fs/N_cut:fs/2-fs/N_cut;

A=abs(Xraw(round(N_cutf/fs)+1));
delta0=wrapTo2Pi(angle(Xraw(round(N_cut
f/fs)+1))+0.5pi);
frq=freq(round(N_cut
f/fs)+1); % this line can be omitted and use the f instead
x_rec=A.sin(2pifrq.x(:,1)+delta0); % frp can be replaced by f

Yraw=2*fft(x(:,3))/N_cut;
Yraw=Yraw(1:ceil(N_cut/2));

max_nr_harm=floor(fs/(2*f));
if max_nr_harm/2==floor(max_nr_harm/2)
max_nr_harm=max_nr_harm-1;
end

max_nr_harm=max_nr_harm-2;

if max_nr_harm>25
max_nr_harm=25;
end

I_n=zeros((max_nr_harm+1)/2,1);
delta_n=zeros((max_nr_harm+1)/2,1);

for i=1:(max_nr_harm+1)/2
I_n(i)=abs(Yraw(round((2i-1)N_cutf/fs)+1));
delta_n(i)=angle(Yraw(round((2
i-1)N_cutf/fs)+1))+0.5pi;
end
DC=abs(Yraw(1))
cos(angle(Yraw(1)))/2;

y_rec=zeros(length(x(:,3)),1); % create the variables for the reconstructed signals
for i=1:2:max_nr_harm
y_rec=y_rec+I_n((i+1)/2).sin(i2pif.*x(:,1)+delta_n((i+1)/2));
end
y_rec=y_rec+DC;

plot(x(:,2),x(:,3),'b-',x_rec,y_rec,'r-') % Figure 4

看效果:

Figure 4 Reconstruction of the LAOS results.

Figure 4 Reconstruction of the LAOS results.

我们的信号是已经转换成应力和应变的了。因此,Figure 4中横轴是应变,正负最值都是1.6,与软件命令值(160%)相符。我们换一个应变幅度为250%实验数据,结果如下:

Figure 5 Reconstruction of LAOS data

Figure 5 Reconstruction of LAOS data

γ0 = 250%时已有明显的非线性粘弹性。

计算非线性粘弹性参数

我们平时所说的G’G”,是FFT之后的基频幅值计算的。在线性粘弹性条件下,FFT之后只有一个基频帐,G’G”是“储能模量”和“损耗模量”。但是在非线性粘弹性条件下,G’G”只是许多n倍频谐波中的基频分量(n = 1),它们也没有“储能”或“损耗”的概念了。这一点要先搞清楚。

计算G’G”


delta=wrapTo2Pi(delta_n(1)-delta0);
G_p=cos(delta)I_n(1)/A;
G_pp=sin(delta)
I_n(1)/A;

In/1也可以直接计算:


In1=I_n(2:5)/I_n(1);

如何求切线

现在我们来计算GMGMGk参数。它们的定义已在上一篇文章中给出。根据定义,需要对曲线进行求导。在MATLAB如何做呢?按定义一步步来。

一个已经离散化了的曲线,要在曲线上某几何位置求切线,很可能并没有数据恰好落在这个点上,只能使用这个几何位置邻近的两个数据点,以这两个点所确定的直线作为切线。所以,如果一条曲率较大的曲线,离散化的取样频率又很低,那么很可能两个数据之间相隔很远,按以上办法求出来的切线与理想情况就会相差很远。也就是说,对离散数据求导的效果非常依赖于信号的取样质量(就是取样频率够不够高)。

其次,如果信号有噪音,那么作出的切线斜率将非常容易受噪音影响。在数值方法中,求导是一个放大噪音的操作。一个信号,很可能不求导的话,噪音还在可以接受的范围;一旦求导之后噪音就使信号无法分辨。因此,对离散数据求导的效果又非常依赖于信号的信噪比。

因此为了求得准确、稳定的导数,我们要采取一系列的办法。第一当然就是测试的时候让ADC以最高的采样频率进行采样(100 kHz)。

第二,这样高的采样频率,完全可以进行降采样(down sampling)。但我们的降采样方法不是像前文用过的那样简单地扔掉部分数据点——这样对于去噪没有任何效果——而是每几个数据点做一次平均值,这样的做法叫decimation,它的效果相当于使样品经过一个低通滤波品,把高于一定频率的信号消除掉。如果我们每N个数据取一个平均值,那么decimation之后的取样频率就是100000/N Hz。一开始,用远高于需要的取样频率取,称作过取样(oversampling)。Oversampling和decimation是信号采集中的一个基本操作,作为一种提供信噪比的标准步骤。使用FT Measurement采集的流变数据的时候,该软件是同时做了oversampling和decimation的,最终得到的文本数据文件的采样频率是decimation之后的采样频率。这方面内容,也可以参考我的博士论文的第二章。

第三,我们按照LAOS的假设(应力波型只有奇次谐波)对信号进行重构,用一个光滑的、公式计算的曲线来代替实验测得的、带有噪音的曲线。重构曲线是完全没有噪音的。这还不够——

第四,由于信号有很多个周期,那些过零点、最值点之类的几何位置,信号不止经过一次。那么,我们就把每次经过的这些位置所能作出的切线斜率都算出来,然后对这么多个周期得到的斜率曲一个平均值,进一步消除不同周期处的细微差别。

只有做足以上四个方面,才能比较保证地对绝大多数实测的LAOS数据进行准确可靠的求导操作。

在MATLAB中如何在重构的Lissajous曲线上找到要作切线的几何位点?根据定义,GM要找γ = 0,GL要找γ = γ0Gk要找σ = 0。我们需要确定这些几何位置邻近的两个数据点处在数据列中的第几行。以GM的计算为例(找γ = 0)。这相当于要找数据x_rec中取值经过零位的行。而且,我们只关心从小于零变成大于零的地方(这里默默假设了x_rec是没有直流分量的,如果有直流分量,x_rec波形的零位就不落在取值为零处,除非另把DC分量减去)。首先,我们把x_rec数据所有大于零的值标为1,小于零的值标为0。


A=x_rec;
A(A>0)=1;
A(A<0)=0;

在A这个临时变量,凡是导数不为零的地方就是转折点(不是从1变到0就是从0变到1),这些不为零的导数,不是等于1就是等于-1。由于我们只关心x_rec中从小于0变成大于零的地方,所以我们相当于只关心A的导数等于1的地方。


zero_ind=find(diff(A)>0);

以上用到的一些用逻辑式调用矩阵单元的方法,和find命令等,可以自己复习MATLAB的help。zero_ind就是x_rec中取值从负到正的第一个数据,即它是负的,然后第zero_ind+1是正的。我们可以临时作个图看看,我们找到的zero_ind位置都对不对:


plot(1:length(x_rec),x_rec,'-',zero_ind,zeros(length(zero_ind),1),'o') % Figure 6

Figure 6 Effect of zero finding

Figure 6 Effect of zero finding

求导、取平均,得到GM


G_M_raw=(y_rec(zero_ind+1)-y_rec(zero_ind))./(A(zero_ind+1)-A(zero_ind));
G_M=mean(G_M_raw);

我们可以再临时作个图看看这个切线取准了没有。但为作这个图,要先确定真实的位点在哪儿(不能还用那两个邻近数据点)。这个点,应该是两个相邻点所确定的直线与x = 0直线的交点。同样,这个交点也可以通过多个周期求平均而更为准确地确定。最终要作的切线,就是一条过这一交点,斜率为GM的直线,利用简单解析几何知识即可作出:


y_m_raw=-G_M_raw.x_rec(zero_ind+1)+y_rec(zero_ind+1);
y_m=mean(y_m_raw);
lx=min(x_rec):0.01:max(x_rec);
ly=G_M.
lx+y_m;
plot(x_rec,y_rec,'-b',lx,ly,'-r') % Figure 7

Figure 7 Effect of G_M calculation

Figure 7 Effect of G_M calculation

GL要找γ = γ0,即找x_rec中的最值。先对x_rec进行求导,问题就还原成找x_rec求导后的过零位,除了多一步求导之外,其余跟刚才的代码完全相同。注意的时,y_rec有明显的直流分量,计算时要减去。


A=diff(x_rec);
A(A>0)=1;
A(A<0)=0;

zero_ind=find(diff(A)<0);

G_L_raw=(y_rec(zero_ind)-DC)./x_rec(zero_ind);
G_L=mean(G_L_raw);

Gk是找σ = 0:


A=y_rec-DC;
A(A>0)=1;
A(A<0)=0;
zero_ind=find(diff(A)>0);

A=y_rec-DC;
G_k_raw=(A(zero_ind+1)-A(zero_ind))./(x_rec(zero_ind+1)-x_rec(zero_ind));

G_k=mean(G_k_raw);

至此,我已经完整地介绍了如何从实验获得的LAOS数据求出相应的非线性粘弹性参数。我再总结一下流程:

  1. 做实验,设定ADC采集参数进行数据采集(同时已进行oversampling和decimation,规定了信号的fs
  2. 通过对应变信号进行粗估和正弦拟合,获得实验的准确测试频率
  3. 对应变和应力信号进行重构
  4. 按照定义求得各非线性粘弹性参数

如果对实验体系以一系列的应变幅度进行了LAOS实验,然后想考察非线性参数随应变幅度的变化;那么,可以对每个应变幅度得到的LAOS数据做以上同样的操作,既编写一个循环结构来完成。这样的办法将在后面的文章中看到例子,此处不单独举例了。后面的文章主要介绍如何用流变学模型的结果(例如Giesekus模型)来拟合实验数据。

References

  1. K. Hyun, M. Wilhelm, C.O. Klein, K.S. Cho, J.G. Nam, K.H. Ahn, S.J. Lee, R.H. Ewoldt, and G.H. McKinley, "A review of nonlinear oscillatory shear tests: Analysis and application of large amplitude oscillatory shear (LAOS)", Progress in Polymer Science, vol. 36, pp. 1697-1753, 2011. http://dx.doi.org/10.1016/j.progpolymsci.2011.02.002