File: tmpack.tex

package info (click to toggle)
dcl 7.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 20,872 kB
  • sloc: fortran: 48,433; f90: 12,803; ansic: 6,513; makefile: 4,612; ruby: 184; sh: 153
file content (221 lines) | stat: -rw-r--r-- 8,037 bytes parent folder | download | duplicates (12)
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}