Skip to content
Snippets Groups Projects
carbon_model_INMCM.f90 3.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • module carbon_model_inmcm
    
        !< @brief модель углеродного цикла inmcm
    
        ! интерфейс
        ! ---------------------------------------------------------------------------------
    
        use carbon_model_to_core, only : set_tiles, set_pool, set_flux, set_mult
        use carbon_model_inmcm_aux
    
        implicit none
    
        private
        public :: carbon_model_assembly
    
    
    contains
    
    
        ! внешние процедуры
        ! ---------------------------------------------------------------------------------
    
        subroutine carbon_model_assembly()
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
            use environment_model_inmcm, only : nv2, vegg_nv2
    
            !use environment_core,        only : Tsoil
            use const,                   only : yrs, umol2kg
            use grid,                    only : ms
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
    
            integer :: n_Catm, n_Cveg, n_Csoil, n_Csoilb   !< id пулов
    
            integer :: n_F                                 !< id потока
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
    
            call set_tiles(nv2, vegg_nv2)
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
            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 = 8.730624, alias = Csoil  )
            call set_pool(pid = n_Csoilb, name = 'csoilb' ,initial_value = 0.178176, alias = Csoilb )
    
    
    !        station: opt: С1:        С2:
    !        ROST     1    8.730624   0.178176
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    !        VLDR     1    1.61406    0.03294
    !        TRGK     1    3.10072    0.06328
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    !                 3    2.93608    0.05992
    
    !        DAO3     1    2.78124    0.05676
    !                 2    2.806524   0.057276
    !                 3    2.983512   0.060888
    !                 4    2.941372   0.060028
    !        DAO4     1    3.037706   0.061994   
    !                 2    3.173926   0.064774   
    !                 3    3.160304   0.064496   
    !                 4    2.983218   0.060882   
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
    
            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)
    
            call set_mult(n_F, 'const', c_n = amrp(:) * umol2kg)
    
            call set_mult(n_F, 'exp',   x_ij = Tsoil(:,:,ms+1), a = 2., k = 0.1, x0 = t_ref_soil)
    
            call set_mult(n_F, 'step',  x_ij = Tsoil(:,:,ms+1), x0 = tmin_soil, k = 0.5, y0 = 0.5)
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
            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)
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
    
            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)
    
            call set_mult(n_F, 'const', c_n = amrp(:) * umol2kg)
    
            call set_mult(n_F, 'exp',   x_ij = Tsoil(:,:,ms+1), a = 2., k = 0.1, x0 = t_ref_soil)
    
            call set_mult(n_F, 'step',  x_ij = Tsoil(:,:,ms+1), x0 = tmin_soil, k = 0.5, y0 = 0.5)
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
            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 = cv81b)
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
    
            call set_flux(fid = n_F, pid_out = n_Cveg, pid_in = n_Csoil, name = 'dv68', alias = Flit)
    
            call set_mult(n_F, 'lin', x_ij = lambd)
    
    Georgiy Faikin's avatar
    Georgiy Faikin committed
    
            call set_flux(fid = n_F, pid_out = n_Csoil, pid_in = n_Csoilb, name = 'ddc8', alias = Fers)
            call set_mult(n_F, 'lin', x_ijn = ers_weight, k = landuseErs)
    
    
        end subroutine carbon_model_assembly
    
    end module