使用meep,如果要用到自定义的振幅,则一定要学会定义函数了。在libctl中,定义函数的格式是这样的
(define (myfunc p1 p2)
(+ p1 p2))
以上一个例子哦,表明函数myfunc有两 个输入 变量 p1 p2,这个函数的返回值 是p1+p2
这样的话,在meep里面使用自定义的源振幅,就可以这样了
(amp-func myamp)
程序在执行到amp-func后,会自动的向myamp函数输入 一个相对坐标值(相对于源中心)x
因此,我们应该在这之前定义myamp如下
(define (myamp x)
(函数表达式) )
如果我们想定义的振幅不仅仅与x有关,还与其它量,比如一个角度theta有关,那该怎 么办呢?
应该如下
(define (myamp theta) x)
(函数表达式))
这样的表达法很有意思吧,它又将(myamp theta)作为一个函数了,定义这个函数要求一个输入 变量x。
如此在使用amp-func时候就可以这样了
(amp-func (myamp 0.1))
0.1就是输入 的theta变量了.(myamp 0.1)被系统认为是自定义的振幅函数了。执行时在其它后自动加入变量x.
这只是我个人的理解,可能有偏误,呵呵
