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

Python simplification

parent 08ba1c18
No related branches found
No related tags found
No related merge requests found
import os import os
from typing import List from typing import List
from enum import Enum
import matplotlib.dates as mdates import matplotlib.dates as mdates
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import pandas as pd import pandas as pd
import f90nml
#nml = f90nml.read(self.nml_path)
#start_lon = nml['drivpar_basic']['lam_min_']
''' '''
Script for plotting. Script for plotting.
...@@ -22,41 +19,40 @@ Usage: ...@@ -22,41 +19,40 @@ Usage:
set model_data_paths, obs_data_path, pools in plot.py set model_data_paths, obs_data_path, pools in plot.py
''' '''
#if enviromental = station nml = f90nml.read('ui1_config.nml')
carbon_model_type = nml['config_namelist']['carbon_model_type']
station = 'Rostov' # Rostov DAO3 DAO4 VLDMR TRGK
model_data_paths = [ model_data_paths = [
'results/Rostov_1.txt', f'results/{station}_1.txt',
'results/Rostov_2.txt', f'results/{station}_2.txt',
'results/Rostov_3.txt' f'results/{station}_3.txt'
] ]
obs_data_path = 'data/obs_data_Rostov.csv' #if enviromental == station
#obs_data_path = f'data/obs_data_{station}.csv' obs_data_path = f'data/obs_data_{station}.csv'
#else #else
#model_data_paths = [ #model_data_paths = [
#'results/common.txt' #'results/common.txt'
#] #]
#pools = {'CDPM': 'Разлагаемый растительный материал',
# 'CRPM': 'Устойчивый растительный материал',
# 'CBIO': 'Пул микробной биомассы',
# 'CHUM': 'Долгоживущий гумусовый пул'}
#if carbon_model_type = INMCM
pools = {'Csoil' : 'Почва', pools = {'Csoil' : 'Почва',
'Csoilb': 'Почва типа b' 'Csoilb': 'Почва типа b'
} }
#elif carbon_model_type = ROTHC
#pools = {'CDPM': 'Разлагаемый растительный материал',
# 'CRPM': 'Устойчивый растительный материал',
# 'CBIO': 'Пул микробной биомассы',
# 'CHUM': 'Долгоживущий гумусовый пул'
#}
#elif carbon_model_type = SOCS
#pools = {'csoil1': 'Огранический углерод в почве',
# 'csoil2': 'Минерализованный углерод в почве',}
#else
#pools = {'C1': 'Pool 1',
# 'C2': 'Pool 2',}
if carbon_model_type == 'ROTHC':
pools = {'CDPM': 'Разлагаемый растительный материал',
'CRPM': 'Устойчивый растительный материал',
'CBIO': 'Пул микробной биомассы',
'CHUM': 'Долгоживущий гумусовый пул'
}
elif carbon_model_type == 'SOCS':
pools = {'csoil1': 'Огранический углерод в почве',
'csoil2': 'Минерализованный углерод в почве'
}
elif carbon_model_type == 'another':
pools = {'C1': 'Pool 1',
'C2': 'Pool 2'
}
def get_experiment_name(path): def get_experiment_name(path):
......
...@@ -158,6 +158,9 @@ contains ...@@ -158,6 +158,9 @@ contains
conversion_defor_global_to_regional = 1. conversion_defor_global_to_regional = 1.
endif endif
print*, 'csoil_global(:,:,12):', csoil_global(j0,i0,12)
print*, 'conversion_defor_global_to_regional:', conversion_defor_global_to_regional
deallocate(cveg_global) deallocate(cveg_global)
deallocate(csoil_global) deallocate(csoil_global)
...@@ -234,7 +237,6 @@ contains ...@@ -234,7 +237,6 @@ contains
!print*, 'Csoil(ii,jj,12): ', Csoil(ii,jj,12) !print*, 'Csoil(ii,jj,12): ', Csoil(ii,jj,12)
!print*, 'soer(12): ', soer(12) !print*, 'soer(12): ', soer(12)
!print*, 'ers_weight', ers_weight !print*, 'ers_weight', ers_weight
!print*, 'sc8, ', sc8
end subroutine end subroutine
......
...@@ -20,19 +20,17 @@ module carbon_model_rothc ...@@ -20,19 +20,17 @@ module carbon_model_rothc
call set_pool(pid = n_Catm, name = 'catm') call set_pool(pid = n_Catm, name = 'catm')
call set_pool(pid = n_Cveg, name = 'cveg') call set_pool(pid = n_Cveg, name = 'cveg')
call set_pool(pid = n_CDPM, name = 'CDPM', initial_value = 0.025581370134274, alias = CDPM) call set_pool(pid = n_CDPM, name = 'CDPM', initial_value = 0.043915506788352, alias = CDPM)
call set_pool(pid = n_CRPM, name = 'CRPM', initial_value = 0.4060806529106 , alias = CRPM) call set_pool(pid = n_CRPM, name = 'CRPM', initial_value = 0.57587725621248 , alias = CRPM)
call set_pool(pid = n_CBIO, name = 'CBIO', initial_value = 0.06760704463772 , alias = CBIO) call set_pool(pid = n_CBIO, name = 'CBIO', initial_value = 0.20176158117888 , alias = CBIO)
call set_pool(pid = n_CHUM, name = 'CHUM', initial_value = 2.51250900729 , alias = CHUM) call set_pool(pid = n_CHUM, name = 'CHUM', initial_value = 8.11102631424 , alias = CHUM)
! litterfall ! litterfall
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CDPM, name = 'fdpm*lambdac') call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CDPM, name = 'fdpm*lambdac')
call set_mult(n_F, 'lin', x = lambd) call set_mult(n_F, 'lin', x = lambd, k = fdpm)
call set_mult(n_F, 'lin', x = fdpm)
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CRPM, name = '(1-fdpm)*lambdac') call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CRPM, name = '(1-fdpm)*lambdac')
call set_mult(n_F, 'lin', x = lambd) call set_mult(n_F, 'lin', x = lambd, k = (1 - fdpm))
call set_mult(n_F, 'lin', x = fdpm, k = -1., y0 = 1.)
! to atmosphere ! to atmosphere
call set_flux(fid = n_F, pid_out = n_CDPM, pid_in = n_Catm, name = 'RDPM') call set_flux(fid = n_F, pid_out = n_CDPM, pid_in = n_Catm, name = 'RDPM')
......
...@@ -9,8 +9,8 @@ implicit none ...@@ -9,8 +9,8 @@ implicit none
! Интерфейс ! Интерфейс
! ------------------------------------------------------------------------------------------------------------------- ! -------------------------------------------------------------------------------------------------------------------
! ------- Station of observation ------ ! ------- Station of observation ------
character(len=10) :: station = 'DAO3' !< Станция наблюдения за климатом ! Нужно указать название character(len=10) :: station = 'Rostov' !< Станция наблюдения за климатом ! Нужно указать название
character(len=2) :: opt = '4' !< Имя варианта подачи удобрения ! Нужно указать номер character(len=2) :: opt = '3' !< Имя варианта подачи удобрения ! Нужно указать номер
! ------- Serve value ------- ! ------- Serve value -------
integer, parameter :: mnc = (year_max - year_min + 1)*nmonth !Как часть параметров для задания климатических данных integer, parameter :: mnc = (year_max - year_min + 1)*nmonth !Как часть параметров для задания климатических данных
...@@ -44,8 +44,7 @@ implicit none ...@@ -44,8 +44,7 @@ implicit none
real :: RBIO = 0.0 !< Дыхание пула BIO real :: RBIO = 0.0 !< Дыхание пула BIO
real :: RHUM = 0.0 !< Дыхание пула HUM real :: RHUM = 0.0 !< Дыхание пула HUM
! ------- Functions ------------ ! ------- Functions ------------
real :: a1,a2,a3,a4 !< Функции коэффициентов для пулов real :: Ft, Fs, Fv !< Функции: температуры, влажности, фракции растительного покрова [dim]
real :: Ft, Fs, Fv, Fa !< Функции: температуры, влажности, фракции растительного покрова, общая функция, [dim]
real :: fdpm !< Функция определяющая разлагаемую часть опада, [dim] real :: fdpm !< Функция определяющая разлагаемую часть опада, [dim]
! ------- Coefficients ------------ ! ------- Coefficients ------------
real, parameter :: ks(ntiles) = (/ 3.22*(1.E-7), 9.65*(1.E-9), 2.12*(1.E-8), 6.43*(1.E-10)/) real, parameter :: ks(ntiles) = (/ 3.22*(1.E-7), 9.65*(1.E-9), 2.12*(1.E-8), 6.43*(1.E-10)/)
...@@ -183,17 +182,10 @@ contains ...@@ -183,17 +182,10 @@ contains
Fv = 0.6 + 0.4*(1 - veg) Fv = 0.6 + 0.4*(1 - veg)
Fa = Ft*Fv*Fs RDPM = Ft*Fv*Fs*ks(1)*CDPM(ii,jj,1)
RRPM = Ft*Fv*Fs*ks(2)*CRPM(ii,jj,1)
a1 = ks(1)*Fa RBIO = Ft*Fv*Fs*ks(3)*CBIO(ii,jj,1)
a2 = ks(2)*Fa RHUM = Ft*Fv*Fs*ks(4)*CHUM(ii,jj,1)
a3 = ks(3)*Fa
a4 = ks(4)*Fa
RDPM = a1*CDPM(ii,jj,1)
RRPM = a2*CRPM(ii,jj,1)
RBIO = a3*CBIO(ii,jj,1)
RHUM = a4*CHUM(ii,jj,1)
Rs = RDPM + RRPM + RBIO + RHUM Rs = RDPM + RRPM + RBIO + RHUM
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment