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

Rename few variables, correction

parent 0f6ebeee
No related branches found
No related tags found
No related merge requests found
File moved
File moved
File moved
......@@ -6,6 +6,11 @@ import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#nml = f90nml.read(self.nml_path)
#start_lon = nml['drivpar_basic']['lam_min_']
'''
Script for plotting.
Prerequisites:
......@@ -23,21 +28,28 @@ model_data_paths = [
'results/Rostov_2.txt',
'results/Rostov_3.txt'
]
obs_data_path = 'data/obs_data_rostov.csv'
obs_data_path = 'data/obs_data_Rostov.csv'
#obs_data_path = f'data/obs_data_{station}.csv'
#else
#model_data_paths = [
# 'results/common.txt'
#]
# if type = INMCM
pools = {'Csoil' : 'Почва', #Для модели INMCM
# if carbon_model_type = INMCM
pools = {'Csoil' : 'Почва',
'Csoilb': 'Почва типа b',}
# if type = ROTHC
#pools = {'CDPM': 'Разлагаемый растительный материал', #Для модели Rothc
# elif carbon_model_type = ROTHC
#pools = {'CDPM': 'Разлагаемый растительный материал',
# 'CRPM': 'Устойчивый растительный материал',
# 'CBIO': 'Пул микробной биомассы',
# 'CHUM': 'Долгоживущий гумусовый пул'}
# if type = SOCS
# elif carbon_model_type = SOCS
#pools = {'csoil1': 'Огранический углерод в почве',
# 'csoil2': 'Минерализованный углерод в почве',}
#else
#pools = {'C1': 'Pool 1',
# 'C2': 'Pool 2',}
......
......@@ -5,7 +5,7 @@ module carbon_model_inmcm_aux
use const, only : pi, r_earth, yrs
use environment_model_inmcm, only : nv2
use environment_core, only : Tsoil, Temp, e, Wsoil, Isoil
use environment_core, only : Tsoil, Temp, Wsoil, Isoil
use carbon_model_to_core_arg_kit, only : year_min, year_max, nmonth
use grid, only : dt
......@@ -82,7 +82,7 @@ module carbon_model_inmcm_aux
! ------ Climate variables --------
real :: in_temp(0:mnc) !< Поступление извне данных cредней температуры почвы в месяц, [Celsius]
real :: in_e(0:mnc) !< Поступление извне данных влажности почвы, [dim]
real :: in_wsoil(0:mnc) !< Поступление извне данных влажности почвы, [dim]
! ------ Litterfall --------
real :: in_lambd(0:mnc) !< Поступление извне данных по поступлению углерода в почву, [kg/m**3 / year]
real :: lambd !< Поступлени еуглерода в почву в интервал времени dt, [kg/m**3 / year / dt](lambdac)
......@@ -110,7 +110,7 @@ contains
close (1)
open (unit = 1, file = 'initial_value/'//trim(station)//'_MOI.txt', status='unknown')
read(1,*) in_e(1:mnc)
read(1,*) in_wsoil(1:mnc)
close (1)
open (unit = 1, file = 'initial_value/'//trim(station)//'_'//trim(opt)//'.txt', status='unknown')
......@@ -124,7 +124,7 @@ contains
if (dt == 86400) then ! Для шага по времени день:
k = 0
in_temp(0) = in_temp(1)
in_e(0) = in_e(1)
in_wsoil(0) = in_wsoil(1)
in_lambd(0) = in_lambd(1)
else ! Для шага по времени месяц:
k = 1
......@@ -226,12 +226,12 @@ contains
if (dt == 86400) then ! Для шага по времени день:
Temp(ii,jj) = in_temp(k)*sin(pi*(j-1)/(N(i)-1)) + in_temp(k+1)*(1-sin(pi*(j-1)/(N(i)-1)))
e(ii,jj) = in_e(k)*sin(pi*(j-1)/(N(i)-1)) + in_e(k+1)*(1-sin(pi*(j-1)/(N(i)-1)))
Wsoil(ii,jj,:) = in_wsoil(k)*sin(pi*(j-1)/(N(i)-1)) + in_wsoil(k+1)*(1-sin(pi*(j-1)/(N(i)-1)))
lambd = in_lambd(k)/(N(i))
if (j == (N(i)/2)) k = k+1
else ! Для шага по времени месяц:
Temp(ii,jj) = in_temp(k)
e(ii,jj) = in_e(k)
Wsoil(ii,jj,:) = in_wsoil(k)
lambd = in_lambd(k)
k = k+1
end if
......@@ -250,7 +250,6 @@ contains
use const, only : Kelvin0, Tf, rho_w
use grid, only : ms, ml, z, dz, date_c
use environment_core, only : Tsoil, Wsoil, Isoil
use environment_model_inmcm, only : g2gw_to_cmw, wssl_glob, wssg_glob, roots, rhodry, tlai, fsun, fsha
integer, intent(in) :: ii, jj, nn
......
module carbon_model_rothc_aux
use const, only : yrs, day2sec, pi
use carbon_model_to_core_arg_kit, only : year_min, year_max, nmonth
use grid, only : dt
use grid, only: date_c, date_fst, date_lst, dt
implicit none
! Интерфейс
......@@ -12,6 +13,8 @@ implicit none
character(len=2) :: opt = '2' !< Имя варианта подачи удобрения ! Нужно указать номер
! ------- Serve value -------
! integer :: year_min = date_fst%y
! integer :: year_max = date_lst%y
integer, parameter :: mnc = (year_max - year_min + 1)*nmonth !Как часть параметров для задания климатических данных
!< Колличество месяцев в расчете
integer :: k !< Номер месяца с начала работы программы !Как часть параметров для шага по времени
......@@ -62,8 +65,8 @@ implicit none
real :: Tsoil !< Средняя температура почвы в интервал времени dt, [Celsius]
real :: in_veg(0:mnc) !< Поступление извне данных средней концентрации растений в месяц, [%]
real :: veg !< Средняя концентрация растений в интервал времени dt, [%]
real :: in_e(0:mnc) !< Поступление извне данных влажности почвы, [dim]
real :: e !< Влажность почвы в интервал времени dt, [dim]
real :: in_wsoil(0:mnc) !< Поступление извне данных влажности почвы, [dim]
real :: Wsoil !< Влажность почвы в интервал времени dt, [dim]
real :: sw !< Влажность увядания DAO: 0.120 Rostov: 0.146
! ------ Litterfall --------
real :: in_lambd(0:mnc) !< Поступление извне данных по поступлению углерода в почву, [kg/m**3 / year]
......@@ -88,7 +91,7 @@ contains
close (1)
open (unit = 1, file = 'initial_value/'//trim(station)//'_MOI.txt', status='unknown')
read(1,*) in_e(1:mnc)
read(1,*) in_Wsoil(1:mnc)
close (1)
open (unit = 1, file = 'initial_value/'//trim(station)//'_'//trim(opt)//'.txt', status='unknown')
......@@ -120,7 +123,7 @@ contains
k = 0
in_temp(0) = in_temp(1)
in_veg(0) = in_veg(1)
in_e(0) = in_e(1)
in_wsoil(0) = in_wsoil(1)
in_lambd(0) = in_lambd(1)
else ! Для шага по времени месяц:
k = 1
......@@ -140,7 +143,6 @@ contains
subroutine carbon_model_calc_at_cell(ii,jj)
! ---- Part of environmental_calc_at_cell(ii,jj) ----
use grid, only: date_c
integer, intent(in) :: ii, jj
integer i, N(12),j !< count
......@@ -153,13 +155,13 @@ contains
if (dt == 86400) then ! Для шага по времени день:
Temp = in_temp(k)*sin(pi*(j-1)/(N(i)-1)) + in_temp(k+1)*(1-sin(pi*(j-1)/(N(i)-1)))
e = in_e(k)*sin(pi*(j-1)/(N(i)-1)) + in_e(k+1)*(1-sin(pi*(j-1)/(N(i)-1)))
Wsoil = in_wsoil(k)*sin(pi*(j-1)/(N(i)-1)) + in_wsoil(k+1)*(1-sin(pi*(j-1)/(N(i)-1)))
veg = in_veg(k)
lambd = in_lambd(k)/N(i)
if (j == (N(i)/2)) k = k+1
else ! Для шага по времени месяц:
Temp = in_temp(k)
e = in_e(k)
Wsoil = in_wsoil(k)
veg = in_veg(k)
lambd = in_lambd(k)
k = k+1
......@@ -167,11 +169,11 @@ contains
Tsoil = Temp ! температура почвы равна температуре воздуха
! ---- Part of rothc_calc_at_cell(ii,jj) ----
if (e >= s0) then
Fs = 1 - 0.8*(e-s0)
else if (smin < e .and. e < s0) then
Fs = 0.2 + 0.8*(e-smin)/(s0-smin)
else if (e <= smin) then
if (Wsoil >= s0) then
Fs = 1 - 0.8*(Wsoil-s0)
else if (smin < Wsoil .and. Wsoil < s0) then
Fs = 0.2 + 0.8*(Wsoil-smin)/(s0-smin)
else if (Wsoil <= smin) then
Fs = 0.2
end if
......@@ -197,8 +199,8 @@ contains
Rs = RDPM + RRPM + RBIO + RHUM
!print*, 'important thing 1, ', trim(station)//'_Temp.txt'
!print*, 'important thing 2, ', mnc
print*, 'date_fst, ', date_fst%y
print*, 'date_lst, ', date_lst%y
!print*, 'important thing 3, ', j
!print*, 'important thing 4, ', Temp(k)
......
......@@ -12,7 +12,7 @@
! -----------------------------------------------------------------
!> Углеродная модель:
carbon_model_type = 'rothc'
carbon_model_type = 'inmcm'
!
! 'inmcm' - модель INMCM [1,2]
! 'socs' - модель SOCS [3]
......@@ -112,7 +112,7 @@
testing_log_mode = 'read' ! none, write, read
nv_singlecolumn = 1 ! Для модели INMCM нужно поставить 12, для rothc и SOCS 1
nv_singlecolumn = 12 ! Для модели INMCM нужно поставить 12, для rothc и SOCS 1
environment_model_type = 'inmcm' ! inmcm
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment