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

Variables Rhodry in env_data_station, now

parent a1ed95c3
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,7 @@ module carbon_model_to_core_arg_kit
integer, parameter :: nmonth = 12
integer, parameter :: year_min = 1956 !< предусмотренный диапазон лет
integer, parameter :: year_min = 1974 !< предусмотренный диапазон лет
integer, parameter :: year_max = 2018 !<
! (44)*12 = 528 ! Для случая Rostov: 1974 - 2018
......
......@@ -34,8 +34,8 @@ contains
call set_pool(pid = n_Catm, name = 'catm' )
call set_pool(pid = n_Cveg, name = 'cveg' , alias = Cveg )
call set_pool(pid = n_Csoil, name = 'csoil' ,initial_value = 2.78124, alias = Csoil ) !8.730624 2.78124 2.806524 2.983512 2.941372
call set_pool(pid = n_Csoilb, name = 'csoilb' ,initial_value = 0.05676, alias = Csoilb ) !0.178176 0.05676 0.057276 0.060888 0.060028
call set_pool(pid = n_Csoil, name = 'csoil' ,initial_value = 8.730624, alias = Csoil ) !8.730624 2.78124 2.806524 2.983512 2.941372
call set_pool(pid = n_Csoilb, name = 'csoilb' ,initial_value = 0.178176, alias = Csoilb ) !0.178176 0.05676 0.057276 0.060888 0.060028
call set_flux(fid = n_F, pid_out = n_Csoil, pid_in = n_Catm, name = 'fmicr', alias = Fmicr)
call set_mult(n_F, 'lin', x_ijn = Csoil)
......@@ -44,7 +44,7 @@ contains
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,ms+1), x0 = tmin_soil, k = 0.5, y0 = 0.5)
call set_mult(n_F, 'mm', x_n = rsw, k = 1., x0 = -0.20)
call set_mult(n_F, 'hyp', x_n = rsw, k = 0.23, x0 = -0.23)
call set_mult(n_F, 'const', c = 1.5)
call set_mult(n_F, 'const', c = 1.5) !1.5
call set_flux(fid = n_F, pid_out = n_Csoilb, pid_in = n_Catm, name = 'fmicrb', alias = Fmicrb)
call set_mult(n_F, 'lin', x_ijn = Csoilb)
......@@ -53,7 +53,7 @@ contains
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,ms+1), x0 = tmin_soil, k = 0.5, y0 = 0.5)
call set_mult(n_F, 'mm', x_n = rsw, k = 1., x0 = -0.20)
call set_mult(n_F, 'hyp', x_n = rsw, k = 0.23, x0 = -0.23)
call set_mult(n_F, 'const', c = 1.5)
call set_mult(n_F, 'const', c = 1.5) !1.5
call set_mult(n_F, 'const', c = cv81b)
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_Csoil, name = 'dv68', alias = Flit)
......
......@@ -114,7 +114,7 @@ contains
conversion_defor_global_to_regional = 1.
endif
landuseErs = (1. - adefr) * defor0 * conversion_defor_global_to_regional
landuseErs = 0. !(1. - adefr) * defor0 * conversion_defor_global_to_regional
end subroutine
......@@ -163,16 +163,18 @@ contains
subroutine carbon_model_calc_at_tile(ii,jj,nn)
use grid, only : ms, ml, z
use environment_model_inmcm, only : g2gw_to_cmw
use environment_core, only : g2gw_to_cmw
integer, intent(in) :: ii, jj, nn
integer :: k
real :: work
!Wsoil(ii,jj,:) = 1.
!Tsoil(ii,jj,:) = 45.
work = 0.
do k = ms+1, ml-1
if (z(k) <= hint) then
work = work + Wsoil(ii,jj,k) * g2gw_to_cmw(k)
work = work + Wsoil(ii,jj,k) * g2gw_to_cmw(ii,jj,k)
end if
end do
rsw(nn) = work / hint
......
......@@ -8,7 +8,7 @@ module environment_core
private
public :: Temp, e, Rswd, Rlwd, p, pr, Wind, Tsrf, Tgr, snow, ra, Tsoil, Wsoil, Isoil
public :: sw, bettar, veg, kd, lambd
public :: sw, bettar, veg, kd, lambd, rhodry, g2gw_to_cmw
public :: environment_core_init
! переменные
......@@ -34,6 +34,8 @@ module environment_core
real, allocatable, dimension(:,:), target :: veg !< Средняя концентрация растений в интервал времени dt, [%]
real, allocatable, dimension(:,:), target :: kd !< Коэф. перехода углерода из C2 в C1, десорбация, разрушение агрегатов
real, allocatable, dimension(:,:), target :: lambd !< Поступление углерода в почву в интервал времени dt (lambdac)
real, allocatable, dimension(:,:,:), target :: rhodry !< плотность сухой почвы, г/см3
real, allocatable, dimension(:,:,:), target :: g2gw_to_cmw !< г/г воды в см воды в слоях почвы
contains
......@@ -66,7 +68,11 @@ contains
allocate(veg(i0:i1,j0:j1))
allocate(kd(i0:i1,j0:j1))
allocate(lambd(i0:i1,j0:j1))
allocate(rhodry(i0:i1,j0:j1,ml))
allocate(g2gw_to_cmw(i0:i1,j0:j1,ml))
g2gw_to_cmw = miss_v
rhodry = miss_v
sw = miss_v
bettar = miss_v
veg = miss_v
......
......@@ -5,8 +5,8 @@ module environment_data_station
! ---------------------------------------------------------------------------------
use environment_core, only : Temp, e, Rlwd, Rswd, p, pr, Wind, ra, Tsrf, Tsoil, Wsoil, Isoil, snow, Tgr, &
& sw,bettar,kd,veg,lambd
use grid, only: date_c, date_fst, date_lst, dt, i0, i1, j0, j1
& sw, bettar, kd, veg, lambd, rhodry, g2gw_to_cmw
use grid, only: date_c, date_fst, date_lst, dt, i0, i1, j0, j1, ml, ms,dz
use config, only : station_name, station_opt
use const, only : yrs, nmonth, pi
......@@ -31,18 +31,20 @@ module environment_data_station
integer :: mnclot_fst(station_max) = (/1937,1939,1956,1968,1974/) !< Даты начала сбора данных по климату в рамках станции
integer :: mnclot_lst(station_max) = (/2012,2012,2018,2018,2018/) !< Даты конца сбора данных по климату в рамках станции
! -------------------------------------------------------------------------------------------------------------------
! real :: Temp !< Средняя температура воздуха в интервал времени dt, [Celsius]
! real :: Tsoil !< Средняя температура почвы в интервал времени dt, [Celsius]
! real :: Wsoil !< Влажность почвы в интервал времени dt, [dim]
! ------ Determined externally
real, allocatable :: in_temp(:) !< Поступление извне данных cредней температуры воздуха в месяц, [Celsius]
real, allocatable :: in_veg(:) !< Поступление извне данных средней концентрации растений в месяц, [%]
real, allocatable :: in_wsoil(:) !< Поступление извне данных влажности почвы, [dim]
real, allocatable :: in_lambd(:) !< Поступление извне данных по поступлению углерода в почву, [kg/m**3 / year]
! ---- For INMCM ----
! station = DAO4 DAO3 TRGK VLDR ROST
real :: rhodry_in(station_max) = (/1.26, 1.26, 1.23, 1.30, 2.62/)
! 1.0 1.0 1.28
! ---- For Rothc ----
real :: sw_in (station_max) = (/0.120, 0.120, 0.120, 0.120, 0.146/)
real :: bettar_in(station_max) = (/0.25, 0.25, 0.07, 0.08, 0.41/)
! ---- For SOCs ----
real :: kd_in(station_max,opt_max)
! opt = 1 2 3 4
data kd_in(01,:) /0.03, 0.03, 0.035, 0.03/
......@@ -58,6 +60,8 @@ contains
subroutine environment_data_init()
use const, only : miss_v, rho_w
integer :: k !<count
! ---- Part of enviromental carbon_model_init() ----
mnc = (date_lst%y - date_fst%y)*nmonth + (date_lst%m - date_fst%m)
allocate(in_lambd(0:mnc))
......@@ -103,6 +107,12 @@ contains
sw(:,:) = sw_in(station_n)
bettar(:,:) = bettar_in(station_n)
kd(:,:) = kd_in(station_n, opt_n)
rhodry(:,:,:) = rhodry_in(station_n)
do k = ms+1, ml-1
g2gw_to_cmw(:,:,k) = rhodry(:,:,k) / rho_w * dz(k)
end do
! ---- Part of timesteps init ----
! @todo учесть шаг по времени 1 час
......@@ -155,6 +165,8 @@ contains
mncX = mncX + 1
end if
!if (mncX == mnc) mncX = 0
do i = 1, ml
Tsoil(:,:,i) = Temp(:,:) ! температура почвы равна температуре воздуха
end do
......
......@@ -8,7 +8,7 @@ module environment_model_inmcm
! -------------------------------------------------------------------------------------------------------------------
use grid, only : ml
use environment_core, only : rhodry
implicit none
public
......@@ -19,10 +19,10 @@ module environment_model_inmcm
integer, parameter :: nv2 = 13 ! временное локальное предписанное значение
integer, parameter :: ns2 = 9
real, parameter :: rhodry(ml) = 2.62 !< плотность сухой почвы, г/см3
! 1.0 DAO
! 2.62 Rostov
real :: g2gw_to_cmw(ml) !< г/г воды в см воды в слоях почвы
! real, parameter :: rhodry(ml) = 1.0 !< плотность сухой почвы, г/см3
! 1.0 DAO 0.7 1.26
! 2.62 Rostov 1.28
!real :: g2gw_to_cmw(ml) !< г/г воды в см воды в слоях почвы
real :: sncr = 0.4
real :: sq(4) !< Fractions covered by different land surface types
......@@ -232,10 +232,10 @@ contains
soilcol(:,:,:) = soilcol_wide(i0:i1,j0:j1,:)
g2gw_to_cmw(:) = miss_v
do k = ms+1, ml-1
g2gw_to_cmw(k) = rhodry(k) / rho_w * dz(k)
end do
!g2gw_to_cmw(:) = miss_v
! do k = ms+1, ml-1
! g2gw_to_cmw(k) = rhodry(k) / rho_w * dz(k)
! end do
do n = 1, nv2
do k = ms+1, ml-1
......@@ -253,8 +253,8 @@ contains
do j = j0, j1
do k = ms+1, ml-1
do n = 1, nv2
wssl_glob(i,j,k,n) = sPORu(i,j)*(psi2(n)*m2cm/sPSIMAXu(i,j))**(-1./sBHu(i,j))/rhodry(k)
wssg_glob(i,j,k,n) = sPORu(i,j)*(psi1(n)*m2cm/sPSIMAXu(i,j))**(-1./sBHu(i,j))/rhodry(k)
wssl_glob(i,j,k,n) = sPORu(i,j)*(psi2(n)*m2cm/sPSIMAXu(i,j))**(-1./sBHu(i,j))/rhodry(i,j,k)
wssg_glob(i,j,k,n) = sPORu(i,j)*(psi1(n)*m2cm/sPSIMAXu(i,j))**(-1./sBHu(i,j))/rhodry(i,j,k)
enddo
enddo
enddo
......
......@@ -32,7 +32,7 @@
! 'lsm_online' - онлайн-каплинг с моделью деятельного слоя (@todo пока не поддерживается)
! дополнительно для environment_data_type = 'station':
station_name = 'TRGK'
station_name = 'Rostov'
! 'Rostov' - Станция ФАНЦ
! 'DAO3' - Станция в Долгопрудном 1
! 'DAO4' - Станция в Долгопрудном 2
......@@ -79,8 +79,8 @@
ich = 46967 ! Федоровское, 05x05
! 'point' - ячейка по координатам [lon, lat]
! point(:) = 32.75, 56.25 ! Федоровское
! point(:) = 39.888735, 47.364103 ! ФАНЦ (Ростов)
point(:) = 37.535197, 55.942416 ! ДАОС (Долгопрудный)
point(:) = 39.888735, 47.364103 ! ФАНЦ (Ростов)
! point(:) = 37.535197, 55.942416 ! ДАОС (Долгопрудный)
! 'polygon' - область по координатам [lon_west, lon_east, lat_south, lat_north]
polygon(:) = 26.25, 69.75, 50.75, 69.75 ! лесная зона ЕТР
! (для lsm_offline) 'all' - вся область nectdf-файла
......@@ -103,7 +103,7 @@
datetime_init_mode = 'manual' !auto
!
! 'manual' - задать вручную [yyyy-mm-dd hh:mm:ss] 1937 1939 1956 1968 1974
datetime_init = '1956-01-01 00:00:00'
datetime_init = '1974-01-01 00:00:00'
! (для lsm_offline) 'auto' - получить из входного файла
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment