本プログラムにはデータ作成ライブラリが添付しています。
これはC言語のプログラムを作成して入力データを出力するためのライブラリです。
以下のような用途に使用します。
ファイル構成
datalibフォルダにデータ作成ライブラリのソースコード(oth_datalib.c)
とヘッダーファイル(oth_datalib.h)があります。
ユーザーがプログラムを作成するときはoth_datalib.hをincludeし、
コンパイル時にoth_datalib.cを追加して下さい。
関数一覧
表4-7-1に関数一覧を示します。
関数については以下の規則があります。
1 関数名 | oth_init |
機能 | 初期化します。必須です。 |
宣言 | void oth_init(void); |
備考 |
他のすべての関数の前に一度呼び出すことが必要です。 |
2 関数名 | oth_section_size |
機能 | 区間の最大数を指定します。オプションです。 |
宣言 | void oth_section_size(int size); |
引数 |
size : 区間の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
3 関数名 | oth_material_size |
機能 | 物性値の最大数を指定します。オプションです。 |
宣言 | void oth_material_size(int size); |
引数 |
size : 物性値の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
4 関数名 | oth_geometry_size |
機能 | 幾何形状の最大数を指定します。オプションです。 |
宣言 | void oth_geometry_size(int size); |
引数 |
size : 幾何形状の最大数(既定値:100000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
5 関数名 | oth_feed_size |
機能 | 給電点の最大数を指定します。オプションです。 |
宣言 | void oth_feed_size(int size); |
引数 |
size : 給電点の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
6 関数名 | oth_load_size |
機能 | 集中定数の最大数を指定します。オプションです。 |
宣言 | void oth_load_size(int size); |
引数 |
size : 集中定数の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
7 関数名 | oth_point_size |
機能 | 観測点の最大数を指定します。オプションです。 |
宣言 | void oth_point_size(int size); |
引数 |
size : 観測点の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
8 関数名 | oth_far1d_size |
機能 | 遠方界面の最大数を指定します。オプションです。 |
宣言 | void oth_far1d_size(int size); |
引数 |
size : 遠方界面の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
9 関数名 | oth_near1d_size |
機能 | 近傍界観測線の最大数を指定します。オプションです。 |
宣言 | void oth_near1d_size(int size); |
引数 |
size : 近傍界観測線の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
10 関数名 | oth_near2d_size |
機能 | 近傍界観測面の最大数を指定します。オプションです。 |
宣言 | void oth_near2d_size(int size); |
引数 |
size : 近傍界観測面の最大数(既定値:1000) |
備考 |
2-10の関数はoth_initの直後に呼び出すことが必要です。 |
11 関数名 | oth_title |
機能 | データにタイトルを付けます。オプションです。 |
宣言 | void oth_title(const char title[]); |
引数 |
title : タイトル |
備考 |
計算結果には関係ありませんが、データの管理に使用します。 |
12 関数名 | oth_xsection1 |
機能 | X方向の区間区切り位置を追加します。複数回呼び出し可。 |
宣言 | void oth_xsection1(double x); |
引数 |
x : X方向の区間区切り位置 |
13 関数名 | oth_ysection1 |
機能 | Y方向の区間区切り位置を追加します。複数回呼び出し可。 |
宣言 | void oth_ysection1(double y); |
引数 |
y : Y方向の区間区切り位置 |
14 関数名 | oth_zsection1 |
機能 | Z方向の区間区切り位置を追加します。複数回呼び出し可。 |
宣言 | void oth_zsection1(double z); |
引数 |
z : Z方向の区間区切り位置 |
15 関数名 | oth_xdivision1 |
機能 | X方向の区間分割数を追加します。複数回呼び出し可。 |
宣言 | void oth_xdivision1(int n); |
引数 |
n : X方向の区間分割数 |
16 関数名 | oth_ydivision1 |
機能 | Y方向の区間分割数を追加します。複数回呼び出し可。 |
宣言 | void oth_ydivision1(int n); |
引数 |
n : Y方向の区間分割数 |
17 関数名 | oth_zdivision1 |
機能 | Z方向の区間分割数を追加します。複数回呼び出し可。 |
宣言 | void oth_zdivision1(int n); |
引数 |
n : Z方向の区間分割数 |
18 関数名 | oth_xsection |
機能 | X方向の区間区切り位置を指定します。 |
宣言 | void oth_xsection(int n, ...); |
引数 |
n : X方向の区間区切り位置の数(=X方向の区間数+1) ... : X方向の区間区切り位置(n個のdouble型数値) |
19 関数名 | oth_ysection |
機能 | Y方向の区間区切り位置を指定します。 |
宣言 | void oth_ysection(int n, ...); |
引数 |
n : Y方向の区間区切り位置の数(=Y方向の区間数+1) ... : Y方向の区間区切り位置(n個のdouble型数値) |
20 関数名 | oth_zsection |
機能 | Z方向の区間区切り位置を指定します。 |
宣言 | void oth_zsection(int n, ...); |
引数 |
n : Z方向の区間区切り位置の数(=Z方向の区間数+1) ... : Z方向の区間区切り位置(n個のdouble型数値) |
21 関数名 | oth_xdivision |
機能 | X方向の区間分割数を指定します。 |
宣言 | void oth_xdivision(int n, ...); |
引数 |
n : X方向の区間数 ... : X方向の区間分割数(n個のint型整数) |
22 関数名 | oth_ydivision |
機能 | Y方向の区間分割数を指定します。 |
宣言 | void oth_ydivision(int n, ...); |
引数 |
n : Y方向の区間数 ... : Y方向の区間分割数(n個のint型整数) |
23 関数名 | oth_zdivision |
機能 | Z方向の区間分割数を指定します。 |
宣言 | void oth_zdivision(int n, ...); |
引数 |
n : Z方向の区間数 ... : Z方向の区間分割数(n個のint型整数) |
24 関数名 | oth_material |
機能 | 物性値を追加します。数値で指定します。複数回呼び出し可。 |
宣言 | void oth_material(double epsr1, double epsr2, double mur1, double mur2); |
引数 |
epsr1 : 比誘電率の実部 epsr2 : 比誘電率の虚部(>=0) mur1 : 比透磁率の実部 mur2 : 比透磁率の虚部(>=0) |
備考 |
入力した順に物性値番号2,3,...が与えられます。
真空(=0)と完全導体(PEC)(=1)は予め登録されていますので不要です。 |
25 関数名 | oth_material_dispersion |
機能 | 物性値を追加します。分散ファイル名で指定します。複数回呼び出し可。 |
宣言 | void oth_material_dispersion(const char fn[]); |
引数 |
fn : 分散ファイル名 |
備考 |
入力した順に物性値番号2,3,...が与えられます。
真空(=0)と完全導体(PEC)(=1)は予め登録されていますので不要です。 |
26 関数名 | oth_geometry |
機能 | 物体形状を追加します。複数回呼び出し可。 |
宣言 | void oth_geometry(int m, int g, double x1, double x2, double y1, double y2, double z1, double z2); |
引数 |
m : 物性値番号(0以上、oth_material関数で指定されたもの) g : 形状番号(形状番号=31,32,33以外) x1,x2,y1,y2,z1,z2 : 座標値 |
備考 |
形状番号の意味と座標の並びについては4.3を参考にしてください。 |
27 関数名 | oth_geometry_array |
機能 | 物体形状を追加します。座標を配列で指定します。複数回呼び出し可。 |
宣言 | void oth_geometry_array(int m, int g, const double p[]); |
引数 |
m : 物性値番号(0以上、oth_material関数で指定されたもの) g : 形状番号 p : 座標値、三角柱(形状番号=31,32,33)は8個、それ以外は6個 |
備考 |
形状番号の意味と座標の並びについては4.3を参考にしてください。 |
28 関数名 | oth_geometry_name |
機能 | 直前に呼び出した物体形状に名前を与えます。オプションです。 |
宣言 | void oth_geometry_name(const char name[]); |
引数 |
name : 名前 |
備考 |
本関数はデータの管理に使用するものであり、計算には使用しません。 |
29 関数名 | oth_feed |
機能 | 給電点を設定します。複数回呼び出し可。 |
宣言 | void oth_feed(char dir, double x, double y, double z, double volt, double phase, double z0); |
引数 |
dir : 給電の向き('X', 'Y', 'Z'のいずれか) x : 給電点のX座標 y : 給電点のY座標 z : 給電点のZ座標 volt : 電圧[V] phase : 位相[度] z0 : 給電線の特性インピーダンス[Ω] |
備考 |
実際に計算に使用される給電点の位置は、指定した位置に最も近い向きの一致するYee格子電界点です。 給電点と平面波入射のどちらか一方が必須です。 |
30 関数名 | oth_planewave |
機能 | 平面波入射を設定します。 |
宣言 | void oth_planewave(double theta, double phi, int pol); |
引数 |
theta : 原点から見た入射方向のθ[度] phi : 原点から見た入射方向のφ[度] pol : 偏波、1:垂直偏波、2:水平偏波、3:右旋円偏波、4:左旋円偏波 |
備考 |
給電点と平面波入射のどちらか一方が必須です。 |
31 関数名 | oth_planewave_ellipse |
機能 | 楕円偏波の平面波入射を指定します。 |
宣言 | void oth_planewave_ellipse(double theta, double phi, double a, double r); |
引数 |
theta : 原点から見た入射方向のθ[度] phi : 原点から見た入射方向のφ[度] a : 主軸のθ軸からφ軸への傾き[度] r : 軸比(-1≤r≤+1) |
備考 |
給電点と平面波入射のどちらか一方が必須です。 |
32 関数名 | oth_semispace |
機能 | 半領域への平面波入射を設定します。オプションです。 |
宣言 | void oth_semispace(char dir, double pos); |
引数 |
dir : 半領域の向き('X', 'Y', 'Z'のいずれか) pos : 半領域の境界面の座標 |
備考 |
半領域とは空間を二つに分けて平面波入射の電界を入射波、反射波、透過波に分ける方法です。
平面波入射のとき有効です。 |
33 関数名 | oth_fullspace |
機能 | 背景媒質を真空以外に設定します。オプションです。 |
宣言 | void oth_fullspace(void); |
備考 |
平面波入射のとき有効です。 |
34 関数名 | oth_point |
機能 | Sパラメーター計算用の観測点を追加します。複数回呼び出し可。オプションです。 |
宣言 | void oth_point(char dir, double x, double y, double z, const char prop[]); |
引数 |
dir : 電界の向き('X', 'Y', 'Z'のいずれか) x : 観測点のX座標 y : 観測点のY座標 z : 観測点のZ座標 prop : 第1観測点での伝搬方向("+X", "-X", "+Y", "-Y", "+Z", "-Z"のいずれか) |
備考 |
実際に計算に使用される給電点の位置は、指定した位置に最も近い向きの一致するYee格子電界点です。 |
35 関数名 | oth_load |
機能 | 集中定数を設定します。複数回呼び出し可。オプションです。 |
宣言 | void oth_load(char dir, double x, double y, double z, char type, double rcl); |
引数 |
dir : 集中定数の向き('X', 'Y', 'Z'のいずれか) x : 集中定数のX座標 y : 集中定数のY座標 z : 集中定数のZ座標 type : 'R':抵抗、'C':キャパシタ、'L':インダクタ rcl : 集中定数の値、R[Ω]またはC[Farad]またはL[Henry] |
備考 |
実際に計算に使用される集中定数の位置は、指定した位置に最も近い向きの一致するYee格子電界点です。 |
36 関数名 | oth_frequency |
機能 | 周波数を指定します。必須です。 |
宣言 | void oth_frequency(double fstart, double fend, int div); |
引数 |
fstart : 開始周波数[Hz] fend : 終了周波数[Hz] div : 周波数分割数 |
備考 |
単一周波数のときはfstart=fend, div=0として下さい。 |
37 関数名 | oth_pml |
機能 | 吸収境界条件にPMLを指定します。オプションです。 |
宣言 | void oth_pml(int l, double m, double r0); |
引数 |
l : PML層数L m : PML次数M r0 : PML反射係数R0 |
備考 |
推奨値はl=5, m=2, r0=1e-5です。 本関数を呼び出さないときは吸収境界条件はMur一次になります。 |
38 関数名 | oth_pbc |
機能 | 周期境界条件を指定します。オプションです。 |
宣言 | void oth_pbc(int i0, int i1, int i2); |
引数 |
i0 : X方向周期境界条件 i1 : Y方向周期境界条件 i2 : Z方向周期境界条件 |
39 関数名 | oth_solver |
機能 | 反復計算条件を指定します。オプションです。 |
宣言 | void oth_solver(int maxiter, int nout, double converg); |
引数 |
maxiter : 最大反復回数 nout : 途中経過を出力する間隔 converg : 収束判定条件(通常1e-3~1e-5) |
備考 |
本関数を呼び出さないときは適当な既定値が設定されますが、収束状況を見て適当に設定することが大切です。 |
40 関数名 | oth_matchingloss |
機能 | アンテナの利得に整合損を含めます。オプションです。 |
宣言 | void oth_matchingloss(void); |
引数 | なし |
備考 |
本関数を呼び出さないときはアンテナの利得は整合損を含みません。 |
41 関数名 | oth_plotiter |
機能 | 収束状況を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotiter(int i0, int i1); |
引数 |
i0 : 残差を図形出力します。 i1 : 平均電界誤差を図形出力します。 |
42 関数名 | oth_plotsmith |
機能 | スミスチャートを2Dで図形出力します。オプションです。 |
宣言 | void oth_plotsmith(void); |
引数 | なし |
43 関数名 | oth_plotzin |
機能 | 入力インピーダンスの周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotzin(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[Ω] max : 最大[Ω] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
44 関数名 | oth_plotyin |
機能 | 入力アドミッタンスの周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotyin(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[S] max : 最大[S] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 min, maxの単位はSです。例えば100mSのときは"0.1"または"100e-3"と入力してください。 |
45 関数名 | oth_plotref |
機能 | 反射係数の周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotref(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[dB] max : 最大[dB] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
46 関数名 | oth_plotspara |
機能 | Sパラメーターの周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotspara(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[dB] max : 最大[dB] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
47 関数名 | oth_plotloss |
機能 | 全損失の周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotloss(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[dB] max : 最大[dB] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
48 関数名 | oth_plotcoupling |
機能 | 結合度の周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotcoupling(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[dB] max : 最大[dB] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
49 関数名 | oth_plotfar0d |
機能 | 指定した方向の遠方界の周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void oth_plotfar0d(double theta, double phi, int scale, double min, double max, int div); |
引数 |
theta : θ[度] phi : φ[度] scale=1/2 : 自動スケール/指定スケール min : 最小[dB] max : 最大[dB] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
50 関数名 | oth_freqdiv |
機能 | 周波数軸の分割数を指定します。オプションです。 |
宣言 | void oth_freqdiv(int div); |
引数 |
div : 分割数 |
備考 |
本関数を呼び出さないときはdiv=10になります。 |
51 関数名 | oth_plotfar1d |
機能 | 遠方界面上パターンを2Dで図形出力します。複数回呼び出し可。オプションです。 |
宣言 | void oth_plotfar1d(char dir, int div, double angle); |
引数 |
dir : 遠方界面の向き('X', 'Y', 'Z', 'V', 'H'のいずれか) div : 360度の分割数 angle : dir='V'のときの一定角φ[度]、dir='H'のとき一定角θ[度]、それ以外はダミー |
備考 |
dir='X' : X面すなわちYZ面 dir='Y' : Y面すなわちZX面 dir='Z' : Z面すなわちXY面 dir='V' : φ一定の垂直断面(θ=0-360度) dir='H' : θ一定の水平断面(φ=0-360度) |
52 関数名 | oth_far1dstyle |
機能 | 遠方界面上パターンの図形出力の表示法を指定します。オプションです。 |
宣言 | void oth_far1dstyle(int i0); |
引数 |
i0 : 0=円プロット、1=XYプロット。既定値は0です。 |
53 関数名 | oth_far1dcomponent |
機能 | 遠方界面上パターンの図形出力の成分を選択します。オプションです。 |
宣言 | void oth_far1dcomponent(int i0, int i1, int i2); |
引数 |
i0=1 : θ成分とφ成分を図形出力します。 i1=1 : 楕円偏波の主軸と副軸を図形出力します。 i2=1 : 左右円偏波成分を図形出力します。 |
備考 |
本関数を呼び出さないときはi0=1, i1=0, i2=0になります。 |
54 関数名 | oth_far1ddb |
機能 | 遠方界面上パターンの図形出力の単位を指定します。オプションです。 |
宣言 | void oth_far1ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位はdBです。 |
55 関数名 | oth_far1dnorm |
機能 | 遠方界面上パターンの図形出力を最大値で正規化します。オプションです。 |
宣言 | void oth_far1dnorm(void); |
引数 | なし |
備考 |
本関数を呼び出さないときは正規化しません。 |
56 関数名 | oth_far1dscale |
機能 | 遠方界面上パターンの図形出力のスケールを指定します。オプションです。 |
宣言 | void oth_far1dscale(double min, double max, int div); |
引数 |
min : 最小値 max : 最大値 div : 分割数 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
57 関数名 | oth_plotfar2d |
機能 | 遠方界全方向パターンを3Dで図形出力します。 |
宣言 | void oth_plotfar2d(int divtheta, int divphi); |
引数 |
divtheta : θ方向(0-180度)の分割数 divphi : φ方向(0-360度)の分割数 |
備考 |
本関数は1回だけ有効です。 |
58 関数名 | oth_far2dcomponent |
機能 | 遠方界全方向パターンの図形出力の成分を選択します。オプションです。 |
宣言 | void oth_far2dcomponent(int i0, int i1, int i2, int i3, int i4, inti5, int i6); |
引数 |
i0=1 : 絶対値を図形出力します。 i1=1 : θ成分を図形出力します。 i2=1 : φ成分を図形出力します。 i3=1 : 楕円偏波の主軸を図形出力します。 i4=1 : 楕円偏波の副軸を図形出力します。 i5=1 : 右旋円偏波成分を図形出力します。 i6=1 : 左旋円偏波成分を図形出力します。 |
備考 |
本関数を呼び出さないときは i0=1, i1=0, i2=0, i3=0, i4=0, i5=0, i6=0 になります。 |
59 関数名 | oth_far2ddb |
機能 | 遠方界全方向パターンの図形出力の単位を指定します。オプションです。 |
宣言 | void oth_far2ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位はdBです。 |
60 関数名 | oth_far2dscale |
機能 | 遠方界全方向パターンの図形出力のスケールを指定します。オプションです。 |
宣言 | void oth_far2dscale(double min, double max); |
引数 |
min : 最小値 max : 最大値 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
61 関数名 | oth_far2dobj |
機能 | 遠方界全方向パターンの図形出力の物体表示の大きさを指定します。オプションです。 |
宣言 | void oth_far2dobj(double factor); |
引数 |
factor : 相対的な大きさ |
備考 |
本関数を呼び出さないときの既定値は0.5です。 |
62 関数名 | oth_plotnear1d |
機能 | 近傍界線上の電磁界分布を2Dで図形出力します。複数回呼び出し可。オプションです。 |
宣言 | void oth_plotnear1d(char component, char dir, double p1, double p2); |
引数 |
component : 計算する成分('E', 'H'のどちらか) dir : 線の向き('X', 'Y', 'Z'のいずれか) p1, p2 : 線の座標、向きがXのときはY,Z座標、向きがYのときはZ,X座標、向きがZのときはX,Y座標 |
63 関数名 | oth_near1ddb |
機能 | 近傍界線上分布図の単位を指定します。オプションです。 |
宣言 | void oth_near1ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位は線形です。 |
64 関数名 | oth_near1dscale |
機能 | 近傍界線上分布図のスケールを指定します。オプションです。 |
宣言 | void oth_near1dscale(double min, double max, int div); |
引数 |
min : 最小値 max : 最大値 div : 分割数 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
65 関数名 | oth_near1dexclude |
機能 | 近傍界線上分布図の電磁界を指定します。オプションです。 |
宣言 | void oth_near1dexclude(int i0); |
引数 |
i0=0:全電磁界(既定値),1:散乱電磁界,2:入射電磁界 |
備考 |
平面波入射のとき意味があります。 |
66 関数名 | oth_plotnear2d |
機能 | 近傍界面上の電磁界分布を2Dまたは3Dで図形出力します。複数回呼び出し可。オプションです。 |
宣言 | void oth_plotnear2d(const char component[], char dir, double p); |
引数 |
component : 計算する成分("E", "Ex", "Ey", "Ez", "H", "Hx", "Hy", "Hz"のいずれか) dir : 面の向き('X', 'Y', 'Z'のいずれか) p : 面の座標 |
67 関数名 | oth_near2ddim |
機能 | 近傍界面上分布図の2D図と3D図を選択します。オプションです。 |
宣言 | void oth_near2ddim(int i0, int i1); |
引数 |
i0 : 2D図を出力するか(0/1)。既定値は1です。 i1 : 3D図を出力するか(0/1)。既定値は1です。 |
68 関数名 | oth_near2dframe |
機能 | 近傍界面上分布図の動画のフレーム数を指定します。オプションです。 |
宣言 | void oth_near2dframe(int i0); |
引数 |
i0 : 1周期のフレーム数 |
備考 |
本関数を呼び出さないときは動画は図形出力されません。 |
69 関数名 | oth_near2ddb |
機能 | 近傍界面上分布図の単位を指定します。オプションです。 |
宣言 | void oth_near2ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位は線形です。 |
70 関数名 | oth_near2dscale |
機能 | 近傍界面上分布図のスケールを指定します。オプションです。 |
宣言 | void oth_near2dscale(double min, double max); |
引数 |
min : 最小値 max : 最大値 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
71 関数名 | oth_near2dcontour |
機能 | 近傍界面上分布図の描画方法を指定します。オプションです。 |
宣言 | void oth_near2dcontour(int i0); |
引数 |
i0 : 0=カラー精細(既定値)、1=カラー簡易、2=モノクロ精細、3=モノクロ簡易 |
72 関数名 | oth_near2dobj |
機能 | 近傍界面上分布図に物体を描くか。オプションです。 |
宣言 | void oth_near2dobj(int i0); |
引数 |
i0 : 0=描かない、1=描く。既定値は1です。 |
73 関数名 | oth_near2dexclude |
機能 | 近傍界面上分布図の電磁界を指定します。オプションです。 |
宣言 | void oth_near2dexclude(int i0); |
引数 |
i0=0:全電磁界(既定値),1:散乱電磁界,2:入射電磁界 |
備考 |
平面波入射のとき意味があります。 |
74 関数名 | oth_near2dzoom |
機能 | 近傍界面上分布図を一部を拡大します。オプションです。 |
宣言 | void oth_near2dzoom(double h0, double h1, double v0, double v1); |
引数 |
h0,h1:横方向の下限と上限 v0,v1:縦方向の下限と上限 |
備考 |
面の向きがX/Y/Z方向のとき、横-縦は順にY-Z/X-Z/X-Yです。 |
77 関数名 | oth_outdata |
機能 | 出力ファイル名を指定します。必須です。 |
宣言 | void oth_outdata(const char file[]); |
引数 |
file : 出力ファイル名。拡張子は".oth"推奨。 |
メッシュデータについての注意事項
メッシュデータはX方向、Y方向、Z方向から成り、それぞれ1個以上の区間から成ります。
それらを入力するには例えばX方向については、
oth_xsection1とoth_xdivision1を組み合わせるか、
oth_xsectionとoth_xdivisionを使用するかの2通りがあります。
これらはどちらか一方が有効です。
前者では区間の数だけoth_xsection1とoth_xdivision1を呼び出し、
最後にoth_xsection1で終わります。
後者ではoth_xsectionとoth_xdivisionを一回呼び出します。
なお、後者では引数の数が可変になります。
可変個の引数に数値を直接代入するときは整数(int)であるか実数(double)であるかわかるように入力する必要があります。
整数は例えば"1"となります。
実数は例えば"1.0", "1e-3", "1.0e-3"となります。
サンプルプログラム
リスト4-7-1にデータ作成ライブラリを使用したサンプルプログラムを示します。
リスト4-7-1 データ作成ライブラリ用サンプルプログラム
/* sample1.c OpenTHFDデータ作成ライブラリ、サンプルプログラム No.1 コンパイル+実行: Windows + VC++: > cl.exe /O2 sample1.c oth_datalib.c > sample1.exe Linux + gcc: $ gcc -O sample1.c oth_datalib.c -o sample1 $ ./sample1 */ #include "oth_datalib.h" int main(void) { // initialize oth_init(); // title oth_title("sample1"); // mesh oth_xsection(2, -75e-3, +75e-3); oth_xdivision(1, 30); oth_ysection(2, -75e-3, +75e-3); oth_ydivision(1, 30); oth_zsection(4, -72.5e-3, -22.5e-3, +22.5e-3, +72.5e-3); oth_zdivision(3, 10, 9, 10); // material oth_material(2.0, 0.0, 1.0, 0.0); // not used // geometry oth_geometry(1, 1, 0e-3, 0e-3, 0e-3, 0e-3, -22.5e-3, +22.5e-3); oth_name("dipole"); // source oth_feed('Z', 0e-3, 0e-3, 0e-3, 1, 0, 50); // ABC //oth_pml(5, 2, 1e-5); // frequency oth_frequency(2e9, 3e9, 5); // solver oth_solver(2000, 100, 1e-4); // iteration oth_plotiter(1, 1); // frequency char.s oth_plotsmith(); oth_plotzin(1, 0, 0, 0); oth_plotyin(1, 0, 0, 0); oth_plotref(1, 0, 0, 0); //oth_plotfar0d(90, 0, 1, 0, 0, 0); //oth_freqdiv(10); // far-1d oth_plotfar1d('X', 72, 0); // far-2d oth_plotfar2d(18, 36); // near-1d oth_plotnear1d("E", 'Z', 30e-3, 0e-3); // near-2d oth_plotnear2d("E", 'X', 30e-3); // output options //oth_far1dstyle(1); //oth_far1dcomponent(1, 0, 0); //oth_far1ddb(1); //oth_far1dscale(-30, +10, 4); //oth_far2dcomponent(1, 0, 0, 0, 0, 0,0); //oth_far2ddb(1); //oth_far2dscale(-30, +10); //oth_far2dobj(0.5); //oth_near1ddb(1); //oth_near1dscale(-30, +10, 4); //oth_near1dexclude(); //oth_near2ddb(1); //oth_near2dscale(-30, +10); //oth_near2ddim(1, 1); //oth_near2dcontour(0); //oth_near2dobj(1); //oth_near2dexclude(); //oth_near2dzoom(-50e-3, +50e-3, -50e-3, +50e-3); // output oth_outdata("sample1.oth"); return 0; }
コンパイル・実行方法
データ作成ライブラリを使用したソースコードをコンパイル・実行する方法は以下の通りです。
Windows+VC++の場合
> cl.exe /O2 sample1.c oth_datalib.c > sample1.exeLinux+gccの場合
$ gcc -O sample1.c oth_datalib.c -o sample1 $ ./sample1以上でファイル(ここではsample1.oth)が出力されます。
リスト4-7-2 データ作成ライブラリのサンプルデータ
OpenTHFD 4 0 title = sample1 xmesh = -0.075 30 0.075 ymesh = -0.075 30 0.075 zmesh = -0.0725 10 -0.0225 9 0.0225 10 0.0725 material = 1 2 0 1 0 geometry = 1 1 0 0 0 0 -0.0225 0.0225 name = dipole feed = Z 0 0 0 1 0 50 frequency = 2e+09 3e+09 5 solver = 2000 100 0.0001 plotiter = 1 1 plotsmith = 1 plotzin = 1 plotyin = 1 plotref = 1 plotfar1d = X 72 far1dstyle = 0 far1dcomponent = 1 0 0 far1ddb = 1 plotfar2d = 18 36 far2dcomponent = 1 0 0 0 0 0 0 far2ddb = 1 far2dobj = 0.5 plotnear1d = E Z 0.03 0 near1ddb = 0 plotnear2d = E X 0.03 near2ddb = 0 near2ddim = 1 1 near2dcontour = 0 near2dobj = 1 end