在这一部分,我们开始理解DDSCAT程序设计中的一些参数问题。
承接第二部分内容中的ddscat.par文件,我们来聊一聊偶极子、实际体积、有效半径等关键词。
一、偶极子点阵
手册中说,我们需要设计模型(target/目标),它是有偶极子点阵组成的。偶极子,顾名思义,是由一对电荷组成的,但我们不用设计一对,我们设计一个点就行,一个点就代表一对。我们后面说的偶极子点,就代表一对偶极子。
对于第二部分,我们设计的block模型,我们给'RCTGLPRSM'设定了一组参数,16 32 32,这表示这个模型是由分布在x,y,z轴上总共16*32*32=16384个偶极子点组成的。
当我们ddscat.exe运行完程序之后,会有一个target.out文件产生,其中记录了每个偶极子点的坐标位置(IX, IY, IZ)。
然后,我们来给大家一个图,将这种偶极子点阵直观表示出来。
16 32 32模型的偶极子点数太多了,我们这里就设计一个4 8 8的模型。
二、实际体积和有效半径
下面我们来聊一下ddscat.par中的有效半径aeff(Effective Radii (micron))这个参数。
在DDSCAT的设计中,我们需要知道自己的模型的实际大小,不论是什么形状的模型,程序都会将他等体积地转换为一个球体来得出一个有效半径来进行后续计算。
那么上面公式中的V就是我们已知自己模型的实际体积,一般自己都可以通过计算得出。比如,你做了一个纳米球,根据从TEM或者SEM图中测得的半径,就可计算出其体积。然后根据公式(4),计算出模型的有效半径。
这个公式是不是看起来很熟悉,没错,就是球体体积计算公式的反推。他与 V=4πR^3/3 刚好是相逆的。
我们在来看d这个参数,它代表的是相邻偶极子点之间的距离。因为N代表的是偶极子总数,所以,d代表偶极子点之间的距离你应该很好理解吧。很好想到,当V不变时,d越小(即N越大),那么我们模拟的模型精度就越低,d越大(即N越小),则计算速度会降低。
在实际操作中,我们一般不需要在ddscat.par中去设定d这个参数,我们需要设定的是aeff有效半径这个参数,V已知,aeff自然可以简单算出。而d这个参数,DDSCAT会帮你计算出来,在一些结果文件中有所记录。
三、使用Matlab自行设计shape.dat文件
理解了实际体积和有效半径,我们接下来学习如何自己设计模型,而不在只是使用软件里面自带的模型。我们通过一个经典的核壳纳米球模型的设计来开始。
对于球形模型的设计,思路很简单,循环遍历N个点,将距离球心距离小于等我我们需要的半径的点筛选出来就行。
在这里,给大家准备了两种形式的Matlab代码&#