Skip to content
Snippets Groups Projects
Commit b70158fa authored by Georgiy Faikin's avatar Georgiy Faikin
Browse files

Исправлена ошибка в расчёте адвекции: ошибка граничного значения элемента сетки первого элемента

parent 7d6bddce
No related tags found
No related merge requests found
......@@ -8,7 +8,7 @@ program advection_solver
! Параметры сетки
integer, parameter :: N = 100 ! Число узлов по пространству
integer, parameter :: M = 1000 ! Число шагов по времени
integer, parameter :: M = 100 ! Число шагов по времени
real, parameter :: dt = 0.1 ! Шаг по времени
real :: Hsoil = 1.E+3 ! Размер области по пространству
real :: dz ! Шаг по пространству
......@@ -58,7 +58,7 @@ program advection_solver
! Вычисление аргумента сетки
dz = Hsoil/real(N)
! Постоянная сетка по пространству
!forall (i=1:N) z_cen(i) = i*dz
forall (i=1:N) z_cen(i) = i*dz
! Неоднородная сетка по пространству
!forall (i=1:N) z_cen(i) = (i/5.)**2.
......@@ -67,7 +67,9 @@ program advection_solver
! Вычисление граничного значения ячейки
forall (i=2:N) z_edg(i) = (z_cen(i-1) + z_cen(i))/2.
z_edg(1) = -z_edg(2) - z_cen(1)
if (z_cen(1) == 0.) z_edg(1) = z_cen(1) - z_edg(2)
z_edg(1) = 2.*z_cen(1) - z_edg(2)
z_edg(N+1) = 2.*z_cen(N) - z_edg(N)
! Вычисление шага по пространственной сетке
......
......@@ -110,13 +110,15 @@ program neodn2
forall (i=1:N) z_cen(i) = i*dz
! Неоднородная сетка по пространству
!forall (i=0:N) z_edg(i) = (i/5.)**2.
forall (i=0:N) z_edg(i) = Hsoil * ((1.0 + 12.0)**((real(i) - 1.0)/(real(N) - 1.0)) - 1.0) / 12.0
!forall (i=1:N) z_cen(i) = (i/5.)**2.
forall (i=1:N) z_cen(i) = Hsoil * ((1.0 + 12.0)**((real(i) - 1.0)/(real(N) - 1.0)) - 1.0) / 12.0
! Вычисление центрального значения ячейки
! Вычисление граничного значения ячейки
forall (i=2:N) z_edg(i) = (z_cen(i-1) + z_cen(i))/2.
z_edg(1) = z_edg(2) - z_cen(1)
if (z_cen(1) == 0.) z_edg(1) = z_cen(1) - z_edg(2)
z_edg(1) = 2.*z_cen(1) - z_edg(2)
z_edg(N+1) = 2.*z_cen(N) - z_edg(N)
! Вычисление шага по пространственной сетке
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment