1 MAIN PART Parabol.
2 BEGIN
3             Wx : (i=0..M).
4            Wt : (j=0..K).
5            Wxt : (Wx;Wt).
6            Wx1 : Wx-LEFT(1)-RIGHT(1).
7            Wt1 : Wt-LEFT(1).
8            Wxt1 : (Wx1;Wt1).
9            Wxt2 : ((i=0); Wt1).
10            Wxt3 : ((i=M); Wt1).
11            VARIABLE u0, u1 DEFINED ON Wt1 DOUBLE.
12            VARIABLE u DEFINED ON Wxt DOUBLE.
13            DOMAIN PARAMETERS M=10, K=20.
14            EXTERNAL FUNCTION BOUND DOUBLE.
15            INPUT u0(FILE='parabol') ON Wt1.
16            INPUT u1(FILE='parabol') ON Wt1.
17            FOR Wxt2 ASSUME u=u0.
18            FOR Wxt3 ASSUME u=u1.
19            FOR Wxt/j=0 ASSUME u=BOUND(i,M).
20            FOR Wxt1 ASSUME u=(u[i+1,j-1]+u[i-1,j-1])/2.0.
21            OUTPUT u(FILE='parabol.out') ON Wxt.
22 END PART.
   
23 FUNCTION BOUND DOUBLE.
24            k1,k2
25 BEGIN
26            VARIABLE k1,k2 DOUBLE.
27            VARIABLE pi DOUBLE.
28            pi=3.1415.
29            BOUND=SIN(pi*k1/k2).
30 END PART.

 

Рассмотрим эту программу более подробно (используемые ниже номера совпадают с нумерацией строк программы).

(1) Заголовок главного раздела программы Parabol.

(2) Начало главного раздела.

(3-5) Определяются одномерные области Wx, Wt и многомерная область Wxt.

(6-7) Определяются одномерные области Wx1, Wt1 с помощью операций модификации области (исключаются границы областей Wx и Wt).

(8) Определяется многомерная область Wxt1 - область, на которой производится расчет (i=1..M-1; j=1..K).

(9-10) Определяются Wxt2, Wxt3 - области, на которых определены начальные значения задачи.

(11-12) Описание переменных u0, u1 и u. u0 - значения u(0,t), u1 - значения u(1,t), u - результат решения уравнения.

(13) Задание параметров областей (количество шагов по оси x - 10, по оси t - 20).

(14) Описание внешней функции пользователя.

(15-16) Ввод начальных данных u0 и u1 из файла parabol.dat, содержащего следующие строки:

u0(j=1..20)=20(0.0);
u1(j=1..20)=20(0.0);

(17-18) Задание значений u(0,t) и u(1,t).

(19) Задание значений u(x,0), происходит вызов функции пользователя BOUND.

(20) Вычисления u по соответствующей разностной схеме.

(21) Вывод результата в файл parabol.out

(22) Конец главного раздела.

(23) Заголовок внешней функции пользователя BOUND.

(24) Обозначение входных k1, k2 параметров функции.

(25) Начало функции пользователя.

(26) Описание переменных , являющихся параметрами функции - k1, k2.

(27-28) Описание переменной pi.

(29) Вычисление значения функции.

(30) Конец функции пользователя.