本プログラムにはデータ作成ライブラリが添付しています。
これはC言語のプログラムを作成して入力データを出力するためのライブラリです。
以下のような用途に使用します。
ファイル構成
datalibフォルダにデータ作成ライブラリのソースコード(omm_datalib.c)
とヘッダーファイル(omm_datalib.h)があります。
ユーザーがプログラムを作成するときはomm_datalib.hをincludeし、
コンパイル時にomm_datalib.cを追加して下さい。
関数一覧
表4-7-1に関数一覧を示します。
関数については以下の規則があります。
1 関数名 | omm_init |
機能 | 初期化します。必須です。 |
宣言 | void omm_init(void); |
備考 |
他のすべての関数の前に一度呼び出すことが必要です。 |
2 関数名 | omm_title |
機能 | データにタイトルを付けます。オプションです。 |
宣言 | void omm_title(const char title[]); |
引数 |
title : タイトル |
備考 |
計算結果には関係ありませんが、データの管理に使用します。 |
3 関数名 | omm_geometry_wire |
機能 | 線分の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_wire(int cosys, double x1, double x2, double y1, double y2, double z1, double z2, int div); |
引数 |
cosys : 1=XYZ座標、2=円筒座標、3=極座標 x1 : 点1のX座標 x2 : 点2のX座標 y1 : 点1のY座標 y2 : 点2のY座標 z1 : 点1のZ座標 z2 : 点2のZ座標 div : 分割数 |
備考 |
X/Y/Zは円筒座標のときはρ/φ/Zに、極座標のときはr/θ/φに読み替えてください。 |
4 関数名 | omm_geometry_xline |
機能 | X方向線分の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_xline(double x1, double x2, double y, double z, int div); |
引数 |
x1 : 点1のX座標 x2 : 点2のX座標 y : Y座標 z : Z座標 div : 分割数 |
5 関数名 | omm_geometry_yline |
機能 | X方向線分の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_yline(double y1, double y2, double z, double x, int div); |
引数 |
y1 : 点1のY座標 y2 : 点2のY座標 z : Z座標 x : X座標 div : 分割数 |
6 関数名 | omm_geometry_zline |
機能 | X方向線分の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_zline(double z1, double z2, double x, double y, int div); |
引数 |
z1 : 点1のZ座標 z2 : 点2のZ座標 x : X座標 y : Y座標 div : 分割数 |
7 関数名 | omm_geometry_triangle |
機能 | 三角形の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_triangle(double x1, double x2, double x3, double y1, double y2, double y3, double z1, double z2, double z3); |
引数 |
(x1, y1, z1) : 頂点1のXYZ座標 (x2, y2, x2) : 頂点2のXYZ座標 (x3, y3, z3) : 頂点3のXYZ座標 |
備考 |
3辺の分割数はすべて1です。 |
8 関数名 | omm_geometry_plane |
機能 | 4角形の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_plane(int cosys, double x1, double x2, double x3, double x4, double y1, double y2, double y3, double y4, double z1, double z2, double z3, double z4, int div1, int div2); |
引数 |
cosys : 1=XYZ座標、2=円筒座標、3=極座標 x1 : 点1のX座標 x2 : 点2のX座標 x3 : 点3のX座標 x4 : 点4のX座標 y1 : 点1のY座標 y2 : 点2のY座標 y3 : 点3のY座標 y4 : 点4のY座標 z1 : 点1のZ座標 z2 : 点2のZ座標 z3 : 点3のZ座標 z4 : 点4のZ座標 div1 : 点1-2方向の分割数 div2 : 点1-4方向の分割数 |
備考 |
X/Y/Zは円筒座標のときはρ/φ/Zに、極座標のときはr/θ/φに読み替えてください。 |
9 関数名 | omm_geometry_xrect |
機能 | X面長方形の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_xrect(double x, double y1, double y2, double z1, double z2, int div1, int div2); |
引数 |
x : 面のX座標 y1 : Y座標下限 y2 : Y座標上限 z1 : Z座標下限 z2 : Z座標上限 div1 : Y方向分割数 div2 : Z方向分割数 |
10 関数名 | omm_geometry_yrect |
機能 | Y面長方形の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_yrect(double y, double z1, double z2, double x1, double x2, int div1, int div2); |
引数 |
y : 面のY座標 z1 : Z座標下限 z2 : Z座標上限 x1 : X座標下限 x2 : X座標上限 div1 : Z方向分割数 div2 : X方向分割数 |
11 関数名 | omm_geometry_zrect |
機能 | Z面長方形の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_zrect(double z, double x1, double x2, double y1, double y2, int div1, int div2); |
引数 |
z : 面のZ座標 x1 : X座標下限 x2 : X座標上限 y1 : Y座標下限 y2 : Y座標上限 div1 : X方向分割数 div2 : Y方向分割数 |
12 関数名 | omm_geometry_box |
機能 | 直方体の幾何形状を入力します。複数回呼び出し可。 |
宣言 | void omm_geometry_box(int cosys, double x1, double x2, double y1, double y2, double z1, double z2, int div1, int div2, int div3); |
引数 |
cosys : 1=XYZ座標、2=円筒座標、3=極座標 x1 : X座標下限 x2 : X座標上限 y1 : Y座標下限 y2 : Y座標上限 z1 : Z座標下限 z2 : Z座標上限 div1 : X方向分割数 div2 : Y方向分割数 div3 : Z方向分割数 |
備考 |
直方体は6個の面状ユニットに分解されます。 X/Y/Zは円筒座標のときはρ/φ/Zに、極座標のときはr/θ/φに読み替えてください。 |
13 関数名 | omm_feed |
機能 | 直前に呼び出した幾何形状に給電点を設定します。 |
宣言 | void omm_feed(double v, double a); |
引数 |
v : 振幅[V] a : 位相[度] |
備考 |
線状ユニットに限定されます。 給電点と平面波入射のどちらかが必要です。 |
14 関数名 | omm_load |
機能 | 直前に呼び出した幾何形状に負荷を設定します。オプションです。 |
宣言 | void omm_load(int iload, double load); |
引数 |
iload : 1=抵抗R, 2=インダクタL, 3=キャパシタC load : iload=1のときR[Ω]、iload=2のときL[H]、iload=3のときC[F] |
備考 |
線状ユニットに限定されます。 |
15 関数名 | omm_radius |
機能 | 直前に呼び出した幾何形状に導線半径を設定します。オプションです。 |
宣言 | void omm_radius(double radius); |
引数 |
radius : 導線半径 |
備考 |
本関数を呼び出さないユニットにはomm_radiusall関数が設定されます。 |
16 関数名 | omm_offset |
機能 | 直前に呼び出した幾何形状を平行移動します。オプションです。 |
宣言 | void omm_offset(double x, double y, double z); |
引数 |
x : X方向平行移動 y : Y方向平行移動 z : Z方向平行移動 |
17 関数名 | omm_name |
機能 | 直前に呼び出した幾何形状に名前を与えます。オプションです。 |
宣言 | void omm_name(const char name[]); |
引数 |
name : 名前 |
備考 |
本関数はデータの管理に使用するものであり、計算結果に影響を与えません。 |
18 関数名 | omm_planewave |
機能 | 平面波入射を指定します。 |
宣言 | void omm_planewave(double theta, double phi, int pol); |
引数 |
theta : 原点から見た入射方向のθ[度] phi : 原点から見た入射方向のφ[度] pol : 偏波(1/2/3/4:垂直/水平/右旋円偏波/左旋円偏波) |
備考 |
給電点と平面波入射のどちらかが必要です。 |
19 関数名 | omm_planewave_ellipse |
機能 | 楕円偏波の平面波入射を指定します。 |
宣言 | void omm_planewave_ellipse(double theta, double phi, double a, double r); |
引数 |
theta : 原点から見た入射方向のθ[度] phi : 原点から見た入射方向のφ[度] a : 主軸のθ軸からφ軸への傾き[度] r : 軸比(-1≤r≤+1) |
備考 |
給電点と平面波入射のどちらかが必要です。 |
20 関数名 | omm_ground |
機能 | グラウンド板を指定します。 |
宣言 | void omm_ground(void); |
引数 | なし |
備考 |
グラウンド板はZ=0面の無限に広い完全導体です。 本関数を呼び出さないときはグラウンド板はありません。 |
21 関数名 | omm_frequency |
機能 | 周波数を指定します。必須です。 |
宣言 | void omm_frequency(double fstart, double fstop, int fdiv); |
引数 |
fstart : 開始周波数[Hz] fstop : 終了周波数[Hz] fdiv : 周波数分割数 |
備考 |
単一周波数のときはfstart=fstop, fdiv=0としてください。 |
22 関数名 | omm_z0 |
機能 | 給電線の特性インピーダンスを指定します。オプションです。 |
宣言 | void omm_z0(double z0); |
引数 |
z0 : 給電線の特性インピーダンス[Ω] |
備考 |
本関数を呼び出さないときは既定値(z0=50)になります。 |
23 関数名 | omm_radiusall |
機能 | 導線半径を指定します。オプションです。 |
宣言 | void omm_radiusall(int i, double r); |
引数 |
i : 1=導線半径を指定します。2=導線半径/要素長[無次元]を指定します。 r : 上の値 |
備考 |
本関数を呼び出さないときは既定値(i=2, r=0.2)になります。 |
24 関数名 | omm_geom3dnode |
機能 | 形状確認3D図の節点の大きさを指定します。オプションです。 |
宣言 | void omm_geom3dnode(double r, int i0, int i1); |
引数 |
r : 節点の大きさ/要素長[無次元] i0=1 : 線状ユニットについて図形出力する i1=1 : 面状ユニットについて図形出力する |
備考 |
本関数を呼び出さないときは線状ユニットのみr=0.05で図形出力します。
本関数は計算結果に影響を与えません。 |
25 関数名 | omm_matchingloss |
機能 | 利得に整合損を含めます。オプションです。 |
宣言 | void omm_matchingloss(void); |
備考 |
本関数を呼び出さないときは利得に整合損を含めません。 |
26 関数名 | omm_plotcurrent |
機能 | 電流分布を2Dまたは3Dで図形出力します。オプションです。 |
宣言 | void omm_plotcurrent(int i2d, int i3d); |
引数 |
i2d=1 : 2Dで図形出力します。 i3d=1 : 3Dで図形出力します。 |
27 関数名 | omm_plotsmith |
機能 | スミスチャートを2Dで図形出力します。オプションです。 |
宣言 | void omm_plotsmith(void); |
引数 | なし |
28 関数名 | omm_plotzin |
機能 | 入力インピーダンスの周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void omm_plotzin(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[Ω] max : 最大[Ω] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
29 関数名 | omm_plotyin |
機能 | 入力アドミッタンスの周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void omm_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"と入力してください。 |
30 関数名 | omm_plotref |
機能 | 反射係数の周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void omm_plotref(int scale, double min, double max, int div); |
引数 |
scale=1/2 : 自動スケール/指定スケール min : 最小[dB] max : 最大[dB] div : 分割数 |
備考 |
min, max, divはscale=2のとき意味があり、scale=1のときはダミーです。 |
31 関数名 | omm_plotfar0d |
機能 | 指定した方向の遠方界の周波数特性を2Dで図形出力します。オプションです。 |
宣言 | void omm_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のときはダミーです。 |
32 関数名 | omm_freqdiv |
機能 | 周波数軸の分割数を指定します。オプションです。 |
宣言 | void omm_freqdiv(int div); |
引数 |
div : 分割数 |
備考 |
本関数を呼び出さないときはdiv=10になります。 |
33 関数名 | omm_plotfar1d |
機能 | 遠方界面上パターンを2Dで図形出力します。複数回呼び出し可。 |
宣言 | void omm_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度) |
34 関数名 | omm_far1dstyle |
機能 | 遠方界面上パターンの図形出力の表示法を指定します。オプションです。 |
宣言 | void omm_far1dstyle(int i0); |
引数 |
i0 : 0=円プロット、1=XYプロット。既定値は0です。 |
35 関数名 | omm_far1dcomponent |
機能 | 遠方界面上パターンの図形出力の成分を選択します。オプションです。 |
宣言 | void omm_far1dcomponent(int i0, int i1, int i2); |
引数 |
i0=1 : θ成分とφ成分を図形出力します。 i1=1 : 楕円偏波の主軸と副軸を図形出力します。 i2=1 : 左右円偏波成分を図形出力します。 |
備考 |
本関数を呼び出さないときはi0=1, i1=0, i2=0になります。 |
36 関数名 | omm_far1ddb |
機能 | 遠方界面上パターンの図形出力の単位を指定します。オプションです。 |
宣言 | void omm_far1ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位はdBです。 |
37 関数名 | omm_far1dnorm |
機能 | 遠方界面上パターンの図形出力を最大値で正規化します。オプションです。 |
宣言 | void omm_far1dnorm(void); |
引数 | なし |
備考 |
本関数を呼び出さないときは正規化しません。 |
38 関数名 | omm_far1dscale |
機能 | 遠方界面上パターンの図形出力のスケールを指定します。オプションです。 |
宣言 | void omm_far1dscale(double min, double max, int div); |
引数 |
min : 最小値 max : 最大値 div : 分割数 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
39 関数名 | omm_plotfar2d |
機能 | 遠方界全方向パターンを3Dで図形出力します。 |
宣言 | void omm_plotfar2d(int divtheta, int divphi); |
引数 |
divtheta : θ方向(0-180度)の分割数 divphi : φ方向(0-360度)の分割数 |
備考 |
本関数は1回だけ有効です。 |
40 関数名 | omm_far2dcomponent |
機能 | 遠方界全方向パターンの図形出力の成分を選択します。オプションです。 |
宣言 | void omm_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 になります。 |
41 関数名 | omm_far2ddb |
機能 | 遠方界全方向パターンの図形出力の単位を指定します。オプションです。 |
宣言 | void omm_far2ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位はdBです。 |
42 関数名 | omm_far2dscale |
機能 | 遠方界全方向パターンの図形出力のスケールを指定します。オプションです。 |
宣言 | void omm_far2dscale(double min, double max); |
引数 |
min : 最小値 max : 最大値 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
43 関数名 | omm_far2dobj |
機能 | 遠方界全方向パターンの図形出力に描く物体形状の相対的な大きさを指定します。オプションです。 |
宣言 | void omm_far2dobj(double obj); |
引数 |
obj : 大きさ |
備考 |
本関数を呼び出さないときは0.5が指定されます。 0のときは物体形状は描かれません。 |
44 関数名 | omm_plotnear1d |
機能 | 近傍界の線上分布図を2Dで図形出力します。複数回呼び出し可。 |
宣言 | void omm_plotnear1d(char cmp, double x1, double x2, double y1, double y2, double z1, double z2, int div); |
引数 |
cmp : 成分('E', 'H'のどちらか) x1 : 始点のX座標 x2 : 終点のX座標 y1 : 始点のY座標 y2 : 終点のY座標 z1 : 始点のZ座標 z2 : 終点のZ座標 div : 線分の分割数 |
45 関数名 | omm_near1ddb |
機能 | 近傍界線上分布図の単位を指定します。オプションです。 |
宣言 | void omm_near1ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位は線形です。 |
46 関数名 | omm_near1dscale |
機能 | 近傍界線上分布図のスケールを指定します。オプションです。 |
宣言 | void omm_near1dscale(double min, double max, int div); |
引数 |
min : 最小値 max : 最大値 div : 分割数 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
47 関数名 | omm_plotnear2d |
機能 | 近傍界の面上分布図を2Dと3Dで図形出力します。複数回呼び出し可。 |
宣言 | void omm_plotnear2d(const char cmp[], char dir, double p0, double p1, double p2, double p3, double p4, int div0, int div1); |
引数 |
cmp : 成分("E", "Ex", "Ey", "Ez", "H", "Hx", "Hy", "Hz"のいずれか) dir : 面の向き('X', 'Y', 'Z'のいずれか) p0 : 面の座標(X面のときX、Y面のときY、Z面のときZ) p1 : 左座標(X面のときY1、Y面のときZ1、Z面のときX1) p2 : 右座標(X面のときY2、Y面のときZ2、Z面のときX2) p3 : 下座標(X面のときZ1、Y面のときX1、Z面のときY1) p4 : 上座標(X面のときZ2、Y面のときX2、Z面のときY2) div0 : 横方向分割数 div1 : 縦方向分割数 |
48 関数名 | omm_near2ddim |
機能 | 近傍界面上分布図を2Dまたは3Dで図形出力します。オプションです。 |
宣言 | void omm_near2ddim(int i0, int i1); |
引数 |
i0=0/1 : 2Dで図形出力しない/する i1=0/1 : 3Dで図形出力しない/する |
備考 |
本関数を呼び出さないときは2Dと3Dで図形出力します。 |
49 関数名 | omm_near2dframe |
機能 | 近傍界面上分布図の動画のフレーム数を指定します。オプションです。 |
宣言 | void omm_near2dframe(int i0); |
引数 |
i0 : 1周期のフレーム数 |
備考 |
本関数を呼び出さないときは動画は図形出力されません。 |
50 関数名 | omm_near2ddb |
機能 | 近傍界面上分布図の単位を指定します。オプションです。 |
宣言 | void omm_near2ddb(int i0); |
引数 |
i0 : 0=線形、1=dB |
備考 |
本関数を呼び出さないときは単位は線形です。 |
51 関数名 | omm_near2dscale |
機能 | 近傍界面上分布図のスケールを指定します。オプションです。 |
宣言 | void omm_near2dscale(double min, double max); |
引数 |
min : 最小値 max : 最大値 |
備考 |
本関数を呼び出さないときはスケールは自動設定されます。 |
52 関数名 | omm_near2dcontour |
機能 | 近傍界面上分布図の描画方法を選択します。オプションです。 |
宣言 | void omm_near2dcontour(int i0); |
引数 |
i0 : 0=カラー精細、1=カラー簡易、2=モノクロ精細、3=モノクロ簡易。既定値は0です。 |
53 関数名 | omm_near2dobj |
機能 | 近傍界面上分布図に物体形状を描くか。オプションです。 |
宣言 | void omm_near2dobj(int i0); |
引数 |
i0 : 0=描かない、1=描く。既定値は1です。 |
56 関数名 | omm_outdata |
機能 | 出力ファイル名を指定します。必須です。 |
宣言 | void omm_outdata(const char file[]); |
引数 |
file : 出力ファイル名。拡張子は".omm"推奨。 |
サンプルプログラム
リスト4-7-1にデータ作成ライブラリを使用したサンプルプログラムを示します。
リスト4-7-1 データ作成ライブラリ用サンプルプログラム
/* sample1.c OpenMOMデータ作成ライブラリ、サンプルプログラム No.1 コンパイル+実行: Windows + VC++: > cl.exe /O2 sample1.c omm_datalib.c > sample1.exe Linux + gcc: $ gcc -O sample1.c omm_datalib.c -o sample1 $ ./sample1 */ #include "omm_datalib.h" int main(void) { // initialize omm_init(); // title omm_title("sample1"); // geometry omm_geometry_zline(-25e-3, +25e-3, 0e-3, 0e-3, 25); // dipole omm_feed(1, 0); // frequency omm_frequency(2e9, 3e9, 10); // current distribution //omm_plotcurrent(1, 1); // frequency char. omm_plotsmith(); omm_plotzin(1, 0, 0, 0); omm_plotyin(1, 0, 0, 0); omm_plotref(1, 0, 0, 0); // far0d field //omm_plotfar0d(90, 0, 1, 0, 0, 0); // far1d field //omm_plotfar1d('X', 180, 0); //omm_far1dstyle(0); //omm_far1dcomponent(1, 0, 0); //omm_far1ddb(1); //omm_far1dnorm(); //omm_far1dscale(-30, +10, 4); // far2d field //omm_plotfar2d(18, 36); //omm_far2dcomponent(1, 0, 0, 0, 0, 0, 0); //omm_far2ddb(1); //omm_far2dscale(-20, +10); //omm_far2dobj(0.5); // near1d field //omm_plotnear1d("E", +50e-3, +50e-3, 0e-3, 0e-3, -50e-3, +50e-3, 100); //omm_near1ddb(1); //omm_near1dscale(-30, +20, 5); // near2d field //omm_plotnear2d("E", 'X', 10e-3, -50e-3, +50e-3, -50e-3, +50e-3, 20, 20); //omm_near2ddb(1); //omm_near2dscale(-30, +20); //omm_near2dcontour(0); //omm_near2dobj(1); // output omm_outdata("sample1.omm"); return 0; }
コンパイル・実行方法
データ作成ライブラリを使用したソースコードをコンパイル・実行する方法は以下の通りです。
Windows+VC++の場合
> cl.exe /O2 sample1.c omm_datalib.c > sample1.exeLinux+gccの場合
$ gcc -O sample1.c omm_datalib.c -o sample1 $ ./sample1以上でファイル(ここではsample1.omm)が出力されます。
リスト4-7-2 データ作成ライブラリの出力サンプル
OpenMOM 4 0 title = sample1 geometry = 1 13 -0.025 0.025 0 0 25 feed = 1 0 frequency = 2e+09 3e+09 10 z0 = 50 geom3dnode = 0.05 1 0 plotsmith = 1 plotzin = 1 plotyin = 1 plotref = 1 end