Введение в технологию программирования. Часть 3. Проект OLYMPUS-D. Коржов Е.Н - 64 стр.

UptoLike

Составители: 

64
procedure Calculate_StreamFunction_in_Inner_Points;
{
Назначение: Вычисление функции тока во внутренних точках области
решения задачи для равномерной сетки (модифицирован-
ный алгоритм Емельянова [27])
}
var
i, j : byte;
Eps_ij, EpsIter, Psi_ij : real;
begin
repeat
EpsIter := 0.0;
for i := 1 to Ny-1 do
for j := 1 to Nx-1 do
begin
Psi_ij := (Psi[i-1,j]+Psi[i+1,j] + Temp1*(Psi[i,j-1]+Psi[i,j+1]) +
W[i,j]*sqr(Hx))*Tmp2;
Psi_ij
:= (1.0-Alpha)*Psi[i,j] + Alpha*Psi_ij;
Eps_ij := abs(Psi[i,j]-Psi_ij);
if (Eps_ij > EpsIter)
then
EpsIter := Eps_ij;
Psi[i,j] := Psi_ij;
end;
until (EpsIter < Eps) or (Niter > NMaxIter)
end; { Calculate_StreamFunction_in_Inner_Points }
В этой процедуре переменные
Hx, Temp1 и Temp2 являются глобаль-
ными и вычисляются в процедуре
Auxval модуля PROLOG.
procedure Calculate_Vorticity_in_Boundary_Points;
{
Назначение: Вычисление функции вихря на границах области решения за-
дачи
}
begin
case
BVal_W of
1: TomaFormulas;
2: WoodFormulas;
3: JensenFormulas;
4: TaruninFormulas;
5: PolezhaevGryaznivFormulas;
procedure Calculate_StreamFunction_in_Inner_Points;
{
   Назначение: Вычисление функции тока во внутренних точках области
                     решения задачи для равномерной сетки (модифицирован-
                     ный алгоритм Емельянова [27])
}
var
   i, j : byte;
   Eps_ij, EpsIter, Psi_ij : real;
begin
   repeat
        EpsIter := 0.0;
        for i := 1 to Ny-1 do
            for j := 1 to Nx-1 do
                begin
                   Psi_ij := (Psi[i-1,j]+Psi[i+1,j] + Temp1*(Psi[i,j-1]+Psi[i,j+1]) +
                                W[i,j]*sqr(Hx))*Tmp2;
                   Psi_ij := (1.0-Alpha)*Psi[i,j] + Alpha*Psi_ij;
                   Eps_ij := abs(Psi[i,j]-Psi_ij);
                   if (Eps_ij > EpsIter)
                       then
                           EpsIter := Eps_ij;
                   Psi[i,j] := Psi_ij;
                end;
   until (EpsIter < Eps) or (Niter > NMaxIter)
end; { Calculate_StreamFunction_in_Inner_Points }


     В этой процедуре переменные Hx, Temp1 и Temp2 являются глобаль-
ными и вычисляются в процедуре Auxval модуля PROLOG.

procedure Calculate_Vorticity_in_Boundary_Points;
{
  Назначение: Вычисление функции вихря на границах области решения за-
              дачи
}
begin
   case BVal_W of
      1: TomaFormulas;
      2: WoodFormulas;
      3: JensenFormulas;
      4: TaruninFormulas;
      5: PolezhaevGryaznivFormulas;
                                         64