这段时间用 FEKO 建了许多模型,例如上面这个
Koch 曲线的分形天线模型。
由于 FEKO Editor 本身不帯语法高亮,于是在 vim 中高亮了关键词,并且做了一些辅助功能。
1 augroup FEKO
2 autocmd!
3 autocmd BufNewFile,BufRead *.pre set filetype=feko
4 autocmd BufNewFile,BufRead *.qf set filetype=feko
5 autocmd filetype qf call HighlightFekoLog()
6 autocmd filetype feko call Feko()
7 augroup END
8
9 function! Feko()
10 set syntax=feko
11
12 syn case ignore
13 syn match fekoComment '^\*\*.*$'
14 syn match fekoNumber '\<[+-]\?\d\+\(\.\d\+\)\?\([eE][+-]\?\d\+\)\?\|\<[+-]\?\.\(\d\+\)\?\([eE][+-]\?\d\+\)\?'
15 syn region fekoString start=+L\="+ end=+"+
16 syn match fekoError '^\s\+.*$'
17
18 syn match fekoMacro '^!!\s*\w\S\+'
19 syn match fekoCard '^\w\S'
20 syn keyword fekoFunction then sin cos tan cot arcsin arccos
21 \ atan2 arccot sinh cosh tanh besj besy besi
22 \ besk sqrt log ln exp abs deg rad step ceil
23 \ floor max min fmod x_coord y_coord z_coord
24 \ fileread and or not defined
25 syn match fekoCompare '[<>]=\?\|=\|<>'
26 syn match fekoVar '#\w\+'
27 syn match fekoConstant '\#\(pi\|eps0\|mu0\|c0\|zf0\|true\|false\)'
28 hi def link fekoComment Comment
29 hi def link fekoString String
30 hi def link fekoError Error
31 hi def link fekoNumber Number
32 hi def link fekoMacro Macro
33 hi def link fekoCard Statement
34 hi def link fekoFunction Operator
35 hi def link fekoCompare Operator
36 hi def link fekoConstant Constant
37 hi def link fekoVar Identifier
38
39 let b:current_syntax = "feko"
40
41
42 setlocal makeprg=runfeko\ %
43
44 let b:current_compiler = "feko"
45 endfunction
46
47 function! HighlightFekoLog ()
48 syn case ignore
49 syn match fekoLogError '^\W*error.*$'
50 syn match fekoLogWarning '^\W*WARNING.*$'
51 syn match fekoLogNote '^\W*NOTE.*$'
52 syn match fekoLogPrint '^\W*PRINT.*$'
53
54 hi def link fekoLogError Error
55 hi def link fekoLogWarning Macro
56 hi def link fekoLogNote Comment
57 hi def link fekoLogPrint Comment
58 endfunction