1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
|
%表題 TMPACK (流線描画用パッケージ)
%
%履歴
%\Drireki{
% 12/12/26 辻野 智紀 (5.9.x版)
% }
%
% \Dchapter{TMPACK : 流線描画用パッケージ}
\Dchapterhead
\label{tmpack}
\section{概要}
流線の描画・計算を行うサブルーチンパッケージ.
\vspace{1em}
現在, デカルト座標系, 円筒座標系, 球面座標系の 3 つについて描画ルーチンを用意してあるが, 下位ルーチンを用いれば, 容易に任意の直交曲線座標系に対応した流線描画ルーチンを作成することができる.
\vspace{1em}
なお, このパッケージにおける流線計算ソルバは davis プロジェクト内の数値計算ライブラリ (STPK
\footnote{{\tt http://www.gfd-dennou.org/library/davis/stpk/}}%
) で用いられている流線計算ルーチンを FORTRAN77 用に書き直したものである.
%%%% 以下, 書きかけ
\section{サブルーチンのリスト}
\begin{tabular}{lp{10cm}}
{\tt BITPIC(IP,CP)} & ビットパターンを文字列化する. \\
{\tt BITPCI(CP,IP)} & 文字列をビットパターン化する. \\
{\tt GBYTE(NP,IO,IB,NB)} & ビットパターンを切り出す. \\
{\tt GBYTES(NP,NO,IB,NB,NS,IT)} & ビットパターンを切り出す. \\
{\tt SBYTE(NP,IO,IB,NB)} & ビットパターンを埋め込む. \\
{\tt SBYTES(NP,NO,IB,NB,NS,IT)} & ビットパターンを埋め込む.
\end{tabular}
\section{関数のリスト}
\begin{tabular}{lp{10cm}}
{\tt ISHIFT(IW,N)} & ビットパターンをシフトする. \\
{\tt IAND(I1,I2)} & ビット積を求める. \\
{\tt IOR(I1,I2)} & ビット和を求める.
\end{tabular}
\vspace{1em}
{\tt IAND}, {\tt IOR}は実時間FORTRANに規定されており,
処理系が用意している場合がある.
\section{サブルーチンの説明}
\subsection{BITPIC}
\label{tmpack.sub.bitpic}
\begin{enumerate}
\item 機能
\begin{quote}
ビットパターンを{\tt '0'}, {\tt '1'}の文字列として返す.
\end{quote}
\item 呼び出し方法
\begin{quote}
{\tt CALL BITPIC(IP,CP)}
\end{quote}
\item パラメーターの説明
\begin{quote}
\begin{tabular}{llp{10cm}}
{\tt IP} & {\tt (I)} & ビットパターンを調べる1語長の引数. \\
{\tt CP} & {\tt (C*(*))} & ビットパターンを返す文字型の引数.
ビットがONなら{\tt '1'}, OFFなら{\tt '0'}を返す.
\end{tabular}
\end{quote}
\item 備考
\begin{enumerate}
\item {\tt CP}の長さがN (={\tt LEN(CP)})ならば
{\tt IP}の下位MIN(N,NB)ビット( NBは内部変数
{\tt 'NBITSPW'}で決まる数)を調べそのパターンを右詰めして返す.
NがNBより大きいとき{\tt CP(1:N-NB)}は不定である.
\end{enumerate}
\end{enumerate}
\subsection{BITPCI}
\label{tmpack.sub.bitpci}
\begin{enumerate}
\item 機能
\begin{quote}
{\tt '0'}, {\tt '1'}の文字列をビットパターンとして返す.
\end{quote}
\item 呼び出し方法
\begin{quote}
{\tt CALL BITPCI(CP,IP)}
\end{quote}
\item パラメーターの説明
\begin{quote}
\begin{tabular}{llp{10cm}}
{\tt CP} & {\tt (C*(*))} & ビットパターンを与える文字型の引数.
ビットがONなら{\tt '1'}, OFFなら{\tt '0'}を指定する. \\
{\tt IP} & {\tt (I)} & ビットパターンを返す1語長の引数.
\end{tabular}
\end{quote}
\item 備考
\begin{enumerate}
\item {\tt CP}の長さがN (={\tt LEN(CP)})ならば
{\tt CP}の下位MIN(N,NB)文字( NBは内部変数
{\tt 'NBITSPW'}で決まる数)を調べそのパターンを右詰めして返す.
NがNBより大きいとき, 下位NB文字({\tt CP(N-NB+1:N)})のパターンを調べる.
ビットパターンの指定方法について, 正確には
{\tt '0'}ならビットがOFF, {\tt '0'}以外ならビットがONと見なす.
\end{enumerate}
\end{enumerate}
\subsection{GBYTE/GBYTES}
\label{tmpack.sub.gbyte}
\begin{enumerate}
\item 機能
\begin{quote}
連続した記憶領域からビットパターンを切り出す.
\end{quote}
\item 呼び出し方法
\begin{quote}
{\tt CALL GBYTE(NP,IO,IB,NB)} \\
{\tt CALL GBYTES(NP,NO,IB,NB,NS,IT)}
\end{quote}
\item パラメーターの説明
\begin{quote}
\begin{tabular}{llp{10cm}}
{\tt NP} & {\tt (I)} & 連続した記憶領域(たとえば配列)の先頭となる語. \\
{\tt IO} & {\tt (I)} & 切り出したビットパターンを返す変数. \\
{\tt NO} & {\tt (I)} & 切り出したビットパターンを返す配列. \\
{\tt IB} & {\tt (I)} & 先頭の語においてスキップするビット数. \\
{\tt NB} & {\tt (I)} & 切り出すビット数. \\
{\tt NS} & {\tt (I)} & 切り出すビットパターン間のビット数. \\
{\tt IT} & {\tt (I)} & 配列{\tt NO}の長さ.
\end{tabular}
\end{quote}
\item 備考
\begin{enumerate}
\item {\tt NB}は1以上, 1語のビット数(ここでは32)以下でなければならない.
\end{enumerate}
\end{enumerate}
\subsection{SBYTE/SBYTES}
\label{tmpack.sub.sbyte}
\begin{enumerate}
\item 機能
\begin{quote}
連続した記憶領域にビットパターンを埋め込む.
\end{quote}
\item 呼び出し方法
\begin{quote}
{\tt CALL SBYTE(NP,IO,IB,NB)} \\
{\tt CALL SBYTES(NP,NO,IB,NB,NS,IT)}
\end{quote}
\item パラメーターの説明
\begin{quote}
\begin{tabular}{llp{10cm}}
{\tt NP} & {\tt (I)} & 連続した記憶領域(たとえば配列)の先頭となる語. \\
{\tt IO} & {\tt (I)} & 埋め込むビットパターンを与える変数. \\
{\tt NO} & {\tt (I)} & 埋め込むビットパターンを与える配列. \\
{\tt IB} & {\tt (I)} & 先頭の語においてスキップするビット数. \\
{\tt NB} & {\tt (I)} & 埋め込むビット数. \\
{\tt NS} & {\tt (I)} & 埋め込むビットパターン間のビット数. \\
{\tt IT} & {\tt (I)} & 配列{\tt NO}の長さ.
\end{tabular}
\end{quote}
\item 備考
\begin{enumerate}
\item {\tt NB}は1以上, 1語のビット数(ここでは32)以下でなければならない.
\end{enumerate}
\end{enumerate}
\section{関数の説明}
\subsection{ISHIFT}
\label{tmpack.sub.ishift}
\begin{enumerate}
\item 機能
\begin{quote}
ビットパターンをシフトする.
\end{quote}
\item 呼び出し方法
\begin{quote}
{\tt ISHIFT(IW,N)}
\end{quote}
\item パラメーターの説明
\begin{quote}
\begin{tabular}{llp{10cm}}
{\tt IW} & {\tt (I)} & ビットパターンをシフトする1語長の引数. \\
{\tt N} & {\tt (I)} & シフトするビット数.
${\tt N}>0$なら左側にシフトする.
左側にあふれた分は右側に詰められる(circular shift).
${\tt N}<0$なら右側にシフトする.
右側にあふれた分は捨てられる(end-off shift). \\
{\tt ISHIFT} & {\tt (I)} & シフトした結果を返す関数値.
\end{tabular}
\end{quote}
\item 備考
\begin{enumerate}
\item なし.
\end{enumerate}
\end{enumerate}
\subsection{IAND/IOR}
\label{tmpack.sub.iand}
\begin{enumerate}
\item 機能
\begin{quote}
ビットごとのブール積/和を求める.
\end{quote}
\item 呼び出し方法
\begin{quote}
{\tt IAND(I1,I2)}\\
{\tt IOR(I1,I2)}
\end{quote}
\item パラメーターの説明
\begin{quote}
\begin{tabular}{llp{10cm}}
{\tt I1}, {\tt I2} & {\tt (I)} & ビット列を与える1語長の引数. \\
{\tt IAND} & {\tt (I)} & ビット列のブール積を返す関数値. \\
{\tt IOR} & {\tt (I)} & ビット列のブール和を返す関数値.
\end{tabular}
\end{quote}
\item 備考
\begin{enumerate}
\item {\tt IAND}, {\tt IOR}は実時間FORTRANに規定されており,
処理系が用意している場合がある.
\end{enumerate}
\end{enumerate}
|