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

Fix mistake in model RothC (wrong mult in flux), well compared with soil sciences calculations 2

parent 474e03ec
Branches
No related tags found
No related merge requests found
...@@ -20,11 +20,11 @@ module carbon_model_rothc ...@@ -20,11 +20,11 @@ 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.01944, alias = CDPM) call set_pool(pid = n_CDPM, name = 'CDPM', initial_value = 0.04936, alias = CDPM)
call set_pool(pid = n_CRPM, name = 'CRPM', initial_value = 1.73544, alias = CRPM) call set_pool(pid = n_CRPM, name = 'CRPM', initial_value = 0.799, alias = CRPM)
call set_pool(pid = n_CBIO, name = 'CBIO', initial_value = 0.06188, alias = CBIO) call set_pool(pid = n_CBIO, name = 'CBIO', initial_value = 0.11873, alias = CBIO)
call set_pool(pid = n_CHUM, name = 'CHUM', initial_value = 1.0416, alias = CHUM) call set_pool(pid = n_CHUM, name = 'CHUM', initial_value = 7.07025, alias = CHUM)
call set_pool(pid = n_CIOM, name = 'CIOM', initial_value = 0.245, alias = CIOM) call set_pool(pid = n_CIOM, name = 'CIOM', initial_value = 0.814, alias = CIOM)
! station: opt: CDPM: CRPM: CBIO: CHUM: CIOM: ! station: opt: CDPM: CRPM: CBIO: CHUM: CIOM:
! DAO4 1 0.01944 1.73544 0.06188 1.0416 0.245 ! DAO4 1 0.01944 1.73544 0.06188 1.0416 0.245
...@@ -43,7 +43,7 @@ module carbon_model_rothc ...@@ -43,7 +43,7 @@ module carbon_model_rothc
! VLDR 1 0.00777 1.38303 0.03275 0.14961 0.119 ! VLDR 1 0.00777 1.38303 0.03275 0.14961 0.119
! ROST 1 0.04936 0.799 0.11873 7.07025 0.814 ! ROST 1 0.04936 0.799 0.11873 7.07025 0.814
! litterfall --------------------- ! litterfall
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CDPM, name = 'fdpm*organic') call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CDPM, name = 'fdpm*organic')
call set_mult(n_F, 'lin', x_ij = organic, k = fdpm) call set_mult(n_F, 'lin', x_ij = organic, k = fdpm)
...@@ -53,208 +53,110 @@ module carbon_model_rothc ...@@ -53,208 +53,110 @@ module carbon_model_rothc
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CRPM, name = '0.49*FYM') call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CRPM, name = '0.49*FYM')
call set_mult(n_F, 'lin', x_ij = FYM, k = fdpm2) call set_mult(n_F, 'lin', x_ij = FYM, k = fdpm2)
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CRPM, name = '0.49*FYM') call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CDPM, name = '0.49*FYM')
call set_mult(n_F, 'lin', x_ij = FYM, k = fdpm2) call set_mult(n_F, 'lin', x_ij = FYM, k = fdpm2)
call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CHUM, name = '0.02*FYM') call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_CHUM, name = '0.02*FYM')
call set_mult(n_F, 'lin', x_ij = FYM, k = 1. - 2*fdpm2) call set_mult(n_F, 'lin', x_ij = FYM, k = 1. - 2*fdpm2)
! --------------------
! 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')
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(1)) call set_mult(n_F, 'lin', x = ks(1))
call set_mult(n_F, 'lin', x_ijn = CDPM) call set_mult(n_F, 'lin', x_ijn = CDPM)
call set_flux(fid = n_F, pid_out = n_CRPM, pid_in = n_Catm, name = 'RRPM')
! piecewise of Ft !call set_mult(n_F, 'const', c_n = 47.91)
call set_mult(n_F, 'lin', x = Ft) !call set_mult(n_F, 'exp', x_ij = Tsoil, a = exp, k = 106.06, x0 = -18.27, y0 = 1.)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0) !call set_mult(n_F, 'step', x_ij = Tsoil, x0 = -4.99)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_flux(fid = n_F, pid_out = n_CRPM, pid_in = n_Catm, name = 'RRPM')
call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(2)) call set_mult(n_F, 'lin', x = ks(2))
call set_mult(n_F, 'lin', x_ijn = CRPM) call set_mult(n_F, 'lin', x_ijn = CRPM)
call set_flux(fid = n_F, pid_out = n_CBIO, pid_in = n_Catm, name = 'RBIO') call set_flux(fid = n_F, pid_out = n_CBIO, pid_in = n_Catm, name = 'RBIO')
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(3)) call set_mult(n_F, 'lin', x = ks(3))
call set_mult(n_F, 'lin', x_ijn = CBIO) call set_mult(n_F, 'lin', x_ijn = CBIO)
call set_flux(fid = n_F, pid_out = n_CHUM, pid_in = n_Catm, name = 'RHUM') call set_flux(fid = n_F, pid_out = n_CHUM, pid_in = n_Catm, name = 'RHUM')
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(4)) call set_mult(n_F, 'lin', x = ks(4))
call set_mult(n_F, 'lin', x_ijn = CHUM) call set_mult(n_F, 'lin', x_ijn = CHUM)
! atmosphere fall ! atmosphere fall
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RDPM') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RDPM')
call set_mult(n_F, 'lin', x_ij = BIO_prop) call set_mult(n_F, 'lin', x_ij = BIO_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(1)) call set_mult(n_F, 'lin', x = ks(1))
call set_mult(n_F, 'lin', x_ijn = CDPM) call set_mult(n_F, 'lin', x_ijn = CDPM)
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RRPM') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RRPM')
call set_mult(n_F, 'lin', x_ij = BIO_prop) call set_mult(n_F, 'lin', x_ij = BIO_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(2)) call set_mult(n_F, 'lin', x = ks(2))
call set_mult(n_F, 'lin', x_ijn = CRPM) call set_mult(n_F, 'lin', x_ijn = CRPM)
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RBIO') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RBIO')
call set_mult(n_F, 'lin', x_ij = BIO_prop) call set_mult(n_F, 'lin', x_ij = BIO_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(3)) call set_mult(n_F, 'lin', x = ks(3))
call set_mult(n_F, 'lin', x_ijn = CBIO) call set_mult(n_F, 'lin', x_ijn = CBIO)
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RHUM') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CBIO, name = 'BIO_prop*RHUM')
call set_mult(n_F, 'lin', x_ij = BIO_prop) call set_mult(n_F, 'lin', x_ij = BIO_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(4)) call set_mult(n_F, 'lin', x = ks(4))
call set_mult(n_F, 'lin', x_ijn = CHUM) call set_mult(n_F, 'lin', x_ijn = CHUM)
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RDPM') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RDPM')
call set_mult(n_F, 'lin', x_ij = HUM_prop) call set_mult(n_F, 'lin', x_ij = HUM_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(1)) call set_mult(n_F, 'lin', x = ks(1))
call set_mult(n_F, 'lin', x_ijn = CDPM) call set_mult(n_F, 'lin', x_ijn = CDPM)
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RRPM') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RRPM')
call set_mult(n_F, 'lin', x_ij = HUM_prop) call set_mult(n_F, 'lin', x_ij = HUM_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(2)) call set_mult(n_F, 'lin', x = ks(2))
call set_mult(n_F, 'lin', x_ijn = CRPM) call set_mult(n_F, 'lin', x_ijn = CRPM)
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RBIO') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RBIO')
call set_mult(n_F, 'lin', x_ij = HUM_prop) call set_mult(n_F, 'lin', x_ij = HUM_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(3)) call set_mult(n_F, 'lin', x = ks(3))
call set_mult(n_F, 'lin', x_ijn = CBIO) call set_mult(n_F, 'lin', x_ijn = CBIO)
call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RHUM') call set_flux(fid = n_F, pid_out = n_Catm, pid_in = n_CHUM, name = 'HUM_prop*RHUM')
call set_mult(n_F, 'lin', x_ij = HUM_prop) call set_mult(n_F, 'lin', x_ij = HUM_prop)
! piecewise of Ft
call set_mult(n_F, 'lin', x = Ft) call set_mult(n_F, 'lin', x = Ft)
call set_mult(n_F, 'step', x_ij = Tsoil(:,:,1), x0 = -5., k = 1.0)
! piecewise of Fs
call set_mult(n_F, 'PieWise2', x_ij = Wsoil(:,:,1), x0_ij = smin(:,:,1), y0_ij = s0(:,:,1), k = 0., &
& a_ij = 0.8/(s0(:,:,1) - smin(:,:,1)), amp = -0.8, c01 = 0.2, &
& c02_ij = 0.2 - 0.8*smin(:,:,1)/(s0(:,:,1) - smin(:,:,1)), c_ij = 1 + 0.8*s0(:,:,1))
call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.) call set_mult(n_F, 'lin', y0 = 0.6, k = -0.4, x_ij = veg, x0 = 1.)
call set_mult(n_F, 'lin', x = Fs)
call set_mult(n_F, 'lin', x = ks(4)) call set_mult(n_F, 'lin', x = ks(4))
call set_mult(n_F, 'lin', x_ijn = CHUM) call set_mult(n_F, 'lin', x_ijn = CHUM)
......
...@@ -61,13 +61,16 @@ module carbon_model_rothc_aux ...@@ -61,13 +61,16 @@ module carbon_model_rothc_aux
! ------ Initialization ------ ! ------ Initialization ------
real :: cs = 0. !< Сумма пулов real :: cs = 0. !< Сумма пулов
! ----- The topsoil moisture deficit ------- ! ----- The topsoil moisture deficit -------
real :: deep = 20. ! глубина слоя, см (@todo сопоставить с переменной Ml, внедрить в environment_data_station) real :: deep = 20. ! глубина слоя, см (@todo сопоставить с переменной Ml)
! real, allocatable :: TSMD (:,:) !< the topsoil moisture deficit real, allocatable :: TSMD (:,:) !< the topsoil moisture deficit
! real, allocatable :: SMD (:,:) !< TSMD на актуальной глубине real, allocatable :: SMD (:,:) !< TSMD на актуальной глубине
! real, allocatable :: bSMD (:,:) !< Случай TSMD для голой почвы (bare soil) real, allocatable :: bSMD (:,:) !< Случай TSMD для голой почвы (bare soil)
! real, allocatable :: moi_bal (:,:) !< pr minus evaporation real, allocatable :: moi_bal (:,:) !< pr minus evaporation
! real, allocatable :: aTSMD (:,:) !< accumulated topsoil mositure deficit real, allocatable :: aTSMD (:,:) !< accumulated topsoil mositure deficit
! real, allocatable :: evpar_part(:,:) !< 75% from evaporation real, allocatable :: evpar_part(:,:) !< 75% from evaporation
real :: a,b
contains contains
...@@ -83,33 +86,32 @@ contains ...@@ -83,33 +86,32 @@ contains
allocate(BIO_prop(i0:i1,j0:j1)) allocate(BIO_prop(i0:i1,j0:j1))
allocate(HUM_prop(i0:i1,j0:j1)) allocate(HUM_prop(i0:i1,j0:j1))
!! расчёт через осадки и эвотранспирацию
! init of TPMD ! init of TPMD
! allocate(TSMD(i0:i1,j0:j1)) allocate(TSMD(i0:i1,j0:j1))
! allocate(SMD(i0:i1,j0:j1)) allocate(SMD(i0:i1,j0:j1))
! allocate(bSMD(i0:i1,j0:j1)) allocate(bSMD(i0:i1,j0:j1))
! allocate(moi_bal(i0:i1,j0:j1)) allocate(moi_bal(i0:i1,j0:j1))
! allocate(aTSMD(i0:i1,j0:j1)) allocate(aTSMD(i0:i1,j0:j1))
! allocate(evpar_part(i0:i1,j0:j1)) allocate(evpar_part(i0:i1,j0:j1))
! TSMD = 0. TSMD = 0.
! SMD = 0. SMD = 0.
! bSMD = 0. bSMD = 0.
! moi_bal = 0. moi_bal = 0.
! aTSMD = 0. aTSMD = 0.
! evpar_part = 0. evpar_part = 0.
! SA = 0. SA = 0.
! CO2_prop = 0. CO2_prop = 0.
! BIO_prop = 0. BIO_prop = 0.
! HUM_prop = 0. HUM_prop = 0.
! s0 = 0. s0 = 0.
! smin = 0. smin = 0.
! TSMD(:,:) = -(20. + 1.3*bettar(:,:) - 0.01*bettar(:,:)**2) TSMD(:,:) = -(20. + 1.3*bettar(:,:) - 0.01*bettar(:,:)**2)
! SMD(:,:) = (deep/23.)*TSMD(:,:) SMD(:,:) = (deep/23.)*TSMD(:,:)
! bSMD(:,:) = SMD(:,:)/1.8 bSMD(:,:) = SMD(:,:)/1.8
! main init part of Rothc ! main init part of Rothc
do i = 1, ml do i = 1, ml
...@@ -141,28 +143,50 @@ contains ...@@ -141,28 +143,50 @@ contains
! ---- TPMD_calc_at_cell ---- ! ---- TPMD_calc_at_cell ----
! evpar_part(ii,jj) = 0.75*Evpar(ii,jj) evpar_part(ii,jj) = 0.75*Evpar(ii,jj)
! moi_bal(ii,jj) = pr(ii,jj) - evpar_part(ii,jj) moi_bal(ii,jj) = pr(ii,jj) - evpar_part(ii,jj)
! if (veg(ii,jj) == 1) then if (veg(ii,jj) == 1) then
! aTSMD(ii,jj) = max(SMD(ii,jj), min(0.,aTSMD(ii,jj) + moi_bal(ii,jj))) aTSMD(ii,jj) = max(SMD(ii,jj), min(0.,aTSMD(ii,jj) + moi_bal(ii,jj)))
! else else
! aTSMD(ii,jj) = max(min(bSMD(ii,jj),aTSMD(ii,jj)),min(0.,aTSMD(ii,jj) + moi_bal(ii,jj))) aTSMD(ii,jj) = max(min(bSMD(ii,jj),aTSMD(ii,jj)),min(0.,aTSMD(ii,jj) + moi_bal(ii,jj)))
! end if end if
! if (aTSMD(ii,jj) > 0.444*SMD(ii,jj)) then ! main part of rothc_calc_at_cell
! Fs = 1.
! else !if (Wsoil(ii,jj,1) >= s0(ii,jj,1)) then
! Fs = 0.2 + (1. - 0.2)*(SMD(ii,jj) - aTSMD(ii,jj))/(SMD(ii,jj) - 0.444*SMD(ii,jj)) ! Fs = 1. - 0.8*(Wsoil(ii,jj,1) - s0(ii,jj,1))
! else if (smin(ii,jj,1) < Wsoil(ii,jj,1) .and. Wsoil(ii,jj,1) < s0(ii,jj,1)) then
! Fs = 0.2 + 0.8*(Wsoil(ii,jj,1) - smin(ii,jj,1))/(s0(ii,jj,1) - smin(ii,jj,1))
! else if (Wsoil(ii,jj,1) <= smin(ii,jj,1)) then
! Fs = 0.2
! end if ! end if
! main part of rothc_calc_at_cell !a = Fs
if (aTSMD(ii,jj) > 0.444*SMD(ii,jj)) then
Fs = 1.
else
Fs = 0.2 + (1. - 0.2)*(SMD(ii,jj) - aTSMD(ii,jj))/(SMD(ii,jj) - 0.444*SMD(ii,jj))
end if
!b = Fs
if (Tsoil(ii,jj,1) >= -5.) then
Ft = 47.91/(1. + exp(106.06/(Tsoil(ii,jj,1) + 18.27))) Ft = 47.91/(1. + exp(106.06/(Tsoil(ii,jj,1) + 18.27)))
else
Ft = 0
end if
! ---- Initialization ------ ! ---- Initialization ------
Cs = CDPM(ii,jj,1) + CRPM(ii,jj,1) + CBIO(ii,jj,1) + CHUM(ii,jj,1) Cs = CDPM(ii,jj,1) + CRPM(ii,jj,1) + CBIO(ii,jj,1) + CHUM(ii,jj,1)
print*, 'moi_bal:', moi_bal(ii,jj)
print*, 'pr', pr(ii,jj)
print*, 'Evpar:', Evpar(ii,jj)
print*, 'evpar_part:', evpar_part(ii,jj)
end subroutine end subroutine
...@@ -184,6 +208,8 @@ contains ...@@ -184,6 +208,8 @@ contains
open(unit=500, file='results/'//trim(carbon_model_type)//'/'//trim(station_name)//'_'//trim(station_opt)//'.txt', status='unknown') open(unit=500, file='results/'//trim(carbon_model_type)//'/'//trim(station_name)//'_'//trim(station_opt)//'.txt', status='unknown')
write(500,*) date_c%timestamp,';',CDPM(:,:,1),';',CRPM(:,:,1),';',CBIO(:,:,1),';',CHUM(:,:,1),';', CIOM(:,:,1) write(500,*) date_c%timestamp,';',CDPM(:,:,1),';',CRPM(:,:,1),';',CBIO(:,:,1),';',CHUM(:,:,1),';', CIOM(:,:,1)
write(513,*) date_c%timestamp,';',a,';',b
! ---- Initialization ------ ! ---- Initialization ------
!print*, 'finish thing 1, ', CDPM(:,:,1)/cs*100,'%' !print*, 'finish thing 1, ', CDPM(:,:,1)/cs*100,'%'
!print*, 'finish thing 2, ', CRPM(:,:,1)/cs*100,'%' !print*, 'finish thing 2, ', CRPM(:,:,1)/cs*100,'%'
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
! ----------------------------------------------------------------- ! -----------------------------------------------------------------
!> Углеродная модель: !> Углеродная модель:
carbon_model_type = 'inmcm' carbon_model_type = 'rothc'
! !
! 'inmcm' - модель inmc [1,2] ! 'inmcm' - модель inmc [1,2]
! 'socs' - модель SOCS [3] ! 'socs' - модель SOCS [3]
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
! 'Rostov' - Станция ФАНЦ ! 'Rostov' - Станция ФАНЦ
! !
!> Тип подачи удобрения: !> Тип подачи удобрения:
station_opt = '1' station_opt = '3'
! '1' - контрольный случай, без дополнительных удобрений ! '1' - контрольный случай, без дополнительных удобрений
! '2' - 2 способ подачи удобрений ! '2' - 2 способ подачи удобрений
! '3' - 3 способ подачи удобрений ! '3' - 3 способ подачи удобрений
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
! 'ntime' - указанное число шагов ! 'ntime' - указанное число шагов
ntime = 1000 ntime = 1000
! 'datetime_last' - до достижения указанной даты ! 'datetime_last' - до достижения указанной даты
datetime_last = '2012-01-01 00:00:00' datetime_last = '1976-01-01 00:00:00'
!Номер станции наблюдения за климатом !Номер станции наблюдения за климатом
!DAO4 DAO3 TRGK VLDR ROST !DAO4 DAO3 TRGK VLDR ROST
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
testing_log_mode = 'read' ! none, write, read testing_log_mode = 'read' ! none, write, read
nv_singlecolumn = 12 ! Для модели INMCM нужно поставить 12, для RothC и SOCS 1 nv_singlecolumn = 1 ! Для модели INMCM нужно поставить 12, для RothC и SOCS 1
environment_model_type = 'inmcm' ! inmcm 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