Содержание

Назад Вперед

5.1.5. Описание входных и выходных величин

declaration-of-input :
INPUT list-input-scalar
INPUT input-on-domain
input-scalar :
name-scalar [ attributes ]
input-on-domain :
list input-output-variable ON unconditional domain
input-output-variable :
name-variable-on-domain [ attributes ]
declaration-of-output :
OUTPUT list-output-scalar
OUTPUT output-on-domain
output-scalar :
name-scalar [ attributes ]
output-on-domain :
list- input-output-variable ON domain
attributes :
( list-attribute )
attribute :
string
ORDER( list-name-index )
FILE = ' file-name '
ALL
format
format :
I int-constant
{ F,E,D } int-constant . int-constant

Описание входных (выходных) величин означает, что подлежат вводу (выводу) значения всех величин, указанных в списке ввода (вывода). Например, описания

B1 , B2 : B / Z<Eps.
INPUT Velocity ON A. OUTPUT Tau ON B1.
INPUT X, ALPHA.

являются запросами на ввод значений скаляров X, ALPHA, величины Velocity во всех точках области A, а также на вывод значений величины Tau во всех точках области B1, в которых выполнено условие Z<Eps .

Порядок, в котором будут вводиться (выводиться) величины при этом не задается - он определяется в процессе трансляции. Минимальная единица информации, которая вводится (выводится) как единое целое - скаляр или величина на области. Управление вводом (выводом) этих единиц может осуществляться при помощи атрибутов.

Атрибуты действуют на величину (список величин), после которой они указаны. Например, описание

INPUT R2 (FILE ='myfile') ON Grid, R1 ON Grid.

является запросом на ввод из файла myfile значений величины R2 в области Grid, то есть для всех значений индексов этой области, и величины R1 в области Grid из файла norma.dat (имя файла по умолчанию).

Атрибуты позволяют управлять формой входных и выходных данных и связывать данные с входными и выходными файлами:

Для входных величин разрешены только атрибуты format и FILE.

Примеры описания входных величин:
INPUT One (FILE='file1',F10.2), Two(FILE='file2.dat' ) ON Grid2.
Примеры описания выходных величин:
OUTPUT Velocity(' Velocity = ' ,F9.1) .
OUTPUT X(FILE='FILE17' , ORDER(J,K,I), ALL, F5.1) ON Grid.
OUTPUT Y('Matrix of values Y parameter', FILE='OT5' ,ALL,F15.2) ON ABC.

Для вывода данных в более сложной форме (таблицы, графики и т.п.) следует использовать либо средства стандартных библиотек и пакетов, либо собственные программы, написанные на других языках (см. п. 5.2.5).

Синтаксис файла исходных данных:
file :
input-element { input-element }*
input-element :
name-scalar = arithm-constant;
name-variable-on-domain ( list-index-range ) = data ;
index-range :
name-index = int-constant .. int-constant
data :
list-data-element
data-element :
int-constant
body
int-constant ( data )
Пример содержимого файла исходных данных:
C(K=1..10)=5(-10.1) ,5(1.01);
ALPHA=3.17; BETA=-0.12; GAMMA=0.000000001;
C(K=11..20)=5(10.1),5(-1.01);
Пример содержимого файла data исходных данных для программы Gauss:
MAIN PART Gauss.
! Solution of linear equations by Gauss-Jourdan method.
BEGIN
Ot:(t=0..n). Oi:(i=1..n). Oj:(j=1..n).
Oij:(Oi;Oj). Otij:(Ot;Oij).
Oti:(Ot;Oi). Otij1:Otij / t=1..n. Oti1:Oti / t=1..n.
DOMAIN PARAMETERS n=5.
VARIABLE a ON Oij. VARIABLE m ON Otij.
VARIABLE b, ON Oi. VARIABLE r ON Oti.
INPUT a(FILE='data') ON Oij, b(FILE='data') ON Oi.
OUTPUT x(FILE='results',ALL) ON Oi.
FOR Otij/ t=0 ASSUME m=a.
FOR Oti / t=0 ASSUME r=b.
OtiEQtij1,OtiNEtj1:Otij1 / i=t. OiEQti1,OiNEti1:Oti1 / i=t.
FOR OtiEQtj1 ASSUME m = m[t-1,i=t]/m[t-1,i=t,j=t].
FOR OiEQj1 ASSUME r = r[t-1,i=t]/m[t-1,i=t,j=t].
FOR OiNEtj1 ASSUME m = m[t-1]-m[t-1,j=t]*m[i=t].
FOR OiNEti1 ASSUME r = r[t-1]-m[t-1,j=t]*m[i=t].
FOR Oi ASSUME x = r [t=n].
END PART.
Входной файл data:
B(I=1..3)=5.0, 13.0, 3.0;
A(I=1..5,J=1..5)=2.0, 3.0, -4.0, 5.0, -1.0,
3.0, 4.0, -1.0, 6.0, 1.0,
2.0, 0.0, -3.0, 0.0, 4.0,
0.0, 2.0, 0.0, 0.3, 0.0,
3.0, -1.0, 2(0.0), 1.0;
B(I=4..5)= 5.0, 3.0;

Значения многомерных массивов данных располагаются в файле в соответствии с указанными индексами, причем первыми меняются значения более правого индекса - в приведенном примере матрица A(I,J) задана по строкам, то есть I =1, J = 1,2,3,4,5, затем I = 2, J = 1,2,3,4,5 и так далее до I =5, J = 1,2,3,4,5.

Способ задания входного файла data, конечно, не является единственным.


Содержание

Назад Вперед