AUTO の流れ その2: 自作プログラムを埋めるなら,wrline or, wrtbv8

簡単な方法,2通り.

1) auto_f2c.h で,関数を宣言し,他のユーザー定義関数 func, stpnt, bcnd,... 等と同様,
自作プログラム内で実装.
autlib1.c 内,wrline or wrtbv8 やらの中で呼び出す.

2) $AUTO_DIR/include 内に,hoge.h 等の自作ヘッダーを置き,内部で実装もすませる.
(全て inline 関数じゃないと,文句言われることがある.)
これを,autlib1.c から include する.

wrline に埋め込めば,次のようなデータ(in fort.7, b.xxx)を1行出力する毎に実行.
なお,このデータは c.ab.1 を実行した時にえられたもの.

0 PT TY LAB PAR(1) L2-NORM U(1) U(2)
1 1 9 1 0.00000E+00 0.00000E+00 0.00000E+00 0.00000E+00
1 -2 0 0 4.04281E-03 1.95871E-02 4.10407E-03 1.91523E-02
1 -3 0 0 6.99872E-03 3.42930E-02 7.18538E-03 3.35318E-02
1 -4 0 0 1.13124E-02 5.63756E-02 1.18123E-02 5.51242E-02
1 -5 0 0 1.75190E-02 8.95500E-02 1.87633E-02 8.75622E-02

wrtbv8 に埋め込めば,画面に次のようなデータが1行出力される度に実行.
なお,このデータは c.ab.2 を編集し,実行したときに得られたもの.


BR PT TY LAB PAR(1) L2-NORM MAX(1) MAX(2) PERIOD
4 18 UZ 6 1.250000E-01 4.185429E+00 9.628463E-01 5.409282E+00 1.864186E+00
4 30 7 1.190639E-01 3.878593E+00 9.958913E-01 7.695505E+00 3.196121E+00
4 54 UZ 8 1.099999E-01 2.811169E+00 9.995226E-01 9.897750E+00 7.481753E+00
4 60 9 1.061332E-01 2.381096E+00 9.996230E-01 9.474918E+00 1.109164E+01



c.ab.2 は,その末尾を,次のように編集してある.


...
2 NUZR,(/,I,PAR(I)),I=1,NUZR)
1 0.11
1 0.125
NUZR で指定した値点での出力前後で呼ばれる関数を調べたが,NPR で指定したのと同じだった.




AUTO> run(c="ab.1")
Starting ab ...
# uniker : call autoae
# uniker : call sthd
# uniker : call wrline

BR PT TY LAB PAR(1) L2-NORM U(1) U(2)
1 1 EP 1 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00
# uniker : call wrline
# uniker : call wrline
# uniker : call wrline
# uniker : call wrline
...
Total Time 8.128E-02
ab ... done
AUTO> save("ab1")
rSaving fort.7 as b.ab1 ... done
Saving fort.8 as s.ab1 ... done
Saving fort.9 as d.ab1 ... done
AUTO> run(c="ab.2",s="ab1")
Starting ab ...
# uniker : call autobv
# uniker : call cnrlbv
# uniker : call rsptbv
# uniker : call STPNT_TYPE_BVP(*stpnt) in rsptbv
# uniker : call stpnps
# uniker : call funi in stpnps
# uniker : call setrtn
# uniker : call sthd
# uniker : call stplbv
# uniker : call wrline

BR PT TY LAB PAR(1) L2-NORM MAX(1) MAX(2) PERIOD
# uniker : call extrbv
# uniker : call stplbv
# uniker : call wrline
# uniker : call extrbv
# uniker : call stupbv
# uniker : call stplbv
# uniker : call wrline
# uniker : call adapt
...
# uniker : call stupbv
# uniker : call extrbv
# uniker : call stupbv
# uniker : call stplbv
# uniker : call wrline
4 18 UZ 6 1.250000E-01 4.185429E+00 9.628463E-01 5.409282E+00 1.864186E+00
# uniker : call wrtbv8
# uniker : call adapt
# uniker : call extrbv
# uniker : call stupbv
# uniker : call stplbv
# uniker : call wrline


stplbv

  • > wrline 画面出力,fort.7 fort.9 出力
  • > wrtbv8 fort.8 出力