From 6eb2eef8c5f0236f9f7d872d117b271ba6619f44 Mon Sep 17 00:00:00 2001 From: ogurses Date: Tue, 15 Oct 2024 15:08:31 +0200 Subject: [PATCH 01/66] feat(fesom) add tracer diagnostics to FESOM2.5 Define new variables to track tracer changes due to advection and diffusion. We want to save for now diffusion and advection contribution to the tracer changes. Horizontal and vertical diffusion includes Redi parametrization (if it is set .true.). --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 3 + src/MOD_TRACER.F90 | 11 ++- src/io_meandata.F90 | 23 ++++++ src/io_restart_file_group.F90 | 2 +- src/oce_adv_tra_driver.F90 | 71 +++++++++++++++++- src/oce_ale_tracer.F90 | 137 +++++++++++++++++++++++++++++++++- src/oce_setup_step.F90 | 16 +++- 8 files changed, 258 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c2fc8a85..36e7a41d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ set(OIFS_COUPLED OFF CACHE BOOL "compile fesom coupled to OpenIFS. (Also needs F set(CRAY OFF CACHE BOOL "compile with cray ftn") set(USE_ICEPACK OFF CACHE BOOL "compile fesom with the Iceapck modules for sea ice column physics.") set(OPENMP_REPRODUCIBLE OFF CACHE BOOL "serialize OpenMP loops that are critical for reproducible results") -set(RECOM_COUPLED OFF CACHE BOOL "compile fesom including biogeochemistry, REcoM3") +set(RECOM_COUPLED ON CACHE BOOL "compile fesom including biogeochemistry, REcoM3") set(CISO_COUPLED OFF CACHE BOOL "compile ciso coupled to REcoM3. RECOM_COUPLED has to be active") set(USE_MULTIO OFF CACHE BOOL "Use MULTIO for IO, either grib or binary for now. This also means path to MULTIO installation has to provided using env MULTIO_INSTALL_PATH='..' and multio configuration yamls must be present to run the model with MULTIO") set(OASIS_WITH_YAC OFF CACHE BOOL "Useing a version of OASIS compiled with YAC instead of SCRIP for interpolation?") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c3e698e7f..54de5c3ea 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -73,6 +73,9 @@ if(ENABLE_OPENMP) find_package(OpenMP REQUIRED COMPONENTS Fortran) endif() +option(RECOM_COUPLED "Use RECOM" OFF) +message(STATUS "RECOM_COUPLED: ${RECOM_COUPLED}") + option(USE_ICEPACK "Use ICEPACK" OFF) message(STATUS "USE_ICEPACK: ${USE_ICEPACK}") diff --git a/src/MOD_TRACER.F90 b/src/MOD_TRACER.F90 index efeeed623..42627450b 100644 --- a/src/MOD_TRACER.F90 +++ b/src/MOD_TRACER.F90 @@ -20,6 +20,9 @@ MODULE MOD_TRACER real(kind=WP) :: tra_adv_pv = 1. ! a parameter to be used in horizontal advection (for QR4C it is the fraction of fourth-order contribution in the solution) integer :: AB_order=2 integer :: ID +!___________________________________________________________________________ +! TODO: Make it as a part of namelist.tra +logical :: ltra_diag = .true. ! OG - tra_diag contains procedure WRITE_T_TRACER_DATA @@ -41,7 +44,13 @@ MODULE MOD_TRACER ! compute Tstar = 0.5*( T^(n+1) + T^n) real(kind=WP), allocatable, dimension(:,:,:) :: dvd_trflx_hor, dvd_trflx_ver -!_______________________________________________________________________________ +! in case ltra_diag=.true. --> calculate tracer diags ! OG - tra_diag +real(kind=WP), allocatable :: tra_advhoriz(:,:,:), tra_advvert(:,:,:) +real(kind=WP), allocatable :: tra_diff_part_hor_redi(:,:,:) +real(kind=WP), allocatable :: tra_diff_part_ver_expl(:,:,:) +real(kind=WP), allocatable :: tra_diff_part_ver_redi_expl(:,:,:) +real(kind=WP), allocatable :: tra_diff_part_ver_impl(:,:,:) + ! The fct part real(kind=WP),allocatable,dimension(:,:) :: fct_LO ! Low-order solution real(kind=WP),allocatable,dimension(:,:) :: adv_flux_hor ! Antidif. horiz. contrib. from edges / backup for iterafive fct scheme diff --git a/src/io_meandata.F90 b/src/io_meandata.F90 index afc58f87f..1d242fa0b 100644 --- a/src/io_meandata.F90 +++ b/src/io_meandata.F90 @@ -707,6 +707,29 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) else if (tracers%data(j)%ID==1002) then if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC', 'Dissolved Inorganic C', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + + if (tracers%data(j)%ltra_diag) then ! OG - tra_diag + ! horizontal advection + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_hor_adv', 'Horizontal advection part of dissolved Inorganic C', '[mmol/m3]', tracers%work%tra_advhoriz(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + + ! vertical advection + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_ver_adv', 'Vertical advection part of dissolved Inorganic C', '[mmol/m3]', tracers%work%tra_advvert(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + + ! horizontal diffusion + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_hor_redi', 'Horizontal diffusion of dissolved Inorganic C (includes Redi diffusivity if Redi=.true.)', '[mmol/m3]', tracers%work%tra_diff_part_hor_redi(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + + if (.not. tracers%data(j)%i_vert_diff) then + ! vertical diffusion (Explicit) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_expl', 'Vertical diffusion of dissolved Inorganic C (Explicit)', '[mmol/m3]', tracers%work%tra_diff_part_ver_expl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + end if + + ! projection of horizontal Redi diffussivity onto vertical + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_redi_expl', 'Projection of horizontal Redi diffussivity onto vertical for dissolved Inorganic C (Explicit)', '[mmol/m3]', tracers%work%tra_diff_part_ver_redi_expl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + + ! vertical diffusion (Implicit) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_impl', 'Vertical diffusion of dissolved Inorganic C (Implicit)', '[mmol/m3]', tracers%work%tra_diff_part_ver_impl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + end if + endif else if (tracers%data(j)%ID==1003) then diff --git a/src/io_restart_file_group.F90 b/src/io_restart_file_group.F90 index 3c7a327ca..b10aa4b0a 100644 --- a/src/io_restart_file_group.F90 +++ b/src/io_restart_file_group.F90 @@ -17,7 +17,7 @@ module restart_file_group_module type restart_file_group private - type(restart_file_type), public :: files(112) + type(restart_file_type), public :: files(200) ! .OG. 112 Before integer, public :: nfiles = 0 ! todo: allow dynamically allocated size without messing with shallow copied pointers contains diff --git a/src/oce_adv_tra_driver.F90 b/src/oce_adv_tra_driver.F90 index 8ef6e9a4c..5dff19d7e 100644 --- a/src/oce_adv_tra_driver.F90 +++ b/src/oce_adv_tra_driver.F90 @@ -209,6 +209,27 @@ subroutine do_oce_adv_tra(dt, vel, w, wi, we, tr_num, dynamics, tracers, partit, #endif #endif + +! O:G - tra_diag +! LO solution +! fct_LO is zero before adv_flux_hor +! Up to now only horizontal +! contribution + + +!#if defined (__recom) + if (tracers%data(tr_num)%ltra_diag) then + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ! Horizontal advection part for LO (FCT is .TRUE.) + tracers%work%tra_advhoriz(nz,n,tr_num) = fct_LO(nz,n) * dt/areasvol(nz,n)/hnode_new(nz,n) + end do + end do + end if +!#endif + ! compute the low order upwind vertical flux (explicit part only) ! zero the input/output flux before computation call adv_tra_ver_upw1(we, ttf, partit, mesh, adv_flux_ver, o_init_zero=.true.) @@ -273,6 +294,24 @@ subroutine do_oce_adv_tra(dt, vel, w, wi, we, tr_num, dynamics, tracers, partit, end if +! O:G - tra_diag +! LO solution +! fct_LO is zero before adv_flux_ver +! vertical contribution + +!#if defined (__recom) + if (tracers%data(tr_num)%ltra_diag) then + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ! Vertical advection part for LO (FCT is .TRUE.) + tracers%work%tra_advvert (nz,n,tr_num) = (adv_flux_ver(nz, n)-adv_flux_ver(nz+1, n))*dt/areasvol(nz,n)/hnode_new(nz,n) + end do + end do + end if +!#endif + !_______________________________________________________________________ if (dynamics%use_wsplit) then !wvel/=wvel_e @@ -297,7 +336,7 @@ subroutine do_oce_adv_tra(dt, vel, w, wi, we, tr_num, dynamics, tracers, partit, ! do horizontal tracer advection, in case of FCT high order solution SELECT CASE(trim(tracers%data(tr_num)%tra_adv_hor)) CASE('MUSCL') - ! compute the untidiffusive horizontal flux (o_init_zero=.false.: input is the LO horizontal flux computed above) + ! compute the antidiffusive horizontal flux (o_init_zero=.false.: input is the LO horizontal flux computed above) call adv_tra_hor_muscl(vel, ttfAB, partit, mesh, opth, adv_flux_hor, edge_up_dn_grad, nboundary_lay, o_init_zero=do_zero_flux) CASE('MFCT') call adv_tra_hor_mfct(vel, ttfAB, partit, mesh, opth, adv_flux_hor, edge_up_dn_grad, o_init_zero=do_zero_flux) @@ -412,6 +451,36 @@ subroutine do_oce_adv_tra(dt, vel, w, wi, we, tr_num, dynamics, tracers, partit, end if end if !-->if ((ldiag_DVD) .and. (tr_num<=2)) then + + +! O:G - tra_diag +!#if defined (__recom) + if (tracers%data(tr_num)%ltra_diag) then + !_______________________________________________________________________ + if (trim(tracers%data(tr_num)%tra_adv_lim)=='FCT') then + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ! part for LO + antidiffusive (FCT is .TRUE.) + tracers%work%tra_advhoriz(nz,n,tr_num) = tracers%work%tra_advhoriz(nz,n,tr_num) + dttf_h(nz,n)/hnode_new(nz,n) + tracers%work%tra_advvert(nz,n,tr_num) = tracers%work%tra_advvert(nz,n,tr_num) + dttf_v(nz,n)/hnode_new(nz,n) + end do + end do + else + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ! (FCT .FALSE.) + tracers%work%tra_advhoriz(nz,n,tr_num) = dttf_h(nz,n)/hnode_new(nz,n) + tracers%work%tra_advvert (nz,n,tr_num) = dttf_v(nz,n)/hnode_new(nz,n) + end do + end do + end if + end if +!#endif + end subroutine do_oce_adv_tra ! ! diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 3e64502ad..51b8f5914 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -175,6 +175,8 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) type(t_mesh) , intent(in) , target :: mesh !___________________________________________________________________________ integer :: i, tr_num, node, elem, nzmax, nzmin + real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, partit%myDim_nod2D+partit%eDim_elem2D) ! local variable ! OG - tra_diag + integer :: nz, n, nu1, nl1 ! OG - tra_diag !___________________________________________________________________________ ! pointer on necessary derived types real(kind=WP), dimension(:,:,:), pointer :: UV, fer_UV @@ -216,6 +218,14 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) !$OMP END PARALLEL DO end if + ! Set advective and diffusive components of total tracer fluxes to zero + ! Before tr_num loop +!#if defined (__recom) ! not necessarily should belong to recom case +! tracers%work%tra_advhoriz = 0.0 ! O:G - tra_diag +! tracers%work%tra_advvert = 0.0 + ttf_rhs_bak = 0.0 +!#endif + !___________________________________________________________________________ ! loop over all tracers !$ACC UPDATE DEVICE(dynamics%w, dynamics%w_e, dynamics%uv) !!! async(1) @@ -250,6 +260,33 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) end do !$OMP END PARALLEL DO +! O:G +! Save horizontal and vertical advective fluxes. +! We have the values on the nodes +! We do not know how much each edge contributes +! to the nodes it connects +! Notes from Patrick: del_ttf includes +! Low-order solution. But, del_ttf_advhoriz and +! del_ttf_advvert contain antidiffusive fluxes +! from the FCT scheme + +!if (.FALSE.) then +! O:G - tra_diag +!#if defined (__recom) +! if (tracers%data(tr_num)%ltra_diag) then +! do n=1, myDim_nod2D+eDim_nod2D +! nu1 = ulevels_nod2D(n) +! nl1 = nlevels_nod2D(n) +! do nz = nu1, nl1-1 + ! Horizontal advection part +! tracers%work%tra_advhoriz(nz,n,tr_num) = tracers%work%del_ttf_advhoriz(nz,n) + ! Vertical advection part +! tracers%work%tra_advvert (nz,n,tr_num) = tracers%work%del_ttf_advvert(nz,n) +! end do +! end do +! end if +!#endif +!endif !___________________________________________________________________________ ! diffuse tracers if (flag_debug .and. mype==0) print *, achar(27)//'[37m'//' --> call diff_tracers_ale'//achar(27)//'[0m' @@ -366,6 +403,8 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) type(t_mesh) , intent(in) , target :: mesh !___________________________________________________________________________ integer :: n, nzmax, nzmin + real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, partit%myDim_nod2D+partit%eDim_nod2D) ! OG - tra_diag + integer :: nz, nu1, nl1 ! OG - tra_diag !___________________________________________________________________________ ! pointer on necessary derived types real(kind=WP), pointer :: del_ttf(:,:) @@ -379,20 +418,91 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) str_bf = 0.0_WP vert_sink = 0.0_WP #endif + + ttf_rhs_bak = 0.0 ! OG - tra_diag + + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ttf_rhs_bak(nz,n) = del_ttf(nz,n) + end do + end do + end if !___________________________________________________________________________ - ! do horizontal diffusiion + ! do horizontal diffusion ! write there also horizontal diffusion rhs to del_ttf which is equal the R_T^n ! in danilovs srcipt ! includes Redi diffusivity if Redi=.true. call diff_part_hor_redi(tracers, partit, mesh) ! seems to be ~9% faster than diff_part_hor + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ! horizontal diffusion (w/out Redi) + tracers%work%tra_diff_part_hor_redi(nz,n,tr_num) = (del_ttf(nz,n) - ttf_rhs_bak(nz,n)) / hnode_new(nz,n) ! Unit [Conc] + !if (mype==0) print *, tracers%work%tra_diff_part_hor_redi(nz,n,tr_num) + end do + end do + end if + + if ((.not. tracers%data(tr_num)%i_vert_diff) .and. tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ttf_rhs_bak(nz,n) = del_ttf(nz,n) + end do + end do + end if !___________________________________________________________________________ ! do vertical diffusion: explicit if (.not. tracers%data(tr_num)%i_vert_diff) call diff_ver_part_expl_ale(tr_num, tracers, partit, mesh) + + ! OG i_vert_diff = TRUE so, we dont call explicit scheme + ! If we use this, check surface forcing for recom variables (They are not updated) + if ((.not. tracers%data(tr_num)%i_vert_diff) .and. tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ! vertical diffusion: explicit + tracers%work%tra_diff_part_ver_expl(nz,n,tr_num) = (del_ttf(nz,n) - ttf_rhs_bak(nz,n)) / hnode_new(nz,n) ! Unit [Conc] + !if (mype==0) print *, tra_diff_part_ver_expl(:,:,tr_num) + end do + end do + end if + ! A projection of horizontal Redi diffussivity onto vertical. This par contains horizontal ! derivatives and has to be computed explicitly! + + if (tracers%data(tr_num)%ltra_diag .and. Redi) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ttf_rhs_bak(nz,n) = del_ttf(nz,n) + end do + end do + end if + if (Redi) call diff_ver_part_redi_expl(tracers, partit, mesh) + if (tracers%data(tr_num)%ltra_diag .and. Redi) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ! Redi diffussivity onto vertical: explicit + tracers%work%tra_diff_part_ver_redi_expl(nz,n,tr_num) = (del_ttf(nz,n) - ttf_rhs_bak(nz,n)) / hnode_new(nz,n) ! Unit [Conc] + !if (mype==0) print *, tra_diff_part_ver_redi_expl(:,:,tr_num) + end do + end do + end if + ! if (recom_debug .and. mype==0) print *, tracers%data(tr_num)%ID #if defined(__recom) @@ -478,7 +588,32 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) !___________________________________________________________________________ if (tracers%data(tr_num)%i_vert_diff) then ! do vertical diffusion: implicite + + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + ttf_rhs_bak(nz,n) = tracers%data(tr_num)%values(nz,n) + end do + end do + end if + + ! (w/out Redi) call diff_ver_part_impl_ale(tr_num, dynamics, tracers, ice, partit, mesh) + + ! vertical diffusion: implicit + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do n=1, myDim_nod2D+eDim_nod2D + nu1 = ulevels_nod2D(n) + nl1 = nlevels_nod2D(n) + do nz = nu1, nl1-1 + tracers%work%tra_diff_part_ver_impl(nz,n,tr_num) = tracers%data(tr_num)%values(nz,n) - ttf_rhs_bak(nz,n) + !if (mype==0) print *, tra_diff_part_ver_impl(:,:,tr_num) + end do + end do + end if + end if !We DO not set del_ttf to zero because it will not be used in this timestep anymore !init_tracers_AB will set it to zero for the next timestep diff --git a/src/oce_setup_step.F90 b/src/oce_setup_step.F90 index 4a1e96d9d..258990157 100755 --- a/src/oce_setup_step.F90 +++ b/src/oce_setup_step.F90 @@ -291,12 +291,12 @@ SUBROUTINE tracer_init(tracers, partit, mesh) !___________________________________________________________________________ ! define tracer namelist parameter integer :: num_tracers - logical :: i_vert_diff, smooth_bh_tra + logical :: i_vert_diff, smooth_bh_tra , ltra_diag ! OG - tra_diag real(kind=WP) :: gamma0_tra, gamma1_tra, gamma2_tra integer :: AB_order = 2 namelist /tracer_listsize/ num_tracers namelist /tracer_list / nml_tracer_list - namelist /tracer_general / smooth_bh_tra, gamma0_tra, gamma1_tra, gamma2_tra, i_vert_diff, AB_order + namelist /tracer_general / smooth_bh_tra, gamma0_tra, gamma1_tra, gamma2_tra, i_vert_diff, AB_order, ltra_diag ! OG - tra_diag !___________________________________________________________________________ ! pointer on necessary derived types #include "associate_part_def.h" @@ -435,6 +435,7 @@ SUBROUTINE tracer_init(tracers, partit, mesh) tracers%data(n)%valuesAB = 0. tracers%data(n)%valuesold = 0. tracers%data(n)%i_vert_diff = i_vert_diff + tracers%data(n)%ltra_diag = ltra_diag ! OG - tra_diag end do allocate(tracers%work%del_ttf(nl-1,node_size)) allocate(tracers%work%del_ttf_advhoriz(nl-1,node_size),tracers%work%del_ttf_advvert(nl-1,node_size)) @@ -447,6 +448,17 @@ SUBROUTINE tracer_init(tracers, partit, mesh) tracers%work%dvd_trflx_hor = 0.0_WP tracers%work%dvd_trflx_ver = 0.0_WP end if + if (ltra_diag) then ! OG - tra_diag + allocate(tracers%work%tra_advhoriz(nl-1,node_size,num_tracers),tracers%work%tra_advvert(nl-1,node_size,num_tracers)) + tracers%work%tra_advhoriz = 0.0_WP + tracers%work%tra_advvert = 0.0_WP + allocate(tracers%work%tra_diff_part_hor_redi(nl-1,node_size,num_tracers),tracers%work%tra_diff_part_ver_expl(nl-1,node_size,num_tracers)) + allocate(tracers%work%tra_diff_part_ver_redi_expl(nl-1,node_size,num_tracers),tracers%work%tra_diff_part_ver_impl(nl-1,node_size,num_tracers)) + tracers%work%tra_diff_part_hor_redi = 0.0_WP + tracers%work%tra_diff_part_ver_expl = 0.0_WP + tracers%work%tra_diff_part_ver_redi_expl = 0.0_WP + tracers%work%tra_diff_part_ver_impl = 0.0_WP + end if END SUBROUTINE tracer_init ! ! From 3e84a8864797727476322b4eb349ba6a13c5a997 Mon Sep 17 00:00:00 2001 From: ogurses Date: Wed, 20 Nov 2024 10:34:26 +0100 Subject: [PATCH 02/66] add recom_sms diag --- src/MOD_TRACER.F90 | 1 + src/int_recom/recom_main.F90 | 22 ++++++++++++++++++++-- src/io_meandata.F90 | 3 +++ src/oce_setup_step.F90 | 3 +++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/MOD_TRACER.F90 b/src/MOD_TRACER.F90 index 42627450b..d1b872a18 100644 --- a/src/MOD_TRACER.F90 +++ b/src/MOD_TRACER.F90 @@ -50,6 +50,7 @@ MODULE MOD_TRACER real(kind=WP), allocatable :: tra_diff_part_ver_expl(:,:,:) real(kind=WP), allocatable :: tra_diff_part_ver_redi_expl(:,:,:) real(kind=WP), allocatable :: tra_diff_part_ver_impl(:,:,:) +real(kind=WP), allocatable :: tra_recom_sms(:,:,:) ! The fct part real(kind=WP),allocatable,dimension(:,:) :: fct_LO ! Low-order solution diff --git a/src/int_recom/recom_main.F90 b/src/int_recom/recom_main.F90 index c9c5575e5..d4243d8d7 100755 --- a/src/int_recom/recom_main.F90 +++ b/src/int_recom/recom_main.F90 @@ -94,7 +94,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) real(kind=8) :: SW, Loc_slp integer :: tr_num, num_tracers - integer :: nz, n, nzmin, nzmax + integer :: nz, n, nzmin, nzmax, nu1, nl1 integer :: idiags real(kind=8) :: Sali @@ -113,6 +113,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) real(kind=8), allocatable :: OmegaC_watercolumn(:) real(kind=8), allocatable :: kspc_watercolumn(:) real(kind=8), allocatable :: rhoSW_watercolumn(:) + real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, tracers%num_tracers) ! local variable ! OG - tra_diag #include "../associate_part_def.h" #include "../associate_mesh_def.h" @@ -206,6 +207,14 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) C(1:nzmax, tr_num-2) = tracers%data(tr_num)%values(1:nzmax, n) end do + ttf_rhs_bak = 0.0 ! OG - tra_diag + + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do tr_num=1, num_tracers + ttf_rhs_bak(1:nzmax,tr_num) = tracers%data(tr_num)%values(1:nzmax, n) + end do + end if + !!---- Depth of the nodes in the water column zr(1:nzmax) = Z_3d_n(1:nzmax, n) @@ -282,6 +291,14 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) tracers%data(tr_num)%values(1:nzmax, n) = C(1:nzmax, tr_num-2) end do + ! recom_sms + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do tr_num=1, num_tracers + tracers%work%tra_recom_sms(1:nzmax,n,tr_num) = tracers%data(tr_num)%values(1:nzmax, n) - ttf_rhs_bak(1:nzmax,tr_num) + !if (mype==0) print *, tra_recom_sms(:,:,tr_num) + end do + end if + !!---- Local variables that have been changed during the time-step are stored so they can be saved Benthos(n,1:benthos_num) = LocBenthos(1:benthos_num) GlodecayBenthos(n, 1:benthos_num) = decayBenthos(1:benthos_num)/SecondsPerDay ! convert from [mmol/m2/d] to [mmol/m2/s] @@ -412,6 +429,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) call exchange_nod(OmegaC3D, partit) call exchange_nod(kspc3D, partit) call exchange_nod(rhoSW3D, partit) + end subroutine recom ! ====================================================================================== @@ -496,4 +514,4 @@ subroutine bio_fluxes(tracers, partit, mesh) relax_alk=relax_alk-net/ocean_area ! at ocean surface layer -end subroutine bio_fluxes \ No newline at end of file +end subroutine bio_fluxes diff --git a/src/io_meandata.F90 b/src/io_meandata.F90 index 1d242fa0b..e5ec2db7e 100644 --- a/src/io_meandata.F90 +++ b/src/io_meandata.F90 @@ -728,6 +728,9 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) ! vertical diffusion (Implicit) call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_impl', 'Vertical diffusion of dissolved Inorganic C (Implicit)', '[mmol/m3]', tracers%work%tra_diff_part_ver_impl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + + ! recom_sms + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_recom_sms', 'Recom SMS', '[mmol/m3]', tracers%work%tra_recom_sms(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) end if endif diff --git a/src/oce_setup_step.F90 b/src/oce_setup_step.F90 index 258990157..51d310f77 100755 --- a/src/oce_setup_step.F90 +++ b/src/oce_setup_step.F90 @@ -454,10 +454,13 @@ SUBROUTINE tracer_init(tracers, partit, mesh) tracers%work%tra_advvert = 0.0_WP allocate(tracers%work%tra_diff_part_hor_redi(nl-1,node_size,num_tracers),tracers%work%tra_diff_part_ver_expl(nl-1,node_size,num_tracers)) allocate(tracers%work%tra_diff_part_ver_redi_expl(nl-1,node_size,num_tracers),tracers%work%tra_diff_part_ver_impl(nl-1,node_size,num_tracers)) + allocate(tracers%work%tra_recom_sms(nl-1,node_size,num_tracers)) tracers%work%tra_diff_part_hor_redi = 0.0_WP tracers%work%tra_diff_part_ver_expl = 0.0_WP tracers%work%tra_diff_part_ver_redi_expl = 0.0_WP tracers%work%tra_diff_part_ver_impl = 0.0_WP + tracers%work%tra_recom_sms = 0.0_WP + end if END SUBROUTINE tracer_init ! From 434f0e6a674a187f1c551a154267b68d2a27a274 Mon Sep 17 00:00:00 2001 From: ogurses Date: Tue, 10 Dec 2024 12:38:35 +0100 Subject: [PATCH 03/66] feat(recom): add ciso and medusa components Fill __ciso directive to ensure that carbon isotope code works. Medusa interface is added. --- src/gen_surface_forcing.F90 | 315 +++++++++++++++++++++++++++++++- src/int_recom/recom_atbox.F90 | 92 ++++++++++ src/int_recom/recom_forcing.F90 | 50 +++++ src/int_recom/recom_init.F90 | 22 +++ src/int_recom/recom_main.F90 | 114 ++++++++++-- src/int_recom/recom_sinking.F90 | 158 ++++++++++++++++ src/int_recom/recom_sms.F90 | 299 ++++++++++++++++++++++++++++-- src/io_meandata.F90 | 26 +++ src/io_restart.F90 | 18 ++ 9 files changed, 1062 insertions(+), 32 deletions(-) create mode 100644 src/int_recom/recom_atbox.F90 diff --git a/src/gen_surface_forcing.F90 b/src/gen_surface_forcing.F90 index bcc4de87b..1cdf4c96c 100644 --- a/src/gen_surface_forcing.F90 +++ b/src/gen_surface_forcing.F90 @@ -1246,6 +1246,7 @@ SUBROUTINE sbc_do(partit, mesh) #if defined (__recom) use recom_config use recom_glovar + use REcoM_ciso #endif IMPLICIT NONE @@ -1263,6 +1264,11 @@ SUBROUTINE sbc_do(partit, mesh) real(kind=8), allocatable :: ncdata(:) integer :: CO2start, CO2count integer :: status, ncid, varid + character(300) :: sedfilename + logical :: do_read=.false. + integer :: n_lb + integer, dimension(2) :: istart, icount + real(kind=8) :: total_runoff #endif type(t_partit), intent(inout), target :: partit type(t_mesh), intent(in), target :: mesh @@ -1421,10 +1427,40 @@ SUBROUTINE sbc_do(partit, mesh) ! ******** Atmospheric CO2 ********* if (mstep == 1) then ! The year has changed + if (use_atbox) then +! Atmospheric box model CO2 values + AtmCO2(:) = x_co2atm(1) + if (ciso) then + AtmCO2_13(:) = x_co2atm_13(1) + if (ciso_14) AtmCO2_14(:,1) = x_co2atm_14(1) + end if + else +! Prescribed atmospheric CO2 values + if (constant_CO2) then AtmCO2(:) = CO2_for_spinup if (mype==0) write(*,*) 'Constant_CO2 = ', CO2_for_spinup - if (mype==0) write(*,*),'Atm CO2=', AtmCO2 + if (mype==0) write(*,*),'Atm CO2=', AtmCO2 + if (ciso) then + AtmCO2_13 = CO2_for_spinup * (1. + 0.001 * delta_co2_13) + if (ciso_14) then +! Atmospheric 14C varies with latitude + do i=1, myDim_nod2D +! Latitude of atmospheric input data + lat_val = geo_coord_nod2D(2,i) / rad +! Binning to latitude zones + if (ciso_organic_14) then +! Convert Delta_14C to delta_14C + delta_co2_14 = (big_delta_co2_14(lat_zone(lat_val)) + 2. * delta_co2_13 + 50.) / & + (0.95 - 0.002 * delta_co2_13) + else +! "Inorganic" 14C approximation: delta_14C := Delta_14C + delta_co2_14 = big_delta_co2_14(lat_zone(lat_val)) + end if + AtmCO2_14(lat_zone(lat_val),:) = CO2_for_spinup * (1. + 0.001 * delta_co2_14) + end do + end if + end if else filename=trim(nm_co2_data_file) if (mype==0) write(*,*) 'Updating CO2 climatology for month ', i,' from ', trim(filename) @@ -1458,7 +1494,284 @@ SUBROUTINE sbc_do(partit, mesh) if (mype==0) write(*,*),'Atm CO2=', AtmCO2 status=nf_close(ncid) end if + end if ! atmospheric box model or prescribed CO2 values + +! Control output of atmospheric CO2 values + if (mype==0) then !OG + print *, "In atm_input: AtmCO2 = ", AtmCO2(1) + if (ciso) then + print *, " AtmCO2_13 = ", AtmCO2_13(1) + if (ciso_14) print *, " AtmCO2_14 = ", AtmCO2_14(:,1) + end if + if (use_atbox) print *, " use_atbox = .true." end if + + + +! ******** Sediment input ********* +!-Checking if files need to be opened--------------------------------------------- + if(use_MEDUSA .and. (sedflx_num .ne. 0)) then + allocate(ncdata(9)) + if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> Sed_input'//achar(27)//'[0m' + ! MEDUSA input needs to be renamed via jobscript + sedfilename = trim(ResultPath)//'medusa_flux2fesom.nc' + if (mype==0) write(*,*) 'Updating sedimentary input first time from', sedfilename + +!-Opening files-------------------------------------------------------------------- + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_din', 1, GloSed(:,1), partit,mesh) +! if (mype==0) write(*,*) mype, 'sediment DIN flux:', maxval(GloSed(:,1)), minval(GloSed(:,1)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dic', 1, GloSed(:,2), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DIC flux:', maxval(GloSed(:,2)), minval(GloSed(:,2)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_alk', 1, GloSed(:,3), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment Alk flux:', maxval(GloSed(:,3)), minval(GloSed(:,3)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dsi', 1, GloSed(:,4), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DSi flux:', maxval(GloSed(:,4)), minval(GloSed(:,4)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_o2', 1, GloSed(:,5), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment O2 flux:', maxval(GloSed(:,5)), minval(GloSed(:,5)) + + if(ciso) then + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dic13', 1, GloSed(:,6), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DIC13 flux:', maxval(GloSed(:,6)), minval(GloSed(:,6)) + if(ciso_14) then + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dic14', 1, GloSed(:,7), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DIC14 flux:', maxval(GloSed(:,7)), minval(GloSed(:,7)) + end if ! ciso_14 + end if ! ciso + +! unit conversion + GloSed(:,:)=GloSed(:,:)/86400 + +! read loopback fluxes from the same file + if(add_loopback) then + if (mype==0) write(*,*) 'adding loopback fluxes through runoff for the first time' !OG + + istart = (/1,1/) + icount = (/1,1/) + ncdata = 0.d0 + +! total_runoff = sum(runoff*area(1,:))*86400 +! Does 'area' only contain values on one node? sum of area not equal total +! ocean surface area! + total_runoff = 8.76d5*86400 +! if (mype==0) write(*,*) mype, 'total runoff (m3/day):', total_runoff +! if (mype==0) write(*,*) mype, 'runoff:', maxval(runoff),minval(runoff) +! if (mype==0) write(*,*) mype, 'surface area',maxval(area(1,:)),minval(area(1,:)) + + status=nf_open(sedfilename, nf_nowrite, ncid) + if(status.ne.nf_noerr) call handle_err(status) + + status=nf_inq_varid(ncid, 'loopback_orgm_din', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(1)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_orgm_din (mmolN/day):', ncdata(1) !OG + + status=nf_inq_varid(ncid, 'loopback_orgm_dic', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(2)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_orgm_dic (mmolC/day):', ncdata(2) !OG + + status=nf_inq_varid(ncid, 'loopback_orgm_alk', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(3)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_orgm_alk (mmolAlk/day):', ncdata(3) !OG + + status=nf_inq_varid(ncid, 'loopback_opal', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(4)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_opal (mmolSi/day):', ncdata(4) !OG + + status=nf_inq_varid(ncid, 'loopback_caco3', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(5)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_caco3 (mmolC/day):', ncdata(5) !OG + + if(ciso) then + status=nf_inq_varid(ncid, 'loopback_orgm_dic13', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(6)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_dic13:', ncdata(6) !OG + + status=nf_inq_varid(ncid, 'loopback_caco313', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(7)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_caco313:', ncdata(7)!OG + + if(ciso_14 .and. ciso_organic_14) then + status=nf_inq_varid(ncid, 'loopback_orgm_dic14', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(8)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_dic14:', ncdata(8) !OG + + status=nf_inq_varid(ncid, 'loopback_caco314', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(9)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_caco314:', ncdata(9) !OG + + end if ! ciso_14 .and. ciso_organic_14 + end if ! ciso + deallocate(ncdata) + status=nf_close(ncid) + +! calculating fluxes back to ocean surface through rivers (mmol/m2/s) +! converting from fluxes out of sediment to fluxes into the ocean + do n_lb = 1,9 + lb_flux(:,n_lb) = -runoff*ncdata(n_lb)/total_runoff*lb_tscale + end do + +! if (mype==0) write(*,*) mype, 'sum of surface area (m2)', +! sum(area(1,:)) +! if (mype==0) write(*,*) mype, 'total ocean area (m2)', ocean_area +! if (mype==0) write(*,*) mype, 'DSi concentration in rivers',ncdata(4)/total_runoff +! if (mype==0) write(*,*) mype, 'DIC concentration in rivers',ncdata(2)/total_runoff +! if (mype==0) write(*,*) mype, 'Alk concentration in rivers',ncdata(3)/total_runoff +! if (mype==0) write(*,*) mype, 'DIN concentration in rivers',ncdata(1)/total_runoff +! if (mype==0) write(*,*) mype, 'DIN surface input:',minval(lb_flux(:,1)),maxval(lb_flux(:,1)) +! if (mype==0) write(*,*) mype, 'DIC surface input:',minval(lb_flux(:,2)),maxval(lb_flux(:,2)) +! if (mype==0) write(*,*) mype, 'Alk surface input:',minval(lb_flux(:,3)),maxval(lb_flux(:,3)) +! if (mype==0) write(*,*) mype, 'DSi surface input:',minval(lb_flux(:,4)),maxval(lb_flux(:,4)) +! if (mype==0) write(*,*) mype, 'DIC(calcite) surface input:',minval(lb_flux(:,5)),maxval(lb_flux(:,5)) + + end if ! add_loopback + + else + +!-Checking if files need to be opened--------------------------------------------- + call monthly_event(do_read) + if(do_read) then ! file is opened and read every year + i=month + if (i > 12) i=1 + if (mype==0) write(*,*) 'Updating sedimentary input for month', i, 'from', sedfilename !OG + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_din', 1, GloSed(:,1), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DIN flux:', maxval(GloSed(:,1)), minval(GloSed(:,1)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dic', 1, GloSed(:,2), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DIC flux:', maxval(GloSed(:,2)), minval(GloSed(:,2)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_alk', 1, GloSed(:,3), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment Alk flux:', maxval(GloSed(:,3)), minval(GloSed(:,3)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dsi', 1, GloSed(:,4), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DSi flux:', maxval(GloSed(:,4)), minval(GloSed(:,4)) + + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_o2', 1, GloSed(:,5), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment O2 flux:', maxval(GloSed(:,5)), minval(GloSed(:,5)) + + if(ciso) then + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dic13', 1, GloSed(:,6), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DIC13 flux:', maxval(GloSed(:,6)), minval(GloSed(:,6)) + if(ciso_14) then + call read_2ddata_on_grid_NetCDF(sedfilename, 'df_dic14', 1, GloSed(:,7), partit, mesh) +! if (mype==0) write(*,*) mype, 'sediment DIC14 flux:', maxval(GloSed(:,7)), minval(GloSed(:,7)) + end if ! ciso_14 + end if ! ciso + +!to mmol/m2/s + GloSed(:,:)=GloSed(:,:)/86400 + +! read loopback fluxes from the same file + if(add_loopback) then + if (mype==0) write(*,*) 'adding loopback fluxes into the ocean monthly' !OG + + istart = (/1,1/) + icount = (/1,1/) + ncdata = 0.d0 + + total_runoff = 8.76d5*86400 + + status=nf_open(sedfilename, nf_nowrite, ncid) + if(status.ne.nf_noerr) call handle_err(status) + + status=nf_inq_varid(ncid, 'loopback_orgm_din', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(1)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_orgm_din (mmolN/day):', ncdata(1) !OG + + status=nf_inq_varid(ncid, 'loopback_orgm_dic', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(2)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_orgm_dic (mmolC/day):', ncdata(2) !OG + + status=nf_inq_varid(ncid, 'loopback_orgm_alk', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(3)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_orgm_alk (mmolAlk/day):', ncdata(3) !OG + + status=nf_inq_varid(ncid, 'loopback_opal', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(4)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_opal (mmolSi/day):', ncdata(4) !OG + + status=nf_inq_varid(ncid, 'loopback_caco3', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(5)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_caco3 (mmolC/day):', ncdata(5) !OG + + if(ciso) then + status=nf_inq_varid(ncid, 'loopback_orgm_dic13', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(6)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_dic13:', ncdata(6) !OG + + status=nf_inq_varid(ncid, 'loopback_caco313', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(7)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_caco313:', ncdata(7) !OG + + if(ciso_14 .and. ciso_organic_14) then + status=nf_inq_varid(ncid, 'loopback_orgm_dic14', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(8)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_dic14:', ncdata(8) !OG + + status=nf_inq_varid(ncid, 'loopback_caco314', varid) + if(status.ne.nf_noerr) call handle_err(status) + status=nf_get_vara_double(ncid,varid,istart,icount,ncdata(9)) + if(status.ne.nf_noerr) call handle_err(status) + if (mype==0) write(*,*) mype, 'loopback_caco314:', ncdata(9) !OG + + end if ! ciso_14 .and. ciso_organic_14 + end if ! ciso + status=nf_close(ncid) + +! calculating fluxes back to ocean surface through rivers (mmol/m2/s) +! converting from fluxes out of sediment to fluxes into the ocean + do n_lb = 1,9 + lb_flux(:,n_lb) = -runoff*ncdata(n_lb)/total_runoff*lb_tscale + end do + + end if ! add_loopback + + end if ! do_read + + if (mype==0) write(*,*) 'sedimentary input from MEDUSA not used!' !OG + + end if ! use_MEDUSA and sedflx_num not 0 + + end if + ! ******** Fe deposition ********* if (fe_data_source=='Albani') then diff --git a/src/int_recom/recom_atbox.F90 b/src/int_recom/recom_atbox.F90 new file mode 100644 index 000000000..4e579c51e --- /dev/null +++ b/src/int_recom/recom_atbox.F90 @@ -0,0 +1,92 @@ + subroutine recom_atbox(partit, mesh) +! Simple 0-d box model to calculate the temporal evolution of atmospheric CO2. +! Initially the box model was part of module recom_ciso. Now it can be run also +! without carbon isotopes (ciso==.false.) +! mbutzin, 2021-07-08 + +! Settings are copied from subroutine bio_fluxes, +! some of the following modules may be unnecessary here +! use REcoM_declarations +! use REcoM_LocVar + use REcoM_GloVar + use recom_config + use recom_ciso + + use mod_mesh + USE MOD_PARTIT + USE MOD_PARSUP + + use g_config + use o_arrays + use g_comm_auto + use g_forcing_arrays + use g_support + + + implicit none + integer :: n, elem, elnodes(3),n1 + real(kind=WP) :: total_co2flux, & ! (mol / s) + total_co2flux_13, & ! (mol / s) carbon-13 + total_co2flux_14 ! (mol / s) radiocarbon + real(kind=WP), parameter :: mol_allatm = 1.7726e20 ! atmospheric inventory of all compounds (mol) + type(t_partit), intent(inout), target :: partit + type(t_mesh) , intent(inout), target :: mesh + +#include "../associate_part_def.h" +#include "../associate_mesh_def.h" +#include "../associate_part_ass.h" +#include "../associate_mesh_ass.h" + +! Globally integrated air-sea CO2 flux (mol / s) + total_co2flux = 0. + call integrate_nod(0.001 * GloCO2flux_seaicemask , total_CO2flux, partit, mesh) + +! Atmospheric carbon budget (mol) +! mass of the dry atmosphere = 5.1352e18 kg (Trenberth & Smith 2005, doi:10.1175/JCLI-3299.1) +! mean density of air = 0.02897 kg / mol (https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html) +! => total molecular inventory of the dry atmosphere: moles_atm = 1.7726e20 mol == constant. +! mol_co2atm = mol_co2atm - total_co2flux * dt +! Atmospheric mixing ratios in ppm +! x_co2atm(1) = mol_co2atm / mol_allatm * 1.e6 ! ppm + x_co2atm(1) = x_co2atm(1) - total_co2flux / mol_allatm * dt * 1.e6 + x_co2atm = x_co2atm(1) + + if (ciso) then +! Consider 13CO2 (and maybe also 14CO2) + +! Globally integrated air-sea 13CO2 flux (mol / s) + total_co2flux_13 = 0. + call integrate_nod(0.001 * GloCO2flux_seaicemask_13, total_co2flux_13, partit, mesh) + +! Atmospheric carbon-13 budget (mol) +! mol_co2atm_13 = mol_co2atm_13 - total_co2flux_13 * dt +! Budget in terms of the 13C / 12C volume mixing ratio +! x_co2atm_13(1) = mol_co2atm_13 / mol_allatm * 1.e6 + x_co2atm_13(1) = x_co2atm_13(1) - total_co2flux_13 / mol_allatm * dt * 1.e6 + x_co2atm_13 = x_co2atm_13(1) + + if (ciso_14) then + total_co2flux_14 = 0. ! globally integrated air-sea 14CO2 flux (mol / s) + call integrate_nod(0.001 * GloCO2flux_seaicemask_14, total_co2flux_14, partit, mesh) +! Atmospheric radiocarbon budget in mol: +! mol_co2atm_14 = mol_co2atm_14 + dt * (cosmic_14(1) - mol_co2atm_14 * lambda_14 - total_co2flux_14) +! = (mol_co2atm_14 + dt * (cosmic_14(1) - total_co2flux_14)) / (1 + lambda_14 * dt) +! Budget in terms of the 14C / 12C volume mixing ratio + x_co2atm_14(1) = (x_co2atm_14(1) + dt * (cosmic_14(1) - total_co2flux_14) / mol_allatm * 1.e6) / & + (1 + lambda_14 * dt) + x_co2atm_14 = x_co2atm_14(1) + +! Adjust cosmogenic 14C production (mol / s) in spinup runs, + r_atm_14 = x_co2atm_14(1) / x_co2atm(1) +! r_atm_spinup_14 is calculated once-only in subroutine recom_init + if (atbox_spinup .and. abs(r_atm_14 - r_atm_spinup_14) > 0.001) then + cosmic_14(1) = cosmic_14(1) * (r_atm_spinup_14 / r_atm_14) +! cosmic_14(1) = cosmic_14(1) * (1 + 0.01 * (r_atm_14_spinup / r_atm_14)) + end if + cosmic_14 = cosmic_14(1) + endif + end if + + return + end subroutine recom_atbox + diff --git a/src/int_recom/recom_forcing.F90 b/src/int_recom/recom_forcing.F90 index 81650779d..161fa1625 100644 --- a/src/int_recom/recom_forcing.F90 +++ b/src/int_recom/recom_forcing.F90 @@ -272,6 +272,54 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> ciso after REcoM_Forcing'//achar(27)//'[0m' + if (ciso) then +! Calculate carbon-isotopic fractionation, radioactive decay is calculated in oce_ale_tracer.F90 + +! Fractionation due to air-sea exchange and chemical speciation of CO2 + call recom_ciso_airsea(recom_t(1), co3(1), recom_dic(1)) ! -> alpha_aq, alpha_dic. CO3 is taken from mocsy + +! Isotopic ratios of dissolved CO2, also needed to calculate biogenic fractionation + r_dic_13 = max(tiny*1e-3,state(1,idic_13)*1e-3) / recom_dic(1) + r_co2s_13 = alpha_aq_13 / alpha_dic_13 * r_dic_13 +! Calculate air-sea fluxes of 13|14CO2 in mmol / m**2 / s + kwco2 = kw660(1) * (660/scco2(REcoM_T(1)))**0.5 ! Piston velocity (via mocsy) + co2sat = co2flux(1) / (kwco2 + tiny) + co2(1) ! Saturation concentration of CO2 (via mocsy) +! co2flux_13 = kwco2 * alpha_k_13 * (alpha_aq_13 * r_atm_13 * co2sat - r_co2s_13 * co2(1)) +! co2flux_13 = alpha_k_13 * alpha_aq_13 * kwco2 * (r_atm_13 * co2sat - r_dic_13 * co2(1) / alpha_dic_13) +! Fractionation factors were determined for freshwater, include a correction for enhanced fractionation in seawater + co2flux_13 = (alpha_k_13 * alpha_aq_13 - 0.0002) * kwco2 * (r_atm_13 * co2sat - r_dic_13 * co2(1) / alpha_dic_13) + co2flux_seaicemask_13 = co2flux_13 * 1.e3 + +! Biogenic fractionation due to photosynthesis of plankton +! phyc_13|14 and diac_13|14 are only used in REcoM_sms to calculate DIC_13|14, DOC_13|14 and DetC_13|14 + + call recom_ciso_photo(co2(1)) ! -> alpha_p + r_phyc_13 = r_co2s_13 / alpha_p_13 + r_diac_13 = r_co2s_13 / alpha_p_dia_13 + state(1:nn,iphyc_13) = max((tiny_C * r_phyc_13), (state(1:nn,iphyc) * r_phyc_13)) + state(1:nn,idiac_13) = max((tiny_C_d * r_diac_13), (state(1:nn,idiac) * r_diac_13)) + +! The same for radiocarbon, fractionation factors have been already derived above + if (ciso_14) then +! Air-sea exchange + r_dic_14 = max(tiny*1e-3,state(1,idic_14)*1e-3) / recom_dic(1) + r_co2s_14 = alpha_aq_14 / alpha_dic_14 * r_dic_14 +! co2flux_14 = kwco2 * alpha_k_14 * (alpha_aq_14 * r_atm_14 * co2sat - r_co2s_14 * co2(1)) +! Fractionation factors were determined for freshwater, include a correction for enhanced fractionation seawater + co2flux_14 = (alpha_k_14 * alpha_aq_14 - 0.0004) * kwco2 * (r_atm_14 * co2sat - r_dic_14 * co2(1) / alpha_dic_14) + co2flux_seaicemask_14 = co2flux_14 * 1.e3 +! Biogenic fractionation + if (ciso_organic_14) then + r_phyc_14 = r_co2s_14 / alpha_p_14 + r_diac_14 = r_co2s_14 / alpha_p_dia_14 + state(1:nn,iphyc_14) = max((tiny_C * r_phyc_14), (state(1:nn,iphyc) * r_phyc_14)) + state(1:nn,idiac_14) = max((tiny_C_d * r_diac_14), (state(1:nn,idiac) * r_diac_14)) + end if + end if +! Radiocarbon + end if +! ciso + !------------------------------------------------------------------------------- ! Diagnostics if (Diags) then @@ -291,10 +339,12 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal locNNAd = sum(vertNNAd(1:nn) * thick(1:nn)) locChldegd = sum(vertChldegd(1:nn) * thick(1:nn)) +#if defined (__coccos) locNPPc = sum(vertNPPc(1:nn) * thick(1:nn)) locGPPc = sum(vertGPPc(1:nn) * thick(1:nn)) locNNAc = sum(vertNNAc(1:nn) * thick(1:nn)) locChldegc = sum(vertChldegc(1:nn) * thick(1:nn)) +#endif end if end subroutine REcoM_Forcing diff --git a/src/int_recom/recom_init.F90 b/src/int_recom/recom_init.F90 index e9b5aebbf..e2b45b0ab 100644 --- a/src/int_recom/recom_init.F90 +++ b/src/int_recom/recom_init.F90 @@ -246,6 +246,18 @@ subroutine recom_init(tracers, partit, mesh) Sinkingvel1(:,:) = 0.d0 Sinkingvel2(:,:) = 0.d0 + if (use_MEDUSA) then + allocate(GloSed(node_size,sedflx_num)) + allocate(SinkFlx(node_size,bottflx_num)) + allocate(SinkFlx_tr(node_size,bottflx_num,num_tracers)) ! kh 25.03.22 buffer sums per tracer index + + SinkFlx(:,:) = 0.d0 + SinkFlx_tr(:,:,:) = 0.0d0 ! kh 25.03.22 + GloSed(:,:) = 0.d0 + allocate(lb_flux(node_size,9)) + lb_flux(:,:) = 0.d0 + end if + DO i=num_tracers-bgc_num+1, num_tracers id=tracers%data(i)%ID @@ -332,20 +344,26 @@ subroutine recom_init(tracers, partit, mesh) #if defined (__coccos) & defined (__3Zoo2Det) CASE (1029) tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! CoccoN + CASE (1030) tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! CoccoC + CASE (1031) tracers%data(i)%values(:,:) = tiny_chl ! CoccoChl + ! ******************* ! CASE 3phy 1zoo 1det ! ******************* #elif defined (__coccos) & !defined (__3Zoo2Det) CASE (1023) tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! CoccoN + CASE (1024) tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! CoccoC + CASE (1025) tracers%data(i)%values(:,:) = tiny_chl ! CoccoChl + #endif ! ******************* @@ -354,16 +372,20 @@ subroutine recom_init(tracers, partit, mesh) #if defined (__coccos) & defined (__3Zoo2Det) CASE (1032) tracers%data(i)%values(:,:) = tiny ! Zoo3N + CASE (1033) tracers%data(i)%values(:,:) = tiny * Redfield ! Zoo3C + #elif !defined (__coccos) & defined (__3Zoo2Det) ! ******************* ! CASE 2phy 3zoo 2det ! ******************* CASE (1029) tracers%data(i)%values(:,:) = tiny ! Zoo3N + CASE (1030) tracers%data(i)%values(:,:) = tiny * Redfield ! Zoo3C + #endif END SELECT diff --git a/src/int_recom/recom_main.F90 b/src/int_recom/recom_main.F90 index d4243d8d7..34e759e87 100755 --- a/src/int_recom/recom_main.F90 +++ b/src/int_recom/recom_main.F90 @@ -98,6 +98,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) integer :: idiags real(kind=8) :: Sali + logical :: do_update = .false. real(kind=8), allocatable :: Temp(:), Sali_depth(:), zr(:), PAR(:) real(kind=8), allocatable :: C(:,:) @@ -136,6 +137,17 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) if (restore_alkalinity) call bio_fluxes(tracers, partit, mesh) if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> bio_fluxes'//achar(27)//'[0m' + if (use_atbox) then ! MERGE +! Prognostic atmospheric isoCO2 + call recom_atbox(partit,mesh) +! optional I/O of isoCO2 and inferred cosmogenic 14C production; this may cost some CPU time + if (ciso .and. ciso_14) then + call annual_event(do_update) + if (do_update .and. mype==0) write (*, fmt = '(a50,2x,i6,4(2x,f6.2))') & + 'Year, xCO2 (ppm), cosmic 14C flux (at / cm² / s):', & + yearold, x_co2atm(1), x_co2atm_13(1), x_co2atm_14(1), cosmic_14(1) * production_rate_to_flux_14 + end if + end if ! ====================================================================================== !********************************* LOOP STARTS ***************************************** @@ -177,6 +189,31 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) !!---- Atmospheric CO2 in LocVar LocAtmCO2 = AtmCO2(month) +! Update of prognostic atmospheric CO2 values + if (use_atbox) then + LocAtmCO2 = x_co2atm(1) + if (ciso) then + LocAtmCO2_13 = x_co2atm_13(1) + if (ciso_14) LocAtmCO2_14 = x_co2atm_14(1) + end if + else +! Consider prescribed atmospheric CO2 values + if (ciso) then + LocAtmCO2_13 = AtmCO2_13(month) + if (ciso_14) then +! Latitude of nodal point n + lat_val = geo_coord_nod2D(2,n) / rad +! Zonally binned NH / SH / TZ 14CO2 input values + LocAtmCO2_14 = AtmCO2_14(lat_zone(lat_val), month) + end if + end if + end if ! use_atbox + + if (ciso) then + r_atm_13 = LocAtmCO2_13(1) / LocAtmCO2(1) + if (ciso_14) r_atm_14 = LocAtmCO2_14(1) / LocAtmCO2(1) + end if + !!---- Shortwave penetration SW = parFrac * shortwave(n) SW = SW * (1.d0 - a_ice(n)) @@ -228,29 +265,36 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) if (Diags) then !! * Allocate 3D diagnostics * - allocate(vertrespmeso(nl-1), vertrespmacro(nl-1), vertrespmicro(nl-1)) + allocate(vertrespmeso(nl-1)) vertrespmeso = 0.d0 + +#if defined (__3Zoo2Det) + allocate(vertrespmacro(nl-1), vertrespmicro(nl-1)) vertrespmacro = 0.d0 vertrespmicro = 0.d0 - +#endif allocate(vertcalcdiss(nl-1), vertcalcif(nl-1)) vertcalcdiss = 0.d0 vertcalcif = 0.d0 - allocate(vertaggn(nl-1), vertaggd(nl-1), vertaggc(nl-1)) + allocate(vertaggn(nl-1), vertaggd(nl-1)) vertaggn = 0.d0 vertaggd = 0.d0 - vertaggc = 0.d0 - allocate(vertdocexn(nl-1), vertdocexd(nl-1), vertdocexc(nl-1)) + allocate(vertdocexn(nl-1), vertdocexd(nl-1)) vertdocexn = 0.d0 vertdocexd = 0.d0 - vertdocexc = 0.d0 - allocate(vertrespn(nl-1), vertrespd(nl-1), vertrespc(nl-1)) + allocate(vertrespn(nl-1), vertrespd(nl-1)) vertrespn = 0.d0 vertrespd = 0.d0 + +#if defined (__coccos) + allocate(vertaggc(nl-1), vertdocexc(nl-1), vertrespc(nl-1)) + vertaggc = 0.d0 + vertdocexc = 0.d0 vertrespc = 0.d0 +#endif !! * Allocate 2D diagnostics * allocate(vertNPPn(nl-1), vertGPPn(nl-1), vertNNAn(nl-1), vertChldegn(nl-1)) @@ -265,11 +309,13 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) vertNNAd = 0.d0 vertChldegd = 0.d0 +#if defined (__coccos) allocate(vertNPPc(nl-1), vertGPPc(nl-1), vertNNAc(nl-1), vertChldegc(nl-1)) vertNPPc = 0.d0 vertGPPc = 0.d0 vertNNAc = 0.d0 vertChldegc = 0.d0 +#endif end if if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> REcoM_Forcing'//achar(27)//'[0m' @@ -321,22 +367,30 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) !! * Update 3D diagnostics * respmeso (1:nzmax,n) = vertrespmeso (1:nzmax) +#if defined (__3Zoo2Det) respmacro (1:nzmax,n) = vertrespmacro (1:nzmax) respmicro (1:nzmax,n) = vertrespmicro (1:nzmax) +#endif calcdiss (1:nzmax,n) = vertcalcdiss (1:nzmax) calcif (1:nzmax,n) = vertcalcif (1:nzmax) + aggn (1:nzmax,n) = vertaggn (1:nzmax) - aggd (1:nzmax,n) = vertaggd (1:nzmax) - aggc (1:nzmax,n) = vertaggc (1:nzmax) docexn (1:nzmax,n) = vertdocexn (1:nzmax) - docexd (1:nzmax,n) = vertdocexd (1:nzmax) - docexc (1:nzmax,n) = vertdocexc (1:nzmax) respn (1:nzmax,n) = vertrespn (1:nzmax) - respd (1:nzmax,n) = vertrespd (1:nzmax) - respc (1:nzmax,n) = vertrespc (1:nzmax) NPPn3D (1:nzmax,n) = vertNPPn (1:nzmax) + + aggd (1:nzmax,n) = vertaggd (1:nzmax) + docexd (1:nzmax,n) = vertdocexd (1:nzmax) + respd (1:nzmax,n) = vertrespd (1:nzmax) NPPd3D (1:nzmax,n) = vertNPPd (1:nzmax) + +#if defined (__coccos) + aggc (1:nzmax,n) = vertaggc (1:nzmax) + docexc (1:nzmax,n) = vertdocexc (1:nzmax) + respc (1:nzmax,n) = vertrespc (1:nzmax) NPPc3D (1:nzmax,n) = vertNPPc (1:nzmax) +#endif + if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> ciso after REcoM_Forcing'//achar(27)//'[0m' !! * Deallocating 2D diagnostics * @@ -345,11 +399,17 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) deallocate(vertNPPc, vertGPPc, vertNNAc, vertChldegc) !! * Deallocating 3D Diagnostics * - deallocate(vertrespmeso, vertrespmacro, vertrespmicro ) - deallocate(vertcalcdiss, vertcalcif ) - deallocate(vertaggn, vertaggd, vertaggc ) - deallocate(vertdocexn, vertdocexd, vertdocexc ) - deallocate(vertrespn, vertrespd, vertrespc ) + deallocate(vertrespmeso) +#if defined (__3Zoo2Det) + deallocate(vertrespmacro, vertrespmicro) +#endif + deallocate(vertcalcdiss, vertcalcif) + deallocate(vertaggn, vertdocexn, vertrespn) + deallocate(vertaggd, vertdocexd, vertrespd) +#if defined (__coccos) +! deallocate(vertgrazmeso_c) + deallocate(vertaggc, vertdocexc, vertrespc) +#endif end if @@ -362,6 +422,12 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) GloCO2flux(n) = dflux(1) ! [mmol/m2/d] GloCO2flux_seaicemask(n) = co2flux_seaicemask(1) ! [mmol/m2/s] GloO2flux_seaicemask(n) = o2flux_seaicemask(1) ! [mmol/m2/s] + if (ciso) then + GloCO2flux_seaicemask_13(n) = co2flux_seaicemask_13(1) ! [mmol/m2/s] + if (ciso_14) then + GloCO2flux_seaicemask_14(n) = co2flux_seaicemask_14(1) ! [mmol/m2/s] + end if + end if GloO2flux(n) = oflux(1) ! [mmol/m2/d] PAR3D(1:nzmax,n) = PAR(1:nzmax) @@ -392,6 +458,16 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) call exchange_nod(GloCO2flux_seaicemask, partit) call exchange_nod(GloO2flux_seaicemask, partit) + if (ciso) then + call exchange_nod(GloPCO2surf_13, partit) + call exchange_nod(GloCO2flux_13, partit) + call exchange_nod(GloCO2flux_seaicemask_13, partit) + if (ciso_14) then + call exchange_nod(GloPCO2surf_14, partit) + call exchange_nod(GloCO2flux_14, partit) + call exchange_nod(GloCO2flux_seaicemask_14, partit) + end if + end if do n=1, benthos_num call exchange_nod(Benthos(:,n), partit) end do @@ -405,10 +481,12 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) call exchange_nod(NNAd, partit) call exchange_nod(Chldegn, partit) call exchange_nod(Chldegd, partit) +#if defined (__coccos) call exchange_nod(NPPc, partit) call exchange_nod(GPPc, partit) call exchange_nod(NNAc, partit) call exchange_nod(Chldegc, partit) +#endif endif do n=1, benthos_num diff --git a/src/int_recom/recom_sinking.F90 b/src/int_recom/recom_sinking.F90 index 0971e5bd0..ae98a5bc7 100644 --- a/src/int_recom/recom_sinking.F90 +++ b/src/int_recom/recom_sinking.F90 @@ -141,6 +141,18 @@ subroutine ver_sinking_recom_benthos(tr_num, tracers, partit, mesh) tracers%data(tr_num)%ID==1013 .or. & !idian tracers%data(tr_num)%ID==1025 ) then !idetz2n Benthos(n,1)= Benthos(n,1) + add_benthos_2d(n) ![mmol] + + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,1,tr_num) = SinkFlx_tr(n,1,tr_num) + add_benthos_2d(n) / area(1,n)/dt ![mmol/m2] + ! now SinkFlx hat the unit mmol/time step + ! but mmol/m2/time is needed for MEDUSA: thus /area + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,1,tr_num)= Benthos_tr(n,1,tr_num) + add_benthos_2d(n) ![mmol] + endif + endif !! * Particulate Organic Carbon * @@ -149,6 +161,16 @@ subroutine ver_sinking_recom_benthos(tr_num, tracers, partit, mesh) tracers%data(tr_num)%ID==1014 .or. & !idiac tracers%data(tr_num)%ID==1026 ) then !idetz2c Benthos(n,2)= Benthos(n,2) + add_benthos_2d(n) + + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,2,tr_num) = SinkFlx_tr(n,2,tr_num) + add_benthos_2d(n) / area(1,n)/dt + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,2,tr_num)= Benthos_tr(n,2,tr_num) + add_benthos_2d(n) + endif + endif !! *Particulate Organic Silicon * @@ -156,6 +178,16 @@ subroutine ver_sinking_recom_benthos(tr_num, tracers, partit, mesh) tracers%data(tr_num)%ID==1017 .or. & !idetsi tracers%data(tr_num)%ID==1027 ) then !idetz2si Benthos(n,3)= Benthos(n,3) + add_benthos_2d(n) + + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,3,tr_num) = SinkFlx_tr(n,3,tr_num) + add_benthos_2d(n) / area(1,n)/dt + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,3,tr_num)= Benthos_tr(n,3,tr_num) + add_benthos_2d(n) + endif + endif !! * Cal * @@ -163,9 +195,96 @@ subroutine ver_sinking_recom_benthos(tr_num, tracers, partit, mesh) tracers%data(tr_num)%ID==1021 .or. & !idetcal tracers%data(tr_num)%ID==1028 ) then !idetz2cal Benthos(n,4)= Benthos(n,4) + add_benthos_2d(n) + + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,4,tr_num) = SinkFlx_tr(n,4,tr_num) + add_benthos_2d(n) / area(1,n)/dt + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,4,tr_num)= Benthos_tr(n,4,tr_num) + add_benthos_2d(n) + endif + endif + + ! flux of 13C into the sediment + if (ciso) then + if( tracers%data(tr_num)%ID==1305 .or. & !iphyc_13 + tracers%data(tr_num)%ID==1308 .or. & !idetc_13 + tracers%data(tr_num)%ID==1314 ) then !idiac_14 + + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,5,tr_num) = SinkFlx_tr(n,5,tr_num) + add_benthos_2d(n) / area(1,n)/dt + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,5,tr_num)= Benthos_tr(n,5,tr_num) + add_benthos_2d(n) + endif + + endif + + if( tracers%data(tr_num)%ID==1320 .or. & !iphycal + tracers%data(tr_num)%ID==1321 ) then !idetcal + + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,6,tr_num) = SinkFlx_tr(n,6,tr_num) + add_benthos_2d(n) / area(1,n)/dt + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,6,tr_num)= Benthos_tr(n,6,tr_num) + add_benthos_2d(n) + endif + + endif + + endif + + ! flux of 14C into the sediment + if (ciso .and. ciso_organic_14) then + if( tracers%data(tr_num)%ID==1405 .or. & !iphyc_13 + tracers%data(tr_num)%ID==1408 .or. & !idetc_13 + tracers%data(tr_num)%ID==1414 ) then !idiac_14 + + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,7,tr_num) = SinkFlx_tr(n,7,tr_num) + add_benthos_2d(n) / area(1,n)/dt + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,7,tr_num)= Benthos_tr(n,7,tr_num) + add_benthos_2d(n) + endif + + endif + + if( tracers%data(tr_num)%ID==1420 .or. & !iphycal + tracers%data(tr_num)%ID==1421 ) then !idetcal + if (use_MEDUSA) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + SinkFlx_tr(n,8,tr_num) = SinkFlx_tr(n,8,tr_num) + add_benthos_2d(n) / area(1,n)/dt + endif + if ((.not.use_MEDUSA).or.(sedflx_num.eq.0)) then +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + Benthos_tr(n,8,tr_num)= Benthos_tr(n,8,tr_num) + add_benthos_2d(n) + endif + endif + + endif + end do + + if(use_MEDUSA) then + do n=1, bottflx_num +! SinkFlx(:,n) = Sinkflx(:,n)/dt +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + call exchange_nod(SinkFlx_tr(:,n,tr_num), partit) + end do + end if ! use_MEDUSA + do n=1, benthos_num +! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel + call exchange_nod(Benthos_tr(:,n,tr_num), partit) + call exchange_nod(Benthos(:,n), partit) end do @@ -223,6 +342,43 @@ subroutine diff_ver_recom_expl(tr_num, tracers, partit, mesh) bottom_flux = 0._WP id = tracers%data(tr_num)%ID +#if defined(__recom) +if (use_MEDUSA .and. (sedflx_num .ne. 0)) then + !CV update: the calculation later has been changed by Ozgur in such + !a way that now the variable bottom_flux is in (mol/time) units, + !rather than a flux in (mol/time/area). I therefore multiply the + !Medusa fluxes by the area to get the same unit. + + SELECT CASE (id) + CASE (1001) + bottom_flux = GloSed(:,1) * area(1,:) ! DIN + CASE (1002) + bottom_flux = GloSed(:,2) * area(1,:) ! DIC + CASE (1003) + bottom_flux = GloSed(:,3) * area(1,:) ! Alk + CASE (1018) + bottom_flux = GloSed(:,4) * area(1,:) ! Si + CASE (1019) + bottom_flux = GloSed(:,1) * Fe2N_benthos * area(1,:) + CASE (1022) + bottom_flux = GloSed(:,5) * area(1,:) ! Oxy + CASE (1302) + if (ciso) then + bottom_flux = GloSed(:,6) * area(1,:) ! DIC_13 and Calc: DIC_13 + end if + CASE (1402) + if (ciso) then + bottom_flux = GloSed(:,7) * area(1,:) ! DIC_14 and Calc: DIC_14 + end if + CASE DEFAULT + if (partit%mype==0) then + write(*,*) 'check specified in boundary conditions' + write(*,*) 'the model will stop!' + end if + call par_ex(partit%MPI_COMM_FESOM, partit%mype) + stop + END SELECT +else SELECT CASE (id) CASE (1001) bottom_flux = GlodecayBenthos(:,1) !*** DIN [mmolN/m^2/s] *** @@ -244,6 +400,8 @@ subroutine diff_ver_recom_expl(tr_num, tracers, partit, mesh) call par_ex(partit%MPI_COMM_FESOM, partit%mype) stop END SELECT +endif ! (use_MEDUSA .and. (sedflux_num .gt. 0)) +#endif do n=1, myDim_nod2D diff --git a/src/int_recom/recom_sms.F90 b/src/int_recom/recom_sms.F90 index 044d59c1e..7259fd893 100644 --- a/src/int_recom/recom_sms.F90 +++ b/src/int_recom/recom_sms.F90 @@ -258,6 +258,50 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & if (Grazing_detritus) recipDet2 = DetZ2C / DetZ2N #endif + if (ciso) then +!< additional variables are declared in module REcoM_ciso + DIC_13 = max(tiny,state(k,idic_13) + sms(k,idic_13 )) + PhyC_13 = max(tiny_C,state(k,iphyc_13) + sms(k,iphyc_13 )) + DetC_13 = max(tiny,state(k,idetc_13) + sms(k,idetc_13 )) + HetC_13 = max(tiny,state(k,ihetc_13) + sms(k,ihetc_13 )) + EOC_13 = max(tiny,state(k,idoc_13) + sms(k,idoc_13 )) + DiaC_13 = max(tiny_C,state(k,idiac_13) + sms(k,idiac_13 )) + PhyCalc_13 = max(tiny,state(k,iphycal_13) + sms(k,iphycal_13)) + DetCalc_13 = max(tiny,state(k,idetcal_13) + sms(k,idetcal_13)) + + calc_diss_13 = alpha_dcal_13 * calc_diss + + quota_13 = PhyN / PhyC_13 + recipQuota_13 = real(one) / quota_13 + + quota_dia_13 = DiaN / DiaC_13 + recipQuota_dia_13 = real(one) / quota_dia_13 + + recipQZoo_13 = HetC_13 / HetN + + if (ciso_14) then + DIC_14 = max(tiny,state(k,idic_14) + sms(k,idic_14 )) + if (ciso_organic_14) then + PhyC_14 = max(tiny_C,state(k,iphyc_14) + sms(k,iphyc_14 )) + DetC_14 = max(tiny,state(k,idetc_14) + sms(k,idetc_14 )) + HetC_14 = max(tiny,state(k,ihetc_14) + sms(k,ihetc_14 )) + EOC_14 = max(tiny,state(k,idoc_14) + sms(k,idoc_14 )) + DiaC_14 = max(tiny_C,state(k,idiac_14) + sms(k,idiac_14 )) + PhyCalc_14 = max(tiny,state(k,iphycal_14) + sms(k,iphycal_14)) + DetCalc_14 = max(tiny,state(k,idetcal_14) + sms(k,idetcal_14)) + + calc_diss_14 = alpha_dcal_14 * calc_diss + + quota_14 = PhyN / PhyC_14 + recipQuota_14 = real(one) / quota_14 + + quota_dia_14 = DiaN / DiaC_14 + recipQuota_dia_14 = real(one) / quota_dia_14 + recipQZoo_14 = HetC_14 / HetN + end if ! ciso_organic_14 + end if ! ciso_14 + end if ! ciso + !------------------------------------------------------------------------------- !> Temperature dependence of rates !------------------------------------------------------------------------------- @@ -939,6 +983,18 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & HetRespFlux = max(zero, HetRespFlux) !!!!!!!! CHECK Judith Valid for het_resp_noredfield case as well ???????? Then move it below endif + if (ciso) then +!MB set HetRespFlux_plus = .true. in namelist.recom +! HetRespFlux_13 = max(zero, recip_res_het * arrFunc * (hetC_13 * recip_hetN_plus - redfield) * HetC_13) +! Numerically safer parametrization avoiding instable results which may result from different cutoff values -- CHECK + HetRespFlux_13 = HetRespFlux * HetC_13 / HetC +!! HetRespFlux_13 = HetRespFlux * (HetC_13 / HetC) **2 + if (ciso_14 .and. ciso_organic_14) then +! HetRespFlux_14 = max(zero, recip_res_het * arrFunc * (hetC_14 * recip_hetN_plus - redfield) * HetC_14) + HetRespFlux_14 = HetRespFlux * HetC_14 / HetC +!! HetRespFlux_14 = HetRespFlux * (HetC_14 / HetC) **2 + end if + end if !------------------------------------------------------------------------------- !< Zooplanton mortality (Quadratic) @@ -1059,6 +1115,19 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & calc_loss_gra3 = grazingFlux_phy3 * aux ! 3Zoo #endif #endif + + if (ciso) then + calcification_13 = calc_prod_ratio * Cphot * PhyC_13 * alpha_calc_13 + calcification_13 = calcification * alpha_calc_13 + calc_loss_agg_13 = aggregationRate * PhyCalc_13 + calc_loss_gra_13 = grazingFlux_phy * recipQuota_13/(PhyC_13 + tiny) * PhyCalc_13 + if (ciso_14 .and. ciso_organic_14) then + calcification_14 = calc_prod_ratio * Cphot * PhyC_14 * alpha_calc_14 + calc_loss_agg_14 = aggregationRate * PhyCalc_14 + calc_loss_gra_14 = grazingFlux_phy * recipQuota_14/(PhyC_14 + tiny) * PhyCalc_14 + end if + end if + !------------------------------------------------------------------------------- ! Sources minus sinks (SMS) !------------------------------------------------------------------------------- @@ -1219,25 +1288,25 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & if (Grazing_detritus) then #if defined (__3Zoo2Det) sms(k,idetn) = ( & - + grazingFlux_phy3 & - - grazingFlux_phy3 * grazEff3 & - + grazingFlux_dia3 & - - grazingFlux_dia3 * grazEff3 & + + grazingFlux_phy3 & ! --> grazing on small phytoplankton by third zooplankton + - grazingFlux_phy3 * grazEff3 & ! --> fraction of grazingFlux_phy3 into microzooplankton pool + + grazingFlux_dia3 & ! --> grazing on diatoms by third zooplankton + - grazingFlux_dia3 * grazEff3 & ! --> fraction of grazingFlux_dia3 into microzooplankton pool #if defined (__coccos) - + grazingFlux_Cocco3 & - - grazingFlux_Cocco3 * grazEff3 & + + grazingFlux_Cocco3 & ! --> grazing on coccolithophores by third zooplankton + - grazingFlux_Cocco3 * grazEff3 & ! --> fraction of grazingFlux_Cocco3 into microzooplankton pool + aggregationRate * CoccoN & #endif - - grazingFlux_Det * grazEff & - - grazingFlux_Det2 * grazEff2 & ! --> okay, grazing of second zoo on first detritus + - grazingFlux_Det * grazEff & ! --> grazing of first zoo (meso) on first detritus class + - grazingFlux_Det2 * grazEff2 & ! --> grazing of second zoo (macro) on first detritus class + aggregationRate * PhyN & + aggregationRate * DiaN & - + miczooLossFlux & - - reminN * arrFunc * O2Func * DetN & ! O2remin + + miczooLossFlux & ! --> microzooplankton, mortality + - reminN * arrFunc * O2Func * DetN & ! --> O2remin ) * dt_b + sms(k,idetn) #else sms(k,idetn) = ( & - + grazingFlux_phy & + + grazingFlux_phy & ! Technically it is mesooooooooooooooooo - grazingFlux_phy * grazEff & + grazingFlux_dia & - grazingFlux_dia * grazEff & @@ -1301,7 +1370,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + aggregationRate * CoccoC & #endif - grazingFlux_Det * recipDet * grazEff & - - grazingFlux_Det2 * recipDet2 * grazEff2 & + - grazingFlux_Det2 * recipDet * grazEff2 & ! corrected recipDet2 -> recipDet + aggregationRate * PhyC & + aggregationRate * DiaC & + miczooLossFlux * recipQZoo3 & @@ -1319,7 +1388,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + aggregationRate * CoccoC & #endif - grazingFlux_Det * recipDet * grazEff & - - grazingFlux_Det2 * recipDet2 * grazEff & !!!!!! CHECK + ! - grazingFlux_Det2 * recipDet2 * grazEff & !!!!!! CHECK + aggregationRate * phyC & + aggregationRate * DiaC & + hetLossFlux * recipQZoo & @@ -2001,6 +2070,180 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif ) * redO2C * dt_b + sms(k,ioxy) ! + if (ciso) then +!------------------------------------------------------------------------------- +! DIC_13 + sms(k,idic_13) = ( & + - Cphot * PhyC_13 & + + phyRespRate * PhyC_13 & + - Cphot_Dia * DiaC_13 & + + phyRespRate_Dia * DiaC_13 & + + rho_C1 * arrFunc * EOC_13 & + + HetRespFlux_13 & + + calc_diss_13 * DetCalc_13 & + + calc_loss_gra_13 * calc_diss_guts & + - calcification_13 & + ) * dt_b + sms(k,idic_13) +!------------------------------------------------------------------------------- +! Phytoplankton C_13 + sms(k,iphyc_13) = ( & + + Cphot * PhyC_13 & + - lossC * limitFacN * PhyC_13 & + - phyRespRate * PhyC_13 & + - aggregationRate * PhyC_13 & + - grazingFlux_phy * recipQuota_13 & + ) * dt_b + sms(k,iphyc_13) +!------------------------------------------------------------------------------- +! Detritus C_13 + sms(k,idetc_13) = ( & + + grazingFlux_phy * recipQuota_13 & + - grazingFlux_phy * recipQuota_13 * grazEff & + + grazingFlux_Dia * recipQuota_dia_13 & + - grazingFlux_Dia * recipQuota_dia_13 * grazEff & + + aggregationRate * phyC_13 & + + aggregationRate * DiaC_13 & + + hetLossFlux * recipQZoo_13 & + - reminC * arrFunc * DetC_13 & + ) * dt_b + sms(k,idetc_13) +!------------------------------------------------------------------------------- +! Heterotrophic C_13 + sms(k,ihetc_13) = ( & + + grazingFlux_phy * recipQuota_13 * grazEff & + + grazingFlux_Dia * recipQuota_dia_13 * grazEff & + - hetLossFlux * recipQZoo_13 & + - lossC_z * HetC_13 & + - hetRespFlux_13 & + ) * dt_b + sms(k,ihetc_13) +!------------------------------------------------------------------------------- +! EOC_13 + sms(k,idoc_13) = ( & + + lossC * limitFacN * phyC_13 & + + lossC_d * limitFacN_dia * DiaC_13 & + + reminC * arrFunc * DetC_13 & + + lossC_z * HetC_13 & + - rho_c1 * arrFunc * EOC_13 & + + LocRiverDOC * r_iorg_13 & + ) * dt_b + sms(k,idoc_13) +!------------------------------------------------------------------------------- +! Diatom C_13 + sms(k,idiac_13) = ( & + + Cphot_dia * DiaC_13 & + - lossC_d * limitFacN_dia * DiaC_13 & + - phyRespRate_dia * DiaC_13 & + - aggregationRate * DiaC_13 & + - grazingFlux_dia * recipQuota_dia_13 & + ) * dt_b + sms(k,idiac_13) +!------------------------------------------------------------------------------- +! Small phytoplankton calcite_13 + sms(k,iphycal_13) = ( & + + calcification_13 & + - lossC * limitFacN * phyCalc_13 & + - phyRespRate * phyCalc_13 & + - calc_loss_agg_13 & + - calc_loss_gra_13 & + ) * dt_b + sms(k,iphycal_13) +!------------------------------------------------------------------------------- +! Detritus calcite_13 + sms(k,idetcal_13) = ( & + + lossC * limitFacN * phyCalc_13 & + + phyRespRate * phyCalc_13 & + + calc_loss_agg_13 & + + calc_loss_gra_13 & + - calc_loss_gra_13 * calc_diss_guts & + - calc_diss_13 * DetCalc_13 & + ) * dt_b + sms(k,idetcal_13) +!------------------------------------------------------------------------------- + if (ciso_14) then +!------------------------------------------------------------------------------- + if (ciso_organic_14) then +! DIC_14 + sms(k,idic_14) = ( & + - Cphot * PhyC_14 & + + phyRespRate * PhyC_14 & + - Cphot_Dia * DiaC_14 & + + phyRespRate_Dia * DiaC_14 & + + rho_C1 * arrFunc * EOC_14 & + + HetRespFlux_14 & + + calc_diss_14 * DetCalc_14 & + + calc_loss_gra_14 * calc_diss_guts & + - calcification_14 & + ) * dt_b + sms(k,idic_14) +!------------------------------------------------------------------------------- +! Phytoplankton C_14 + sms(k,iphyc_14) = ( & + + Cphot * PhyC_14 & + - lossC * limitFacN * PhyC_14 & + - phyRespRate * PhyC_14 & + - aggregationRate * PhyC_14 & + - grazingFlux_phy * recipQuota_14 & + ) * dt_b + sms(k,iphyc_14) +!------------------------------------------------------------------------------- +! Detritus C_14 + sms(k,idetc_14) = ( & + + grazingFlux_phy * recipQuota_14 & + - grazingFlux_phy * recipQuota_14 * grazEff & + + grazingFlux_Dia * recipQuota_dia_14 & + - grazingFlux_Dia * recipQuota_dia_14 * grazEff & + + aggregationRate * phyC_14 & + + aggregationRate * DiaC_14 & + + hetLossFlux * recipQZoo_14 & + - reminC * arrFunc * DetC_14 & + ) * dt_b + sms(k,idetc_14) +!------------------------------------------------------------------------------- +! Heterotrophic C_14 + sms(k,ihetc_14) = ( & + + grazingFlux_phy * recipQuota_14 * grazEff & + + grazingFlux_Dia * recipQuota_dia_14 * grazEff & + - hetLossFlux * recipQZoo_14 & + - lossC_z * HetC_14 & + - hetRespFlux_14 & + ) * dt_b + sms(k,ihetc_14) +!------------------------------------------------------------------------------- +! EOC_14 + sms(k,idoc_14) = ( & + + lossC * limitFacN * phyC_14 & + + lossC_d * limitFacN_dia * DiaC_14 & + + reminC * arrFunc * DetC_14 & + + lossC_z * HetC_14 & + - rho_c1 * arrFunc * EOC_14 & + + LocRiverDOC * r_iorg_14 & + ) * dt_b + sms(k,idoc_14) +!------------------------------------------------------------------------------- +! Diatom C_14 + sms(k,idiac_14) = ( & + + Cphot_dia * DiaC_14 & + - lossC_d * limitFacN_dia * DiaC_14 & + - phyRespRate_dia * DiaC_14 & + - aggregationRate * DiaC_14 & + - grazingFlux_dia * recipQuota_dia_14 & + ) * dt_b + sms(k,idiac_14) +!------------------------------------------------------------------------------- +! Small phytoplankton calcite_14 + sms(k,iphycal_14) = ( & + + calcification_14 & + - lossC * limitFacN * phyCalc_14 & + - phyRespRate * phyCalc_14 & + - calc_loss_agg_14 & + - calc_loss_gra_14 & + ) * dt_b + sms(k,iphycal_14) +!------------------------------------------------------------------------------- +! Detritus calcite_14 + sms(k,idetcal_14) = ( & + + lossC * limitFacN * phyCalc_14 & + + phyRespRate * phyCalc_14 & + + calc_loss_agg_14 & + + calc_loss_gra_14 & + - calc_loss_gra_14 * calc_diss_guts & + - calc_diss_14 * DetCalc_14 & + ) * dt_b + sms(k,idetcal_14) +!------------------------------------------------------------------------------- + else +! "Abiotic" DIC_14, identical to DIC except for radioactive decay (-> +! recom_forcing) + sms(k,idic_14) = sms(k,idic) + end if ! ciso_organic_14 + end if ! ciso_14 + end if ! ciso !------------------------------------------------------------------------------- ! Diagnostics: Averaged rates @@ -2153,6 +2396,13 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !------------------------------------------------------------------------------- ! Remineralization from the sediments into the bottom layer + + if (use_MEDUSA .and. (sedflx_num .ne. 0)) then + if (mype==0) then !OG + write(*,*) ' --> Sedimentary input of nutrients through MEDUSA' + endif + + else ! not use_MEDUSA or sedflx_num = 0 !*** DIN *** !< decayRateBenN: Remineralization rate for benthic N [day^-1] !< LocBenthos(1): Vertically integrated N concentration in benthos (1 layer) [mmolN/m^2] @@ -2175,6 +2425,29 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & decayBenthos(4) = calc_diss_ben * LocBenthos(4) ! NEW DISS changed calc_diss to calc_diss_ben to not make the dissolution omega dependent when using the switch OmegaC_diss LocBenthos(4) = LocBenthos(4) - decayBenthos(4) * dt_b + if (ciso) then +!*** DIC_13 *** We ignore isotopic fractionation during remineralization. + decayBenthos(5) = alpha_dcal_13 * decayRateBenC * LocBenthos(5) + LocBenthos(5) = LocBenthos(5) - decayBenthos(5) * dt_b +!*** Calc: DIC_13 *** + decayBenthos(6) = calc_diss_13 * LocBenthos(6) + LocBenthos(6) = LocBenthos(6) - decayBenthos(6) * dt_b ! / depth of benthos + if (ciso_14) then + if (ciso_organic_14) then +!*** DIC_14 *** We ignore isotopic fractionation during remineralization. + decayBenthos(7) = alpha_dcal_14 * decayRateBenC * LocBenthos(7) + LocBenthos(7) = LocBenthos(7) - decayBenthos(7) * dt_b +!*** Calc: DIC_14 *** + decayBenthos(8) = calc_diss_14 * LocBenthos(8) + LocBenthos(8) = LocBenthos(8) - decayBenthos(8) * dt_b ! / depth of benthos + else +! Do nothing here because sms(idic_14) is defined as sms(idic) further +! above + end if ! ciso_organic_14 + end if ! ciso_14 + end if ! ciso + endif ! use_MEDUSA + end do ! Main time loop ends diff --git a/src/io_meandata.F90 b/src/io_meandata.F90 index e5ec2db7e..44e702bd7 100644 --- a/src/io_meandata.F90 +++ b/src/io_meandata.F90 @@ -523,6 +523,32 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) if (use_REcoM) then call def_stream(nod2D, myDim_nod2D, 'benCalc','Benthos calcite','mmol', Benthos(:,4), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) end if +! ciso +CASE ('benC_13 ') + if (use_REcoM) then + if (ciso) then + call def_stream(nod2D, myDim_nod2D, 'benC_13','Benthos Carbon-13','mmol/m2', Benthos(:,5), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + end if + end if +CASE ('benC_14 ') + if (use_REcoM) then + if (ciso) then + call def_stream(nod2D, myDim_nod2D, 'benC_14','Benthos Carbon-14','mmol/m2', Benthos(:,6), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + end if + end if +CASE ('benCalc_13') + if (use_REcoM) then + if (ciso) then + call def_stream(nod2D, myDim_nod2D, 'benCalc_13','Benthos calcite-13','mmol/m2', Benthos(:,7), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + end if + end if +CASE ('benCalc_14') + if (use_REcoM) then + if (ciso) then + call def_stream(nod2D, myDim_nod2D, 'benCalc_14','Benthos calcite-14','mmol/m2', Benthos(:,8), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + end if + end if +!ciso CASE ('NPPn ') if (use_REcoM) then call def_stream(nod2D, myDim_nod2D, 'NPPn','Mean NPP nanophytoplankton','mmolC/m2/d', NPPn, io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) diff --git a/src/io_restart.F90 b/src/io_restart.F90 index 9077e27af..fb659e2cb 100644 --- a/src/io_restart.F90 +++ b/src/io_restart.F90 @@ -224,6 +224,24 @@ subroutine ini_bio_io(year, tracers, partit, mesh) call bio_files%def_node_var('BenSi', 'Benthos Silicate', 'mmol/m3', Benthos(:,3), mesh, partit); call bio_files%def_node_var('BenCalc', 'Benthos Calcite', 'mmol/m3', Benthos(:,4), mesh, partit); call bio_files%def_node_var('HPlus', 'Conc. of H-plus ions in the surface water', 'mol/kg', GloHplus, mesh, partit); + if (ciso) then + call bio_files%def_node_var('BenC_13', 'Benthos Carbon-13', 'mmol/m3', Benthos(:,5), mesh, partit); + call bio_files%def_node_var('BenCalc_13', 'Benthos Calcite-13', 'mmol/m3', Benthos(:,6), mesh, partit); + if (ciso_14 .and. ciso_organic_14) then + call bio_files%def_node_var('BenC_14', 'Benthos Carbon-14', 'mmol/m3', Benthos(:,7), mesh, partit); + call bio_files%def_node_var('BenCalc_14', 'Benthos Calcite-14', 'mmol/m3', Benthos(:,8), mesh, partit); + end if ! ciso_14 + end if ! ciso + if (use_atbox) then + call bio_files%def_node_var('xCO2', 'Atm. CO2 mixing ratio', 'mol / mol', x_co2atm(:), mesh, partit); + if (ciso) then + call bio_files%def_node_var('xCO2_13', 'Atm. 13CO2 mixing ratio', 'mol / mol', x_co2atm_13(:), mesh, partit); + if (ciso_14) then + call bio_files%def_node_var('xCO2_14', 'Atm. 14CO2 mixing ratio', 'mol / mol', x_co2atm_14(:), mesh, partit); + call bio_files%def_node_var('cosmic_14', 'Cosmic 14C production', 'mol / s', cosmic_14(:), mesh, partit); + end if + end if + end if ! use_atbox end subroutine ini_bio_io #endif From 08642372b2239fda8504a3c6f3d03df5ce02ef30 Mon Sep 17 00:00:00 2001 From: Ying Ye Date: Fri, 13 Dec 2024 14:22:51 +0100 Subject: [PATCH 04/66] input to bc_surface from medusa added and Sed_input deleted --- src/gen_surface_forcing.F90 | 19 -------- src/int_recom/recom_extra.F90 | 1 - src/int_recom/recom_sinking.F90 | 8 ++++ src/oce_ale_tracer.F90 | 79 +++++++++++++++++++++++++++++++-- 4 files changed, 83 insertions(+), 24 deletions(-) diff --git a/src/gen_surface_forcing.F90 b/src/gen_surface_forcing.F90 index 1cdf4c96c..75d393164 100644 --- a/src/gen_surface_forcing.F90 +++ b/src/gen_surface_forcing.F90 @@ -1554,13 +1554,7 @@ SUBROUTINE sbc_do(partit, mesh) icount = (/1,1/) ncdata = 0.d0 -! total_runoff = sum(runoff*area(1,:))*86400 -! Does 'area' only contain values on one node? sum of area not equal total -! ocean surface area! total_runoff = 8.76d5*86400 -! if (mype==0) write(*,*) mype, 'total runoff (m3/day):', total_runoff -! if (mype==0) write(*,*) mype, 'runoff:', maxval(runoff),minval(runoff) -! if (mype==0) write(*,*) mype, 'surface area',maxval(area(1,:)),minval(area(1,:)) status=nf_open(sedfilename, nf_nowrite, ncid) if(status.ne.nf_noerr) call handle_err(status) @@ -1632,19 +1626,6 @@ SUBROUTINE sbc_do(partit, mesh) lb_flux(:,n_lb) = -runoff*ncdata(n_lb)/total_runoff*lb_tscale end do -! if (mype==0) write(*,*) mype, 'sum of surface area (m2)', -! sum(area(1,:)) -! if (mype==0) write(*,*) mype, 'total ocean area (m2)', ocean_area -! if (mype==0) write(*,*) mype, 'DSi concentration in rivers',ncdata(4)/total_runoff -! if (mype==0) write(*,*) mype, 'DIC concentration in rivers',ncdata(2)/total_runoff -! if (mype==0) write(*,*) mype, 'Alk concentration in rivers',ncdata(3)/total_runoff -! if (mype==0) write(*,*) mype, 'DIN concentration in rivers',ncdata(1)/total_runoff -! if (mype==0) write(*,*) mype, 'DIN surface input:',minval(lb_flux(:,1)),maxval(lb_flux(:,1)) -! if (mype==0) write(*,*) mype, 'DIC surface input:',minval(lb_flux(:,2)),maxval(lb_flux(:,2)) -! if (mype==0) write(*,*) mype, 'Alk surface input:',minval(lb_flux(:,3)),maxval(lb_flux(:,3)) -! if (mype==0) write(*,*) mype, 'DSi surface input:',minval(lb_flux(:,4)),maxval(lb_flux(:,4)) -! if (mype==0) write(*,*) mype, 'DIC(calcite) surface input:',minval(lb_flux(:,5)),maxval(lb_flux(:,5)) - end if ! add_loopback else diff --git a/src/int_recom/recom_extra.F90 b/src/int_recom/recom_extra.F90 index 5495e0c8f..eb9011cfd 100644 --- a/src/int_recom/recom_extra.F90 +++ b/src/int_recom/recom_extra.F90 @@ -201,4 +201,3 @@ subroutine krill_resp(n, partit, mesh) end if endif end subroutine krill_resp - diff --git a/src/int_recom/recom_sinking.F90 b/src/int_recom/recom_sinking.F90 index ae98a5bc7..b772569ec 100644 --- a/src/int_recom/recom_sinking.F90 +++ b/src/int_recom/recom_sinking.F90 @@ -392,6 +392,14 @@ subroutine diff_ver_recom_expl(tr_num, tracers, partit, mesh) bottom_flux = GlodecayBenthos(:,1) * Fe2N_benthos !*** DFe *** CASE (1022) bottom_flux = -GlodecayBenthos(:,2) * redO2C !*** O2 *** + CASE (1302) + if (ciso) then + bottom_flux = GlodecayBenthos(:,5) + GlodecayBenthos(:,6) !*** DIC_13 and Calc: DIC_13 *** + end if + CASE (1402) + if (ciso) then + bottom_flux = GlodecayBenthos(:,7) + GlodecayBenthos(:,8) !*** DIC_14 and Calc: DIC_14 *** + end if CASE DEFAULT if (partit%mype==0) then write(*,*) 'check specified in boundary conditions' diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 51b8f5914..20f921e94 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -232,6 +232,11 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) !!! !$ACC UPDATE DEVICE(tracers%work%fct_ttf_min, tracers%work%fct_ttf_max, tracers%work%fct_plus, tracers%work%fct_minus) !$ACC UPDATE DEVICE (mesh%helem, mesh%hnode, mesh%hnode_new, mesh%zbar_3d_n, mesh%z_3d_n) do tr_num=1, tracers%num_tracers + +!YY: sinkflx needs to be reset at each time step + if(use_MEDUSA) then + SinkFlx = 0.0d0 + endif ! do tracer AB (Adams-Bashfort) interpolation only for advectiv part ! needed @@ -292,10 +297,20 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) if (flag_debug .and. mype==0) print *, achar(27)//'[37m'//' --> call diff_tracers_ale'//achar(27)//'[0m' call diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) -! Radioactive decay of 14C and 39Ar + !___________________________________________________________________________ + ! Radioactive decay of 14C and 39Ar if (tracers%data(tr_num)%ID == 14) tracers%data(tr_num)%values(:,:) = tracers%data(tr_num)%values(:,:) * exp(-decay14 * dt) if (tracers%data(tr_num)%ID == 39) tracers%data(tr_num)%values(:,:) = tracers%data(tr_num)%values(:,:) * exp(-decay39 * dt) +!YY: C14 seems to be calculated both in fesom and recom +!YY: decay differently calculated??? +#if defined(__recom) + ! radioactive decay of 14C + if (ciso_14 .and. any(c14_tracer_id == tracers%data(tr_num)%ID)) then + tracers%data(tr_num)%values(:,:) = tracers%data(tr_num)%values(:,:) * (1 - lambda_14 * dt) + end if ! ciso & ciso_14 +#endif + !___________________________________________________________________________ ! relax to salt and temp climatology if (flag_debug .and. mype==0) print *, achar(27)//'[37m'//' --> call relax_to_clim'//achar(27)//'[0m' @@ -1614,16 +1629,35 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) + relax_salt(n) - real_salt_flux(n)*is_nonlinfs) #if defined(__recom) CASE (1001) ! DIN + if (use_MEDUSA .and. add_loopback) then ! OG: add is_MEDUSA_loopback flag is_MEDUSA_loopback flag * lb_flux(n,1) + bc_surface= dt*(AtmNInput(n) + RiverDIN2D(n) * is_riverinput & + + ErosionTON2D(n) * is_erosioninput + lb_flux(n,1)) + else bc_surface= dt*(AtmNInput(n) + RiverDIN2D(n) * is_riverinput & + ErosionTON2D(n) * is_erosioninput) + end if + CASE (1002) ! DIC + if (use_MEDUSA .and. add_loopback) then + bc_surface= dt*(GloCO2flux_seaicemask(n) & + + RiverDIC2D(n) * is_riverinput & + + ErosionTOC2D(n) * is_erosioninput & + + lb_flux(n,2) + lb_flux(n,5)) + else bc_surface= dt*(GloCO2flux_seaicemask(n) & + RiverDIC2D(n) * is_riverinput & + ErosionTOC2D(n) * is_erosioninput) + end if + CASE (1003) ! Alk + if (use_MEDUSA .and. add_loopback) then + bc_surface= dt*(virtual_alk(n) + relax_alk(n) & + + RiverAlk2D(n) * is_riverinput & + + lb_flux(n,3) + lb_flux(n,5)*2) !CaCO3:Alk burial=1:2 + else bc_surface= dt*(virtual_alk(n) + relax_alk(n) & + RiverAlk2D(n) * is_riverinput) - !bc_surface=0.0_WP + end if CASE (1004:1010) bc_surface=0.0_WP CASE (1011) ! DON @@ -1633,16 +1667,53 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) CASE (1013:1017) bc_surface=0.0_WP CASE (1018) ! DSi - bc_surface=dt*(RiverDSi2D(n) * is_riverinput + ErosionTSi2D(n) * is_erosioninput) + if (use_MEDUSA .and. add_loopback) then + bc_surface=dt*(RiverDSi2D(n) * is_riverinput & + + ErosionTSi2D(n) * is_erosioninput & + + lb_flux(n,4)) + else + bc_surface=dt*(RiverDSi2D(n) * is_riverinput + ErosionTSi2D(n) * is_erosioninput) + end if + CASE (1019) ! Fe + if (useRivFe) then + bc_surface= dt*(AtmFeInput(n) + RiverFe(n)) + else bc_surface= dt*AtmFeInput(n) + end if CASE (1020:1021) ! Cal bc_surface=0.0_WP CASE (1022) ! OXY bc_surface= dt*GloO2flux_seaicemask(n) ! bc_surface=0.0_WP - CASE (1023:1035) + CASE (1023:1033) bc_surface=0.0_WP ! OG added bc for recom fields + CASE (1302) ! Before (1033) ! DIC_13 + if (ciso) then + if (use_MEDUSA .and. add_loopback) then + bc_surface= dt*(GloCO2flux_seaicemask_13(n) & + + lb_flux(n,6) + lb_flux(n,7)) + else + bc_surface= dt*(GloCO2flux_seaicemask_13(n)) + end if + else + bc_surface=0.0_WP + end if + CASE (1305:1321) + bc_surface=0.0_WP ! organic 13C + CASE (1402) ! Before (1034) ! DIC_14 + if (ciso .and. ciso_14) then + if (use_MEDUSA .and. add_loopback .and. ciso_organic_14) then + bc_surface= dt*(GloCO2flux_seaicemask_14(n) & + + lb_flux(n,8) + lb_flux(n,9)) + else + bc_surface= dt*GloCO2flux_seaicemask_14(n) + end if + else + bc_surface=0.0_WP + end if + CASE (1405:1421) + bc_surface=0.0_WP ! organic 14C #endif CASE (101) ! apply boundary conditions to tracer ID=101 bc_surface= dt*(prec_rain(n))! - real_salt_flux(n)*is_nonlinfs) From eafe8e972c4061ed011df40ddb8998f7c1199f7b Mon Sep 17 00:00:00 2001 From: ogurses Date: Wed, 12 Feb 2025 13:05:56 +0100 Subject: [PATCH 05/66] fix(recom) Add missing directives --- src/oce_ale_tracer.F90 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 20f921e94..039a706d0 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -304,7 +304,7 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) !YY: C14 seems to be calculated both in fesom and recom !YY: decay differently calculated??? -#if defined(__recom) +#if defined(__ciso) ! radioactive decay of 14C if (ciso_14 .and. any(c14_tracer_id == tracers%data(tr_num)%ID)) then tracers%data(tr_num)%values(:,:) = tracers%data(tr_num)%values(:,:) * (1 - lambda_14 * dt) @@ -1608,6 +1608,10 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) #if defined (__recom) use recoM_declarations use recom_glovar + use recom_config +#endif +#if defined (__ciso) + use recom_ciso #endif use mod_transit implicit none @@ -1689,6 +1693,8 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) CASE (1023:1033) bc_surface=0.0_WP ! OG added bc for recom fields CASE (1302) ! Before (1033) ! DIC_13 + +#if defined (__ciso) if (ciso) then if (use_MEDUSA .and. add_loopback) then bc_surface= dt*(GloCO2flux_seaicemask_13(n) & @@ -1699,9 +1705,11 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) else bc_surface=0.0_WP end if +#endif CASE (1305:1321) bc_surface=0.0_WP ! organic 13C CASE (1402) ! Before (1034) ! DIC_14 +#if defined (__ciso) if (ciso .and. ciso_14) then if (use_MEDUSA .and. add_loopback .and. ciso_organic_14) then bc_surface= dt*(GloCO2flux_seaicemask_14(n) & @@ -1712,6 +1720,7 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) else bc_surface=0.0_WP end if +#endif CASE (1405:1421) bc_surface=0.0_WP ! organic 14C #endif From 4408f0ed714230ce02fb7313fb1e006b19412f01 Mon Sep 17 00:00:00 2001 From: ogurses Date: Thu, 20 Feb 2025 15:30:01 +0100 Subject: [PATCH 06/66] two small fixes --- src/int_recom/recom_main.F90 | 13 +++++++++---- src/oce_ale_tracer.F90 | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/int_recom/recom_main.F90 b/src/int_recom/recom_main.F90 index 34e759e87..cf9a7d95a 100755 --- a/src/int_recom/recom_main.F90 +++ b/src/int_recom/recom_main.F90 @@ -246,11 +246,12 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) ttf_rhs_bak = 0.0 ! OG - tra_diag - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do tr_num=1, num_tracers + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag ttf_rhs_bak(1:nzmax,tr_num) = tracers%data(tr_num)%values(1:nzmax, n) - end do end if + end do !!---- Depth of the nodes in the water column zr(1:nzmax) = Z_3d_n(1:nzmax, n) @@ -338,13 +339,15 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) end do ! recom_sms - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + do tr_num=1, num_tracers + if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag tracers%work%tra_recom_sms(1:nzmax,n,tr_num) = tracers%data(tr_num)%values(1:nzmax, n) - ttf_rhs_bak(1:nzmax,tr_num) !if (mype==0) print *, tra_recom_sms(:,:,tr_num) - end do end if + end do + !!---- Local variables that have been changed during the time-step are stored so they can be saved Benthos(n,1:benthos_num) = LocBenthos(1:benthos_num) GlodecayBenthos(n, 1:benthos_num) = decayBenthos(1:benthos_num)/SecondsPerDay ! convert from [mmol/m2/d] to [mmol/m2/s] @@ -396,7 +399,9 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) !! * Deallocating 2D diagnostics * deallocate(vertNPPn, vertGPPn, vertNNAn, vertChldegn) deallocate(vertNPPd, vertGPPd, vertNNAd, vertChldegd) +#if defined (__coccos) deallocate(vertNPPc, vertGPPc, vertNNAc, vertChldegc) +#endif !! * Deallocating 3D Diagnostics * deallocate(vertrespmeso) diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 039a706d0..17570e46f 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -233,11 +233,12 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) !$ACC UPDATE DEVICE (mesh%helem, mesh%hnode, mesh%hnode_new, mesh%zbar_3d_n, mesh%z_3d_n) do tr_num=1, tracers%num_tracers +#if defined(__recom) !YY: sinkflx needs to be reset at each time step if(use_MEDUSA) then SinkFlx = 0.0d0 endif - +#endif ! do tracer AB (Adams-Bashfort) interpolation only for advectiv part ! needed if (flag_debug .and. mype==0) print *, achar(27)//'[37m'//' --> call init_tracers_AB'//achar(27)//'[0m' From db00bd13a871f46df1f41a6898951b86de4639f7 Mon Sep 17 00:00:00 2001 From: ogurses Date: Mon, 16 Jun 2025 10:47:50 +0200 Subject: [PATCH 07/66] feat(recom)!: FESOM2.6-REcoM setup with 4p3z2d Use __coccos in src/CMakeLists.txt to include 2 more phytoplankton classes FESOM2.6-REcoM setup with 4 phytoplankton, 3 zooplankton and 2 detritus functional types. BREAKING CHANGE: FESOM2.6-REcoM setup with 4p3z2d --- config/bin_2p1z1d/job_albedo | 43 +- config/bin_2p1z1d/namelist.config | 19 +- config/bin_2p1z1d/namelist.forcing | 36 +- config/bin_2p1z1d/namelist.icepack.cesm.ponds | 144 ++++++ config/bin_2p1z1d/namelist.io | 12 +- config/bin_2p1z1d/namelist.recom | 2 +- config/bin_2p3z2d/job_albedo | 43 +- config/bin_2p3z2d/namelist.config | 19 +- config/bin_2p3z2d/namelist.forcing | 36 +- config/bin_2p3z2d/namelist.icepack.cesm.ponds | 144 ++++++ config/bin_2p3z2d/namelist.io | 12 +- config/bin_2p3z2d/namelist.recom | 2 +- config/bin_3p3z2d/job_albedo | 43 +- config/bin_3p3z2d/namelist.config | 19 +- config/bin_3p3z2d/namelist.forcing | 36 +- config/bin_3p3z2d/namelist.icepack.cesm.ponds | 144 ++++++ config/bin_3p3z2d/namelist.io | 3 +- config/bin_3p3z2d/namelist.recom | 2 +- config/bin_4p3z2d/job_albedo | 63 +++ config/bin_4p3z2d/namelist.config | 76 ++++ config/bin_4p3z2d/namelist.dyn | 24 + config/bin_4p3z2d/namelist.forcing | 80 ++++ config/bin_4p3z2d/namelist.ice | 31 ++ config/bin_4p3z2d/namelist.icepack | 146 +++++++ config/bin_4p3z2d/namelist.icepack.cesm.ponds | 144 ++++++ config/bin_4p3z2d/namelist.io | 138 ++++++ config/bin_4p3z2d/namelist.oce | 26 ++ config/bin_4p3z2d/namelist.recom | 399 +++++++++++++++++ config/bin_4p3z2d/namelist.tra | 93 ++++ src/int_recom/recom/gasx.F90 | 10 +- src/int_recom/recom/vars.F90 | 2 +- src/int_recom/recom_extra.F90 | 3 +- src/int_recom/recom_forcing.F90 | 20 +- src/int_recom/recom_init.F90 | 107 ++++- src/int_recom/recom_main.F90 | 128 +++++- src/int_recom/recom_modules.F90 | 272 ++++++++---- src/int_recom/recom_sinking.F90 | 11 +- src/int_recom/recom_sms.F90 | 412 +++++++++++++++--- src/io_meandata.F90 | 172 +++++++- src/oce_ale_tracer.F90 | 4 +- src/oce_setup_step.F90 | 2 +- 41 files changed, 2813 insertions(+), 309 deletions(-) create mode 100644 config/bin_2p1z1d/namelist.icepack.cesm.ponds create mode 100644 config/bin_2p3z2d/namelist.icepack.cesm.ponds create mode 100644 config/bin_3p3z2d/namelist.icepack.cesm.ponds create mode 100755 config/bin_4p3z2d/job_albedo create mode 100644 config/bin_4p3z2d/namelist.config create mode 100644 config/bin_4p3z2d/namelist.dyn create mode 100644 config/bin_4p3z2d/namelist.forcing create mode 100644 config/bin_4p3z2d/namelist.ice create mode 100644 config/bin_4p3z2d/namelist.icepack create mode 100644 config/bin_4p3z2d/namelist.icepack.cesm.ponds create mode 100644 config/bin_4p3z2d/namelist.io create mode 100644 config/bin_4p3z2d/namelist.oce create mode 100644 config/bin_4p3z2d/namelist.recom create mode 100644 config/bin_4p3z2d/namelist.tra diff --git a/config/bin_2p1z1d/job_albedo b/config/bin_2p1z1d/job_albedo index bac3e2b3a..a9d157b2c 100755 --- a/config/bin_2p1z1d/job_albedo +++ b/config/bin_2p1z1d/job_albedo @@ -1,16 +1,15 @@ #!/bin/bash -#SBATCH --account=nwg_hauck.maresys # edit your account -#SBATCH --job-name=recom +#SBATCH --account=nwg_maresys.maresys +#SBATCH --job-name=2p1z1d #SBATCH --partition=mpp -#SBATCH --time=01:30:00 -####SBATCH --constraint="[rack1|rack3]" +#SBATCH -N 9 +#SBATCH --cpus-per-task=1 +#SBATCH --time=08:00:00 #SBATCH --qos=12h -#SBATCH --nodes=9 # Number of tasks (MPI) tasks to be launched -#SBATCH --tasks-per-node 96 #8 #4 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O -#SBATCH --cpus-per-task 1 +#SBATCH --tasks-per-node 96 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O -#SBATCH -o fesom2o.out -#SBATCH -e fesom2e.out +#SBATCH -o slurm-out.out +#SBATCH -e slurm-err.out # disable hyperthreading #SBATCH --hint=nomultithread @@ -24,34 +23,32 @@ ulimit -s unlimited JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x -cp -n ../config/namelist.config . -cp -n ../config/namelist.forcing . -cp -n ../config/namelist.oce . -cp -n ../config/namelist.dyn . -cp -n ../config/namelist.tra . -cp -n ../config/namelist.ice . -cp -n ../config/namelist.io . -cp -n ../config/namelist.icepack . +#cp -n ../config/namelist.config . +#cp -n ../config/namelist.forcing . +#cp -n ../config/namelist.oce . +#cp -n ../config/namelist.dyn . +#cp -n ../config/namelist.tra . +#cp -n ../config/namelist.ice . +#cp -n ../config/namelist.io . +#cp -n ../config/namelist.icepack . #___DETERMINE SLURM JOBID+OUTPUTFILE____________________________________________ jobid=$(echo $SLURM_JOB_ID | cut -d"." -f1) -fname="fesom2_${SLURM_JOB_NAME}_${jobid}.out" +fname="fesom2.0.out" #___PUT JOB IN QUEUE____________________________________________________________ date -####srun --mpi=pmi2 ./fesom.x >> ${fname} srun --mpi=pmi2 ./fesom.x > fesom2.0.out date #qstat -f $PBS_JOBID #export EXITSTATUS=$? #if [ ${EXITSTATUS} -eq 0 ] || [ ${EXITSTATUS} -eq 127 ] ; then -#sbatch job_ollie +#sbatch job_albedo #fi -#Resultpath='/albedo/scratch/user/ogurses/ocean_only/' -Resultpath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags/' -test -d $Resultpath/fesom.2019.oce.restart && exit +Resultpath='/albedo/work/user/...' +test -e $Resultpath/fesom.2019.oce.restart && exit IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) if (( IsInFile > 0 )); then diff --git a/config/bin_2p1z1d/namelist.config b/config/bin_2p1z1d/namelist.config index eb9a4375d..ffff081c0 100644 --- a/config/bin_2p1z1d/namelist.config +++ b/config/bin_2p1z1d/namelist.config @@ -6,8 +6,8 @@ runid='fesom' ×tep step_per_day=32 !96 !96 !72 !72 !45 !72 !96 -run_length=1 !62 !62 !62 !28 -run_length_unit='y' ! y, m, d, s +run_length= 1 !62 !62 !62 !28 +run_length_unit='y' ! y, m, d, s / &clockinit ! the model starts at @@ -18,8 +18,8 @@ yearnew=1958 &paths MeshPath='/albedo/work/projects/p_recompdaf/frbunsen/FESOM2/meshes/core2/' -ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/' -ResultPath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags/' +ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/' +ResultPath='/albedo/work/user/...' / &restart_log @@ -29,7 +29,7 @@ raw_restart_length=1 ! --> do core dump restart raw_restart_length_unit='off' ! e.g. y, d, h, s, off bin_restart_length=1 ! --> do derived type binary restart bin_restart_length_unit='off' ! e.g. y, d, h, s, off -logfile_outfreq=960 !in logfile info. output frequency, # steps +logfile_outfreq=960 !in logfile info. output frequency, # steps / &ale_def @@ -59,9 +59,18 @@ use_cavity_partial_cell=.false. use_floatice = .false. use_sw_pene=.true. flag_debug=.false. +use_transit=.false. / &machine n_levels=2 n_part= 12, 36 ! 432 number of partitions on each hierarchy level / + +&icebergs +use_icesheet_coupling=.false. +ib_num=1 +use_icebergs=.false. +steps_per_ib_step=8 +ib_async_mode=0 +/ diff --git a/config/bin_2p1z1d/namelist.forcing b/config/bin_2p1z1d/namelist.forcing index a17799393..d890c69ec 100644 --- a/config/bin_2p1z1d/namelist.forcing +++ b/config/bin_2p1z1d/namelist.forcing @@ -23,11 +23,23 @@ ncar_bulk_z_shum=10.0 ! height at which humi forcing is located (CORE, JRA-do: 1 use_landice_water=.false. landice_start_mon=5 landice_end_mon=10 +fwf_path='./mesh/' + +/ + +&age_tracer +use_age_tracer=.false. +use_age_mask=.false. +age_tracer_path='./mesh/' +age_start_year=2000 + / &nam_sbc nm_xwind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 nm_ywind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 + nm_xstre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 + nm_ystre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 nm_humi_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/huss.clim61' ! name of file with humidity nm_qsr_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rsds.clim61' ! name of file with solar heat nm_qlw_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rlds.clim61' ! name of file with Long wave @@ -37,24 +49,32 @@ landice_end_mon=10 nm_mslp_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/psl.clim61' ! air_pressure_at_sea_level nm_xwind_var = 'uas' ! name of variable in file with wind nm_ywind_var = 'vas' ! name of variable in file with wind - nm_humi_var = 'huss' ! name of variable in file with humidity - nm_qsr_var = 'rsds' ! name of variable in file with solar heat - nm_qlw_var = 'rlds' ! name of variable in file with Long wave + nm_xstre_var = 'uas' ! name of variable in file with wind + nm_ystre_var = 'vas' ! name of variable in file with wind + nm_humi_var = 'huss' ! name of variable in file with humidity + nm_qsr_var = 'rsds' ! name of variable in file with solar heat + nm_qlw_var = 'rlds' ! name of variable in file with Long wave nm_tair_var = 'tas' ! name of variable in file with 2m air temperature - nm_prec_var = 'prra' ! name of variable in file with total precipitation - nm_snow_var = 'prsn' ! name of variable in file with total precipitation - nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level + nm_prec_var = 'prra' ! name of variable in file with total precipitation + nm_snow_var = 'prsn' ! name of variable in file with total precipitation + nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level nm_nc_iyear = 1900 nm_nc_imm = 1 ! initial month of time axis in netCDF nm_nc_idd = 1 ! initial day of time axis in netCDF nm_nc_freq = 1 ! data points per day (i.e. 86400 if the time axis is in seconds) nm_nc_tmid = 0 ! 1 if the time stamps are given at the mid points of the netcdf file, 0 otherwise (i.e. 1 in CORE1, CORE2; 0 in JRA55) y_perpetual=.true. - l_xwind=.true. l_ywind=.true. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true. + l_xwind=.true. l_ywind=.true. l_xstre=.false. l_ystre=.false. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true. nm_runoff_file ='/albedo/pool/FESOM/forcing/CORE2/runoff.nc' runoff_data_source ='CORE2' !Dai09, CORE2 !runoff_data_source ='Dai09' !Dai09, CORE2, JRA55 !runoff_climatology =.true. - nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc' sss_data_source ='CORE2' + nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc' + chl_data_source ='None' !'Sweeney' monthly chlorophyll climatology or 'NONE' for constant chl_const (below). Make use_sw_pene=.TRUE. in namelist.config! + nm_chl_data_file ='/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/Sweeney/Sweeney_2005.nc' + chl_const = 0.1 + use_runoff_mapper = .FALSE. + runoff_basins_file = 'runoff_maps_regular.nc' + runoff_radius = 500000. / diff --git a/config/bin_2p1z1d/namelist.icepack.cesm.ponds b/config/bin_2p1z1d/namelist.icepack.cesm.ponds new file mode 100644 index 000000000..51aa33191 --- /dev/null +++ b/config/bin_2p1z1d/namelist.icepack.cesm.ponds @@ -0,0 +1,144 @@ +&env_nml ! In the original release these variables are defined in the icepack.settings + nicecat = 5 ! number of ice thickness categories + nfsdcat = 1 ! number of floe size categories + nicelyr = 4 ! number of vertical layers in the ice + nsnwlyr = 4 ! number of vertical layers in the snow + ntraero = 0 ! number of aerosol tracers (up to max_aero in ice_domain_size.F90) + trzaero = 0 ! number of z aerosol tracers (up to max_aero = 6) + tralg = 0 ! number of algal tracers (up to max_algae = 3) + trdoc = 0 ! number of dissolve organic carbon (up to max_doc = 3) + trdic = 0 ! number of dissolve inorganic carbon (up to max_dic = 1) + trdon = 0 ! number of dissolve organic nitrogen (up to max_don = 1) + trfed = 0 ! number of dissolved iron tracers (up to max_fe = 2) + trfep = 0 ! number of particulate iron tracers (up to max_fe = 2) + nbgclyr = 0 ! number of zbgc layers + trbgcz = 0 ! set to 1 for zbgc tracers (needs TRBGCS = 0 and TRBRI = 1) + trzs = 0 ! set to 1 for zsalinity tracer (needs TRBRI = 1) + trbri = 0 ! set to 1 for brine height tracer + trage = 0 ! set to 1 for ice age tracer + trfy = 0 ! set to 1 for first-year ice area tracer + trlvl = 0 ! set to 1 for level and deformed ice tracers + trpnd = 1 ! set to 1 for melt pond tracers + trbgcs = 0 ! set to 1 for skeletal layer tracers (needs TRBGCZ = 0) + ndtd = 1 ! dynamic time steps per thermodynamic time step +/ + +&grid_nml + kcatbound = 1 +/ + +&tracer_nml + tr_iage = .false. + tr_FY = .false. + tr_lvl = .false. + tr_pond_cesm = .true. + tr_pond_topo = .false. + tr_pond_lvl = .false. + tr_aero = .false. + tr_fsd = .false. +/ + +&thermo_nml + kitd = 1 + ktherm = 1 + conduct = 'bubbly' + a_rapid_mode = 0.5e-3 + Rac_rapid_mode = 10.0 + aspect_rapid_mode = 1.0 + dSdt_slow_mode = -5.0e-8 + phi_c_slow_mode = 0.05 + phi_i_mushy = 0.85 +/ + +&shortwave_nml + shortwave = 'dEdd' + albedo_type = 'ccsm3' + albicev = 0.78 + albicei = 0.36 + albsnowv = 0.98 + albsnowi = 0.70 + ahmax = 0.3 + R_ice = 0. + R_pnd = 0. + R_snw = 1.5 + dT_mlt = 1.5 + rsnw_mlt = 1500. + kalg = 0.6 +/ + +&ponds_nml + hp1 = 0.01 + hs0 = 0. + hs1 = 0.03 + dpscale = 1.e-3 + frzpnd = 'hlid' + rfracmin = 0.15 + rfracmax = 1. + pndaspect = 0.8 +/ + +&forcing_nml + formdrag = .false. + atmbndy = 'default' + calc_strair = .true. + calc_Tsfc = .true. + highfreq = .false. + natmiter = 5 + ustar_min = 0.0005 + emissivity = 0.95 + fbot_xfer_type = 'constant' + update_ocn_f = .false. + l_mpond_fresh = .false. + tfrz_option = 'linear_salt' + oceanmixed_ice = .true. + wave_spec_type = 'none' +/ + +&dynamics_nml + kstrength = 1 + krdg_partic = 1 + krdg_redist = 1 + mu_rdg = 3 + Cf = 17. + P_star = 27000. + C_star = 20. +/ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!! Icepack output namelist !!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +&nml_list_icepack +io_list_icepack = 'aicen ',1, 'm', 4, ! Sea ice concentration + 'vicen ',1, 'm', 4, ! Volume per unit area of ice + 'vsnon ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfcn ',1, 'm', 4, ! Sea ice surf. temperature + !'iagen ',1, 'm', 4, ! Sea ice age + !'FYn ',1, 'm', 4, ! First year ice + !'lvln ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesmn',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topon',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvln ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brinen ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qicen ',1, 'm', 4, ! Sea ice enthalpy + !'sicen ',1, 'm', 4, ! Sea ice salinity + !'qsnon ',1, 'm', 4, ! Snow enthalpy + ! Average over thicknes classes + !'aice ',1, 'm', 4, ! Sea ice concentration + !'vice ',1, 'm', 4, ! Volume per unit area of ice + !'vsno ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfc ',1, 'm', 4, ! Sea ice surf. temperature + !'iage ',1, 'm', 4, ! Sea ice age + !'FY ',1, 'm', 4, ! First year ice + !'lvl ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesm ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topo ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvl ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brine ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qice ',1, 'm', 4, ! Sea ice enthalpy + !'sice ',1, 'm', 4, ! Sea ice salinity + !'qsno ',1, 'm', 4, ! Snow enthalpy + ! Other variables + !'uvel ',1, 'm', 4, ! x-component of sea ice velocity + !'vvel ',1, 'm', 4, ! y-component of sea ice velocity +/ diff --git a/config/bin_2p1z1d/namelist.io b/config/bin_2p1z1d/namelist.io index 7a6fe3cff..990c90c2f 100644 --- a/config/bin_2p1z1d/namelist.io +++ b/config/bin_2p1z1d/namelist.io @@ -12,7 +12,7 @@ ldiag_extflds =.false. / &nml_general -io_listsize =100 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list +io_listsize =150 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list vec_autorotate =.false. / @@ -40,11 +40,11 @@ io_list = 'sst ',1, 'm', 4, 'otracers ',1, 'm', 4, 'N2 ',1, 'y', 4, 'Kv ',1, 'y', 4, - 'u ',1, 'y', 4, - 'v ',1, 'y', 4, - 'unod ',1, 'y', 4, - 'vnod ',1, 'y', 4, - 'w ',1, 'y', 4, + 'u ',1, 'm', 4, + 'v ',1, 'm', 4, + 'unod ',1, 'm', 4, + 'vnod ',1, 'm', 4, + 'w ',1, 'm', 4, 'Av ',1, 'y', 4, 'bolus_u ',1, 'y', 4, 'bolus_v ',1, 'y', 4, diff --git a/config/bin_2p1z1d/namelist.recom b/config/bin_2p1z1d/namelist.recom index dd53c8538..351356467 100644 --- a/config/bin_2p1z1d/namelist.recom +++ b/config/bin_2p1z1d/namelist.recom @@ -49,7 +49,7 @@ useErosion = .false. NitrogenSS = .false. ! When set to true, external sources and sinks of nitrogen are activated (Riverine, aeolian and denitrification) useAeolianN = .false. ! When set to true, aeolian nitrogen deposition is activated firstyearoffesomcycle = 1958 ! The first year of the actual physical forcing (e.g. JRA-55) used -lastyearoffesomcycle = 2022 ! Last year of the actual physical forcing used +lastyearoffesomcycle = 2024 ! Last year of the actual physical forcing used numofCO2cycles = 1 ! Number of cycles of the forcing planned currentCO2cycle = 1 ! Which CO2 cycle we are currently running DIC_PI = .true. diff --git a/config/bin_2p3z2d/job_albedo b/config/bin_2p3z2d/job_albedo index 5f3c516e7..341bdb6da 100755 --- a/config/bin_2p3z2d/job_albedo +++ b/config/bin_2p3z2d/job_albedo @@ -1,16 +1,15 @@ #!/bin/bash -#SBATCH --account=nwg_hauck.maresys # edit your account -#SBATCH --job-name=recom +#SBATCH --account=nwg_maresys.maresys +#SBATCH --job-name=2p3z2d #SBATCH --partition=mpp -#SBATCH --time=01:30:00 -####SBATCH --constraint="[rack1|rack3]" +#SBATCH -N 9 +#SBATCH --cpus-per-task=1 +#SBATCH --time=08:00:00 #SBATCH --qos=12h -#SBATCH --nodes=9 # Number of tasks (MPI) tasks to be launched -#SBATCH --tasks-per-node 96 #8 #4 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O -#SBATCH --cpus-per-task 1 +#SBATCH --tasks-per-node 96 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O -#SBATCH -o fesom2o.out -#SBATCH -e fesom2e.out +#SBATCH -o slurm-out.out +#SBATCH -e slurm-err.out # disable hyperthreading #SBATCH --hint=nomultithread @@ -24,34 +23,32 @@ ulimit -s unlimited JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x -cp -n ../config/namelist.config . -cp -n ../config/namelist.forcing . -cp -n ../config/namelist.oce . -cp -n ../config/namelist.dyn . -cp -n ../config/namelist.tra . -cp -n ../config/namelist.ice . -cp -n ../config/namelist.io . -cp -n ../config/namelist.icepack . +#cp -n ../config/namelist.config . +#cp -n ../config/namelist.forcing . +#cp -n ../config/namelist.oce . +#cp -n ../config/namelist.dyn . +#cp -n ../config/namelist.tra . +#cp -n ../config/namelist.ice . +#cp -n ../config/namelist.io . +#cp -n ../config/namelist.icepack . #___DETERMINE SLURM JOBID+OUTPUTFILE____________________________________________ jobid=$(echo $SLURM_JOB_ID | cut -d"." -f1) -fname="fesom2_${SLURM_JOB_NAME}_${jobid}.out" +fname="fesom2.0.out" #___PUT JOB IN QUEUE____________________________________________________________ date -####srun --mpi=pmi2 ./fesom.x >> ${fname} srun --mpi=pmi2 ./fesom.x > fesom2.0.out date #qstat -f $PBS_JOBID #export EXITSTATUS=$? #if [ ${EXITSTATUS} -eq 0 ] || [ ${EXITSTATUS} -eq 127 ] ; then -#sbatch job_ollie +#sbatch job_albedo #fi -#Resultpath='/albedo/scratch/user/ogurses/ocean_only/' -Resultpath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags_3Zoo2Det_v3/' -test -d $Resultpath/fesom.2019.oce.restart && exit +Resultpath='/albedo/work/user/...' +test -e $Resultpath/fesom.2019.oce.restart && exit IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) if (( IsInFile > 0 )); then diff --git a/config/bin_2p3z2d/namelist.config b/config/bin_2p3z2d/namelist.config index 25c5e4a31..ffff081c0 100644 --- a/config/bin_2p3z2d/namelist.config +++ b/config/bin_2p3z2d/namelist.config @@ -6,8 +6,8 @@ runid='fesom' ×tep step_per_day=32 !96 !96 !72 !72 !45 !72 !96 -run_length=1 !62 !62 !62 !28 -run_length_unit='y' ! y, m, d, s +run_length= 1 !62 !62 !62 !28 +run_length_unit='y' ! y, m, d, s / &clockinit ! the model starts at @@ -18,8 +18,8 @@ yearnew=1958 &paths MeshPath='/albedo/work/projects/p_recompdaf/frbunsen/FESOM2/meshes/core2/' -ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/' -ResultPath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags_3Zoo2Det_v3/' +ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/' +ResultPath='/albedo/work/user/...' / &restart_log @@ -29,7 +29,7 @@ raw_restart_length=1 ! --> do core dump restart raw_restart_length_unit='off' ! e.g. y, d, h, s, off bin_restart_length=1 ! --> do derived type binary restart bin_restart_length_unit='off' ! e.g. y, d, h, s, off -logfile_outfreq=960 !in logfile info. output frequency, # steps +logfile_outfreq=960 !in logfile info. output frequency, # steps / &ale_def @@ -59,9 +59,18 @@ use_cavity_partial_cell=.false. use_floatice = .false. use_sw_pene=.true. flag_debug=.false. +use_transit=.false. / &machine n_levels=2 n_part= 12, 36 ! 432 number of partitions on each hierarchy level / + +&icebergs +use_icesheet_coupling=.false. +ib_num=1 +use_icebergs=.false. +steps_per_ib_step=8 +ib_async_mode=0 +/ diff --git a/config/bin_2p3z2d/namelist.forcing b/config/bin_2p3z2d/namelist.forcing index a17799393..d890c69ec 100644 --- a/config/bin_2p3z2d/namelist.forcing +++ b/config/bin_2p3z2d/namelist.forcing @@ -23,11 +23,23 @@ ncar_bulk_z_shum=10.0 ! height at which humi forcing is located (CORE, JRA-do: 1 use_landice_water=.false. landice_start_mon=5 landice_end_mon=10 +fwf_path='./mesh/' + +/ + +&age_tracer +use_age_tracer=.false. +use_age_mask=.false. +age_tracer_path='./mesh/' +age_start_year=2000 + / &nam_sbc nm_xwind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 nm_ywind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 + nm_xstre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 + nm_ystre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 nm_humi_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/huss.clim61' ! name of file with humidity nm_qsr_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rsds.clim61' ! name of file with solar heat nm_qlw_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rlds.clim61' ! name of file with Long wave @@ -37,24 +49,32 @@ landice_end_mon=10 nm_mslp_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/psl.clim61' ! air_pressure_at_sea_level nm_xwind_var = 'uas' ! name of variable in file with wind nm_ywind_var = 'vas' ! name of variable in file with wind - nm_humi_var = 'huss' ! name of variable in file with humidity - nm_qsr_var = 'rsds' ! name of variable in file with solar heat - nm_qlw_var = 'rlds' ! name of variable in file with Long wave + nm_xstre_var = 'uas' ! name of variable in file with wind + nm_ystre_var = 'vas' ! name of variable in file with wind + nm_humi_var = 'huss' ! name of variable in file with humidity + nm_qsr_var = 'rsds' ! name of variable in file with solar heat + nm_qlw_var = 'rlds' ! name of variable in file with Long wave nm_tair_var = 'tas' ! name of variable in file with 2m air temperature - nm_prec_var = 'prra' ! name of variable in file with total precipitation - nm_snow_var = 'prsn' ! name of variable in file with total precipitation - nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level + nm_prec_var = 'prra' ! name of variable in file with total precipitation + nm_snow_var = 'prsn' ! name of variable in file with total precipitation + nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level nm_nc_iyear = 1900 nm_nc_imm = 1 ! initial month of time axis in netCDF nm_nc_idd = 1 ! initial day of time axis in netCDF nm_nc_freq = 1 ! data points per day (i.e. 86400 if the time axis is in seconds) nm_nc_tmid = 0 ! 1 if the time stamps are given at the mid points of the netcdf file, 0 otherwise (i.e. 1 in CORE1, CORE2; 0 in JRA55) y_perpetual=.true. - l_xwind=.true. l_ywind=.true. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true. + l_xwind=.true. l_ywind=.true. l_xstre=.false. l_ystre=.false. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true. nm_runoff_file ='/albedo/pool/FESOM/forcing/CORE2/runoff.nc' runoff_data_source ='CORE2' !Dai09, CORE2 !runoff_data_source ='Dai09' !Dai09, CORE2, JRA55 !runoff_climatology =.true. - nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc' sss_data_source ='CORE2' + nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc' + chl_data_source ='None' !'Sweeney' monthly chlorophyll climatology or 'NONE' for constant chl_const (below). Make use_sw_pene=.TRUE. in namelist.config! + nm_chl_data_file ='/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/Sweeney/Sweeney_2005.nc' + chl_const = 0.1 + use_runoff_mapper = .FALSE. + runoff_basins_file = 'runoff_maps_regular.nc' + runoff_radius = 500000. / diff --git a/config/bin_2p3z2d/namelist.icepack.cesm.ponds b/config/bin_2p3z2d/namelist.icepack.cesm.ponds new file mode 100644 index 000000000..51aa33191 --- /dev/null +++ b/config/bin_2p3z2d/namelist.icepack.cesm.ponds @@ -0,0 +1,144 @@ +&env_nml ! In the original release these variables are defined in the icepack.settings + nicecat = 5 ! number of ice thickness categories + nfsdcat = 1 ! number of floe size categories + nicelyr = 4 ! number of vertical layers in the ice + nsnwlyr = 4 ! number of vertical layers in the snow + ntraero = 0 ! number of aerosol tracers (up to max_aero in ice_domain_size.F90) + trzaero = 0 ! number of z aerosol tracers (up to max_aero = 6) + tralg = 0 ! number of algal tracers (up to max_algae = 3) + trdoc = 0 ! number of dissolve organic carbon (up to max_doc = 3) + trdic = 0 ! number of dissolve inorganic carbon (up to max_dic = 1) + trdon = 0 ! number of dissolve organic nitrogen (up to max_don = 1) + trfed = 0 ! number of dissolved iron tracers (up to max_fe = 2) + trfep = 0 ! number of particulate iron tracers (up to max_fe = 2) + nbgclyr = 0 ! number of zbgc layers + trbgcz = 0 ! set to 1 for zbgc tracers (needs TRBGCS = 0 and TRBRI = 1) + trzs = 0 ! set to 1 for zsalinity tracer (needs TRBRI = 1) + trbri = 0 ! set to 1 for brine height tracer + trage = 0 ! set to 1 for ice age tracer + trfy = 0 ! set to 1 for first-year ice area tracer + trlvl = 0 ! set to 1 for level and deformed ice tracers + trpnd = 1 ! set to 1 for melt pond tracers + trbgcs = 0 ! set to 1 for skeletal layer tracers (needs TRBGCZ = 0) + ndtd = 1 ! dynamic time steps per thermodynamic time step +/ + +&grid_nml + kcatbound = 1 +/ + +&tracer_nml + tr_iage = .false. + tr_FY = .false. + tr_lvl = .false. + tr_pond_cesm = .true. + tr_pond_topo = .false. + tr_pond_lvl = .false. + tr_aero = .false. + tr_fsd = .false. +/ + +&thermo_nml + kitd = 1 + ktherm = 1 + conduct = 'bubbly' + a_rapid_mode = 0.5e-3 + Rac_rapid_mode = 10.0 + aspect_rapid_mode = 1.0 + dSdt_slow_mode = -5.0e-8 + phi_c_slow_mode = 0.05 + phi_i_mushy = 0.85 +/ + +&shortwave_nml + shortwave = 'dEdd' + albedo_type = 'ccsm3' + albicev = 0.78 + albicei = 0.36 + albsnowv = 0.98 + albsnowi = 0.70 + ahmax = 0.3 + R_ice = 0. + R_pnd = 0. + R_snw = 1.5 + dT_mlt = 1.5 + rsnw_mlt = 1500. + kalg = 0.6 +/ + +&ponds_nml + hp1 = 0.01 + hs0 = 0. + hs1 = 0.03 + dpscale = 1.e-3 + frzpnd = 'hlid' + rfracmin = 0.15 + rfracmax = 1. + pndaspect = 0.8 +/ + +&forcing_nml + formdrag = .false. + atmbndy = 'default' + calc_strair = .true. + calc_Tsfc = .true. + highfreq = .false. + natmiter = 5 + ustar_min = 0.0005 + emissivity = 0.95 + fbot_xfer_type = 'constant' + update_ocn_f = .false. + l_mpond_fresh = .false. + tfrz_option = 'linear_salt' + oceanmixed_ice = .true. + wave_spec_type = 'none' +/ + +&dynamics_nml + kstrength = 1 + krdg_partic = 1 + krdg_redist = 1 + mu_rdg = 3 + Cf = 17. + P_star = 27000. + C_star = 20. +/ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!! Icepack output namelist !!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +&nml_list_icepack +io_list_icepack = 'aicen ',1, 'm', 4, ! Sea ice concentration + 'vicen ',1, 'm', 4, ! Volume per unit area of ice + 'vsnon ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfcn ',1, 'm', 4, ! Sea ice surf. temperature + !'iagen ',1, 'm', 4, ! Sea ice age + !'FYn ',1, 'm', 4, ! First year ice + !'lvln ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesmn',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topon',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvln ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brinen ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qicen ',1, 'm', 4, ! Sea ice enthalpy + !'sicen ',1, 'm', 4, ! Sea ice salinity + !'qsnon ',1, 'm', 4, ! Snow enthalpy + ! Average over thicknes classes + !'aice ',1, 'm', 4, ! Sea ice concentration + !'vice ',1, 'm', 4, ! Volume per unit area of ice + !'vsno ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfc ',1, 'm', 4, ! Sea ice surf. temperature + !'iage ',1, 'm', 4, ! Sea ice age + !'FY ',1, 'm', 4, ! First year ice + !'lvl ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesm ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topo ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvl ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brine ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qice ',1, 'm', 4, ! Sea ice enthalpy + !'sice ',1, 'm', 4, ! Sea ice salinity + !'qsno ',1, 'm', 4, ! Snow enthalpy + ! Other variables + !'uvel ',1, 'm', 4, ! x-component of sea ice velocity + !'vvel ',1, 'm', 4, ! y-component of sea ice velocity +/ diff --git a/config/bin_2p3z2d/namelist.io b/config/bin_2p3z2d/namelist.io index 01bcab49f..10bb72c1b 100644 --- a/config/bin_2p3z2d/namelist.io +++ b/config/bin_2p3z2d/namelist.io @@ -12,7 +12,7 @@ ldiag_extflds =.false. / &nml_general -io_listsize =100 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list +io_listsize =150 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list vec_autorotate =.false. / @@ -40,11 +40,11 @@ io_list = 'sst ',1, 'm', 4, 'otracers ',1, 'm', 4, 'N2 ',1, 'y', 4, 'Kv ',1, 'y', 4, - 'u ',1, 'y', 4, - 'v ',1, 'y', 4, - 'unod ',1, 'y', 4, - 'vnod ',1, 'y', 4, - 'w ',1, 'y', 4, + 'u ',1, 'm', 4, + 'v ',1, 'm', 4, + 'unod ',1, 'm', 4, + 'vnod ',1, 'm', 4, + 'w ',1, 'm', 4, 'Av ',1, 'y', 4, 'bolus_u ',1, 'y', 4, 'bolus_v ',1, 'y', 4, diff --git a/config/bin_2p3z2d/namelist.recom b/config/bin_2p3z2d/namelist.recom index 24145b956..5d18e9295 100644 --- a/config/bin_2p3z2d/namelist.recom +++ b/config/bin_2p3z2d/namelist.recom @@ -49,7 +49,7 @@ useErosion = .false. NitrogenSS = .false. ! When set to true, external sources and sinks of nitrogen are activated (Riverine, aeolian and denitrification) useAeolianN = .false. ! When set to true, aeolian nitrogen deposition is activated firstyearoffesomcycle = 1958 ! The first year of the actual physical forcing (e.g. JRA-55) used -lastyearoffesomcycle = 2022 ! Last year of the actual physical forcing used +lastyearoffesomcycle = 2024 ! Last year of the actual physical forcing used numofCO2cycles = 1 ! Number of cycles of the forcing planned currentCO2cycle = 1 ! Which CO2 cycle we are currently running DIC_PI = .true. diff --git a/config/bin_3p3z2d/job_albedo b/config/bin_3p3z2d/job_albedo index 9eff795cb..510603cff 100755 --- a/config/bin_3p3z2d/job_albedo +++ b/config/bin_3p3z2d/job_albedo @@ -1,16 +1,15 @@ #!/bin/bash -#SBATCH --account=nwg_hauck.maresys # edit your account -#SBATCH --job-name=recom +#SBATCH --account=nwg_maresys.maresys +#SBATCH --job-name=3p3z2d #SBATCH --partition=mpp -#SBATCH --time=01:30:00 -####SBATCH --constraint="[rack1|rack3]" +#SBATCH -N 9 +#SBATCH --cpus-per-task=1 +#SBATCH --time=08:00:00 #SBATCH --qos=12h -#SBATCH --nodes=9 # Number of tasks (MPI) tasks to be launched -#SBATCH --tasks-per-node 96 #8 #4 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O -#SBATCH --cpus-per-task 1 +#SBATCH --tasks-per-node 96 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O -#SBATCH -o fesom2o.out -#SBATCH -e fesom2e.out +#SBATCH -o slurm-out.out +#SBATCH -e slurm-err.out # disable hyperthreading #SBATCH --hint=nomultithread @@ -24,34 +23,32 @@ ulimit -s unlimited JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x -cp -n ../config/namelist.config . -cp -n ../config/namelist.forcing . -cp -n ../config/namelist.oce . -cp -n ../config/namelist.dyn . -cp -n ../config/namelist.tra . -cp -n ../config/namelist.ice . -cp -n ../config/namelist.io . -cp -n ../config/namelist.icepack . +#cp -n ../config/namelist.config . +#cp -n ../config/namelist.forcing . +#cp -n ../config/namelist.oce . +#cp -n ../config/namelist.dyn . +#cp -n ../config/namelist.tra . +#cp -n ../config/namelist.ice . +#cp -n ../config/namelist.io . +#cp -n ../config/namelist.icepack . #___DETERMINE SLURM JOBID+OUTPUTFILE____________________________________________ jobid=$(echo $SLURM_JOB_ID | cut -d"." -f1) -fname="fesom2_${SLURM_JOB_NAME}_${jobid}.out" +fname="fesom2.0.out" #___PUT JOB IN QUEUE____________________________________________________________ date -####srun --mpi=pmi2 ./fesom.x >> ${fname} srun --mpi=pmi2 ./fesom.x > fesom2.0.out date #qstat -f $PBS_JOBID #export EXITSTATUS=$? #if [ ${EXITSTATUS} -eq 0 ] || [ ${EXITSTATUS} -eq 127 ] ; then -#sbatch job_ollie +#sbatch job_albedo #fi -#Resultpath='/albedo/scratch/user/ogurses/ocean_only/' -Resultpath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags_3Zoo2Det_coccos/' -test -d $Resultpath/fesom.2019.oce.restart && exit +Resultpath='/albedo/work/user/...' +test -e $Resultpath/fesom.2019.oce.restart && exit IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) if (( IsInFile > 0 )); then diff --git a/config/bin_3p3z2d/namelist.config b/config/bin_3p3z2d/namelist.config index 9a048d633..ffff081c0 100644 --- a/config/bin_3p3z2d/namelist.config +++ b/config/bin_3p3z2d/namelist.config @@ -6,8 +6,8 @@ runid='fesom' ×tep step_per_day=32 !96 !96 !72 !72 !45 !72 !96 -run_length=1 !62 !62 !62 !28 -run_length_unit='y' ! y, m, d, s +run_length= 1 !62 !62 !62 !28 +run_length_unit='y' ! y, m, d, s / &clockinit ! the model starts at @@ -18,8 +18,8 @@ yearnew=1958 &paths MeshPath='/albedo/work/projects/p_recompdaf/frbunsen/FESOM2/meshes/core2/' -ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/' -ResultPath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags_3Zoo2Det_coccos/' +ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/' +ResultPath='/albedo/work/user/...' / &restart_log @@ -29,7 +29,7 @@ raw_restart_length=1 ! --> do core dump restart raw_restart_length_unit='off' ! e.g. y, d, h, s, off bin_restart_length=1 ! --> do derived type binary restart bin_restart_length_unit='off' ! e.g. y, d, h, s, off -logfile_outfreq=960 !in logfile info. output frequency, # steps +logfile_outfreq=960 !in logfile info. output frequency, # steps / &ale_def @@ -59,9 +59,18 @@ use_cavity_partial_cell=.false. use_floatice = .false. use_sw_pene=.true. flag_debug=.false. +use_transit=.false. / &machine n_levels=2 n_part= 12, 36 ! 432 number of partitions on each hierarchy level / + +&icebergs +use_icesheet_coupling=.false. +ib_num=1 +use_icebergs=.false. +steps_per_ib_step=8 +ib_async_mode=0 +/ diff --git a/config/bin_3p3z2d/namelist.forcing b/config/bin_3p3z2d/namelist.forcing index a17799393..d890c69ec 100644 --- a/config/bin_3p3z2d/namelist.forcing +++ b/config/bin_3p3z2d/namelist.forcing @@ -23,11 +23,23 @@ ncar_bulk_z_shum=10.0 ! height at which humi forcing is located (CORE, JRA-do: 1 use_landice_water=.false. landice_start_mon=5 landice_end_mon=10 +fwf_path='./mesh/' + +/ + +&age_tracer +use_age_tracer=.false. +use_age_mask=.false. +age_tracer_path='./mesh/' +age_start_year=2000 + / &nam_sbc nm_xwind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 nm_ywind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 + nm_xstre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 + nm_ystre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 nm_humi_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/huss.clim61' ! name of file with humidity nm_qsr_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rsds.clim61' ! name of file with solar heat nm_qlw_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rlds.clim61' ! name of file with Long wave @@ -37,24 +49,32 @@ landice_end_mon=10 nm_mslp_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/psl.clim61' ! air_pressure_at_sea_level nm_xwind_var = 'uas' ! name of variable in file with wind nm_ywind_var = 'vas' ! name of variable in file with wind - nm_humi_var = 'huss' ! name of variable in file with humidity - nm_qsr_var = 'rsds' ! name of variable in file with solar heat - nm_qlw_var = 'rlds' ! name of variable in file with Long wave + nm_xstre_var = 'uas' ! name of variable in file with wind + nm_ystre_var = 'vas' ! name of variable in file with wind + nm_humi_var = 'huss' ! name of variable in file with humidity + nm_qsr_var = 'rsds' ! name of variable in file with solar heat + nm_qlw_var = 'rlds' ! name of variable in file with Long wave nm_tair_var = 'tas' ! name of variable in file with 2m air temperature - nm_prec_var = 'prra' ! name of variable in file with total precipitation - nm_snow_var = 'prsn' ! name of variable in file with total precipitation - nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level + nm_prec_var = 'prra' ! name of variable in file with total precipitation + nm_snow_var = 'prsn' ! name of variable in file with total precipitation + nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level nm_nc_iyear = 1900 nm_nc_imm = 1 ! initial month of time axis in netCDF nm_nc_idd = 1 ! initial day of time axis in netCDF nm_nc_freq = 1 ! data points per day (i.e. 86400 if the time axis is in seconds) nm_nc_tmid = 0 ! 1 if the time stamps are given at the mid points of the netcdf file, 0 otherwise (i.e. 1 in CORE1, CORE2; 0 in JRA55) y_perpetual=.true. - l_xwind=.true. l_ywind=.true. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true. + l_xwind=.true. l_ywind=.true. l_xstre=.false. l_ystre=.false. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true. nm_runoff_file ='/albedo/pool/FESOM/forcing/CORE2/runoff.nc' runoff_data_source ='CORE2' !Dai09, CORE2 !runoff_data_source ='Dai09' !Dai09, CORE2, JRA55 !runoff_climatology =.true. - nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc' sss_data_source ='CORE2' + nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc' + chl_data_source ='None' !'Sweeney' monthly chlorophyll climatology or 'NONE' for constant chl_const (below). Make use_sw_pene=.TRUE. in namelist.config! + nm_chl_data_file ='/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/Sweeney/Sweeney_2005.nc' + chl_const = 0.1 + use_runoff_mapper = .FALSE. + runoff_basins_file = 'runoff_maps_regular.nc' + runoff_radius = 500000. / diff --git a/config/bin_3p3z2d/namelist.icepack.cesm.ponds b/config/bin_3p3z2d/namelist.icepack.cesm.ponds new file mode 100644 index 000000000..51aa33191 --- /dev/null +++ b/config/bin_3p3z2d/namelist.icepack.cesm.ponds @@ -0,0 +1,144 @@ +&env_nml ! In the original release these variables are defined in the icepack.settings + nicecat = 5 ! number of ice thickness categories + nfsdcat = 1 ! number of floe size categories + nicelyr = 4 ! number of vertical layers in the ice + nsnwlyr = 4 ! number of vertical layers in the snow + ntraero = 0 ! number of aerosol tracers (up to max_aero in ice_domain_size.F90) + trzaero = 0 ! number of z aerosol tracers (up to max_aero = 6) + tralg = 0 ! number of algal tracers (up to max_algae = 3) + trdoc = 0 ! number of dissolve organic carbon (up to max_doc = 3) + trdic = 0 ! number of dissolve inorganic carbon (up to max_dic = 1) + trdon = 0 ! number of dissolve organic nitrogen (up to max_don = 1) + trfed = 0 ! number of dissolved iron tracers (up to max_fe = 2) + trfep = 0 ! number of particulate iron tracers (up to max_fe = 2) + nbgclyr = 0 ! number of zbgc layers + trbgcz = 0 ! set to 1 for zbgc tracers (needs TRBGCS = 0 and TRBRI = 1) + trzs = 0 ! set to 1 for zsalinity tracer (needs TRBRI = 1) + trbri = 0 ! set to 1 for brine height tracer + trage = 0 ! set to 1 for ice age tracer + trfy = 0 ! set to 1 for first-year ice area tracer + trlvl = 0 ! set to 1 for level and deformed ice tracers + trpnd = 1 ! set to 1 for melt pond tracers + trbgcs = 0 ! set to 1 for skeletal layer tracers (needs TRBGCZ = 0) + ndtd = 1 ! dynamic time steps per thermodynamic time step +/ + +&grid_nml + kcatbound = 1 +/ + +&tracer_nml + tr_iage = .false. + tr_FY = .false. + tr_lvl = .false. + tr_pond_cesm = .true. + tr_pond_topo = .false. + tr_pond_lvl = .false. + tr_aero = .false. + tr_fsd = .false. +/ + +&thermo_nml + kitd = 1 + ktherm = 1 + conduct = 'bubbly' + a_rapid_mode = 0.5e-3 + Rac_rapid_mode = 10.0 + aspect_rapid_mode = 1.0 + dSdt_slow_mode = -5.0e-8 + phi_c_slow_mode = 0.05 + phi_i_mushy = 0.85 +/ + +&shortwave_nml + shortwave = 'dEdd' + albedo_type = 'ccsm3' + albicev = 0.78 + albicei = 0.36 + albsnowv = 0.98 + albsnowi = 0.70 + ahmax = 0.3 + R_ice = 0. + R_pnd = 0. + R_snw = 1.5 + dT_mlt = 1.5 + rsnw_mlt = 1500. + kalg = 0.6 +/ + +&ponds_nml + hp1 = 0.01 + hs0 = 0. + hs1 = 0.03 + dpscale = 1.e-3 + frzpnd = 'hlid' + rfracmin = 0.15 + rfracmax = 1. + pndaspect = 0.8 +/ + +&forcing_nml + formdrag = .false. + atmbndy = 'default' + calc_strair = .true. + calc_Tsfc = .true. + highfreq = .false. + natmiter = 5 + ustar_min = 0.0005 + emissivity = 0.95 + fbot_xfer_type = 'constant' + update_ocn_f = .false. + l_mpond_fresh = .false. + tfrz_option = 'linear_salt' + oceanmixed_ice = .true. + wave_spec_type = 'none' +/ + +&dynamics_nml + kstrength = 1 + krdg_partic = 1 + krdg_redist = 1 + mu_rdg = 3 + Cf = 17. + P_star = 27000. + C_star = 20. +/ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!! Icepack output namelist !!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +&nml_list_icepack +io_list_icepack = 'aicen ',1, 'm', 4, ! Sea ice concentration + 'vicen ',1, 'm', 4, ! Volume per unit area of ice + 'vsnon ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfcn ',1, 'm', 4, ! Sea ice surf. temperature + !'iagen ',1, 'm', 4, ! Sea ice age + !'FYn ',1, 'm', 4, ! First year ice + !'lvln ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesmn',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topon',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvln ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brinen ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qicen ',1, 'm', 4, ! Sea ice enthalpy + !'sicen ',1, 'm', 4, ! Sea ice salinity + !'qsnon ',1, 'm', 4, ! Snow enthalpy + ! Average over thicknes classes + !'aice ',1, 'm', 4, ! Sea ice concentration + !'vice ',1, 'm', 4, ! Volume per unit area of ice + !'vsno ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfc ',1, 'm', 4, ! Sea ice surf. temperature + !'iage ',1, 'm', 4, ! Sea ice age + !'FY ',1, 'm', 4, ! First year ice + !'lvl ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesm ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topo ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvl ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brine ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qice ',1, 'm', 4, ! Sea ice enthalpy + !'sice ',1, 'm', 4, ! Sea ice salinity + !'qsno ',1, 'm', 4, ! Snow enthalpy + ! Other variables + !'uvel ',1, 'm', 4, ! x-component of sea ice velocity + !'vvel ',1, 'm', 4, ! y-component of sea ice velocity +/ diff --git a/config/bin_3p3z2d/namelist.io b/config/bin_3p3z2d/namelist.io index b1d4c18e6..6da21b99b 100644 --- a/config/bin_3p3z2d/namelist.io +++ b/config/bin_3p3z2d/namelist.io @@ -12,7 +12,7 @@ ldiag_extflds =.false. / &nml_general -io_listsize =100 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list +io_listsize =150 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list vec_autorotate =.false. / @@ -55,6 +55,7 @@ io_list = 'sst ',1, 'm', 4, 'Hp ',1, 'm', 4, 'aFe ',1, 'm', 4, 'aN ',1, 'm', 4, + 'denb ',1, 'm', 4, 'benN ',1, 'm', 4, 'benC ',1, 'm', 4, 'benSi ',1, 'm', 4, diff --git a/config/bin_3p3z2d/namelist.recom b/config/bin_3p3z2d/namelist.recom index 3679e244f..6fb6dd2f8 100644 --- a/config/bin_3p3z2d/namelist.recom +++ b/config/bin_3p3z2d/namelist.recom @@ -49,7 +49,7 @@ useErosion = .false. NitrogenSS = .false. ! When set to true, external sources and sinks of nitrogen are activated (Riverine, aeolian and denitrification) useAeolianN = .false. ! When set to true, aeolian nitrogen deposition is activated firstyearoffesomcycle = 1958 ! The first year of the actual physical forcing (e.g. JRA-55) used -lastyearoffesomcycle = 2023 ! Last year of the actual physical forcing used +lastyearoffesomcycle = 2024 ! Last year of the actual physical forcing used numofCO2cycles = 1 ! Number of cycles of the forcing planned currentCO2cycle = 1 ! Which CO2 cycle we are currently running DIC_PI = .true. diff --git a/config/bin_4p3z2d/job_albedo b/config/bin_4p3z2d/job_albedo new file mode 100755 index 000000000..e6d8a8140 --- /dev/null +++ b/config/bin_4p3z2d/job_albedo @@ -0,0 +1,63 @@ +#!/bin/bash +#SBATCH --account=nwg_maresys.maresys +#SBATCH --job-name=4p3z2d +#SBATCH --partition=mpp +#SBATCH -N 9 +#SBATCH --cpus-per-task=1 +#SBATCH --time=08:00:00 +#SBATCH --qos=12h +#SBATCH --tasks-per-node 96 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O + +#SBATCH -o slurm-out.out +#SBATCH -e slurm-err.out + +# disable hyperthreading +#SBATCH --hint=nomultithread + +module purge +source ../env/albedo/shell +export OMP_NUM_THREADS=1 +ulimit -s unlimited + +# determine JOBID +JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` + +ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x +#cp -n ../config/namelist.config . +#cp -n ../config/namelist.forcing . +#cp -n ../config/namelist.oce . +#cp -n ../config/namelist.dyn . +#cp -n ../config/namelist.tra . +#cp -n ../config/namelist.ice . +#cp -n ../config/namelist.io . +#cp -n ../config/namelist.icepack . + +#___DETERMINE SLURM JOBID+OUTPUTFILE____________________________________________ +jobid=$(echo $SLURM_JOB_ID | cut -d"." -f1) +fname="fesom2.0.out" + +#___PUT JOB IN QUEUE____________________________________________________________ +date +srun --mpi=pmi2 ./fesom.x > fesom2.0.out +date + +#qstat -f $PBS_JOBID +#export EXITSTATUS=$? +#if [ ${EXITSTATUS} -eq 0 ] || [ ${EXITSTATUS} -eq 127 ] ; then +#sbatch job_albedo +#fi + +Resultpath='/albedo/work/user/...' +test -e $Resultpath/fesom.2019.oce.restart && exit + +IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) +if (( IsInFile > 0 )); then +# submit next #job \ + echo "submitting next job" + cp fesom2.0.out fesom.out.done + sbatch job_albedo +else + echo "something is wrong, last line of fesom.out reads" + echo $( tail -1 fesom2.0.out) + echo "abnormal termination of job script" +fi diff --git a/config/bin_4p3z2d/namelist.config b/config/bin_4p3z2d/namelist.config new file mode 100644 index 000000000..ffff081c0 --- /dev/null +++ b/config/bin_4p3z2d/namelist.config @@ -0,0 +1,76 @@ +! This is the namelist file for model general configuration + +&modelname +runid='fesom' +/ + +×tep +step_per_day=32 !96 !96 !72 !72 !45 !72 !96 +run_length= 1 !62 !62 !62 !28 +run_length_unit='y' ! y, m, d, s +/ + +&clockinit ! the model starts at +timenew=0.0 +daynew=1 +yearnew=1958 +/ + +&paths +MeshPath='/albedo/work/projects/p_recompdaf/frbunsen/FESOM2/meshes/core2/' +ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/' +ResultPath='/albedo/work/user/...' +/ + +&restart_log +restart_length=1 ! --> do netcdf restart ( only required for d,h,s cases, y, m take 1) +restart_length_unit='y' !output period: y, d, h, s, off +raw_restart_length=1 ! --> do core dump restart +raw_restart_length_unit='off' ! e.g. y, d, h, s, off +bin_restart_length=1 ! --> do derived type binary restart +bin_restart_length_unit='off' ! e.g. y, d, h, s, off +logfile_outfreq=960 !in logfile info. output frequency, # steps +/ + +&ale_def +which_ALE='zstar' ! 'linfs','zlevel', 'zstar' +use_partial_cell=.true. +/ + +&geometry +cartesian=.false. +fplane=.false. +cyclic_length=360 ![degree] +rotated_grid=.true. !option only valid for coupled model case now +force_rotation=.true. +alphaEuler=50. ![degree] Euler angles, convention: +betaEuler=15. ![degree] first around z, then around new x, +gammaEuler=-90. ![degree] then around new z. +/ + +&calendar +include_fleapyear=.false. +/ + +&run_config +use_ice=.true. ! ocean+ice +use_cavity=.false. ! +use_cavity_partial_cell=.false. +use_floatice = .false. +use_sw_pene=.true. +flag_debug=.false. +use_transit=.false. +/ + +&machine +n_levels=2 +n_part= 12, 36 ! 432 number of partitions on each hierarchy level +/ + +&icebergs +use_icesheet_coupling=.false. +ib_num=1 +use_icebergs=.false. +steps_per_ib_step=8 +ib_async_mode=0 +/ diff --git a/config/bin_4p3z2d/namelist.dyn b/config/bin_4p3z2d/namelist.dyn new file mode 100644 index 000000000..fb7919588 --- /dev/null +++ b/config/bin_4p3z2d/namelist.dyn @@ -0,0 +1,24 @@ +&dynamics_visc +visc_gamma0 = 0.003 ! [m/s], backgroung viscosity= gamma0*len, it should be as small a s possible (keep it < 0.01 m/s). +visc_gamma1 = 0.1 ! [nodim], for computation of the flow aware viscosity +visc_gamma2 = 0.285 ! [s/m], is only used in easy backscatter option +visc_easybsreturn= 1.5 + +opt_visc = 5 +! 5=Kinematic (easy) Backscatter +! 6=Biharmonic flow aware (viscosity depends on velocity Laplacian) +! 7=Biharmonic flow aware (viscosity depends on velocity differences) +! 8=Dynamic Backscatter + +use_ivertvisc= .true. +/ + +&dynamics_general +momadv_opt = 2 ! option for momentum advection in moment only =2 +use_freeslip = .false. ! Switch on free slip +use_wsplit = .false. ! Switch for implicite/explicte splitting of vert. velocity +wsplit_maxcfl= 1.0 ! maximum allowed CFL criteria in vertical (0.5 < w_max_cfl < 1.) + ! in older FESOM it used to be w_exp_max=1.e-3 +ldiag_KE=.false. ! activates energy diagnostics +/ + diff --git a/config/bin_4p3z2d/namelist.forcing b/config/bin_4p3z2d/namelist.forcing new file mode 100644 index 000000000..d890c69ec --- /dev/null +++ b/config/bin_4p3z2d/namelist.forcing @@ -0,0 +1,80 @@ +! This is the namelist file for forcing + +&forcing_exchange_coeff +Ce_atm_oce=0.00175 ! exchange coeff. of latent heat over open water +Ch_atm_oce=0.00175 ! exchange coeff. of sensible heat over open water +Cd_atm_oce=0.001 ! drag coefficient between atmosphere and water +Ce_atm_ice=0.00175 ! exchange coeff. of latent heat over ice +Ch_atm_ice=0.00175 ! exchange coeff. of sensible heat over ice +Cd_atm_ice=0.0012 ! drag coefficient between atmosphere and ice +Swind =0.0 ! parameterization for coupled current feedback +/ + +&forcing_bulk +AOMIP_drag_coeff=.false. +ncar_bulk_formulae=.true. +ncar_bulk_z_wind=10.0 ! height at which wind forcing is located (CORE, JRA-do: 10m, JRA, NCEP:2m) +ncar_bulk_z_tair=10.0 ! height at which temp forcing is located (CORE, JRA-do: 10m, JRA, NCEP:2m) +ncar_bulk_z_shum=10.0 ! height at which humi forcing is located (CORE, JRA-do: 10m, JRA, NCEP:2m) + +/ + +&land_ice +use_landice_water=.false. +landice_start_mon=5 +landice_end_mon=10 +fwf_path='./mesh/' + +/ + +&age_tracer +use_age_tracer=.false. +use_age_mask=.false. +age_tracer_path='./mesh/' +age_start_year=2000 + +/ + +&nam_sbc + nm_xwind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 + nm_ywind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 + nm_xstre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2 + nm_ystre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2 + nm_humi_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/huss.clim61' ! name of file with humidity + nm_qsr_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rsds.clim61' ! name of file with solar heat + nm_qlw_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rlds.clim61' ! name of file with Long wave + nm_tair_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/tas.clim61' ! name of file with 2m air temperature + nm_prec_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/prra.clim61' ! name of file with total precipitation + nm_snow_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/prsn.clim61' ! name of file with snow precipitation + nm_mslp_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/psl.clim61' ! air_pressure_at_sea_level + nm_xwind_var = 'uas' ! name of variable in file with wind + nm_ywind_var = 'vas' ! name of variable in file with wind + nm_xstre_var = 'uas' ! name of variable in file with wind + nm_ystre_var = 'vas' ! name of variable in file with wind + nm_humi_var = 'huss' ! name of variable in file with humidity + nm_qsr_var = 'rsds' ! name of variable in file with solar heat + nm_qlw_var = 'rlds' ! name of variable in file with Long wave + nm_tair_var = 'tas' ! name of variable in file with 2m air temperature + nm_prec_var = 'prra' ! name of variable in file with total precipitation + nm_snow_var = 'prsn' ! name of variable in file with total precipitation + nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level + nm_nc_iyear = 1900 + nm_nc_imm = 1 ! initial month of time axis in netCDF + nm_nc_idd = 1 ! initial day of time axis in netCDF + nm_nc_freq = 1 ! data points per day (i.e. 86400 if the time axis is in seconds) + nm_nc_tmid = 0 ! 1 if the time stamps are given at the mid points of the netcdf file, 0 otherwise (i.e. 1 in CORE1, CORE2; 0 in JRA55) + y_perpetual=.true. + l_xwind=.true. l_ywind=.true. l_xstre=.false. l_ystre=.false. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true. + nm_runoff_file ='/albedo/pool/FESOM/forcing/CORE2/runoff.nc' + runoff_data_source ='CORE2' !Dai09, CORE2 + !runoff_data_source ='Dai09' !Dai09, CORE2, JRA55 + !runoff_climatology =.true. + sss_data_source ='CORE2' + nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc' + chl_data_source ='None' !'Sweeney' monthly chlorophyll climatology or 'NONE' for constant chl_const (below). Make use_sw_pene=.TRUE. in namelist.config! + nm_chl_data_file ='/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/Sweeney/Sweeney_2005.nc' + chl_const = 0.1 + use_runoff_mapper = .FALSE. + runoff_basins_file = 'runoff_maps_regular.nc' + runoff_radius = 500000. +/ diff --git a/config/bin_4p3z2d/namelist.ice b/config/bin_4p3z2d/namelist.ice new file mode 100644 index 000000000..bcd86f145 --- /dev/null +++ b/config/bin_4p3z2d/namelist.ice @@ -0,0 +1,31 @@ +! Ice namelist +&ice_dyn +whichEVP=0 ! 0=standart; 1=mEVP; 2=aEVP +Pstar=30000.0 ! [N/m^2] +ellipse=2.0 +c_pressure=20.0 ! ice concentration parameter used in ice strength computation +delta_min=1.0e-11 ! [s^(-1)] +evp_rheol_steps=120 ! number of EVP subcycles +alpha_evp=250 ! constant that control numerical stability of mEVP. Adjust with resolution. +beta_evp=250 ! constant that control numerical stability of mEVP. Adjust with resolution. +c_aevp=0.15 ! a tuning constant in aEVP. Adjust with resolution. +Cd_oce_ice=0.0055 ! drag coef. oce - ice +ice_gamma_fct=0.5 ! smoothing parameter +ice_diff=0.0 ! diffusion to stabilize +theta_io=0.0 ! rotation angle +ice_ave_steps=1 ! ice step=ice_ave_steps*oce_step +/ + +&ice_therm +Sice=4.0 ! Ice salinity 3.2--5.0 ppt. +h0=.5 ! Lead closing parameter [m] +emiss_ice=0.97 ! Emissivity of Snow/Ice, +emiss_wat=0.97 ! Emissivity of open water +albsn=0.81 ! Albedo: frozen snow +albsnm=0.77 ! melting snow +albi=0.7 ! frozen ice +albim=0.68 ! melting ice +albw=0.1 ! open water +con=2.1656 ! Thermal conductivities: ice; W/m/K +consn=0.31 ! snow +/ diff --git a/config/bin_4p3z2d/namelist.icepack b/config/bin_4p3z2d/namelist.icepack new file mode 100644 index 000000000..ed0dd4d4c --- /dev/null +++ b/config/bin_4p3z2d/namelist.icepack @@ -0,0 +1,146 @@ +&env_nml ! In the original release these variables are defined in the icepack.settings + nicecat = 5 ! number of ice thickness categories + nfsdcat = 1 ! number of floe size categories + nicelyr = 4 ! number of vertical layers in the ice + nsnwlyr = 4 ! number of vertical layers in the snow + ntraero = 0 ! number of aerosol tracers (up to max_aero in ice_domain_size.F90) + trzaero = 0 ! number of z aerosol tracers (up to max_aero = 6) + tralg = 0 ! number of algal tracers (up to max_algae = 3) + trdoc = 0 ! number of dissolve organic carbon (up to max_doc = 3) + trdic = 0 ! number of dissolve inorganic carbon (up to max_dic = 1) + trdon = 0 ! number of dissolve organic nitrogen (up to max_don = 1) + trfed = 0 ! number of dissolved iron tracers (up to max_fe = 2) + trfep = 0 ! number of particulate iron tracers (up to max_fe = 2) + nbgclyr = 0 ! number of zbgc layers + trbgcz = 0 ! set to 1 for zbgc tracers (needs TRBGCS = 0 and TRBRI = 1) + trzs = 0 ! set to 1 for zsalinity tracer (needs TRBRI = 1) + trbri = 0 ! set to 1 for brine height tracer + trage = 0 ! set to 1 for ice age tracer + trfy = 0 ! set to 1 for first-year ice area tracer + trlvl = 0 ! set to 1 for level and deformed ice tracers + trpnd = 0 ! set to 1 for melt pond tracers + trbgcs = 0 ! set to 1 for skeletal layer tracers (needs TRBGCZ = 0) + ndtd = 1 ! dynamic time steps per thermodynamic time step +/ + +&grid_nml + kcatbound = 1 +/ + +&tracer_nml + tr_iage = .false. + tr_FY = .false. + tr_lvl = .false. + tr_pond_cesm = .false. + tr_pond_topo = .false. + tr_pond_lvl = .false. + tr_aero = .false. + tr_fsd = .false. +/ + +&thermo_nml + kitd = 1 + ktherm = 1 + conduct = 'bubbly' + a_rapid_mode = 0.5e-3 + Rac_rapid_mode = 10.0 + aspect_rapid_mode = 1.0 + dSdt_slow_mode = -5.0e-8 + phi_c_slow_mode = 0.05 + phi_i_mushy = 0.85 + ksno = 0.3 +/ + +&shortwave_nml + shortwave = 'ccsm3' + albedo_type = 'ccsm3' + albicev = 0.78 + albicei = 0.36 + albsnowv = 0.98 + albsnowi = 0.70 + albocn = 0.1 + ahmax = 0.3 + R_ice = 0. + R_pnd = 0. + R_snw = 1.5 + dT_mlt = 1.5 + rsnw_mlt = 1500. + kalg = 0.6 +/ + +&ponds_nml + hp1 = 0.01 + hs0 = 0. + hs1 = 0.03 + dpscale = 1.e-3 + frzpnd = 'hlid' + rfracmin = 0.15 + rfracmax = 1. + pndaspect = 0.8 +/ + +&forcing_nml + formdrag = .false. + atmbndy = 'default' + calc_strair = .true. + calc_Tsfc = .true. + highfreq = .false. + natmiter = 5 + ustar_min = 0.0005 + emissivity = 0.95 + fbot_xfer_type = 'constant' + update_ocn_f = .false. + l_mpond_fresh = .false. + tfrz_option = 'linear_salt' + oceanmixed_ice = .true. + wave_spec_type = 'none' +/ + +&dynamics_nml + kstrength = 1 + krdg_partic = 1 + krdg_redist = 1 + mu_rdg = 3 + Cf = 17. + P_star = 27000. + C_star = 20. +/ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!! Icepack output namelist !!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +&nml_list_icepack +io_list_icepack = 'aicen ',1, 'm', 4, ! Sea ice concentration + 'vicen ',1, 'm', 4, ! Volume per unit area of ice + 'vsnon ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfcn ',1, 'm', 4, ! Sea ice surf. temperature + !'iagen ',1, 'm', 4, ! Sea ice age + !'FYn ',1, 'm', 4, ! First year ice + !'lvln ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesmn',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topon',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvln ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brinen ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qicen ',1, 'm', 4, ! Sea ice enthalpy + !'sicen ',1, 'm', 4, ! Sea ice salinity + !'qsnon ',1, 'm', 4, ! Snow enthalpy + ! Average over thicknes classes + !'aice ',1, 'm', 4, ! Sea ice concentration + !'vice ',1, 'm', 4, ! Volume per unit area of ice + !'vsno ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfc ',1, 'm', 4, ! Sea ice surf. temperature + !'iage ',1, 'm', 4, ! Sea ice age + !'FY ',1, 'm', 4, ! First year ice + !'lvl ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesm ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topo ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvl ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brine ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qice ',1, 'm', 4, ! Sea ice enthalpy + !'sice ',1, 'm', 4, ! Sea ice salinity + !'qsno ',1, 'm', 4, ! Snow enthalpy + ! Other variables + !'uvel ',1, 'm', 4, ! x-component of sea ice velocity + !'vvel ',1, 'm', 4, ! y-component of sea ice velocity +/ diff --git a/config/bin_4p3z2d/namelist.icepack.cesm.ponds b/config/bin_4p3z2d/namelist.icepack.cesm.ponds new file mode 100644 index 000000000..51aa33191 --- /dev/null +++ b/config/bin_4p3z2d/namelist.icepack.cesm.ponds @@ -0,0 +1,144 @@ +&env_nml ! In the original release these variables are defined in the icepack.settings + nicecat = 5 ! number of ice thickness categories + nfsdcat = 1 ! number of floe size categories + nicelyr = 4 ! number of vertical layers in the ice + nsnwlyr = 4 ! number of vertical layers in the snow + ntraero = 0 ! number of aerosol tracers (up to max_aero in ice_domain_size.F90) + trzaero = 0 ! number of z aerosol tracers (up to max_aero = 6) + tralg = 0 ! number of algal tracers (up to max_algae = 3) + trdoc = 0 ! number of dissolve organic carbon (up to max_doc = 3) + trdic = 0 ! number of dissolve inorganic carbon (up to max_dic = 1) + trdon = 0 ! number of dissolve organic nitrogen (up to max_don = 1) + trfed = 0 ! number of dissolved iron tracers (up to max_fe = 2) + trfep = 0 ! number of particulate iron tracers (up to max_fe = 2) + nbgclyr = 0 ! number of zbgc layers + trbgcz = 0 ! set to 1 for zbgc tracers (needs TRBGCS = 0 and TRBRI = 1) + trzs = 0 ! set to 1 for zsalinity tracer (needs TRBRI = 1) + trbri = 0 ! set to 1 for brine height tracer + trage = 0 ! set to 1 for ice age tracer + trfy = 0 ! set to 1 for first-year ice area tracer + trlvl = 0 ! set to 1 for level and deformed ice tracers + trpnd = 1 ! set to 1 for melt pond tracers + trbgcs = 0 ! set to 1 for skeletal layer tracers (needs TRBGCZ = 0) + ndtd = 1 ! dynamic time steps per thermodynamic time step +/ + +&grid_nml + kcatbound = 1 +/ + +&tracer_nml + tr_iage = .false. + tr_FY = .false. + tr_lvl = .false. + tr_pond_cesm = .true. + tr_pond_topo = .false. + tr_pond_lvl = .false. + tr_aero = .false. + tr_fsd = .false. +/ + +&thermo_nml + kitd = 1 + ktherm = 1 + conduct = 'bubbly' + a_rapid_mode = 0.5e-3 + Rac_rapid_mode = 10.0 + aspect_rapid_mode = 1.0 + dSdt_slow_mode = -5.0e-8 + phi_c_slow_mode = 0.05 + phi_i_mushy = 0.85 +/ + +&shortwave_nml + shortwave = 'dEdd' + albedo_type = 'ccsm3' + albicev = 0.78 + albicei = 0.36 + albsnowv = 0.98 + albsnowi = 0.70 + ahmax = 0.3 + R_ice = 0. + R_pnd = 0. + R_snw = 1.5 + dT_mlt = 1.5 + rsnw_mlt = 1500. + kalg = 0.6 +/ + +&ponds_nml + hp1 = 0.01 + hs0 = 0. + hs1 = 0.03 + dpscale = 1.e-3 + frzpnd = 'hlid' + rfracmin = 0.15 + rfracmax = 1. + pndaspect = 0.8 +/ + +&forcing_nml + formdrag = .false. + atmbndy = 'default' + calc_strair = .true. + calc_Tsfc = .true. + highfreq = .false. + natmiter = 5 + ustar_min = 0.0005 + emissivity = 0.95 + fbot_xfer_type = 'constant' + update_ocn_f = .false. + l_mpond_fresh = .false. + tfrz_option = 'linear_salt' + oceanmixed_ice = .true. + wave_spec_type = 'none' +/ + +&dynamics_nml + kstrength = 1 + krdg_partic = 1 + krdg_redist = 1 + mu_rdg = 3 + Cf = 17. + P_star = 27000. + C_star = 20. +/ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!! Icepack output namelist !!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +&nml_list_icepack +io_list_icepack = 'aicen ',1, 'm', 4, ! Sea ice concentration + 'vicen ',1, 'm', 4, ! Volume per unit area of ice + 'vsnon ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfcn ',1, 'm', 4, ! Sea ice surf. temperature + !'iagen ',1, 'm', 4, ! Sea ice age + !'FYn ',1, 'm', 4, ! First year ice + !'lvln ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesmn',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topon',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvln ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brinen ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qicen ',1, 'm', 4, ! Sea ice enthalpy + !'sicen ',1, 'm', 4, ! Sea ice salinity + !'qsnon ',1, 'm', 4, ! Snow enthalpy + ! Average over thicknes classes + !'aice ',1, 'm', 4, ! Sea ice concentration + !'vice ',1, 'm', 4, ! Volume per unit area of ice + !'vsno ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfc ',1, 'm', 4, ! Sea ice surf. temperature + !'iage ',1, 'm', 4, ! Sea ice age + !'FY ',1, 'm', 4, ! First year ice + !'lvl ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesm ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topo ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvl ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brine ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qice ',1, 'm', 4, ! Sea ice enthalpy + !'sice ',1, 'm', 4, ! Sea ice salinity + !'qsno ',1, 'm', 4, ! Snow enthalpy + ! Other variables + !'uvel ',1, 'm', 4, ! x-component of sea ice velocity + !'vvel ',1, 'm', 4, ! y-component of sea ice velocity +/ diff --git a/config/bin_4p3z2d/namelist.io b/config/bin_4p3z2d/namelist.io new file mode 100644 index 000000000..aef0697d9 --- /dev/null +++ b/config/bin_4p3z2d/namelist.io @@ -0,0 +1,138 @@ +&diag_list +ldiag_solver =.false. +lcurt_stress_surf=.false. +ldiag_curl_vel3 =.false. +ldiag_Ri =.false. +ldiag_turbflux =.false. +ldiag_salt3D =.false. +ldiag_dMOC =.false. +ldiag_DVD =.false. +ldiag_forc =.false. +ldiag_extflds =.false. +/ + +&nml_general +io_listsize =150 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list +vec_autorotate =.false. +/ + +! for sea ice related variables use_ice should be true, otherewise there will be no output +! for 'curl_surf' to work lcurt_stress_surf must be .true. otherwise no output +! for 'fer_C', 'bolus_u', 'bolus_v', 'bolus_w', 'fer_K' to work Fer_GM must be .true. otherwise no output +! 'otracers' - all other tracers if applicable +! for 'dMOC' to work ldiag_dMOC must be .true. otherwise no output +&nml_list +io_list = 'sst ',1, 'm', 4, + 'sss ',1, 'm', 4, + 'ssh ',1, 'm', 4, + 'uice ',1, 'm', 4, + 'vice ',1, 'm', 4, + 'a_ice ',1, 'm', 4, + 'm_ice ',1, 'm', 4, + 'm_snow ',1, 'm', 4, + 'MLD1 ',1, 'm', 4, + 'MLD2 ',1, 'm', 4, + 'MLD3 ',1, 'm', 4, + 'tx_sur ',1, 'm', 4, + 'ty_sur ',1, 'm', 4, + 'temp ',1, 'm', 4, + 'salt ',1, 'm', 8, + 'otracers ',1, 'm', 4, + 'N2 ',1, 'y', 4, + 'Kv ',1, 'y', 4, + 'u ',1, 'm', 4, + 'v ',1, 'm', 4, + 'unod ',1, 'm', 4, + 'vnod ',1, 'm', 4, + 'w ',1, 'm', 4, + 'Av ',1, 'y', 4, + 'bolus_u ',1, 'y', 4, + 'bolus_v ',1, 'y', 4, + 'bolus_w ',1, 'y', 4, + 'dpCO2s ',1, 'm', 4, + 'pCO2s ',1, 'm', 4, + 'CO2f ',1, 'm', 4, + 'Hp ',1, 'm', 4, + 'aFe ',1, 'm', 4, + 'aN ',1, 'm', 4, + 'denb ',1, 'm', 4, + 'benN ',1, 'm', 4, + 'benC ',1, 'm', 4, + 'benSi ',1, 'm', 4, + 'benCalc ',1, 'm', 4, + 'Chldegd ',1, 'm', 4, + 'Chldegn ',1, 'm', 4, + 'Chldegc ',1, 'm', 4, + 'NNAd ',1, 'm', 4, + 'NNAn ',1, 'm', 4, + 'NNAc ',1, 'm', 4, + 'GPPd ',1, 'm', 4, + 'GPPn ',1, 'm', 4, + 'GPPc ',1, 'm', 4, + 'NPPd ',1, 'm', 4, + 'NPPn ',1, 'm', 4, + 'NPPc ',1, 'm', 4, + 'PAR ',1, 'm', 4, + 'CO2 ',1, 'm', 4, + 'pH ',1, 'm', 4, + 'pCO2 ',1, 'm', 4, + 'HCO3 ',1, 'm', 4, + 'CO3 ',1, 'm', 4, + 'OmegaC ',1, 'm', 4, + 'kspc ',1, 'm', 4, + 'rhoSW ',1, 'm', 4, + 'wsink_det1',1, 'm', 8, + 'wsink_det2',1, 'm', 8, + 'rho_det1',1, 'm', 8, + 'rho_det2',1, 'm', 8, + 'scaling_rho_1',1, 'm', 8, + 'scaling_rho_2',1, 'm', 8, + 'scaling_visc',1, 'm', 8, + 'grazmeso_tot',1, 'm', 4, + 'grazmeso_n',1, 'm', 4, + 'grazmeso_d',1, 'm', 4, + 'grazmeso_c',1, 'm', 4, + 'respmeso',1, 'm', 4, + 'respmacro',1, 'm', 4, + 'respmicro',1, 'm', 4, + 'calcdiss',1, 'm', 4, + 'calcif',1, 'm', 4, + 'aggn',1, 'm', 4, + 'aggd',1, 'm', 4, + 'aggc',1, 'm', 4, + 'docexn',1, 'm', 4, + 'docexd',1, 'm', 4, + 'docexc',1, 'm', 4, + 'respn',1, 'm', 4, + 'respd',1, 'm', 4, + 'respc',1, 'm', 4, + 'NPPp ',1, 'm', 4, + 'GPPp ',1, 'm', 4, + 'NNAp ',1, 'm', 4, + 'Chldegp ',1, 'm', 4, + 'grazmeso_p',1, 'm', 4, + 'aggp ',1, 'm', 4, + 'respp ',1, 'm', 4, + 'docexp ',1, 'm', 4, + 'TTemp_diatoms',1, 'm', 4, + 'TTemp_phyto',1, 'm', 4, + 'TTemp_cocco',1, 'm', 4, + 'TTemp_phaeo',1, 'm', 4, + 'TPhyCO2 ',1, 'm', 4, + 'TDiaCO2 ',1, 'm', 4, + 'TCoccoCO2 ',1, 'm', 4, + 'TPhaeoCO2 ',1, 'm', 4, + 'TqLF_phyto ',1, 'm', 4, + 'TqLF_diatoms',1, 'm', 4, + 'TqLF_cocco ',1, 'm', 4, + 'TqLF_phaeo ',1, 'm', 4, + 'TCphotLL_phyto ',1, 'm', 4, + 'TCphotLL_dia ',1, 'm', 4, + 'TCphotLL_cocco ',1, 'm', 4, + 'TCphotLL_phaeo ',1, 'm', 4, + 'TCphot_phyto',1, 'm', 4, + 'TCphot_diatoms',1, 'm', 4, + 'TCphot_cocco',1, 'm', 4, + 'TCphot_phaeo',1, 'm', 4, + 'TSi_assimDia',1, 'm', 4, +/ diff --git a/config/bin_4p3z2d/namelist.oce b/config/bin_4p3z2d/namelist.oce new file mode 100644 index 000000000..7af6867f7 --- /dev/null +++ b/config/bin_4p3z2d/namelist.oce @@ -0,0 +1,26 @@ +! The namelist file for the finite-volume ocean model + +&oce_dyn +C_d=0.0025 ! Bottom drag, nondimensional +A_ver= 1.e-4 ! Vertical viscosity, m^2/s +scale_area=5.8e9 ! Visc. and diffus. are for an element with scale_area +SPP=.false. ! Salt Plume Parameterization +Fer_GM=.true. ! to swith on/off GM after Ferrari et al. 2010 +K_GM_max = 2000.0 ! max. GM thickness diffusivity (m2/s) +K_GM_min = 2.0 ! max. GM thickness diffusivity (m2/s) +K_GM_bvref = 2 ! def of bvref in ferreira scaling 0=srf,1=bot mld,2=mean over mld,3=weighted mean over mld +K_GM_rampmax = -1.0 ! Resol >K_GM_rampmax[km] GM on +K_GM_rampmin = -1.0 ! Resol 8 if (ciso == .true.) otherwise -> 4 +use_MEDUSA = .false. ! Main switch for the sediment model MEDUSA +sedflx_num = 0 ! if 0: no file from MEDUSA is read but default sediment +bottflx_num = 4 ! if ciso&ciso_14: =8; if .not.ciso_14: =6; no ciso: =4 +use_atbox = .false. +add_loopback = .false. ! add loopback fluxes through rivers to the surface +lb_tscale = 1.0 ! /year: fraction of loopback fluxes yearly added to the surface +/ + +&pasinking +Vdet_a = 0.0288 ! [1/day] +Vcalc = 0.0144 ! [1/day] +/ + +&painitialization_N +cPhyN = 0.2d0 +cHetN = 0.2d0 +cZoo2N = 0.2d0 +/ + +&paArrhenius +recom_Tref = 288.15d0 ! [K] +C2K = 273.15d0 ! Conversion from degrees C to K +Ae = 4500.d0 ! [K] Slope of the linear part of the Arrhenius function +Tmax_phaeo = 16d0 ! [°C] For Blanchard temp fxn: maximum temperature +Topt_phaeo = 6.7982d0 ! [°C] For Blanchard temp fxn: optimum temperature +uopt_phaeo = 0.6903d0 ! [1/day] For Blanchard temp fxn: optimum growth rate +beta_phaeo = 0.7114d0 ! [unitless] For Blanchard temp fxn +ord_d = -0.2216d0 ! diatom ordonnée +expon_d = 0.0406d0 ! diatom exponent +ord_phy = -0.7338d0 ! small phyto ordonnée +expon_phy = 0.06422d0 ! small phyto exponent +ord_cocco = -0.2310d0 ! coccolitho ordonnée +expon_cocco = 0.0327d0 ! coccolitho exponent +ord_phaeo = -0.2310d0 ! phaeocystis ordonnée +expon_phaeo = 0.0327d0 ! phaeocystis exponent +reminSi = 0.02d0 +k_o2_remin = 15.d0 ! NEW O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 +!d1_d = 0.001d0 ! 42°C version +!d2_d = 0.2d0 ! 42°C version +!d1_phy = 0.0016d0 ! 42°C version +!d2_phy = 0.1987d0 ! 42°C version +!d1_cocco = 0.0025d0 ! 42°C version +!d2_cocco = 0.17d0 ! 42°C version +/ + +&palimiter_function +NMinSlope = 50.d0 +SiMinSlope = 1000.d0 +NCmin = 0.04d0 !0.05d0 +NCmin_d = 0.04d0 !0.05d0 +NCmin_c = 0.04d0 ! NEW +NCmin_p = 0.04d0 ! NEW for Phaeocystis +SiCmin = 0.04d0 +k_Fe = 0.04d0 +k_Fe_d = 0.12d0 +k_Fe_c = 0.09d0 ! NEW +k_Fe_p = 0.09d0 ! NEW for Phaeocystis (to be tuned) +k_si = 4.d0 +P_cm = 3.0d0 ! [1/day] Rate of C-specific photosynthesis +P_cm_d = 3.5d0 +P_cm_c = 2.8d0 ! NEW +P_cm_p = 0.75d0 ! NEW for Phaeocystis (to be tuned) +/ + +&palight_calculations +k_w = 0.04d0 ! [1/m] Light attenuation coefficient +a_chl = 0.03d0 ! [1/m * 1/(mg Chl)] Chlorophyll specific attenuation coefficients +/ + +&paphotosynthesis +alfa = 0.15d0 !0.14d0 ! [(mmol C*m2)/(mg Chl*W*day)] ! NEW value for Phaeocystis +alfa_d = 0.19d0 ! An initial slope of the P-I curve +alfa_c = 0.10d0 ! NEW +alfa_p = 0.17d0 ! NEW for Phaeocystis (to be tuned) +parFrac = 0.43d0 +/ + +&paassimilation +V_cm_fact = 0.7d0 ! scaling factor for temperature dependent maximum of C-specific N-uptake +V_cm_fact_d = 0.7d0 +V_cm_fact_c = 0.7d0 ! NEW +V_cm_fact_p = 0.7d0 ! NEW for Phaeocystis +NMaxSlope = 1000.d0 ! Max slope for limiting function +SiMaxSlope = 1000.d0 +NCmax = 0.2d0 ! [mmol N/mmol C] Maximum cell quota of nitrogen (N:C) +NCmax_d = 0.2d0 +NCmax_c = 0.15d0 ! NEW +NCmax_p = 0.15d0 ! NEW for Phaeocystis (to be tuned) +SiCmax = 0.8d0 +NCuptakeRatio = 0.2d0 ! [mmol N/mmol C] Maximum uptake ratio of N:C +NCUptakeRatio_d = 0.2d0 +NCUptakeRatio_c = 0.2d0 ! NEW +NCUptakeRatio_p = 0.2d0 ! NEW for Phaeocystis +SiCUptakeRatio = 0.2d0 +k_din = 0.55d0 ! [mmol N/m3] Half-saturation constant for nitrate uptake +k_din_d = 1.0d0 +k_din_c = 0.9d0 ! NEW +k_din_p = 0.7d0 ! NEW for Phaeocystis (to be tuned) +Chl2N_max = 3.15d0 ! [mg CHL/mmol N] Maximum CHL a : N ratio = 0.3 gCHL gN^-1 +Chl2N_max_d = 4.2d0 +Chl2N_max_c = 3.5d0 ! NEW +Chl2N_max_p = 2.6d0 ! NEW for Phaeocystis +res_phy = 0.01d0 ! [1/day] Maintenance respiration rate constant +res_phy_d = 0.01d0 +res_phy_c = 0.01d0 ! NEW +res_phy_p = 0.01d0 ! NEW for phaeocystis +biosynth = 2.33d0 ! [mmol C/mmol N] Cost of biosynthesis +biosynthSi = 0.d0 +/ + +&pairon_chem +totalligand = 1.d0 ! [mumol/m3] order 1. Total free ligand +ligandStabConst = 100.d0 ! [m3/mumol] order 100. Ligand-free iron stability constant +/ + +&pazooplankton +graz_max = 0.31d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilonr = 0.09d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +res_het = 0.028d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +Redfield = 6.625 ! [mmol C/mmol N] Redfield ratio of C:N = 106:16 +loss_het = 0.04d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +pzDia = 1.0d0 !0.5d0 ! Maximum diatom preference ! NEW value for Phaeocystis +sDiaNsq = 0.d0 +pzPhy = 0.5d0 !0.04d0 !0.25d0 !1.0d0 ! Maximum nano-phytoplankton preference (NEW: 3/12) ! NEW value for Phaeocystis +sPhyNsq = 0.d0 +pzCocco = 0.666d0 !0.4d0 ! NEW (8/12) ! NEW value for Phaeocystis +sCoccoNsq = 0.d0 ! NEW +pzPhaeo = 0.5d0 ! NEW for Phaeocystis +sPhaeoNsq = 0.d0 ! NEW for Phaeocystis +pzMicZoo = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference +sMicZooNsq = 0.d0 ! NEW 3Zoo +tiny_het = 1.d-5 ! for more stable computation of HetRespFlux (_plus). Value can be > tiny because HetRespFlux ~ hetC**2. +/ + +&pasecondzooplankton +graz_max2 = 0.25d0 !0.1d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter ! NEW value for Phaeocystis +epsilon2 = 0.0144d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +res_zoo2 = 0.0107d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +loss_zoo2 = 0.003d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +fecal_rate_n = 0.104d0 ! [1/day] Temperature dependent N degradation of \ +fecal_rate_c = 0.236d0 +fecal_rate_n_mes = 0.25d0 ! NEW 3Zoo +fecal_rate_c_mes = 0.32d0 ! NEW 3Zoo +pzDia2 = 1.5d0 !1.0d0 ! Maximum diatom preference ! NEW value for Phaeocystis +sDiaNsq2 = 0.d0 +pzPhy2 = 0.5d0 !0.07d0 ! Maximum diatom preference ! NEW value for Phaeocystis +sPhyNsq2 = 0.d0 +pzCocco2 = 0.5d0 !0.7d0 ! NEW ! NEW value for Phaeocystis +sCoccoNsq2 = 0.d0 ! NEW +pzPhaeo2 = 0.5d0 ! NEW for Phaeocystis +sPhaeoNsq2 = 0.d0 ! NEW for Phaeocystis +pzHet = 1.5d0 !0.8d0 ! Maximum diatom preference +sHetNsq = 0.d0 +pzMicZoo2 = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference +sMicZooNsq2 = 0.d0 +t1_zoo2 = 28145.d0 ! Krill temp. function constant1 +t2_zoo2 = 272.5d0 ! Krill temp. function constant2 +t3_zoo2 = 105234.d0 ! Krill temp. function constant3 +t4_zoo2 = 274.15d0 ! Krill temp. function constant3 +/ + +&pathirdzooplankton +graz_max3 = 0.36d0 !0.46d0 ! NEW 3Zoo [mmol N/(m3 * day)] Maximum grazing loss parameter ! NEW value for Phaeocystis +epsilon3 = 0.64d0 ! NEW 3Zoo [(mmol N)2 /m6] Half saturation constant for grazing loss +loss_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Temperature dependent N degradation of extracellular organic N (EON) +res_miczoo = 0.01d0 !0.02d0 ! NEW 3Zoo [1/day] Respiration by heterotrophs and mortality (loss to detritus) ! NEW value for Phaeocystis +pzDia3 = 0.5d0 !0.04d0 ! NEW 3Zoo Maximum diatom preference ! NEW value for Phaeocystis +sDiaNsq3 = 0.d0 ! NEW 3Zoo +pzPhy3 = 1.0d0 !0.07d0 ! NEW 3Zoo Maximum nano-phytoplankton preference ! NEW value for Phaeocystis +sPhyNsq3 = 0.d0 ! NEW 3Zoo +pzCocco3 = 0.5d0 !0.7d0 ! NEW 3Zoo Maximum coccolithophore preference ! ATTENTION: This value needs to be tuned; I start with zero preference! ! NEW value for Phaeocystis +sCoccoNsq3 = 0.d0 ! NEW 3Zoo +pzPhaeo3 = 0.25d0 ! NEW for Phaeocystis +sPhaeoNsq3 = 0.d0 ! NEW for Phaeocystis +/ + +&pagrazingdetritus +pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton +sDetNsq = 0.d0 +pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton +sDetZ2Nsq = 0.d0 +pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton +sDetNsq2 = 0.d0 +pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton +sDetZ2Nsq2 = 0.d0 +/ + +&paaggregation +agg_PD = 0.165d0 ! [m3/(mmol N * day)] Maximum aggregation loss parameter for DetN +agg_PP = 0.015d0 ! [m3/(mmol N * day)] Maximum aggregation loss parameter for PhyN and DiaN (plankton) +/ + +&padin_rho_N +rho_N = 0.11d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) (Remineralization of DON) +/ + +&padic_rho_C1 +rho_C1 = 0.1d0 ! [1/day] Temperature dependent C degradation of extracellular organic C (EOC) +/ + +&paphytoplankton_N +lossN = 0.05d0 ! [1/day] Phytoplankton loss of organic N compounds +lossN_d = 0.05d0 +lossN_c = 0.05d0 ! NEW +lossN_p = 0.05d0 ! NEW for Phaeocystis +/ + +&paphytoplankton_C +lossC = 0.10d0 ! [1/day] Phytoplankton loss of carbon +lossC_d = 0.10d0 +lossC_c = 0.10d0 ! NEW +lossC_p = 0.10d0 ! NEW for Phaeocystis +/ + +&paphytoplankton_ChlA +deg_Chl = 0.15d0 !0.25d0 !0.2d0 ! NEW value for Phaeocystis ! [1/day] +deg_Chl_d = 0.2d0 ! 0.15d0 ! NEW value for Phaeocystis +deg_Chl_c = 0.2d0 ! NEW (has been 0.5) +deg_Chl_p = 0.15d0 ! NEW for Phaeocystis + +/ + +&padetritus_N +gfin = 0.3d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into zooplankton pool) +grazEff2 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into second zooplankton pool) +grazEff3 = 0.8d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) +reminN = 0.165d0 ! [1/day] Temperature dependent remineralisation rate of detritus +/ + +&padetritus_C +reminC = 0.15d0 ! [1/day] Temperature dependent remineralisation rate of detritus +rho_c2 = 0.1d0 ! [1/day] Temperature dependent C degradation of TEP-C +/ + +&paheterotrophs +lossN_z = 0.1d0 +lossC_z = 0.1d0 +/ + +&paseczooloss +lossN_z2 = 0.02d0 +lossC_z2 = 0.02d0 +/ + +&pathirdzooloss +lossN_z3 = 0.05d0 ! NEW 3Zoo +lossC_z3 = 0.05d0 ! NEW 3Zoo +/ + +&paco2lim ! NEW +Cunits = 976.5625 ! Conversion factor between [mol/m3] (model) and [umol/kg] (function): (1000 * 1000) / 1024 +a_co2_phy = 1.162e+00 ! [dimensionless] +a_co2_dia = 1.040e+00 ! [dimensionless] +a_co2_cocco = 1.109e+00 ! [dimensionless] +a_co2_phaeo = 1.162e+00 ! [dimensionless] Phaeocystis +a_co2_calc = 1.102e+00 ! [dimensionless] +b_co2_phy = 4.888e+01 ! [mol/kg] +b_co2_dia = 2.890e+01 ! [mol/kg] +b_co2_cocco = 3.767e+01 ! [mol/kg] +b_co2_phaeo = 4.888e+01 ! [mol/kg] Phaeocystis +b_co2_calc = 4.238e+01 ! [mol/kg] +c_co2_phy = 2.255e-01 ! [kg/mol] +c_co2_dia = 8.778e-01 ! [kg/mol] +c_co2_cocco = 3.912e-01 ! [kg/mol] +c_co2_phaeo = 2.255e-01 ! [kg/mol] Phaeocystis +c_co2_calc = 7.079e-01 ! [kg/mol] +d_co2_phy = 1.023e+07 ! [kg/mol] +d_co2_dia = 2.640e+06 ! [kg/mol] +d_co2_cocco = 9.450e+06 ! [kg/mol] +d_co2_phaeo = 1.023e+07 ! [kg/mol] Phaeocystis +d_co2_calc = 1.343e+07 ! [kg/mol] +/ + +&pairon +Fe2N = 0.033d0 ! Fe2C * 6.625 +Fe2N_benthos = 0.15d0 ! test, default was 0.14 Fe2C_benthos * 6.625 - will have to be tuned. [umol/m2/day] +kScavFe = 0.07d0 +dust_sol = 0.02d0 ! Dissolution of Dust for bioavaliable +RiverFeConc = 100 +/ + +&pacalc +calc_prod_ratio = 0.02 +calc_diss_guts = 0.5d0 !0.0d0 +calc_diss_rate = 0.005714d0 ! 20.d0/3500.d0 +calc_diss_rate2 = 0.005714d0 +calc_diss_omegac = 0.197d0 ! NEW DISS Value from Aumont et al. 2015, will be used with OmegaC_diss flag +calc_diss_exp = 1.d0 ! NEW DISS Exponent in the dissolution rate of calcite, will be used with OmegaC_diss flag +/ + +&pabenthos_decay_rate +decayRateBenN = 0.005d0 +decayRateBenC = 0.005d0 +decayRateBenSi = 0.005d0 +q_NC_Denit = 0.86d0 ! N:C quota of the denitrification process +/ + +&paco2_flux_param +permil = 0.000000976 ! 1.e-3/1024.5d0 ! Converting DIC from [mmol/m3] to [mol/kg] +permeg = 1.e-6 ! [atm/uatm] Changes units from uatm to atm +!X1 = exp(-5.d0*log(10.d0)) ! Lowest ph-value = 7.7 (phlo) +!X2 = exp(-9.d0*log(10.d0)) ! Highest ph-value = 9.5 (phhi) +Xacc = 1.e-12 ! Accuracy for ph-iteration (phacc) +CO2_for_spinup = 278.d0 ! [uatm] Atmospheric partial pressure of CO2 +/ + +&paalkalinity_restoring +surf_relax_Alk = 3.2e-07 !10.d0/31536000.d0 +/ + +&paballasting +rho_POC = 1033.d0 ! kg m-3; density of POC (see Table 1 in Cram et al., 2018) +rho_PON = 1033.d0 ! kg m-3; density of PON (see Table 1 in Cram et al., 2018) +rho_CaCO3 = 2830.d0 ! kg m-3; density of CaCO3 (see Table 1 in Cram et al., 2018) +rho_opal = 2090.d0 ! kg m-3; density of Opal (see Table 1 in Cram et al., 2018) +rho_ref_part = 1230.d0 ! kg m-3; reference particle density (see Cram et al., 2018) +rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram et al., 2018) +visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) +w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus +w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus +depth_scaling1 = 0.01d0 !5d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted +depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted +max_sinking_velocity = 250.d0 ! d-1; for numerical stability, set a maximum possible sinking velocity here (applies to both detritus classes) +/ + +&paciso +ciso_init = .false. ! initial fractionation of bulk organic matter +ciso_14 = .false. ! include inorganic radiocarbon +ciso_organic_14 = .false. ! include organic radiocarbon +lambda_14 = 3.8561e-12 ! corresponding to 1 year = 365.00 days +delta_CO2_13 = -6.61 ! atmospheric d13C (permil), global-mean value +big_delta_CO2_14(1) = 0. ! atmospheric D14C (permil), northern hemisphere polewards of 30°N +big_delta_CO2_14(2) = 0. ! atmospheric D14C (permil), (sub) tropical zone 30°N - 30°S +big_delta_CO2_14(3) = 0. ! atmospheric D14C (permil), southern hemisphere polewards of 30°S +atbox_spinup = .false. +cosmic_14_init = 2.0 +/ + diff --git a/config/bin_4p3z2d/namelist.tra b/config/bin_4p3z2d/namelist.tra new file mode 100644 index 000000000..7fd6837a2 --- /dev/null +++ b/config/bin_4p3z2d/namelist.tra @@ -0,0 +1,93 @@ +&tracer_listsize +num_tracers=100 !number of tracers to allocate. shallbe large or equal to the number of streams in &nml_list +/ + +&tracer_list +nml_tracer_list = +1 , 'MFCT', 'QR4C', 'FCT ', 1., 1., +2 , 'MFCT', 'QR4C', 'FCT ', 1., 1., +1001, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1002, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1003, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1004, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1005, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1006, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1007, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1008, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1009, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1010, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1011, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1012, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1013, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1014, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1015, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1016, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1017, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1018, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1019, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1020, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1021, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1022, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1023, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1024, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1025, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1026, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1027, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1028, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1029, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1030, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1031, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1032, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1033, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1034, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1035, 'MFCT', 'QR4C', 'FCT ', 1., 1., +1036, 'MFCT', 'QR4C', 'FCT ', 1., 1., +!101, 'UPW1', 'UPW1', 'NON ', 0., 0. +/ + +&tracer_init3d ! initial conditions for tracers +n_ic3d = 8 ! number of tracers to initialize +idlist = 1019, 1022, 1018, 1003, 1002, 1001, 2, 1 ! their IDs (0 is temperature, 1 is salinity, etc.). The reading order is defined here! +filelist = 'fe_pisces_opa_eq_init_3D_changed_name.nc', 'woa18_all_o00_01_mmol_fesom2.nc', 'woa13_all_i00_01_fesom2.nc', 'GLODAPv2.2016b.TAlk_fesom2_mmol_fix_z_Fillvalue.nc', 'GLODAPv2.2016b.TCO2_fesom2_mmol_fix_z_Fillvalue.nc', 'woa13_all_n00_01_fesom2.nc', 'phc3.0_winter.nc', 'phc3.0_winter.nc' ! list of files in ClimateDataPath to read (one file per tracer), same order as idlist +varlist = 'Fe', 'oxygen_mmol', 'i_an', 'TAlk_mmol', 'TCO2_mmol', 'n_an', 'salt', 'temp' ! variables to read from specified files +t_insitu = .true. ! if T is insitu it will be converted to potential after reading it +/ + +&tracer_init2d ! initial conditions for 2D tracers (sea ice) +n_ic2d = 3 ! number of tracers to initialize +idlist = 1, 2, 3 ! their IDs (0 is a_ice, 1 is m_ice, 3 m_snow). The reading order is defined here! +filelist = 'a_ice.nc', 'm_ice.nc', 'm_snow.nc' ! list of files in ClimateDataPath to read (one file per tracer), same order as idlist +varlist = 'a_ice', 'm_ice', 'm_snow' ! variables to read from specified files +ini_ice_from_file=.false. +/ + +&tracer_general +! bharmonic diffusion for tracers. We recommend to use this option in very high resolution runs (Redi is generally off there). +smooth_bh_tra =.false. ! use biharmonic diffusion (filter implementation) for tracers +gamma0_tra = 0.0005 ! gammaX_tra are analogous to those in the dynamical part +gamma1_tra = 0.0125 +gamma2_tra = 0. +i_vert_diff =.true. +/ + +&tracer_phys +use_momix = .true. ! switch on/off !Monin-Obukhov -> TB04 mixing +momix_lat = -50.0 ! latitidinal treshhold for TB04, =90 --> global +momix_kv = 0.01 ! PP/KPP, mixing coefficient within MO length +use_instabmix = .true. ! enhance convection in case of instable stratification +instabmix_kv = 0.1 +use_windmix = .false. ! enhance mixing trough wind only for PP mixing (for stability) +windmix_kv = 1.e-3 +windmix_nl = 2 +diff_sh_limit=5.0e-3 ! for KPP, max diff due to shear instability +Kv0_const=.true. +double_diffusion=.false. ! for KPP,dd switch +K_ver=1.0e-5 +K_hor=3000. +surf_relax_T=0.0 +surf_relax_S=1.929e-06 ! 50m/300days 6.43e-07! m/s 10./(180.*86400.) +balance_salt_water =.true. ! balance virtual-salt or freshwater flux or not +clim_relax=0.0 ! 1/s, geometrical information has to be supplied +ref_sss_local=.true. +ref_sss=34. +/ diff --git a/src/int_recom/recom/gasx.F90 b/src/int_recom/recom/gasx.F90 index bd5473527..c4d2d8b01 100755 --- a/src/int_recom/recom/gasx.F90 +++ b/src/int_recom/recom/gasx.F90 @@ -6,7 +6,7 @@ MODULE gasx !> Computes air-sea CO2 flux & surface-ocean carbonate system vars (pH, CO2*, HCO3- and CO32-, OmegaA, OmegaC, R) !! from T, S, P, ALK, DIC, total inorganic silicon, total inorganic phosphorus, all as 1-D arrays SUBROUTINE flxco2(co2flux, co2ex, dpco2, & - ph, pco2, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, & + ph, pco2, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, K0, & temp, sal, alk, dic, sil, phos, kw660, xco2, Patm, dz1, N, lon, lat, & optCON, optT, optP, optB, optK1K2, optKf, optGAS, optS ) ! Purpose: @@ -127,6 +127,8 @@ SUBROUTINE flxco2(co2flux, co2ex, dpco2, ! rhoSW = in-situ density of seawater; rhoSW = f(s, t, p) ! p = pressure [decibars]; p = f(depth, latitude) if computed from depth [m] OR p = depth if [db] ! tempis = in-situ temperature [degrees C] + ! K0 = CO2 solubility [(mol/kg) / atm] + #if USE_PRECISION == 2 # define SGLE(x) (x) @@ -237,10 +239,12 @@ SUBROUTINE flxco2(co2flux, co2ex, dpco2, REAL(kind=rx), INTENT(out), DIMENSION(N) :: p !> in-situ temperature \b [degrees C] REAL(kind=rx), INTENT(out), DIMENSION(N) :: tempis + !> K0, solubility of CO2 \b [(mol/kg) / atm] + REAL(kind=rx), INTENT(out), DIMENSION(N) :: K0 ! Local variables REAL(kind=r8) :: tk, invtk, dtemp - REAL(kind=r8) :: tmp, K0, co2star, co2starair, kwco2 + REAL(kind=r8) :: tmp, co2star, co2starair, kwco2 ! K0 REAL(kind=rx), DIMENSION(N) :: pCO2atm, fCO2atm REAL(kind=rx), DIMENSION(N) :: depth0, lat0 @@ -361,7 +365,7 @@ SUBROUTINE flxco2(co2flux, co2ex, dpco2, K0 = EXP( tmp + DBLE(salprac(i))*(0.023517d0 - 0.00023656d0*tk + 0.0047036e-4_r8*tk*tk) ) ! "Atmospheric" [CO2*], air-sea CO2 flux, sfc DIC rate of change, & Delta pCO2 - co2starair = K0 * DBLE(fco2atm(i)) * 1.0e-6_r8 * DBLE(rhoSW(i)) !Equil. [CO2*] for atm CO2 at Patm & sfc-water T,S [mol/m3] + co2starair = K0(i) * DBLE(fco2atm(i)) * 1.0e-6_r8 * DBLE(rhoSW(i)) !Equil. [CO2*] for atm CO2 at Patm & sfc-water T,S [mol/m3] co2star = DBLE(co2(i)) !Oceanic [CO2*] in [mol/m3] from vars.f90 co2flux(i) = SGLE(kwco2 * (co2starair - co2star)) !Air-sea CO2 flux [mol/(m2 * s)] ! the conversion from co2flux to impact on dic is done in recom_forcing/recom_sms diff --git a/src/int_recom/recom/vars.F90 b/src/int_recom/recom/vars.F90 index 2ef70defa..d20069a10 100755 --- a/src/int_recom/recom/vars.F90 +++ b/src/int_recom/recom/vars.F90 @@ -570,7 +570,7 @@ SUBROUTINE vars_sprac (ph, pco2, fco2, co2, hco3, co3, OmegaA, OmegaC, kspc_out, ! If Absolute salinity is given IF (trim(opS) == 'Sabs') THEN ! If in-situ or potential temperature is given - IF (trim(optT) /= 'Scsv') THEN + IF (trim(optT) /= 'Scsv') THEN !!!!!!!!! Is it a bug? OG 20.03.2025 Scsv -> Tcsv .OR. tcsv ! First compute conservative temperature tempcsv = gsw_ct_from_t (DBLE(ssal), tempis90, DBLE(p(i))) ELSE diff --git a/src/int_recom/recom_extra.F90 b/src/int_recom/recom_extra.F90 index eb9011cfd..20b4ebacf 100644 --- a/src/int_recom/recom_extra.F90 +++ b/src/int_recom/recom_extra.F90 @@ -27,7 +27,7 @@ subroutine Depth_calculations(n,Nn,wF,zF,thick,recipthick, partit, mesh) real(kind=8),dimension(mesh%nl-1), intent(out) :: thick ! [m] Distance between two nodes = thickness real(kind=8),dimension(mesh%nl-1), intent(out) :: recipthick ! [1/m] reciprocal of thickness - real(kind=8),dimension(mesh%nl,5), intent(out) :: wF ! [m/day] Velocities of fluxes at the border of the control volumes + real(kind=8),dimension(mesh%nl,6), intent(out) :: wF ! [m/day] Velocities of fluxes at the border of the control volumes Integer :: k, n ! Index for depth #include "../associate_part_def.h" @@ -55,6 +55,7 @@ subroutine Depth_calculations(n,Nn,wF,zF,thick,recipthick, partit, mesh) wF(2:Nn,ivdet) = VDet wF(2:Nn,ivdetsc) = VDet_zoo2 wF(2:Nn,ivcoc) = VCocco + wF(2:Nn,ivpha) = VPhaeo wF(1,:) = 0.d0 wF(Nn+1,:) = 0.d0 diff --git a/src/int_recom/recom_forcing.F90 b/src/int_recom/recom_forcing.F90 index 161fa1625..59bef0116 100644 --- a/src/int_recom/recom_forcing.F90 +++ b/src/int_recom/recom_forcing.F90 @@ -1,7 +1,7 @@ !=============================================================================== ! REcoM_Forcing !=============================================================================== -subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sali_depth & +subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp, Temp, Sali, Sali_depth & , CO2_watercolumn & , pH_watercolumn & , pCO2_watercolumn & @@ -66,7 +66,7 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal !!---- Subroutine Depth real(kind=8),dimension(mesh%nl) :: zF ! [m] Depth of fluxes - real(kind=8),dimension(mesh%nl,5) :: SinkVel ! [m/day] + real(kind=8),dimension(mesh%nl,6) :: SinkVel ! [m/day] real(kind=8),dimension(mesh%nl-1) :: thick ! [m] Vertical distance between two nodes = Thickness real(kind=8),dimension(mesh%nl-1) :: recipthick ! [1/m] reciprocal of thick @@ -111,8 +111,11 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal tiny_Si = tiny_C_d/SiCmax ! SiCmax = 0.8d0 #if defined (__coccos) - tiny_N_c = tiny_chl/chl2N_max_c ! 0.00001/ 3.5d0 + tiny_N_c = tiny_chl/chl2N_max_c ! 0.00001/ 3.5d0 tiny_C_c = tiny_N_c/NCmax_c ! NCmax_c = 0.15d0 + + tiny_N_p = tiny_chl/chl2N_max_p ! 0.00001/ 3.5d0 + tiny_C_p = tiny_N_p/NCmax_p ! NCmax_c = 0.15d0 #endif call Cobeta(partit, mesh) @@ -183,7 +186,7 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal endif call flxco2(co2flux, co2ex, dpco2surf, & - ph, pco2surf, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, & + ph, pco2surf, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, K0, & REcoM_T, REcoM_S, REcoM_Alk, REcoM_DIC, REcoM_Si, REcoM_Phos, kw660, LocAtmCO2, Patm, thick(One), Nmocsy, Lond,Latd, & optCON='mol/m3',optT='Tpot ',optP='m ',optB='u74',optK1K2='l ',optKf='dg',optGAS='Pinsitu',optS='Sprc') @@ -263,6 +266,10 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal state(1:nn,icchl) = max(tiny_chl,state(1:nn,icchl)) state(1:nn,icocn) = max(tiny_N_c,state(1:nn,icocn)) state(1:nn,icocc) = max(tiny_C_c,state(1:nn,icocc)) + + state(1:nn,iphachl) = max(tiny_chl,state(1:nn,iphachl)) + state(1:nn,iphan) = max(tiny_N_p,state(1:nn,iphan)) + state(1:nn,iphac) = max(tiny_C_p,state(1:nn,iphac)) #endif #if defined (__3Zoo2Det) @@ -344,6 +351,11 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal locGPPc = sum(vertGPPc(1:nn) * thick(1:nn)) locNNAc = sum(vertNNAc(1:nn) * thick(1:nn)) locChldegc = sum(vertChldegc(1:nn) * thick(1:nn)) + + locNPPp = sum(vertNPPp(1:nn) * thick(1:nn)) + locGPPp = sum(vertGPPp(1:nn) * thick(1:nn)) + locNNAp = sum(vertNNAp(1:nn) * thick(1:nn)) + locChldegp = sum(vertChldegp(1:nn) * thick(1:nn)) #endif end if diff --git a/src/int_recom/recom_init.F90 b/src/int_recom/recom_init.F90 index e2b45b0ab..6e084c63b 100644 --- a/src/int_recom/recom_init.F90 +++ b/src/int_recom/recom_init.F90 @@ -148,28 +148,36 @@ subroutine recom_init(tracers, partit, mesh) allocate(NPPn ( node_size )) allocate(NPPd ( node_size )) allocate(NPPc ( node_size )) + allocate(NPPp ( node_size )) allocate(GPPn ( node_size )) allocate(GPPd ( node_size )) allocate(GPPc ( node_size )) + allocate(GPPp ( node_size )) allocate(NNAn ( node_size )) allocate(NNAd ( node_size )) allocate(NNAc ( node_size )) + allocate(NNAp ( node_size )) allocate(Chldegn ( node_size )) allocate(Chldegd ( node_size )) allocate(Chldegc ( node_size )) + allocate(Chldegp ( node_size )) NPPn = 0.d0 NPPd = 0.d0 NPPc = 0.d0 + NPPp = 0.d0 GPPn = 0.d0 GPPd = 0.d0 GPPc = 0.d0 + GPPp = 0.d0 NNAn = 0.d0 NNAd = 0.d0 NNAc = 0.d0 + NNAp = 0.d0 Chldegn = 0.d0 Chldegd = 0.d0 Chldegc = 0.d0 + Chldegp = 0.d0 !! *** Allocate 3D diagnostics *** allocate(respmeso ( nl-1, node_size )) @@ -180,15 +188,19 @@ subroutine recom_init(tracers, partit, mesh) allocate(aggn ( nl-1, node_size )) allocate(aggd ( nl-1, node_size )) allocate(aggc ( nl-1, node_size )) + allocate(aggp ( nl-1, node_size )) allocate(docexn ( nl-1, node_size )) allocate(docexd ( nl-1, node_size )) allocate(docexc ( nl-1, node_size )) + allocate(docexp ( nl-1, node_size )) allocate(respn ( nl-1, node_size )) allocate(respd ( nl-1, node_size )) allocate(respc ( nl-1, node_size )) + allocate(respp ( nl-1, node_size )) allocate(NPPn3D ( nl-1, node_size )) allocate(NPPd3D ( nl-1, node_size )) allocate(NPPc3D ( nl-1, node_size )) + allocate(NPPp3D ( nl-1, node_size )) respmeso = 0.d0 respmacro = 0.d0 @@ -198,15 +210,78 @@ subroutine recom_init(tracers, partit, mesh) aggn = 0.d0 aggd = 0.d0 aggc = 0.d0 + aggp = 0.d0 docexn = 0.d0 docexd = 0.d0 docexc = 0.d0 + docexp = 0.d0 respn = 0.d0 respd = 0.d0 respc = 0.d0 + respp = 0.d0 NPPn3D = 0.d0 NPPd3D = 0.d0 NPPc3D = 0.d0 + NPPp3D = 0.d0 + +!! From Hannahs new temperature function (not sure if needed as diagnostic): + + allocate(TTemp_diatoms (nl-1,node_size)) + allocate(TTemp_phyto (nl-1,node_size)) + allocate(TTemp_cocco (nl-1,node_size)) + allocate(TTemp_phaeo (nl-1,node_size)) + + TTemp_diatoms (:,:) = 0.d0 + TTemp_phyto (:,:) = 0.d0 + TTemp_cocco (:,:) = 0.d0 + TTemp_phaeo (:,:) = 0.d0 + + allocate(TPhyCO2 (nl-1,node_size)) + allocate(TDiaCO2 (nl-1,node_size)) + allocate(TCoccoCO2 (nl-1,node_size)) + allocate(TPhaeoCO2 (nl-1,node_size)) + + TPhyCO2 (:,:) = 0.d0 + TDiaCO2 (:,:) = 0.d0 + TCoccoCO2 (:,:) = 0.d0 + TPhaeoCO2 (:,:) = 0.d0 + + allocate(TqlimitFac_phyto (nl-1,node_size)) + allocate(TqlimitFac_diatoms (nl-1,node_size)) + allocate(TqlimitFac_cocco (nl-1,node_size)) + allocate(TqlimitFac_phaeo (nl-1,node_size)) + + TqlimitFac_phyto (:,:) = 0.d0 + TqlimitFac_diatoms (:,:) = 0.d0 + TqlimitFac_cocco (:,:) = 0.d0 + TqlimitFac_phaeo (:,:) = 0.d0 + + + allocate(TCphotLigLim_diatoms (nl-1,node_size)) + allocate(TCphotLigLim_phyto (nl-1,node_size)) + allocate(TCphotLigLim_cocco (nl-1,node_size)) + allocate(TCphotLigLim_phaeo (nl-1,node_size)) + + + TCphotLigLim_diatoms (:,:) = 0.d0 + TCphotLigLim_phyto (:,:) = 0.d0 + TCphotLigLim_cocco (:,:) = 0.d0 + TCphotLigLim_phaeo (:,:) = 0.d0 + + allocate(TCphot_diatoms (nl-1,node_size)) + allocate(TCphot_phyto (nl-1,node_size)) + allocate(TCphot_cocco (nl-1,node_size)) + allocate(TCphot_phaeo (nl-1,node_size)) + + TCphot_diatoms (:,:) = 0.d0 + TCphot_phyto (:,:) = 0.d0 + TCphot_cocco (:,:) = 0.d0 + TCphot_phaeo (:,:) = 0.d0 + + allocate(TSi_assimDia (nl-1,node_size)) + + TSi_assimDia (:,:) = 0.d0 + end if !! *** Allocate 3D mocsy *** @@ -321,7 +396,7 @@ subroutine recom_init(tracers, partit, mesh) tracers%data(i)%values(:,:) = tiny ! DetCalc ! ******************* -! CASE 2phy 2zoo 2det +! CASE 2phy 3zoo 2det ! ******************* #if defined (__3Zoo2Det) CASE (1023) @@ -339,7 +414,7 @@ subroutine recom_init(tracers, partit, mesh) #endif ! ******************* -! CASE 3phy 2zoo 2det +! CASE 4phy 3zoo 2det ! ******************* #if defined (__coccos) & defined (__3Zoo2Det) CASE (1029) @@ -351,8 +426,19 @@ subroutine recom_init(tracers, partit, mesh) CASE (1031) tracers%data(i)%values(:,:) = tiny_chl ! CoccoChl + CASE (1032) + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! PhaeoN + + CASE (1033) + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! PhaeoC + + CASE (1034) + tracers%data(i)%values(:,:) = tiny_chl ! PhaeoChl + + + ! ******************* -! CASE 3phy 1zoo 1det +! CASE 4phy 1zoo 1det ! ******************* #elif defined (__coccos) & !defined (__3Zoo2Det) CASE (1023) @@ -364,16 +450,25 @@ subroutine recom_init(tracers, partit, mesh) CASE (1025) tracers%data(i)%values(:,:) = tiny_chl ! CoccoChl + CASE (1026) + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! PhaeoN + + CASE (1027) + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! PhaeoC + + CASE (1028) + tracers%data(i)%values(:,:) = tiny_chl ! PhaeoChl + #endif ! ******************* -! CASE 3phy 3zoo 2det +! CASE 4phy 3zoo 2det ! ******************* #if defined (__coccos) & defined (__3Zoo2Det) - CASE (1032) + CASE (1035) tracers%data(i)%values(:,:) = tiny ! Zoo3N - CASE (1033) + CASE (1036) tracers%data(i)%values(:,:) = tiny * Redfield ! Zoo3C #elif !defined (__coccos) & defined (__3Zoo2Det) diff --git a/src/int_recom/recom_main.F90 b/src/int_recom/recom_main.F90 index cf9a7d95a..ab65473f6 100755 --- a/src/int_recom/recom_main.F90 +++ b/src/int_recom/recom_main.F90 @@ -94,7 +94,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) real(kind=8) :: SW, Loc_slp integer :: tr_num, num_tracers - integer :: nz, n, nzmin, nzmax, nu1, nl1 + integer :: nz, n, nzmin, nzmax integer :: idiags real(kind=8) :: Sali @@ -290,11 +290,61 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) vertrespn = 0.d0 vertrespd = 0.d0 + allocate(VTTemp_diatoms(nl-1), VTTemp_phyto(nl-1)) + VTTemp_diatoms = 0.d0 + VTTemp_phyto = 0.d0 + + allocate(VTPhyCO2(nl-1), VTDiaCO2(nl-1)) + VTPhyCO2 = 0.d0 + VTDiaCO2 = 0.d0 + + allocate(VTqlimitFac_phyto(nl-1), VTqlimitFac_diatoms(nl-1)) + VTqlimitFac_phyto = 0.d0 + VTqlimitFac_diatoms = 0.d0 + + allocate(VTCphotLigLim_phyto(nl-1), VTCphotLigLim_diatoms(nl-1)) + VTCphotLigLim_phyto = 0.d0 + VTCphotLigLim_diatoms = 0.d0 + + allocate(VTCphot_phyto(nl-1), VTCphot_diatoms(nl-1)) + VTCphot_phyto = 0.d0 + VTCphot_diatoms = 0.d0 + + allocate(VTSi_assimDia(nl-1)) + VTSi_assimDia = 0.d0 + #if defined (__coccos) allocate(vertaggc(nl-1), vertdocexc(nl-1), vertrespc(nl-1)) vertaggc = 0.d0 vertdocexc = 0.d0 vertrespc = 0.d0 + + allocate(vertaggp(nl-1), vertdocexp(nl-1), vertrespp(nl-1)) ! Phaeocystis + vertaggp = 0.d0 + vertdocexp = 0.d0 + vertrespp = 0.d0 + + allocate(VTTemp_cocco(nl-1), VTTemp_phaeo(nl-1)) + VTTemp_cocco = 0.d0 + VTTemp_phaeo = 0.d0 + + allocate(VTCoccoCO2(nl-1), VTPhaeoCO2(nl-1)) + VTCoccoCO2 = 0.d0 + VTPhaeoCO2 = 0.d0 + + allocate(VTqlimitFac_cocco(nl-1), VTqlimitFac_phaeo(nl-1)) + VTqlimitFac_cocco = 0.d0 + VTqlimitFac_phaeo = 0.d0 + + allocate(VTCphotLigLim_cocco(nl-1), VTCphotLigLim_phaeo(nl-1)) + VTCphotLigLim_cocco = 0.d0 + VTCphotLigLim_phaeo = 0.d0 + + allocate(VTCphot_cocco(nl-1), VTCphot_phaeo(nl-1)) + VTCphot_cocco = 0.d0 + VTCphot_phaeo = 0.d0 + + #endif !! * Allocate 2D diagnostics * @@ -315,7 +365,13 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) vertNPPc = 0.d0 vertGPPc = 0.d0 vertNNAc = 0.d0 - vertChldegc = 0.d0 + vertChldegc = 0.d0 + + allocate(vertNPPp(nl-1), vertGPPp(nl-1), vertNNAp(nl-1), vertChldegp(nl-1)) + vertNPPp = 0.d0 + vertGPPp = 0.d0 + vertNNAp = 0.d0 + vertChldegp = 0.d0 #endif end if @@ -323,7 +379,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) ! ====================================================================================== !******************************** RECOM FORCING **************************************** - call REcoM_Forcing(zr, n, nzmax, C, SW, Loc_slp , Temp, Sali, Sali_depth & + call REcoM_Forcing(zr, n, nzmax, C, SW, Loc_slp, Temp, Sali, Sali_depth & , CO2_watercolumn & ! NEW MOCSY CO2 for the whole watercolumn , pH_watercolumn & ! NEW MOCSY pH for the whole watercolumn , pCO2_watercolumn & ! NEW MOCSY pCO2 for the whole watercolumn @@ -357,16 +413,23 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) !! * Update 2D diagnostics * NPPn(n) = locNPPn NPPd(n) = locNPPd - NPPc(n) = locNPPc GPPn(n) = locGPPn GPPd(n) = locGPPd - GPPc(n) = locGPPc NNAn(n) = locNNAn NNAd(n) = locNNAd - NNAc(n) = locNNAc Chldegn(n) = locChldegn Chldegd(n) = locChldegd + +#if defined (__coccos) + NPPc(n) = locNPPc + GPPc(n) = locGPPc + NNAc(n) = locNNAc Chldegc(n) = locChldegc + NPPp(n) = locNPPp + GPPp(n) = locGPPp + NNAp(n) = locNNAp + Chldegp(n) = locChldegp +#endif !! * Update 3D diagnostics * respmeso (1:nzmax,n) = vertrespmeso (1:nzmax) @@ -387,11 +450,43 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) respd (1:nzmax,n) = vertrespd (1:nzmax) NPPd3D (1:nzmax,n) = vertNPPd (1:nzmax) + TTemp_phyto (1:nzmax,n) = VTTemp_phyto (1:nzmax) + TPhyCO2 (1:nzmax,n) = VTPhyCO2 (1:nzmax) + TqlimitFac_phyto (1:nzmax,n) = VTqlimitFac_phyto (1:nzmax) + TCphotLigLim_phyto (1:nzmax,n) = VTCphotLigLim_phyto (1:nzmax) + TCphot_phyto (1:nzmax,n) = VTCphot_phyto (1:nzmax) + + TTemp_diatoms (1:nzmax,n) = VTTemp_diatoms (1:nzmax) !! NEW from here tracking vars + TDiaCO2 (1:nzmax,n) = VTDiaCO2 (1:nzmax) + TqlimitFac_diatoms (1:nzmax,n) = VTqlimitFac_diatoms (1:nzmax) + TCphotLigLim_diatoms(1:nzmax,n) = VTCphotLigLim_diatoms (1:nzmax) + TCphot_diatoms (1:nzmax,n) = VTCphot_diatoms (1:nzmax) + + TSi_assimDia (1:nzmax,n) = VTSi_assimDia (1:nzmax) + #if defined (__coccos) aggc (1:nzmax,n) = vertaggc (1:nzmax) docexc (1:nzmax,n) = vertdocexc (1:nzmax) respc (1:nzmax,n) = vertrespc (1:nzmax) NPPc3D (1:nzmax,n) = vertNPPc (1:nzmax) + + aggp (1:nzmax,n) = vertaggp (1:nzmax) + docexp (1:nzmax,n) = vertdocexp (1:nzmax) + respp (1:nzmax,n) = vertrespp (1:nzmax) + NPPp3D (1:nzmax,n) = vertNPPp (1:nzmax) + + TTemp_cocco (1:nzmax,n) = VTTemp_cocco (1:nzmax) + TCoccoCO2 (1:nzmax,n) = VTCoccoCO2 (1:nzmax) + TqlimitFac_cocco (1:nzmax,n) = VTqlimitFac_cocco (1:nzmax) + TCphotLigLim_cocco (1:nzmax,n) = VTCphotLigLim_cocco (1:nzmax) + TCphot_cocco (1:nzmax,n) = VTCphot_cocco (1:nzmax) + + TTemp_phaeo (1:nzmax,n) = VTTemp_phaeo (1:nzmax) + TPhaeoCO2 (1:nzmax,n) = VTPhaeoCO2 (1:nzmax) + TqlimitFac_phaeo (1:nzmax,n) = VTqlimitFac_phaeo (1:nzmax) + TCphotLigLim_phaeo (1:nzmax,n) = VTCphotLigLim_phaeo (1:nzmax) + TCphot_phaeo (1:nzmax,n) = VTCphot_phaeo (1:nzmax) + #endif if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> ciso after REcoM_Forcing'//achar(27)//'[0m' @@ -400,8 +495,9 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) deallocate(vertNPPn, vertGPPn, vertNNAn, vertChldegn) deallocate(vertNPPd, vertGPPd, vertNNAd, vertChldegd) #if defined (__coccos) - deallocate(vertNPPc, vertGPPc, vertNNAc, vertChldegc) -#endif + deallocate(vertNPPc,vertGPPc,vertNNAc,vertChldegc) + deallocate(vertNPPp,vertGPPp,vertNNAp,vertChldegp) +#endif !! * Deallocating 3D Diagnostics * deallocate(vertrespmeso) @@ -411,9 +507,19 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) deallocate(vertcalcdiss, vertcalcif) deallocate(vertaggn, vertdocexn, vertrespn) deallocate(vertaggd, vertdocexd, vertrespd) + + deallocate(VTTemp_phyto, VTPhyCO2, VTqlimitFac_phyto, VTCphotLigLim_phyto, VTCphot_phyto) ! NEW + deallocate(VTTemp_diatoms, VTDiaCO2, VTqlimitFac_diatoms, VTCphotLigLim_diatoms, VTCphot_diatoms) + + deallocate(VTSi_assimDia) + #if defined (__coccos) -! deallocate(vertgrazmeso_c) deallocate(vertaggc, vertdocexc, vertrespc) + deallocate(vertaggp, vertdocexp, vertrespp) + + deallocate(VTTemp_cocco, VTCoccoCO2, VTqlimitFac_cocco, VTCphotLigLim_cocco, VTCphot_cocco) + deallocate(VTTemp_phaeo, VTPhaeoCO2, VTqlimitFac_phaeo, VTCphotLigLim_phaeo, VTCphot_phaeo) + #endif end if @@ -491,6 +597,10 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) call exchange_nod(GPPc, partit) call exchange_nod(NNAc, partit) call exchange_nod(Chldegc, partit) + call exchange_nod(NPPp, partit) + call exchange_nod(GPPp, partit) + call exchange_nod(NNAp, partit) + call exchange_nod(Chldegp, partit) #endif endif diff --git a/src/int_recom/recom_modules.F90 b/src/int_recom/recom_modules.F90 index c4113377c..73c6e7b6a 100644 --- a/src/int_recom/recom_modules.F90 +++ b/src/int_recom/recom_modules.F90 @@ -40,22 +40,24 @@ module recom_config #if defined (__coccos) & defined (__3Zoo2Det) ! ******************* -! CASE 3phy 2zoo 2det +! CASE 4phy 2zoo 2det ! ******************* Integer :: icocn = 29, icocc = 30, icchl = 31 + Integer :: iphan = 32, iphac = 33, iphachl = 34 #elif defined (__coccos) & !defined (__3Zoo2Det) ! ******************* -! CASE 3phy 1zoo 1det +! CASE 4phy 1zoo 1det ! ******************* Integer :: icocn = 23, icocc = 24, icchl = 25 + Integer :: iphan = 26, iphac = 27, iphachl = 28 #endif #if defined (__coccos) & defined (__3Zoo2Det) ! ******************* -! CASE 3phy 3zoo 2det +! CASE 4phy 3zoo 2det ! ******************* - Integer :: imiczoon = 32, imiczooc = 33 + Integer :: imiczoon = 35, imiczooc = 36 #elif !defined (__coccos) & defined (__3Zoo2Det) ! ******************* @@ -66,7 +68,7 @@ module recom_config !============================================================================= - Integer :: ivphy = 1, ivdia = 2, ivdet = 3, ivdetsc = 4, ivcoc = 5 + Integer :: ivphy = 1, ivdia = 2, ivdet = 3, ivdetsc = 4, ivcoc = 5, ivpha = 6 !============================================================================= @@ -74,9 +76,10 @@ module recom_config ! OG ! Todo: Make recom_sinking_tracer_id case sensitive - integer, dimension(29) :: recom_sinking_tracer_id = (/1007, 1008, 1017, 1021, 1004, 1005, 1020, 1006, & + integer, dimension(32) :: recom_sinking_tracer_id = (/1007, 1008, 1017, 1021, 1004, 1005, 1020, 1006, & 1013, 1014, 1016, 1015, 1025, 1026, 1027, 1028, & 1029, 1030, 1031, & + 1032, 1033, 1034, & 1308, 1321, 1305, 1320, & 1314, 1408, 1421, 1405, 1420, 1414/) integer, dimension(8) :: recom_det_tracer_id = (/1007, 1008, 1017, 1021, 1308, 1321, 1408, 1421/) @@ -85,9 +88,12 @@ module recom_config #if defined (__coccos) & defined (__3Zoo2Det) integer, dimension(3) :: recom_cocco_tracer_id = (/1029, 1030, 1031/) + integer, dimension(3) :: recom_phaeo_tracer_id = (/1032, 1033, 1034/) + #elif defined (__coccos) & !defined (__3Zoo2Det) integer, dimension(3) :: recom_cocco_tracer_id = (/1023, 1024, 1025/) + integer, dimension(3) :: recom_phaeo_tracer_id = (/1026, 1027, 1028/) #endif #if defined (__3Zoo2Det) @@ -109,14 +115,15 @@ module recom_config Logical :: use_REcoM = .true. Logical :: REcoM_restart = .false. - Integer :: bgc_num = 33 ! NEW increased the number from 28 to 34 (added coccos and respiration) ! NEW 3Zoo changed from 31 to 33 + Integer :: bgc_num = 36 ! NEW increased the number from 28 to 34 (added coccos and respiration) ! NEW 3Zoo changed from 31 to 33 ! added phaeocystis: changed from 33 to 36 integer :: bgc_base_num = 22 ! standard tracers - Integer :: diags3d_num = 28 ! Number of diagnostic 3d tracers to be saved + Integer :: diags3d_num = 31 ! Number of diagnostic 3d tracers to be saved Real(kind=8) :: VDet = 20.d0 ! Sinking velocity, constant through the water column and positive downwards Real(kind=8) :: VDet_zoo2 = 200.d0 ! Sinking velocity, constant through the water column Real(kind=8) :: VPhy = 0.d0 !!! If the number of sinking velocities are different from 3, code needs to be changed !!! Real(kind=8) :: VDia = 0.d0 Real(kind=8) :: VCocco = 0.d0 ! NEW + Real(kind=8) :: VPhaeo = 0.d0 ! Phaeocystis Logical :: allow_var_sinking = .true. Integer :: biostep = 1 ! Number of times biology should be stepped forward for each time step Logical :: REcoM_Geider_limiter = .false. ! Decides what routine should be used to calculate limiters in sms @@ -168,6 +175,7 @@ module recom_config bgc_num, diags3d_num, bgc_base_num, & VDet, VDet_zoo2, & VPhy, VDia, VCocco, & + VPhaeo, & allow_var_sinking, biostep, REcoM_Geider_limiter, & REcoM_Grazing_Variable_Preference, & Grazing_detritus, & @@ -201,13 +209,31 @@ module recom_config namelist /painitialization_N/ cPhyN, cHetN, cZoo2N !!------------------------------------------------------------------------------ -!! *** Arrhenius function *** +!! *** Temperature and Arrhenius functions *** Real(kind=8) :: recom_Tref = 288.15d0 ! [K] Real(kind=8) :: C2K = 273.15d0 ! Conversion from degrees C to K Real(kind=8) :: Ae = 4500.d0 ! [K] Slope of the linear part of the Arrhenius function + +!! *** Temperature variables for Blanchard function *** + Real(kind=8) :: Tmax_phaeo = 16d0 ! [degC] For Blanchard temp fxn: maximum temperature + Real(kind=8) :: Topt_phaeo = 7.5272d0 ! [degC] For Blanchard temp fxn: optimum temperature + Real(kind=8) :: uopt_phaeo = 0.7328d0 ! [1/day] For Blanchard function: optimum growth date + Real(kind=8) :: beta_phaeo = 0.7829d0 ! [unitless] For Blanchard function + +! NEW MODIFIED parameters + Real(kind=8) :: ord_d = -0.2216d0 ! parameters for diatom temperature function + Real(kind=8) :: expon_d = 0.0406d0 ! diatom exponent + Real(kind=8) :: ord_phy = -1.2154d0 ! small phyto ordonnee + Real(kind=8) :: expon_phy = 0.0599d0 ! small phyto exponent + Real(kind=8) :: ord_cocco = -0.2310d0 ! coccolith ordonnee + Real(kind=8) :: expon_cocco = 0.0327d0 ! small phyto ordonnee + Real(kind=8) :: ord_phaeo = -0.2310d0 ! phaeocystis ordonnee + Real(kind=8) :: expon_phaeo = 0.0327d0 ! phaeocystis ordonnee + Real(kind=8) :: reminSi = 0.02d0 Real(kind=8) :: k_o2_remin = 15.d0 ! NEW O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 - namelist /paArrhenius/ recom_Tref, C2K, Ae, reminSi, k_o2_remin + namelist /paArrhenius/ recom_Tref, C2K, Ae, Tmax_phaeo, Topt_phaeo, uopt_phaeo, beta_phaeo, ord_d, expon_d, ord_phy, expon_phy, ord_cocco, expon_cocco, ord_phaeo, expon_phaeo, reminSi, k_o2_remin + !!------------------------------------------------------------------------------ !! *** For limiter function *** Real(kind=8) :: NMinSlope = 50.d0 @@ -215,15 +241,19 @@ module recom_config Real(kind=8) :: NCmin = 0.04d0 Real(kind=8) :: NCmin_d = 0.04d0 Real(kind=8) :: NCmin_c = 0.04d0 ! NEW + Real(kind=8) :: NCmin_p = 0.04d0 ! Phaeocystis Real(kind=8) :: SiCmin = 0.04d0 Real(kind=8) :: k_Fe = 0.04d0 Real(kind=8) :: k_Fe_d = 0.12d0 Real(kind=8) :: k_Fe_c = 0.04 ! NEW + Real(kind=8) :: k_Fe_p = 0.09 ! Phaeocystis (to be tuned) Real(kind=8) :: k_si = 4.d0 Real(kind=8) :: P_cm = 3.0d0 ! [1/day] the rate of C-specific photosynthesis Real(kind=8) :: P_cm_d = 3.5d0 Real(kind=8) :: P_cm_c = 3.3d0 ! NEW - namelist /palimiter_function/ NMinSlope, SiMinSlope, NCmin, NCmin_d, NCmin_c, SiCmin, k_Fe, k_Fe_d, k_Fe_c, k_si, P_cm, P_cm_d, P_cm_c + Real(kind=8) :: P_cm_p = 3.4d0 ! NEW for Phaeocystis ( to be tuned) + namelist /palimiter_function/ NMinSlope, SiMinSlope, NCmin, NCmin_d, NCmin_c, NCmin_p, SiCmin, k_Fe, k_Fe_d, k_Fe_c, k_Fe_p, k_si, P_cm, P_cm_d, P_cm_c, P_cm_p + !!------------------------------------------------------------------------------ !! *** For light calculations *** Real(kind=8) :: k_w = 0.04d0 ! [1/m] Light attenuation coefficient @@ -231,40 +261,47 @@ module recom_config namelist /palight_calculations/ k_w, a_chl !!------------------------------------------------------------------------------ !! *** Photosynthesis *** - Real(kind=8) :: alfa = 0.14d0 ! [(mmol C*m2)/(mg Chl*W*day)] + Real(kind=8) :: alfa = 0.14d0 ! [(mmol C*m2)/(mg Chl*W*day)] Real(kind=8) :: alfa_d = 0.19d0 ! An initial slope of the P-I curve Real(kind=8) :: alfa_c = 0.10d0 ! NEW + Real(kind=8) :: alfa_p = 0.10d0 ! Phaeocystis (to be tuned) Real(kind=8) :: parFrac = 0.43d0 - namelist /paphotosynthesis/ alfa, alfa_d, alfa_c, parFrac + namelist /paphotosynthesis/ alfa, alfa_d, alfa_c, alfa_p, parFrac !!------------------------------------------------------------------------------ !! *** Assimilation *** Real(kind=8) :: V_cm_fact = 0.7d0 ! scaling factor for temperature dependent maximum of C-specific N-uptake Real(kind=8) :: V_cm_fact_d = 0.7d0 - Real(kind=8) :: V_cm_fact_c = 0.7d0 ! NEW + Real(kind=8) :: V_cm_fact_c = 0.7d0 ! NEW + Real(kind=8) :: V_cm_fact_p = 0.7d0 ! Phaeocystis Real(kind=8) :: NMaxSlope = 1000.d0 ! Max slope for limiting function Real(kind=8) :: SiMaxSlope = 1000.d0 Real(kind=8) :: NCmax = 0.2d0 ! [mmol N/mmol C] Maximum cell quota of nitrogen (N:C) Real(kind=8) :: NCmax_d = 0.2d0 Real(kind=8) :: NCmax_c = 0.15d0 ! NEW + Real(kind=8) :: NCmax_p = 0.1d0 ! Phaeocystis (to be tuned) Real(kind=8) :: SiCmax = 0.8d0 Real(kind=8) :: NCuptakeRatio = 0.2d0 ! [mmol N/mmol C] Maximum uptake ratio of N:C Real(kind=8) :: NCUptakeRatio_d = 0.2d0 Real(kind=8) :: NCUptakeRatio_c = 0.2d0 ! NEW + Real(kind=8) :: NCUptakeRatio_p = 0.2d0 ! Phaeocystis Real(kind=8) :: SiCUptakeRatio = 0.2d0 Real(kind=8) :: k_din = 0.55d0 ! [mmol N/m3] Half-saturation constant for nitrate uptake Real(kind=8) :: k_din_d = 1.0d0 Real(kind=8) :: k_din_c = 0.55d0 ! NEW + Real(kind=8) :: k_din_p = 0.55d0 ! Phaeocystis (to be tuned) Real(kind=8) :: Chl2N_max = 3.15d0 ! [mg CHL/mmol N] Maximum CHL a : N ratio = 0.3 gCHL gN^-1 Real(kind=8) :: Chl2N_max_d = 4.2d0 Real(kind=8) :: Chl2N_max_c = 3.5d0 ! NEW + Real(kind=8) :: Chl2N_max_p = 3.5d0 ! Phaeocystis (to be tuned (?)) Real(kind=8) :: res_phy = 0.01d0 ! [1/day] Maintenance respiration rate constant Real(kind=8) :: res_phy_d = 0.01d0 Real(kind=8) :: res_phy_c = 0.0075d0 ! NEW + Real(kind=8) :: res_phy_p = 0.008d0 ! Phaeocystis (to be tuned (?)) Real(kind=8) :: biosynth = 2.33d0 ! [mmol C/mmol N] Cost of biosynthesis Real(kind=8) :: biosynthSi = 0.d0 - namelist /paassimilation/ V_cm_fact, V_cm_fact_d, V_cm_fact_c, NMaxSlope, SiMaxSlope, NCmax, NCmax_d, NCmax_c, SiCmax, & - NCuptakeRatio, NCUptakeRatio_d, NCUptakeRatio_c, SiCUptakeRatio, k_din, k_din_d, k_din_c, & - Chl2N_max, Chl2N_max_d, Chl2N_max_c, res_phy, res_phy_d, res_phy_c, biosynth, biosynthSi + namelist /paassimilation/ V_cm_fact, V_cm_fact_d, V_cm_fact_c, V_cm_fact_p, NMaxSlope, SiMaxSlope, NCmax, NCmax_d, NCmax_c, NCmax_p, SiCmax, & + NCuptakeRatio, NCUptakeRatio_d, NCUptakeRatio_c, NCUptakeRatio_p, SiCUptakeRatio, k_din, k_din_d, k_din_c, k_din_p, & + Chl2N_max, Chl2N_max_d, Chl2N_max_c, Chl2N_max_p, res_phy, res_phy_d, res_phy_c, res_phy_p, biosynth, biosynthSi !!------------------------------------------------------------------------------ !! *** Iron chemistry *** Real(kind=8) :: totalligand = 1.d0 ! [mumol/m3] order 1. Total free ligand @@ -283,26 +320,30 @@ module recom_config Real(kind=8) :: sPhyNsq = 0.d0 Real(kind=8) :: pzCocco = 0.5d0 ! NEW (value is just a guess) Real(kind=8) :: sCoccoNsq = 0.d0 ! NEW + Real(kind=8) :: pzPhaeo = 1.0d0 ! Phaeocystis (to be tuned) + Real(kind=8) :: sPhaeoNsq = 0.d0 ! Phaeocystis Real(kind=8) :: pzMicZoo = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference Real(kind=8) :: sMicZooNsq = 0.d0 ! NEW 3Zoo real(kind=8) :: tiny_het = 1.d-5 ! for more stable computation of HetRespFlux (_plus). Value can be > tiny because HetRespFlux ~ hetC**2. - namelist /pazooplankton/ graz_max, epsilonr, res_het, Redfield, loss_het, pzDia, sDiaNsq, pzPhy, sPhyNsq, pzCocco, sCoccoNsq, pzMicZoo, sMicZooNsq, tiny_het + namelist /pazooplankton/ graz_max, epsilonr, res_het, Redfield, loss_het, pzDia, sDiaNsq, pzPhy, sPhyNsq, pzCocco, sCoccoNsq, pzPhaeo, sPhaeoNsq, pzMicZoo, sMicZooNsq, tiny_het !!------------------------------------------------------------------------------- -!! *** SecondZooplankton *** +!! *** SecondZooplankton (Macrozooplankton) *** Real(kind=8) :: graz_max2 = 0.1d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter Real(kind=8) :: epsilon2 = 0.0144d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss Real(kind=8) :: res_zoo2 = 0.0107d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) Real(kind=8) :: loss_zoo2 = 0.003d0 ! [1/day] Temperature dependent N degradation of extracellular organic N - Real(kind=8) :: fecal_rate_n = 0.13d0 + Real(kind=8) :: fecal_rate_n = 0.13d0 Real(kind=8) :: fecal_rate_c = 0.295d0 Real(kind=8) :: fecal_rate_n_mes = 0.25d0 ! NEW 3Zoo - Real(kind=8) :: fecal_rate_c_mes = 0.32d0 ! NEW 3Zoo + Real(kind=8) :: fecal_rate_c_mes = 0.32d0 ! NEW 3Zoo Real(kind=8) :: pzDia2 = 1.d0 ! Maximum diatom preference Real(kind=8) :: sDiaNsq2 = 0.d0 Real(kind=8) :: pzPhy2 = 0.5d0 ! Maximum diatom preference Real(kind=8) :: sPhyNsq2 = 0.d0 Real(kind=8) :: pzCocco2 = 0.2d0 ! NEW (value is just a guess) Real(kind=8) :: sCoccoNsq2 = 0.d0 ! NEW + Real(kind=8) :: pzPhaeo2 = 0.5d0 ! Phaeocystis (to be tuned) + Real(kind=8) :: sPhaeoNsq2 = 0.d0 ! Phaeocystis Real(kind=8) :: pzHet = 0.8d0 ! Maximum diatom preference Real(kind=8) :: sHetNsq = 0.d0 Real(kind=8) :: pzMicZoo2 = 0.8d0 ! NEW Zoo3 Maximum microzooplankton preference @@ -313,7 +354,7 @@ module recom_config Real(kind=8) :: t4_zoo2 = 274.15d0 ! Krill temp. function constant3 namelist /pasecondzooplankton/ graz_max2, epsilon2, res_zoo2, & loss_zoo2, fecal_rate_n, fecal_rate_c, fecal_rate_n_mes, fecal_rate_c_mes, & ! NEW 3Zoo - pzDia2, sDiaNsq2, pzPhy2, sPhyNsq2, pzCocco2, sCoccoNsq2, pzHet, sHetNsq, & + pzDia2, sDiaNsq2, pzPhy2, sPhyNsq2, pzCocco2, sCoccoNsq2, pzPhaeo2, sPhaeoNsq2, pzHet, sHetNsq, & pzMicZoo2, sMicZooNsq2, & t1_zoo2, t2_zoo2, t3_zoo2, t4_zoo2 !------------------------------------------------------------------------------- @@ -328,7 +369,9 @@ module recom_config Real(kind=8) :: sPhyNsq3 = 0.d0 ! NEW 3Zoo Real(kind=8) :: pzCocco3 = 0.d0 ! NEW 3Zoo Maximum coccolithophore preference ! ATTENTION: This value needs to be tuned; I start with zero preference! Real(kind=8) :: sCoccoNsq3 = 0.d0 ! NEW 3Zoo - namelist /pathirdzooplankton/ graz_max3, epsilon3, loss_miczoo, res_miczoo, pzDia3, sDiaNsq3, pzPhy3, sPhyNsq3, pzCocco3, sCoccoNsq3 + Real(kind=8) :: pzPhaeo3 = 1.0d0 ! Phaeocystis 3Zoo Maximum phaeocystis preference (to be tuned (?)) + Real(kind=8) :: sPhaeoNsq3 = 0.d0 ! Phaeocystis 3Zoo + namelist /pathirdzooplankton/ graz_max3, epsilon3, loss_miczoo, res_miczoo, pzDia3, sDiaNsq3, pzPhy3, sPhyNsq3, pzCocco3, sCoccoNsq3, pzPhaeo3, sPhaeoNsq3 !------------------------------------------------------------------------------- !! *** Detritus Grazing Params *** @@ -359,20 +402,23 @@ module recom_config !! *** Phytoplankton N *** Real(kind=8) :: lossN = 0.05d0 ! [1/day] Phytoplankton loss of organic N compounds Real(kind=8) :: lossN_d = 0.05d0 - Real(kind=8) :: lossN_c = 0.05d0 - namelist /paphytoplankton_N/ lossN, lossN_d, lossN_c + Real(kind=8) :: lossN_c = 0.05d0 + Real(kind=8) :: lossN_p = 0.05d0 ! Phaeocystis + namelist /paphytoplankton_N/ lossN, lossN_d, lossN_c, lossN_p !!------------------------------------------------------------------------------ !! *** Phytoplankton C *** Real(kind=8) :: lossC = 0.10d0 ! [1/day] Phytoplankton loss of carbon Real(kind=8) :: lossC_d = 0.10d0 Real(kind=8) :: lossC_c = 0.10d0 - namelist /paphytoplankton_C/ lossC, lossC_d, lossC_c + Real(kind=8) :: lossC_p = 0.10d0 ! Phaeocystis + namelist /paphytoplankton_C/ lossC, lossC_d, lossC_c, lossC_p !!------------------------------------------------------------------------------ !! *** Phytoplankton ChlA *** Real(8) :: deg_Chl = 0.25d0 ! [1/day] Real(kind=8) :: deg_Chl_d = 0.25d0 Real(kind=8) :: deg_Chl_c = 0.20d0 ! (value is just a guess) - namelist /paphytoplankton_ChlA/ deg_Chl, deg_Chl_d, deg_Chl_c + Real(kind=8) :: deg_Chl_p = 0.25d0 ! Phaeocystis + namelist /paphytoplankton_ChlA/ deg_Chl, deg_Chl_d, deg_Chl_c, deg_Chl_p !!------------------------------------------------------------------------------ !! *** Detritus N *** Real(kind=8) :: gfin = 0.3d0 ! 3Zoo [] Grazing efficiency (fraction of grazing flux into zooplankton pool) @@ -405,32 +451,36 @@ module recom_config Real(kind=8) :: Cunits = 976.5625 ! Conversion factor between [mol/m3] (model) and [umol/kg] (function): (1000 * 1000) / 1024 Real(kind=8) :: a_co2_phy = 1.162e+00 ! [unitless] - Real(kind=8) :: a_co2_dia = 1.040e+00 ! [unitless] - Real(kind=8) :: a_co2_cocco = 1.109e+00 ! [unitless] - Real(kind=8) :: a_co2_calc = 1.102e+00 ! [unitless] - Real(kind=8) :: b_co2_phy = 4.888e+01 ! [mol/kg] + Real(kind=8) :: a_co2_dia = 1.040e+00 ! [unitless] + Real(kind=8) :: a_co2_cocco = 1.109e+00 ! [unitless] + Real(kind=8) :: a_co2_phaeo = 1.162e+00 ! [unitless] + Real(kind=8) :: a_co2_calc = 1.102e+00 ! [unitless] + Real(kind=8) :: b_co2_phy = 4.888e+01 ! [mol/kg] Real(kind=8) :: b_co2_dia = 2.890e+01 ! [mol/kg] Real(kind=8) :: b_co2_cocco = 3.767e+01 ! [mol/kg] + Real(kind=8) :: b_co2_phaeo = 4.888e+01 ! [mol/kg] Real(kind=8) :: b_co2_calc = 4.238e+01 ! [mol/kg] Real(kind=8) :: c_co2_phy = 2.255e-01 ! [kg/mol] - Real(kind=8) :: c_co2_dia = 8.778e-01 ! [kg/mol] - Real(kind=8) :: c_co2_cocco = 3.912e-01 ! [kg/mol] - Real(kind=8) :: c_co2_calc = 7.079e-01 ! [kg/mol] - Real(kind=8) :: d_co2_phy = 1.023e+07 ! [kg/mol] - Real(kind=8) :: d_co2_dia = 2.640e+06 ! [kg/mol] - Real(kind=8) :: d_co2_cocco = 9.450e+06 ! [kg/mol] - Real(kind=8) :: d_co2_calc = 1.343e+07 ! [kg/mol] - namelist /paco2lim/ Cunits, a_co2_phy, a_co2_dia, a_co2_cocco, a_co2_calc, & - b_co2_phy, b_co2_dia, b_co2_cocco, b_co2_calc, & - c_co2_phy, c_co2_dia, c_co2_cocco, c_co2_calc, & - d_co2_phy, d_co2_dia, d_co2_cocco, d_co2_calc + Real(kind=8) :: c_co2_dia = 8.778e-01 ! [kg/mol] + Real(kind=8) :: c_co2_cocco = 3.912e-01 ! [kg/mol] + Real(kind=8) :: c_co2_phaeo = 2.255e-01 ! [kg/mol] + Real(kind=8) :: c_co2_calc = 7.079e-01 ! [kg/mol] + Real(kind=8) :: d_co2_phy = 1.023e+07 ! [kg/mol] + Real(kind=8) :: d_co2_dia = 2.640e+06 ! [kg/mol] + Real(kind=8) :: d_co2_cocco = 9.450e+06 ! [kg/mol] + Real(kind=8) :: d_co2_phaeo = 1.023e+07 ! [kg/mol] + Real(kind=8) :: d_co2_calc = 1.343e+07 ! [kg/mol] + namelist /paco2lim/ Cunits, a_co2_phy, a_co2_dia, a_co2_cocco, a_co2_phaeo, a_co2_calc, & + b_co2_phy, b_co2_dia, b_co2_cocco, b_co2_phaeo, b_co2_calc, & + c_co2_phy, c_co2_dia, c_co2_cocco, c_co2_phaeo, c_co2_calc, & + d_co2_phy, d_co2_dia, d_co2_cocco, d_co2_phaeo, d_co2_calc !!------------------------------------------------------------------------------ !! *** Iron *** Real(kind=8) :: Fe2N = 0.033d0 ! Fe2C * 6.625 (Fe2C = 0.005d0) Real(kind=8) :: Fe2N_benthos = 0.15d0 ! default was 0.14 Fe2C_benthos (=0.02125=0.68d0/32.d0) * 6.625 - will have to be tuned. [umol/m2/day] Real(kind=8) :: kScavFe = 0.07d0 Real(kind=8) :: dust_sol = 0.02d0 !Dissolution of Dust for bioavaliable - Real(kind=8) :: RiverFeConc = 100d0 ! mean DFe concentration in rivers + Real(kind=8) :: RiverFeConc = 100d0 ! mean DFe concentration in rivers namelist /pairon/ Fe2N, Fe2N_benthos, kScavFe, dust_sol, RiverFeConc !!------------------------------------------------------------------------------ !! *** Calcification *** @@ -489,16 +539,22 @@ Module REcoM_declarations Real(kind=8) :: tiny_N ! Min PhyN Real(kind=8) :: tiny_N_d ! Min DiaN Real(kind=8) :: tiny_N_c ! Min CocN ! NEW + Real(kind=8) :: tiny_N_p ! Min PhaN ! Phaeocystis Real(kind=8) :: tiny_C ! Min PhyC Real(kind=8) :: tiny_C_d ! Min DiaC Real(kind=8) :: tiny_C_c ! Min CocC ! NEW + Real(kind=8) :: tiny_C_p ! Min PhaC ! Phaeocystis Real(kind=8) :: tiny_Si ! Min DiaSi !!------------------------------------------------------------------------------ !! *** Temperature dependence of rates *** Real(kind=8) :: rTref ! [1/K] Reciproque value of reference temp for Arrhenius function Real(kind=8) :: rTloc ! [1/K] Reciproque of local ocean temp - Real(kind=8) :: arrFunc ! [] Temp dependence of rates - Real(kind=8) :: CoccoTFunc ! [] Temp dependence of coccolithophores + Real(kind=8) :: arrFunc ! [] Temp dependence of rates (also for Phaeocystis) + Real(kind=8) :: CoccoTFunc + Real(kind=8) :: Temp_diatoms ! [] Temp dependence of diatoms + Real(kind=8) :: Temp_phyto ! [] Temp dependence of small phyto + Real(kind=8) :: Temp_cocco ! [] Temp dependence of coccolithophores + Real(kind=8) :: Temp_phaeo ! [] Temp dependence of phaeocystis Real(kind=8) :: arrFuncZoo2 ! [] Temperature function for krill Real(kind=8) :: q10_mic ! 3Zoo Real(kind=8) :: q10_mic_res ! 3Zoo @@ -515,13 +571,15 @@ Module REcoM_declarations Real(kind=8) :: CoccoCO2 Real(kind=8) :: DiaCO2 Real(kind=8) :: PhyCO2 + Real(kind=8) :: PhaeoCO2 + !!------------------------------------------------------------------------------ !! *** Quotas *** - Real(kind=8) :: quota, quota_dia, quota_cocco ! [mmol N/mmol C] Quota between phytoplankton N and C (NEW changed term) - Real(kind=8) :: recipQuota, recipQuota_dia, recipQuota_cocco ! [mmol C/mmol N] Reciproque of 'quota' (NEW changed term) - Real(kind=8) :: Chl2C, Chl2C_dia, Chl2C_cocco ! [mg ChlA/mmol C] Quota between phytoplankton ChlA and C (NEW changed term) - Real(kind=8) :: Chl2C_plast, Chl2C_plast_dia, CHL2C_plast_cocco ! [mg ChlA/mmol C] needed for photodamage (NEW changed term) - Real(kind=8) :: Chl2N, Chl2N_dia, Chl2N_cocco ! [mg ChlA/mmol N] Quota between phytoplankton ChlA and N (NEW changed term) + Real(kind=8) :: quota, quota_dia, quota_cocco, quota_phaeo ! [mmol N/mmol C] Quota between phytoplankton N and C (NEW changed term) + Real(kind=8) :: recipQuota, recipQuota_dia, recipQuota_cocco, recipQuota_phaeo ! [mmol C/mmol N] Reciproque of 'quota' (NEW changed term) + Real(kind=8) :: Chl2C, Chl2C_dia, Chl2C_cocco, Chl2C_phaeo ! [mg ChlA/mmol C] Quota between phytoplankton ChlA and C (NEW changed term) + Real(kind=8) :: Chl2C_plast, Chl2C_plast_dia, CHL2C_plast_cocco, CHL2C_plast_phaeo ! [mg ChlA/mmol C] needed for photodamage (NEW changed term) + Real(kind=8) :: Chl2N, Chl2N_dia, Chl2N_cocco, Chl2N_phaeo ! [mg ChlA/mmol N] Quota between phytoplankton ChlA and N (NEW changed term) Real(kind=8) :: qSiC Real(kind=8) :: qSiN Real(kind=8) :: recipQZoo ! [mmol C/mmol N] Quota between heterotrophic C and N @@ -535,8 +593,8 @@ Module REcoM_declarations !! *** For limiter function *** Real(kind=8) :: qlimitFac, qlimitFacTmp ! Factor that regulates photosynthesis Real(kind=8),external :: recom_limiter ! Function calculating qlimitFac - Real(kind=8) :: FeLimitFac ! [Mumol/m3] Half sat constant for iron - Real(kind=8) :: pMax, pMax_dia, pMax_cocco ! [1/day] Maximum rate of C-specific photosynthesis + Real(kind=8) :: FeLimitFac ! [Mumol/m3] Half sat constant for iron + Real(kind=8) :: pMax, pMax_dia, pMax_cocco, pMax_phaeo ! [1/day] Maximum rate of C-specific photosynthesis !!------------------------------------------------------------------------------ !! *** Light *** Real(kind=8) :: kappar ! [1/m] Light attenuation coefficient modified by chla @@ -548,48 +606,59 @@ Module REcoM_declarations Real(kind=8) :: PARave ! [?] Average light in the control volumes !!------------------------------------------------------------------------------ !! *** Photosynthesis *** - Real(kind=8) :: Cphot, Cphot_dia, Cphot_cocco ! [1/day] C-specific rate of photosynthesis + Real(kind=8) :: Cphot, Cphot_dia, Cphot_cocco, Cphot_phaeo ! [1/day] C-specific rate of photosynthesis !!------------------------------------------------------------------------------ !! *** Assimilation *** - Real(kind=8) :: V_cm ! scaling factor for temperature dependent maximum of C-specific N-uptake - Real(kind=8) :: limitFacN,limitFacN_dia,limitFacN_cocco ! Factor that regulates N-assimilation. Calc from function recom_limiter + Real(kind=8) :: V_cm ! scaling factor for temperature dependent maximum of C-specific N-uptake + Real(kind=8) :: limitFacN,limitFacN_dia,limitFacN_cocco, limitFacN_phaeo ! Factor that regulates N-assimilation. Calc from function recom_limiter Real(kind=8) :: limitFacSi - Real(kind=8) :: N_assim, N_assim_dia, N_assim_Cocco ! [mmol N/(mmol C * day)] C specific N utilization rate + Real(kind=8) :: N_assim, N_assim_dia, N_assim_Cocco, N_assim_phaeo ! [mmol N/(mmol C * day)] C specific N utilization rate Real(kind=8) :: Si_assim !!------------------------------------------------------------------------------ !! *** Chlorophyll *** - Real(kind=8) :: ChlSynth, ChlSynth_dia, ChlSynth_cocco ! [mg CHL/ mmol N] CHL a synthesis regulation term - Real(kind=8) :: phyRespRate, phyRespRate_dia, phyRespRate_cocco ! [1/day] Phytoplankton respiration rate - Real(kind=8) :: KOchl, KOchl_dia, KOchl_cocco ! coefficient for damage to the photosynthetic apparatus + Real(kind=8) :: ChlSynth, ChlSynth_dia, ChlSynth_cocco, ChlSynth_phaeo ! [mg CHL/ mmol N] CHL a synthesis regulation term + Real(kind=8) :: phyRespRate, phyRespRate_dia, phyRespRate_cocco, phyRespRate_phaeo ! [1/day] Phytoplankton respiration rate + Real(kind=8) :: KOchl, KOchl_dia, KOchl_cocco, KOchl_phaeo ! coefficient for damage to the photosynthetic apparatus +!!------------------------------------------------------------------------------ +!! *** Vertical only Decomposition of phytoplankton growth components *** + Real(kind=8),allocatable,dimension(:) :: VTTemp_diatoms, VTTemp_phyto, VTTemp_cocco, VTTemp_phaeo ! Vertical 1D temperature effect on phytoplankton photosynthesis + Real(kind=8),allocatable,dimension(:) :: VTPhyCO2, VTDiaCO2, VTCoccoCO2, VTPhaeoCO2 ! CO2 effect + Real(kind=8),allocatable,dimension(:) :: VTqlimitFac_phyto, VTqlimitFac_diatoms, VTqlimitFac_cocco, VTqlimitFac_phaeo ! nutrient effect + Real(kind=8),allocatable,dimension(:) :: VTCphotLigLim_phyto, VTCphotLigLim_diatoms, VTCphotLigLim_cocco, VTCphotLigLim_phaeo ! light limitation + Real(kind=8),allocatable,dimension(:) :: VTCphot_phyto, VTCphot_diatoms, VTCphot_cocco, VTCphot_phaeo + Real(kind=8),allocatable,dimension(:) :: VTSi_assimDia + !!------------------------------------------------------------------------------ !! *** Iron chemistry *** Real(kind=8),external :: iron_chemistry, iron_chemistry_2ligands - Real(kind=8) :: logK1, logK2, Klig1, Klig2 + Real(kind=8) :: logK1, logK2, Klig1, Klig2 !!------------------------------------------------------------------------------ !! *** Zooplankton *** Real(kind=8) :: DiaNsq - Real(kind=8) :: varpzdia, fDiaN ! Part of Diatoms available for food - Real(kind=8) :: PhyNsq - Real(kind=8) :: varpzPhy, fPhyN ! Part of Nano available for food - Real(kind=8) :: CoccoNsq ! NEW - Real(kind=8) :: varpzCocco,fCoccoN ! NEW - Real(kind=8) :: MicZooNsq ! NEW 3Zoo - Real(kind=8) :: varpzMicZoo, fMicZooN ! NEW 3Zoo Part of microzooplankton available for food - Real(kind=8) :: food, foodsq ! [(mmol N)2/m6] - Real(kind=8) :: grazingFlux_phy, grazingFlux_Dia, grazingFlux_Cocco ! [mmol N / (m3 * day)] (NEW changed term) - Real(kind=8) :: grazingFlux_miczoo ! NEW 3Zoo + Real(kind=8) :: varpzdia, fDiaN ! Part of Diatoms available for food + Real(kind=8) :: PhyNsq + Real(kind=8) :: varpzPhy, fPhyN ! Part of Nano available for food + Real(kind=8) :: CoccoNsq + Real(kind=8) :: varpzCocco,fCoccoN + Real(kind=8) :: PhaeoNsq + Real(kind=8) :: varpzPhaeo,fPhaeoN + Real(kind=8) :: MicZooNsq ! NEW 3Zoo + Real(kind=8) :: varpzMicZoo, fMicZooN ! NEW 3Zoo Part of microzooplankton available for food + Real(kind=8) :: food, foodsq ! [(mmol N)2/m6] + Real(kind=8) :: grazingFlux_phy, grazingFlux_Dia, grazingFlux_Cocco, grazingFlux_Phaeo ! [mmol N / (m3 * day)] (NEW changed term) + Real(kind=8) :: grazingFlux_miczoo ! NEW 3Zoo Real(kind=8) :: grazingFlux - Real(kind=8) :: grazEff ! NEW 3Zoo + Real(kind=8) :: grazEff ! NEW 3Zoo Real(kind=8) :: HetRespFlux ! Zooplankton respiration Real(kind=8) :: HetLossFlux ! [(mmol N)2/(m6 * day)] Zooplankton mortality (quadratic loss) !!------------------------------------------------------------------------------ !! *** Second Zooplankton *** - Real(kind=8) :: DiaNsq2, PhyNsq2, CoccoNsq2, HetNsq ! NEW (changed term) - Real(kind=8) :: varpzDia2, fDiaN2, varpzPhy2, fPhyN2, varpzCocco2, fCoccoN2, varpzHet, fHetN ! Part of Diatoms available for food + Real(kind=8) :: DiaNsq2, PhyNsq2, CoccoNsq2, PhaeoNsq2, HetNsq ! NEW (changed term) + Real(kind=8) :: varpzDia2, fDiaN2, varpzPhy2, fPhyN2, varpzCocco2, fCoccoN2, varpzPhaeo2, fPhaeoN2, varpzHet, fHetN ! Part of Diatoms available for food Real(kind=8) :: MicZooNsq2 ! NEW Zoo3 Real(kind=8) :: varpzMicZoo2, fMicZooN2 ! NEW Zoo3 - Real(kind=8) :: food2, foodsq2 ! [(mmol N)2/m6] - Real(kind=8) :: grazingFlux_phy2, grazingFlux_Dia2, grazingFlux_Cocco2, grazingFlux_het2 ! [mmol N / (m3 * day) (NEW changed term) + Real(kind=8) :: food2, foodsq2 ! [(mmol N)2/m6] + Real(kind=8) :: grazingFlux_phy2, grazingFlux_Dia2, grazingFlux_Cocco2, grazingFlux_Phaeo2, grazingFlux_het2 ! [mmol N / (m3 * day) (NEW changed term) Real(kind=8) :: grazingFlux_miczoo2 ! NEW Zoo3 Real(kind=8) :: grazingFlux2 Real(kind=8) :: Zoo2RespFlux ! Zooplankton respiration @@ -615,8 +684,10 @@ Module REcoM_declarations Real(kind=8) :: varpzPhy3, fPhyN3 ! Part of small phytoplankton available for food Real(kind=8) :: CoccoNsq3 Real(kind=8) :: varpzCocco3, fCoccoN3 ! Part of coccolithophores available for food + Real(kind=8) :: PhaeoNsq3 + Real(kind=8) :: varpzPhaeo3, fPhaeoN3 ! Part of phaeocystis available for food Real(kind=8) :: food3, foodsq3 ! [(mmol N)2/m6] - Real(kind=8) :: grazingFlux_phy3, grazingFlux_Dia3, grazingFlux_Cocco3 ! [mmol N / (m3 * day)] + Real(kind=8) :: grazingFlux_phy3, grazingFlux_Dia3, grazingFlux_Cocco3, grazingFlux_Phaeo3 ! [mmol N / (m3 * day)] Real(kind=8) :: grazingFlux3 Real(kind=8) :: MicZooRespFlux ! Zooplankton respiration Real(kind=8) :: MicZooLossFlux ! [(mmol N)2/(m6 * day)] Zooplankton mortality (quadratic loss) @@ -643,15 +714,16 @@ Module REcoM_declarations Real(kind=8) :: locNPPn, locGPPn, locNNAn, locChldegn Real(kind=8) :: locNPPd, locGPPd, locNNAd, locChldegd Real(kind=8) :: locNPPc, locGPPc, locNNAc, locChldegc + Real(kind=8) :: locNPPp, locGPPp, locNNAp, locChldegp ! Phaeocystis Real(kind=8),allocatable,dimension(:) :: vertNPPn, vertGPPn, vertNNAn, vertChldegn Real(kind=8),allocatable,dimension(:) :: vertNPPd, vertGPPd, vertNNAd, vertChldegd Real(kind=8),allocatable,dimension(:) :: vertNPPc, vertGPPc, vertNNAc, vertChldegc - Real(kind=8),allocatable,dimension(:) :: vertgrazmeso_tot, vertgrazmeso_n, vertgrazmeso_d, vertgrazmeso_c + Real(kind=8),allocatable,dimension(:) :: vertNPPp, vertGPPp, vertNNAp, vertChldegp ! Phaeocystis Real(kind=8),allocatable,dimension(:) :: vertrespmeso, vertrespmacro, vertrespmicro Real(kind=8),allocatable,dimension(:) :: vertcalcdiss, vertcalcif - Real(kind=8),allocatable,dimension(:) :: vertaggn, vertaggd, vertaggc - Real(kind=8),allocatable,dimension(:) :: vertdocexn, vertdocexd, vertdocexc - Real(kind=8),allocatable,dimension(:) :: vertrespn, vertrespd, vertrespc + Real(kind=8),allocatable,dimension(:) :: vertaggn, vertaggd, vertaggc, vertaggp + Real(kind=8),allocatable,dimension(:) :: vertdocexn, vertdocexd, vertdocexc, vertdocexp + Real(kind=8),allocatable,dimension(:) :: vertrespn, vertrespd, vertrespc, vertrespp !!------------------------------------------------------------------------------ !! *** Benthos *** Real(kind=8),allocatable,dimension(:) :: decayBenthos ! [1/day] Decay rate of detritus in the benthic layer @@ -659,11 +731,13 @@ Module REcoM_declarations Real(kind=8),allocatable,dimension(:) :: wFluxPhy ! [mmol/(m2 * day)] Flux of N,C, calc and chl through sinking of phytoplankton Real(kind=8),allocatable,dimension(:) :: wFluxDia ! [mmol/(m2 * day)] Flux of N,C, Si and chl through sinking of diatoms Real(kind=8),allocatable,dimension(:) :: wFluxCocco ! NEW [mmol/(m2 * day)] Flux of N,C, calc and chl through sinking of coccos + Real(kind=8),allocatable,dimension(:) :: wFluxPhaeo ! NEW [mmol/(m2 * day)] Flux of N,C, calc and chl through sinking of Phaeocystis Real(kind=8) :: Vben_det ! [m/day] speed of sinking into benthos from water column Real(kind=8) :: Vben_det_seczoo !second zooplankton sinking benthos Real(kind=8) :: Vben_phy Real(kind=8) :: Vben_dia Real(kind=8) :: Vben_coc + Real(kind=8) :: Vben_pha ! Phaeocystis Real(kind=8) :: Ironflux ! [umol Fe/(m2*day)] Flux of Fe from sediment to water !_______________________________________________________________________________ ! Arrays added for RECOM implementation: @@ -686,7 +760,7 @@ end module REcoM_declarations Module REcoM_GloVar implicit none save - + Real(kind=8),allocatable,dimension(:,:) :: Benthos ! 4 types of benthos-tracers with size [4 n2d] Real(kind=8),allocatable,dimension(:,:,:) :: Benthos_tr ! kh 25.03.22 buffer sums per tracer index to avoid non bit identical results regarding global sums when running the tracer loop in parallel @@ -725,7 +799,8 @@ Module REcoM_GloVar Real(kind=8),allocatable,dimension(:,:) :: GlowFluxDet ! Real(kind=8),allocatable,dimension(:,:) :: GlowFluxPhy ! Real(kind=8),allocatable,dimension(:,:) :: GlowFluxDia ! - Real(kind=8),allocatable,dimension(:,:) :: GlowFluxCocco ! + Real(kind=8),allocatable,dimension(:,:) :: GlowFluxCocco ! + Real(kind=8),allocatable,dimension(:,:) :: GlowFluxPhaeo ! Real(kind=8),allocatable,dimension(:,:) :: diags2D ! Diagnostics in 2D [8 n2d] Real(kind=8),allocatable,dimension(:) :: NPPn @@ -740,6 +815,10 @@ Module REcoM_GloVar Real(kind=8),allocatable,dimension(:) :: GPPc Real(kind=8),allocatable,dimension(:) :: NNAc Real(kind=8),allocatable,dimension(:) :: Chldegc + Real(kind=8),allocatable,dimension(:) :: NPPp ! Phaeocystis + Real(kind=8),allocatable,dimension(:) :: GPPp + Real(kind=8),allocatable,dimension(:) :: NNAp + Real(kind=8),allocatable,dimension(:) :: Chldegp Real(kind=8),allocatable,dimension(:,:) :: grazmeso_tot Real(kind=8),allocatable,dimension(:,:) :: grazmeso_n Real(kind=8),allocatable,dimension(:,:) :: grazmeso_d @@ -752,15 +831,40 @@ Module REcoM_GloVar Real(kind=8),allocatable,dimension(:,:) :: aggn Real(kind=8),allocatable,dimension(:,:) :: aggd Real(kind=8),allocatable,dimension(:,:) :: aggc + Real(kind=8),allocatable,dimension(:,:) :: aggp ! Phaeocystis Real(kind=8),allocatable,dimension(:,:) :: docexn Real(kind=8),allocatable,dimension(:,:) :: docexd Real(kind=8),allocatable,dimension(:,:) :: docexc + Real(kind=8),allocatable,dimension(:,:) :: docexp ! Phaeocystis Real(kind=8),allocatable,dimension(:,:) :: respn Real(kind=8),allocatable,dimension(:,:) :: respd Real(kind=8),allocatable,dimension(:,:) :: respc + Real(kind=8),allocatable,dimension(:,:) :: respp ! Phaeocystis Real(kind=8),allocatable,dimension(:,:) :: NPPn3D Real(kind=8),allocatable,dimension(:,:) :: NPPd3D Real(kind=8),allocatable,dimension(:,:) :: NPPc3D + Real(kind=8),allocatable,dimension(:,:) :: NPPp3D ! Phaeocystis + Real(kind=8),allocatable,dimension(:,:) :: TTemp_diatoms ! my new variables to track + Real(kind=8),allocatable,dimension(:,:) :: TTemp_phyto ! new Temperature effect + Real(kind=8),allocatable,dimension(:,:) :: TTemp_cocco ! new + Real(kind=8),allocatable,dimension(:,:) :: TTemp_phaeo ! new + Real(kind=8),allocatable,dimension(:,:) :: TPhyCO2 ! new CO2 effect + Real(kind=8),allocatable,dimension(:,:) :: TDiaCO2 + Real(kind=8),allocatable,dimension(:,:) :: TCoccoCO2 + Real(kind=8),allocatable,dimension(:,:) :: TPhaeoCO2 + Real(kind=8),allocatable,dimension(:,:) :: TqlimitFac_phyto ! new nutrient limitation + Real(kind=8),allocatable,dimension(:,:) :: TqlimitFac_diatoms + Real(kind=8),allocatable,dimension(:,:) :: TqlimitFac_cocco + Real(kind=8),allocatable,dimension(:,:) :: TqlimitFac_phaeo + Real(kind=8),allocatable,dimension(:,:) :: TCphotLigLim_phyto ! new light limitation + Real(kind=8),allocatable,dimension(:,:) :: TCphot_phyto ! new + Real(kind=8),allocatable,dimension(:,:) :: TCphotLigLim_diatoms ! new light limitation + Real(kind=8),allocatable,dimension(:,:) :: TCphot_diatoms + Real(kind=8),allocatable,dimension(:,:) :: TCphotLigLim_cocco ! new light limitation + Real(kind=8),allocatable,dimension(:,:) :: TCphot_cocco + Real(kind=8),allocatable,dimension(:,:) :: TCphotLigLim_phaeo ! new light limitation + Real(kind=8),allocatable,dimension(:,:) :: TCphot_phaeo + Real(kind=8),allocatable,dimension(:,:) :: TSi_assimDia ! tracking the assimilation of Si by Diatoms Real(kind=8),allocatable,dimension(:) :: DenitBen ! Benthic denitrification Field in 2D [n2d 1] @@ -776,7 +880,7 @@ Module REcoM_GloVar Real(kind=8),allocatable,dimension(:,:) :: lb_flux ! Yearly burial from medusa: [n2d 5] or [n2d 9] with ciso_14 ! atmospheric box model: - real(kind=8),allocatable,dimension(:) :: x_co2atm ! atmospheric CO2 mixing ratio (mole fraction) + Real(kind=8),allocatable,dimension(:) :: x_co2atm ! atmospheric CO2 mixing ratio (mole fraction) Real(kind=8), allocatable,dimension(:) :: Alk_surf ! Surface alkalinity field used for restoring Real(kind=8), allocatable,dimension(:) :: relax_alk @@ -865,7 +969,7 @@ Module REcoM_locVar Real(kind=8) :: PICPOCN ! (to make calcification dependent on N-limitation) Real(kind=8) :: calc_prod_final ! (added to make the calcification dependent on nutrients (N, Fe), after Krumhardt et al. 2017/2019) Integer :: currentCO2year - + end module REcoM_LocVar !=============================================================================== ! Specific declarations related to carbon isotope simulations diff --git a/src/int_recom/recom_sinking.F90 b/src/int_recom/recom_sinking.F90 index b772569ec..2f0d541f2 100644 --- a/src/int_recom/recom_sinking.F90 +++ b/src/int_recom/recom_sinking.F90 @@ -475,7 +475,7 @@ subroutine ver_sinking_recom(tr_num, tracers, partit, mesh) real(kind=8) :: Rjp,Rj,Rjm real(kind=8) :: cfl, d0, d1, thetaP, thetaM, psiP, psiM - real(kind=8) :: onesixth = 1.d0/6.d0 + real(kind=8) :: onesixth = 1.d0/6.d0 real(kind=8) :: dt_sink, c1, c2 real(kind=8) :: Vsink, tv real(kind=8),dimension(mesh%nl) :: Wvel_flux @@ -526,6 +526,13 @@ subroutine ver_sinking_recom(tr_num, tracers, partit, mesh) tracers%data(tr_num)%ID == 1031 ) then !icchl Vsink = VCocco + + elseif(tracers%data(tr_num)%ID == 1032 .or. & !iphan + tracers%data(tr_num)%ID == 1033 .or. & !iphac + tracers%data(tr_num)%ID == 1034 ) then !iphachl + + Vsink = VPhaeo + #endif elseif(tracers%data(tr_num)%ID == 1020) then !iphycal @@ -643,7 +650,7 @@ subroutine ver_sinking_recom(tr_num, tracers, partit, mesh) (1.d0-cfl)/(1.d-20-cfl)*thetaM)) tv= (0.5 * wPs * (trarr(nz,n) + psiM * Rj)+ & - 0.5 * wM * (trarr(max(nzmin,nz-1),n) + psiP * Rj)) + 0.5 * wM * (trarr(max(nzmin,nz-1),n) + psiP * Rj)) vd_flux(nz)= - tv*area(nz,n) end do end if ! 3rd Order DST Sceheme with flux limiting diff --git a/src/int_recom/recom_sms.F90 b/src/int_recom/recom_sms.F90 index 7259fd893..d43699f02 100644 --- a/src/int_recom/recom_sms.F90 +++ b/src/int_recom/recom_sms.F90 @@ -41,7 +41,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & integer, intent(in) :: Nn !< Total number of nodes in the vertical real(kind=8),dimension(mesh%nl-1,bgc_num),intent(inout) :: state !< ChlA conc in phytoplankton [mg/m3] - !! should be in instead of inout + !! should be in instead of inout real(kind=8),dimension(mesh%nl-1) :: thick !< [m] Vertical distance between two nodes = Thickness real(kind=8),dimension(mesh%nl-1) :: recipthick !< [1/m] reciprocal of thick @@ -107,6 +107,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & CoccoN, & CoccoC, & CoccoChl,& + PhaeoN, & + PhaeoC, & + PhaeoChl,& #endif Si, & Fe, & @@ -143,6 +146,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) tiny_N_c = tiny_chl/chl2N_max_c tiny_C_c = tiny_N_c/NCmax_c + tiny_N_p = tiny_chl/chl2N_max_p + tiny_C_p = tiny_N_p/NCmax_p #endif recip_res_het = 1.d0/res_het !< res_het = 0.01d0 [1/day] Respiration by heterotrophs and mortality (loss to detritus) @@ -162,7 +167,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !Main time loop starts do step = one,biostep - kdzUpper = 0.d0 !< Upper light attenuation of top cell is set to zero + kdzUpper = 0.d0 !< Upper light attenuation of top cell is set to zero if (any(abs(sms(:,:)) <= tiny)) sms(:,:) = zero ! tiny = 2.23D-16 @@ -173,16 +178,16 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & ! Nn=nlevels_nod2D(n)-1 !nzmax ! nzmin = ulevels_nod2D(row) ! nzmax = nlevels_nod2D(row) - DIN = max(tiny,state(k,idin) + sms(k,idin )) !< Avoids division by zero - DIC = max(tiny,state(k,idic) + sms(k,idic )) !! and updates Conc between - ALK = max(tiny,state(k,ialk) + sms(k,ialk )) !! local steps in REcoM when + DIN = max(tiny,state(k,idin) + sms(k,idin )) !< Avoids division by zero + DIC = max(tiny,state(k,idic) + sms(k,idic )) !! and updates Conc between + ALK = max(tiny,state(k,ialk) + sms(k,ialk )) !! local steps in REcoM when PhyN = max(tiny_N,state(k,iphyn) + sms(k,iphyn )) !! biostep > 1 - PhyC = max(tiny_C,state(k,iphyc) + sms(k,iphyc )) + PhyC = max(tiny_C,state(k,iphyc) + sms(k,iphyc )) PhyChl = max(tiny_chl,state(k,ipchl) + sms(k,ipchl )) - DetN = max(tiny,state(k,idetn) + sms(k,idetn )) - DetC = max(tiny,state(k,idetc) + sms(k,idetc )) - HetN = max(tiny,state(k,ihetn) + sms(k,ihetn )) - HetC = max(tiny,state(k,ihetc) + sms(k,ihetc )) + DetN = max(tiny,state(k,idetn) + sms(k,idetn )) + DetC = max(tiny,state(k,idetc) + sms(k,idetc )) + HetN = max(tiny,state(k,ihetn) + sms(k,ihetn )) + HetC = max(tiny,state(k,ihetc) + sms(k,ihetc )) #if defined (__3Zoo2Det) Zoo2N = max(tiny,state(k,izoo2n) + sms(k,izoo2n)) Zoo2C = max(tiny,state(k,izoo2c) + sms(k,izoo2c)) @@ -194,19 +199,22 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & MicZooC = max(tiny,state(k,imiczooc) + sms(k,imiczooc)) #endif DON = max(tiny,state(k,idon) + sms(k,idon )) - EOC = max(tiny,state(k,idoc) + sms(k,idoc )) + EOC = max(tiny,state(k,idoc) + sms(k,idoc )) DiaN = max(tiny_N_d,state(k,idian) + sms(k,idian )) DiaC = max(tiny_C_d,state(k,idiac) + sms(k,idiac )) DiaChl = max(tiny_chl,state(k,idchl) + sms(k,idchl )) DiaSi = max(tiny_si,state(k,idiasi) + sms(k,idiasi)) - DetSi = max(tiny,state(k,idetsi) + sms(k,idetsi)) - Si = max(tiny,state(k,isi) + sms(k,isi )) + DetSi = max(tiny,state(k,idetsi) + sms(k,idetsi)) + Si = max(tiny,state(k,isi) + sms(k,isi )) #if defined (__coccos) CoccoN = max(tiny_N_c,state(k,icocn) + sms(k,icocn )) CoccoC = max(tiny_C_c,state(k,icocc) + sms(k,icocc )) CoccoChl = max(tiny_chl,state(k,icchl) + sms(k,icchl )) + PhaeoN = max(tiny_N_p,state(k,iphan) + sms(k,iphan )) ! Phaeocystis + PhaeoC = max(tiny_C_p,state(k,iphac) + sms(k,iphac )) + PhaeoChl = max(tiny_chl,state(k,iphachl) + sms(k,iphachl )) #endif - Fe = max(tiny,state(k,ife) + sms(k,ife )) + Fe = max(tiny,state(k,ife) + sms(k,ife )) O2 = max(tiny,state(k,ioxy) + sms(k,ioxy)) FreeFe = zero @@ -242,12 +250,19 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & qSiC = DiaSi / DiaC qSiN = DiaSi / DiaN -#if defined (__coccos) +#if defined (__coccos) + ! *** Coccolithophores quota_cocco = CoccoN / CoccoC recipQuota_cocco = real(one)/quota_cocco Chl2C_cocco = CoccoChl / CoccoC Chl2N_cocco = CoccoChl / CoccoN CHL2C_plast_cocco = Chl2C_cocco * (quota_cocco/(quota_cocco - NCmin_c)) + ! *** Phaeocystis + quota_phaeo = PhaeoN / PhaeoC + recipQuota_phaeo = real(one)/quota_phaeo + Chl2C_phaeo = PhaeoChl / PhaeoC + Chl2N_phaeo = PhaeoChl / PhaeoN + CHL2C_plast_phaeo = Chl2C_phaeo * (quota_phaeo/(quota_phaeo - NCmin_p)) #endif recipQZoo = HetC / HetN recip_hetN_plus = 1.d0 / (HetN + tiny_het) ! MB's addition for more stable zoo respiration @@ -315,10 +330,37 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & rTloc = real(one)/(Temp(k) + C2K) arrFunc = exp(-Ae * ( rTloc - rTref)) + #if defined (__coccos) CoccoTFunc = max(0.1419d0 * Temp(k)**0.8151d0,tiny) ! Function from Fielding 2013; is based on observational GR, but range fits best to ours #endif +!< New phytoplankton temperature functions + + Temp_phyto = exp(ord_phy + expon_phy * Temp(k)) ! NEW MODIFIED + VTTemp_phyto(k) = Temp_phyto + Temp_diatoms = exp(ord_d + expon_d * Temp(k)) ! NEW MODIFIED 2 parameters in new function ordonnee and exponent + VTTemp_diatoms(k) = Temp_diatoms ! track the output here + + + +#if defined (__coccos) + ! Coccolithophores: + if (Temp(k) < 5.0) then + Temp_cocco = tiny + else + Temp_cocco = max(exp(ord_cocco + expon_cocco * Temp(k)), tiny) + end if + VTTemp_cocco(k) = Temp_cocco + + ! Phaeocystis: + ! Blanchard function (Grimaud et al., 2017): + Temp_phaeo = uopt_phaeo * ((Tmax_phaeo-Temp(k))/(Tmax_phaeo-Topt_phaeo))**beta_phaeo * exp(-beta_phaeo * (Topt_phaeo-Temp(k))/(Tmax_phaeo-Topt_phaeo)) + Temp_phaeo = max(Temp_phaeo, tiny) + + VTTemp_phaeo(k) = Temp_phaeo +#endif + #if defined (__3Zoo2Det) arrFuncZoo2 = exp(t1_zoo2/t2_zoo2 - t1_zoo2*rTloc)/(1 + exp(t3_zoo2/t4_zoo2 - t3_zoo2*rTloc)) ! 2Zoo q10_mes = 1.0242**(Temp(k)) ! 3Zoo @@ -330,7 +372,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !< Silicate temperature dependence ! reminSiT = min(1.32e16 * exp(-11200.d0 * rTloc),reminSi) !! arrFunc control, reminSi=0.02d0 ! Kamatani (1982) ! reminSiT = reminSi - reminSiT = max(0.023d0 * 2.6d0**((Temp(k)-10.)/10.),reminSi) + reminSiT = max(0.023d0 * 2.6d0**((Temp(k)-10.)/10.),reminSi) !------------------------------------------------------------------------------- !> O2 dependence of rates @@ -352,13 +394,13 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & chl_upper = (PhyChl + DiaChl) #if defined (__coccos) - chl_upper = chl_upper + CoccoChl + chl_upper = chl_upper + CoccoChl + PhaeoChl #endif else chl_lower = PhyChl + DiaChl #if defined (__coccos) - chl_lower = chl_lower + CoccoChl -#endif + chl_lower = chl_lower + CoccoChl + PhaeoChl +#endif Chlave = (chl_upper+chl_lower)*0.5 kappa = k_w + a_chl * (Chlave) @@ -440,12 +482,14 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & - exp(-c_co2_phy * CO2_watercolumn(k) * Cunits) - d_co2_phy * 10.**(-pH_watercolumn(k)) PhyCO2 = min(PhyCO2,3.d0) ! April 2022: limitation to 3 PhyCO2 = max(0.d0,PhyCO2) ! July 2022: limitation to zero + VTPhyCO2(k) = PhyCO2 ! Diatoms DiaCO2 = a_co2_dia * HCO3_watercolumn(k) * Cunits / (b_co2_dia + HCO3_watercolumn(k) * Cunits) & - exp(-c_co2_dia * CO2_watercolumn(k) * Cunits) - d_co2_dia * 10.**(-pH_watercolumn(k)) DiaCO2 = min(DiaCO2,3.d0) ! April 2022: limitation to 3 DiaCO2 = max(0.d0,DiaCO2) ! July 2022: limitation to zero + VTDiaCO2(k) = DiaCO2 #if defined (__coccos) ! Coccolithophores @@ -453,9 +497,15 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & - exp(-c_co2_cocco * CO2_watercolumn(k) * Cunits) - d_co2_cocco * 10.**(-pH_watercolumn(k)) CoccoCO2 = min(CoccoCO2,3.d0) ! April 2022: limitation to 3 CoccoCO2 = max(0.d0,CoccoCO2) ! July 2022: limitation to zero + VTCoccoCO2(k) = CoccoCO2 +! Phaeocystis + PhaeoCO2 = a_co2_phaeo * HCO3_watercolumn(k) * Cunits / (b_co2_phaeo + HCO3_watercolumn(k) * Cunits) & + - exp(-c_co2_phaeo * CO2_watercolumn(k) * Cunits) - d_co2_phaeo * 10.**(-pH_watercolumn(k)) + PhaeoCO2 = min(PHaeoCO2,3.d0) ! April 2022: limitation to 3 + PhaeoCO2 = max(0.d0,PhaeoCO2) ! July 2022: limitation to zero + VTPhaeoCO2(k) = PhaeoCO2 #endif - !------------------------------------------------------------------------------ ! Calcite dissolution dependent on OmegaC ! DISS !------------------------------------------------------------------------------ @@ -520,6 +570,13 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & feLimitFac = Fe/(k_Fe_c + Fe) qlimitFac = min(qlimitFac, feLimitFac) pMax_cocco = P_cm_c * qlimitFac * CoccoTFunc ! Here the T dependency is changed + +!< *** Phaeocystis *** +!< ******************* + qlimitFac = recom_limiter(NMinSlope, NCmin_p, quota_phaeo) + feLimitFac = Fe/(k_Fe_p + Fe) + qlimitFac = min(qlimitFac, feLimitFac) + pMax_phaeo = qlimitFac * Temp_phaeo ! Here the T dependency is changed #endif !------------------------------------------------------------------------------- !< *** Small phytoplankton photosynthesis rate *** @@ -528,20 +585,24 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & Cphot = zero else Cphot = pMax*(real(one) - exp(-alfa * Chl2C * PARave / pMax)) + VTCphotLigLim_phyto(k) = Cphot/pMax ! track the light limitation if (CO2lim) Cphot = Cphot * PhyCO2 ! Added the CO2 dependence end if if (Cphot .lt. tiny) Cphot = zero - + VTCphot_phyto(k) = Cphot ! tracking Cphot with all processes included + !< *** Diatom photosynthesis rate *** !< ********************************** if ( pMax_dia .lt. tiny .OR. PARave /= PARave .OR. CHL2C_dia /= CHL2C_dia) then Cphot_dia = zero else Cphot_dia = pMax_dia * (real(one) - exp(-alfa_d * Chl2C_dia * PARave / pMax_dia)) + VTCphotLigLim_diatoms(k) = Cphot/pMax ! track light limitation if (CO2lim) Cphot_dia = Cphot_dia * DiaCO2 ! Added the CO2 dependence end if if (Cphot_dia .lt. tiny) Cphot_dia = zero - + VTCphot_diatoms(k) = Cphot_dia ! tracking complete Cphot + !< *** Coccolithophore photosynthesis rate *** !< ******************************************* #if defined (__coccos) @@ -549,9 +610,25 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & Cphot_cocco = zero else Cphot_cocco = pMax_cocco * (real(one) - exp( -alfa_c * Chl2C_cocco * PARave / pMax_cocco)) + VTCphotLigLim_cocco(k) = Cphot/pMax ! track the light limitation if (CO2lim) Cphot_cocco = Cphot_cocco * CoccoCO2 ! Added the CO2 dependence end if if (Cphot_cocco .lt. tiny) Cphot_cocco = zero + VTCphot_cocco(k) = Cphot_cocco + +!< *** Phaeocystis photosynthesis rate *** +!< *************************************** + if ( pMax_phaeo .lt. tiny .OR. Parave /= Parave .OR. CHL2C_phaeo /= CHL2C_phaeo) then + Cphot_phaeo = zero + else + Cphot_phaeo = pMax_phaeo * (real(one) - exp( -alfa_p * Chl2C_phaeo * PARave / pMax_phaeo)) + VTCphotLigLim_phaeo(k) = Cphot/pMax ! track the light limitation + if (CO2lim) Cphot_phaeo = Cphot_phaeo * PhaeoCO2 ! Added the CO2 dependence + end if + if (Cphot_phaeo .lt. tiny) Cphot_phaeo = zero + VTCphot_phaeo(k) = Cphot_phaeo + + #endif !------------------------------------------------------------------------------- !< chlorophyll degradation @@ -560,6 +637,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & KOchl_dia = deg_Chl_d #if defined (__coccos) KOchl_cocco = deg_Chl_c + KOchl_phaeo = deg_Chl_p #endif if (use_photodamage) then @@ -569,16 +647,20 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & if (pMax .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast /= CHL2C_plast) then KOchl = deg_Chl*0.1d0 else - KOchl = deg_Chl*(real(one) - exp(-alfa * CHL2C_plast * PARave / pMax)) + !KOchl = deg_Chl*(real(one) - exp(-alfa * CHL2C_plast * PARave / pMax)) + KOchl = deg_Chl * CHL2C_plast * PARave KOchl = max((deg_Chl*0.1d0), KOchl) + KOchl = min(KOChl, 0.3d0) end if !< *** Diatoms Chla loss *** !< ************************* if (pMax_dia .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast_dia /= CHL2C_plast_dia) then KOchl_dia = deg_Chl_d*0.1d0 else - KOchl_dia = deg_Chl_d * (real(one) - exp(-alfa_d * CHL2C_plast_dia * PARave / pMax_dia )) + !KOchl_dia = deg_Chl_d * (real(one) - exp(-alfa_d * CHL2C_plast_dia * PARave / pMax_dia )) + KOchl_dia = deg_Chl_d * CHL2C_plast_dia * PARave KOchl_dia = max((deg_Chl_d*0.1d0), KOchl_dia) + KOchl_dia = min(KOChl_dia, 0.3d0) end if !< *** Coccolithophores chla loss *** !< ********************************** @@ -586,8 +668,21 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & if (pMax_cocco .lt. tiny .OR. PARave /= Parave .OR. CHL2C_plast_cocco /= CHL2C_plast_cocco) then KOchl_cocco = deg_Chl_c*0.1d0 else - KOchl_cocco = deg_Chl_c * (real(one) - exp( -alfa_c * CHL2C_plast_cocco * PARave / pMax_cocco )) + !KOchl_cocco = deg_Chl_c * (real(one) - exp( -alfa_c * CHL2C_plast_cocco * PARave / pMax_cocco )) + KOchl_cocco = deg_Chl_c * CHL2C_plast_cocco * PARave KOchl_cocco = max((deg_Chl_c*0.1d0), KOchl_cocco) + KOchl_cocco = min(KOChl_cocco, 0.3d0) + end if + +!< *** Phaeocystis chla loss *** +!< ***************************** + if (pMax_phaeo .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast_phaeo /= CHL2C_plast_phaeo) then + KOchl_phaeo = deg_Chl_p*0.1d0 + else + !KOchl_phaeo = deg_Chl_p*(real(one) - exp(-alfa_p * CHL2C_plast_phaeo * PARave / pMax_phaeo)) + KOchl_phaeo = deg_Chl_p * CHL2C_plast_phaeo * PARave + KOchl_phaeo = max((deg_Chl_p*0.1d0), KOchl_phaeo) + KOchl_phaeo = min(KOChl_phaeo, 0.3d0) end if #endif if (KOchl /= KOchl) then @@ -617,7 +712,16 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & print*,' PARave is ', PARave print*,' pMax_c is ', pMax_cocco stop - end if + end if + if (KOchl_phaeo /= KOchl_phaeo) then + print*,' KOchl_phaeo is ', KOchl_phaeo + print*,' deg_Chl_p is ', deg_Chl_p + print*,' alfa_p is ', alfa_p + print*,' CHL2C_p is ', CHL2C_plast_phaeo + print*,' PARave is ', PARave + print*,' pMax_p is ', pMax_phaeo + stop + end if #endif end if ! photodamage @@ -651,13 +755,18 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & V_cm = V_cm_fact_c limitFacN_cocco = recom_limiter(NMaxSlope, quota_cocco, NCmax_c) N_assim_cocco = V_cm * pMax_cocco * NCUptakeRatio_c & - * limitFacN_cocco * DIN/(DIN + k_din_c) + * limitFacN_cocco * DIN/(DIN + k_din_c) + V_cm = V_cm_fact_p + limitFacN_phaeo = recom_limiter(NMaxSlope, quota_phaeo, NCmax_p) + N_assim_phaeo = V_cm * pMax_phaeo * NCUptakeRatio_p & + * limitFacN_phaeo * DIN/(DIN + k_din_p) #endif limitFacSi = recom_limiter(SiMaxSlope, qSiC, SiCmax) & * limitFacN_dia - Si_assim = V_cm_fact_d * P_cm_d * arrFunc * SiCUptakeRatio & + Si_assim = V_cm_fact_d * Temp_diatoms * SiCUptakeRatio & * limitFacSi * Si/(Si + k_si) + VTSi_assimDia(k) = Si_assim !------------------------------------------------------------------------------- !< *** Iron chemistry *** @@ -682,11 +791,17 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & ChlSynth_dia = N_assim_dia * Chl2N_max_d & * min(real(one),Cphot_dia /(alfa_d * Chl2C_dia * PARave)) end if + +#if defined (__coccos) ChlSynth_cocco = zero -#if defined (__coccos) if (PARave .ge. tiny .AND. PARave .eq. PARave) then ChlSynth_cocco = N_assim_cocco * Chl2N_max_c & * min(real(one),Cphot_cocco /(alfa_c * Chl2C_cocco * PARave)) + end if + ChlSynth_phaeo = zero + if (PARave .ge. tiny .AND. PARave .eq. PARave) then + ChlSynth_phaeo = N_assim_phaeo * Chl2N_max_p & + * min(real(one),Cphot_phaeo /(alfa_p * Chl2C_phaeo * PARave)) end if #endif !------------------------------------------------------------------------------- @@ -700,6 +815,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & phyRespRate_dia = res_phy_d * limitFacN_dia + biosynth * N_assim_dia + biosynthSi * Si_assim #if defined (__coccos) phyRespRate_cocco = res_phy_c * limitFacN_cocco + biosynth * N_assim_cocco + phyRespRate_phaeo = res_phy_p * limitFacN_phaeo + biosynth * N_assim_phaeo ! Phaeocystis #endif !------------------------------------------------------------------------------- @@ -726,6 +842,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif #if defined (__coccos) aux = aux + pzCocco*CoccoN + aux = aux + pzPhaeo*PhaeoN #endif ! ****************************************************************************** varpzPhy = (pzPhy*PhyN)/aux @@ -737,6 +854,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif #if defined (__coccos) varpzCocco = (pzCocco*CoccoN)/aux + varpzPhaeo = (pzPhaeo*PhaeoN)/aux #endif ! ****************************************************************************** fDiaN = varpzDia * DiaN @@ -748,6 +866,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif #if defined (__coccos) fCoccoN = varpzCocco * CoccoN + fPhaeoN = varpzPhaeo * PhaeoN #endif else ! REcoM_Grazing_Variable_Preference = .false. fPhyN = pzPhy * PhyN @@ -758,7 +877,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & fMicZooN = pzMicZoo * MicZooN ! 3Zoo #endif #if defined (__coccos) - fCoccoN = pzCocco * CoccoN + fCoccoN = pzCocco * CoccoN + fPhaeoN = pzPhaeo * PhaeoN #endif end if ! REcoM_Grazing_Variable_Preference @@ -772,6 +892,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif #if defined (__coccos) food = food + fCoccoN + food = food + fPhaeoN #endif ! ****************************************************************************** foodsq = food**2 @@ -788,6 +909,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif #if defined (__coccos) grazingFlux_Cocco = grazingFlux * fCoccoN / food + grazingFlux_Phaeo = grazingFlux * fPhaeoN / food #endif !< *** Grazing efficiency *** @@ -807,7 +929,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif #if defined (__coccos) grazingFluxcarbon_mes = grazingFluxcarbon_mes & - + (grazingFlux_Cocco * recipQuota_Cocco * grazEff) + + (grazingFlux_Cocco * recipQuota_Cocco * grazEff) + grazingFluxcarbon_mes = grazingFluxcarbon_mes & + + (grazingFlux_Phaeo * recipQuota_phaeo * grazEff) #endif !------------------------------------------------------------------------------- @@ -821,8 +945,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !< pzPhy2: Maximum nanophytoplankton preference !< pzDia2: Maximum diatom preference !< pzCocco2: Maximum coccolithophore preference -!< pzDet2: Maximum slow-sinking detritus prefence -!< pzDetZ22: Maximum fast-sinking detritus preference +!< pzPhaeo2: Maximum phaeocystis preference +!< pzDet2: Maximum slow-sinking detritus prefence by macrozooplankton +!< pzDetZ22: Maximum fast-sinking detritus preference by macrozooplankton !< pzHet: Maximum mesozooplankton preference !< pzMicZoo2: Maximum microzooplankton preference @@ -833,6 +958,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & aux = aux + pzMicZoo2 * MicZooN ! 3Zoo #if defined (__coccos) aux = aux + pzCocco2 * CoccoN + aux = aux + pzPhaeo2 * PhaeoN #endif ! ****************************************************************************** varpzPhy2 = (pzPhy2 * PhyN)/aux @@ -840,7 +966,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & varpzMicZoo2 = (pzMicZoo2 * MicZooN)/aux ! 3Zoo #if defined (__coccos) - varpzCocco2 = (pzCocco2 * CoccoN)/aux + varpzCocco2 = (pzCocco2 * CoccoN)/aux + varpzPhaeo2 = (pzPhaeo2 * PhaeoN)/aux #endif varpzHet = (pzHet * HetN)/aux if (Grazing_detritus) then @@ -853,6 +980,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & fMicZooN2 = varpzMicZoo2 * MicZooN ! 3Zoo #if defined (__coccos) fCoccoN2 = varpzCocco2 * CoccoN + fPhaeoN2 = varpzPhaeo2 * PhaeoN #endif fHetN = varpzHet * HetN if (Grazing_detritus) then @@ -865,7 +993,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & fPhyN2 = pzPhy2 * PhyN fMicZooN2 = pzMicZoo2 * MicZooN ! 3Zoo #if defined (__coccos) - fCoccoN2 = pzCocco2 * CoccoN + fCoccoN2 = pzCocco2 * CoccoN + fPhaeoN2 = pzPhaeo2 * PhaeoN #endif fHetN = pzHet * HetN if (Grazing_detritus) then @@ -881,6 +1010,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & food2 = food2 + fMicZooN2 ! 3Zoo #if defined (__coccos) food2 = food2 + fCoccoN2 + food2 = food2 + fPhaeoN2 #endif ! ****************************************************************************** foodsq2 = food2**2 @@ -892,6 +1022,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) grazingFlux_Cocco2 = (grazingFlux2 * fCoccoN2)/food2 + grazingFlux_Phaeo2 = (grazingFlux2 * fPhaeoN2)/food2 #endif grazingFlux_het2 = (grazingFlux2 * fHetN)/food2 if (Grazing_detritus) then @@ -912,35 +1043,41 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & + (grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2) + grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & + + (grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2) #endif !------------------------------------------------------------------------------- ! Third Zooplankton (Microzooplankton) !------------------------------------------------------------------------------- -!< Grazing on small phytoplankton, diatoms and coccolithophore (optional) +!< Grazing on small phytoplankton, diatoms and coccolithophore (optional) and phaeocystis (optional) !< *** Food availability *** !< ************************* !< pzPhy3: Maximum nanophytoplankton preference !< pzDia3: Maximum diatom preference !< pzCocco3: Maximum coccolithophore preference +!< pzPhaeo3: Maximum phaeocystis preference if (REcoM_Grazing_Variable_Preference) then aux = pzPhy3 * PhyN + pzDia3 * DiaN #if defined (__coccos) aux = aux + pzCocco3 * CoccoN + aux = aux + pzPhaeo3 * PhaeoN #endif ! ****************************************************************************** varpzPhy3 = (pzPhy3 * PhyN)/aux varpzDia3 = (pzDia3 * DiaN)/aux #if defined (__coccos) varpzCocco3 = (pzCocco3 * CoccoN)/aux + varpzPhaeo3 = (pzPhaeo3 * PhaeoN)/aux #endif ! ****************************************************************************** fPhyN3 = varpzPhy3 * PhyN fDiaN3 = varpzDia3 * DiaN #if defined (__coccos) fCoccoN3 = varpzCocco3 * CoccoN + fPhaeoN3 = varpzPhaeo3 * PhaeoN #endif else ! REcoM_Grazing_Variable_Preference = .false. @@ -948,6 +1085,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & fDiaN3 = pzDia3 * DiaN #if defined (__coccos) fCoccoN3 = pzCocco3 * CoccoN + fPhaeoN3 = pzPhaeo3 * PhaeoN #endif endif !REcoM_Grazing_Variable_Preference @@ -956,6 +1094,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & food3 = fPhyN3 + fDiaN3 #if defined (__coccos) food3 = food3 + fCoccoN3 + food3 = food3 + fPhaeoN3 #endif ! ****************************************************************************** foodsq3 = food3**2 @@ -964,6 +1103,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & grazingFlux_Dia3 = (grazingFlux3 * fDiaN3)/food3 #if defined (__coccos) grazingFlux_Cocco3 = (grazingFlux3 * fCoccoN3)/food3 + grazingFlux_Phaeo3 = (grazingFlux3 * fPhaeoN3)/food3 #endif #endif @@ -1062,6 +1202,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #endif #if defined (__coccos) aggregationrate = aggregationrate + agg_PP * CoccoN + aggregationrate = aggregationrate + agg_PP * PhaeoN #endif !------------------------------------------------------------------------------- @@ -1153,6 +1294,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & - N_assim_Dia * DiaC & ! --> N assimilation Diatoms #if defined (__coccos) - N_assim_Cocco * CoccoC & ! --> N assimilation Coccolithophore + - N_assim_Phaeo * PhaeoC & ! --> N assimilation Phaeocystis #endif + rho_N * arrFunc * O2Func * DON & ! --> DON remineralization, temperature dependent [day^-1 * mmol/m3] ! O2remin ) * dt_b + sms(k,idin) @@ -1170,6 +1312,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) - Cphot_Cocco * CoccoC & ! --> Coccolithophore photosynthesis + phyRespRate_Cocco * CoccoC & ! --> Coccolithophore respiration + - Cphot_Phaeo * PhaeoC & ! --> Phaeocystis photosynthesis + + phyRespRate_Phaeo * PhaeoC & ! --> Phaeocystis respiration #endif + rho_C1 * arrFunc * O2Func * EOC & ! --> Remineralization of DOC ! NEW O2remin + HetRespFlux & ! --> Mesozooplankton respiration @@ -1214,7 +1358,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + 1.0625 * N_assim * PhyC & + 1.0625 * N_assim_Dia * DiaC & #if defined (__coccos) - + 1.0625 * N_assim_Cocco * CoccoC & + + 1.0625 * N_assim_Cocco * CoccoC & + + 1.0625 * N_assim_Phaeo * PhaeoC & #endif - 1.0625 * rho_N * arrFunc * O2Func * DON & ! O2remin + 2.d0 * calc_diss * DetCalc & @@ -1273,7 +1418,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + chlSynth * PhyC & ! --> Chl-a synthesis - KOchl * PhyChl & ! --> Degradation loss - aggregationRate * PhyChl & ! --> Aggregation loss - - grazingFlux_phy * Chl2N & ! --> Grazing loss + - grazingFlux_phy * Chl2N & ! --> Grazing loss #if defined (__3Zoo2Det) - grazingFlux_phy2 * Chl2N & - grazingFlux_phy3 * Chl2N & ! 3Zoo @@ -1296,6 +1441,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Cocco3 & ! --> grazing on coccolithophores by third zooplankton - grazingFlux_Cocco3 * grazEff3 & ! --> fraction of grazingFlux_Cocco3 into microzooplankton pool + aggregationRate * CoccoN & + + grazingFlux_Phaeo3 * & ! --> grazing on phaeocystis by third zooplankton + - grazingFlux_Phaeo3 * grazEff3 & ! --> fraction of grazingFlux_Phaeo3 into microzooplankton pool + + aggregationRate * PhaeoN & #endif - grazingFlux_Det * grazEff & ! --> grazing of first zoo (meso) on first detritus class - grazingFlux_Det2 * grazEff2 & ! --> grazing of second zoo (macro) on first detritus class @@ -1306,7 +1454,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & ) * dt_b + sms(k,idetn) #else sms(k,idetn) = ( & - + grazingFlux_phy & ! Technically it is mesooooooooooooooooo + + grazingFlux_phy & ! Technically it is mesooooooooooooooooo - grazingFlux_phy * grazEff & + grazingFlux_dia & - grazingFlux_dia * grazEff & @@ -1314,6 +1462,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Cocco & - grazingFlux_Cocco * grazEff & + aggregationRate * CoccoN & + + grazingFlux_Phaeo * & + - grazingFlux_Phaeo * grazEff & + + aggregationRate * PhaeoN & #endif - grazingFlux_Det * grazEff & ! Sloppy feeding is thought because of grazing flux multiplied with grazeff - grazingFlux_Det2 * grazEff2 & !!!!!!!!!!CHECK @@ -1331,6 +1482,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) + grazingFlux_Cocco3 & + aggregationRate * CoccoN & + + grazingFlux_Phaeo3 * & + + aggregationRate * PhaeoN & #endif - grazingFlux * grazEff3 & + aggregationRate * PhyN & @@ -1344,7 +1497,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_dia & #if defined (__coccos) + grazingFlux_Cocco & - + aggregationRate * CoccoN & + + aggregationRate * CoccoN & + + grazingFlux_Phaeo * & + + aggregationRate * PhaeoN & #endif - grazingFlux * grazEff & + aggregationRate * PhyN & @@ -1368,6 +1523,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Cocco3 * recipQuota_Cocco & - grazingFlux_Cocco3 * recipQuota_Cocco * grazEff3 & + aggregationRate * CoccoC & + + grazingFlux_Phaeo3 * recipQuota_Phaeo & + - grazingFlux_Phaeo3 * recipQuota_Phaeo * grazEff3 & + + aggregationRate * PhaeoC & #endif - grazingFlux_Det * recipDet * grazEff & - grazingFlux_Det2 * recipDet * grazEff2 & ! corrected recipDet2 -> recipDet @@ -1386,6 +1544,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Cocco * recipQuota_Cocco & - grazingFlux_Cocco * recipQuota_Cocco * grazEff & + aggregationRate * CoccoC & + + grazingFlux_Phaeo * recipQuota_Phaeo & + - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & + + aggregationRate * PhaeoC & #endif - grazingFlux_Det * recipDet * grazEff & ! - grazingFlux_Det2 * recipDet2 * grazEff & !!!!!! CHECK @@ -1406,6 +1567,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Cocco3 * recipQuota_Cocco & - grazingFlux_Cocco3 * recipQuota_Cocco * grazEff3 & + aggregationRate * CoccoC & + + grazingFlux_Phaeo3 * recipQuota_Phaeo & + - grazingFlux_Phaeo3 * recipQuota_Phaeo * grazEff3 & + + aggregationRate * PhaeoC & #endif + aggregationRate * PhyC & + aggregationRate * DiaC & @@ -1421,7 +1585,10 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) + grazingFlux_Cocco * recipQuota_Cocco & - grazingFlux_Cocco * recipQuota_Cocco * grazEff & - + aggregationRate * CoccoC & + + aggregationRate * CoccoC & + + grazingFlux_Phaeo * recipQuota_Phaeo & + - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & + + aggregationRate * PhaeoC & #endif + aggregationRate * phyC & + aggregationRate * DiaC & @@ -1437,22 +1604,23 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !____________________________________________________________ !< Heterotrophic N sms(k,ihetn) = ( & - + grazingFlux * grazEff & ! --> Grazing on phytoplankton -> okay, because of recipQuota + + grazingFlux * grazEff & ! --> Grazing on phytoplankton -> okay, because of recipQuota #if defined (__3Zoo2Det) - grazingFlux_het2 & - Mesfecalloss_n & ! 3Zoo #endif - - hetLossFlux & ! --> Mortality - - lossN_z * HetN & ! --> Excretion of DON + - hetLossFlux & ! --> Mortality + - lossN_z * HetN & ! --> Excretion of DON ) * dt_b + sms(k,ihetn) !____________________________________________________________ !< Heterotrophic C if (Grazing_detritus) then sms(k,ihetc) = ( & - + grazingFlux_phy * recipQuota * grazEff & ! --> Grazing on small phytoplankton - + grazingFlux_Dia * recipQuota_Dia * grazEff & ! --> Grazing on diatom + + grazingFlux_phy * recipQuota * grazEff & ! --> Grazing on small phytoplankton + + grazingFlux_Dia * recipQuota_Dia * grazEff & ! --> Grazing on diatom #if defined (__coccos) - + grazingFlux_Cocco * recipQuota_Cocco * grazEff & + + grazingFlux_Cocco * recipQuota_Cocco * grazEff & + + grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & #endif #if defined (__3Zoo2Det) + grazingFlux_miczoo * recipQZoo3 * grazEff & ! 3Zoo @@ -1461,25 +1629,26 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & - Mesfecalloss_c & ! 3Zoo #endif + grazingFlux_Det * recipDet * grazEff & ! --> Grazing on detritus - - hetLossFlux * recipQZoo & ! --> Mortality loss - - lossC_z * HetC & ! --> Excretion loss - - hetRespFlux & ! --> REspiration loss + - hetLossFlux * recipQZoo & ! --> Mortality loss + - lossC_z * HetC & ! --> Excretion loss + - hetRespFlux & ! --> REspiration loss ) * dt_b + sms(k,ihetc) else sms(k,ihetc) = ( & - + grazingFlux_phy * recipQuota * grazEff & - + grazingFlux_Dia * recipQuota_Dia * grazEff & + + grazingFlux_phy * recipQuota * grazEff & + + grazingFlux_Dia * recipQuota_Dia * grazEff & #if defined (__coccos) + grazingFlux_Cocco * recipQuota_Cocco * grazEff & + + grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & #endif #if defined (__3Zoo2Det) + grazingFlux_miczoo * recipQZoo3 * grazEff & ! 3Zoo - grazingFlux_het2 * recipQZoo & - Mesfecalloss_c & ! 3Zoo #endif - - hetLossFlux * recipQZoo & - - lossC_z * HetC & - - hetRespFlux & + - hetLossFlux * recipQZoo & + - lossC_z * HetC & + - hetRespFlux & ) * dt_b + sms(k,ihetc) endif @@ -1505,6 +1674,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & #if defined (__coccos) + grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & + + grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & #endif + grazingFlux_het2 * recipQZoo * grazEff2 & + grazingFlux_miczoo2* recipQZoo3 * grazEff2 & ! 3Zoo @@ -1521,6 +1691,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & #if defined (__coccos) + grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & + + grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & #endif + grazingFlux_het2 * recipQZoo * grazEff2 & + grazingFlux_miczoo2* recipQZoo3 * grazEff2 & ! 3Zoo @@ -1551,6 +1722,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Dia3 * recipQuota_Dia * grazEff3 & #if defined (__coccos) + grazingFlux_Cocco3 * recipQuota_Cocco * grazEff3 & + + grazingFlux_Phaeo3 * recipQuota_Phaeo * grazEff3 & #endif - MicZooLossFlux * recipQZoo3 & - grazingFlux_miczoo * recipQZoo3 & @@ -1563,7 +1735,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !< ***************************** !____________________________________________________________ -!< Second Zooplankton Detritus N +!< Second Zooplankton (Macro) Detritus N if (Grazing_detritus) then sms(k,idetz2n) = ( & + grazingFlux_phy2 & @@ -1575,6 +1747,10 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & - grazingFlux_Cocco * grazEff & + grazingFlux_Cocco2 & - grazingFlux_Cocco2 * grazEff2 & + + grazingFlux_Phaeo & + - grazingFlux_Phaeo * grazEff & + + grazingFlux_Phaeo2 & + - grazingFlux_Phaeo2 * grazEff2 & #endif + grazingFlux_het2 & - grazingFlux_het2 * grazEff2 & @@ -1601,6 +1777,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) + grazingFlux_Cocco & + grazingFlux_Cocco2 & + + grazingFlux_Phaeo & + + grazingFlux_Phaeo2 & #endif + grazingFlux_het2 & + grazingFlux_miczoo2 & @@ -1629,7 +1807,11 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Cocco * recipQuota_Cocco & - grazingFlux_Cocco * recipQuota_Cocco * grazEff & + grazingFlux_Cocco2 * recipQuota_Cocco & - - grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & + - grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & + + grazingFlux_Phaeo * recipQuota_Phaeo & + - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & + + grazingFlux_Phaeo2 * recipQuota_Phaeo & + - grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & #endif + grazingFlux_het2 * recipQZoo & - grazingFlux_het2 * recipQZoo * grazEff2 & @@ -1659,7 +1841,11 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + grazingFlux_Cocco * recipQuota_Cocco & - grazingFlux_Cocco * recipQuota_Cocco * grazEff & + grazingFlux_Cocco2 * recipQuota_Cocco & - - grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & + - grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & + + grazingFlux_Phaeo * recipQuota_Phaeo & + - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & + + grazingFlux_Phaeo2 * recipQuota_Phaeo & + - grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & #endif + grazingFlux_het2 * recipQZoo & - grazingFlux_het2 * recipQZoo * grazEff2 & @@ -1708,7 +1894,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + lossN * limitFacN * phyN & + lossN_d * limitFacN_Dia * DiaN & #if defined (__coccos) - + lossN_c * limitFacN_Cocco * CoccoN & + + lossN_c * limitFacN_Cocco * CoccoN & + + lossN_p * limitFacN_Phaeo * PhaeoN & #endif + reminN * arrFunc * O2Func * DetN & + lossN_z * HetN & @@ -1728,6 +1915,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + lossC_d * limitFacN_dia * DiaC & #if defined (__coccos) + lossC_c * limitFacN_cocco * CoccoC & + + lossC_p * limitFacN_Phaeo * PhaeoC & #endif + reminC * arrFunc * O2Func * DetC & + lossC_z * HetC & @@ -1737,7 +1925,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & + lossC_z3 * MicZooC & ! 3Zoo #endif - rho_c1 * arrFunc * O2Func * EOC & ! O2remin - ) * dt_b + sms(k,idoc) + ) * dt_b + sms(k,idoc) !< *** Diatoms *** !< *************** @@ -1779,7 +1967,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & - grazingFlux_dia2 * recipQuota_dia & - grazingFlux_dia3 * recipQuota_dia & ! 3Zoo #endif - ) * dt_b + sms(k,idiac) + ) * dt_b + sms(k,idiac) !____________________________________________________________ !< Diatom Chl @@ -1881,8 +2069,63 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & - grazingFlux_Cocco3 * Chl2N_cocco & ! 3Zoo #endif ) * dt_b + sms(k,icchl) + +!< *** Phaeocystis *** +!< ******************* + +!____________________________________________________________ +!< Phaeocystis N + +!< lossN_p: Phaeocystis loss of organic N compounds [day^-1] + + sms(k,iphan) = ( & + + N_assim_phaeo * PhaeoC & ! --> N assimilation + - lossN_p * limitFacN_phaeo * PhaeoN & ! --> DON excretion + - aggregationRate * PhaeoN & ! --> Aggregation loss + - grazingFlux_phaeo & ! --> Grazing loss +#if defined (__3Zoo2Det) + - grazingFlux_phaeo2 & + - grazingFlux_phaeo3 & ! 3Zoo +#endif + ) * dt_b + sms(k,iphan) +!____________________________________________________________ +!< Phaeocystis C + +!< lossC_p: Phaeocystis loss of carbon [day^-1] +!< When N : C ratio becomes too high, excretion of DOC is downregulated +!< by the limiter function limitFacN +!< aggregationRate transfers C to the detritus pool + + sms(k,iphac) = ( & + + Cphot_phaeo * PhaeoC & ! --> Photosynthesis ---->/ + - lossC_p * limitFacN_phaeo * PhaeoC & ! --> Excretion of DOC / Net photosynthesis + - phyRespRate_phaeo * PhaeoC & ! --> Respiration ----->/ + - aggregationRate * PhaeoC & ! --> Aggregation loss + - grazingFlux_phaeo * recipQuota_phaeo & ! --> Grazing loss +#if defined (__3Zoo2Det) + - grazingFlux_phaeo2 * recipQuota_phaeo & + - grazingFlux_phaeo3 * recipQuota_phaeo & ! 3Zoo +#endif + ) * dt_b + sms(k,iphac) +!__________________________________________________________ +! Phaeocystis ChlA + +!< Chl2N: Conversion factor from mmolN to mgChla +!< Chl2N = PhyChl/PhyN + + sms(k,iphachl) = ( & + + chlSynth_phaeo * PhaeoC & ! --> Chl-a synthesis + - KOchl_phaeo * PhaeoChl & ! --> Degradation loss + - aggregationRate * PhaeoChl & ! --> Aggregation loss + - grazingFlux_phaeo * Chl2N_phaeo & ! --> Grazing loss +#if defined (__3Zoo2Det) + - grazingFlux_phaeo2 * Chl2N_phaeo & + - grazingFlux_phaeo3 * Chl2N_phaeo & ! 3Zoo +#endif + ) * dt_b + sms(k,iphachl) #endif + !< *** Silicate *** !< **************** @@ -1952,6 +2195,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) - N_assim_cocco * CoccoC & + lossN_c * limitFacN_cocco * CoccoN & + - N_assim_phaeo * PhaeoC & + + lossN_p * limitFacN_phaeo * PhaeoN & #endif + lossN * limitFacN * PhyN & ! --> Excretion from small pythoplankton + lossN_d * limitFacN_dia * DiaN & ! --> Excretion from diatom @@ -2061,6 +2306,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & #if defined (__coccos) + Cphot_cocco * CoccoC & - phyRespRate_cocco * CoccoC & + + Cphot_phaeo * PhaeoC & + - phyRespRate_phaeo * PhaeoC & #endif - rho_C1 * arrFunc * O2Func * EOC & ! O2remin - hetRespFlux & @@ -2246,8 +2493,8 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & end if ! ciso !------------------------------------------------------------------------------- ! Diagnostics: Averaged rates - - recipbiostep = 1.d0/real(biostep) + + recipbiostep = 1.d0/real(biostep) if (Diags) then !*** Net primary production [mmol C /(m3 * day)] vertNPPn(k) = vertNPPn(k) + ( & @@ -2258,13 +2505,17 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & vertNPPd(k) = vertNPPd(k) + ( & + Cphot_dia * DiaC & - PhyRespRate_dia * DiaC & - ) * recipbiostep + ) * recipbiostep #if defined (__coccos) vertNPPc(k) = vertNPPc(k) + ( & + Cphot_cocco * CoccoC & - PhyRespRate_cocco * CoccoC & ) * recipbiostep + vertNPPp(k) = vertNPPp(k) + ( & + + Cphot_phaeo * PhaeoC & + - PhyRespRate_phaeo * PhaeoC & + ) * recipbiostep #endif !*** Gross primary production [mmol C /(m3 * day)] @@ -2274,12 +2525,15 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & vertGPPd(k) = vertGPPd(k) + ( & + Cphot_dia * DiaC & - ) * recipbiostep + ) * recipbiostep #if defined (__coccos) vertGPPc(k) = vertGPPc(k) + ( & + Cphot_cocco * CoccoC & ) * recipbiostep + vertGPPp(k) = vertGPPp(k) + ( & + + Cphot_phaeo * PhaeoC & + ) * recipbiostep #endif !*** Net N-assimilation [mmol N/(m3 * day)] @@ -2291,13 +2545,17 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & vertNNAd(k) = vertNNAd(k) + ( & + N_assim_dia * DiaC & - lossN * limitFacN_dia * DiaN & - ) * recipbiostep + ) * recipbiostep #if defined (__coccos) vertNNAc(k) = vertNNAc(k) + ( & + N_assim_cocco * CoccoC & - lossN * limitFacN_cocco * CoccoN & ) * recipbiostep + vertNNAp(k) = vertNNAp(k) + ( & + + N_assim_phaeo * PhaeoC & + - lossN * limitFacN_phaeo * PhaeoN & + ) * recipbiostep #endif !*** Changed to chlorophyll degradation (commented out gross N-assimilation below) @@ -2313,6 +2571,9 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & vertChldegc(k) = vertChldegc(k) + ( & + KOchl_cocco & ) * recipbiostep + vertChldegp(k) = vertChldegp(k) + ( & + + KOchl_phaeo & + ) * recipbiostep #endif !*** zooplankton1 respiration @@ -2350,6 +2611,10 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & vertaggc(k) = vertaggc(k) + ( & + aggregationrate * CoccoC & ) * recipbiostep +!*** aggregation by phaeocystis + vertaggp(k) = vertaggp(k) + ( & + + aggregationrate * PhaeoC & + ) * recipbiostep #endif !*** excrection of DOC by phytoplankton @@ -2367,6 +2632,10 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & vertdocexc(k) = vertdocexc(k) + ( & + lossC_c * limitFacN_cocco * CoccoC & ) * recipbiostep +!*** excretion of DOC by phaeocystis + vertdocexp(k) = vertdocexp(k) + ( & + + lossC_p * limitFacN_phaeo * PhaeoC & + ) * recipbiostep #endif !*** calcification @@ -2382,14 +2651,17 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & ! dia respiration vertrespd(k) = vertrespd(k) + ( & + PhyRespRate_dia * DiaC & - ) * recipbiostep + ) * recipbiostep #if defined (__coccos) ! cocco resipration vertrespc(k) = vertrespc(k) + ( & + PhyRespRate_cocco * CoccoC & ) * recipbiostep - +! phaeo resipration + vertrespp(k) = vertrespp(k) + ( & + + PhyRespRate_phaeo * PhaeoC & + ) * recipbiostep #endif endif end do ! Main vertikal loop ends @@ -2463,7 +2735,7 @@ function recom_limiter(slope,qa,qb) Real(kind=8) :: recom_limiter Real(kind=8) :: slope, qa, qb Real(kind=8) :: dq - + dq = qa - qb if (REcoM_Geider_limiter) then recom_limiter = max(min( -slope*dq, 1.d0),0.d0) @@ -2532,7 +2804,7 @@ function iron_chemistry(Fe, totalLigand, ligandStabConst) b = ligandstabConst * (Fe - totalLigand) + 1.d0 c = -totalLigand discrim = b*b - 4.d0 * a * c - + if (a .ne. 0.d0 .and. discrim .ge. 0.d0) then ligand = ( -b + sqrt(discrim) ) / (2.d0 * a) FeL = totalLigand - ligand diff --git a/src/io_meandata.F90 b/src/io_meandata.F90 index 44e702bd7..8f77eb4ae 100644 --- a/src/io_meandata.F90 +++ b/src/io_meandata.F90 @@ -611,6 +611,30 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) if (use_REcoM) then ! call def_stream(nod2D, myDim_nod2D, 'GNAc','Gross N-assimilation coccolithophores','mmolN/(m2*d)', diags2D(:,12), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, mesh) ! NEW call def_stream(nod2D, myDim_nod2D, 'ChlDegc','Chlorophyll degradation coccolithophores','1/d', Chldegc, io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! NEW + endif + +CASE ('NPPp ') + if (use_REcoM) then +! call def_stream(nod2D, myDim_nod2D, 'NPPp','Mean NPP phaeocystis','mmolC/(m2*d)', diags2D(:,9), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, mesh) ! NEW + call def_stream(nod2D, myDim_nod2D, 'NPPp','Mean NPP phaeocystis','mmolC/(m2*d)', NPPp, io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis + end if + +CASE ('GPPp ') + if (use_REcoM) then +! call def_stream(nod2D, myDim_nod2D, 'GPPp','Mean GPP phaeocystis','mmolC/(m2*d)', diags2D(:,10), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, mesh) ! NEW + call def_stream(nod2D, myDim_nod2D, 'GPPp','Mean GPP phaeocystis','mmolC/(m2*d)', GPPp, io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis + end if + +CASE ('NNAp ') + if (use_REcoM) then +! call def_stream(nod2D, myDim_nod2D, 'NNAp','Net N-assimilation phaeocystis','mmolN/(m2*d)', diags2D(:,11), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, mesh) ! NEW + call def_stream(nod2D, myDim_nod2D, 'NNAp','Net N-assimilation phaeocystis','mmolN/(m2*d)', NNAp, io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis + endif + +CASE ('Chldegp ') + if (use_REcoM) then +! call def_stream(nod2D, myDim_nod2D, 'GNAp','Gross N-assimilation phaeocystis','mmolN/(m2*d)', diags2D(:,12), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, mesh) ! NEW + call def_stream(nod2D, myDim_nod2D, 'ChlDegp','Chlorophyll degradation phaeocystis','1/d', Chldegp, io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis endif #endif @@ -669,6 +693,11 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'aggc','Aggregation of coccolithophores', 'mmolC/m2/d', aggc(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) endif +CASE ('aggp ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'aggp','Aggregation of phaeocystis', 'mmolC/(m2*d)', aggp(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis + endif + CASE ('docexn ') if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'docexn','DOC excretion by small phytoplankton', 'mmolC/m2/d', docexn(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) @@ -684,6 +713,11 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'docexc','DOC excretion by coccolithophores', 'mmolC/m2/d', docexc(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) endif +CASE ('docexp ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'docexp','DOC excretion by phaeocystis', 'mmolC/(m2*d)', docexp(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis + endif + CASE ('respn ') if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'respn','Respiration by small phytoplankton', 'mmolC/m2/d', respn(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) @@ -699,6 +733,11 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'respc','Respiration by coccolithophores', 'mmolC/(m2*d)', respc(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) endif +CASE ('respp ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'respp','Respiration by phaeocystis', 'mmolC/(m2*d)', respp(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis + endif + CASE ('NPPn3D ') if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'NPPn3D','Net primary production of small phytoplankton', 'mmolC/m2/d', NPPn3D(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) @@ -713,6 +752,117 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'NPPc3D','Net primary production of coccolithophores', 'mmolC/m2/d', NPPc3D(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) endif + +CASE ('NPPp3D ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'NPPp3D','Net primary production of phaeocystis', 'mmolC/(m2*d)', NPPp3D(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! Phaeocystis + endif + +CASE ('TTemp_diatoms ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TTemp_diatoms','Temperature dependence of diatoms PS', 'per day',TTemp_diatoms(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TTemp_phyto ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TTemp_phyto','Temperature dependence of small phytoplankton PS', 'per day',TTemp_phyto(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TTemp_cocco ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TTemp_cocco','Temperature dependence of coccolithophores PS', 'per day',TTemp_cocco(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TTemp_phaeo ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TTemp_phaeo','Temperature dependence of phaeocystis PS', 'per day',TTemp_phaeo(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TPhyCO2 ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TPhyCO2','Effect of CO2 of phyto growth/PS', 'per day',TPhyCO2(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TDiaCO2 ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TDiaCO2','Effect of CO2 of phyto growth/PS', 'per day',TDiaCO2(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCoccoCO2 ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCoccoCO2','Effect of CO2 of phyto growth/PS', 'per day',TCoccoCO2(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TPhaeoCO2 ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TPhaeoCO2','Effect of CO2 of phyto growth/PS', 'per day',TPhaeoCO2(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TqLF_phyto ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TqLF_phyto','Nutrient limitation effect of phyto PS', 'per day',TqlimitFac_phyto(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TqLF_diatoms ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TqLF_diatoms','Nutrient limitation effect of diatoms PS', 'per day',TqlimitFac_diatoms(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TqLF_cocco ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TqLF_cocco','Nutrient limitation effect of diatoms PS', 'per day',TqlimitFac_cocco(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TqLF_phaeo ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TqLF_phaeo','Nutrient limitation effect of diatoms PS', 'per day', TqlimitFac_phaeo(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphotLL_phyto ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphotLL_phyto','Light limitation on phyto PS', 'per day', TCphotLigLim_phyto(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphotLL_dia ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphotLL_dia','Light limitation on diatoms PS', 'per day', TCphotLigLim_diatoms(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphotLL_cocco ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphotLL_cocco','Light limitation on phyto PS', 'per day',TCphotLigLim_cocco(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphotLL_phaeo ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphotLL_phaeo','Light limitation on phyto PS', 'per day',TCphotLigLim_phaeo(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphot_phyto ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphot_phyto','Light limitation on phyto PS', 'per day',TCphot_phyto(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphot_diatoms ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphot_diatoms','Light limitation on phyto PS', 'per day',TCphot_diatoms(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphot_cocco ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphot_cocco','Light limitation on phyto PS', 'per day',TCphot_cocco(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TCphot_phaeo ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TCphot_phaeo','Light limitation on phyto PS', 'per day',TCphot_phaeo(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + +CASE ('TSi_assimDia ') + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'TSi_assimDia','Silicate assimilation', 'per day',TSi_assimDia(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + #endif !CASE ('otracers ') @@ -908,10 +1058,25 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) else if (tracers%data(j)%ID==1032) then if (use_REcoM) then - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'Zoo3N', 'Zoo3N', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'PhaeoN', 'PhaeoN', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! NEW endif else if (tracers%data(j)%ID==1033) then + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'PhaeoC', 'PhaeoC', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! NEW + endif + + else if (tracers%data(j)%ID==1034) then + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'PhaeoChl', 'PhaeoChl', '[mg/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! NEW + endif + + else if (tracers%data(j)%ID==1035) then + if (use_REcoM) then + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'Zoo3N', 'Zoo3N', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + endif + + else if (tracers%data(j)%ID==1036) then if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'Zoo3C', 'Zoo3C', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) endif @@ -922,8 +1087,8 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) #if defined(__recom) end if #endif - end do + end do CASE ('sigma0 ') call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'sigma0', 'potential density', 'kg/m3', density_m_rho0(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) @@ -1498,10 +1663,13 @@ subroutine create_new_file(entry, ice, dynamics, partit, mesh) call assert_nf( nf_def_var(entry%ncid, entry%dimname(1), NF_DOUBLE, 1, entry%dimID(1), entry%dimvarID(1)), __LINE__) if (entry%dimname(1)=='nz') then call assert_nf( nf_put_att_text(entry%ncid, entry%dimvarID(1), 'long_name', len_trim('depth at layer interface'),'depth at layer interface'), __LINE__) + elseif (entry%dimname(1)=='nz1') then call assert_nf( nf_put_att_text(entry%ncid, entry%dimvarID(1), 'long_name', len_trim('depth at layer midpoint'),'depth at layer midpoint'), __LINE__) + elseif (entry%dimname(1)=='ncat') then call assert_nf( nf_put_att_text(entry%ncid, entry%dimvarID(1), 'long_name', len_trim('sea-ice thickness class'),'sea-ice thickness class'), __LINE__) + else if (partit%mype==0) write(*,*) 'WARNING: unknown first dimension in 2d mean I/O data' end if diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 17570e46f..b5cf271c7 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -1691,9 +1691,9 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) CASE (1022) ! OXY bc_surface= dt*GloO2flux_seaicemask(n) ! bc_surface=0.0_WP - CASE (1023:1033) + CASE (1023:1036) bc_surface=0.0_WP ! OG added bc for recom fields - CASE (1302) ! Before (1033) ! DIC_13 + CASE (1302) ! Before (1037) ! DIC_13 #if defined (__ciso) if (ciso) then diff --git a/src/oce_setup_step.F90 b/src/oce_setup_step.F90 index 51d310f77..b5fb10584 100755 --- a/src/oce_setup_step.F90 +++ b/src/oce_setup_step.F90 @@ -1124,7 +1124,7 @@ SUBROUTINE oce_initial_state(tracers, partit, mesh) write (id_string, "(I4)") id write(*,*) 'initializing '//trim(i_string)//'th tracer with ID='//trim(id_string) end if - CASE (1023:1033) + CASE (1023:1036) tracers%data(i)%values(:,:)=0.0_WP if (mype==0) then write (i_string, "(I4)") i From 209e0764444a21073bfa6af335942b9ec834c0af Mon Sep 17 00:00:00 2001 From: ogurses Date: Fri, 27 Jun 2025 10:35:33 +0200 Subject: [PATCH 08/66] fix(recom) Add missing temperature function code Correct temperature function for small phytoplankton and diatoms. Previous update for the fouth phytoplankton class and new temperature functions for small phytoplankton and diatoms resulted in very low Phaeocystis biomass. We recognised that this is related to missing code lines in the temperature function which we correct with this update. --- src/int_recom/recom_sms.F90 | 40 ++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/int_recom/recom_sms.F90 b/src/int_recom/recom_sms.F90 index d43699f02..67654a495 100644 --- a/src/int_recom/recom_sms.F90 +++ b/src/int_recom/recom_sms.F90 @@ -331,25 +331,31 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & rTloc = real(one)/(Temp(k) + C2K) arrFunc = exp(-Ae * ( rTloc - rTref)) -#if defined (__coccos) - CoccoTFunc = max(0.1419d0 * Temp(k)**0.8151d0,tiny) ! Function from Fielding 2013; is based on observational GR, but range fits best to ours -#endif + +! The following part defines the new temperature functions with are ONLY used in the 4P version with Coccos and Phaeo (new temp +! functions in 2p version would need to be tuned first) + +! #if defined (__coccos) ! (old Cocco temperature function) +! CoccoTFunc = max(0.1419d0 * Temp(k)**0.8151d0,tiny) ! Function from Fielding 2013; is based on observational GR, but range fits best to ours +! #endif !< New phytoplankton temperature functions +#if defined (__coccos) + ! Small Phytoplankton: Temp_phyto = exp(ord_phy + expon_phy * Temp(k)) ! NEW MODIFIED VTTemp_phyto(k) = Temp_phyto + + ! Diatoms: Temp_diatoms = exp(ord_d + expon_d * Temp(k)) ! NEW MODIFIED 2 parameters in new function ordonnee and exponent VTTemp_diatoms(k) = Temp_diatoms ! track the output here - - -#if defined (__coccos) ! Coccolithophores: if (Temp(k) < 5.0) then Temp_cocco = tiny else - Temp_cocco = max(exp(ord_cocco + expon_cocco * Temp(k)), tiny) + Temp_cocco = exp(ord_cocco + expon_cocco * Temp(k)) + Temp_cocco = max(Temp_cocco, tiny) end if VTTemp_cocco(k) = Temp_cocco @@ -357,7 +363,6 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & ! Blanchard function (Grimaud et al., 2017): Temp_phaeo = uopt_phaeo * ((Tmax_phaeo-Temp(k))/(Tmax_phaeo-Topt_phaeo))**beta_phaeo * exp(-beta_phaeo * (Topt_phaeo-Temp(k))/(Tmax_phaeo-Topt_phaeo)) Temp_phaeo = max(Temp_phaeo, tiny) - VTTemp_phaeo(k) = Temp_phaeo #endif @@ -550,10 +555,15 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !< *** Small phytoplankton *** !< *************************** qlimitFac = recom_limiter(NMinSlope, NCmin, quota) ! Eqn A55 - feLimitFac = Fe/(k_Fe + Fe) ! Use Michaelis–Menten kinetics + feLimitFac = Fe/(k_Fe + Fe) ! Use Michaelis-Menten kinetics qlimitFac = min(qlimitFac, feLimitFac) ! Liebig law of the minimum pMax = P_cm * qlimitFac * arrFunc ! Maximum value of C-specific rate of photosynthesis - + +#if defined (__coccos) +! for 4p version which contains new Temperature functions from Hannah + pMax = qlimitFac * Temp_phyto ! Maximum value of C-specific rate of photosynthesis +#endif + !< *** Diatoms *** !< *************** qlimitFac = recom_limiter(NMinSlope, NCmin_d, quota_dia) @@ -563,13 +573,19 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & qlimitFac = min(qlimitFac, feLimitFac) pMax_dia = P_cm_d * qlimitFac * arrFunc +#if defined (__coccos) +! for 4p version which contains new Temperature functions from Hannah + pMax_dia = qlimitFac * Temp_diatoms +#endif + !< *** Coccolithophores *** !< ************************ #if defined (__coccos) qlimitFac = recom_limiter(NMinSlope, NCmin_c, quota_cocco) feLimitFac = Fe/(k_Fe_c + Fe) qlimitFac = min(qlimitFac, feLimitFac) - pMax_cocco = P_cm_c * qlimitFac * CoccoTFunc ! Here the T dependency is changed +! pMax_cocco = P_cm_c * qlimitFac * CoccoTFunc ! Here the T dependency is changed + pMax_cocco = qlimitFac * Temp_cocco ! Here the T dependency is changed !< *** Phaeocystis *** !< ******************* @@ -744,7 +760,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & V_cm = V_cm_fact limitFacN = recom_limiter(NMaxSlope, quota, NCmax) N_assim = V_cm * pMax * NCuptakeRatio & ! [mmol N / (mmol C * day)] - * limitFacN * (DIN/(DIN + k_din)) ! Michaelis–Menten kinetics + * limitFacN * (DIN/(DIN + k_din)) ! Michaelis-Menten kinetics V_cm = V_cm_fact_d limitFacN_dia = recom_limiter(NMaxSlope, quota_dia, NCmax_d) From 0a0166976bb03fdc7bade4d1c35d3d0e0932a314 Mon Sep 17 00:00:00 2001 From: ogurses Date: Tue, 8 Jul 2025 23:31:56 +0200 Subject: [PATCH 09/66] fix(recom): Add detritus sinking velocity and K0, solubility to diagnostics Use namelist.io to activate diagnostics. Sinking velocity of particle (fast and slow) are calculated but not written into a file before. We fix the missing diagnostics for sinking velocity of detritus classes. Besides we Extracted the K0, solubility which is computed in gasx.F90. --- config/bin_2p3z2d/namelist.recom | 2 +- src/int_recom/recom/gasx.F90 | 10 +- src/int_recom/recom/vars.F90 | 2 +- src/int_recom/recom_extra.F90 | 191 ++++++++++++++++--------------- src/int_recom/recom_forcing.F90 | 2 +- src/int_recom/recom_init.F90 | 5 + src/int_recom/recom_main.F90 | 23 ++-- src/int_recom/recom_sinking.F90 | 7 ++ src/io_meandata.F90 | 20 ++-- src/oce_ale_tracer.F90 | 13 +++ 10 files changed, 155 insertions(+), 120 deletions(-) diff --git a/config/bin_2p3z2d/namelist.recom b/config/bin_2p3z2d/namelist.recom index 24145b956..8e4781cd3 100644 --- a/config/bin_2p3z2d/namelist.recom +++ b/config/bin_2p3z2d/namelist.recom @@ -49,7 +49,7 @@ useErosion = .false. NitrogenSS = .false. ! When set to true, external sources and sinks of nitrogen are activated (Riverine, aeolian and denitrification) useAeolianN = .false. ! When set to true, aeolian nitrogen deposition is activated firstyearoffesomcycle = 1958 ! The first year of the actual physical forcing (e.g. JRA-55) used -lastyearoffesomcycle = 2022 ! Last year of the actual physical forcing used +lastyearoffesomcycle = 2023 ! Last year of the actual physical forcing used numofCO2cycles = 1 ! Number of cycles of the forcing planned currentCO2cycle = 1 ! Which CO2 cycle we are currently running DIC_PI = .true. diff --git a/src/int_recom/recom/gasx.F90 b/src/int_recom/recom/gasx.F90 index bd5473527..c4d2d8b01 100755 --- a/src/int_recom/recom/gasx.F90 +++ b/src/int_recom/recom/gasx.F90 @@ -6,7 +6,7 @@ MODULE gasx !> Computes air-sea CO2 flux & surface-ocean carbonate system vars (pH, CO2*, HCO3- and CO32-, OmegaA, OmegaC, R) !! from T, S, P, ALK, DIC, total inorganic silicon, total inorganic phosphorus, all as 1-D arrays SUBROUTINE flxco2(co2flux, co2ex, dpco2, & - ph, pco2, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, & + ph, pco2, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, K0, & temp, sal, alk, dic, sil, phos, kw660, xco2, Patm, dz1, N, lon, lat, & optCON, optT, optP, optB, optK1K2, optKf, optGAS, optS ) ! Purpose: @@ -127,6 +127,8 @@ SUBROUTINE flxco2(co2flux, co2ex, dpco2, ! rhoSW = in-situ density of seawater; rhoSW = f(s, t, p) ! p = pressure [decibars]; p = f(depth, latitude) if computed from depth [m] OR p = depth if [db] ! tempis = in-situ temperature [degrees C] + ! K0 = CO2 solubility [(mol/kg) / atm] + #if USE_PRECISION == 2 # define SGLE(x) (x) @@ -237,10 +239,12 @@ SUBROUTINE flxco2(co2flux, co2ex, dpco2, REAL(kind=rx), INTENT(out), DIMENSION(N) :: p !> in-situ temperature \b [degrees C] REAL(kind=rx), INTENT(out), DIMENSION(N) :: tempis + !> K0, solubility of CO2 \b [(mol/kg) / atm] + REAL(kind=rx), INTENT(out), DIMENSION(N) :: K0 ! Local variables REAL(kind=r8) :: tk, invtk, dtemp - REAL(kind=r8) :: tmp, K0, co2star, co2starair, kwco2 + REAL(kind=r8) :: tmp, co2star, co2starair, kwco2 ! K0 REAL(kind=rx), DIMENSION(N) :: pCO2atm, fCO2atm REAL(kind=rx), DIMENSION(N) :: depth0, lat0 @@ -361,7 +365,7 @@ SUBROUTINE flxco2(co2flux, co2ex, dpco2, K0 = EXP( tmp + DBLE(salprac(i))*(0.023517d0 - 0.00023656d0*tk + 0.0047036e-4_r8*tk*tk) ) ! "Atmospheric" [CO2*], air-sea CO2 flux, sfc DIC rate of change, & Delta pCO2 - co2starair = K0 * DBLE(fco2atm(i)) * 1.0e-6_r8 * DBLE(rhoSW(i)) !Equil. [CO2*] for atm CO2 at Patm & sfc-water T,S [mol/m3] + co2starair = K0(i) * DBLE(fco2atm(i)) * 1.0e-6_r8 * DBLE(rhoSW(i)) !Equil. [CO2*] for atm CO2 at Patm & sfc-water T,S [mol/m3] co2star = DBLE(co2(i)) !Oceanic [CO2*] in [mol/m3] from vars.f90 co2flux(i) = SGLE(kwco2 * (co2starair - co2star)) !Air-sea CO2 flux [mol/(m2 * s)] ! the conversion from co2flux to impact on dic is done in recom_forcing/recom_sms diff --git a/src/int_recom/recom/vars.F90 b/src/int_recom/recom/vars.F90 index 2ef70defa..d20069a10 100755 --- a/src/int_recom/recom/vars.F90 +++ b/src/int_recom/recom/vars.F90 @@ -570,7 +570,7 @@ SUBROUTINE vars_sprac (ph, pco2, fco2, co2, hco3, co3, OmegaA, OmegaC, kspc_out, ! If Absolute salinity is given IF (trim(opS) == 'Sabs') THEN ! If in-situ or potential temperature is given - IF (trim(optT) /= 'Scsv') THEN + IF (trim(optT) /= 'Scsv') THEN !!!!!!!!! Is it a bug? OG 20.03.2025 Scsv -> Tcsv .OR. tcsv ! First compute conservative temperature tempcsv = gsw_ct_from_t (DBLE(ssal), tempis90, DBLE(p(i))) ELSE diff --git a/src/int_recom/recom_extra.F90 b/src/int_recom/recom_extra.F90 index eb9011cfd..097188861 100644 --- a/src/int_recom/recom_extra.F90 +++ b/src/int_recom/recom_extra.F90 @@ -1,34 +1,35 @@ !=============================================================================== ! Subroutine for calculating flux-depth and thickness of control volumes !=============================================================================== -subroutine Depth_calculations(n,Nn,wF,zF,thick,recipthick, partit, mesh) - use recom_config +subroutine Depth_calculations(n, nn, wf, zf, thick, recipthick, partit, mesh) + use recom_config use mod_mesh - USE MOD_PARTIT - USE MOD_PARSUP - USE o_PARAM - USE o_ARRAYS - USE g_CONFIG - use g_forcing_arrays - use g_comm_auto - - use g_clock - use g_rotate_grid - - implicit none -! Input - type(t_partit), intent(inout), target :: partit - type(t_mesh) , intent(inout), target :: mesh - - Integer, intent(in) :: Nn ! Total number of nodes -! Output - real(kind=8),dimension(mesh%nl), intent(out) :: zF ! [m] Depth of vertical fluxes + use MOD_PARTIT + use MOD_PARSUP + use o_PARAM + use o_ARRAYS + use g_CONFIG + use g_forcing_arrays + use g_comm_auto + use g_clock + use g_rotate_grid + + implicit none + + ! Input parameters + type(t_partit), intent(inout), target :: partit + type(t_mesh) , intent(inout), target :: mesh + integer , intent(in) :: nn ! Total number of vertical nodes + integer , intent(in) :: n ! Current node - real(kind=8),dimension(mesh%nl-1), intent(out) :: thick ! [m] Distance between two nodes = thickness - real(kind=8),dimension(mesh%nl-1), intent(out) :: recipthick ! [1/m] reciprocal of thickness + ! Output arrays + real(kind=8), dimension(mesh%nl,5), intent(out) :: wf ! [m/day] Flux velocities at the border of the control volumes + real(kind=8), dimension(mesh%nl), intent(out) :: zf ! [m] Depth of vertical fluxes + real(kind=8), dimension(mesh%nl-1), intent(out) :: thick ! [m] Distance between two nodes = layer thickness + real(kind=8), dimension(mesh%nl-1), intent(out) :: recipthick ! [1/m] Reciprocal thickness - real(kind=8),dimension(mesh%nl,5), intent(out) :: wF ! [m/day] Velocities of fluxes at the border of the control volumes - Integer :: k, n ! Index for depth + ! Local variables + integer :: k ! Layer index #include "../associate_part_def.h" #include "../associate_mesh_def.h" @@ -48,16 +49,16 @@ subroutine Depth_calculations(n,Nn,wF,zF,thick,recipthick, partit, mesh) ! allocate(Z_3d_n(nl-1,myDim_nod2D+eDim_nod2D)) ! ============================================================================== modular -!! Background sinking speed + !! Background sinking speed + wf(2:nn, ivphy) = VPhy ! Phytoplankton sinking velocity + wf(2:nn, ivdia) = VDia ! Diatoms sinking velocity + wf(2:nn, ivdet) = VDet ! Detritus sinking velocity + wf(2:nn, ivdetsc) = VDet_zoo2 ! Second detritus sinking velocity + wf(2:nn, ivcoc) = VCocco ! Coccolithophores sinking velocity - wF(2:Nn,ivphy) = VPhy - wF(2:Nn,ivdia) = VDia - wF(2:Nn,ivdet) = VDet - wF(2:Nn,ivdetsc) = VDet_zoo2 - wF(2:Nn,ivcoc) = VCocco - - wF(1,:) = 0.d0 - wF(Nn+1,:) = 0.d0 + !! Boundary conditions (surface and bottom) + wf(1,:) = 0.d0 + wf(nn+1,:) = 0.d0 !if (allow_var_sinking) then !! wF(2:Nn+1,ivdet) = Vdet_a * abs(zbar_n(2:Nn+1)) + VDet @@ -65,31 +66,25 @@ subroutine Depth_calculations(n,Nn,wF,zF,thick,recipthick, partit, mesh) ! wF(2:Nn+1,ivdet) = Vcalc * abs(zbar_3d_n(2:Nn+1, n)) + VDet !end if -!---------------------------------------------------- -! Vertical layers thickness - - thick =0.0_WP - recipthick=0.0_WP - zF=0.0_WP - -!do n=1,myDim_nod2D+eDim_nod2D - do k=1, Nn !nlevels_nod2D(n)-1 - thick(k)=hnode(k,n) - if (hnode(k,n) > 0._WP) then - recipthick(k)=1./hnode(k,n) - else - recipthick(k)=0._WP - end if - end do -!end do - -! layer depth (negative) - -!do n=1,myDim_nod2D+eDim_nod2D - do k=1, Nn+1 !nlevels_nod2D(n) - zF(k)=zbar_3d_n(k,n) - end do -!end do + !! Calculate layer thickness and reciprocal of it + thick = 0.0_WP + recipthick = 0.0_WP + zf = 0.0_WP + + do k=1, nn + thick(k) = hnode(k,n) + if (hnode(k,n) > 0.0_WP) then +! if thick(k) > 0.0_WP) then ! alternative + recipthick(k) = 1.0/hnode(k,n) + else + recipthick(k) = 0.0_WP + end if + end do + + !! set layer depth (negative) + do k=1, nn+1 + zf(k)=zbar_3d_n(k,n) + end do end subroutine Depth_calculations @@ -100,24 +95,26 @@ subroutine Cobeta(partit, mesh) use REcoM_GloVar use g_clock use mod_mesh - USE MOD_PARTIT - USE MOD_PARSUP + use MOD_PARTIT + use MOD_PARSUP use o_PARAM use g_comm_auto - Implicit none + + implicit none -! Declarations - real(kind=8) :: yearfrac ! The fraction of the year that has passed [0 1] - real(kind=8) :: yDay ! yearfrac in radians [0 2*pi] - real(kind=8) :: declination = 0.d0 ! Declination of the sun at present lat and time - real(kind=8) :: CosAngleNoon = 0.d0 ! Cos(Angle of Incidence) at Noon ? - integer :: n + ! Input parameters + type(t_partit), intent(inout), target :: partit + type(t_mesh) , intent(inout), target :: mesh -! Constants - real(kind=8) :: nWater = 1.33 + ! Local variables + real(kind=8) :: yearfrac ! Fraction of year [0 1] + real(kind=8) :: yDay ! Year fraction in radians [0 2*pi] + real(kind=8) :: declination = 0.d0 ! Declination of the sun at present lat and time + real(kind=8) :: CosAngleNoon = 0.d0 ! Cosine of Angle of Incidence at noon + integer :: n - type(t_partit), intent(inout), target :: partit - type(t_mesh) , intent(inout), target :: mesh + ! Constants + real(kind=8), parameter :: nWater = 1.33 ! Refractive indices of water #include "../associate_part_def.h" #include "../associate_mesh_def.h" @@ -131,9 +128,11 @@ subroutine Cobeta(partit, mesh) !! Publishing Company, Amsterdam, Oxford, !! New York, 1976, ISBN 0-444-41444-4. - yearfrac = mod(real(daynew),real(ndpyr))/real(ndpyr) - yDay = 2 * pi * yearfrac - declination = 0.006918 & + !! Calculate solar declination using Paltridge & Platt (1976) formula + yearfrac = mod(real(daynew), real(ndpyr)) / real(ndpyr) + yDay = 2.0d0 * pi * yearfrac + + declination = 0.006918 & - 0.399912 * cos( yDay) & + 0.070257 * sin( yDay) & - 0.006758 * cos(2 * yDay) & @@ -141,33 +140,35 @@ subroutine Cobeta(partit, mesh) - 0.002697 * cos(3 * yDay) & + 0.001480 * sin(3 * yDay) - do n=1, myDim_nod2D!+eDim_nod2D + !! Calculate cosine of angle of incidence for each node + do n = 1, myDim_nod2D + cosAngleNoon = sin(geo_coord_nod2D(2, n)) * sin(declination) & + + cos(geo_coord_nod2D(2, n)) * cos(declination) - cosAngleNoon = sin(geo_coord_nod2D(2,n)) * sin(declination) & - + cos(geo_coord_nod2D(2,n)) * cos(declination) - cosAI(n) = sqrt(1-(1-cosAngleNoon**2)/nWater**2) - - end do + cosAI(n) = sqrt(1.0d0 - (1.0d0 - cosAngleNoon**2) / nWater**2) + end do end subroutine Cobeta !================================================================================ ! Calculating second zooplankton respiration rates !================================================================================ subroutine krill_resp(n, partit, mesh) - use REcoM_declarations - use REcoM_LocVar - use REcoM_GloVar - use g_clock - use o_PARAM -! use g_PARSUP + use REcoM_declarations + use REcoM_LocVar + use REcoM_GloVar + use g_clock + use o_PARAM use mod_mesh - USE MOD_PARTIT - USE MOD_PARSUP - use g_comm_auto - implicit none - integer :: n - - type(t_partit), intent(inout), target :: partit - type(t_mesh) , intent(inout), target :: mesh + use MOD_PARTIT + use MOD_PARSUP + use g_comm_auto + + implicit none + + ! Input parameters + integer :: n + type(t_partit), intent(inout), target :: partit + type(t_mesh) , intent(inout), target :: mesh + #include "../associate_part_def.h" #include "../associate_mesh_def.h" #include "../associate_part_ass.h" diff --git a/src/int_recom/recom_forcing.F90 b/src/int_recom/recom_forcing.F90 index 161fa1625..c0586b6c7 100644 --- a/src/int_recom/recom_forcing.F90 +++ b/src/int_recom/recom_forcing.F90 @@ -183,7 +183,7 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp , Temp, Sali, Sal endif call flxco2(co2flux, co2ex, dpco2surf, & - ph, pco2surf, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, & + ph, pco2surf, fco2, co2, hco3, co3, OmegaA, OmegaC, BetaD, rhoSW, p, tempis, K0, & REcoM_T, REcoM_S, REcoM_Alk, REcoM_DIC, REcoM_Si, REcoM_Phos, kw660, LocAtmCO2, Patm, thick(One), Nmocsy, Lond,Latd, & optCON='mol/m3',optT='Tpot ',optP='m ',optB='u74',optK1K2='l ',optKf='dg',optGAS='Pinsitu',optS='Sprc') diff --git a/src/int_recom/recom_init.F90 b/src/int_recom/recom_init.F90 index e2b45b0ab..24141e8c9 100644 --- a/src/int_recom/recom_init.F90 +++ b/src/int_recom/recom_init.F90 @@ -97,6 +97,7 @@ subroutine recom_init(tracers, partit, mesh) allocate(decayBenthos ( benthos_num )) ! [1/day] Decay rate of detritus in the benthic layer allocate(PAR3D ( nl-1, node_size )) + GloFeDust = 0.d0 AtmFeInput = 0.d0 GloNDust = 0.d0 @@ -246,6 +247,10 @@ subroutine recom_init(tracers, partit, mesh) Sinkingvel1(:,:) = 0.d0 Sinkingvel2(:,:) = 0.d0 + allocate(Sinkvel1_tr(nl,node_size,num_tracers), Sinkvel2_tr(nl,node_size,num_tracers)) ! OG 16.03.23 + Sinkvel1_tr(:,:,:) = 0.0d0 ! OG 16.03.23 + Sinkvel2_tr(:,:,:) = 0.0d0 ! OG 16.03.23 + if (use_MEDUSA) then allocate(GloSed(node_size,sedflx_num)) allocate(SinkFlx(node_size,bottflx_num)) diff --git a/src/int_recom/recom_main.F90 b/src/int_recom/recom_main.F90 index cf9a7d95a..10b21d381 100755 --- a/src/int_recom/recom_main.F90 +++ b/src/int_recom/recom_main.F90 @@ -6,8 +6,8 @@ module recom_interface interface subroutine recom(ice, dynamics, tracers, partit, mesh) use mod_mesh - USE MOD_PARTIT - USE MOD_PARSUP + use MOD_PARTIT + use MOD_PARSUP use mod_tracer use MOD_DYN use MOD_ICE @@ -29,8 +29,8 @@ subroutine bio_fluxes(tracers, partit, mesh) use recom_config use mod_mesh - USE MOD_PARTIT - USE MOD_PARSUP + use MOD_PARTIT + use MOD_PARSUP use mod_tracer use g_config @@ -52,11 +52,11 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) use MOD_MESH use MOD_TRACER use MOD_DYN - USE MOD_ICE + use MOD_ICE use o_ARRAYS use o_PARAM - USE MOD_PARTIT - USE MOD_PARSUP + use MOD_PARTIT + use MOD_PARSUP use recom_declarations use bio_fluxes_interface @@ -67,7 +67,8 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) use g_clock use g_forcing_arrays, only: press_air, u_wind, v_wind, shortwave use g_comm_auto - IMPLICIT NONE + + implicit none type(t_dyn) , intent(inout), target :: dynamics type(t_tracer), intent(inout), target :: tracers @@ -94,7 +95,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) real(kind=8) :: SW, Loc_slp integer :: tr_num, num_tracers - integer :: nz, n, nzmin, nzmax, nu1, nl1 + integer :: nz, n, nzmin, nzmax integer :: idiags real(kind=8) :: Sali @@ -526,8 +527,8 @@ subroutine bio_fluxes(tracers, partit, mesh) use recom_config use mod_mesh - USE MOD_PARTIT - USE MOD_PARSUP + use MOD_PARTIT + use MOD_PARSUP use mod_tracer use g_config diff --git a/src/int_recom/recom_sinking.F90 b/src/int_recom/recom_sinking.F90 index b772569ec..0f6826d92 100644 --- a/src/int_recom/recom_sinking.F90 +++ b/src/int_recom/recom_sinking.F90 @@ -604,6 +604,13 @@ subroutine ver_sinking_recom(tr_num, tracers, partit, mesh) endif #endif + + if (tracers%data(tr_num)%ID == 1021) Sinkvel1_tr(nz,n,tr_num) = Wvel_flux(nz) !-1.0d0/SecondsPerDay !idetcal +#if defined (__3Zoo2Det) + if (tracers%data(tr_num)%ID == 1028) Sinkvel2_tr(nz,n,tr_num) = Wvel_flux(nz) !idetz2calc +#endif + + end do dt_sink = dt diff --git a/src/io_meandata.F90 b/src/io_meandata.F90 index 44e702bd7..9332c2cb0 100644 --- a/src/io_meandata.F90 +++ b/src/io_meandata.F90 @@ -628,6 +628,10 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'PAR', 'PAR', 'W/m2', PAR3D(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) end if +CASE ('wsink_det1') + call def_stream((/nl, nod2D/), (/nl, myDim_nod2D/), 'wsink_det1', 'sinking speed of particles in class 1', 'm s-1', Sinkingvel1(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) +CASE ('wsink_det2') + call def_stream((/nl, nod2D/), (/nl, myDim_nod2D/), 'wsink_det2', 'sinking speed of particles in class 2', 'm s-1', Sinkingvel2(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) CASE ('respmeso ') if (use_REcoM) then @@ -730,33 +734,33 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIN', 'Dissolved Inorganic Nitrogen', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) endif - else if (tracers%data(j)%ID==1002) then + else if (tracers%data(j)%ID==1002) then ! NOTE Divide tracers%work%tra_advvert(:,:,j) by dt if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC', 'Dissolved Inorganic C', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) if (tracers%data(j)%ltra_diag) then ! OG - tra_diag ! horizontal advection - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_hor_adv', 'Horizontal advection part of dissolved Inorganic C', '[mmol/m3]', tracers%work%tra_advhoriz(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_hor_adv', 'Horizontal advection part of dissolved Inorganic C', '[mmol/m3/s]', tracers%work%tra_advhoriz(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! vertical advection - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_ver_adv', 'Vertical advection part of dissolved Inorganic C', '[mmol/m3]', tracers%work%tra_advvert(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_ver_adv', 'Vertical advection part of dissolved Inorganic C', '[mmol/m3/s]', tracers%work%tra_advvert(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! horizontal diffusion - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_hor_redi', 'Horizontal diffusion of dissolved Inorganic C (includes Redi diffusivity if Redi=.true.)', '[mmol/m3]', tracers%work%tra_diff_part_hor_redi(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_hor_redi', 'Horizontal diffusion of dissolved Inorganic C (includes Redi diffusivity if Redi=.true.)', '[mmol/m3/s]', tracers%work%tra_diff_part_hor_redi(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) if (.not. tracers%data(j)%i_vert_diff) then ! vertical diffusion (Explicit) - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_expl', 'Vertical diffusion of dissolved Inorganic C (Explicit)', '[mmol/m3]', tracers%work%tra_diff_part_ver_expl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_expl', 'Vertical diffusion of dissolved Inorganic C (Explicit)', '[mmol/m3/s]', tracers%work%tra_diff_part_ver_expl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) end if ! projection of horizontal Redi diffussivity onto vertical - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_redi_expl', 'Projection of horizontal Redi diffussivity onto vertical for dissolved Inorganic C (Explicit)', '[mmol/m3]', tracers%work%tra_diff_part_ver_redi_expl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_redi_expl', 'Projection of horizontal Redi diffussivity onto vertical for dissolved Inorganic C (Explicit)', '[mmol/m3/s]', tracers%work%tra_diff_part_ver_redi_expl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! vertical diffusion (Implicit) - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_impl', 'Vertical diffusion of dissolved Inorganic C (Implicit)', '[mmol/m3]', tracers%work%tra_diff_part_ver_impl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_tra_diff_part_ver_impl', 'Vertical diffusion of dissolved Inorganic C (Implicit)', '[mmol/m3/s]', tracers%work%tra_diff_part_ver_impl(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) ! recom_sms - call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_recom_sms', 'Recom SMS', '[mmol/m3]', tracers%work%tra_recom_sms(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) + call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_recom_sms', 'Recom SMS', '[mmol/m3/s]', tracers%work%tra_recom_sms(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) end if endif diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 17570e46f..a8abc808a 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -238,6 +238,8 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) if(use_MEDUSA) then SinkFlx = 0.0d0 endif + SinkingVel1 = 0.0d0 ! OG 16.03.23 + SinkingVel2 = 0.0d0 ! OG 16.03.23 #endif ! do tracer AB (Adams-Bashfort) interpolation only for advectiv part ! needed @@ -327,6 +329,17 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) !!! !$ACC UPDATE HOST (tracers%work%fct_ttf_min, tracers%work%fct_ttf_max, tracers%work%fct_plus, tracers%work%fct_minus) & !!! !$ACC HOST (tracers%work%edge_up_dn_grad) +#if defined(__recom) + do tr_num = 1, tracers%num_tracers + if (use_MEDUSA) then + SinkFlx = SinkFlx + SinkFlx_tr(:, :, tr_num) + endif +! Benthos = Benthos + Benthos_tr(:, :, tr_num) + Sinkingvel1(:,:) = Sinkingvel1(:,:) + Sinkvel1_tr(:, :, tr_num) + Sinkingvel2(:,:) = Sinkingvel2(:,:) + Sinkvel2_tr(:, :, tr_num) + end do +#endif + !___________________________________________________________________________ ! 3D restoring for "passive" tracers !!!$OMPTODO: add OpenMP later, not needed right now! From 66a5aeb92048b80ab3b42e742f38cc403aba9399 Mon Sep 17 00:00:00 2001 From: ogurses Date: Wed, 9 Jul 2025 00:05:36 +0200 Subject: [PATCH 10/66] fix(recom) clean merge conflicts --- src/int_recom/recom_extra.F90 | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/src/int_recom/recom_extra.F90 b/src/int_recom/recom_extra.F90 index 0288f98d8..441fbd724 100644 --- a/src/int_recom/recom_extra.F90 +++ b/src/int_recom/recom_extra.F90 @@ -28,13 +28,8 @@ subroutine Depth_calculations(n, nn, wf, zf, thick, recipthick, partit, mesh) real(kind=8), dimension(mesh%nl-1), intent(out) :: thick ! [m] Distance between two nodes = layer thickness real(kind=8), dimension(mesh%nl-1), intent(out) :: recipthick ! [1/m] Reciprocal thickness -<<<<<<< HEAD ! Local variables integer :: k ! Layer index -======= - real(kind=8),dimension(mesh%nl,6), intent(out) :: wF ! [m/day] Velocities of fluxes at the border of the control volumes - Integer :: k, n ! Index for depth ->>>>>>> origin/fesom2.6_recom_tra_diags #include "../associate_part_def.h" #include "../associate_mesh_def.h" @@ -55,27 +50,16 @@ subroutine Depth_calculations(n, nn, wf, zf, thick, recipthick, partit, mesh) ! ============================================================================== modular !! Background sinking speed - wf(2:nn, ivphy) = VPhy ! Phytoplankton sinking velocity - wf(2:nn, ivdia) = VDia ! Diatoms sinking velocity - wf(2:nn, ivdet) = VDet ! Detritus sinking velocity - wf(2:nn, ivdetsc) = VDet_zoo2 ! Second detritus sinking velocity - wf(2:nn, ivcoc) = VCocco ! Coccolithophores sinking velocity + wF(2:Nn, ivphy) = VPhy ! Phytoplankton sinking velocity + wF(2:Nn, ivdia) = VDia ! Diatoms sinking velocity + wF(2:Nn, ivdet) = VDet ! Detritus sinking velocity + wF(2:Nn, ivdetsc) = VDet_zoo2 ! Second detritus sinking velocity + wF(2:Nn, ivcoc) = VCocco ! Coccolithophores sinking velocity + wF(2:Nn, ivpha) = VPhaeo -<<<<<<< HEAD !! Boundary conditions (surface and bottom) - wf(1,:) = 0.d0 - wf(nn+1,:) = 0.d0 -======= - wF(2:Nn,ivphy) = VPhy - wF(2:Nn,ivdia) = VDia - wF(2:Nn,ivdet) = VDet - wF(2:Nn,ivdetsc) = VDet_zoo2 - wF(2:Nn,ivcoc) = VCocco - wF(2:Nn,ivpha) = VPhaeo - - wF(1,:) = 0.d0 - wF(Nn+1,:) = 0.d0 ->>>>>>> origin/fesom2.6_recom_tra_diags + wF(1,:) = 0.d0 + wF(Nn+1,:) = 0.d0 !if (allow_var_sinking) then !! wF(2:Nn+1,ivdet) = Vdet_a * abs(zbar_n(2:Nn+1)) + VDet From bc312667ba64c2d9499b0accadd583e1374db9f8 Mon Sep 17 00:00:00 2001 From: ogurses Date: Fri, 29 Aug 2025 09:30:40 +0200 Subject: [PATCH 11/66] =?UTF-8?q?fix(recom):=20Correct=20silicate=20assimi?= =?UTF-8?q?lation=20and=20diatom=20diagnostics=E2=80=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We add __coccos directive to get the correct temperature function in silicate assimilation. In the coccos and Phaeocystis version, it should be dependent on the new temperature function, Temp_diatoms. Use the original Arrhenius function in simpler phytoplankton version. Besides, light limitation diagnostics is corrected.
It does affect only the diatoms related output. --- src/int_recom/recom_sms.F90 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/int_recom/recom_sms.F90 b/src/int_recom/recom_sms.F90 index 67654a495..9fefcef3f 100644 --- a/src/int_recom/recom_sms.F90 +++ b/src/int_recom/recom_sms.F90 @@ -613,7 +613,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & Cphot_dia = zero else Cphot_dia = pMax_dia * (real(one) - exp(-alfa_d * Chl2C_dia * PARave / pMax_dia)) - VTCphotLigLim_diatoms(k) = Cphot/pMax ! track light limitation + VTCphotLigLim_diatoms(k) = Cphot_dia/pMax_dia ! track light limitation if (CO2lim) Cphot_dia = Cphot_dia * DiaCO2 ! Added the CO2 dependence end if if (Cphot_dia .lt. tiny) Cphot_dia = zero @@ -780,10 +780,15 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & limitFacSi = recom_limiter(SiMaxSlope, qSiC, SiCmax) & * limitFacN_dia + + Si_assim = V_cm_fact_d * P_cm_d * arrFunc * SiCUptakeRatio & + * limitFacSi * Si/(Si + k_si) + +#if defined (__coccos) Si_assim = V_cm_fact_d * Temp_diatoms * SiCUptakeRatio & * limitFacSi * Si/(Si + k_si) VTSi_assimDia(k) = Si_assim - +#endif !------------------------------------------------------------------------------- !< *** Iron chemistry *** !< ********************** From 42588741b2209ead17dea4ded3ae2b3ebca522cd Mon Sep 17 00:00:00 2001 From: ogurses Date: Fri, 29 Aug 2025 09:37:47 +0200 Subject: [PATCH 12/66] fix(recom): Correct Light limitation diagnostics(continued) --- src/int_recom/recom_sms.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/int_recom/recom_sms.F90 b/src/int_recom/recom_sms.F90 index 9fefcef3f..d0a4925ec 100644 --- a/src/int_recom/recom_sms.F90 +++ b/src/int_recom/recom_sms.F90 @@ -626,7 +626,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & Cphot_cocco = zero else Cphot_cocco = pMax_cocco * (real(one) - exp( -alfa_c * Chl2C_cocco * PARave / pMax_cocco)) - VTCphotLigLim_cocco(k) = Cphot/pMax ! track the light limitation + VTCphotLigLim_cocco(k) = Cphot_cocco/pMax_cocco ! track the light limitation if (CO2lim) Cphot_cocco = Cphot_cocco * CoccoCO2 ! Added the CO2 dependence end if if (Cphot_cocco .lt. tiny) Cphot_cocco = zero @@ -638,7 +638,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & Cphot_phaeo = zero else Cphot_phaeo = pMax_phaeo * (real(one) - exp( -alfa_p * Chl2C_phaeo * PARave / pMax_phaeo)) - VTCphotLigLim_phaeo(k) = Cphot/pMax ! track the light limitation + VTCphotLigLim_phaeo(k) = Cphot_phaeo/pMax_phaeo ! track the light limitation if (CO2lim) Cphot_phaeo = Cphot_phaeo * PhaeoCO2 ! Added the CO2 dependence end if if (Cphot_phaeo .lt. tiny) Cphot_phaeo = zero From d82dbcb26632c4f9e4f18df034cd9b72a9ed812b Mon Sep 17 00:00:00 2001 From: ogurses Date: Fri, 29 Aug 2025 10:43:47 +0200 Subject: [PATCH 13/66] fix(recom): Correct namelist.recom files in config folder --- config/bin_2p1z1d/namelist.recom | 147 ++++++++++++++++--------------- config/bin_2p3z2d/namelist.recom | 139 ++++++++++++++--------------- config/bin_3p3z2d/namelist.recom | 131 +++++++++++++-------------- 3 files changed, 209 insertions(+), 208 deletions(-) diff --git a/config/bin_2p1z1d/namelist.recom b/config/bin_2p1z1d/namelist.recom index 351356467..f4e5c1a62 100644 --- a/config/bin_2p1z1d/namelist.recom +++ b/config/bin_2p1z1d/namelist.recom @@ -13,7 +13,7 @@ nm_co2_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_fina use_REcoM =.true. REcoM_restart =.true. -bgc_num = 22 !33 !24 !38 +bgc_num = 22 !24 !38 !22 diags3d_num = 28 ! Number of diagnostic 3d tracers to be saved bgc_base_num = 22 ! standard tracers VDet = 20.d0 ! Sinking velocity, constant through the water column and positive downwards @@ -28,12 +28,12 @@ REcoM_Grazing_Variable_Preference = .true. ! Decides if grazing should have pref Grazing_detritus = .true. het_resp_noredfield = .true. ! Decides respiratation of copepod group diatom_mucus = .true. ! Decides nutrient limitation effect on aggregation -O2dep_remin = .false. ! O2remin Add option for O2 dependency of organic matter remineralization -use_ballasting = .false. ! BALL -use_density_scaling = .false. ! BALL -use_viscosity_scaling = .false. ! BALL -OmegaC_diss = .false. ! DISS Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -CO2lim = .false. ! CO2 dependence of growth and calcification +O2dep_remin = .true. ! O2remin Add option for O2 dependency of organic matter remineralization +use_ballasting = .true. +use_density_scaling = .true. +use_viscosity_scaling = .true. +OmegaC_diss = .true. ! Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -> set calc_diss_guts to zero if this is false!!!! +CO2lim = .true. ! CO2 dependence of growth and calcification Diags = .true. constant_CO2 = .true. UseFeDust = .true. ! Turns dust input of iron off when set to.false. @@ -81,23 +81,23 @@ recom_Tref = 288.15d0 ! [K] C2K = 273.15d0 ! Conversion from degrees C to K Ae = 4500.d0 ! [K] Slope of the linear part of the Arrhenius function reminSi = 0.02d0 -k_o2_remin = 15.d0 ! NEW O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 +k_o2_remin = 15.d0 ! O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 / &palimiter_function NMinSlope = 50.d0 SiMinSlope = 1000.d0 -NCmin = 0.04d0 !0.05d0 -NCmin_d = 0.04d0 !0.05d0 -NCmin_c = 0.04d0 ! NEW +NCmin = 0.04d0 +NCmin_d = 0.04d0 +NCmin_c = 0.04d0 SiCmin = 0.04d0 k_Fe = 0.04d0 k_Fe_d = 0.12d0 -k_Fe_c = 0.09d0 ! NEW +k_Fe_c = 0.09d0 k_si = 4.d0 P_cm = 3.0d0 ! [1/day] Rate of C-specific photosynthesis P_cm_d = 3.5d0 -P_cm_c = 2.8d0 ! NEW +P_cm_c = 2.8d0 / &palight_calculations @@ -108,33 +108,33 @@ a_chl = 0.03d0 ! [1/m * 1/(mg Chl)] Chlorophyll specific at &paphotosynthesis alfa = 0.14d0 ! [(mmol C*m2)/(mg Chl*W*day)] alfa_d = 0.19d0 ! An initial slope of the P-I curve -alfa_c = 0.10d0 ! NEW +alfa_c = 0.10d0 parFrac = 0.43d0 / &paassimilation V_cm_fact = 0.7d0 ! scaling factor for temperature dependent maximum of C-specific N-uptake V_cm_fact_d = 0.7d0 -V_cm_fact_c = 0.7d0 ! NEW +V_cm_fact_c = 0.7d0 NMaxSlope = 1000.d0 ! Max slope for limiting function SiMaxSlope = 1000.d0 NCmax = 0.2d0 ! [mmol N/mmol C] Maximum cell quota of nitrogen (N:C) NCmax_d = 0.2d0 -NCmax_c = 0.15d0 ! NEW +NCmax_c = 0.15d0 SiCmax = 0.8d0 NCuptakeRatio = 0.2d0 ! [mmol N/mmol C] Maximum uptake ratio of N:C NCUptakeRatio_d = 0.2d0 -NCUptakeRatio_c = 0.2d0 ! NEW +NCUptakeRatio_c = 0.2d0 SiCUptakeRatio = 0.2d0 k_din = 0.55d0 ! [mmol N/m3] Half-saturation constant for nitrate uptake k_din_d = 1.0d0 -k_din_c = 0.9d0 ! NEW +k_din_c = 0.9d0 Chl2N_max = 3.15d0 ! [mg CHL/mmol N] Maximum CHL a : N ratio = 0.3 gCHL gN^-1 Chl2N_max_d = 4.2d0 -Chl2N_max_c = 3.5d0 ! NEW +Chl2N_max_c = 3.5d0 res_phy = 0.01d0 ! [1/day] Maintenance respiration rate constant res_phy_d = 0.01d0 -res_phy_c = 0.01d0 ! NEW +res_phy_c = 0.01d0 biosynth = 2.33d0 ! [mmol C/mmol N] Cost of biosynthesis biosynthSi = 0.d0 / @@ -145,67 +145,69 @@ ligandStabConst = 100.d0 ! [m3/mumol] order 100. Ligand-free iron sta / &pazooplankton -graz_max = 0.31d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter -epsilonr = 0.09d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss -res_het = 0.028d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +graz_max = 2.4d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilonr = 0.35d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +res_het = 0.01d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) Redfield = 6.625 ! [mmol C/mmol N] Redfield ratio of C:N = 106:16 -loss_het = 0.04d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) -pzDia = 1.0d0 !0.5d0 ! Maximum diatom preference +loss_het = 0.05d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +pzDia = 0.5d0 ! Maximum diatom preference sDiaNsq = 0.d0 -pzPhy = 0.5d0 !0.25d0 !1.0d0 ! Maximum nano-phytoplankton preference (NEW: 3/12) +pzPhy = 1.0d0 ! Maximum small phytoplankton preference sPhyNsq = 0.d0 -pzCocco = 0.666d0 ! NEW (8/12) -sCoccoNsq = 0.d0 ! NEW -pzMicZoo = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference -sMicZooNsq = 0.d0 ! NEW 3Zoo +pzCocco = 0.4d0 ! Maximum coccolithophore preference ! will not be used in the 2p1z1d version +sCoccoNsq = 0.d0 +pzMicZoo = 1.0d0 ! Maximum microzooplankton preference ! will not be used in the 2p1z1d version +sMicZooNsq = 0.d0 tiny_het = 1.d-5 ! for more stable computation of HetRespFlux (_plus). Value can be > tiny because HetRespFlux ~ hetC**2. / -&pasecondzooplankton +&pasecondzooplankton ! will not be used in the 2p1z1d version graz_max2 = 0.1d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter epsilon2 = 0.0144d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss res_zoo2 = 0.0107d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) loss_zoo2 = 0.003d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) fecal_rate_n = 0.104d0 ! [1/day] Temperature dependent N degradation of \ fecal_rate_c = 0.236d0 -fecal_rate_n_mes = 0.25d0 ! NEW 3Zoo -fecal_rate_c_mes = 0.32d0 ! NEW 3Zoo -pzDia2 = 1.5d0 !1.d0 ! Maximum diatom preference +fecal_rate_n_mes = 0.25d0 +fecal_rate_c_mes = 0.32d0 +pzDia2 = 1.0d0 ! Maximum diatom preference sDiaNsq2 = 0.d0 -pzPhy2 = 0.5d0 ! Maximum diatom preference +pzPhy2 = 0.08d0 ! Maximum small phytoplankton preference sPhyNsq2 = 0.d0 -pzCocco2 = 0.5d0 ! NEW -sCoccoNsq2 = 0.d0 ! NEW -pzHet = 1.5d0 !0.8d0 ! Maximum diatom preference +pzCocco2 = 0.8d0 ! Maximum coccolithophore preference +sCoccoNsq2 = 0.d0 +pzHet = 1.5d0 ! Maximum mesozooplankton preference sHetNsq = 0.d0 +pzMicZoo2 = 1.0d0 ! Maximum microzooplankton preference +sMicZooNsq2 = 0.d0 t1_zoo2 = 28145.d0 ! Krill temp. function constant1 t2_zoo2 = 272.5d0 ! Krill temp. function constant2 t3_zoo2 = 105234.d0 ! Krill temp. function constant3 t4_zoo2 = 274.15d0 ! Krill temp. function constant3 / -&pathirdzooplankton -graz_max3 = 0.46d0 ! NEW 3Zoo [mmol N/(m3 * day)] Maximum grazing loss parameter -epsilon3 = 0.64d0 ! NEW 3Zoo [(mmol N)2 /m6] Half saturation constant for grazing loss -loss_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Temperature dependent N degradation of extracellular organic N (EON) -res_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Respiration by heterotrophs and mortality (loss to detritus) -pzDia3 = 0.5d0 ! NEW 3Zoo Maximum diatom preference -sDiaNsq3 = 0.d0 ! NEW 3Zoo -pzPhy3 = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference -sPhyNsq3 = 0.d0 ! NEW 3Zoo -pzCocco3 = 0.d0 ! NEW 3Zoo Maximum coccolithophore preference ! ATTENTION: This value needs to be tuned; I start with zero preference! -sCoccoNsq3 = 0.d0 ! NEW 3Zoo +&pathirdzooplankton ! will not be used in the 2p1z1d version +graz_max3 = 0.46d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilon3 = 0.64d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +loss_miczoo = 0.01d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +res_miczoo = 0.01d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +pzDia3 = 0.04d0 ! Maximum diatom preference +sDiaNsq3 = 0.d0 +pzPhy3 = 0.08d0 ! Maximum small phytoplankton preference +sPhyNsq3 = 0.d0 +pzCocco3 = 0.8d0 ! Maximum coccolithophore preference +sCoccoNsq3 = 0.d0 / &pagrazingdetritus -pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton +pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton sDetNsq = 0.d0 -pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton +pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton sDetZ2Nsq = 0.d0 -pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton -sDetNsq2 = 0.d0 -pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton -sDetZ2Nsq2 = 0.d0 +pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton +sDetNsq2 = 0.d0 +pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton +sDetZ2Nsq2 = 0.d0 / &paaggregation @@ -224,25 +226,25 @@ rho_C1 = 0.1d0 ! [1/day] Temperature dependent C degradatio &paphytoplankton_N lossN = 0.05d0 ! [1/day] Phytoplankton loss of organic N compounds lossN_d = 0.05d0 -lossN_c = 0.05d0 ! NEW +lossN_c = 0.05d0 / &paphytoplankton_C lossC = 0.10d0 ! [1/day] Phytoplankton loss of carbon lossC_d = 0.10d0 -lossC_c = 0.10d0 ! NEW +lossC_c = 0.10d0 / &paphytoplankton_ChlA -deg_Chl = 0.25d0 !0.2d0 !0.25d0 ! [1/day] -deg_Chl_d = 0.15d0 !0.2d0 !0.15d0 -deg_Chl_c = 0.2d0 ! NEW (has been 0.5) +deg_Chl = 0.075 !0.2d0 !0.25d0 ! [1/day] +deg_Chl_d = 0.075 !0.3d0 !0.15d0 +deg_Chl_c = 0.075 !0.2d0 / &padetritus_N -gfin = 0.3d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into zooplankton pool) +gfin = 0.3d0 ! [] Grazing efficiency (fraction of grazing flux into zooplankton pool) grazEff2 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into second zooplankton pool) -grazEff3 = 0.8d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) +grazEff3 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) reminN = 0.165d0 ! [1/day] Temperature dependent remineralisation rate of detritus / @@ -252,8 +254,8 @@ rho_c2 = 0.1d0 ! [1/day] Temperature dependent C degradatio / &paheterotrophs -lossN_z = 0.1d0 -lossC_z = 0.1d0 +lossN_z = 0.15d0 +lossC_z = 0.15d0 / &paseczooloss @@ -262,11 +264,11 @@ lossC_z2 = 0.02d0 / &pathirdzooloss -lossN_z3 = 0.05d0 ! NEW 3Zoo -lossC_z3 = 0.05d0 ! NEW 3Zoo +lossN_z3 = 0.05d0 +lossC_z3 = 0.05d0 / -&paco2lim ! NEW +&paco2lim Cunits = 976.5625 ! Conversion factor between [mol/m3] (model) and [umol/kg] (function): (1000 * 1000) / 1024 a_co2_phy = 1.162e+00 ! [dimensionless] a_co2_dia = 1.040e+00 ! [dimensionless] @@ -296,11 +298,11 @@ RiverFeConc = 100 &pacalc calc_prod_ratio = 0.02 -calc_diss_guts = 0.0d0 -calc_diss_rate = 0.005714 ! 20.d0/3500.d0 +calc_diss_guts = 0.5d0 ! set to zero if OmegaC_diss is set to false +calc_diss_rate = 0.005714d0 ! 20.d0/3500.d0 calc_diss_rate2 = 0.005714d0 -calc_diss_omegac = 0.197d0 ! NEW DISS Value from Aumont et al. 2015, will be used with OmegaC_diss flag -calc_diss_exp = 1.d0 ! NEW DISS Exponent in the dissolution rate of calcite, will be used with OmegaC_diss flag +calc_diss_omegac = 0.197d0 ! Value from Aumont et al. 2015, is used with OmegaC_diss flag +calc_diss_exp = 1.d0 ! Exponent in the dissolution rate of calcite, is used with OmegaC_diss flag / &pabenthos_decay_rate @@ -333,7 +335,7 @@ rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus -depth_scaling1 = 0.015d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted +depth_scaling1 = 0.01d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted max_sinking_velocity = 250.d0 ! d-1; for numerical stability, set a maximum possible sinking velocity here (applies to both detritus classes) / @@ -351,3 +353,4 @@ atbox_spinup = .false. cosmic_14_init = 2.0 / + diff --git a/config/bin_2p3z2d/namelist.recom b/config/bin_2p3z2d/namelist.recom index 07f2d3f46..0861315cb 100644 --- a/config/bin_2p3z2d/namelist.recom +++ b/config/bin_2p3z2d/namelist.recom @@ -13,7 +13,7 @@ nm_co2_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_fina use_REcoM =.true. REcoM_restart =.true. -bgc_num = 30 !22 !33 !24 !38 +bgc_num = 30 !24 !38 !22 diags3d_num = 28 ! Number of diagnostic 3d tracers to be saved bgc_base_num = 22 ! standard tracers VDet = 20.d0 ! Sinking velocity, constant through the water column and positive downwards @@ -28,12 +28,12 @@ REcoM_Grazing_Variable_Preference = .true. ! Decides if grazing should have pref Grazing_detritus = .true. het_resp_noredfield = .true. ! Decides respiratation of copepod group diatom_mucus = .true. ! Decides nutrient limitation effect on aggregation -O2dep_remin = .false. ! O2remin Add option for O2 dependency of organic matter remineralization -use_ballasting = .false. ! BALL -use_density_scaling = .false. ! BALL -use_viscosity_scaling = .false. ! BALL -OmegaC_diss = .false. ! DISS Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -CO2lim = .false. ! CO2 dependence of growth and calcification +O2dep_remin = .true. ! O2remin Add option for O2 dependency of organic matter remineralization +use_ballasting = .true. +use_density_scaling = .true. +use_viscosity_scaling = .true. +OmegaC_diss = .true. ! Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -> set calc_diss_guts to zero if this is false!!!! +CO2lim = .true. ! CO2 dependence of growth and calcification Diags = .true. constant_CO2 = .true. UseFeDust = .true. ! Turns dust input of iron off when set to.false. @@ -49,11 +49,7 @@ useErosion = .false. NitrogenSS = .false. ! When set to true, external sources and sinks of nitrogen are activated (Riverine, aeolian and denitrification) useAeolianN = .false. ! When set to true, aeolian nitrogen deposition is activated firstyearoffesomcycle = 1958 ! The first year of the actual physical forcing (e.g. JRA-55) used -<<<<<<< HEAD -lastyearoffesomcycle = 2023 ! Last year of the actual physical forcing used -======= lastyearoffesomcycle = 2024 ! Last year of the actual physical forcing used ->>>>>>> origin/fesom2.6_recom_tra_diags numofCO2cycles = 1 ! Number of cycles of the forcing planned currentCO2cycle = 1 ! Which CO2 cycle we are currently running DIC_PI = .true. @@ -85,23 +81,23 @@ recom_Tref = 288.15d0 ! [K] C2K = 273.15d0 ! Conversion from degrees C to K Ae = 4500.d0 ! [K] Slope of the linear part of the Arrhenius function reminSi = 0.02d0 -k_o2_remin = 15.d0 ! NEW O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 +k_o2_remin = 15.d0 ! O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 / &palimiter_function NMinSlope = 50.d0 SiMinSlope = 1000.d0 -NCmin = 0.04d0 !0.05d0 -NCmin_d = 0.04d0 !0.05d0 -NCmin_c = 0.04d0 ! NEW +NCmin = 0.04d0 +NCmin_d = 0.04d0 +NCmin_c = 0.04d0 SiCmin = 0.04d0 k_Fe = 0.04d0 k_Fe_d = 0.12d0 -k_Fe_c = 0.09d0 ! NEW +k_Fe_c = 0.09d0 k_si = 4.d0 P_cm = 3.0d0 ! [1/day] Rate of C-specific photosynthesis P_cm_d = 3.5d0 -P_cm_c = 2.8d0 ! NEW +P_cm_c = 2.8d0 / &palight_calculations @@ -112,33 +108,33 @@ a_chl = 0.03d0 ! [1/m * 1/(mg Chl)] Chlorophyll specific at &paphotosynthesis alfa = 0.14d0 ! [(mmol C*m2)/(mg Chl*W*day)] alfa_d = 0.19d0 ! An initial slope of the P-I curve -alfa_c = 0.10d0 ! NEW +alfa_c = 0.10d0 parFrac = 0.43d0 / &paassimilation V_cm_fact = 0.7d0 ! scaling factor for temperature dependent maximum of C-specific N-uptake V_cm_fact_d = 0.7d0 -V_cm_fact_c = 0.7d0 ! NEW +V_cm_fact_c = 0.7d0 NMaxSlope = 1000.d0 ! Max slope for limiting function SiMaxSlope = 1000.d0 NCmax = 0.2d0 ! [mmol N/mmol C] Maximum cell quota of nitrogen (N:C) NCmax_d = 0.2d0 -NCmax_c = 0.15d0 ! NEW +NCmax_c = 0.15d0 SiCmax = 0.8d0 NCuptakeRatio = 0.2d0 ! [mmol N/mmol C] Maximum uptake ratio of N:C NCUptakeRatio_d = 0.2d0 -NCUptakeRatio_c = 0.2d0 ! NEW +NCUptakeRatio_c = 0.2d0 SiCUptakeRatio = 0.2d0 k_din = 0.55d0 ! [mmol N/m3] Half-saturation constant for nitrate uptake k_din_d = 1.0d0 -k_din_c = 0.9d0 ! NEW +k_din_c = 0.9d0 Chl2N_max = 3.15d0 ! [mg CHL/mmol N] Maximum CHL a : N ratio = 0.3 gCHL gN^-1 Chl2N_max_d = 4.2d0 -Chl2N_max_c = 3.5d0 ! NEW +Chl2N_max_c = 3.5d0 res_phy = 0.01d0 ! [1/day] Maintenance respiration rate constant res_phy_d = 0.01d0 -res_phy_c = 0.01d0 ! NEW +res_phy_c = 0.01d0 biosynth = 2.33d0 ! [mmol C/mmol N] Cost of biosynthesis biosynthSi = 0.d0 / @@ -149,19 +145,19 @@ ligandStabConst = 100.d0 ! [m3/mumol] order 100. Ligand-free iron sta / &pazooplankton -graz_max = 0.31d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +graz_max = 0.31d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter epsilonr = 0.09d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss -res_het = 0.028d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +res_het = 0.028d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) Redfield = 6.625 ! [mmol C/mmol N] Redfield ratio of C:N = 106:16 loss_het = 0.04d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) -pzDia = 1.0d0 !0.5d0 ! Maximum diatom preference +pzDia = 0.5d0 ! Maximum diatom preference sDiaNsq = 0.d0 -pzPhy = 0.5d0 !0.25d0 !1.0d0 ! Maximum nano-phytoplankton preference (NEW: 3/12) +pzPhy = 0.04d0 ! Maximum small phytoplankton preference sPhyNsq = 0.d0 -pzCocco = 0.666d0 ! NEW (8/12) -sCoccoNsq = 0.d0 ! NEW -pzMicZoo = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference -sMicZooNsq = 0.d0 ! NEW 3Zoo +pzCocco = 0.4d0 ! Maximum coccolithophore preference ! will not be used in the 2p3z3d version +sCoccoNsq = 0.d0 +pzMicZoo = 1.0d0 ! Maximum microzooplankton preference +sMicZooNsq = 0.d0 tiny_het = 1.d-5 ! for more stable computation of HetRespFlux (_plus). Value can be > tiny because HetRespFlux ~ hetC**2. / @@ -172,17 +168,17 @@ res_zoo2 = 0.0107d0 ! [1/day] Respiration by heterotrophs and mo loss_zoo2 = 0.003d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) fecal_rate_n = 0.104d0 ! [1/day] Temperature dependent N degradation of \ fecal_rate_c = 0.236d0 -fecal_rate_n_mes = 0.25d0 ! NEW 3Zoo -fecal_rate_c_mes = 0.32d0 ! NEW 3Zoo -pzDia2 = 1.5d0 !1.d0 ! Maximum diatom preference +fecal_rate_n_mes = 0.25d0 +fecal_rate_c_mes = 0.32d0 +pzDia2 = 1.0d0 ! Maximum diatom preference sDiaNsq2 = 0.d0 -pzPhy2 = 0.5d0 ! Maximum diatom preference +pzPhy2 = 0.07d0 ! Maximum small phytoplankton preference sPhyNsq2 = 0.d0 -pzCocco2 = 0.5d0 ! NEW -sCoccoNsq2 = 0.d0 ! NEW -pzHet = 1.5d0 !0.8d0 ! Maximum diatom preference +pzCocco2 = 0.7d0 ! Maximum coccolithophore preference ! will not be used in the 2p3z3d version +sCoccoNsq2 = 0.d0 +pzHet = 1.5d0 ! Maximum mesozooplankton preference sHetNsq = 0.d0 -pzMicZoo2 = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference +pzMicZoo2 = 1.0d0 ! Maximum microzooplankton preference sMicZooNsq2 = 0.d0 t1_zoo2 = 28145.d0 ! Krill temp. function constant1 t2_zoo2 = 272.5d0 ! Krill temp. function constant2 @@ -191,27 +187,27 @@ t4_zoo2 = 274.15d0 ! Krill temp. function constant3 / &pathirdzooplankton -graz_max3 = 0.46d0 ! NEW 3Zoo [mmol N/(m3 * day)] Maximum grazing loss parameter -epsilon3 = 0.64d0 ! NEW 3Zoo [(mmol N)2 /m6] Half saturation constant for grazing loss -loss_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Temperature dependent N degradation of extracellular organic N (EON) -res_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Respiration by heterotrophs and mortality (loss to detritus) -pzDia3 = 0.5d0 ! NEW 3Zoo Maximum diatom preference -sDiaNsq3 = 0.d0 ! NEW 3Zoo -pzPhy3 = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference -sPhyNsq3 = 0.d0 ! NEW 3Zoo -pzCocco3 = 0.d0 ! NEW 3Zoo Maximum coccolithophore preference ! ATTENTION: This value needs to be tuned; I start with zero preference! -sCoccoNsq3 = 0.d0 ! NEW 3Zoo +graz_max3 = 0.46d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilon3 = 0.64d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +loss_miczoo = 0.01d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +res_miczoo = 0.02d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +pzDia3 = 0.04d0 ! Maximum diatom preference +sDiaNsq3 = 0.d0 +pzPhy3 = 0.07d0 ! Maximum small phytoplankton preference +sPhyNsq3 = 0.d0 +pzCocco3 = 0.7d0 ! Maximum coccolithophore preference ! will not be used in the 2p3z3d version +sCoccoNsq3 = 0.d0 / &pagrazingdetritus -pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton +pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton sDetNsq = 0.d0 -pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton +pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton sDetZ2Nsq = 0.d0 -pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton -sDetNsq2 = 0.d0 -pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton -sDetZ2Nsq2 = 0.d0 +pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton +sDetNsq2 = 0.d0 +pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton +sDetZ2Nsq2 = 0.d0 / &paaggregation @@ -230,25 +226,25 @@ rho_C1 = 0.1d0 ! [1/day] Temperature dependent C degradatio &paphytoplankton_N lossN = 0.05d0 ! [1/day] Phytoplankton loss of organic N compounds lossN_d = 0.05d0 -lossN_c = 0.05d0 ! NEW +lossN_c = 0.05d0 / &paphytoplankton_C lossC = 0.10d0 ! [1/day] Phytoplankton loss of carbon lossC_d = 0.10d0 -lossC_c = 0.10d0 ! NEW +lossC_c = 0.10d0 / &paphytoplankton_ChlA -deg_Chl = 0.25d0 !0.2d0 !0.25d0 ! [1/day] -deg_Chl_d = 0.15d0 !0.2d0 !0.15d0 -deg_Chl_c = 0.2d0 ! NEW (has been 0.5) +deg_Chl = 0.075 !0.2d0 !0.25d0 ! [1/day] +deg_Chl_d = 0.075 !0.2d0 !0.15d0 +deg_Chl_c = 0.075 !0.2d0 / &padetritus_N -gfin = 0.3d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into zooplankton pool) +gfin = 0.3d0 ! [] Grazing efficiency (fraction of grazing flux into zooplankton pool) grazEff2 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into second zooplankton pool) -grazEff3 = 0.8d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) +grazEff3 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) reminN = 0.165d0 ! [1/day] Temperature dependent remineralisation rate of detritus / @@ -268,11 +264,11 @@ lossC_z2 = 0.02d0 / &pathirdzooloss -lossN_z3 = 0.05d0 ! NEW 3Zoo -lossC_z3 = 0.05d0 ! NEW 3Zoo +lossN_z3 = 0.05d0 +lossC_z3 = 0.05d0 / -&paco2lim ! NEW +&paco2lim Cunits = 976.5625 ! Conversion factor between [mol/m3] (model) and [umol/kg] (function): (1000 * 1000) / 1024 a_co2_phy = 1.162e+00 ! [dimensionless] a_co2_dia = 1.040e+00 ! [dimensionless] @@ -302,11 +298,11 @@ RiverFeConc = 100 &pacalc calc_prod_ratio = 0.02 -calc_diss_guts = 0.0d0 -calc_diss_rate = 0.005714 ! 20.d0/3500.d0 +calc_diss_guts = 0.5d0 ! set to zero if OmegaC_diss is set to false +calc_diss_rate = 0.005714d0 ! 20.d0/3500.d0 calc_diss_rate2 = 0.005714d0 -calc_diss_omegac = 0.197d0 ! NEW DISS Value from Aumont et al. 2015, will be used with OmegaC_diss flag -calc_diss_exp = 1.d0 ! NEW DISS Exponent in the dissolution rate of calcite, will be used with OmegaC_diss flag +calc_diss_omegac = 0.197d0 ! Value from Aumont et al. 2015, is used with OmegaC_diss flag +calc_diss_exp = 1.d0 ! Exponent in the dissolution rate of calcite, is used with OmegaC_diss flag / &pabenthos_decay_rate @@ -339,7 +335,7 @@ rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus -depth_scaling1 = 0.015d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted +depth_scaling1 = 0.01d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted max_sinking_velocity = 250.d0 ! d-1; for numerical stability, set a maximum possible sinking velocity here (applies to both detritus classes) / @@ -357,3 +353,4 @@ atbox_spinup = .false. cosmic_14_init = 2.0 / + diff --git a/config/bin_3p3z2d/namelist.recom b/config/bin_3p3z2d/namelist.recom index 6fb6dd2f8..8a91cee74 100644 --- a/config/bin_3p3z2d/namelist.recom +++ b/config/bin_3p3z2d/namelist.recom @@ -13,7 +13,7 @@ nm_co2_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_fina use_REcoM =.true. REcoM_restart =.true. -bgc_num = 33 !30 !22 !33 !24 !38 +bgc_num = 33 !24 !38 !22 diags3d_num = 28 ! Number of diagnostic 3d tracers to be saved bgc_base_num = 22 ! standard tracers VDet = 20.d0 ! Sinking velocity, constant through the water column and positive downwards @@ -29,10 +29,10 @@ Grazing_detritus = .true. het_resp_noredfield = .true. ! Decides respiratation of copepod group diatom_mucus = .true. ! Decides nutrient limitation effect on aggregation O2dep_remin = .true. ! O2remin Add option for O2 dependency of organic matter remineralization -use_ballasting = .true. ! BALL -use_density_scaling = .true. ! BALL -use_viscosity_scaling = .true. ! BALL -OmegaC_diss = .true. ! DISS Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) +use_ballasting = .true. +use_density_scaling = .true. +use_viscosity_scaling = .true. +OmegaC_diss = .true. ! Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -> set calc_diss_guts to zero if this is false!!!! CO2lim = .true. ! CO2 dependence of growth and calcification Diags = .true. constant_CO2 = .true. @@ -81,23 +81,23 @@ recom_Tref = 288.15d0 ! [K] C2K = 273.15d0 ! Conversion from degrees C to K Ae = 4500.d0 ! [K] Slope of the linear part of the Arrhenius function reminSi = 0.02d0 -k_o2_remin = 15.d0 ! NEW O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 +k_o2_remin = 15.d0 ! O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 / &palimiter_function NMinSlope = 50.d0 SiMinSlope = 1000.d0 -NCmin = 0.04d0 !0.05d0 -NCmin_d = 0.04d0 !0.05d0 -NCmin_c = 0.04d0 ! NEW +NCmin = 0.04d0 +NCmin_d = 0.04d0 +NCmin_c = 0.04d0 SiCmin = 0.04d0 k_Fe = 0.04d0 k_Fe_d = 0.12d0 -k_Fe_c = 0.09d0 ! NEW +k_Fe_c = 0.09d0 k_si = 4.d0 P_cm = 3.0d0 ! [1/day] Rate of C-specific photosynthesis P_cm_d = 3.5d0 -P_cm_c = 2.8d0 ! NEW +P_cm_c = 2.8d0 / &palight_calculations @@ -108,33 +108,33 @@ a_chl = 0.03d0 ! [1/m * 1/(mg Chl)] Chlorophyll specific at &paphotosynthesis alfa = 0.14d0 ! [(mmol C*m2)/(mg Chl*W*day)] alfa_d = 0.19d0 ! An initial slope of the P-I curve -alfa_c = 0.10d0 ! NEW +alfa_c = 0.10d0 parFrac = 0.43d0 / &paassimilation V_cm_fact = 0.7d0 ! scaling factor for temperature dependent maximum of C-specific N-uptake V_cm_fact_d = 0.7d0 -V_cm_fact_c = 0.7d0 ! NEW +V_cm_fact_c = 0.7d0 NMaxSlope = 1000.d0 ! Max slope for limiting function SiMaxSlope = 1000.d0 NCmax = 0.2d0 ! [mmol N/mmol C] Maximum cell quota of nitrogen (N:C) NCmax_d = 0.2d0 -NCmax_c = 0.15d0 ! NEW +NCmax_c = 0.15d0 SiCmax = 0.8d0 NCuptakeRatio = 0.2d0 ! [mmol N/mmol C] Maximum uptake ratio of N:C NCUptakeRatio_d = 0.2d0 -NCUptakeRatio_c = 0.2d0 ! NEW +NCUptakeRatio_c = 0.2d0 SiCUptakeRatio = 0.2d0 k_din = 0.55d0 ! [mmol N/m3] Half-saturation constant for nitrate uptake k_din_d = 1.0d0 -k_din_c = 0.9d0 ! NEW +k_din_c = 0.9d0 Chl2N_max = 3.15d0 ! [mg CHL/mmol N] Maximum CHL a : N ratio = 0.3 gCHL gN^-1 Chl2N_max_d = 4.2d0 -Chl2N_max_c = 3.5d0 ! NEW +Chl2N_max_c = 3.5d0 res_phy = 0.01d0 ! [1/day] Maintenance respiration rate constant res_phy_d = 0.01d0 -res_phy_c = 0.01d0 ! NEW +res_phy_c = 0.01d0 biosynth = 2.33d0 ! [mmol C/mmol N] Cost of biosynthesis biosynthSi = 0.d0 / @@ -145,19 +145,19 @@ ligandStabConst = 100.d0 ! [m3/mumol] order 100. Ligand-free iron sta / &pazooplankton -graz_max = 0.31d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +graz_max = 0.31d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter epsilonr = 0.09d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss -res_het = 0.028d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +res_het = 0.028d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) Redfield = 6.625 ! [mmol C/mmol N] Redfield ratio of C:N = 106:16 loss_het = 0.04d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) -pzDia = 0.5d0 !1.0d0 !0.5d0 ! Maximum diatom preference +pzDia = 0.5d0 ! Maximum diatom preference sDiaNsq = 0.d0 -pzPhy = 0.04d0 !0.5d0 !0.25d0 !1.0d0 ! Maximum nano-phytoplankton preference (NEW: 3/12) +pzPhy = 0.04d0 ! Maximum small phytoplankton preference sPhyNsq = 0.d0 -pzCocco = 0.4d0 !0.666d0 ! NEW (8/12) -sCoccoNsq = 0.d0 ! NEW -pzMicZoo = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference -sMicZooNsq = 0.d0 ! NEW 3Zoo +pzCocco = 0.4d0 ! Maximum coccolithophore preference +sCoccoNsq = 0.d0 +pzMicZoo = 1.0d0 ! Maximum microzooplankton preference +sMicZooNsq = 0.d0 tiny_het = 1.d-5 ! for more stable computation of HetRespFlux (_plus). Value can be > tiny because HetRespFlux ~ hetC**2. / @@ -168,17 +168,17 @@ res_zoo2 = 0.0107d0 ! [1/day] Respiration by heterotrophs and mo loss_zoo2 = 0.003d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) fecal_rate_n = 0.104d0 ! [1/day] Temperature dependent N degradation of \ fecal_rate_c = 0.236d0 -fecal_rate_n_mes = 0.25d0 ! NEW 3Zoo -fecal_rate_c_mes = 0.32d0 ! NEW 3Zoo -pzDia2 = 1.0d0 !1.5d0 !1.d0 ! Maximum diatom preference +fecal_rate_n_mes = 0.25d0 +fecal_rate_c_mes = 0.32d0 +pzDia2 = 1.0d0 ! Maximum diatom preference sDiaNsq2 = 0.d0 -pzPhy2 = 0.07d0 !0.5d0 ! Maximum diatom preference +pzPhy2 = 0.07d0 ! Maximum small phytoplankton preference sPhyNsq2 = 0.d0 -pzCocco2 = 0.7 !0.5d0 ! NEW -sCoccoNsq2 = 0.d0 ! NEW -pzHet = 1.5d0 !0.8d0 ! Maximum diatom preference +pzCocco2 = 0.7d0 ! Maximum coccolithophore preference +sCoccoNsq2 = 0.d0 +pzHet = 1.5d0 ! Maximum mesozooplankton preference sHetNsq = 0.d0 -pzMicZoo2 = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference +pzMicZoo2 = 1.0d0 ! Maximum microzooplankton preference sMicZooNsq2 = 0.d0 t1_zoo2 = 28145.d0 ! Krill temp. function constant1 t2_zoo2 = 272.5d0 ! Krill temp. function constant2 @@ -187,27 +187,27 @@ t4_zoo2 = 274.15d0 ! Krill temp. function constant3 / &pathirdzooplankton -graz_max3 = 0.46d0 ! NEW 3Zoo [mmol N/(m3 * day)] Maximum grazing loss parameter -epsilon3 = 0.64d0 ! NEW 3Zoo [(mmol N)2 /m6] Half saturation constant for grazing loss -loss_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Temperature dependent N degradation of extracellular organic N (EON) -res_miczoo = 0.02d0 !0.01d0 ! NEW 3Zoo [1/day] Respiration by heterotrophs and mortality (loss to detritus) -pzDia3 = 0.04d0 !0.5d0 ! NEW 3Zoo Maximum diatom preference -sDiaNsq3 = 0.d0 ! NEW 3Zoo -pzPhy3 = 0.07 !1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference -sPhyNsq3 = 0.d0 ! NEW 3Zoo -pzCocco3 = 0.7d0 !0.d0 ! NEW 3Zoo Maximum coccolithophore preference ! ATTENTION: This value needs to be tuned; I start with zero preference! -sCoccoNsq3 = 0.d0 ! NEW 3Zoo +graz_max3 = 0.46d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilon3 = 0.64d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +loss_miczoo = 0.01d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +res_miczoo = 0.02d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +pzDia3 = 0.04d0 ! Maximum diatom preference +sDiaNsq3 = 0.d0 +pzPhy3 = 0.07d0 ! Maximum small phytoplankton preference +sPhyNsq3 = 0.d0 +pzCocco3 = 0.7d0 ! Maximum coccolithophore preference +sCoccoNsq3 = 0.d0 / &pagrazingdetritus -pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton +pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton sDetNsq = 0.d0 -pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton +pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton sDetZ2Nsq = 0.d0 -pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton -sDetNsq2 = 0.d0 -pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton -sDetZ2Nsq2 = 0.d0 +pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton +sDetNsq2 = 0.d0 +pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton +sDetZ2Nsq2 = 0.d0 / &paaggregation @@ -226,25 +226,25 @@ rho_C1 = 0.1d0 ! [1/day] Temperature dependent C degradatio &paphytoplankton_N lossN = 0.05d0 ! [1/day] Phytoplankton loss of organic N compounds lossN_d = 0.05d0 -lossN_c = 0.05d0 ! NEW +lossN_c = 0.05d0 / &paphytoplankton_C lossC = 0.10d0 ! [1/day] Phytoplankton loss of carbon lossC_d = 0.10d0 -lossC_c = 0.10d0 ! NEW +lossC_c = 0.10d0 / &paphytoplankton_ChlA -deg_Chl = 0.25d0 !0.2d0 !0.25d0 ! [1/day] -deg_Chl_d = 0.15d0 !0.2d0 !0.15d0 -deg_Chl_c = 0.2d0 ! NEW (has been 0.5) +deg_Chl = 0.075 !0.2d0 !0.25d0 ! [1/day] +deg_Chl_d = 0.075 !0.2d0 !0.15d0 +deg_Chl_c = 0.075 !0.2d0 / &padetritus_N -gfin = 0.3d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into zooplankton pool) +gfin = 0.3d0 ! [] Grazing efficiency (fraction of grazing flux into zooplankton pool) grazEff2 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into second zooplankton pool) -grazEff3 = 0.8d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) +grazEff3 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) reminN = 0.165d0 ! [1/day] Temperature dependent remineralisation rate of detritus / @@ -264,11 +264,11 @@ lossC_z2 = 0.02d0 / &pathirdzooloss -lossN_z3 = 0.05d0 ! NEW 3Zoo -lossC_z3 = 0.05d0 ! NEW 3Zoo +lossN_z3 = 0.05d0 +lossC_z3 = 0.05d0 / -&paco2lim ! NEW +&paco2lim Cunits = 976.5625 ! Conversion factor between [mol/m3] (model) and [umol/kg] (function): (1000 * 1000) / 1024 a_co2_phy = 1.162e+00 ! [dimensionless] a_co2_dia = 1.040e+00 ! [dimensionless] @@ -298,11 +298,11 @@ RiverFeConc = 100 &pacalc calc_prod_ratio = 0.02 -calc_diss_guts = 0.5d0 !0.0d0 -calc_diss_rate = 0.005714d0 ! 20.d0/3500.d0 +calc_diss_guts = 0.5d0 ! set to zero if OmegaC_diss is set to false +calc_diss_rate = 0.005714d0 ! 20.d0/3500.d0 calc_diss_rate2 = 0.005714d0 -calc_diss_omegac = 0.197d0 ! NEW DISS Value from Aumont et al. 2015, will be used with OmegaC_diss flag -calc_diss_exp = 1.d0 ! NEW DISS Exponent in the dissolution rate of calcite, will be used with OmegaC_diss flag +calc_diss_omegac = 0.197d0 ! Value from Aumont et al. 2015, is used with OmegaC_diss flag +calc_diss_exp = 1.d0 ! Exponent in the dissolution rate of calcite, is used with OmegaC_diss flag / &pabenthos_decay_rate @@ -335,7 +335,7 @@ rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus -depth_scaling1 = 0.01d0 !5d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted +depth_scaling1 = 0.01d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted max_sinking_velocity = 250.d0 ! d-1; for numerical stability, set a maximum possible sinking velocity here (applies to both detritus classes) / @@ -353,3 +353,4 @@ atbox_spinup = .false. cosmic_14_init = 2.0 / + From 502d4d6964ad19898da546ab85f8f0c8ebbc9423 Mon Sep 17 00:00:00 2001 From: ogurses Date: Mon, 1 Sep 2025 13:12:26 +0200 Subject: [PATCH 14/66] fix(fesom): Bugfix: sign of real salt flux Correct reported salt flux bug in oce_ale_tracer.F90. https://github.com/FESOM/fesom2/issues/721 --- src/oce_ale_tracer.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 67ce75f8a..e4b2c043d 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -240,7 +240,7 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) endif SinkingVel1 = 0.0d0 ! OG 16.03.23 SinkingVel2 = 0.0d0 ! OG 16.03.23 -#endif +#endif ! do tracer AB (Adams-Bashfort) interpolation only for advectiv part ! needed if (flag_debug .and. mype==0) print *, achar(27)//'[37m'//' --> call init_tracers_AB'//achar(27)//'[0m' @@ -693,7 +693,7 @@ subroutine diff_ver_part_expl_ale(tr_num, tracers, partit, mesh) rdata = Tsurf(n) rlx = surf_relax_T elseif (tracers%data(tr_num)%ID==2) then - flux = virtual_salt(n)+relax_salt(n)- real_salt_flux(n)*is_nonlinfs + flux = virtual_salt(n)+relax_salt(n)+ real_salt_flux(n)*is_nonlinfs !Bugfix: sign of real salt flux, https://github.com/FESOM/fesom2/issues/721 else flux = 0._WP rdata = 0._WP @@ -1644,7 +1644,7 @@ FUNCTION bc_surface(n, id, sval, nzmin, partit) ! --> real_salt_flux(:): salt flux due to containment/releasing of salt ! by forming/melting of sea ice bc_surface= dt*(virtual_salt(n) & !--> is zeros for zlevel/zstar - + relax_salt(n) - real_salt_flux(n)*is_nonlinfs) + + relax_salt(n) + real_salt_flux(n)*is_nonlinfs) !Bugfix: sign of real salt flux, https://github.com/FESOM/fesom2/issues/721 #if defined(__recom) CASE (1001) ! DIN if (use_MEDUSA .and. add_loopback) then ! OG: add is_MEDUSA_loopback flag is_MEDUSA_loopback flag * lb_flux(n,1) From 5349130f48e6efd64dec81a550867545dd69c24a Mon Sep 17 00:00:00 2001 From: ogurses Date: Thu, 25 Sep 2025 14:29:10 +0200 Subject: [PATCH 15/66] fix(recom): Return to saturation model for chlorophyll degradation We commented out the linear model where degradation is directly proportional to light intensity and the chlorophyll degradation rate is capped at a maximum of 0.3. Reason for this is the unrealistic air2sea co2 fluxes in the 2p3z2d setup. The reactivated saturation model is more realistic. It accounts for light saturation effects. At low light, degradation increases roughly linearly with PAR At high light, the degradation rate approaches an asymptotic maximum --- src/int_recom/recom_sms.F90 | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/int_recom/recom_sms.F90 b/src/int_recom/recom_sms.F90 index d0a4925ec..5deb705a9 100644 --- a/src/int_recom/recom_sms.F90 +++ b/src/int_recom/recom_sms.F90 @@ -663,20 +663,23 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & if (pMax .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast /= CHL2C_plast) then KOchl = deg_Chl*0.1d0 else - !KOchl = deg_Chl*(real(one) - exp(-alfa * CHL2C_plast * PARave / pMax)) - KOchl = deg_Chl * CHL2C_plast * PARave +!< Saturation model for chlorophyll degradation + KOchl = deg_Chl*(real(one) - exp(-alfa * CHL2C_plast * PARave / pMax)) +!< Linear model for chlorophyll degradation is directly proportional to light intensity + !KOchl = deg_Chl * CHL2C_plast * PARave KOchl = max((deg_Chl*0.1d0), KOchl) - KOchl = min(KOChl, 0.3d0) +!< Safety constraint that caps the chlorophyll degradation rate at a maximum of 0.3 + !KOchl = min(KOChl, 0.3d0) end if !< *** Diatoms Chla loss *** !< ************************* if (pMax_dia .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast_dia /= CHL2C_plast_dia) then KOchl_dia = deg_Chl_d*0.1d0 else - !KOchl_dia = deg_Chl_d * (real(one) - exp(-alfa_d * CHL2C_plast_dia * PARave / pMax_dia )) - KOchl_dia = deg_Chl_d * CHL2C_plast_dia * PARave + KOchl_dia = deg_Chl_d * (real(one) - exp(-alfa_d * CHL2C_plast_dia * PARave / pMax_dia )) + !KOchl_dia = deg_Chl_d * CHL2C_plast_dia * PARave KOchl_dia = max((deg_Chl_d*0.1d0), KOchl_dia) - KOchl_dia = min(KOChl_dia, 0.3d0) + !KOchl_dia = min(KOChl_dia, 0.3d0) end if !< *** Coccolithophores chla loss *** !< ********************************** @@ -684,10 +687,10 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & if (pMax_cocco .lt. tiny .OR. PARave /= Parave .OR. CHL2C_plast_cocco /= CHL2C_plast_cocco) then KOchl_cocco = deg_Chl_c*0.1d0 else - !KOchl_cocco = deg_Chl_c * (real(one) - exp( -alfa_c * CHL2C_plast_cocco * PARave / pMax_cocco )) - KOchl_cocco = deg_Chl_c * CHL2C_plast_cocco * PARave + KOchl_cocco = deg_Chl_c * (real(one) - exp( -alfa_c * CHL2C_plast_cocco * PARave / pMax_cocco )) + !KOchl_cocco = deg_Chl_c * CHL2C_plast_cocco * PARave KOchl_cocco = max((deg_Chl_c*0.1d0), KOchl_cocco) - KOchl_cocco = min(KOChl_cocco, 0.3d0) + !KOchl_cocco = min(KOChl_cocco, 0.3d0) end if !< *** Phaeocystis chla loss *** @@ -695,10 +698,10 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & if (pMax_phaeo .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast_phaeo /= CHL2C_plast_phaeo) then KOchl_phaeo = deg_Chl_p*0.1d0 else - !KOchl_phaeo = deg_Chl_p*(real(one) - exp(-alfa_p * CHL2C_plast_phaeo * PARave / pMax_phaeo)) - KOchl_phaeo = deg_Chl_p * CHL2C_plast_phaeo * PARave + KOchl_phaeo = deg_Chl_p*(real(one) - exp(-alfa_p * CHL2C_plast_phaeo * PARave / pMax_phaeo)) + !KOchl_phaeo = deg_Chl_p * CHL2C_plast_phaeo * PARave KOchl_phaeo = max((deg_Chl_p*0.1d0), KOchl_phaeo) - KOchl_phaeo = min(KOChl_phaeo, 0.3d0) + !KOchl_phaeo = min(KOChl_phaeo, 0.3d0) end if #endif if (KOchl /= KOchl) then @@ -968,7 +971,7 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & !< pzCocco2: Maximum coccolithophore preference !< pzPhaeo2: Maximum phaeocystis preference !< pzDet2: Maximum slow-sinking detritus prefence by macrozooplankton -!< pzDetZ22: Maximum fast-sinking detritus preference by macrozooplankton +!< pzDetZ22: Maximum fast-sinking detritus preference by macrozooplankton !< pzHet: Maximum mesozooplankton preference !< pzMicZoo2: Maximum microzooplankton preference From cda35117682f78ac3a7b1ffd4d2d0c2190bf548e Mon Sep 17 00:00:00 2001 From: ogurses Date: Thu, 9 Oct 2025 10:15:03 +0200 Subject: [PATCH 16/66] feat(recom)!: feat(recom)!: replace `__coccos` and `__3Zoo2Det` directives with namelist parameters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace preprocessor directives with namelist parameters: * `__3Zoo2Det` → `enable_3zoo2det` * `__coccos` → `enable_coccos` * Enhanced inline comments with ecological significance and biological context *Complete variable/parameter documentation with units and descriptions * Clear sectioning with visual separators and variable definitions * Equation explanations showing mathematical relationships and biological processes * Logic documentation for decision trees and conditional blocks * Comments now explain "why" not just "what" **Sequence Validation** * Generates expected tracer ID list based on configuration * Shows exact ID order and position-by-position comparison **Configuration-Specific Clash Detection** * Full Model (both flags): Don't use IDs 1023-1024 * Coccos-only: Use 1023-1028 (NOT 1029-1034) * 3Zoo2Det-only: Use 1029-1030 for microzoo (NOT 1035-1036) **Validation Checks** * Exact sequence matching against expected IDs * Duplicate ID detection *Forbidden ID detection per configuration BREAKING CHANGE: replace directives with namelist parameter for model configuration --- config/bin_2p1z1d/job_albedo | 6 +- config/bin_2p1z1d/namelist.recom | 11 +- config/bin_2p3z2d/job_albedo | 8 +- config/bin_2p3z2d/namelist.recom | 17 +- config/bin_3p3z2d/job_albedo | 6 +- config/bin_3p3z2d/namelist.recom | 5 + config/bin_4p3z2d/job_albedo | 8 +- config/bin_4p3z2d/namelist.recom | 7 +- src/CMakeLists.txt | 2 +- src/gen_model_setup.F90 | 1 + src/int_recom/recom_forcing.F90 | 16 +- src/int_recom/recom_init.F90 | 291 +- src/int_recom/recom_main.F90 | 40 +- src/int_recom/recom_modules.F90 | 661 ++- src/int_recom/recom_sinking.F90 | 155 +- src/int_recom/recom_sms.F90 | 9333 ++++++++++++++++++++++-------- 16 files changed, 7801 insertions(+), 2766 deletions(-) diff --git a/config/bin_2p1z1d/job_albedo b/config/bin_2p1z1d/job_albedo index a9d157b2c..d735fd967 100755 --- a/config/bin_2p1z1d/job_albedo +++ b/config/bin_2p1z1d/job_albedo @@ -1,5 +1,5 @@ #!/bin/bash -#SBATCH --account=nwg_maresys.maresys +#SBATCH --account=biogeo_model.biogeo_model #SBATCH --job-name=2p1z1d #SBATCH --partition=mpp #SBATCH -N 9 @@ -22,7 +22,7 @@ ulimit -s unlimited # determine JOBID JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` -ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x +#ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x #cp -n ../config/namelist.config . #cp -n ../config/namelist.forcing . #cp -n ../config/namelist.oce . @@ -48,7 +48,7 @@ date #fi Resultpath='/albedo/work/user/...' -test -e $Resultpath/fesom.2019.oce.restart && exit +test -e $Resultpath/fesom.xxxxx.oce.restart && exit IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) if (( IsInFile > 0 )); then diff --git a/config/bin_2p1z1d/namelist.recom b/config/bin_2p1z1d/namelist.recom index f4e5c1a62..bcdea2e79 100644 --- a/config/bin_2p1z1d/namelist.recom +++ b/config/bin_2p1z1d/namelist.recom @@ -9,6 +9,11 @@ nm_erosion_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_fina nm_co2_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_finaltopo_mean/MonthlyAtmCO2_gcb2023.nc' / +&parecomsetup +enable_3zoo2det = .true. +enable_coccos = .false. +/ + &pavariables use_REcoM =.true. REcoM_restart =.true. @@ -32,7 +37,7 @@ O2dep_remin = .true. ! O2remin Add option for O2 dependency of orga use_ballasting = .true. use_density_scaling = .true. use_viscosity_scaling = .true. -OmegaC_diss = .true. ! Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -> set calc_diss_guts to zero if this is false!!!! +OmegaC_diss = .false. ! Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -> set calc_diss_guts to zero if this is false!!!! CO2lim = .true. ! CO2 dependence of growth and calcification Diags = .true. constant_CO2 = .true. @@ -298,7 +303,7 @@ RiverFeConc = 100 &pacalc calc_prod_ratio = 0.02 -calc_diss_guts = 0.5d0 ! set to zero if OmegaC_diss is set to false +calc_diss_guts = 0.0d0 ! set to zero if OmegaC_diss is set to false calc_diss_rate = 0.005714d0 ! 20.d0/3500.d0 calc_diss_rate2 = 0.005714d0 calc_diss_omegac = 0.197d0 ! Value from Aumont et al. 2015, is used with OmegaC_diss flag @@ -333,7 +338,7 @@ rho_opal = 2090.d0 ! kg m-3; density of Opal (see Table 1 in Cram rho_ref_part = 1230.d0 ! kg m-3; reference particle density (see Cram et al., 2018) rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram et al., 2018) visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) -w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus +w_ref1 = 5.d0 ! m s-1; reference sinking velocity of small detritus w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus depth_scaling1 = 0.01d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted diff --git a/config/bin_2p3z2d/job_albedo b/config/bin_2p3z2d/job_albedo index 341bdb6da..d6e379887 100755 --- a/config/bin_2p3z2d/job_albedo +++ b/config/bin_2p3z2d/job_albedo @@ -1,5 +1,5 @@ #!/bin/bash -#SBATCH --account=nwg_maresys.maresys +#SBATCH --account=biogeo_model.biogeo_model #SBATCH --job-name=2p3z2d #SBATCH --partition=mpp #SBATCH -N 9 @@ -22,7 +22,7 @@ ulimit -s unlimited # determine JOBID JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` -ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x +#ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x #cp -n ../config/namelist.config . #cp -n ../config/namelist.forcing . #cp -n ../config/namelist.oce . @@ -47,8 +47,8 @@ date #sbatch job_albedo #fi -Resultpath='/albedo/work/user/...' -test -e $Resultpath/fesom.2019.oce.restart && exit +Resultpath='/albedo/work/user/xxx' +test -e $Resultpath/fesom.xxx.oce.restart && exit IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) if (( IsInFile > 0 )); then diff --git a/config/bin_2p3z2d/namelist.recom b/config/bin_2p3z2d/namelist.recom index 0861315cb..af69391f2 100644 --- a/config/bin_2p3z2d/namelist.recom +++ b/config/bin_2p3z2d/namelist.recom @@ -9,6 +9,11 @@ nm_erosion_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_fina nm_co2_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_finaltopo_mean/MonthlyAtmCO2_gcb2023.nc' / +&parecomsetup +enable_3zoo2det = .true. +enable_coccos = .false. +/ + &pavariables use_REcoM =.true. REcoM_restart =.true. @@ -32,7 +37,7 @@ O2dep_remin = .true. ! O2remin Add option for O2 dependency of orga use_ballasting = .true. use_density_scaling = .true. use_viscosity_scaling = .true. -OmegaC_diss = .true. ! Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -> set calc_diss_guts to zero if this is false!!!! +OmegaC_diss = .false. ! Use OmegaC from Mocsy to compute calcite dissolution (after Aumont et al. 2015 and Gehlen et al. 2007) -> set calc_diss_guts to zero if this is false!!!! CO2lim = .true. ! CO2 dependence of growth and calcification Diags = .true. constant_CO2 = .true. @@ -236,9 +241,9 @@ lossC_c = 0.10d0 / &paphytoplankton_ChlA -deg_Chl = 0.075 !0.2d0 !0.25d0 ! [1/day] -deg_Chl_d = 0.075 !0.2d0 !0.15d0 -deg_Chl_c = 0.075 !0.2d0 +deg_Chl = 0.25d0 !0.075 !0.2d0 !0.25d0 ! [1/day] +deg_Chl_d = 0.15d0 !0.075 !0.2d0 !0.15d0 +deg_Chl_c = 0.2d0 !0.075 !0.2d0 / &padetritus_N @@ -298,7 +303,7 @@ RiverFeConc = 100 &pacalc calc_prod_ratio = 0.02 -calc_diss_guts = 0.5d0 ! set to zero if OmegaC_diss is set to false +calc_diss_guts = 0.0d0 ! set to zero if OmegaC_diss is set to false calc_diss_rate = 0.005714d0 ! 20.d0/3500.d0 calc_diss_rate2 = 0.005714d0 calc_diss_omegac = 0.197d0 ! Value from Aumont et al. 2015, is used with OmegaC_diss flag @@ -333,7 +338,7 @@ rho_opal = 2090.d0 ! kg m-3; density of Opal (see Table 1 in Cram rho_ref_part = 1230.d0 ! kg m-3; reference particle density (see Cram et al., 2018) rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram et al., 2018) visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) -w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus +w_ref1 = 5.d0 ! m s-1; reference sinking velocity of small detritus w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus depth_scaling1 = 0.01d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted diff --git a/config/bin_3p3z2d/job_albedo b/config/bin_3p3z2d/job_albedo index 510603cff..f00ec4f36 100755 --- a/config/bin_3p3z2d/job_albedo +++ b/config/bin_3p3z2d/job_albedo @@ -1,5 +1,5 @@ #!/bin/bash -#SBATCH --account=nwg_maresys.maresys +#SBATCH --account=biogeo_model.biogeo_model #SBATCH --job-name=3p3z2d #SBATCH --partition=mpp #SBATCH -N 9 @@ -22,7 +22,7 @@ ulimit -s unlimited # determine JOBID JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` -ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x +#ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x #cp -n ../config/namelist.config . #cp -n ../config/namelist.forcing . #cp -n ../config/namelist.oce . @@ -48,7 +48,7 @@ date #fi Resultpath='/albedo/work/user/...' -test -e $Resultpath/fesom.2019.oce.restart && exit +test -e $Resultpath/fesom.xxxxxx.oce.restart && exit IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) if (( IsInFile > 0 )); then diff --git a/config/bin_3p3z2d/namelist.recom b/config/bin_3p3z2d/namelist.recom index 8a91cee74..36feb2ae9 100644 --- a/config/bin_3p3z2d/namelist.recom +++ b/config/bin_3p3z2d/namelist.recom @@ -9,6 +9,11 @@ nm_erosion_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_fina nm_co2_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_finaltopo_mean/MonthlyAtmCO2_gcb2023.nc' / +&parecomsetup +enable_3zoo2det = .true. +enable_coccos = .false. +/ + &pavariables use_REcoM =.true. REcoM_restart =.true. diff --git a/config/bin_4p3z2d/job_albedo b/config/bin_4p3z2d/job_albedo index e6d8a8140..e31795168 100755 --- a/config/bin_4p3z2d/job_albedo +++ b/config/bin_4p3z2d/job_albedo @@ -1,5 +1,5 @@ #!/bin/bash -#SBATCH --account=nwg_maresys.maresys +#SBATCH --account=biogeo_model.biogeo_model #SBATCH --job-name=4p3z2d #SBATCH --partition=mpp #SBATCH -N 9 @@ -22,7 +22,7 @@ ulimit -s unlimited # determine JOBID JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1` -ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x +#ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x #cp -n ../config/namelist.config . #cp -n ../config/namelist.forcing . #cp -n ../config/namelist.oce . @@ -47,8 +47,8 @@ date #sbatch job_albedo #fi -Resultpath='/albedo/work/user/...' -test -e $Resultpath/fesom.2019.oce.restart && exit +Resultpath='/albedo/work/user/xxx' +test -e $Resultpath/fesom.xxxx.oce.restart && exit IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps) if (( IsInFile > 0 )); then diff --git a/config/bin_4p3z2d/namelist.recom b/config/bin_4p3z2d/namelist.recom index df3ca3e5b..94fb26c67 100644 --- a/config/bin_4p3z2d/namelist.recom +++ b/config/bin_4p3z2d/namelist.recom @@ -9,6 +9,11 @@ nm_erosion_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_fina nm_co2_data_file ='/albedo/work/projects/p_pool_recom/input/mesh_CORE2_finaltopo_mean/MonthlyAtmCO2_gcb2023.nc' / +&parecomsetup +enable_3zoo2det = .true. +enable_coccos = .true. +/ + &pavariables use_REcoM =.true. REcoM_restart =.true. @@ -377,7 +382,7 @@ rho_opal = 2090.d0 ! kg m-3; density of Opal (see Table 1 in Cram rho_ref_part = 1230.d0 ! kg m-3; reference particle density (see Cram et al., 2018) rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram et al., 2018) visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) -w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus +w_ref1 = 5.d0 ! m s-1; reference sinking velocity of small detritus w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus depth_scaling1 = 0.01d0 !5d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 54de5c3ea..3cc8e9596 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -237,7 +237,7 @@ if(OPENMP_REPRODUCIBLE) endif() if(${RECOM_COUPLED}) - target_compile_definitions(${PROJECT_NAME} PRIVATE __recom USE_PRECISION=2 __3Zoo2Det __coccos)# __usetp) + target_compile_definitions(${PROJECT_NAME} PRIVATE __recom USE_PRECISION=2) # __3Zoo2Det __coccos)# __usetp) endif() if(${CISO_COUPLED}) diff --git a/src/gen_model_setup.F90 b/src/gen_model_setup.F90 index 13a669a3a..2d26f8a18 100755 --- a/src/gen_model_setup.F90 +++ b/src/gen_model_setup.F90 @@ -89,6 +89,7 @@ subroutine setup_model(partit) #if defined (__recom) nmlfile ='namelist.recom' ! name of recom namelist file open (newunit=fileunit, file=nmlfile) + read (fileunit, NML=parecomsetup) read (fileunit, NML=pavariables) read (fileunit, NML=pasinking) read (fileunit, NML=painitialization_N) diff --git a/src/int_recom/recom_forcing.F90 b/src/int_recom/recom_forcing.F90 index 59bef0116..4fe4a6f4a 100644 --- a/src/int_recom/recom_forcing.F90 +++ b/src/int_recom/recom_forcing.F90 @@ -110,13 +110,13 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp, Temp, Sali, Sali tiny_Si = tiny_C_d/SiCmax ! SiCmax = 0.8d0 -#if defined (__coccos) +if (enable_coccos) then tiny_N_c = tiny_chl/chl2N_max_c ! 0.00001/ 3.5d0 tiny_C_c = tiny_N_c/NCmax_c ! NCmax_c = 0.15d0 tiny_N_p = tiny_chl/chl2N_max_p ! 0.00001/ 3.5d0 tiny_C_p = tiny_N_p/NCmax_p ! NCmax_c = 0.15d0 -#endif +endif call Cobeta(partit, mesh) call Depth_calculations(n, Nn,SinkVel,zF,thick,recipthick, partit, mesh) @@ -262,7 +262,7 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp, Temp, Sali, Sali state(1:nn,idiac) = max(tiny_C_d,state(1:nn,idiac)) state(1:nn,idiasi) = max(tiny_Si, state(1:nn,idiasi)) -#if defined (__coccos) +if (enable_coccos) then state(1:nn,icchl) = max(tiny_chl,state(1:nn,icchl)) state(1:nn,icocn) = max(tiny_N_c,state(1:nn,icocn)) state(1:nn,icocc) = max(tiny_C_c,state(1:nn,icocc)) @@ -270,12 +270,12 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp, Temp, Sali, Sali state(1:nn,iphachl) = max(tiny_chl,state(1:nn,iphachl)) state(1:nn,iphan) = max(tiny_N_p,state(1:nn,iphan)) state(1:nn,iphac) = max(tiny_C_p,state(1:nn,iphac)) -#endif +endif -#if defined (__3Zoo2Det) +if (enable_3zoo2det) then state(1:nn,imiczoon) = max(tiny,state(1:nn,imiczoon)) state(1:nn,imiczooc) = max(tiny,state(1:nn,imiczooc)) -#endif +endif if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> ciso after REcoM_Forcing'//achar(27)//'[0m' @@ -346,7 +346,7 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp, Temp, Sali, Sali locNNAd = sum(vertNNAd(1:nn) * thick(1:nn)) locChldegd = sum(vertChldegd(1:nn) * thick(1:nn)) -#if defined (__coccos) +if (enable_coccos) then locNPPc = sum(vertNPPc(1:nn) * thick(1:nn)) locGPPc = sum(vertGPPc(1:nn) * thick(1:nn)) locNNAc = sum(vertNNAc(1:nn) * thick(1:nn)) @@ -356,7 +356,7 @@ subroutine REcoM_Forcing(zNodes, n, Nn, state, SurfSW, Loc_slp, Temp, Sali, Sali locGPPp = sum(vertGPPp(1:nn) * thick(1:nn)) locNNAp = sum(vertNNAp(1:nn) * thick(1:nn)) locChldegp = sum(vertChldegp(1:nn) * thick(1:nn)) -#endif +endif end if end subroutine REcoM_Forcing diff --git a/src/int_recom/recom_init.F90 b/src/int_recom/recom_init.F90 index 3348b512b..95c24dd59 100644 --- a/src/int_recom/recom_init.F90 +++ b/src/int_recom/recom_init.F90 @@ -45,6 +45,9 @@ subroutine recom_init(tracers, partit, mesh) type(t_partit), intent(inout), target :: partit type(t_mesh), intent(in) , target :: mesh + ! After reading tracer namelist - validate actual IDs + integer, dimension(tracers%num_tracers) :: tracer_id_array + #include "../associate_part_def.h" #include "../associate_mesh_def.h" #include "../associate_part_ass.h" @@ -338,155 +341,224 @@ subroutine recom_init(tracers, partit, mesh) lb_flux(:,:) = 0.d0 end if + ! After reading parecomsetup namelist + call initialize_tracer_indices + + ! Validation check here + call validate_recom_tracers(num_tracers, mype) + + ! ... populate tracer_id_array from namelist ... + tracer_id_array = tracers%data(1:tracers%num_tracers)%ID + call validate_tracer_id_sequence(tracer_id_array, num_tracers, mype) + + !=============================================================================== + ! Model Configuration Summary + !=============================================================================== + ! Configuration 1: Base model (enable_3zoo2det=F, enable_coccos=F) + ! - 2 Phytoplankton: General Phy, Diatoms + ! - 1 Zooplankton: Heterotrophs + ! - 1 Detritus pool + ! + ! Configuration 2: 3Zoo2Det (enable_3zoo2det=T, enable_coccos=F) + ! - 2 Phytoplankton: General Phy, Diatoms + ! - 3 Zooplankton: Het, Zoo2, Zoo3 + ! - 2 Detritus pools + ! + ! Configuration 3: Coccos (enable_3zoo2det=F, enable_coccos=T) + ! - 4 Phytoplankton: General Phy, Diatoms, Coccos, Phaeo + ! - 1 Zooplankton: Heterotrophs + ! - 1 Detritus pool + ! + ! Configuration 4: Full model (enable_3zoo2det=T, enable_coccos=T) + ! - 4 Phytoplankton: General Phy, Diatoms, Coccos, Phaeo + ! - 3 Zooplankton: Het, Zoo2, Zoo3 + ! - 2 Detritus pools + !=============================================================================== + DO i=num_tracers-bgc_num+1, num_tracers id=tracers%data(i)%ID SELECT CASE (id) -! ******************* -! CASE 2phy 1zoo 1det -! ******************* -! Skip: DIN, DIC, Alk, DSi and O2 are read from files -! Fe [mol/L] => [umol/m3] Check the units again! + !--------------------------------------------------------------------------- + ! Base Model: 2 Phytoplankton + 1 Zooplankton + 1 Detritus + !--------------------------------------------------------------------------- + ! Skip: DIN, DIC, Alk, DSi and O2 are read from files + ! Fe [mol/L] => [umol/m3] Check the units again! - CASE (1004) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! PhyN + ! --- Small Phytoplankton + CASE (1004) ! PhyN - Phytoplankton Nitrogen + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max - CASE (1005) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! PhyC + CASE (1005) ! PhyC - Phytoplankton Carbon + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax - CASE (1006) - tracers%data(i)%values(:,:) = tiny_chl ! PhyChl + CASE (1006) ! PhyChl - Phytoplankton Chlorophyll + tracers%data(i)%values(:,:) = tiny_chl - CASE (1007) - tracers%data(i)%values(:,:) = tiny ! DetN + ! --- Detritus (Non-living organic matter) --- + CASE (1007) ! DetN - Detrital Nitrogen + tracers%data(i)%values(:,:) = tiny - CASE (1008) - tracers%data(i)%values(:,:) = tiny ! DetC + CASE (1008) ! DetC - Detrital Carbon + tracers%data(i)%values(:,:) = tiny - CASE (1009) - tracers%data(i)%values(:,:) = tiny ! HetN + ! --- Mesozooplankton (Heterotrophs) --- + CASE (1009)! HetN - Heterotroph Nitrogen + tracers%data(i)%values(:,:) = tiny - CASE (1010) - tracers%data(i)%values(:,:) = tiny * Redfield ! HetC + CASE (1010) ! HetC - Heterotroph Carbon (using Redfield ratio) + tracers%data(i)%values(:,:) = tiny * Redfield - CASE (1011) - tracers%data(i)%values(:,:) = tiny ! DON + ! --- Dissolved Organic Matter --- + CASE (1011) ! DON - Dissolved Organic Nitrogen + tracers%data(i)%values(:,:) = tiny - CASE (1012) - tracers%data(i)%values(:,:) = tiny ! DOC + CASE (1012) ! DOC - Dissolved Organic Carbon + tracers%data(i)%values(:,:) = tiny - CASE (1013) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! DiaN + ! --- Diatoms --- + CASE (1013) ! DiaN - Diatom Nitrogen + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max - CASE (1014) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! DiaC + CASE (1014) ! DiaC - Diatom Carbon + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax - CASE (1015) - tracers%data(i)%values(:,:) = tiny_chl ! DiaChl + CASE (1015) ! DiaChl - Diatom Chlorophyll + tracers%data(i)%values(:,:) = tiny_chl - CASE (1016) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max_d/NCmax_d/SiCmax ! DiaSi + CASE (1016) ! DiaSi - Diatom Silica + tracers%data(i)%values(:,:) = tiny_chl/chl2N_max_d/NCmax_d/SiCmax - CASE (1017) - tracers%data(i)%values(:,:) = tiny ! DetSi + CASE (1017) ! DetSi - Detrital Silica + tracers%data(i)%values(:,:) = tiny - CASE (1019) - tracers%data(i)%values(:,:) = tracers%data(i)%values(:,:)* 1.e9 ! Fe [mol/L] => [umol/m3] Check the units again! + ! --- Iron (micronutrient) --- + CASE (1019) ! Fe - Iron (unit conversion: mol/L => umol/m3) + tracers%data(i)%values(:,:) = tracers%data(i)%values(:,:)* 1.e9 - CASE (1020) - tracers%data(i)%values(:,:) = tiny * Redfield ! PhyCalc + ! --- Calcium Carbonate (Calcite) --- + CASE (1020) ! PhyCalc - Phytoplankton Calcite + tracers%data(i)%values(:,:) = tiny * Redfield - CASE (1021) - tracers%data(i)%values(:,:) = tiny ! DetCalc + CASE (1021) ! DetCalc - Detrital Calcite + tracers%data(i)%values(:,:) = tiny + + !--------------------------------------------------------------------------- + ! Extended Model: Additional Zooplankton and Detritus (enable_3zoo2det) + !--------------------------------------------------------------------------- -! ******************* -! CASE 2phy 3zoo 2det -! ******************* -#if defined (__3Zoo2Det) CASE (1023) - tracers%data(i)%values(:,:) = tiny ! Zoo2N + IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! Zoo2N - Macrozooplankton Nitrogen + tracers%data(i)%values(:,:) = tiny + ELSE IF (enable_coccos .AND. .NOT. enable_3zoo2det) THEN + ! CoccoN - Coccolithophore Nitrogen + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max + END IF + CASE (1024) - tracers%data(i)%values(:,:) = tiny * Redfield ! Zoo2C + IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! Zoo2C - Macrozooplankton Carbon + tracers%data(i)%values(:,:) = tiny * Redfield + ELSE IF (enable_coccos .AND. .NOT. enable_3zoo2det) THEN + ! CoccoC - Coccolithophore Carbon + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max / NCmax + END IF + CASE (1025) - tracers%data(i)%values(:,:) = tiny ! DetZ2N + IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! DetZ2N - Macrozooplankton Detrital Nitrogen + tracers%data(i)%values(:,:) = tiny + ELSE IF (enable_coccos .AND. .NOT. enable_3zoo2det) THEN + ! CoccoChl - Coccolithophore Chlorophyll + tracers%data(i)%values(:,:) = tiny_chl + END IF + CASE (1026) - tracers%data(i)%values(:,:) = tiny ! DetZ2C + IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! DetZ2C - Macrozooplankton Detrital Carbon + tracers%data(i)%values(:,:) = tiny + ELSE IF (enable_coccos .AND. .NOT. enable_3zoo2det) THEN + ! PhaeoN - Phaeocystis Nitrogen + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max + END IF + CASE (1027) - tracers%data(i)%values(:,:) = tiny ! DetZ2Si + IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! DetZ2Si - Zooplankton 2 Detrital Silica + tracers%data(i)%values(:,:) = tiny + ELSE IF (enable_coccos .AND. .NOT. enable_3zoo2det) THEN + ! PhaeoC - Phaeocystis Carbon + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max / NCmax + END IF + CASE (1028) - tracers%data(i)%values(:,:) = tiny ! DetZ2Calc -#endif + IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! DetZ2Calc - Macrozooplankton Detrital Calcite + tracers%data(i)%values(:,:) = tiny + ELSE IF (enable_coccos .AND. .NOT. enable_3zoo2det) THEN + ! PhaeoChl - Phaeocystis Chlorophyll + tracers%data(i)%values(:,:) = tiny_chl + END IF + + !--------------------------------------------------------------------------- + ! Extended Model: Coccolithophores with 3Zoo2Det + !--------------------------------------------------------------------------- -! ******************* -! CASE 4phy 3zoo 2det -! ******************* -#if defined (__coccos) & defined (__3Zoo2Det) CASE (1029) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! CoccoN + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! CoccoN - Coccolithophore Nitrogen + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max + ELSE IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! Zoo3N - Microzooplankton Nitrogen + tracers%data(i)%values(:,:) = tiny + END IF CASE (1030) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! CoccoC + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! CoccoC - Coccolithophore Carbon + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max / NCmax + ELSE IF (enable_3zoo2det .AND. .NOT. enable_coccos) THEN + ! Zoo3C - Microzooplankton Carbon + tracers%data(i)%values(:,:) = tiny * Redfield + END IF CASE (1031) - tracers%data(i)%values(:,:) = tiny_chl ! CoccoChl + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! CoccoChl - Coccolithophore Chlorophyll + tracers%data(i)%values(:,:) = tiny_chl + END IF CASE (1032) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! PhaeoN + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! PhaeoN - Phaeocystis Nitrogen + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max + END IF CASE (1033) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! PhaeoC + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! PhaeoC - Phaeocystis Carbon + tracers%data(i)%values(:,:) = tiny_chl / chl2N_max / NCmax + END IF CASE (1034) - tracers%data(i)%values(:,:) = tiny_chl ! PhaeoChl - - - -! ******************* -! CASE 4phy 1zoo 1det -! ******************* -#elif defined (__coccos) & !defined (__3Zoo2Det) - CASE (1023) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! CoccoN - - CASE (1024) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! CoccoC + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! PhaeoChl - Phaeocystis Chlorophyll + tracers%data(i)%values(:,:) = tiny_chl + END IF - CASE (1025) - tracers%data(i)%values(:,:) = tiny_chl ! CoccoChl - - CASE (1026) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max ! PhaeoN - - CASE (1027) - tracers%data(i)%values(:,:) = tiny_chl/chl2N_max/NCmax ! PhaeoC - - CASE (1028) - tracers%data(i)%values(:,:) = tiny_chl ! PhaeoChl - -#endif - -! ******************* -! CASE 4phy 3zoo 2det -! ******************* -#if defined (__coccos) & defined (__3Zoo2Det) CASE (1035) - tracers%data(i)%values(:,:) = tiny ! Zoo3N + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! Zoo3N - Zooplankton 3 Nitrogen + tracers%data(i)%values(:,:) = tiny + END IF CASE (1036) - tracers%data(i)%values(:,:) = tiny * Redfield ! Zoo3C - -#elif !defined (__coccos) & defined (__3Zoo2Det) -! ******************* -! CASE 2phy 3zoo 2det -! ******************* - CASE (1029) - tracers%data(i)%values(:,:) = tiny ! Zoo3N - - CASE (1030) - tracers%data(i)%values(:,:) = tiny * Redfield ! Zoo3C - -#endif + IF (enable_coccos .AND. enable_3zoo2det) THEN + ! Zoo3C - Zooplankton 3 Carbon + tracers%data(i)%values(:,:) = tiny * Redfield + END IF END SELECT END DO @@ -567,5 +639,16 @@ subroutine recom_init(tracers, partit, mesh) call MPI_AllREDUCE(locO2min , glo , 1, MPI_DOUBLE_PRECISION, MPI_MIN, MPI_COMM_FESOM, MPIerr) if (mype==0) write(*,*) ' `-> gobal min init. O2. =', glo + if (enable_3zoo2det) then + is_3zoo2det=1.0_WP + else + is_3zoo2det=0.0_WP + endif + + if (enable_coccos) then + is_coccos=1.0_WP + else + is_coccos=0.0_WP + endif end subroutine recom_init diff --git a/src/int_recom/recom_main.F90 b/src/int_recom/recom_main.F90 index 452cb1b6d..2ce0aeb28 100755 --- a/src/int_recom/recom_main.F90 +++ b/src/int_recom/recom_main.F90 @@ -270,11 +270,11 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) allocate(vertrespmeso(nl-1)) vertrespmeso = 0.d0 -#if defined (__3Zoo2Det) +if (enable_3zoo2det) then allocate(vertrespmacro(nl-1), vertrespmicro(nl-1)) vertrespmacro = 0.d0 vertrespmicro = 0.d0 -#endif +endif allocate(vertcalcdiss(nl-1), vertcalcif(nl-1)) vertcalcdiss = 0.d0 vertcalcif = 0.d0 @@ -314,7 +314,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) allocate(VTSi_assimDia(nl-1)) VTSi_assimDia = 0.d0 -#if defined (__coccos) +if (enable_coccos) then allocate(vertaggc(nl-1), vertdocexc(nl-1), vertrespc(nl-1)) vertaggc = 0.d0 vertdocexc = 0.d0 @@ -346,7 +346,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) VTCphot_phaeo = 0.d0 -#endif +endif !! * Allocate 2D diagnostics * allocate(vertNPPn(nl-1), vertGPPn(nl-1), vertNNAn(nl-1), vertChldegn(nl-1)) @@ -361,7 +361,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) vertNNAd = 0.d0 vertChldegd = 0.d0 -#if defined (__coccos) +if (enable_coccos) then allocate(vertNPPc(nl-1), vertGPPc(nl-1), vertNNAc(nl-1), vertChldegc(nl-1)) vertNPPc = 0.d0 vertGPPc = 0.d0 @@ -373,7 +373,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) vertGPPp = 0.d0 vertNNAp = 0.d0 vertChldegp = 0.d0 -#endif +endif end if if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> REcoM_Forcing'//achar(27)//'[0m' @@ -421,7 +421,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) Chldegn(n) = locChldegn Chldegd(n) = locChldegd -#if defined (__coccos) +if (enable_coccos) then NPPc(n) = locNPPc GPPc(n) = locGPPc NNAc(n) = locNNAc @@ -430,14 +430,14 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) GPPp(n) = locGPPp NNAp(n) = locNNAp Chldegp(n) = locChldegp -#endif +endif !! * Update 3D diagnostics * respmeso (1:nzmax,n) = vertrespmeso (1:nzmax) -#if defined (__3Zoo2Det) +if (enable_3zoo2det) then respmacro (1:nzmax,n) = vertrespmacro (1:nzmax) respmicro (1:nzmax,n) = vertrespmicro (1:nzmax) -#endif +endif calcdiss (1:nzmax,n) = vertcalcdiss (1:nzmax) calcif (1:nzmax,n) = vertcalcif (1:nzmax) @@ -465,7 +465,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) TSi_assimDia (1:nzmax,n) = VTSi_assimDia (1:nzmax) -#if defined (__coccos) +if (enable_coccos) then aggc (1:nzmax,n) = vertaggc (1:nzmax) docexc (1:nzmax,n) = vertdocexc (1:nzmax) respc (1:nzmax,n) = vertrespc (1:nzmax) @@ -488,23 +488,23 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) TCphotLigLim_phaeo (1:nzmax,n) = VTCphotLigLim_phaeo (1:nzmax) TCphot_phaeo (1:nzmax,n) = VTCphot_phaeo (1:nzmax) -#endif +endif if (recom_debug .and. mype==0) print *, achar(27)//'[36m'//' --> ciso after REcoM_Forcing'//achar(27)//'[0m' !! * Deallocating 2D diagnostics * deallocate(vertNPPn, vertGPPn, vertNNAn, vertChldegn) deallocate(vertNPPd, vertGPPd, vertNNAd, vertChldegd) -#if defined (__coccos) +if (enable_coccos) then deallocate(vertNPPc,vertGPPc,vertNNAc,vertChldegc) deallocate(vertNPPp,vertGPPp,vertNNAp,vertChldegp) -#endif +endif !! * Deallocating 3D Diagnostics * deallocate(vertrespmeso) -#if defined (__3Zoo2Det) +if (enable_3zoo2det) then deallocate(vertrespmacro, vertrespmicro) -#endif +endif deallocate(vertcalcdiss, vertcalcif) deallocate(vertaggn, vertdocexn, vertrespn) deallocate(vertaggd, vertdocexd, vertrespd) @@ -514,14 +514,14 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) deallocate(VTSi_assimDia) -#if defined (__coccos) +if (enable_coccos) then deallocate(vertaggc, vertdocexc, vertrespc) deallocate(vertaggp, vertdocexp, vertrespp) deallocate(VTTemp_cocco, VTCoccoCO2, VTqlimitFac_cocco, VTCphotLigLim_cocco, VTCphot_cocco) deallocate(VTTemp_phaeo, VTPhaeoCO2, VTqlimitFac_phaeo, VTCphotLigLim_phaeo, VTCphot_phaeo) -#endif +endif end if @@ -593,7 +593,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) call exchange_nod(NNAd, partit) call exchange_nod(Chldegn, partit) call exchange_nod(Chldegd, partit) -#if defined (__coccos) +if (enable_coccos) then call exchange_nod(NPPc, partit) call exchange_nod(GPPc, partit) call exchange_nod(NNAc, partit) @@ -602,7 +602,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) call exchange_nod(GPPp, partit) call exchange_nod(NNAp, partit) call exchange_nod(Chldegp, partit) -#endif +endif endif do n=1, benthos_num diff --git a/src/int_recom/recom_modules.F90 b/src/int_recom/recom_modules.F90 index 73c6e7b6a..536e02735 100644 --- a/src/int_recom/recom_modules.F90 +++ b/src/int_recom/recom_modules.F90 @@ -30,41 +30,25 @@ module recom_config isi = 18, ife = 19, iphycal = 20, idetcal = 21, & ioxy = 22 -#if defined (__3Zoo2Det) -! ******************* -! CASE 2phy 2zoo 2det -! ******************* Integer :: izoo2n = 23, izoo2c = 24, idetz2n = 25, & idetz2c = 26, idetz2si = 27, idetz2calc = 28 -#endif -#if defined (__coccos) & defined (__3Zoo2Det) -! ******************* -! CASE 4phy 2zoo 2det -! ******************* - Integer :: icocn = 29, icocc = 30, icchl = 31 - Integer :: iphan = 32, iphac = 33, iphachl = 34 + ! Microzooplankton (third zooplankton group) + integer :: imiczoon = 0 ! Microzooplankton Nitrogen (set below) + integer :: imiczooc = 0 ! Microzooplankton Carbon (set below) -#elif defined (__coccos) & !defined (__3Zoo2Det) -! ******************* -! CASE 4phy 1zoo 1det -! ******************* - Integer :: icocn = 23, icocc = 24, icchl = 25 - Integer :: iphan = 26, iphac = 27, iphachl = 28 -#endif + ! --------------------------------------------------------------------------- + ! PHYTOPLANKTON GROUPS (coccos configuration) + ! --------------------------------------------------------------------------- + ! Coccolithophores and Phaeocystis when enable_coccos = .true. -#if defined (__coccos) & defined (__3Zoo2Det) -! ******************* -! CASE 4phy 3zoo 2det -! ******************* - Integer :: imiczoon = 35, imiczooc = 36 + integer :: icocn = 0 ! Coccolithophore Nitrogen (set below) + integer :: icocc = 0 ! Coccolithophore Carbon (set below) + integer :: icchl = 0 ! Coccolithophore Chlorophyll (set below) -#elif !defined (__coccos) & defined (__3Zoo2Det) -! ******************* -! CASE 2phy 3zoo 2det -! ******************* - Integer :: imiczoon = 29, imiczooc = 30 -#endif + integer :: iphan = 0 ! Phaeocystis Nitrogen (set below) + integer :: iphac = 0 ! Phaeocystis Carbon (set below) + integer :: iphachl = 0 ! Phaeocystis Chlorophyll (set below) !============================================================================= @@ -86,19 +70,10 @@ module recom_config integer, dimension(8) :: recom_phy_tracer_id = (/1004, 1005, 1020, 1305, 1320, 1405, 1420, 1006/) integer, dimension(6) :: recom_dia_tracer_id = (/1013, 1014, 1314, 1414, 1016, 1015/) -#if defined (__coccos) & defined (__3Zoo2Det) - integer, dimension(3) :: recom_cocco_tracer_id = (/1029, 1030, 1031/) - integer, dimension(3) :: recom_phaeo_tracer_id = (/1032, 1033, 1034/) - - -#elif defined (__coccos) & !defined (__3Zoo2Det) - integer, dimension(3) :: recom_cocco_tracer_id = (/1023, 1024, 1025/) - integer, dimension(3) :: recom_phaeo_tracer_id = (/1026, 1027, 1028/) -#endif - -#if defined (__3Zoo2Det) - integer, dimension(4) :: recom_det2_tracer_id = (/1025, 1026, 1027, 1028/) -#endif + ! Configuration-dependent tracer arrays (allocated during initialization) + integer, dimension(3) :: recom_cocco_tracer_id + integer, dimension(3) :: recom_phaeo_tracer_id + integer, dimension(4) :: recom_det2_tracer_id !============================================================================= @@ -110,6 +85,11 @@ module recom_config Real(kind=8) :: Pa2atm = 101325.d0 ! [Pa/atm] Real(kind=8) :: redO2C = 1.453 ! O2:C ratio Anderson and Sarmiento, 1994 +!! *** REcoM setup *** + Logical :: enable_3zoo2det = .false. ! Control extended zooplankton variables + Logical :: enable_coccos = .false. ! Control coccolithophore variables + namelist /parecomsetup/ enable_3zoo2det, enable_coccos + !! *** General configuration *** Logical :: use_REcoM = .true. @@ -527,6 +507,600 @@ module recom_config namelist /paballasting/ rho_POC, rho_PON, rho_CaCO3, rho_opal, rho_ref_part, & rho_ref_water, visc_ref_water, w_ref1, w_ref2, depth_scaling1, & depth_scaling2, max_sinking_velocity + +contains + + ! --------------------------------------------------------------------------- + ! SUBROUTINE: initialize_tracer_indices + ! --------------------------------------------------------------------------- + ! Purpose: Set up tracer indices based on model configuration + ! --------------------------------------------------------------------------- + subroutine initialize_tracer_indices() + implicit none + + if (enable_3zoo2det .and. enable_coccos) then + ! ======================================================================= + ! CASE: 4 phytoplankton + 3 zooplankton + 2 detritus + ! ======================================================================= + ! Phytoplankton: small phyto, diatoms, coccolithophores, phaeocystis + ! Zooplankton: mesozoo, macrozoo, microzoo + ! Detritus: det1, det2 + + icocn = 29 + icocc = 30 + icchl = 31 + iphan = 32 + iphac = 33 + iphachl = 34 + imiczoon = 35 + imiczooc = 36 + +! allocate(recom_cocco_tracer_id(3)) + recom_cocco_tracer_id = (/1029, 1030, 1031/) + +! allocate(recom_phaeo_tracer_id(3)) + recom_phaeo_tracer_id = (/1032, 1033, 1034/) + +! allocate(recom_det2_tracer_id(4)) + recom_det2_tracer_id = (/1025, 1026, 1027, 1028/) + + else if (enable_coccos .and. .not. enable_3zoo2det) then + ! ======================================================================= + ! CASE: 4 phytoplankton + 1 zooplankton + 1 detritus + ! ======================================================================= + ! Phytoplankton: small phyto, diatoms, coccolithophores, phaeocystis + ! Zooplankton: mesozoo only + ! Detritus: det1 only + + icocn = 23 + icocc = 24 + icchl = 25 + iphan = 26 + iphac = 27 + iphachl = 28 + +! allocate(recom_cocco_tracer_id(3)) + recom_cocco_tracer_id = (/1023, 1024, 1025/) + +! allocate(recom_phaeo_tracer_id(3)) + recom_phaeo_tracer_id = (/1026, 1027, 1028/) + + else if (enable_3zoo2det .and. .not. enable_coccos) then + ! ======================================================================= + ! CASE: 2 phytoplankton + 3 zooplankton + 2 detritus + ! ======================================================================= + ! Phytoplankton: small phyto, diatoms only + ! Zooplankton: mesozoo, macrozoo, microzoo + ! Detritus: det1, det2 + + imiczoon = 29 + imiczooc = 30 + +! allocate(recom_det2_tracer_id(4)) + recom_det2_tracer_id = (/1025, 1026, 1027, 1028/) + else + ! ======================================================================= + ! CASE: 2 phytoplankton + 1 zooplankton + 1 detritus (BASE CONFIGURATION) + ! ======================================================================= + ! Phytoplankton: small phyto, diatoms only + ! Zooplankton: mesozoo only + ! Detritus: det1 only + ! (All indices already set to default values) + endif + end subroutine initialize_tracer_indices + +! ============================================================================== +! SUBROUTINE: validate_recom_tracers +! ============================================================================== +! Purpose: Validate consistency between namelist tracer configuration and +! biogeochemical model setup (enable_3zoo2det, enable_coccos) +! ============================================================================== +subroutine validate_recom_tracers(num_tracers, mype) + implicit none + + ! Arguments + integer, intent(in) :: num_tracers ! Total number of tracers from namelist + integer, intent(in) :: mype ! MPI rank + + ! Local variables + integer :: expected_bgc_num + integer :: actual_bgc_num + integer :: expected_total_tracers + integer :: num_physical_tracers + logical :: config_error + character(len=200) :: error_msg + + ! For tracer ID validation + integer :: i, tracer_id + integer, dimension(:), allocatable :: expected_tracer_ids + logical, dimension(:), allocatable :: tracer_found + integer :: num_expected_tracers + logical :: id_error + + ! Physical tracers (temperature, salinity, etc.) - typically first 2 + num_physical_tracers = 2 + + ! Calculate actual BGC tracer count from namelist + actual_bgc_num = num_tracers - num_physical_tracers + + ! =========================================================================== + ! Determine expected BGC tracer count based on configuration + ! =========================================================================== + config_error = .false. + + if (enable_3zoo2det .and. enable_coccos) then + ! --------------------------------------------------------------------------- + ! Configuration 4: Full model (4 phyto + 3 zoo + 2 detritus) + ! --------------------------------------------------------------------------- + ! Base: 22 tracers (1001-1022) + ! Additional 3zoo2det: 4 tracers for det2 (1025-1028) + ! Additional coccos: 6 tracers for coccos (1029-1031) + ! Additional phaeocystis: 3 tracers (1032-1034) + ! Additional microzoo: 2 tracers (1035-1036) + ! Total: 22 + 4 + 6 + 3 + 2 = 36 (actually 22 + 14 = 36) + expected_bgc_num = 36 + + else if (enable_coccos .and. .not. enable_3zoo2det) then + ! --------------------------------------------------------------------------- + ! Configuration 3: Coccos only (4 phyto + 1 zoo + 1 detritus) + ! --------------------------------------------------------------------------- + ! Base: 22 tracers (1001-1022) + ! Additional coccos: 3 tracers (1023-1025) + ! Additional phaeocystis: 3 tracers (1026-1028) + ! Total: 22 + 6 = 28 + expected_bgc_num = 28 + + else if (enable_3zoo2det .and. .not. enable_coccos) then + ! --------------------------------------------------------------------------- + ! Configuration 2: 3Zoo2Det only (2 phyto + 3 zoo + 2 detritus) + ! --------------------------------------------------------------------------- + ! Base: 22 tracers (1001-1022) + ! Additional zoo2: 2 tracers (1023-1024) + ! Additional det2: 4 tracers (1025-1028) + ! Additional microzoo: 2 tracers (1029-1030) + ! Total: 22 + 8 = 30 + expected_bgc_num = 30 + + else + ! --------------------------------------------------------------------------- + ! Configuration 1: Base model (2 phyto + 1 zoo + 1 detritus) + ! --------------------------------------------------------------------------- + ! Base: 22 tracers (1001-1022) + expected_bgc_num = 22 + + end if + + expected_total_tracers = num_physical_tracers + expected_bgc_num + + ! =========================================================================== + ! Build expected tracer ID list for current configuration + ! =========================================================================== + + ! Determine total expected tracers + num_expected_tracers = expected_total_tracers + allocate(expected_tracer_ids(num_expected_tracers)) + allocate(tracer_found(num_expected_tracers)) + tracer_found = .false. + + ! Physical tracers (always present) + expected_tracer_ids(1) = 1 ! Temperature + expected_tracer_ids(2) = 2 ! Salinity + + ! Base BGC tracers (always present for all configurations) + do i = 1, 22 + expected_tracer_ids(num_physical_tracers + i) = 1000 + i + end do + + ! Configuration-specific tracers + if (enable_3zoo2det .and. enable_coccos) then + ! Full model: 1001-1022 (base) + 1023-1024 (zoo2) + 1025-1028 (det2) + 1029-1036 (coccos+phaeo+zoo3) + expected_tracer_ids(25) = 1023 ! Zoo2N + expected_tracer_ids(26) = 1024 ! Zoo2C + expected_tracer_ids(27) = 1025 ! DetZ2N + expected_tracer_ids(28) = 1026 ! DetZ2C + expected_tracer_ids(29) = 1027 ! DetZ2Si + expected_tracer_ids(30) = 1028 ! DetZ2Calc + expected_tracer_ids(31) = 1029 ! CoccoN + expected_tracer_ids(32) = 1030 ! CoccoC + expected_tracer_ids(33) = 1031 ! CoccoChl + expected_tracer_ids(34) = 1032 ! PhaeoN + expected_tracer_ids(35) = 1033 ! PhaeoC + expected_tracer_ids(36) = 1034 ! PhaeoChl + expected_tracer_ids(37) = 1035 ! Zoo3N + expected_tracer_ids(38) = 1036 ! Zoo3C + + else if (enable_coccos .and. .not. enable_3zoo2det) then + ! Coccos only: 1001-1022 (base) + 1023-1028 (coccos+phaeo) + expected_tracer_ids(25) = 1023 ! CoccoN + expected_tracer_ids(26) = 1024 ! CoccoC + expected_tracer_ids(27) = 1025 ! CoccoChl + expected_tracer_ids(28) = 1026 ! PhaeoN + expected_tracer_ids(29) = 1027 ! PhaeoC + expected_tracer_ids(30) = 1028 ! PhaeoChl + + else if (enable_3zoo2det .and. .not. enable_coccos) then + ! 3Zoo2Det only: 1001-1022 (base) + 1023-1030 (zoo2+det2+zoo3) + expected_tracer_ids(25) = 1023 ! Zoo2N + expected_tracer_ids(26) = 1024 ! Zoo2C + expected_tracer_ids(27) = 1025 ! DetZ2N + expected_tracer_ids(28) = 1026 ! DetZ2C + expected_tracer_ids(29) = 1027 ! DetZ2Si + expected_tracer_ids(30) = 1028 ! DetZ2Calc + expected_tracer_ids(31) = 1029 ! Zoo3N + expected_tracer_ids(32) = 1030 ! Zoo3C + end if + ! else: base configuration only needs tracers 1, 2, 1001-1022 + + ! =========================================================================== + ! Perform validation checks + ! =========================================================================== + + if (mype == 0) then + write(*,*) '' + write(*,*) '==========================================================================' + write(*,*) 'REcoM TRACER CONFIGURATION VALIDATION' + write(*,*) '==========================================================================' + write(*,*) 'Model configuration:' + write(*,*) ' enable_3zoo2det = ', enable_3zoo2det + write(*,*) ' enable_coccos = ', enable_coccos + write(*,*) '' + write(*,*) 'Tracer counts:' + write(*,*) ' Physical tracers (T, S, ...) = ', num_physical_tracers + write(*,*) ' Expected BGC tracers = ', expected_bgc_num + write(*,*) ' Expected TOTAL tracers = ', expected_total_tracers + write(*,*) ' Actual tracers from namelist = ', num_tracers + write(*,*) ' Actual BGC tracers from namelist = ', actual_bgc_num + write(*,*) '' + end if + + ! Check for inconsistencies + if (actual_bgc_num /= expected_bgc_num) then + config_error = .true. + if (mype == 0) then + write(*,*) '==========================================================================' + write(*,*) 'ERROR: TRACER COUNT MISMATCH!' + write(*,*) '==========================================================================' + write(*,*) 'The number of BGC tracers in the namelist does not match' + write(*,*) 'the expected count for the current configuration.' + write(*,*) '' + write(*,*) ' Expected BGC tracers: ', expected_bgc_num + write(*,*) ' Actual BGC tracers: ', actual_bgc_num + write(*,*) ' Difference: ', actual_bgc_num - expected_bgc_num + write(*,*) '' + write(*,*) 'Required tracer IDs for current configuration:' + write(*,*) ' Base tracers (always): 1001-1022 (22 tracers)' + + if (enable_3zoo2det .and. .not. enable_coccos) then + write(*,*) ' 3Zoo2Det extension: 1023-1030 (8 tracers)' + write(*,*) ' - Zoo2N, Zoo2C: 1023-1024' + write(*,*) ' - DetZ2 pool: 1025-1028' + write(*,*) ' - MicZooN, MicZooC: 1029-1030' + else if (enable_coccos .and. .not. enable_3zoo2det) then + write(*,*) ' Coccos extension: 1023-1028 (6 tracers)' + write(*,*) ' - CoccoN, C, Chl: 1023-1025' + write(*,*) ' - PhaeoN, C, Chl: 1026-1028' + else if (enable_3zoo2det .and. enable_coccos) then + write(*,*) ' - Zoo2N, Zoo2C: 1023-1024' + write(*,*) ' 3Zoo2Det extension: 1025-1028 (4 tracers for det2)' + write(*,*) ' Coccos extension: 1029-1034 (6 tracers)' + write(*,*) ' - CoccoN, C, Chl: 1029-1031' + write(*,*) ' - PhaeoN, C, Chl: 1032-1034' + write(*,*) ' MicroZoo extension: 1035-1036 (2 tracers)' + end if + + write(*,*) '' + write(*,*) 'ACTION REQUIRED:' + write(*,*) ' 1. Check your namelist.config tracer_list section' + write(*,*) ' 2. Ensure enable_3zoo2det and enable_coccos match your setup' + write(*,*) ' 3. Add/remove tracers to match the expected configuration' + write(*,*) '==========================================================================' + write(*,*) '' + end if + else + ! Validation passed + if (mype == 0) then + write(*,*) '==========================================================================' + write(*,*) 'VALIDATION PASSED: Tracer configuration is consistent!' + write(*,*) '==========================================================================' + write(*,*) '' + end if + end if + + ! =========================================================================== + ! Additional sanity check: verify bgc_num variable matches + ! =========================================================================== + if (bgc_num /= expected_bgc_num) then + if (mype == 0) then + write(*,*) '==========================================================================' + write(*,*) 'WARNING: bgc_num variable inconsistency!' + write(*,*) '==========================================================================' + write(*,*) 'The bgc_num parameter does not match the expected value.' + write(*,*) ' Current bgc_num value: ', bgc_num + write(*,*) ' Expected value: ', expected_bgc_num + write(*,*) '' + write(*,*) 'This may indicate that bgc_num was not updated after changing' + write(*,*) 'enable_3zoo2det or enable_coccos flags.' + write(*,*) '==========================================================================' + write(*,*) '' + end if + config_error = .true. + end if + + ! =========================================================================== + ! Validate tracer IDs: Check for correct IDs and detect clashes + ! =========================================================================== + id_error = .false. + + ! This check requires access to the actual tracer IDs from the namelist + ! We'll validate against the expected list + if (mype == 0) then + write(*,*) '==========================================================================' + write(*,*) 'VALIDATING TRACER IDs' + write(*,*) '==========================================================================' + write(*,*) 'Expected tracer ID sequence:' + write(*,*) '' + + ! Display expected IDs in a readable format + write(*,*) 'Physical tracers:' + write(*,*) ' ', expected_tracer_ids(1:num_physical_tracers) + write(*,*) '' + write(*,*) 'Base BGC tracers (1001-1022):' + write(*,*) ' ', expected_tracer_ids(3:24) + write(*,*) '' + + if (expected_bgc_num > 22) then + write(*,*) 'Extended configuration tracers:' + write(*,*) ' ', expected_tracer_ids(25:num_expected_tracers) + write(*,*) '' + end if + + write(*,*) 'CRITICAL: The tracer IDs in your namelist MUST match this sequence' + write(*,*) ' exactly, in the same order!' + write(*,*) '' + write(*,*) 'Common errors to avoid:' + write(*,*) ' - Using wrong tracer ID numbers (e.g., 1023 instead of 1025)' + write(*,*) ' - Tracer ID clashes between configurations' + write(*,*) ' - Incorrect order of tracer IDs in namelist' + write(*,*) ' - Missing or duplicate tracer IDs' + write(*,*) '' + + ! Configuration-specific warnings + if (enable_3zoo2det .and. enable_coccos) then + write(*,*) 'IMPORTANT for FULL MODEL (3zoo2det + coccos):' + ! write(*,*) ' - Tracers 1023-1024 are NOT used (reserved for other configs)' + write(*,*) ' - Zoo2 uses: 1023-1024' + write(*,*) ' - Det2 pool uses: 1025-1028' + write(*,*) ' - Coccos uses: 1029-1031' + write(*,*) ' - Phaeocystis uses: 1032-1034' + write(*,*) ' - Microzooplankton: 1035-1036' + write(*,*) '' + else if (enable_coccos .and. .not. enable_3zoo2det) then + write(*,*) 'IMPORTANT for COCCOS-ONLY configuration:' + write(*,*) ' - Coccos uses: 1023-1025 (NOT 1029-1031)' + write(*,*) ' - Phaeocystis uses: 1026-1028 (NOT 1032-1034)' + write(*,*) ' - Tracers 1029+ are NOT used in this configuration' + write(*,*) '' + else if (enable_3zoo2det .and. .not. enable_coccos) then + write(*,*) 'IMPORTANT for 3ZOO2DET-ONLY configuration:' + write(*,*) ' - Zoo2 uses: 1023-1024' + write(*,*) ' - Det2 pool uses: 1025-1028' + write(*,*) ' - Microzoo uses: 1029-1030 (NOT 1035-1036)' + write(*,*) ' - Tracers 1031+ are NOT used in this configuration' + write(*,*) '' + else + write(*,*) 'IMPORTANT for BASE configuration:' + write(*,*) ' - Only tracers 1-2, 1001-1022 should be present' + write(*,*) ' - Tracers 1023+ are NOT used in base configuration' + write(*,*) '' + end if + + write(*,*) '==========================================================================' + write(*,*) '' + end if + + ! =========================================================================== + ! Check for tracer ID clashes based on configuration + ! =========================================================================== + if (mype == 0) then + write(*,*) '==========================================================================' + write(*,*) 'CHECKING FOR TRACER ID CONFLICTS' + write(*,*) '==========================================================================' + + ! Warn about potential clashes between configurations + if (enable_3zoo2det .and. enable_coccos) then + write(*,*) 'Full model configuration active.' + ! write(*,*) 'Ensure you are NOT using tracer IDs 1023-1024 in your namelist!' + ! write(*,*) 'These are reserved for configurations WITHOUT full model.' + else if (enable_coccos) then + write(*,*) 'Coccos-only configuration active.' + write(*,*) 'Coccos MUST use IDs 1023-1025 (NOT 1029-1031).' + write(*,*) 'Phaeocystis MUST use IDs 1026-1028 (NOT 1032-1034).' + else if (enable_3zoo2det) then + write(*,*) '3Zoo2Det-only configuration active.' + write(*,*) 'Microzoo MUST use IDs 1029-1030 (NOT 1035-1036).' + end if + + write(*,*) '' + ! write(*,*) 'No automated clash detection available without tracer array access.' + write(*,*) 'Please manually verify your namelist tracer_list against the' + write(*,*) 'expected sequence shown above.' + write(*,*) '==========================================================================' + write(*,*) '' + end if + + ! =========================================================================== + ! Stop execution if configuration error detected + ! =========================================================================== + if (config_error) then + if (mype == 0) then + write(*,*) '' + write(*,*) '******************************************************************' + write(*,*) '*** FATAL ERROR: MODEL CONFIGURATION INCONSISTENCY DETECTED ***' + write(*,*) '*** MODEL EXECUTION STOPPED ***' + write(*,*) '******************************************************************' + write(*,*) '' + end if + deallocate(expected_tracer_ids, tracer_found) + call par_ex(0) ! Stop execution (use appropriate stop routine for your model) + stop + end if + + ! Clean up + deallocate(expected_tracer_ids, tracer_found) + +end subroutine validate_recom_tracers + +! ============================================================================== +! SUBROUTINE: validate_tracer_id_sequence +! ============================================================================== +! Purpose: Validate that actual tracer IDs from namelist match expected sequence +! Call this after reading the tracer namelist +! ============================================================================== +subroutine validate_tracer_id_sequence(tracer_ids, num_tracers, mype) + implicit none + + ! Arguments + integer, dimension(:), intent(in) :: tracer_ids ! Actual IDs from namelist + integer, intent(in) :: num_tracers ! Number of tracers + integer, intent(in) :: mype ! MPI rank + + ! Local variables + integer :: i, j + integer, dimension(:), allocatable :: expected_ids + integer :: num_expected + logical :: error_found + logical :: duplicate_found + integer :: num_physical_tracers + + error_found = .false. + duplicate_found = .false. + num_physical_tracers = 2 + + ! Allocate expected IDs array + allocate(expected_ids(num_tracers)) + + ! Build expected ID sequence + expected_ids(1) = 1 + expected_ids(2) = 2 + + do i = 1, 22 + expected_ids(num_physical_tracers + i) = 1000 + i + end do + + if (enable_3zoo2det .and. enable_coccos) then + ! Full model configuration + expected_ids(25:30) = (/1023, 1024, 1025, 1026, 1027, 1028/) + expected_ids(31:36) = (/1029, 1030, 1031, 1032, 1033, 1034/) + expected_ids(37:38) = (/1035, 1036/) + + else if (enable_coccos .and. .not. enable_3zoo2det) then + expected_ids(25:30) = (/1023, 1024, 1025, 1026, 1027, 1028/) + + else if (enable_3zoo2det .and. .not. enable_coccos) then + expected_ids(25:32) = (/1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030/) + end if + + ! =========================================================================== + ! Check 1: Compare actual vs expected tracer IDs + ! =========================================================================== + if (mype == 0) then + write(*,*) '' + write(*,*) '==========================================================================' + write(*,*) 'VALIDATING TRACER ID SEQUENCE FROM NAMELIST' + write(*,*) '==========================================================================' + end if + + do i = 1, num_tracers + if (tracer_ids(i) /= expected_ids(i)) then + error_found = .true. + if (mype == 0) then + write(*,*) 'ERROR at position ', i, ':' + write(*,*) ' Expected tracer ID: ', expected_ids(i) + write(*,*) ' Found tracer ID: ', tracer_ids(i) + write(*,*) '' + end if + end if + end do + + ! =========================================================================== + ! Check 2: Detect duplicate tracer IDs + ! =========================================================================== + do i = 1, num_tracers - 1 + do j = i + 1, num_tracers + if (tracer_ids(i) == tracer_ids(j)) then + duplicate_found = .true. + if (mype == 0) then + write(*,*) 'ERROR: Duplicate tracer ID detected!' + write(*,*) ' Tracer ID ', tracer_ids(i), ' appears at positions ', i, ' and ', j + write(*,*) '' + end if + end if + end do + end do + + ! =========================================================================== + ! Check 3: Detect forbidden tracer IDs for current configuration + ! =========================================================================== + !if (enable_3zoo2det .and. enable_coccos) then + ! Check for forbidden IDs 1023-1024 in full model + !do i = 1, num_tracers + !if (tracer_ids(i) == 1023 .or. tracer_ids(i) == 1024) then + !error_found = .true. + !if (mype == 0) then + !write(*,*) 'ERROR: Forbidden tracer ID in full model configuration!' + !write(*,*) ' Tracer ID ', tracer_ids(i), ' at position ', i + !write(*,*) ' IDs 1023-1024 are NOT used when both flags are enabled' + !write(*,*) '' + !end if + !end if + !end do + !end if + + ! =========================================================================== + ! Report results + ! =========================================================================== + if (error_found .or. duplicate_found) then + if (mype == 0) then + write(*,*) '==========================================================================' + write(*,*) 'TRACER ID VALIDATION FAILED!' + write(*,*) '==========================================================================' + write(*,*) '' + write(*,*) 'Expected tracer ID sequence for current configuration:' + write(*,*) expected_ids + write(*,*) '' + write(*,*) 'Actual tracer ID sequence from namelist:' + write(*,*) tracer_ids + write(*,*) '' + write(*,*) 'ACTION REQUIRED:' + write(*,*) ' Correct the tracer IDs in your namelist.config file' + write(*,*) ' Ensure the sequence matches exactly as expected' + write(*,*) '==========================================================================' + write(*,*) '' + write(*,*) '******************************************************************' + write(*,*) '*** FATAL ERROR: INVALID TRACER ID SEQUENCE ***' + write(*,*) '*** MODEL EXECUTION STOPPED ***' + write(*,*) '******************************************************************' + write(*,*) '' + end if + deallocate(expected_ids) + call par_ex(0) + stop + else + if (mype == 0) then + write(*,*) '==========================================================================' + write(*,*) 'TRACER ID VALIDATION PASSED!' + write(*,*) 'All tracer IDs match expected sequence - no clashes detected.' + write(*,*) '==========================================================================' + write(*,*) '' + end if + end if + + deallocate(expected_ids) + +end subroutine validate_tracer_id_sequence + + + end module recom_config ! !=============================================================================== @@ -752,6 +1326,9 @@ Module REcoM_declarations real(kind=8) :: is_riverinput real(kind=8) :: is_erosioninput +real(kind=8) :: is_3zoo2det +real(kind=8) :: is_coccos + end module REcoM_declarations !=============================================================================== diff --git a/src/int_recom/recom_sinking.F90 b/src/int_recom/recom_sinking.F90 index 2b0c721f3..4227675ae 100644 --- a/src/int_recom/recom_sinking.F90 +++ b/src/int_recom/recom_sinking.F90 @@ -109,14 +109,16 @@ subroutine ver_sinking_recom_benthos(tr_num, tracers, partit, mesh) ! Constant vertical sinking for the second detritus class ! ******************************************************* -#if defined(__3Zoo2Det) + if (enable_3zoo2det) then + if(tracers%data(tr_num)%ID==1025 .or. & !idetz2n tracers%data(tr_num)%ID==1026 .or. & !idetz2c tracers%data(tr_num)%ID==1027 .or. & !idetz2si tracers%data(tr_num)%ID==1028 ) then !idetz2calc Vben = VDet_zoo2 endif -#endif + + endif Vben= Vben/SecondsPerDay ! conversion [m/d] --> [m/s] (vertical velocity, note that it is positive here) @@ -500,58 +502,62 @@ subroutine ver_sinking_recom(tr_num, tracers, partit, mesh) Vsink=0.0_WP - if (tracers%data(tr_num)%ID ==1007 .or. & !idetn - tracers%data(tr_num)%ID ==1008 .or. & !idetc - tracers%data(tr_num)%ID ==1017 .or. & !idetsi - tracers%data(tr_num)%ID ==1021 ) then !idetcal - - Vsink = VDet - - elseif(tracers%data(tr_num)%ID ==1004 .or. & !iphyn - tracers%data(tr_num)%ID ==1005 .or. & !iphyc - tracers%data(tr_num)%ID==1006 ) then !ipchl - - Vsink = VPhy - - elseif(tracers%data(tr_num)%ID==1013 .or. & !idian - tracers%data(tr_num)%ID==1014 .or. & !idiac - tracers%data(tr_num)%ID==1016 .or. & !idiasi - tracers%data(tr_num)%ID==1015 ) then !idchl - - Vsink = VDia - -#if defined (__coccos) - elseif(tracers%data(tr_num)%ID == 1029 .or. & !icocn - tracers%data(tr_num)%ID == 1030 .or. & !icocc - tracers%data(tr_num)%ID == 1031 ) then !icchl +!< Assign sinking velocities based on tracer ID +!< Groups tracers by functional type and assigns corresponding velocity + +! Detritus tracers (nitrogen, carbon, silicate, calcite) +if (tracers%data(tr_num)%ID == 1007 .or. & ! idetn + tracers%data(tr_num)%ID == 1008 .or. & ! idetc + tracers%data(tr_num)%ID == 1017 .or. & ! idetsi + tracers%data(tr_num)%ID == 1021) then ! idetcal + Vsink = VDet + +! Phytoplankton tracers (nitrogen, carbon, chlorophyll) +elseif (tracers%data(tr_num)%ID == 1004 .or. & ! iphyn + tracers%data(tr_num)%ID == 1005 .or. & ! iphyc + tracers%data(tr_num)%ID == 1006) then ! ipchl + Vsink = VPhy + +! Diatom tracers (nitrogen, carbon, silicate, chlorophyll) +elseif (tracers%data(tr_num)%ID == 1013 .or. & ! idian + tracers%data(tr_num)%ID == 1014 .or. & ! idiac + tracers%data(tr_num)%ID == 1016 .or. & ! idiasi + tracers%data(tr_num)%ID == 1015) then ! idchl + Vsink = VDia + +! Coccolithophore tracers (nitrogen, carbon, chlorophyll) +elseif (enable_coccos .and. & + (tracers%data(tr_num)%ID == 1029 .or. & ! icocn + tracers%data(tr_num)%ID == 1030 .or. & ! icocc + tracers%data(tr_num)%ID == 1031)) then ! icchl + Vsink = VCocco + +! Phaeocystis tracers (nitrogen, carbon, chlorophyll) +elseif (enable_coccos .and. & + (tracers%data(tr_num)%ID == 1032 .or. & ! iphan + tracers%data(tr_num)%ID == 1033 .or. & ! iphac + tracers%data(tr_num)%ID == 1034)) then ! iphachl + Vsink = VPhaeo + + +! Phytoplankton calcite tracer (special case) +elseif (tracers%data(tr_num)%ID == 1020) then ! iphycal + if (enable_coccos) then + Vsink = VCocco + else + Vsink = VPhy + end if - Vsink = VCocco +! Zooplankton-2 detritus tracers (nitrogen, carbon, silicate, calcite) +elseif (enable_3zoo2det .and. & + (tracers%data(tr_num)%ID == 1025 .or. & ! idetz2n + tracers%data(tr_num)%ID == 1026 .or. & ! idetz2c + tracers%data(tr_num)%ID == 1027 .or. & ! idetz2si + tracers%data(tr_num)%ID == 1028)) then ! idetz2calc + Vsink = VDet_zoo2 - elseif(tracers%data(tr_num)%ID == 1032 .or. & !iphan - tracers%data(tr_num)%ID == 1033 .or. & !iphac - tracers%data(tr_num)%ID == 1034 ) then !iphachl +end if - Vsink = VPhaeo - -#endif - - elseif(tracers%data(tr_num)%ID == 1020) then !iphycal - -#if defined (__coccos) - Vsink = VCocco -#else - Vsink = VPhy -#endif - -#if defined (__3Zoo2Det) - elseif(tracers%data(tr_num)%ID==1025 .or. & !idetz2n - tracers%data(tr_num)%ID==1026 .or. & !idetz2c - tracers%data(tr_num)%ID==1027 .or. & !idetz2si - tracers%data(tr_num)%ID==1028 ) then !idetz2calc - - Vsink = VDet_zoo2 -#endif - end if !! ---- No sinking if Vsink < 0.1 m/day if (Vsink .gt. 0.1) then @@ -588,10 +594,9 @@ subroutine ver_sinking_recom(tr_num, tracers, partit, mesh) endif end if -#if defined (__3Zoo2Det) - !! ---- We assume *constant* sinking for second detritus - if(tracers%data(tr_num)%ID ==1025 .or. & !idetz2n + if(enable_3zoo2det .and. & + tracers%data(tr_num)%ID ==1025 .or. & !idetz2n tracers%data(tr_num)%ID ==1026 .or. & !idetz2c tracers%data(tr_num)%ID ==1027 .or. & !idetz2si tracers%data(tr_num)%ID ==1028 ) then !idetz2calc @@ -610,12 +615,10 @@ subroutine ver_sinking_recom(tr_num, tracers, partit, mesh) end if endif -#endif if (tracers%data(tr_num)%ID == 1021) Sinkvel1_tr(nz,n,tr_num) = Wvel_flux(nz) !-1.0d0/SecondsPerDay !idetcal -#if defined (__3Zoo2Det) - if (tracers%data(tr_num)%ID == 1028) Sinkvel2_tr(nz,n,tr_num) = Wvel_flux(nz) !idetz2calc -#endif + if (enable_3zoo2det .and. & + tracers%data(tr_num)%ID == 1028) Sinkvel2_tr(nz,n,tr_num) = Wvel_flux(nz) !idetz2calc end do @@ -768,21 +771,19 @@ subroutine ballast(tr_num, tracers, partit, mesh) scaling_density1_3D(k,row)=1.0 scaling_density2_3D(k,row)=1.0 - if (use_density_scaling) then - if (tracers%data(tr_num)%ID ==1008)then !idetc - if (tracers%data(tr_num)%values(k,row)>0.001) then ! only apply ballasting above a certain biomass (OG Todo: remove) - scaling_density1_3D(k,row) = (rho_particle1(k,row)-rho_seawater(1))/(rho_ref_part-rho_ref_water) - endif + if (use_density_scaling) then + if (tracers%data(tr_num)%ID ==1008)then !idetc + if (tracers%data(tr_num)%values(k,row)>0.001) then ! only apply ballasting above a certain biomass (OG Todo: remove) + scaling_density1_3D(k,row) = (rho_particle1(k,row)-rho_seawater(1))/(rho_ref_part-rho_ref_water) endif -#if defined (__3Zoo2Det) - - if (tracers%data(tr_num)%ID ==1026)then ! idetz2c - if (tracers%data(tr_num)%values(k,row)>0.001) then ! only apply ballasting above a certain biomass (OG Todo: remove) - scaling_density2_3D(k,row) = (rho_particle2(k,row)-rho_seawater(1))/(rho_ref_part-rho_ref_water) - endif - endif -#endif endif + if (enable_3zoo2det .and. & + tracers%data(tr_num)%ID ==1026)then ! idetz2c + if (tracers%data(tr_num)%values(k,row)>0.001) then ! only apply ballasting above a certain biomass (OG Todo: remove) + scaling_density2_3D(k,row) = (rho_particle2(k,row)-rho_seawater(1))/(rho_ref_part-rho_ref_water) + endif + endif + endif scaling_visc_3D(k,row)=1.0 @@ -802,9 +803,11 @@ subroutine ballast(tr_num, tracers, partit, mesh) ! in the unlikely (if possible at all...) case that rho_particle(k)-rho_seawater(1)<0, prevent the scaling factor from being negative if (any(scaling_density1_3D(:,:) <= tiny)) scaling_density1_3D(:,:) = 1.0_WP ! tiny = 2.23D-16 -#if defined (__3Zoo2Det) - if (any(scaling_density2_3D(:,:) <= tiny)) scaling_density2_3D(:,:) = 1.0_WP ! tiny = 2.23D-16 -#endif + + if (enable_3zoo2det) then + if (any(scaling_density2_3D(:,:) <= tiny)) scaling_density2_3D(:,:) = 1.0_WP ! tiny = 2.23D-16 + endif + end subroutine ballast !------------------------------------------------------------------------------- ! Subroutine calculate density of particle @@ -876,7 +879,7 @@ subroutine get_particle_density(tracers, partit, mesh) rho_particle1(nzmin:nzmax,row) = rho_CaCO3*a4(nzmin:nzmax,row) + rho_opal*a3(nzmin:nzmax,row) + rho_POC*a1(nzmin:nzmax,row) + rho_PON*a2(nzmin:nzmax,row) end do -#if defined (__3Zoo2Det) + if (enable_3zoo2det) then rho_particle2 = 0.0 b1 = 0.0 b2 = 0.0 @@ -901,7 +904,7 @@ subroutine get_particle_density(tracers, partit, mesh) a4(nzmin:nzmax,row) = b4(nzmin:nzmax,row)/aux(nzmin:nzmax,row) rho_particle2(nzmin:nzmax,row) = rho_CaCO3*a4(nzmin:nzmax,row) + rho_opal*a3(nzmin:nzmax,row) + rho_POC*a1(nzmin:nzmax,row) + rho_PON*a2(nzmin:nzmax,row) end do -#endif + endif end subroutine get_particle_density !------------------------------------------------------------------------------- diff --git a/src/int_recom/recom_sms.F90 b/src/int_recom/recom_sms.F90 index 5deb705a9..5ac9d95d5 100644 --- a/src/int_recom/recom_sms.F90 +++ b/src/int_recom/recom_sms.F90 @@ -85,352 +85,1412 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & real(kind=8), intent(in) :: Latd(1) ! latitude in degree real(kind=8), intent(in) :: Lond(1) ! longitude in degree real(kind=8) :: mocsy_step_per_day - real(kind=8) :: & - DIN, & !< Dissolved Inorganic Nitrogen [mmol/m3] - DIC, & !< Dissolved Inorganic Carbon [mmol/m3] - Alk, & !< Total Alkalinity [mmol/m3] - PhyN, & !< Intracellular conc of Nitrogen in small phytoplankton [mmol/m3] - PhyC, & !< Intracellular conc of Carbon in small phytoplankton [mmol/m3] - PhyChl, & !< Current intracellular ChlA conc. [mg/m3] - DetN, & !< Conc of N in Detritus [mmol/m3] - DetC, & !< Conc of C in Detritus [mmol/m3] - HetN, & !< Conc of N in heterotrophs [mmol/m3] - HetC, & !< Conc of C in heterotrophs [mmol/m3] - DON, & !< Dissolved organic N in the water [mmol/m3] - EOC, & !< Extracellular Organic C conc [mmol/m3] - DiaN, & - DiaC, & - DiaChl, & - DiaSi, & - DetSi, & -#if defined (__coccos) - CoccoN, & - CoccoC, & - CoccoChl,& - PhaeoN, & - PhaeoC, & - PhaeoChl,& -#endif - Si, & - Fe, & - PhyCalc, & - DetCalc, & -#if defined (__3Zoo2Det) - Zoo2N, & - Zoo2C, & - DetZ2N, & - DetZ2C, & - DetZ2Si, & - DetZ2Calc,& - MicZooN, & ! 3Zoo - MicZooC, & ! 3Zoo -#endif - FreeFe, & - O2 + +! --- Biogeochemical state variables --- +real(kind=8) :: & + DIN, & ! [mmol/m3] Dissolved inorganic nitrogen + DIC, & ! [mmol/m3] Dissolved inorganic carbon + Alk, & ! [mmol/m3] Total alkalinity + PhyN, & ! [mmol/m3] Phytoplankton nitrogen (small) + PhyC, & ! [mmol/m3] Phytoplankton carbon (small) + PhyChl, & ! [mg/m3] Phytoplankton chlorophyll + DetN, & ! [mmol/m3] Detrital nitrogen + DetC, & ! [mmol/m3] Detrital carbon + HetN, & ! [mmol/m3] Heterotroph nitrogen + HetC, & ! [mmol/m3] Heterotroph carbon + DON, & ! [mmol/m3] Dissolved organic nitrogen + EOC, & ! [mmol/m3] Extracellular organic carbon + DiaN, & ! [mmol/m3] Diatom nitrogen + DiaC, & ! [mmol/m3] Diatom carbon + DiaChl, & ! [mg/m3] Diatom chlorophyll + DiaSi, & ! [mmol/m3] Diatom silicate + DetSi, & ! [mmol/m3] Detrital silicate + Si, & ! [mmol/m3] Dissolved silicate + Fe, & ! [mmol/m3] Dissolved iron + PhyCalc, & ! [mmol/m3] Phytoplankton calcite + DetCalc, & ! [mmol/m3] Detrital calcite + FreeFe, & ! [mmol/m3] Free iron + O2 ! [mmol/m3] Dissolved oxygen + +! Coccolithophore variables (conditionally used based on namelist) +real(kind=8) :: & + CoccoN, & ! [mmol/m3] Coccolithophore nitrogen + CoccoC, & ! [mmol/m3] Coccolithophore carbon + CoccoChl, & ! [mg/m3] Coccolithophore chlorophyll + PhaeoN, & ! [mmol/m3] Phaeocystis nitrogen + PhaeoC, & ! [mmol/m3] Phaeocystis carbon + PhaeoChl ! [mg/m3] Phaeocystis chlorophyll + +! Extended zooplankton variables (conditionally used based on namelist) +real(kind=8) :: & + Zoo2N, & ! [mmol/m3] Zooplankton type 2 nitrogen + Zoo2C, & ! [mmol/m3] Zooplankton type 2 carbon + DetZ2N, & ! [mmol/m3] Zooplankton detritus nitrogen + DetZ2C, & ! [mmol/m3] Zooplankton detritus carbon + DetZ2Si, & ! [mmol/m3] Zooplankton detritus silicate + DetZ2Calc, & ! [mmol/m3] Zooplankton detritus calcite + MicZooN, & ! [mmol/m3] Microzooplankton nitrogen + MicZooC ! [mmol/m3] Microzooplankton carbon #include "../associate_part_def.h" #include "../associate_mesh_def.h" #include "../associate_part_ass.h" #include "../associate_mesh_ass.h" - sms = zero ! double precision - tiny_N = tiny_chl/chl2N_max !< 0.00001/ 3.15d0 Chl2N_max [mg CHL/mmol N] Maximum CHL a : N ratio = 0.3 gCHL gN^-1 - tiny_N_d = tiny_chl/chl2N_max_d !< 0.00001/ 4.2d0 + ! =========================================================================== + ! VARIABLE DECLARATIONS AND INITIALIZATION + ! =========================================================================== + + !=============================================================================== + ! INITIALIZATION AND SETUP + !=============================================================================== + ! Initializes arrays, calculates minimum thresholds, and sets up time stepping. + ! + ! Variables: + ! sms : Source-minus-sink array for tracer updates [mmol m-3 day-1] + ! zero : Double precision zero (0.0d0) + ! tiny : Very small positive number (numerical stability) + ! tiny_chl : Minimum chlorophyll concentration [mgChl m-3] + ! + ! Source-Minus-Sink (SMS) Array: + ! - Accumulates all biogeochemical fluxes + ! - Dimension: (vertical_levels, number_of_tracers) + ! - Updated throughout biological calculations + ! - Applied to state variables at end of time step + ! - Units: concentration per day [mmol m-3 day-1] + !------------------------------------------------------------------------------- + + ! Initialize source-minus-sink array + ! Sets all biogeochemical fluxes to zero at start of time step + sms = zero + + !=============================================================================== + ! MINIMUM THRESHOLD VALUES + !=============================================================================== + ! Calculates minimum allowable concentrations for all biological state variables. + ! Prevents division by zero and ensures numerical stability. + ! + ! Threshold Calculation Strategy: + ! - Based on physiological maximum ratios + ! - Works backward from minimum chlorophyll + ! - Ensures stoichiometric consistency + ! - Species-specific values + ! + ! Rationale for Minimum Thresholds: + ! - Division by zero prevention in quota calculations + ! - Numerical stability in resource limitation terms + ! - Prevents spurious negative values + ! - Represents detection limits or "ghost populations" + ! + ! Typical Minimum Values: + ! - Chlorophyll: ~0.001-0.01 mgChl m-3 + ! - Nitrogen: ~0.001-0.01 mmolN m-3 + ! - Carbon: ~0.01-0.1 mmolC m-3 + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Small Phytoplankton Thresholds + !------------------------------------------------------------------------------- + ! Variables: + ! tiny_N : Minimum small phyto nitrogen [mmolN m-3] + ! tiny_C : Minimum small phyto carbon [mmolC m-3] + ! tiny_chl : Minimum chlorophyll (set externally) [mgChl m-3] + ! chl2N_max : Maximum Chlorophyll:Nitrogen ratio [mgChl mmolN-1] + ! NCmax : Maximum Nitrogen:Carbon quota [mmolN mmolC-1] + ! + ! Calculation Logic: + ! 1. Start with minimum observable Chl (tiny_chl) + ! 2. Calculate minimum N using maximum Chl:N ratio + ! 3. Calculate minimum C using maximum N:C quota + ! + ! Typical Values: + ! chl2N_max = 3.15 mgChl/mmolN (high Chl per N, low light acclimation) + ! NCmax = 0.2 mmolN/mmolC (luxury N consumption maximum) + + ! Minimum nitrogen based on minimum chlorophyll and maximum Chl:N ratio + tiny_N = tiny_chl / chl2N_max + + ! Minimum carbon based on minimum nitrogen and maximum N:C quota + tiny_C = tiny_N / NCmax + + !------------------------------------------------------------------------------- + ! Diatom Thresholds + !------------------------------------------------------------------------------- + ! Variables: + ! tiny_N_d : Minimum diatom nitrogen [mmolN m-3] + ! tiny_C_d : Minimum diatom carbon [mmolC m-3] + ! tiny_Si : Minimum diatom silicate [mmolSi m-3] + ! chl2N_max_d : Maximum diatom Chl:N ratio [mgChl mmolN-1] + ! NCmax_d : Maximum diatom N:C quota [mmolN mmolC-1] + ! SiCmax : Maximum diatom Si:C quota [mmolSi mmolC-1] + ! + ! Typical Values: + ! chl2N_max_d = 4.2 mgChl/mmolN (diatoms can have higher Chl:N) + ! NCmax_d = 0.2 mmolN/mmolC + ! SiCmax = 0.8 mmolSi/mmolC (heavily silicified frustules) + ! + ! Silicon Requirement: + ! - Unique to diatoms (frustule formation) + ! - Calculated from minimum carbon and maximum Si:C ratio + + ! Minimum diatom nitrogen + tiny_N_d = tiny_chl / chl2N_max_d + + ! Minimum diatom carbon + tiny_C_d = tiny_N_d / NCmax_d + + ! Minimum silicate (based on diatom carbon and maximum Si:C quota) + tiny_Si = tiny_C_d / SiCmax + + !------------------------------------------------------------------------------- + ! Coccolithophore and Phaeocystis Thresholds (Optional) + !------------------------------------------------------------------------------- + ! Only calculated when 4-plankton functional type model is enabled + + if (enable_coccos) then + + ! Coccolithophore thresholds + ! Variables: + ! tiny_N_c : Minimum cocco nitrogen [mmolN m-3] + ! tiny_C_c : Minimum cocco carbon [mmolC m-3] + ! chl2N_max_c : Maximum cocco Chl:N ratio [mgChl mmolN-1] + ! NCmax_c : Maximum cocco N:C quota [mmolN mmolC-1] + tiny_N_c = tiny_chl / chl2N_max_c + tiny_C_c = tiny_N_c / NCmax_c + + ! Phaeocystis thresholds + ! Variables: + ! tiny_N_p : Minimum Phaeo nitrogen [mmolN m-3] + ! tiny_C_p : Minimum Phaeo carbon [mmolC m-3] + ! chl2N_max_p : Maximum Phaeo Chl:N ratio [mgChl mmolN-1] + ! NCmax_p : Maximum Phaeo N:C quota [mmolN mmolC-1] + tiny_N_p = tiny_chl / chl2N_max_p + tiny_C_p = tiny_N_p / NCmax_p - tiny_C = tiny_N /NCmax !< NCmax = 0.2d0 [mmol N/mmol C] Maximum cell quota of nitrogen (N:C) - tiny_C_d = tiny_N_d/NCmax_d !< NCmax_d = 0.2d0 + endif - tiny_Si = tiny_C_d/SiCmax !< SiCmax = 0.8d0 + ! Reciprocal of heterotroph respiration rate + ! Used in Redfield-based respiration calculations + ! Variable: + ! recip_res_het : Reciprocal respiration parameter [day] + ! res_het : Heterotroph respiration rate [day-1] + ! Typical value: res_het = 0.01 day-1 (combined respiration + mortality) + recip_res_het = 1.d0 / res_het + + ! Atmospheric pressure conversion for carbonate chemistry + ! MOCSY requires pressure in atmospheres + ! Variables: + ! Patm_depth : Atmospheric pressure [atm] + ! Loc_slp : Local sea level pressure [Pa] + ! Pa2atm : Pascal to atmosphere conversion factor [Pa atm-1] + Patm_depth = Loc_slp / Pa2atm + + !=============================================================================== + ! TIME STEPPING SETUP + !=============================================================================== + ! Converts time steps and sets up sub-cycling for biogeochemistry. + ! + ! Time Step Hierarchy: + ! 1. FESOM physics time step (dt) [seconds] + ! 2. Daily time step (dt_d) [days] + ! 3. REcoM biogeochemistry sub-step (dt_b) [days] + ! + ! Sub-Cycling Rationale: + ! - Physics: Slow (hours to days) + ! - Fast biology: Minutes to hours (phytoplankton growth, grazing) + ! - Allows finer temporal resolution for biological processes + ! - Improves numerical stability for stiff biological systems + ! + ! Variables: + ! rTref : Reciprocal reference temperature [K-1] + ! recom_Tref : Reference temperature (typically 288.15 K = 15degC) [K] + ! dt : FESOM physics time step [seconds] + ! dt_d : Physics time step in days [days] + ! dt_b : REcoM biogeochemistry sub-time step [days] + ! SecondsPerDay : Conversion factor (86400) [s day-1] + ! biostep : Number of biogeochemistry steps per physics step [-] + ! + ! Typical Configuration: + ! dt = 3600 s (1 hour physics step) + ! biostep = 4 (15-minute biogeochemistry steps) + ! dt_b = 0.25/24 = 0.0104 days + !------------------------------------------------------------------------------- + + ! Reciprocal reference temperature for Arrhenius calculations + ! Reference: 288.15 K (15degC) used in temperature dependence functions + rTref = real(one) / recom_Tref + + ! Convert FESOM physics time step to days + dt_d = dt / SecondsPerDay + + ! Calculate biogeochemistry sub-time step + ! Divides physics step into smaller biogeochemical steps + dt_b = dt_d / real(biostep) + + !=============================================================================== + ! MAIN TIME INTEGRATION LOOP + !=============================================================================== + ! Iterates through biogeochemical sub-time steps within each physics time step. + ! Allows fine temporal resolution for fast biological processes. + ! + ! Loop Structure: + ! - Outer loop: Biogeochemistry sub-steps (biostep iterations) + ! - Inner loop: Vertical layers (surface to bottom) + ! + ! Variables: + ! step : Current biogeochemistry sub-step counter [-] + ! biostep : Total number of sub-steps per physics step [-] + ! kdzUpper : Cumulative light attenuation from surface [dimensionless] + ! sms : Source-minus-sink flux array [mmol m-3 day-1] + ! tiny : Threshold for negligible fluxes [mmol m-3 day-1] + ! + ! Numerical Cleanup: + ! - Removes negligible SMS values before applying + ! - Prevents accumulation of numerical noise + ! - Improves computational efficiency + !------------------------------------------------------------------------------- + + do step = one, biostep + + ! Reset upper light attenuation at start of each sub-step + ! Light attenuation integrates downward through water column + kdzUpper = 0.d0 + + ! Clean up negligible SMS values to prevent numerical issues + ! Sets very small fluxes to exactly zero + if (any(abs(sms(:, :)) <= tiny)) sms(:, :) = zero + + !=========================================================================== + ! VERTICAL LOOP THROUGH WATER COLUMN + !=========================================================================== + ! Processes each vertical layer from surface to bottom. + ! Updates state variables and enforces constraints. + ! + ! Variables: + ! k : Current vertical level index [-] + ! Nn : Number of vertical levels in water column [-] + ! + ! Note: Alternative loop configurations commented out: + ! - nzmin, nzmax: Min/max active levels (for dry cells) + ! - myDim_nod2D: Horizontal dimension (for 3D unstructured grids) + !--------------------------------------------------------------------------- + + do k = one, Nn + ! Alternative loop structures (commented out): + ! do n = 1, myDim_nod2D + ! Nn = nlevels_nod2D(n) - 1 + ! nzmin = ulevels_nod2D(row) + ! nzmax = nlevels_nod2D(row) + + !----------------------------------------------------------------------- + ! DISSOLVED INORGANIC NUTRIENTS + !----------------------------------------------------------------------- + ! Update nutrient concentrations: state(previous) + SMS(fluxes) + ! Enforce minimum values for numerical stability + ! + ! Variables: + ! DIN : Dissolved inorganic nitrogen (NO3- + NH4+) [mmolN m-3] + ! Si : Dissolved silicate (Si(OH)4) [mmolSi m-3] + ! Fe : Dissolved iron (bioavailable Fe) [mmolFe m-3] + ! + ! max() function ensures non-negative concentrations + !----------------------------------------------------------------------- + + DIN = max(tiny, state(k, idin) + sms(k, idin)) + Si = max(tiny, state(k, isi) + sms(k, isi)) + Fe = max(tiny, state(k, ife) + sms(k, ife)) + + !----------------------------------------------------------------------- + ! CARBON SYSTEM VARIABLES + !----------------------------------------------------------------------- + ! Variables: + ! DIC : Dissolved inorganic carbon (CO2 + HCO3- + CO3--) [mmolC m-3] + ! ALK : Total alkalinity [meq m-3] + ! O2 : Dissolved oxygen [mmolO2 m-3] + !----------------------------------------------------------------------- + + DIC = max(tiny, state(k, idic) + sms(k, idic)) + ALK = max(tiny, state(k, ialk) + sms(k, ialk)) + O2 = max(tiny, state(k, ioxy) + sms(k, ioxy)) + + !----------------------------------------------------------------------- + ! DISSOLVED ORGANIC MATTER + !----------------------------------------------------------------------- + ! Variables: + ! DON : Dissolved organic nitrogen (labile + semi-labile) [mmolN m-3] + ! EOC : Dissolved organic carbon (labile + semi-labile) [mmolC m-3] + ! + ! Note: EOC naming convention (Enhanced Organic Carbon) is historical + !----------------------------------------------------------------------- + + DON = max(tiny, state(k, idon) + sms(k, idon)) + EOC = max(tiny, state(k, idoc) + sms(k, idoc)) + + !----------------------------------------------------------------------- + ! SMALL PHYTOPLANKTON + !----------------------------------------------------------------------- + ! General phytoplankton functional type + ! Variables: + ! PhyN : Small phyto nitrogen [mmolN m-3] + ! PhyC : Small phyto carbon [mmolC m-3] + ! PhyChl : Small phyto chlorophyll [mgChl m-3] + ! PhyCalc : Small phyto calcite (if calcifying) [mmolC m-3] + !----------------------------------------------------------------------- + + PhyN = max(tiny_N, state(k, iphyn) + sms(k, iphyn)) + PhyC = max(tiny_C, state(k, iphyc) + sms(k, iphyc)) + PhyChl = max(tiny_chl, state(k, ipchl) + sms(k, ipchl)) + PhyCalc = max(tiny, state(k, iphycal) + sms(k, iphycal)) + + !----------------------------------------------------------------------- + ! DIATOMS (SILICIFYING PHYTOPLANKTON) + !----------------------------------------------------------------------- + ! Large phytoplankton with silica frustules + ! Variables: + ! DiaN : Diatom nitrogen [mmolN m-3] + ! DiaC : Diatom carbon [mmolC m-3] + ! DiaChl : Diatom chlorophyll [mgChl m-3] + ! DiaSi : Diatom silicate (frustule) [mmolSi m-3] + !----------------------------------------------------------------------- + + DiaN = max(tiny_N_d, state(k, idian) + sms(k, idian)) + DiaC = max(tiny_C_d, state(k, idiac) + sms(k, idiac)) + DiaChl = max(tiny_chl, state(k, idchl) + sms(k, idchl)) + DiaSi = max(tiny_si, state(k, idiasi) + sms(k, idiasi)) + + if (enable_coccos) then + + !------------------------------------------------------------------- + ! COCCOLITHOPHORES (CALCIFYING PHYTOPLANKTON) + !------------------------------------------------------------------- + ! Variables: + ! CoccoN : Cocco nitrogen [mmolN m-3] + ! CoccoC : Cocco carbon [mmolC m-3] + ! CoccoChl : Cocco chlorophyll [mgChl m-3] + !------------------------------------------------------------------- + + CoccoN = max(tiny_N_c, state(k, icocn) + sms(k, icocn)) + CoccoC = max(tiny_C_c, state(k, icocc) + sms(k, icocc)) + CoccoChl = max(tiny_chl, state(k, icchl) + sms(k, icchl)) + + !------------------------------------------------------------------- + ! PHAEOCYSTIS (COLONIAL PHYTOPLANKTON) + !------------------------------------------------------------------- + ! Variables: + ! PhaeoN : Phaeo nitrogen [mmolN m-3] + ! PhaeoC : Phaeo carbon [mmolC m-3] + ! PhaeoChl : Phaeo chlorophyll [mgChl m-3] + !------------------------------------------------------------------- + + PhaeoN = max(tiny_N_p, state(k, iphan) + sms(k, iphan)) + PhaeoC = max(tiny_C_p, state(k, iphac) + sms(k, iphac)) + PhaeoChl = max(tiny_chl, state(k, iphachl) + sms(k, iphachl)) -#if defined (__coccos) - tiny_N_c = tiny_chl/chl2N_max_c - tiny_C_c = tiny_N_c/NCmax_c - tiny_N_p = tiny_chl/chl2N_max_p - tiny_C_p = tiny_N_p/NCmax_p -#endif + end if - recip_res_het = 1.d0/res_het !< res_het = 0.01d0 [1/day] Respiration by heterotrophs and mortality (loss to detritus) + !----------------------------------------------------------------------- + ! HETEROTROPHS (ZOOPLANKTON) + !----------------------------------------------------------------------- + ! Primary grazers (mesozooplankton) + ! Variables: + ! HetN : Mesozooplankton nitrogen [mmolN m-3] + ! HetC : Mesozooplankton carbon [mmolC m-3] + !----------------------------------------------------------------------- + + HetN = max(tiny, state(k, ihetn) + sms(k, ihetn)) + HetC = max(tiny, state(k, ihetc) + sms(k, ihetc)) + + if (enable_3zoo2det) then + + !------------------------------------------------------------------- + ! ADDITIONAL ZOOPLANKTON (3-ZOOPLANKTON MODEL) + !------------------------------------------------------------------- + ! Macrozooplankton (e.g., krill) + ! Variables: + ! Zoo2N : Macrozooplankton nitrogen [mmolN m-3] + ! Zoo2C : Macrozooplankton carbon [mmolC m-3] + Zoo2N = max(tiny, state(k, izoo2n) + sms(k, izoo2n)) + Zoo2C = max(tiny, state(k, izoo2c) + sms(k, izoo2c)) + + ! Microzooplankton (e.g., ciliates, heterotrophic dinoflagellates) + ! Variables: + ! MicZooN : Microzooplankton nitrogen [mmolN m-3] + ! MicZooC : Microzooplankton carbon [mmolC m-3] + MicZooN = max(tiny, state(k, imiczoon) + sms(k, imiczoon)) + MicZooC = max(tiny, state(k, imiczooc) + sms(k, imiczooc)) - Patm_depth = Loc_slp/Pa2atm ! MOCSY convert from Pa to atm. + end if -!------------------------------------------------------------------------------- -!> REcoM time steps [day] -!------------------------------------------------------------------------------- + !----------------------------------------------------------------------- + ! DETRITUS (DEAD ORGANIC MATTER) + !----------------------------------------------------------------------- + ! Slow-sinking detritus pools + ! Variables: + ! DetN : Detrital nitrogen [mmolN m-3] + ! DetC : Detrital carbon [mmolC m-3] + ! DetSi : Detrital silicate [mmolSi m-3] + ! DetCalc : Detrital calcite [mmolC m-3] + !----------------------------------------------------------------------- + + DetN = max(tiny, state(k, idetn) + sms(k, idetn)) + DetC = max(tiny, state(k, idetc) + sms(k, idetc)) + DetSi = max(tiny, state(k, idetsi) + sms(k, idetsi)) + DetCalc = max(tiny, state(k, idetcal) + sms(k, idetcal)) + + if (enable_3zoo2det) then + + !------------------------------------------------------------------- + ! FAST-SINKING DETRITUS (FECAL PELLETS) + !------------------------------------------------------------------- + ! Large, rapidly sinking particles + ! Variables: + ! DetZ2N : Fast detritus nitrogen [mmolN m-3] + ! DetZ2C : Fast detritus carbon [mmolC m-3] + ! DetZ2Si : Fast detritus silicate [mmolSi m-3] + ! DetZ2Calc : Fast detritus calcite [mmolC m-3] + !------------------------------------------------------------------- + + DetZ2N = max(tiny, state(k, idetz2n) + sms(k, idetz2n)) + DetZ2C = max(tiny, state(k, idetz2c) + sms(k, idetz2c)) + DetZ2Si = max(tiny, state(k, idetz2si) + sms(k, idetz2si)) + DetZ2Calc = max(tiny, state(k, idetz2calc) + sms(k, idetz2calc)) - rTref = real(one)/recom_Tref - - dt_d = dt/SecondsPerDay !< Size of FESOM time step [day] - dt_b = dt_d/real(biostep) !< Size of REcoM time step [day] + end if -!------------------------------------------------------------------------------- -!Main time loop starts - do step = one,biostep + !----------------------------------------------------------------------- + ! FREE IRON INITIALIZATION + !----------------------------------------------------------------------- + ! Free iron will be calculated later from total iron budget + ! Accounts for scavenging, complexation, and biological uptake + !----------------------------------------------------------------------- - kdzUpper = 0.d0 !< Upper light attenuation of top cell is set to zero + FreeFe = zero - if (any(abs(sms(:,:)) <= tiny)) sms(:,:) = zero ! tiny = 2.23D-16 + !======================================================================= + ! PHYSICAL ENVIRONMENT CONSTRAINTS FOR CARBONATE CHEMISTRY + !======================================================================= + ! Validates and constrains physical parameters for MOCSY carbonate + ! system calculations. Ensures inputs are within valid ranges. + ! + ! MOCSY Valid Ranges (Lueker K1/K2 formulation): + ! Temperature: 2-35degC + ! Salinity: 19-43 psu + ! + ! Rationale for Constraints: + ! - Equilibrium constants are empirical fits + ! - Extrapolation outside valid range introduces errors + ! - Numerical instability at extreme values + ! - Ice formation creates low-salinity issues + !----------------------------------------------------------------------- + + !----------------------------------------------------------------------- + ! Temperature Constraints + !----------------------------------------------------------------------- + ! Variables: + ! REcoM_T_depth : Constrained temperature for MOCSY [degC] + ! Temp(k) : Actual temperature at depth k [degC] + ! + ! Constraints: + ! Minimum: 2degC (prevents extrapolation below calibration range) + ! Maximum: 40degC (safety limit, ocean rarely exceeds 35degC) + ! + ! Note: K1/K2 Lueker formulation valid for 2-35degC + !----------------------------------------------------------------------- + + REcoM_T_depth = max(2.d0, Temp(k)) ! Apply minimum + REcoM_T_depth = min(REcoM_T_depth, 40.d0) ! Apply maximum + + !----------------------------------------------------------------------- + ! Salinity Constraints + !----------------------------------------------------------------------- + ! Variables: + ! REcoM_S_depth : Constrained salinity for MOCSY [psu] + ! Sali_depth(k) : Actual salinity at depth k [psu] + ! + ! Constraints: + ! Minimum: 21 psu (increased from 19 to avoid numerical issues) + ! Maximum: 43 psu (upper limit of calibration range) + ! + ! Problematic Conditions: + ! - Salinity 19-21 psu with ice concentration > 97% + ! - Causes numerical instability in MOCSY + ! - Conservative constraint (21 psu minimum) prevents issues + ! + ! Note: Brackish water and ice-covered regions require special care + !----------------------------------------------------------------------- + + REcoM_S_depth = max(21.d0, Sali_depth(k)) ! Apply minimum + REcoM_S_depth = min(REcoM_S_depth, 43.d0) ! Apply maximum + + !----------------------------------------------------------------------- + ! Unit Conversions for MOCSY + !----------------------------------------------------------------------- + ! MOCSY requires concentrations in mol/m3 (not mmol/m3) + ! Conversion factor: 1e-3 (mmol -> mol) + ! + ! Variables (output): + ! REcoM_DIC_depth : DIC for MOCSY [mol m-3] + ! REcoM_Alk_depth : Alkalinity for MOCSY [mol m-3] + ! REcoM_Si_depth : Silicate for MOCSY [mol m-3] + ! REcoM_Phos_depth : Phosphate for MOCSY [mol m-3] + ! + ! Sources: + ! state(k, idic) + sms(k, idic) : DIC [mmol m-3] + ! state(k, ialk) + sms(k, ialk) : Alkalinity [mmol m-3] + ! state(k, isi) + sms(k, isi) : Silicate [mmol m-3] + ! state(k, idin) + sms(k, idin) : DIN -> Phosphate via Redfield + !----------------------------------------------------------------------- + + ! Dissolved inorganic carbon [mol m-3] + REcoM_DIC_depth = max(tiny * 1e-3, state(k, idic) * 1e-3 + sms(k, idic) * 1e-3) + + ! Total alkalinity [mol m-3] + REcoM_Alk_depth = max(tiny * 1e-3, state(k, ialk) * 1e-3 + sms(k, ialk) * 1e-3) + + ! Silicate [mol m-3] + REcoM_Si_depth = max(tiny * 1e-3, state(k, isi) * 1e-3 + sms(k, isi) * 1e-3) + + ! Phosphate [mol m-3] + ! Calculated from nitrogen using Redfield ratio (N:P = 16:1) + ! Model tracks nitrogen but MOCSY needs phosphate + REcoM_Phos_depth = max(tiny * 1e-3, state(k, idin) * 1e-3 + sms(k, idin) * 1e-3) / 16.d0 + + ! =================================================================== + ! CELLULAR QUOTAS AND RATIOS CALCULATIONS + ! =================================================================== + + !=============================================================================== + ! Small Phytoplankton Quotas + !=============================================================================== + ! Calculates stoichiometric ratios for the small phytoplankton functional type. + ! Represents diverse group of small flagellates and picophytoplankton. + ! + ! Variables: + ! quota : Nitrogen:Carbon quota [mmolN mmolC-1] + ! recipquota : Carbon:Nitrogen ratio [mmolC mmolN-1] + ! Chl2C : Chlorophyll:Carbon ratio [mgChl mmolC-1] + ! Chl2N : Chlorophyll:Nitrogen ratio [mgChl mmolN-1] + ! CHL2C_plast : Plastidic Chlorophyll:Carbon ratio [mgChl mmolC-1] + ! PhyN : Small phytoplankton nitrogen [mmolN m-3] + ! PhyC : Small phytoplankton carbon [mmolC m-3] + ! PhyChl : Small phytoplankton chlorophyll [mgChl m-3] + ! NCmin : Minimum N:C quota (subsistence quota) [mmolN mmolC-1] + ! + ! Quota Interpretation: + ! - High quota (N:C > 0.15): Nutrient replete, luxury consumption + ! - Medium quota (N:C ≈ 0.10): Balanced growth + ! - Low quota (N:C < 0.06): Severely N-limited, near subsistence + ! - Minimum quota (NCmin ≈ 0.04): Zero growth threshold + ! + ! Plastidic Chlorophyll Concept: + ! - Total Chl includes storage and structural chlorophyll + ! - Plastidic Chl represents functional photosynthetic apparatus + ! - Correction factor: quota/(quota - NCmin) + ! - Higher correction when quota approaches minimum (more Chl in chloroplasts) + !------------------------------------------------------------------------------- + + ! Nitrogen:Carbon quota (cellular N:C ratio) + ! Controls growth rate via Droop limitation + quota = PhyN / PhyC + + ! Carbon:Nitrogen ratio (reciprocal) + ! Used for converting N-based fluxes to carbon + recipquota = real(one) / quota + + ! Chlorophyll:Carbon ratio + ! Reflects photoacclimation state (higher in low light) + Chl2C = PhyChl / PhyC + + ! Chlorophyll:Nitrogen ratio + ! Links photosynthetic machinery to nitrogen investment + Chl2N = PhyChl / PhyN + + ! Plastidic Chlorophyll:Carbon ratio + ! Estimates chlorophyll in active photosynthetic apparatus + ! Correction accounts for non-photosynthetic N (structural proteins, storage) + ! Formula: Chl2C x (quota / (quota - NCmin)) + ! As quota -> NCmin, more N is in photosynthetic machinery + CHL2C_plast = Chl2C * (quota / (quota - NCmin)) + + !=============================================================================== + ! Diatom Quotas + !=============================================================================== + ! Calculates stoichiometric ratios for diatoms (large phytoplankton with + ! silica frustules). Includes unique silicon quotas. + ! + ! Variables: + ! quota_dia : Diatom N:C quota [mmolN mmolC-1] + ! recipQuota_dia : Diatom C:N ratio [mmolC mmolN-1] + ! Chl2C_dia : Diatom Chl:C ratio [mgChl mmolC-1] + ! Chl2N_dia : Diatom Chl:N ratio [mgChl mmolN-1] + ! CHL2C_plast_dia : Diatom plastidic Chl:C ratio [mgChl mmolC-1] + ! qSiC : Diatom Si:C quota [mmolSi mmolC-1] + ! qSiN : Diatom Si:N quota [mmolSi mmolN-1] + ! DiaN : Diatom nitrogen [mmolN m-3] + ! DiaC : Diatom carbon [mmolC m-3] + ! DiaChl : Diatom chlorophyll [mgChl m-3] + ! DiaSi : Diatom silicon [mmolSi m-3] + ! NCmin_d : Minimum diatom N:C quota [mmolN mmolC-1] + ! + ! Silicon Quota Significance: + ! - Required for frustule (shell) formation + ! - Typical Si:C ≈ 0.13 (Brzezinski 1985) + ! - Low Si:C -> thin frustules, increased sinking mortality + ! - High Si:C -> thick frustules, enhanced sinking + ! - Si limitation can occur even when N is abundant + ! + ! Diatom-Specific Features: + ! - Generally lower Chl:C than small phytoplankton (package effect) + ! - Higher maximum growth rates when nutrient replete + ! - Bloom-forming under high-nutrient conditions + !------------------------------------------------------------------------------- + + ! Nitrogen:Carbon quota + quota_dia = DiaN / DiaC + + ! Carbon:Nitrogen ratio (reciprocal) + recipQuota_dia = real(one) / quota_dia + + ! Chlorophyll:Carbon ratio + ! Generally lower than small phytoplankton due to large cell size (package effect) + Chl2C_dia = DiaChl / DiaC + + ! Chlorophyll:Nitrogen ratio + Chl2N_dia = DiaChl / DiaN + + ! Plastidic Chlorophyll:Carbon ratio + ! Corrected for non-photosynthetic nitrogen allocation + CHL2C_plast_dia = Chl2C_dia * (quota_dia / (quota_dia - NCmin_d)) + + ! Silicon:Carbon quota + ! Critical for frustule formation and diatom physiology + ! Low Si:C indicates silicon limitation + qSiC = DiaSi / DiaC + + ! Silicon:Nitrogen quota + ! Alternative measure of silicon status relative to cellular nitrogen + qSiN = DiaSi / DiaN + + !=============================================================================== + ! Additional Phytoplankton Quotas (OPTIONAL) + !=============================================================================== + ! Calculates quotas for coccolithophores and Phaeocystis when enabled. + ! These groups have distinct biogeochemical roles. + ! + ! Coccolithophores: + ! - Calcifying phytoplankton (produce CaCO3 plates) + ! - Warm-water adapted + ! - Important for carbonate counter-pump + ! + ! Phaeocystis: + ! - Colonial phytoplankton (can form large blooms) + ! - Produces mucilaginous matrix + ! - Cold-water species (polar and temperate) + ! - High aggregation potential + !------------------------------------------------------------------------------- + + if (enable_coccos) then + + !=========================================================================== + ! Coccolithophore Quotas + !=========================================================================== + ! Calcifying phytoplankton with calcium carbonate plates (coccoliths) + ! + ! Variables: + ! quota_cocco : Cocco N:C quota [mmolN mmolC-1] + ! recipQuota_cocco : Cocco C:N ratio [mmolC mmolN-1] + ! Chl2C_cocco : Cocco Chl:C ratio [mgChl mmolC-1] + ! Chl2N_cocco : Cocco Chl:N ratio [mgChl mmolN-1] + ! CHL2C_plast_cocco : Cocco plastidic Chl:C ratio [mgChl mmolC-1] + ! CoccoN : Coccolithophore nitrogen [mmolN m-3] + ! CoccoC : Coccolithophore carbon [mmolC m-3] + ! CoccoChl : Coccolithophore chlorophyll [mgChl m-3] + ! NCmin_c : Minimum cocco N:C quota [mmolN mmolC-1] + ! + ! Note: Additional calcite quotas (CaCO3:C) calculated in calcification module + !--------------------------------------------------------------------------- + + ! Nitrogen:Carbon quota + quota_cocco = CoccoN / CoccoC + + ! Carbon:Nitrogen ratio + recipQuota_cocco = real(one) / quota_cocco + + ! Chlorophyll:Carbon ratio + Chl2C_cocco = CoccoChl / CoccoC + + ! Chlorophyll:Nitrogen ratio + Chl2N_cocco = CoccoChl / CoccoN + + ! Plastidic Chlorophyll:Carbon ratio + CHL2C_plast_cocco = Chl2C_cocco * (quota_cocco / (quota_cocco - NCmin_c)) + + !=========================================================================== + ! Phaeocystis Quotas + !=========================================================================== + ! Colonial phytoplankton that forms large blooms in cold waters + ! + ! Variables: + ! quota_phaeo : Phaeo N:C quota [mmolN mmolC-1] + ! recipQuota_phaeo : Phaeo C:N ratio [mmolC mmolN-1] + ! Chl2C_phaeo : Phaeo Chl:C ratio [mgChl mmolC-1] + ! Chl2N_phaeo : Phaeo Chl:N ratio [mgChl mmolN-1] + ! CHL2C_plast_phaeo : Phaeo plastidic Chl:C ratio [mgChl mmolC-1] + ! PhaeoN : Phaeocystis nitrogen [mmolN m-3] + ! PhaeoC : Phaeocystis carbon [mmolC m-3] + ! PhaeoChl : Phaeocystis chlorophyll [mgChl m-3] + ! NCmin_p : Minimum Phaeo N:C quota [mmolN mmolC-1] + ! + ! Ecological Notes: + ! - Forms colonial mucilaginous matrix (contributes to DOM) + ! - Can dominate Arctic/Antarctic spring blooms + ! - Enhanced aggregation and export potential + !--------------------------------------------------------------------------- + + ! Nitrogen:Carbon quota + quota_phaeo = PhaeoN / PhaeoC + + ! Carbon:Nitrogen ratio + recipQuota_phaeo = real(one) / quota_phaeo + + ! Chlorophyll:Carbon ratio + Chl2C_phaeo = PhaeoChl / PhaeoC + + ! Chlorophyll:Nitrogen ratio + Chl2N_phaeo = PhaeoChl / PhaeoN + + ! Plastidic Chlorophyll:Carbon ratio + CHL2C_plast_phaeo = Chl2C_phaeo * (quota_phaeo / (quota_phaeo - NCmin_p)) -!------------------------------------------------------------------------------- -! Main vertical loop starts - do k = one,Nn ! nzmin, nzmax -! do n=1, myDim_nod2D!+eDim_nod2D -! Nn=nlevels_nod2D(n)-1 !nzmax -! nzmin = ulevels_nod2D(row) -! nzmax = nlevels_nod2D(row) - DIN = max(tiny,state(k,idin) + sms(k,idin )) !< Avoids division by zero - DIC = max(tiny,state(k,idic) + sms(k,idic )) !! and updates Conc between - ALK = max(tiny,state(k,ialk) + sms(k,ialk )) !! local steps in REcoM when - PhyN = max(tiny_N,state(k,iphyn) + sms(k,iphyn )) !! biostep > 1 - PhyC = max(tiny_C,state(k,iphyc) + sms(k,iphyc )) - PhyChl = max(tiny_chl,state(k,ipchl) + sms(k,ipchl )) - DetN = max(tiny,state(k,idetn) + sms(k,idetn )) - DetC = max(tiny,state(k,idetc) + sms(k,idetc )) - HetN = max(tiny,state(k,ihetn) + sms(k,ihetn )) - HetC = max(tiny,state(k,ihetc) + sms(k,ihetc )) -#if defined (__3Zoo2Det) - Zoo2N = max(tiny,state(k,izoo2n) + sms(k,izoo2n)) - Zoo2C = max(tiny,state(k,izoo2c) + sms(k,izoo2c)) - DetZ2N = max(tiny,state(k,idetz2n) + sms(k,idetz2n)) - DetZ2C = max(tiny,state(k,idetz2c) + sms(k,idetz2c)) - DetZ2Si = max(tiny,state(k,idetz2si) + sms(k,idetz2si)) - DetZ2Calc = max(tiny,state(k,idetz2calc) + sms(k,idetz2calc)) - MicZooN = max(tiny,state(k,imiczoon) + sms(k,imiczoon)) - MicZooC = max(tiny,state(k,imiczooc) + sms(k,imiczooc)) -#endif - DON = max(tiny,state(k,idon) + sms(k,idon )) - EOC = max(tiny,state(k,idoc) + sms(k,idoc )) - DiaN = max(tiny_N_d,state(k,idian) + sms(k,idian )) - DiaC = max(tiny_C_d,state(k,idiac) + sms(k,idiac )) - DiaChl = max(tiny_chl,state(k,idchl) + sms(k,idchl )) - DiaSi = max(tiny_si,state(k,idiasi) + sms(k,idiasi)) - DetSi = max(tiny,state(k,idetsi) + sms(k,idetsi)) - Si = max(tiny,state(k,isi) + sms(k,isi )) -#if defined (__coccos) - CoccoN = max(tiny_N_c,state(k,icocn) + sms(k,icocn )) - CoccoC = max(tiny_C_c,state(k,icocc) + sms(k,icocc )) - CoccoChl = max(tiny_chl,state(k,icchl) + sms(k,icchl )) - PhaeoN = max(tiny_N_p,state(k,iphan) + sms(k,iphan )) ! Phaeocystis - PhaeoC = max(tiny_C_p,state(k,iphac) + sms(k,iphac )) - PhaeoChl = max(tiny_chl,state(k,iphachl) + sms(k,iphachl )) -#endif - Fe = max(tiny,state(k,ife) + sms(k,ife )) - O2 = max(tiny,state(k,ioxy) + sms(k,ioxy)) - FreeFe = zero + end if -! For Mocsy - REcoM_T_depth = max(2.d0, Temp(k)) ! minimum set to 2 degC: K1/K2 Lueker valid between 2degC-35degC and 19-43psu - REcoM_T_depth = min(REcoM_T_depth, 40.d0) ! maximum set to 40 degC: K1/K2 Lueker valid between 2degC-35degC and 19-43psu - REcoM_S_depth = max(21.d0, Sali_depth(k)) ! minimum set to 21: K1/K2 Lueker valid between 2degC-35degC and 19-43psu, else causes trouble in regions with S between 19 and 21 and ice conc above 97% - REcoM_S_depth = min(REcoM_S_depth, 43.d0) ! maximum set to 43: K1/K2 Lueker valid between 2degC-35degC and 19-43psu, else causes trouble - REcoM_DIC_depth = max(tiny*1e-3,state(k,idic)*1e-3 + sms(k,idic )*1e-3) - REcoM_Alk_depth = max(tiny*1e-3,state(k,ialk)*1e-3 + sms(k,ialk )*1e-3) - REcoM_Si_depth = max(tiny*1e-3,state(k,isi)*1e-3 + sms(k,isi )*1e-3) - - REcoM_Phos_depth = max(tiny*1e-3,state(k,idin)*1e-3 + sms(k,idin )*1e-3) /16 ! convert N to P with Redfield [mol/m3] - - PhyCalc = max(tiny,state(k,iphycal) + sms(k,iphycal)) - DetCalc = max(tiny,state(k,idetcal) + sms(k,idetcal)) - -!!------------------------------------------------------------------------------ -!< Quotas - ! *** Small phytoplankton - quota = PhyN / PhyC ! include variability of the N: C ratio, cellular chemical composition - recipquota = real(one) / quota - Chl2C = PhyChl / PhyC ! Chl a:phytoplankton carbon ratio, cellular chemical composition [gCHL gC^-1] - Chl2N = PhyChl / PhyN ! Chl a:phytoplankton nitrogen ratio, cellular chemical composition [gCHL gN^-1] - CHL2C_plast = Chl2C * (quota/(quota - NCmin)) - - ! *** Diatoms - quota_dia = DiaN / DiaC - recipQuota_dia = real(one)/quota_dia - Chl2C_dia = DiaChl / DiaC - Chl2N_dia = DiaChl / DiaN - CHL2C_plast_dia = Chl2C_dia * (quota_dia/(quota_dia - NCmin_d)) - qSiC = DiaSi / DiaC - qSiN = DiaSi / DiaN - -#if defined (__coccos) - ! *** Coccolithophores - quota_cocco = CoccoN / CoccoC - recipQuota_cocco = real(one)/quota_cocco - Chl2C_cocco = CoccoChl / CoccoC - Chl2N_cocco = CoccoChl / CoccoN - CHL2C_plast_cocco = Chl2C_cocco * (quota_cocco/(quota_cocco - NCmin_c)) - ! *** Phaeocystis - quota_phaeo = PhaeoN / PhaeoC - recipQuota_phaeo = real(one)/quota_phaeo - Chl2C_phaeo = PhaeoChl / PhaeoC - Chl2N_phaeo = PhaeoChl / PhaeoN - CHL2C_plast_phaeo = Chl2C_phaeo * (quota_phaeo/(quota_phaeo - NCmin_p)) -#endif - recipQZoo = HetC / HetN - recip_hetN_plus = 1.d0 / (HetN + tiny_het) ! MB's addition for more stable zoo respiration - if (Grazing_detritus) recipDet = DetC / DetN -#if defined (__3Zoo2Det) - recipQZoo2 = Zoo2C / Zoo2N - recipQZoo3 = MicZooC / MicZooN - if (Grazing_detritus) recipDet2 = DetZ2C / DetZ2N -#endif + !=============================================================================== + ! Zooplankton and Detritus Quotas + !=============================================================================== + ! Calculates carbon:nitrogen ratios for consumers and detrital pools. + ! These ratios are more constrained than phytoplankton (less variable). + ! + ! Zooplankton C:N ratios: + ! - Typically near Redfield ratio (C:N ≈ 6.6) + ! - Less variable than phytoplankton (homeostatic regulation) + ! - Important for grazer nutrition and trophic transfer efficiency + ! + ! Detritus C:N ratios: + ! - Reflects source material composition + ! - Can increase with depth (preferential N remineralization) + ! - Affects remineralization stoichiometry + ! + ! Variables: + ! recipQZoo : Mesozooplankton C:N ratio [mmolC mmolN-1] + ! recipQZoo2 : Macrozooplankton C:N ratio [mmolC mmolN-1] + ! recipQZoo3 : Microzooplankton C:N ratio [mmolC mmolN-1] + ! recipDet : Slow-sinking detritus C:N ratio [mmolC mmolN-1] + ! recipDet2 : Fast-sinking detritus C:N ratio [mmolC mmolN-1] + ! recip_hetN_plus : Stable divisor for respiration calculations [mmolN-1 m3] + ! HetC, HetN : Mesozooplankton carbon and nitrogen [mmol m-3] + ! Zoo2C, Zoo2N : Macrozooplankton carbon and nitrogen [mmol m-3] + ! MicZooC, MicZooN: Microzooplankton carbon and nitrogen [mmol m-3] + ! DetC, DetN : Detritus carbon and nitrogen [mmol m-3] + ! DetZ2C, DetZ2N : Fast-sinking detritus carbon and nitrogen [mmol m-3] + ! tiny_het : Small number to prevent division by zero [mmolN m-3] + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Mesozooplankton (Primary Heterotroph) Quotas + !------------------------------------------------------------------------------- + ! Primary grazer consuming phytoplankton and microzooplankton + + ! Carbon:Nitrogen ratio + ! Used for converting nitrogen-based grazing to carbon fluxes + recipQZoo = HetC / HetN + + ! Stable reciprocal for respiration calculations + ! Prevents division by zero when zooplankton biomass is very low + ! Used in Redfield-based respiration formulation + recip_hetN_plus = 1.d0 / (HetN + tiny_het) + + !------------------------------------------------------------------------------- + ! Detritus Quotas + !------------------------------------------------------------------------------- + ! Organic matter pools with variable C:N ratios - if (ciso) then -!< additional variables are declared in module REcoM_ciso - DIC_13 = max(tiny,state(k,idic_13) + sms(k,idic_13 )) - PhyC_13 = max(tiny_C,state(k,iphyc_13) + sms(k,iphyc_13 )) - DetC_13 = max(tiny,state(k,idetc_13) + sms(k,idetc_13 )) - HetC_13 = max(tiny,state(k,ihetc_13) + sms(k,ihetc_13 )) - EOC_13 = max(tiny,state(k,idoc_13) + sms(k,idoc_13 )) - DiaC_13 = max(tiny_C,state(k,idiac_13) + sms(k,idiac_13 )) - PhyCalc_13 = max(tiny,state(k,iphycal_13) + sms(k,iphycal_13)) - DetCalc_13 = max(tiny,state(k,idetcal_13) + sms(k,idetcal_13)) - - calc_diss_13 = alpha_dcal_13 * calc_diss - - quota_13 = PhyN / PhyC_13 - recipQuota_13 = real(one) / quota_13 - - quota_dia_13 = DiaN / DiaC_13 - recipQuota_dia_13 = real(one) / quota_dia_13 + if (Grazing_detritus) then + ! Slow-sinking detritus C:N ratio + ! Source: Unassimilated food, mortality, aggregation + ! Generally close to Redfield but can be elevated + recipDet = DetC / DetN + endif - recipQZoo_13 = HetC_13 / HetN + if (enable_3zoo2det) then - if (ciso_14) then - DIC_14 = max(tiny,state(k,idic_14) + sms(k,idic_14 )) - if (ciso_organic_14) then - PhyC_14 = max(tiny_C,state(k,iphyc_14) + sms(k,iphyc_14 )) - DetC_14 = max(tiny,state(k,idetc_14) + sms(k,idetc_14 )) - HetC_14 = max(tiny,state(k,ihetc_14) + sms(k,ihetc_14 )) - EOC_14 = max(tiny,state(k,idoc_14) + sms(k,idoc_14 )) - DiaC_14 = max(tiny_C,state(k,idiac_14) + sms(k,idiac_14 )) - PhyCalc_14 = max(tiny,state(k,iphycal_14) + sms(k,iphycal_14)) - DetCalc_14 = max(tiny,state(k,idetcal_14) + sms(k,idetcal_14)) + !--------------------------------------------------------------------------- + ! Additional Zooplankton Quotas (3-Zooplankton Model) + !--------------------------------------------------------------------------- - calc_diss_14 = alpha_dcal_14 * calc_diss + ! Macrozooplankton (e.g., krill) C:N ratio + ! Larger organisms with potentially different stoichiometry + recipQZoo2 = Zoo2C / Zoo2N - quota_14 = PhyN / PhyC_14 - recipQuota_14 = real(one) / quota_14 + ! Microzooplankton (e.g., ciliates, heterotrophic dinoflagellates) C:N ratio + ! Smallest heterotrophs, link to microbial loop + recipQZoo3 = MicZooC / MicZooN - quota_dia_14 = DiaN / DiaC_14 - recipQuota_dia_14 = real(one) / quota_dia_14 - recipQZoo_14 = HetC_14 / HetN - end if ! ciso_organic_14 - end if ! ciso_14 - end if ! ciso + if (Grazing_detritus) then + !----------------------------------------------------------------------- + ! Fast-Sinking Detritus (Fecal Pellets) + !----------------------------------------------------------------------- + ! Large, rapidly sinking particles + ! Source: Zooplankton fecal pellets, large aggregates + ! Important for biological pump and carbon export -!------------------------------------------------------------------------------- -!> Temperature dependence of rates -!------------------------------------------------------------------------------- -!< Schourup 2013 Eq. A54 -!< Temperature dependence of metabolic rate, fT, dimensionless -!< Ae: Slope of the linear region of the Arrhenius plot -!< rTloc: Inverse of local temperature in [1/Kelvin] -!< rTref=288.15 (15 degC): Reference temperature for Arrhenius equation [1/Kelvin] -!< See Figure A1 -!< Other functions can be used for temperature dependency (Eppley 1972; Li 1980; Ahlgren 1987) + recipDet2 = DetZ2C / DetZ2N + endif + + endif - rTloc = real(one)/(Temp(k) + C2K) - arrFunc = exp(-Ae * ( rTloc - rTref)) + ! =================================================================== + ! CARBON ISOTOPE TRACERS (if enabled) + ! =================================================================== + if (ciso) then + ! 13C isotope tracers + DIC_13 = max(tiny, state(k,idic_13) + sms(k,idic_13)) + PhyC_13 = max(tiny_C, state(k,iphyc_13) + sms(k,iphyc_13)) + DetC_13 = max(tiny, state(k,idetc_13) + sms(k,idetc_13)) + HetC_13 = max(tiny, state(k,ihetc_13) + sms(k,ihetc_13)) + EOC_13 = max(tiny, state(k,idoc_13) + sms(k,idoc_13)) + DiaC_13 = max(tiny_C, state(k,idiac_13) + sms(k,idiac_13)) + PhyCalc_13 = max(tiny, state(k,iphycal_13) + sms(k,iphycal_13)) + DetCalc_13 = max(tiny, state(k,idetcal_13) + sms(k,idetcal_13)) + + ! 13C calcite dissolution with fractionation + calc_diss_13 = alpha_dcal_13 * calc_diss + + ! 13C quotas + quota_13 = PhyN / PhyC_13 ! Small phyto 13C quota + recipQuota_13 = real(one) / quota_13 + quota_dia_13 = DiaN / DiaC_13 ! Diatom 13C quota + recipQuota_dia_13 = real(one) / quota_dia_13 + recipQZoo_13 = HetC_13 / HetN ! Heterotroph 13C quota -! The following part defines the new temperature functions with are ONLY used in the 4P version with Coccos and Phaeo (new temp -! functions in 2p version would need to be tuned first) + ! 14C radiocarbon tracers (if enabled) + if (ciso_14) then + DIC_14 = max(tiny, state(k,idic_14) + sms(k,idic_14)) -! #if defined (__coccos) ! (old Cocco temperature function) -! CoccoTFunc = max(0.1419d0 * Temp(k)**0.8151d0,tiny) ! Function from Fielding 2013; is based on observational GR, but range fits best to ours -! #endif + if (ciso_organic_14) then + PhyC_14 = max(tiny_C, state(k,iphyc_14) + sms(k,iphyc_14)) + DetC_14 = max(tiny, state(k,idetc_14) + sms(k,idetc_14)) + HetC_14 = max(tiny, state(k,ihetc_14) + sms(k,ihetc_14)) + EOC_14 = max(tiny, state(k,idoc_14) + sms(k,idoc_14)) + DiaC_14 = max(tiny_C, state(k,idiac_14) + sms(k,idiac_14)) + PhyCalc_14 = max(tiny, state(k,iphycal_14) + sms(k,iphycal_14)) + DetCalc_14 = max(tiny, state(k,idetcal_14) + sms(k,idetcal_14)) + + calc_diss_14 = alpha_dcal_14 * calc_diss + + quota_14 = PhyN / PhyC_14 + recipQuota_14 = real(one) / quota_14 + quota_dia_14 = DiaN / DiaC_14 + recipQuota_dia_14 = real(one) / quota_dia_14 + recipQZoo_14 = HetC_14 / HetN + end if ! ciso_organic_14 + end if ! ciso_14 + end if ! ciso -!< New phytoplankton temperature functions -#if defined (__coccos) + !=============================================================================== + ! TEMPERATURE DEPENDENCE OF METABOLIC RATES + !=============================================================================== + ! Calculates how temperature affects biological rates using multiple + ! formulations appropriate for different organism groups. + ! + ! General Principle: + ! - Metabolic rates increase exponentially with temperature (Q10 rule) + ! - Different organisms have different thermal optima and tolerances + ! - Cold-adapted vs warm-adapted species + ! + ! Variables (Arrhenius): + ! rTloc : Inverse of local absolute temperature [K-1] + ! arrFunc : Arrhenius temperature function [-] + ! Temp(k) : Temperature at depth k [degC] + ! C2K : Celsius to Kelvin conversion (273.15) [K] + ! Ae : Activation energy parameter [K] + ! rTref : Inverse reference temperature (1/288.15 K at 15degC) [K-1] + ! + ! Alternative Formulations (commented in code): + ! - Eppley (1972): Log-linear for phytoplankton + ! - Li (1980): Parabolic curve + ! - Ahlgren (1987): Optimum curve + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Standard Arrhenius Function + !------------------------------------------------------------------------------- + ! General metabolic rate temperature dependence (Schourup 2013, Eq. A54) + ! Exponential increase with temperature (no upper thermal limit) + ! + ! Equation: + ! f(T) = exp(-Ae × (1/T - 1/Tref)) + ! + ! Where: + ! - Ae: Slope of Arrhenius plot (activation energy/gas constant) + ! - Tref: Reference temperature (typically 15degC = 288.15 K) + ! - T: Absolute temperature [K] + ! + ! Used for: Most metabolic processes without strong thermal limits + ! (e.g., remineralization, basal metabolism) + + ! Calculate inverse absolute temperature + rTloc = real(one) / (Temp(k) + C2K) + + ! Calculate Arrhenius function + arrFunc = exp(-Ae * (rTloc - rTref)) + + !------------------------------------------------------------------------------- + ! Phytoplankton-Specific Temperature Functions + !------------------------------------------------------------------------------- + ! Species-specific exponential and optimum-curve temperature responses + ! Tuned for 4-plankton functional type version (small phyto, diatoms, coccos, Phaeocystis) + ! + ! Note: New functions require calibration if adapted to 2-plankton version + !------------------------------------------------------------------------------- + + ! Old coccolithophore temperature function (commented out): + ! Power law form from Fielding (2013) based on observational growth rates + ! if (enable_coccos) then + ! CoccoTFunc = max(0.1419d0 * Temp(k)**0.8151d0, tiny) + ! endif + + if (enable_coccos) then + + !--------------------------------------------------------------------------- + ! Small Phytoplankton + !--------------------------------------------------------------------------- + ! Exponential temperature response: f(T) = exp(a + b×T) + ! Represents diverse group with broad thermal tolerance + ! Monotonic increase with temperature (no upper limit in this formulation) + + Temp_phyto = exp(ord_phy + expon_phy * Temp(k)) + VTTemp_phyto(k) = Temp_phyto ! Store for diagnostics + + !--------------------------------------------------------------------------- + ! Diatoms + !--------------------------------------------------------------------------- + ! Large phytoplankton with silica frustules + ! Exponential form with different parameters than small phyto + ! Generally favored by cooler, nutrient-rich conditions + + Temp_diatoms = exp(ord_d + expon_d * Temp(k)) + VTTemp_diatoms(k) = Temp_diatoms ! Store for diagnostics + + !--------------------------------------------------------------------------- + ! Coccolithophores + !--------------------------------------------------------------------------- + ! Calcifying phytoplankton with minimum temperature threshold + ! Cold-intolerant: minimal growth below 5degC + ! Exponential increase above threshold temperature + ! + ! Ecological rationale: Coccos typically dominate in warm, stratified waters + + if (Temp(k) < 5.0) then + ! Below threshold: minimal metabolic activity + Temp_cocco = tiny + else + ! Above threshold: exponential response + Temp_cocco = exp(ord_cocco + expon_cocco * Temp(k)) + Temp_cocco = max(Temp_cocco, tiny) ! Ensure positive values + end if + VTTemp_cocco(k) = Temp_cocco ! Store for diagnostics + + !--------------------------------------------------------------------------- + ! Phaeocystis + !--------------------------------------------------------------------------- + ! Colonial phytoplankton with bell-shaped temperature response + ! Blanchard function from Grimaud et al. (2017) + ! Has optimal temperature with decline at high and low temperatures + ! + ! Equation: f(T) = uopt × ((Tmax-T)/(Tmax-Topt))^β × exp(-β×(Topt-T)/(Tmax-Topt)) + ! + ! Where: + ! - uopt: Maximum growth rate at optimal temperature [day-1] + ! - Topt: Optimal temperature [degC] + ! - Tmax: Maximum temperature (growth = 0) [degC] + ! - β: Shape parameter (steepness of curve) [-] + ! + ! Ecological rationale: Phaeocystis blooms occur at specific temperature ranges + ! (typically cold-temperate waters, 0-10degC) + + Temp_phaeo = uopt_phaeo * ((Tmax_phaeo - Temp(k)) / (Tmax_phaeo - Topt_phaeo))**beta_phaeo & + * exp(-beta_phaeo * (Topt_phaeo - Temp(k)) / (Tmax_phaeo - Topt_phaeo)) + Temp_phaeo = max(Temp_phaeo, tiny) ! Ensure positive values + VTTemp_phaeo(k) = Temp_phaeo ! Store for diagnostics - ! Small Phytoplankton: - Temp_phyto = exp(ord_phy + expon_phy * Temp(k)) ! NEW MODIFIED - VTTemp_phyto(k) = Temp_phyto + endif - ! Diatoms: - Temp_diatoms = exp(ord_d + expon_d * Temp(k)) ! NEW MODIFIED 2 parameters in new function ordonnee and exponent - VTTemp_diatoms(k) = Temp_diatoms ! track the output here + !------------------------------------------------------------------------------- + ! Zooplankton Temperature Dependencies + !------------------------------------------------------------------------------- + ! Temperature functions for different zooplankton types with thermal limits + ! Q10 formulations: exponential increase with ~doubling per 10degC + + if (enable_3zoo2det) then + + !--------------------------------------------------------------------------- + ! Macrozooplankton (Krill) Temperature Function + !--------------------------------------------------------------------------- + ! Sigmoid function with upper thermal limit + ! Accounts for thermal stress at high temperatures + ! + ! Equation: f(T) = exp(t1/t2 - t1/T) / (1 + exp(t3/t4 - t3/T)) + ! + ! Numerator: Exponential increase with temperature + ! Denominator: Sigmoid decline at high temperatures (thermal stress) + ! + ! Ecological rationale: Macrozooplankton have defined thermal niches + ! (e.g., Antarctic krill prefer cold water, decline above ~4degC) + + arrFuncZoo2 = exp(t1_zoo2 / t2_zoo2 - t1_zoo2 * rTloc) / & + (1.0 + exp(t3_zoo2 / t4_zoo2 - t3_zoo2 * rTloc)) + + !--------------------------------------------------------------------------- + ! Q10 Temperature Coefficients + !--------------------------------------------------------------------------- + ! Q10 formulation: rate = Q10^(T/10) + ! Simple exponential increase with temperature + ! + ! Q10 values: + ! - ~1.02-1.04: Moderate temperature sensitivity (typical for metabolism) + ! - ~1.09: Higher sensitivity (respiration processes) + ! + ! Ecological interpretation: + ! - Smaller organisms (microzooplankton) often have higher Q10 + ! - Respiration Q10 > growth Q10 (maintenance costs increase faster) + + q10_mes = 1.0242**(Temp(k)) ! Mesozooplankton metabolism + q10_mic = 1.04**(Temp(k)) ! Microzooplankton metabolism + q10_mes_res = 1.0887**(Temp(k)) ! Mesozooplankton respiration + q10_mic_res = 1.0897**(Temp(k)) ! Microzooplankton respiration - ! Coccolithophores: - if (Temp(k) < 5.0) then - Temp_cocco = tiny - else - Temp_cocco = exp(ord_cocco + expon_cocco * Temp(k)) - Temp_cocco = max(Temp_cocco, tiny) - end if - VTTemp_cocco(k) = Temp_cocco - - ! Phaeocystis: - ! Blanchard function (Grimaud et al., 2017): - Temp_phaeo = uopt_phaeo * ((Tmax_phaeo-Temp(k))/(Tmax_phaeo-Topt_phaeo))**beta_phaeo * exp(-beta_phaeo * (Topt_phaeo-Temp(k))/(Tmax_phaeo-Topt_phaeo)) - Temp_phaeo = max(Temp_phaeo, tiny) - VTTemp_phaeo(k) = Temp_phaeo -#endif - -#if defined (__3Zoo2Det) - arrFuncZoo2 = exp(t1_zoo2/t2_zoo2 - t1_zoo2*rTloc)/(1 + exp(t3_zoo2/t4_zoo2 - t3_zoo2*rTloc)) ! 2Zoo - q10_mes = 1.0242**(Temp(k)) ! 3Zoo - q10_mic = 1.04**(Temp(k)) ! 3Zoo - q10_mes_res = 1.0887**(Temp(k)) ! 3Zoo - q10_mic_res = 1.0897**(Temp(k)) ! 3Zoo -#endif - -!< Silicate temperature dependence -! reminSiT = min(1.32e16 * exp(-11200.d0 * rTloc),reminSi) !! arrFunc control, reminSi=0.02d0 ! Kamatani (1982) -! reminSiT = reminSi - reminSiT = max(0.023d0 * 2.6d0**((Temp(k)-10.)/10.),reminSi) + endif -!------------------------------------------------------------------------------- -!> O2 dependence of rates -!------------------------------------------------------------------------------- -!! O2 dependency of organic matter remineralization -!! O2Func [0.0, 1.0] -!! k_o2_remin = 15.d0 mmol m-3; Table 1 in Cram 2018 cites -!! DeVries & Weber 2017 for a range of 0-30 mmol m-3 - - O2Func = 1.d0 ! in this case, remin. rates only depend on temperature - if (O2dep_remin) O2Func = O2/(k_o2_remin + O2) ! O2remin - -!< *** Light *** -!< ************* -!! Has to be calculated here already to use the 1%PAR depth. - if (k==1) then - PARave = max(tiny,SurfSR) - PAR(k) = PARave - - chl_upper = (PhyChl + DiaChl) -#if defined (__coccos) - chl_upper = chl_upper + CoccoChl + PhaeoChl -#endif - else - chl_lower = PhyChl + DiaChl -#if defined (__coccos) - chl_lower = chl_lower + CoccoChl + PhaeoChl -#endif - Chlave = (chl_upper+chl_lower)*0.5 - - kappa = k_w + a_chl * (Chlave) - kappastar = kappa / cosAI(n) - kdzLower = kdzUpper + kappastar * thick(k-1) - Lowerlight = SurfSR * exp(-kdzLower) - Lowerlight = max(tiny,Lowerlight) - PARave = Lowerlight - PAR(k) = PARave - chl_upper = chl_lower - kdzUpper = kdzLower - end if + !------------------------------------------------------------------------------- + ! Silicate Dissolution Temperature Dependence + !------------------------------------------------------------------------------- + ! Temperature effect on biogenic silica (diatom frustule) dissolution + ! Higher temperatures accelerate chemical dissolution kinetics + ! + ! Variables: + ! reminSiT : Temperature-dependent Si dissolution rate [day-1] + ! reminSi : Minimum dissolution rate [day-1] + ! + ! Exponential formulation: 2.6× increase per 10degC + ! Reference temperature: 10degC + ! + + reminSiT = max(0.023d0 * 2.6d0**((Temp(k) - 10.0) / 10.0), reminSi) + + ! Alternative Kamatani (1982) function (commented out): + ! reminSiT = min(1.32e16 * exp(-11200.d0 * rTloc), reminSi) + + !=============================================================================== + ! 2. OXYGEN DEPENDENCE OF REMINERALIZATION + !=============================================================================== + ! Calculates oxygen limitation effects on aerobic organic matter decomposition. + ! Important for oxygen minimum zones (OMZs) and suboxic/anoxic environments. + ! + ! Variables: + ! O2Func : Oxygen limitation factor [0-1, 0=anoxic, 1=oxic] + ! O2 : Dissolved oxygen concentration [mmolO2 m-3] + ! k_o2_remin : Half-saturation for O2-limited remineralization [mmolO2 m-3] + ! O2dep_remin : Flag to enable O2-dependent remineralization [logical] + ! + ! Michaelis-Menten Formulation: + ! f(O2) = O2 / (k_O2 + O2) + ! + ! Parameter Value: + ! k_o2_remin = 15 mmolO2 m-3 (half-saturation constant) + ! Range: 0-30 mmolO2 m-3 based on DeVries & Weber (2017), cited in Cram (2018) + ! + ! Ecological/Biogeochemical Significance: + ! - Aerobic respiration dominates in oxic waters (O2 > 30 mmol m-3) + ! - Suboxic/anoxic metabolism (denitrification, sulfate reduction) in OMZs + ! - Reduced remineralization efficiency in low-O2 environments + ! - Important for nutrient cycling and carbon export in OMZs + ! + ! Note: When O2 < 0.1 mmol m-3, consider switching to anaerobic pathways + ! (not implemented in this version) + !------------------------------------------------------------------------------- + + ! Default: no oxygen limitation (fully oxic conditions) + O2Func = 1.d0 + + if (O2dep_remin) then + ! Enable oxygen-dependent remineralization + ! Michaelis-Menten type limitation + ! Becomes significant when O2 < ~30 mmol m-3 + O2Func = O2 / (k_o2_remin + O2) + endif -!------------------------------------------------------------------------------- -! Depth component of Mocsy (see http://ocmip5.ipsl.jussieu.fr/mocsy/pyth.html) -!------------------------------------------------------------------------------- + !=============================================================================== + ! LIGHT AVAILABILITY CALCULATION + !=============================================================================== + ! Calculates photosynthetically available radiation (PAR) through the water + ! column using Beer-Lambert law with chlorophyll-based attenuation. + ! + ! Light Attenuation Components: + ! 1. Water attenuation (k_w): Clear water absorption and scattering + ! 2. Chlorophyll attenuation (a_chl): Phytoplankton self-shading + ! + ! Variables: + ! PARave : Average PAR at depth k [W m-2] + ! PAR(k) : Stored PAR for layer k [W m-2] + ! SurfSR : Surface solar radiation [W m-2] + ! chl_upper : Chlorophyll at upper layer boundary [mgChl m-3] + ! chl_lower : Chlorophyll at lower layer boundary [mgChl m-3] + ! Chlave : Average chlorophyll in layer [mgChl m-3] + ! kappa : Total attenuation coefficient [m-1] + ! kappastar : Angle-corrected attenuation coefficient [m-1] + ! k_w : Water attenuation coefficient [m-1] + ! a_chl : Chlorophyll-specific attenuation [(m2 mgChl-1)] + ! cosAI(n) : Cosine of solar zenith angle [-] + ! thick(k) : Layer thickness [m] + ! kdzLower : Cumulative optical depth [dimensionless] + ! kdzUpper : Cumulative optical depth at upper boundary [dimensionless] + ! + ! Beer-Lambert Law: + ! I(z) = I0 × exp(-κ×z) + ! where κ = k_w + a_chl×[Chl] + ! + ! Self-Shading Effect: + ! - High chlorophyll reduces light penetration + ! - Limits bloom depth and total biomass + ! - Creates trade-off between cell density and light availability + ! + ! Ecological Significance: + ! - Defines euphotic zone depth (1% surface light) + ! - Controls vertical distribution of primary production + ! - Self-shading is key negative feedback on bloom magnitude + !------------------------------------------------------------------------------- + + if (k == 1) then + + !=========================================================================== + ! SURFACE LAYER INITIALIZATION + !=========================================================================== + ! Surface layer receives full incident solar radiation + ! Initialize chlorophyll and optical depth for subsurface calculations + !--------------------------------------------------------------------------- + + ! Surface PAR equals incident solar radiation + PARave = max(tiny, SurfSR) + PAR(k) = PARave + + ! Initialize surface chlorophyll for attenuation calculation + ! Sum all phytoplankton functional types + chl_upper = (PhyChl + DiaChl) ! Base groups (always present) + + if (enable_coccos) then + ! Add coccolithophores and Phaeocystis if enabled + chl_upper = chl_upper + CoccoChl + PhaeoChl + endif + + else + + !=========================================================================== + ! SUBSURFACE LIGHT ATTENUATION + !=========================================================================== + ! Calculate light penetration through water column using Beer-Lambert law + ! with chlorophyll-based self-shading + !--------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Calculate Current Layer Chlorophyll + !--------------------------------------------------------------------------- + + chl_lower = PhyChl + DiaChl + + if (enable_coccos) then + chl_lower = chl_lower + CoccoChl + PhaeoChl + endif + + ! Average chlorophyll between layer boundaries + ! Assumes linear interpolation within layer + Chlave = (chl_upper + chl_lower) * 0.5 + + !--------------------------------------------------------------------------- + ! Calculate Attenuation Coefficient + !--------------------------------------------------------------------------- + + ! Total attenuation coefficient + ! k_w: Clear water absorption (~0.04 m-1 in ocean) + ! a_chl: Chlorophyll-specific attenuation (~0.03-0.05 m2 mgChl-1) + kappa = k_w + a_chl * Chlave + + ! Correct for solar zenith angle (path length through water) + ! Lower sun angle -> longer path -> more attenuation + kappastar = kappa / cosAI(n) + + ! Cumulative optical depth (dimensionless) + ! Integrates attenuation over depth + kdzLower = kdzUpper + kappastar * thick(k - 1) + + !--------------------------------------------------------------------------- + ! Calculate Light at Layer + !--------------------------------------------------------------------------- + + ! Beer-Lambert law: exponential decay with optical depth + Lowerlight = SurfSR * exp(-kdzLower) + Lowerlight = max(tiny, Lowerlight) ! Ensure positive value + + ! Store PAR for this layer + PARave = Lowerlight + PAR(k) = PARave + + ! Update variables for next layer + chl_upper = chl_lower ! Current lower becomes next upper + kdzUpper = kdzLower ! Current cumulative depth for next layer + + end if -! Calculate the carbonate system for the very first time step of the first year of the run - !if (mocsy_restart==.false. .and. recom_istep==1) then ! r_restart is defined in gen_modules_clock in fesom_cpl. + !=============================================================================== + ! MARINE CARBONATE SYSTEM CALCULATIONS (MOCSY) + !=============================================================================== + ! Calculates complete marine carbonate chemistry using the MOCSY package + ! (Marine Ocean Carbon System Solver). + ! + ! This module calculates: + ! 1. Carbonate system speciation (CO2, HCO3-, CO3--) + ! 2. pH and partial pressure of CO2 (pCO2) + ! 3. Carbonate saturation states (Omega for calcite and aragonite) + ! 4. Solubility products and seawater properties + ! + ! Key Features: + ! - Adaptive update frequency (depth-dependent) + ! - Euphotic zone: Weekly updates (high biological activity) + ! - Deep waters: Monthly updates (slower changes) + ! - Complete thermodynamic consistency + ! - Pressure correction for depth + ! + ! MOCSY Package: + ! - Developed for OCMIP5 project + ! - Solves carbonate system from two known parameters + ! - Accounts for temperature, salinity, pressure effects + ! - Multiple equilibrium constant formulations available + ! + ! Update Strategy: + ! - Initialize on first time step (mstep = 1) + ! - Euphotic zone (PAR > 1% surface): 7-day updates + ! - Deep waters (PAR < 1% surface): 30-day updates + ! - Rationale: Biological activity drives rapid changes near surface + ! + ! Input Parameters: + ! - Temperature, Salinity (from physical model) + ! - DIC, Alkalinity (from biogeochemical tracers) + ! - Silicate, Phosphate (affects equilibrium constants) + ! - Atmospheric pressure, Latitude (for gas exchange) + ! + ! Output Variables: + ! - pH, pCO2, fCO2 (CO2 partial and fugacity) + ! - CO2, HCO3-, CO3-- (carbonate species concentrations) + ! - OmegaC, OmegaA (calcite and aragonite saturation) + ! - Solubility products, seawater density + ! + ! Ecological/Biogeochemical Significance: + ! - Controls CO2 uptake/release (air-sea exchange) + ! - Regulates calcification and dissolution rates + ! - Affects phytoplankton carbon acquisition + ! - Critical for ocean acidification studies + ! + ! References: + ! - MOCSY: http://ocmip5.ipsl.jussieu.fr/mocsy/ + ! - Orr & Epitalon (2015) - MOCSY 2.0 user guide + !=============================================================================== + + !=============================================================================== + ! PREPARATION AND INITIALIZATION + !=============================================================================== + ! Prepares input data and initializes carbonate system on first time step. + ! + ! Variables: + ! dpos(1) : Depth for pressure calculations [m, positive down] + ! zF(k) : Model depth coordinate [m, negative down] + ! mstep : Model time step counter [-] + ! k : Vertical layer index [-] + ! + ! Input Arrays for MOCSY: + ! REcoM_T_depth : Temperature [degC, potential temperature] + ! REcoM_S_depth : Salinity [psu, practical salinity] + ! REcoM_Alk_depth : Total alkalinity [mol m-3] + ! REcoM_DIC_depth : Dissolved inorganic carbon [mol m-3] + ! REcoM_Si_depth : Silicate concentration [mol m-3] + ! REcoM_Phos_depth : Phosphate concentration [mol m-3] + ! Patm_depth : Atmospheric pressure [atm] + ! Latd : Latitude [degrees] + ! Nmocsy : Number of points (1 for single depth) + ! + ! Note: Depth convention conversion required (model uses negative depths) + !------------------------------------------------------------------------------- + + ! Convert model depth coordinate to positive depth for MOCSY + ! Model convention: zF(k) is negative (e.g., -100 m) + ! MOCSY convention: depth is positive (e.g., 100 m) dpos(1) = -zF(k) - if (mstep==1) then - call vars_sprac(ph_depth, pco2_depth, fco2_depth, co2_depth, hco3_depth, co3_depth, OmegaA_depth, OmegaC_depth, kspc_depth, BetaD_depth, & - rhoSW_depth, p_depth, tempis_depth, & - REcoM_T_depth, REcoM_S_depth, REcoM_Alk_depth, REcoM_DIC_depth, REcoM_Si_depth, REcoM_Phos_depth, Patm_depth, dpos, Latd, Nmocsy, & - optCON='mol/m3', optT='Tpot ', optP='m ', optB='u74', optK1K2='l ', optKf='dg', optGAS='Pinsitu', optS='Sprc') + + !=============================================================================== + ! INITIAL CARBONATE SYSTEM CALCULATION + !=============================================================================== + ! Calculates complete carbonate system on first model time step. + ! Provides initial conditions for all carbonate chemistry variables. + ! + ! Output Variables (from MOCSY): + ! ph_depth(1) : pH on total scale [-] + ! pco2_depth(1) : Partial pressure of CO2 [μatm] + ! fco2_depth(1) : Fugacity of CO2 [μatm] + ! co2_depth(1) : Dissolved CO2 concentration [mol m-3] + ! hco3_depth(1) : Bicarbonate concentration [mol m-3] + ! co3_depth(1) : Carbonate ion concentration [mol m-3] + ! OmegaA_depth(1) : Aragonite saturation state [-] + ! OmegaC_depth(1) : Calcite saturation state [-] + ! kspc_depth(1) : Calcite solubility product [mol2 kg-2] + ! BetaD_depth(1) : Revelle factor (buffer capacity) [-] + ! rhoSW_depth(1) : Seawater density [kg m-3] + ! p_depth(1) : Pressure [bar] + ! tempis_depth(1) : In situ temperature [degC] + ! + ! Water Column Storage: + ! CO2_watercolumn(k) : Stored CO2 for biological calculations [mol m-3] + ! pH_watercolumn(k) : Stored pH [-] + ! pCO2_watercolumn(k) : Stored pCO2 [μatm] + ! HCO3_watercolumn(k) : Stored bicarbonate [mol m-3] + ! CO3_watercolumn(k) : Stored carbonate [mol m-3] + ! OmegaC_watercolumn(k) : Stored calcite saturation [-] + ! kspc_watercolumn(k) : Stored solubility product [mol2 kg-2] + ! rhoSW_watercolumn(k) : Stored seawater density [kg m-3] + ! + ! MOCSY Options: + ! optCON='mol/m3' : Concentration units (mol/m3) + ! optT='Tpot ' : Temperature is potential temperature + ! optP='m ' : Pressure given as depth in meters + ! optB='u74' : Boron:Salinity ratio from Uppström (1974) + ! optK1K2='l ' : Carbonic acid constants from Lueker et al. (2000) + ! optKf='dg' : HF constant from Dickson & Goyet (1994) + ! optGAS='Pinsitu' : Pressure is in situ (accounts for depth) + ! optS='Sprc' : Salinity on practical scale + !------------------------------------------------------------------------------- + + if (mstep == 1) then + + ! Call MOCSY to solve carbonate system + ! Uses DIC and Alkalinity as input pair (most common in ocean models) + call vars_sprac(ph_depth, pco2_depth, fco2_depth, co2_depth, hco3_depth, co3_depth, & + OmegaA_depth, OmegaC_depth, kspc_depth, BetaD_depth, & + rhoSW_depth, p_depth, tempis_depth, & + REcoM_T_depth, REcoM_S_depth, REcoM_Alk_depth, REcoM_DIC_depth, & + REcoM_Si_depth, REcoM_Phos_depth, Patm_depth, dpos, Latd, Nmocsy, & + optCON='mol/m3', optT='Tpot ', optP='m ', optB='u74', & + optK1K2='l ', optKf='dg', optGAS='Pinsitu', optS='Sprc') + + ! Store results in water column arrays for use in biogeochemical calculations CO2_watercolumn(k) = co2_depth(1) pH_watercolumn(k) = ph_depth(1) pCO2_watercolumn(k) = pco2_depth(1) @@ -439,18 +1499,72 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & OmegaC_watercolumn(k) = OmegaC_depth(1) kspc_watercolumn(k) = kspc_depth(1) rhoSW_watercolumn(k) = rhoSW_depth(1) - endif - -!! Calculate carbonate system every 7 days for depths < 1%PAR, and every 30 days for the depths below. - mocsy_step_per_day = 1/dt_b ! NEW ms: time steps per day in recom -> is that correct? Not necessary to define in namelist? - logfile_outfreq_7 = mocsy_step_per_day*7 - logfile_outfreq_30 = mocsy_step_per_day*30 - - if (PARave > 0.01*SurfSR .and. mod(mstep,logfile_outfreq_7)==0) then - call vars_sprac(ph_depth, pco2_depth, fco2_depth, co2_depth, hco3_depth, co3_depth, OmegaA_depth, OmegaC_depth, kspc_depth, BetaD_depth, & - rhoSW_depth, p_depth, tempis_depth, & - REcoM_T_depth, REcoM_S_depth, REcoM_Alk_depth, REcoM_DIC_depth, REcoM_Si_depth, REcoM_Phos_depth, Patm_depth, dpos, Latd, Nmocsy, & - optCON='mol/m3', optT='Tpot ', optP='m ', optB='u74', optK1K2='l ', optKf='dg', optGAS='Pinsitu', optS='Sprc') + + endif + + !=============================================================================== + ! ADAPTIVE CARBONATE SYSTEM UPDATE FREQUENCY + !=============================================================================== + ! Determines how often to recalculate carbonate system based on depth. + ! More frequent updates where biological activity drives rapid changes. + ! + ! Variables: + ! mocsy_step_per_day : Number of model time steps per day [-] + ! dt_b : Model time step [days] + ! logfile_outfreq_7 : Number of steps in 7 days [-] + ! logfile_outfreq_30 : Number of steps in 30 days [-] + ! PARave : Average photosynthetically active radiation [W m-2] + ! SurfSR : Surface solar radiation [W m-2] + ! + ! Update Strategy: + ! - Euphotic zone (PAR > 1% surface): 7-day updates + ! * High photosynthesis rates alter DIC and pH rapidly + ! * Important for accurate phytoplankton CO2 responses + ! - Deep waters (PAR < 1% surface): 30-day updates + ! * Slower changes dominated by remineralization and mixing + ! * Reduces computational cost while maintaining accuracy + ! + ! Computational Cost Considerations: + ! - Carbonate system solving is computationally expensive + ! - Adaptive frequency balances accuracy and performance + ! - Typical speedup: 4× faster than daily updates everywhere + !------------------------------------------------------------------------------- + + ! Calculate update frequencies based on model time step + mocsy_step_per_day = 1.0 / dt_b + logfile_outfreq_7 = mocsy_step_per_day * 7.0 ! Steps in 7 days + logfile_outfreq_30 = mocsy_step_per_day * 30.0 ! Steps in 30 days + + !=============================================================================== + ! EUPHOTIC ZONE UPDATES (WEEKLY) + !=============================================================================== + ! Frequent updates in sunlit surface waters where biological activity is high. + ! Euphotic zone defined as PAR > 1% of surface irradiance. + ! + ! Biological Drivers: + ! - Photosynthesis removes DIC, increases pH + ! - Respiration/remineralization adds DIC, decreases pH + ! - Calcification removes alkalinity + ! - Rapid daily and seasonal cycles + ! + ! Why 7-day updates? + ! - Captures weekly-scale biological dynamics + ! - Adequate for phytoplankton bloom progression + ! - Reasonable computational cost + !------------------------------------------------------------------------------- + + if (PARave > 0.01 * SurfSR .and. mod(mstep, logfile_outfreq_7) == 0) then + + ! Weekly updates in euphotic zone (high biological activity) + call vars_sprac(ph_depth, pco2_depth, fco2_depth, co2_depth, hco3_depth, co3_depth, & + OmegaA_depth, OmegaC_depth, kspc_depth, BetaD_depth, & + rhoSW_depth, p_depth, tempis_depth, & + REcoM_T_depth, REcoM_S_depth, REcoM_Alk_depth, REcoM_DIC_depth, & + REcoM_Si_depth, REcoM_Phos_depth, Patm_depth, dpos, Latd, Nmocsy, & + optCON='mol/m3', optT='Tpot ', optP='m ', optB='u74', & + optK1K2='l ', optKf='dg', optGAS='Pinsitu', optS='Sprc') + + ! Update water column arrays with new carbonate chemistry CO2_watercolumn(k) = co2_depth(1) pH_watercolumn(k) = ph_depth(1) pCO2_watercolumn(k) = pco2_depth(1) @@ -460,11 +1574,39 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & kspc_watercolumn(k) = kspc_depth(1) rhoSW_watercolumn(k) = rhoSW_depth(1) - elseif (PARave < 0.01*SurfSR .and. mod(mstep,logfile_outfreq_30)==0) then - call vars_sprac(ph_depth, pco2_depth, fco2_depth, co2_depth, hco3_depth, co3_depth, OmegaA_depth, OmegaC_depth, kspc_depth, BetaD_depth, & - rhoSW_depth, p_depth, tempis_depth, & - REcoM_T_depth, REcoM_S_depth, REcoM_Alk_depth, REcoM_DIC_depth, REcoM_Si_depth, REcoM_Phos_depth, Patm_depth, dpos, Latd, Nmocsy, & - optCON='mol/m3', optT='Tpot ', optP='m ', optB='u74', optK1K2='l ', optKf='dg', optGAS='Pinsitu', optS='Sprc') + !=============================================================================== + ! DEEP WATER UPDATES (MONTHLY) + !=============================================================================== + ! Less frequent updates in dark deep waters where changes are slower. + ! Deep waters defined as PAR < 1% of surface irradiance. + ! + ! Physical/Chemical Drivers: + ! - Slow remineralization of sinking organic matter + ! - Calcite dissolution (below saturation horizon) + ! - Mixing and advection + ! - No photosynthesis to drive rapid changes + ! + ! Why 30-day updates? + ! - Changes occur on monthly to seasonal timescales + ! - Dominated by physical transport and slow remineralization + ! - Significant computational savings with minimal accuracy loss + ! + ! Note: Below permanent pycnocline, even longer update intervals + ! could be justified (e.g., seasonal) + !------------------------------------------------------------------------------- + + elseif (PARave < 0.01 * SurfSR .and. mod(mstep, logfile_outfreq_30) == 0) then + + ! Monthly updates in deep waters (low biological activity) + call vars_sprac(ph_depth, pco2_depth, fco2_depth, co2_depth, hco3_depth, co3_depth, & + OmegaA_depth, OmegaC_depth, kspc_depth, BetaD_depth, & + rhoSW_depth, p_depth, tempis_depth, & + REcoM_T_depth, REcoM_S_depth, REcoM_Alk_depth, REcoM_DIC_depth, & + REcoM_Si_depth, REcoM_Phos_depth, Patm_depth, dpos, Latd, Nmocsy, & + optCON='mol/m3', optT='Tpot ', optP='m ', optB='u74', & + optK1K2='l ', optKf='dg', optGAS='Pinsitu', optS='Sprc') + + ! Update water column arrays with new carbonate chemistry CO2_watercolumn(k) = co2_depth(1) pH_watercolumn(k) = ph_depth(1) pCO2_watercolumn(k) = pco2_depth(1) @@ -473,887 +1615,2377 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & OmegaC_watercolumn(k) = OmegaC_depth(1) kspc_watercolumn(k) = kspc_depth(1) rhoSW_watercolumn(k) = rhoSW_depth(1) + endif -!------------------------------------------------------------------------------- -! CO2 dependence of rates ! NEW CO2 -!------------------------------------------------------------------------------- -! Convert pH to proton concentration - h_depth(1) = 10.**(-ph_depth(1)) -! Conversion factor Cunits not needed for [H], because in model and function derived from pH and therefore in [mol/L] + !=============================================================================== + ! CO2 EFFECTS AND CALCITE DISSOLUTION + !=============================================================================== + ! Simulates ocean acidification impacts on phytoplankton growth and calcium + ! carbonate dissolution in the water column. + ! + ! This module calculates: + ! 1. CO2/pH effects on phytoplankton photosynthesis (species-specific) + ! 2. Calcite dissolution rates (saturation-state or depth-dependent) + ! + ! Key Features: + ! - Multi-component CO2 response (HCO3- benefit, CO2 toxicity, pH stress) + ! - Species-specific sensitivities to ocean acidification + ! - Two dissolution mechanisms (thermodynamic vs empirical) + ! - Velocity-dependent dissolution for sinking particles + ! + ! CO2 Response Function: + ! f(CO2) = a×[HCO3-]/(b+[HCO3-]) - exp(-c×[CO2]) - d×[H+] + ! + ! Three competing effects: + ! 1. HCO3- availability (substrate for carbon fixation) - POSITIVE + ! 2. High CO2 concentration (toxicity/stress) - NEGATIVE + ! 3. Low pH (proton stress on enzymes) - NEGATIVE + ! + ! Phytoplankton Groups: + ! - Small phytoplankton: Moderate sensitivity + ! - Diatoms: Generally tolerant + ! - Coccolithophores: High sensitivity (calcifying organisms) + ! - Phaeocystis: Variable sensitivity + ! + ! Dissolution Mechanisms: + ! A) Saturation-state dependent (OmegaC_diss = TRUE) + ! - Thermodynamically based on carbonate saturation + ! - Aumont et al. (2015) parameterization + ! B) Depth-dependent (OmegaC_diss = FALSE) + ! - Empirical dissolution rates scaled by sinking velocity + ! + ! Ecological/Biogeochemical Significance: + ! - Ocean acidification reduces calcification and alters competitive balance + ! - Dissolution releases CO2 and alkalinity back to seawater + ! - Critical for understanding climate change impacts on marine ecosystems + ! + ! References: + ! - Aumont et al. (2015) - Saturation-state dependent dissolution + ! - Schourup-Kristensen et al. (2013) - REcoM model description + !=============================================================================== + + + !=============================================================================== + ! CO2 EFFECTS ON PHYTOPLANKTON GROWTH + !=============================================================================== + ! Calculates how ocean acidification (elevated CO2, reduced pH) affects + ! phytoplankton photosynthesis rates through a complex response function. + ! + ! Response Function Components: + ! 1. Michaelis-Menten HCO3- uptake (carbonate benefit) + ! 2. Exponential CO2 inhibition (high CO2 toxicity) + ! 3. Linear H+ inhibition (pH stress on cellular processes) + ! + ! Variables (Small Phytoplankton): + ! PhyCO2 : CO2 effect modifier for small phyto [0-3] + ! a_co2_phy : HCO3- uptake parameter [-] + ! b_co2_phy : HCO3- half-saturation [mmolC m-3] + ! c_co2_phy : CO2 inhibition coefficient [m3 mmolC-1] + ! d_co2_phy : H+ stress coefficient [L mol-1] + ! HCO3_watercolumn(k) : Bicarbonate concentration [mmolC m-3] + ! CO2_watercolumn(k) : Dissolved CO2 concentration [mmolC m-3] + ! pH_watercolumn(k) : Water column pH [-] + ! Cunits : Concentration units conversion factor [-] + ! h_depth(1) : Proton concentration at surface [mol L-1] + ! VTPhyCO2(k) : Diagnostic output for CO2 effect [-] + ! + ! Constraints: + ! - Upper limit: 3× enhancement (April 2022 modification) + ! - Lower limit: 0 (no negative values, July 2022 modification) + ! + ! Note: Similar calculations for diatoms, coccolithophores, and Phaeocystis + ! with species-specific parameters reflecting different sensitivities + !------------------------------------------------------------------------------- + + ! Convert pH to proton concentration for calculations + ! pH = -log10[H+], therefore [H+] = 10^(-pH) + h_depth(1) = 10.d0**(-ph_depth(1)) + + ! Note: Cunits conversion not needed for [H+] because pH is already in mol/L + + !------------------------------------------------------------------------------- + ! Small Phytoplankton CO2 Response + !------------------------------------------------------------------------------- + ! Moderate sensitivity to ocean acidification + ! Represents diverse group with varied carbon acquisition strategies -! Small phytoplankton PhyCO2 = a_co2_phy * HCO3_watercolumn(k) * Cunits / (b_co2_phy + HCO3_watercolumn(k) * Cunits) & - - exp(-c_co2_phy * CO2_watercolumn(k) * Cunits) - d_co2_phy * 10.**(-pH_watercolumn(k)) - PhyCO2 = min(PhyCO2,3.d0) ! April 2022: limitation to 3 - PhyCO2 = max(0.d0,PhyCO2) ! July 2022: limitation to zero + - exp(-c_co2_phy * CO2_watercolumn(k) * Cunits) & + - d_co2_phy * 10.d0**(-pH_watercolumn(k)) + + ! Apply empirical constraints based on observations + PhyCO2 = min(PhyCO2, 3.d0) ! Upper limit: maximum 3x enhancement + PhyCO2 = max(0.d0, PhyCO2) ! Lower limit: prevent negative growth response + + ! Store for diagnostics and output VTPhyCO2(k) = PhyCO2 -! Diatoms + !------------------------------------------------------------------------------- + ! Diatoms CO2 Response + !------------------------------------------------------------------------------- + ! Generally tolerant to elevated CO2 + ! Efficient carbon concentrating mechanisms (CCMs) + DiaCO2 = a_co2_dia * HCO3_watercolumn(k) * Cunits / (b_co2_dia + HCO3_watercolumn(k) * Cunits) & - - exp(-c_co2_dia * CO2_watercolumn(k) * Cunits) - d_co2_dia * 10.**(-pH_watercolumn(k)) - DiaCO2 = min(DiaCO2,3.d0) ! April 2022: limitation to 3 - DiaCO2 = max(0.d0,DiaCO2) ! July 2022: limitation to zero + - exp(-c_co2_dia * CO2_watercolumn(k) * Cunits) & + - d_co2_dia * 10.d0**(-pH_watercolumn(k)) + + ! Apply constraints + DiaCO2 = min(DiaCO2, 3.d0) ! Upper limit: 3x enhancement + DiaCO2 = max(0.d0, DiaCO2) ! Lower limit: no negative effect + + ! Store for diagnostics VTDiaCO2(k) = DiaCO2 -#if defined (__coccos) -! Coccolithophores - CoccoCO2 = a_co2_cocco * HCO3_watercolumn(k) * Cunits / (b_co2_cocco + HCO3_watercolumn(k) * Cunits) & - - exp(-c_co2_cocco * CO2_watercolumn(k) * Cunits) - d_co2_cocco * 10.**(-pH_watercolumn(k)) - CoccoCO2 = min(CoccoCO2,3.d0) ! April 2022: limitation to 3 - CoccoCO2 = max(0.d0,CoccoCO2) ! July 2022: limitation to zero - VTCoccoCO2(k) = CoccoCO2 -! Phaeocystis - PhaeoCO2 = a_co2_phaeo * HCO3_watercolumn(k) * Cunits / (b_co2_phaeo + HCO3_watercolumn(k) * Cunits) & - - exp(-c_co2_phaeo * CO2_watercolumn(k) * Cunits) - d_co2_phaeo * 10.**(-pH_watercolumn(k)) - PhaeoCO2 = min(PHaeoCO2,3.d0) ! April 2022: limitation to 3 - PhaeoCO2 = max(0.d0,PhaeoCO2) ! July 2022: limitation to zero - VTPhaeoCO2(k) = PhaeoCO2 -#endif - -!------------------------------------------------------------------------------ -! Calcite dissolution dependent on OmegaC ! DISS -!------------------------------------------------------------------------------ - Sink_Vel = Vdet_a* abs(zF(k)) + Vdet - - if (OmegaC_diss) then ! Calcdiss dependent on carbonate saturation - Ca = (0.02128d0/40.078d0) * Sali_depth(k)/1.80655d0 ! Calcium ion concentration [mol/kg], function from varsolver.f90 - CO3_sat = (kspc_watercolumn(k) / Ca) * rhoSW_watercolumn(k) ! Saturated carbonate ion concentration, converted to [mol/m3] - calc_diss = calc_diss_omegac * max(zero,(1-(CO3_watercolumn(k)/CO3_sat)))**(calc_diss_exp) ! Dissolution rate scaled by carbonate ratio, after Aumont et al. 2015 -#if defined (__3Zoo2Det) - calc_diss2 = calc_diss -#endif - calc_diss_ben = calc_diss - else ! Calcdiss dependent on depth - - calc_diss = calc_diss_rate * Sink_Vel/20.d0 ! Dissolution rate of CaCO3 scaled by the sinking velocity at the current depth -#if defined (__3Zoo2Det) -! calc_diss2 = calc_diss_rate2 ! Dissolution rate of CaCO3 scaled by the sinking velocity at the current depth seczoo - calc_diss2 = calc_diss_rate2* Sink_Vel/20.d0 -#endif - calc_diss_ben = calc_diss_rate * Sink_Vel/20.d0 ! DISS added the variable calc_diss_ben to keep the calcite dissolution in the benthos with the old formulation + if (enable_coccos) then + + !--------------------------------------------------------------------------- + ! Coccolithophores CO2 Response + !--------------------------------------------------------------------------- + ! Calcifying phytoplankton - highly sensitive to ocean acidification + ! Both photosynthesis and calcification affected by carbonate chemistry + ! May be disadvantaged under future high-CO2 conditions + + CoccoCO2 = a_co2_cocco * HCO3_watercolumn(k) * Cunits / (b_co2_cocco + HCO3_watercolumn(k) * Cunits) & + - exp(-c_co2_cocco * CO2_watercolumn(k) * Cunits) & + - d_co2_cocco * 10.d0**(-pH_watercolumn(k)) + + ! Apply constraints + CoccoCO2 = min(CoccoCO2, 3.d0) ! Upper limit: 3x enhancement + CoccoCO2 = max(0.d0, CoccoCO2) ! Lower limit: no negative effect + + ! Store for diagnostics + VTCoccoCO2(k) = CoccoCO2 + + !--------------------------------------------------------------------------- + ! Phaeocystis CO2 Response + !--------------------------------------------------------------------------- + ! Colonial phytoplankton with variable CO2 sensitivity + ! Response may depend on bloom stage and environmental conditions + + PhaeoCO2 = a_co2_phaeo * HCO3_watercolumn(k) * Cunits / (b_co2_phaeo + HCO3_watercolumn(k) * Cunits) & + - exp(-c_co2_phaeo * CO2_watercolumn(k) * Cunits) & + - d_co2_phaeo * 10.d0**(-pH_watercolumn(k)) + + ! Apply constraints + PhaeoCO2 = min(PhaeoCO2, 3.d0) ! Upper limit: 3× enhancement + PhaeoCO2 = max(0.d0, PhaeoCO2) ! Lower limit: no negative effect + + ! Store for diagnostics + VTPhaeoCO2(k) = PhaeoCO2 + endif -!------------------------------------------------------------------------------- -!> Photosynthesis section, light parameters and rates -!------------------------------------------------------------------------------- -!< Schourup 2013 Appendix A6.2 -!< Intracellular regulation of C uptake -!< qlimitFac, qlimitFacTmp: Factor that regulates photosynthesis -!< NMinSlope: 50.d0 -!< NCmin: 0.04d0 -!< quota: PhyN/PhyC -!< qlimitFac [0.0, 1.0] -!< if quota < NCmin qlimitFac=0 -!< if quota > ≈ 9 * NCmin qlimitFac=1 -!< P_cm: 3.0d0 [1/day], Rate of C-specific photosynthesis - -!< pMax = The carbon-specific, light-saturated rate of photosynthesis [day^-1] -!< Nutrient limited environment -!< Small pyhtoplankton is limited by iron and nitrogen -!< Diatoms are additionally limited by silicon - -!< *** Small phytoplankton *** -!< *************************** - qlimitFac = recom_limiter(NMinSlope, NCmin, quota) ! Eqn A55 - feLimitFac = Fe/(k_Fe + Fe) ! Use Michaelis-Menten kinetics - qlimitFac = min(qlimitFac, feLimitFac) ! Liebig law of the minimum - pMax = P_cm * qlimitFac * arrFunc ! Maximum value of C-specific rate of photosynthesis - -#if defined (__coccos) -! for 4p version which contains new Temperature functions from Hannah - pMax = qlimitFac * Temp_phyto ! Maximum value of C-specific rate of photosynthesis -#endif - -!< *** Diatoms *** -!< *************** - qlimitFac = recom_limiter(NMinSlope, NCmin_d, quota_dia) + + !=============================================================================== + ! CALCITE DISSOLUTION + !=============================================================================== + ! Calculates dissolution rates of calcium carbonate (CaCO3) in seawater. + ! Dissolution depends on carbonate saturation state or depth (two modes). + ! + ! Carbonate Saturation State (Omega): + ! Ω = [CO3²⁻] / [CO3²⁻]sat + ! - Ω > 1: Supersaturated (favors precipitation, slow dissolution) + ! - Ω < 1: Undersaturated (favors dissolution) + ! + ! Variables (Saturation-dependent mode): + ! calc_diss : Primary detritus dissolution rate [day-1] + ! calc_diss2 : Secondary detritus dissolution rate [day-1] + ! calc_diss_ben : Benthic dissolution rate [day-1] + ! calc_diss_omegac : Base dissolution rate coefficient [day-1] + ! calc_diss_exp : Dissolution order exponent [-] + ! Ca : Calcium ion concentration [mol kg-1] + ! CO3_sat : Saturated carbonate concentration [mol m-3] + ! CO3_watercolumn(k) : Actual carbonate concentration [mol m-3] + ! kspc_watercolumn(k) : Solubility product for calcite [mol2 kg-2] + ! rhoSW_watercolumn(k): Seawater density [kg m-3] + ! Sali_depth(k) : Salinity [psu] + ! + ! Variables (Depth-dependent mode): + ! calc_diss_rate : Primary dissolution rate constant [day-1] + ! calc_diss_rate2 : Secondary dissolution rate constant [day-1] + ! Sink_Vel : Particle sinking velocity [m day-1] + ! Vdet_a : Depth-dependent sinking coefficient [day-1] + ! Vdet : Base sinking velocity [m day-1] + ! zF(k) : Depth at layer k [m] + ! + ! Note: Dissolution releases CO2 and alkalinity, affecting carbonate chemistry + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Calculate Sinking Velocity + !------------------------------------------------------------------------------- + ! Sinking velocity increases with depth (particle compaction, reduced drag) + + Sink_Vel = Vdet_a * abs(zF(k)) + Vdet + + if (OmegaC_diss) then + + !=========================================================================== + ! SATURATION-STATE DEPENDENT DISSOLUTION + !=========================================================================== + ! Thermodynamically-based dissolution using carbonate saturation state + ! Based on Aumont et al. (2015) parameterization + !--------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Calculate Calcium Ion Concentration + !--------------------------------------------------------------------------- + ! Conservative element: scales linearly with salinity + ! Reference: 0.02128 mol/kg at salinity 35 psu + + Ca = (0.02128d0 / 40.078d0) * Sali_depth(k) / 1.80655d0 + + !--------------------------------------------------------------------------- + ! Calculate Saturated Carbonate Ion Concentration + !--------------------------------------------------------------------------- + ! [CO3²⁻]sat = Ksp / [Ca²+] + ! Where Ksp is the solubility product for calcite + ! Convert from mol/kg to mol/m3 using seawater density + + CO3_sat = (kspc_watercolumn(k) / Ca) * rhoSW_watercolumn(k) + + !--------------------------------------------------------------------------- + ! Calculate Dissolution Rate + !--------------------------------------------------------------------------- + ! Dissolution increases with undersaturation (Ω < 1) + ! Power law relationship: rate ∝ (1 - Ω)^n + ! Exponent (n) typically 1-4 depending on calcite form + + calc_diss = calc_diss_omegac * max(zero, (1.0 - (CO3_watercolumn(k) / CO3_sat)))**(calc_diss_exp) + + ! Apply same dissolution rate to all detritus types + ! Assumes similar calcite characteristics regardless of source + if (enable_3zoo2det) then + calc_diss2 = calc_diss ! Fast-sinking detritus + endif + calc_diss_ben = calc_diss ! Benthic detritus + + else + + !=========================================================================== + ! DEPTH-DEPENDENT DISSOLUTION + !=========================================================================== + ! Empirical dissolution rates scaled by sinking velocity + ! Simpler approach when carbonate chemistry is not fully resolved + !--------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Primary Detritus Dissolution + !--------------------------------------------------------------------------- + ! Dissolution rate scales with sinking velocity + ! Faster sinking -> less time for dissolution per unit depth + ! Reference velocity: 20 m/day + + calc_diss = calc_diss_rate * Sink_Vel / 20.d0 + + if (enable_3zoo2det) then + !----------------------------------------------------------------------- + ! Secondary Detritus Dissolution (Fast-sinking) + !----------------------------------------------------------------------- + ! May have different dissolution characteristics than primary detritus + ! (e.g., more compact, different organic coating) + + calc_diss2 = calc_diss_rate2 * Sink_Vel / 20.d0 + endif + + !--------------------------------------------------------------------------- + ! Benthic Dissolution + !--------------------------------------------------------------------------- + ! Calcite reaching the sediment interface + ! Uses same rate as primary detritus + + calc_diss_ben = calc_diss_rate * Sink_Vel / 20.d0 + + endif + + !=============================================================================== + ! PHOTOSYNTHESIS LIMITATION FACTORS + !=============================================================================== + ! Calculates how nutrients, iron, and temperature limit maximum photosynthesis + ! rates using intracellular quota-based regulation (Droop model). + ! + ! Limitation Approach: + ! - Intracellular regulation through N:C, Si:C quotas + ! - Michaelis-Menten iron limitation + ! - Liebig's law: most limiting factor controls growth + ! + ! Variables (Small Phytoplankton): + ! qlimitFac : Combined nutrient limitation factor [0-1, 0=limited, 1=replete] + ! feLimitFac : Iron limitation factor [0-1] + ! quota : Phytoplankton N:C ratio [mmolN mmolC-1] + ! NCmin : Minimum N:C ratio (subsistence quota) [mmolN mmolC-1] + ! NMinSlope : Steepness of limitation curve [-] + ! Fe : Dissolved iron concentration [mmolFe m-3] + ! k_Fe : Half-saturation for Fe uptake [mmolFe m-3] + ! pMax : Maximum photosynthesis rate [day-1] + ! P_cm : Maximum rate constant [day-1] + ! Temp_phyto : Temperature function for small phyto [-] + ! arrFunc : Arrhenius temperature function [-] + ! + ! recom_limiter Function: + ! Returns limitation factor based on quota: + ! - Returns ~0 when quota near minimum (severely limited) + ! - Returns ~1 when quota is high (nutrient replete) + ! - Smooth transition controlled by slope parameter + ! + ! Note: Similar calculations for diatoms, coccolithophores, and Phaeocystis + ! with species-specific parameters and additional Si limitation for diatoms + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Small Phytoplankton + !------------------------------------------------------------------------------- + ! Limited by nitrogen and iron + ! Represents small flagellates, small cyanobacteria, etc. + + ! Nitrogen limitation based on intracellular N:C quota + qlimitFac = recom_limiter(NMinSlope, NCmin, quota) + + ! Iron limitation using Michaelis-Menten kinetics + ! Iron is often the limiting micronutrient in HNLC regions + feLimitFac = Fe / (k_Fe + Fe) + + ! Apply Liebig's law: most limiting nutrient controls photosynthesis + qlimitFac = min(qlimitFac, feLimitFac) + + ! Calculate maximum photosynthesis rate with temperature correction + if (enable_coccos) then + ! Use species-specific temperature function (when cocco module active) + pMax = qlimitFac * Temp_phyto + else + ! Use standard Arrhenius temperature function + pMax = P_cm * qlimitFac * arrFunc + endif + + !------------------------------------------------------------------------------- + ! Diatoms + !------------------------------------------------------------------------------- + ! Limited by nitrogen, silicon, and iron + ! Large phytoplankton with silica frustules (shells) + + ! Nitrogen limitation + qlimitFac = recom_limiter(NMinSlope, NCmin_d, quota_dia) + + ! Silicon limitation (unique to diatoms) + ! Required for frustule formation - critical for diatom growth qlimitFacTmp = recom_limiter(SiMinSlope, SiCmin, qSiC) - qlimitFac = min(qLimitFac, qlimitFacTmp) - feLimitFac = Fe/(k_Fe_d + Fe) - qlimitFac = min(qlimitFac, feLimitFac) - pMax_dia = P_cm_d * qlimitFac * arrFunc - -#if defined (__coccos) -! for 4p version which contains new Temperature functions from Hannah - pMax_dia = qlimitFac * Temp_diatoms -#endif - -!< *** Coccolithophores *** -!< ************************ -#if defined (__coccos) - qlimitFac = recom_limiter(NMinSlope, NCmin_c, quota_cocco) - feLimitFac = Fe/(k_Fe_c + Fe) - qlimitFac = min(qlimitFac, feLimitFac) -! pMax_cocco = P_cm_c * qlimitFac * CoccoTFunc ! Here the T dependency is changed - pMax_cocco = qlimitFac * Temp_cocco ! Here the T dependency is changed - -!< *** Phaeocystis *** -!< ******************* - qlimitFac = recom_limiter(NMinSlope, NCmin_p, quota_phaeo) - feLimitFac = Fe/(k_Fe_p + Fe) - qlimitFac = min(qlimitFac, feLimitFac) - pMax_phaeo = qlimitFac * Temp_phaeo ! Here the T dependency is changed -#endif -!------------------------------------------------------------------------------- -!< *** Small phytoplankton photosynthesis rate *** -!< *********************************************** - if (pMax .lt. tiny .OR. PARave /= PARave .OR. CHL2C /= CHL2C) then ! OG in case of only respiration, i.e. darkness?? + qlimitFac = min(qlimitFac, qlimitFacTmp) + + ! Iron limitation + feLimitFac = Fe / (k_Fe_d + Fe) + qlimitFac = min(qlimitFac, feLimitFac) + + ! Calculate maximum photosynthesis rate + if (enable_coccos) then + pMax_dia = qlimitFac * Temp_diatoms + else + pMax_dia = P_cm_d * qlimitFac * arrFunc + endif + + !------------------------------------------------------------------------------- + ! Coccolithophores (Optional) + !------------------------------------------------------------------------------- + ! Limited by nitrogen and iron + ! Calcifying phytoplankton that produce calcite plates + + if (enable_coccos) then + + ! Nitrogen limitation + qlimitFac = recom_limiter(NMinSlope, NCmin_c, quota_cocco) + + ! Iron limitation + feLimitFac = Fe / (k_Fe_c + Fe) + qlimitFac = min(qlimitFac, feLimitFac) + + ! Calculate maximum photosynthesis rate + pMax_cocco = qlimitFac * Temp_cocco + + !--------------------------------------------------------------------------- + ! Phaeocystis (Optional) + !--------------------------------------------------------------------------- + ! Limited by nitrogen and iron + ! Colonial phytoplankton that can form large blooms + + ! Nitrogen limitation + qlimitFac = recom_limiter(NMinSlope, NCmin_p, quota_phaeo) + + ! Iron limitation + feLimitFac = Fe / (k_Fe_p + Fe) + qlimitFac = min(qlimitFac, feLimitFac) + + ! Calculate maximum photosynthesis rate + pMax_phaeo = qlimitFac * Temp_phaeo + + endif + + !=============================================================================== + ! LIGHT-DEPENDENT PHOTOSYNTHESIS RATE CALCULATIONS + !=============================================================================== + ! Calculates actual photosynthesis rates using photosynthesis-irradiance (P-I) + ! curves. Uses exponential saturation model (no photoinhibition). + ! + ! P-I Curve Model: + ! P = Pmax × (1 - exp(-α × Chl:C × PAR / Pmax)) + ! + ! Where: + ! P : Actual photosynthesis rate [day-1] + ! Pmax : Maximum rate (nutrient and temperature limited) [day-1] + ! α : Initial slope of P-I curve (photosynthetic efficiency) [-] + ! Chl:C : Chlorophyll to carbon ratio [mgChl mmolC-1] + ! PAR : Photosynthetically active radiation [W m-2] + ! + ! Variables (Small Phytoplankton): + ! Cphot : Carbon-specific photosynthesis rate [day-1] + ! PARave : Average PAR in mixed layer [W m-2] + ! alfa : Initial slope parameter [-] + ! Chl2C : Chlorophyll:Carbon ratio [mgChl mmolC-1] + ! PhyCO2 : CO2 limitation factor [0-1] + ! VTCphotLigLim_phyto : Light limitation factor for diagnostics [0-1] + ! VTCphot_phyto : Final photosynthesis rate for diagnostics [day-1] + ! + ! Safety Checks: + ! - Check for darkness (pMax < tiny) + ! - Check for NaN values (PARave /= PARave) + ! - Check for valid Chl:C ratios + ! + ! Note: Similar calculations for all phytoplankton types + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Small Phytoplankton Photosynthesis + !------------------------------------------------------------------------------- + + if (pMax < tiny .OR. PARave /= PARave .OR. CHL2C /= CHL2C) then + ! No photosynthesis in darkness or under invalid conditions Cphot = zero else - Cphot = pMax*(real(one) - exp(-alfa * Chl2C * PARave / pMax)) - VTCphotLigLim_phyto(k) = Cphot/pMax ! track the light limitation - if (CO2lim) Cphot = Cphot * PhyCO2 ! Added the CO2 dependence - end if - if (Cphot .lt. tiny) Cphot = zero - VTCphot_phyto(k) = Cphot ! tracking Cphot with all processes included - -!< *** Diatom photosynthesis rate *** -!< ********************************** - if ( pMax_dia .lt. tiny .OR. PARave /= PARave .OR. CHL2C_dia /= CHL2C_dia) then + ! Calculate photosynthesis using exponential P-I curve + ! Model saturates at high light (no photoinhibition) + Cphot = pMax * (1.0d0 - exp(-alfa * Chl2C * PARave / pMax)) + + ! Store light limitation factor for diagnostics + ! Ratio of actual to maximum rate indicates light limitation severity + VTCphotLigLim_phyto(k) = Cphot / pMax + + ! Apply CO2 limitation if ocean acidification sensitivity is enabled + if (CO2lim) Cphot = Cphot * PhyCO2 + endif + + ! Ensure non-negative values (numerical safety) + if (Cphot < tiny) Cphot = zero + + ! Store final photosynthesis rate for diagnostics and output + VTCphot_phyto(k) = Cphot + + !------------------------------------------------------------------------------- + ! Diatom Photosynthesis + !------------------------------------------------------------------------------- + + if (pMax_dia < tiny .OR. PARave /= PARave .OR. CHL2C_dia /= CHL2C_dia) then Cphot_dia = zero else - Cphot_dia = pMax_dia * (real(one) - exp(-alfa_d * Chl2C_dia * PARave / pMax_dia)) - VTCphotLigLim_diatoms(k) = Cphot_dia/pMax_dia ! track light limitation - if (CO2lim) Cphot_dia = Cphot_dia * DiaCO2 ! Added the CO2 dependence - end if - if (Cphot_dia .lt. tiny) Cphot_dia = zero - VTCphot_diatoms(k) = Cphot_dia ! tracking complete Cphot - -!< *** Coccolithophore photosynthesis rate *** -!< ******************************************* -#if defined (__coccos) - if ( pMax_cocco .lt. tiny .OR. Parave /= Parave .OR. CHL2C_cocco /= CHL2C_cocco) then - Cphot_cocco = zero - else - Cphot_cocco = pMax_cocco * (real(one) - exp( -alfa_c * Chl2C_cocco * PARave / pMax_cocco)) - VTCphotLigLim_cocco(k) = Cphot_cocco/pMax_cocco ! track the light limitation - if (CO2lim) Cphot_cocco = Cphot_cocco * CoccoCO2 ! Added the CO2 dependence - end if - if (Cphot_cocco .lt. tiny) Cphot_cocco = zero - VTCphot_cocco(k) = Cphot_cocco - -!< *** Phaeocystis photosynthesis rate *** -!< *************************************** - if ( pMax_phaeo .lt. tiny .OR. Parave /= Parave .OR. CHL2C_phaeo /= CHL2C_phaeo) then - Cphot_phaeo = zero - else - Cphot_phaeo = pMax_phaeo * (real(one) - exp( -alfa_p * Chl2C_phaeo * PARave / pMax_phaeo)) - VTCphotLigLim_phaeo(k) = Cphot_phaeo/pMax_phaeo ! track the light limitation - if (CO2lim) Cphot_phaeo = Cphot_phaeo * PhaeoCO2 ! Added the CO2 dependence - end if - if (Cphot_phaeo .lt. tiny) Cphot_phaeo = zero - VTCphot_phaeo(k) = Cphot_phaeo - + ! Diatom P-I curve with species-specific parameters + Cphot_dia = pMax_dia * (1.0 - exp(-alfa_d * Chl2C_dia * PARave / pMax_dia)) + + ! Store light limitation diagnostic + VTCphotLigLim_diatoms(k) = Cphot_dia / pMax_dia + + ! Apply CO2 limitation + if (CO2lim) Cphot_dia = Cphot_dia * DiaCO2 + endif + + if (Cphot_dia < tiny) Cphot_dia = zero + VTCphot_diatoms(k) = Cphot_dia + + !------------------------------------------------------------------------------- + ! Coccolithophore Photosynthesis (Optional) + !------------------------------------------------------------------------------- + + if (enable_coccos) then + + if (pMax_cocco < tiny .OR. PARave /= PARave .OR. CHL2C_cocco /= CHL2C_cocco) then + Cphot_cocco = zero + else + ! Coccolithophore P-I curve + Cphot_cocco = pMax_cocco * (1.0 - exp(-alfa_c * Chl2C_cocco * PARave / pMax_cocco)) + + ! Store light limitation diagnostic + VTCphotLigLim_cocco(k) = Cphot_cocco / pMax_cocco + + ! Apply CO2 limitation + if (CO2lim) Cphot_cocco = Cphot_cocco * CoccoCO2 + endif + + if (Cphot_cocco < tiny) Cphot_cocco = zero + VTCphot_cocco(k) = Cphot_cocco + + !--------------------------------------------------------------------------- + ! Phaeocystis Photosynthesis (Optional) + !--------------------------------------------------------------------------- + + if (pMax_phaeo < tiny .OR. PARave /= PARave .OR. CHL2C_phaeo /= CHL2C_phaeo) then + Cphot_phaeo = zero + else + ! Phaeocystis P-I curve + Cphot_phaeo = pMax_phaeo * (1.0 - exp(-alfa_p * Chl2C_phaeo * PARave / pMax_phaeo)) + + ! Store light limitation diagnostic + VTCphotLigLim_phaeo(k) = Cphot_phaeo / pMax_phaeo + + ! Apply CO2 limitation + if (CO2lim) Cphot_phaeo = Cphot_phaeo * PhaeoCO2 + endif + + if (Cphot_phaeo < tiny) Cphot_phaeo = zero + VTCphot_phaeo(k) = Cphot_phaeo + + endif + + !=============================================================================== + ! CHLOROPHYLL DEGRADATION + !=============================================================================== + ! Calculates chlorophyll degradation rates with optional photodamage effects. + ! Chlorophyll degrades due to senescence and light-induced damage. + ! + ! Two Modes: + ! A) Base degradation: Constant rate (use_photodamage = FALSE) + ! B) Photodamage-dependent: Light-dependent rate (use_photodamage = TRUE) + ! + ! Variables: + ! KOchl : Chlorophyll degradation rate for small phyto [day-1] + ! KOchl_dia : Chlorophyll degradation rate for diatoms [day-1] + ! KOchl_cocco : Chlorophyll degradation rate for coccos [day-1] + ! KOchl_phaeo : Chlorophyll degradation rate for Phaeocystis [day-1] + ! deg_Chl : Base degradation rate constant [day-1] + ! CHL2C_plast : Chlorophyll:Carbon ratio in plastids [mgChl mmolC-1] + ! alfa : P-I curve initial slope [-] + ! PARave : Average PAR [W m-2] + ! pMax : Maximum photosynthesis rate [day-1] + ! + ! Photodamage Model: + ! - High light damages photosystem II and degrades chlorophyll + ! - Uses same exponential form as P-I curve (saturating damage) + ! - Minimum degradation rate (10% of base) in darkness + ! - No upper cap (commented out safety constraint) + ! + ! Note: Photodamage increases chlorophyll turnover at high light + ! This helps prevent photoinhibition and photooxidative stress + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Set Base Chlorophyll Degradation Rates + !------------------------------------------------------------------------------- + ! Constant degradation rates independent of light (senescence) + + KOchl = deg_Chl ! Small phytoplankton + KOchl_dia = deg_Chl_d ! Diatoms + + if (enable_coccos) then + KOchl_cocco = deg_Chl_c ! Coccolithophores + KOchl_phaeo = deg_Chl_p ! Phaeocystis + endif -#endif -!------------------------------------------------------------------------------- -!< chlorophyll degradation -!------------------------------------------------------------------------------- - KOchl = deg_Chl - KOchl_dia = deg_Chl_d -#if defined (__coccos) - KOchl_cocco = deg_Chl_c - KOchl_phaeo = deg_Chl_p -#endif - if (use_photodamage) then -!< add a minimum value for photodamage -!< *** Phytoplankton Chla loss *** -!< ******************************* - if (pMax .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast /= CHL2C_plast) then - KOchl = deg_Chl*0.1d0 + + !=========================================================================== + ! 3.2 PHOTODAMAGE-DEPENDENT DEGRADATION + !=========================================================================== + ! Light-dependent chlorophyll degradation using saturation model + ! Higher light intensity increases chlorophyll turnover + !--------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Small Phytoplankton Chlorophyll Loss + !--------------------------------------------------------------------------- + + if (pMax < tiny .OR. PARave /= PARave .OR. CHL2C_plast /= CHL2C_plast) then + ! Minimum degradation in darkness (10% of base rate) + KOchl = deg_Chl * 0.1d0 else -!< Saturation model for chlorophyll degradation - KOchl = deg_Chl*(real(one) - exp(-alfa * CHL2C_plast * PARave / pMax)) -!< Linear model for chlorophyll degradation is directly proportional to light intensity + ! Saturation model: degradation increases with light + ! Uses same exponential form as P-I curve + KOchl = deg_Chl * (real(one) - exp(-alfa * CHL2C_plast * PARave / pMax)) + + !< Alternative linear model (commented out): + !< Degradation directly proportional to light intensity !KOchl = deg_Chl * CHL2C_plast * PARave - KOchl = max((deg_Chl*0.1d0), KOchl) -!< Safety constraint that caps the chlorophyll degradation rate at a maximum of 0.3 - !KOchl = min(KOChl, 0.3d0) + + ! Ensure minimum degradation rate (10% of base) + KOchl = max((deg_Chl * 0.1d0), KOchl) + + !< Safety constraint (commented out): + !< Caps maximum degradation at 0.3 day-1 + !KOchl = min(KOchl, 0.3d0) end if -!< *** Diatoms Chla loss *** -!< ************************* - if (pMax_dia .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast_dia /= CHL2C_plast_dia) then - KOchl_dia = deg_Chl_d*0.1d0 + + !--------------------------------------------------------------------------- + ! Diatom Chlorophyll Loss + !--------------------------------------------------------------------------- + + if (pMax_dia < tiny .OR. PARave /= PARave .OR. CHL2C_plast_dia /= CHL2C_plast_dia) then + KOchl_dia = deg_Chl_d * 0.1d0 else - KOchl_dia = deg_Chl_d * (real(one) - exp(-alfa_d * CHL2C_plast_dia * PARave / pMax_dia )) + ! Diatom-specific photodamage model + KOchl_dia = deg_Chl_d * (real(one) - exp(-alfa_d * CHL2C_plast_dia * PARave / pMax_dia)) + !KOchl_dia = deg_Chl_d * CHL2C_plast_dia * PARave - KOchl_dia = max((deg_Chl_d*0.1d0), KOchl_dia) - !KOchl_dia = min(KOChl_dia, 0.3d0) - end if -!< *** Coccolithophores chla loss *** -!< ********************************** -#if defined (__coccos) - if (pMax_cocco .lt. tiny .OR. PARave /= Parave .OR. CHL2C_plast_cocco /= CHL2C_plast_cocco) then - KOchl_cocco = deg_Chl_c*0.1d0 - else - KOchl_cocco = deg_Chl_c * (real(one) - exp( -alfa_c * CHL2C_plast_cocco * PARave / pMax_cocco )) - !KOchl_cocco = deg_Chl_c * CHL2C_plast_cocco * PARave - KOchl_cocco = max((deg_Chl_c*0.1d0), KOchl_cocco) - !KOchl_cocco = min(KOChl_cocco, 0.3d0) - end if -!< *** Phaeocystis chla loss *** -!< ***************************** - if (pMax_phaeo .lt. tiny .OR. PARave /= PARave .OR. CHL2C_plast_phaeo /= CHL2C_plast_phaeo) then - KOchl_phaeo = deg_Chl_p*0.1d0 - else - KOchl_phaeo = deg_Chl_p*(real(one) - exp(-alfa_p * CHL2C_plast_phaeo * PARave / pMax_phaeo)) - !KOchl_phaeo = deg_Chl_p * CHL2C_plast_phaeo * PARave - KOchl_phaeo = max((deg_Chl_p*0.1d0), KOchl_phaeo) - !KOchl_phaeo = min(KOChl_phaeo, 0.3d0) - end if -#endif - if (KOchl /= KOchl) then - print*,' KOchl is ', KOchl - print*,' deg_Chl is ', deg_Chl - print*,' alfa is ', alfa - print*,' CHL2C is ', CHL2C_plast - print*,' PARave is ', PARave - print*,' pMax is ', pMax - stop + KOchl_dia = max((deg_Chl_d * 0.1d0), KOchl_dia) + !KOchl_dia = min(KOchl_dia, 0.3d0) end if - if (KOchl_dia /= KOchl_dia) then - print*,' KOchl_dia is ', KOchl_dia - print*,' deg_Chl_d is ', deg_Chl_d - print*,' alfa_d is ', alfa_d - print*,' CHL2C_d is ', CHL2C_plast_dia - print*,' PARave is ', PARave - print*,' pMax_d is ', pMax_dia + + if (enable_coccos) then + + !----------------------------------------------------------------------- + ! Coccolithophore Chlorophyll Loss + !----------------------------------------------------------------------- + + if (pMax_cocco < tiny .OR. PARave /= PARave .OR. CHL2C_plast_cocco /= CHL2C_plast_cocco) then + KOchl_cocco = deg_Chl_c * 0.1d0 + else + ! Coccolithophore-specific photodamage model + KOchl_cocco = deg_Chl_c * (real(one) - exp(-alfa_c * CHL2C_plast_cocco * PARave / pMax_cocco)) + + !KOchl_cocco = deg_Chl_c * CHL2C_plast_cocco * PARave + + KOchl_cocco = max((deg_Chl_c * 0.1d0), KOchl_cocco) + !KOchl_cocco = min(KOchl_cocco, 0.3d0) + end if + + !----------------------------------------------------------------------- + ! Phaeocystis Chlorophyll Loss + !----------------------------------------------------------------------- + + if (pMax_phaeo < tiny .OR. PARave /= PARave .OR. CHL2C_plast_phaeo /= CHL2C_plast_phaeo) then + KOchl_phaeo = deg_Chl_p * 0.1d0 + else + ! Phaeocystis-specific photodamage model + KOchl_phaeo = deg_Chl_p * (real(one) - exp(-alfa_p * CHL2C_plast_phaeo * PARave / pMax_phaeo)) + + !KOchl_phaeo = deg_Chl_p * CHL2C_plast_phaeo * PARave + + KOchl_phaeo = max((deg_Chl_p * 0.1d0), KOchl_phaeo) + !KOchl_phaeo = min(KOchl_phaeo, 0.3d0) + end if + + endif ! enable_coccos + + endif ! use_photodamage + + !--------------------------------------------------------------------------- + ! ERROR CHECKING AND DEBUGGING + ! Check for NaN values in chlorophyll degradation rates + !--------------------------------------------------------------------------- + + ! Small phytoplankton + if (KOchl /= KOchl) then + print*, 'ERROR: KOchl is NaN' + print*, ' deg_Chl =', deg_Chl + print*, ' alfa =', alfa + print*, ' CHL2C_plast =', CHL2C_plast + print*, ' PARave =', PARave + print*, ' pMax =', pMax + stop + end if + + ! Diatoms + if (KOchl_dia /= KOchl_dia) then + print*, 'ERROR: KOchl_dia is NaN' + print*, ' deg_Chl_d =', deg_Chl_d + print*, ' alfa_d =', alfa_d + print*, ' CHL2C_plast_dia =', CHL2C_plast_dia + print*, ' PARave =', PARave + print*, ' pMax_dia =', pMax_dia + stop + end if + + ! Additional species (if enabled) + if (enable_coccos) then + if (KOchl_cocco /= KOchl_cocco) then + print*, 'ERROR: KOchl_cocco is NaN' + print*, ' deg_Chl_c =', deg_Chl_c + print*, ' alfa_c =', alfa_c + print*, ' CHL2C_plast_cocco =', CHL2C_plast_cocco + print*, ' PARave =', PARave + print*, ' pMax_cocco =', pMax_cocco stop end if -#if defined (__coccos) - if (KOchl_cocco /= KOchl_cocco) then - print*,' KOchl_cocco is ', KOchl_cocco - print*,' deg_Chl_c is ', deg_Chl_c - print*,' alfa_c is ', alfa_c - print*,' CHL2C_c is ', CHL2C_plast_cocco - print*,' PARave is ', PARave - print*,' pMax_c is ', pMax_cocco - stop - end if + if (KOchl_phaeo /= KOchl_phaeo) then - print*,' KOchl_phaeo is ', KOchl_phaeo - print*,' deg_Chl_p is ', deg_Chl_p - print*,' alfa_p is ', alfa_p - print*,' CHL2C_p is ', CHL2C_plast_phaeo - print*,' PARave is ', PARave - print*,' pMax_p is ', pMax_phaeo + print*, 'ERROR: KOchl_phaeo is NaN' + print*, ' deg_Chl_p =', deg_Chl_p + print*, ' alfa_p =', alfa_p + print*, ' CHL2C_plast_phaeo =', CHL2C_plast_phaeo + print*, ' PARave =', PARave + print*, ' pMax_phaeo =', pMax_phaeo stop end if -#endif - end if ! photodamage - -!------------------------------------------------------------------------------- -!> Assimilation section -!------------------------------------------------------------------------------- + endif -!< Nitrogen and silicon part -!< Compute assimilation from Geider et al 1998 -!< V_cm: Scaling factor for C-specific N uptake, dimensionless -!< NCmax: Maximum cell quota of nitrogen (N:C) [mmol N/mmol C] -!< NMaxSlope: Max slope for limiting function -!< NCuptakeRatio: Maximum uptake ratio N:C [mmol N mmol C−1] -!< SiCUptakeRatio: Maximum uptake ratio Si : C [mmol Si mmol C−1 ] -!< The N:C ratio is taken into account, as a -!! too high ratio indicates that the intracellular -!! concentration of energy rich carbon molecules becomes too low to -!! use energy on silicon uptake. - - V_cm = V_cm_fact - limitFacN = recom_limiter(NMaxSlope, quota, NCmax) - N_assim = V_cm * pMax * NCuptakeRatio & ! [mmol N / (mmol C * day)] - * limitFacN * (DIN/(DIN + k_din)) ! Michaelis-Menten kinetics - - V_cm = V_cm_fact_d - limitFacN_dia = recom_limiter(NMaxSlope, quota_dia, NCmax_d) - N_assim_dia = V_cm * pMax_dia * NCUptakeRatio_d & - * limitFacN_dia * DIN/(DIN + k_din_d) - -#if defined (__coccos) - V_cm = V_cm_fact_c + !=============================================================================== + ! PHYTOPLANKTON ASSIMILATION SECTION + !=============================================================================== + ! Computes nutrient uptake, chlorophyll synthesis, and respiration rates + ! for multiple phytoplankton functional types following Geider et al. 1998 + !=============================================================================== + + !=============================================================================== + ! NITROGEN ASSIMILATION + !=============================================================================== + ! Calculates nitrogen uptake rates for all phytoplankton groups based on + ! nutrient availability, cell quota status, and maximum uptake capacity + ! + ! Key Parameters: + ! V_cm_fact : Scaling factor for C-specific N uptake [-] + ! NCmax : Maximum cell quota of nitrogen (N:C) [mmolN mmolC-1] + ! NMaxSlope : Maximum slope for quota limiting function [-] + ! NCuptakeRatio : Maximum uptake ratio N:C [mmolN mmolC-1] + ! k_din : Half-saturation constant for DIN uptake [mmolN m-3] + ! pMax : Maximum photosynthesis rate [day-1] + ! + ! Note: Cell quota limiting function prevents luxury N uptake when internal + ! N:C ratio approaches maximum capacity + !------------------------------------------------------------------------------- + + ! --- Small phytoplankton Nitrogen Uptake --- + V_cm = V_cm_fact + limitFacN = recom_limiter(NMaxSlope, quota, NCmax) + N_assim = V_cm * pMax * NCuptakeRatio * limitFacN * (DIN/(DIN + k_din)) + + ! --- Diatom Nitrogen Uptake --- + V_cm = V_cm_fact_d + limitFacN_dia = recom_limiter(NMaxSlope, quota_dia, NCmax_d) + N_assim_dia = V_cm * pMax_dia * NCUptakeRatio_d * limitFacN_dia * DIN/(DIN + k_din_d) + + ! --- Optional Coccolithophore and Phaeocystis Groups --- + if (enable_coccos) then + ! Coccolithophore nitrogen uptake + V_cm = V_cm_fact_c limitFacN_cocco = recom_limiter(NMaxSlope, quota_cocco, NCmax_c) - N_assim_cocco = V_cm * pMax_cocco * NCUptakeRatio_c & - * limitFacN_cocco * DIN/(DIN + k_din_c) - V_cm = V_cm_fact_p - limitFacN_phaeo = recom_limiter(NMaxSlope, quota_phaeo, NCmax_p) - N_assim_phaeo = V_cm * pMax_phaeo * NCUptakeRatio_p & - * limitFacN_phaeo * DIN/(DIN + k_din_p) -#endif + N_assim_cocco = V_cm * pMax_cocco * NCUptakeRatio_c * limitFacN_cocco * & + DIN/(DIN + k_din_c) - limitFacSi = recom_limiter(SiMaxSlope, qSiC, SiCmax) & - * limitFacN_dia - - Si_assim = V_cm_fact_d * P_cm_d * arrFunc * SiCUptakeRatio & - * limitFacSi * Si/(Si + k_si) + ! Phaeocystis nitrogen uptake + V_cm = V_cm_fact_p + limitFacN_phaeo = recom_limiter(NMaxSlope, quota_phaeo, NCmax_p) + N_assim_phaeo = V_cm * pMax_phaeo * NCUptakeRatio_p * limitFacN_phaeo * & + DIN/(DIN + k_din_p) + endif -#if defined (__coccos) - Si_assim = V_cm_fact_d * Temp_diatoms * SiCUptakeRatio & - * limitFacSi * Si/(Si + k_si) + !=============================================================================== + ! SILICON ASSIMILATION (DIATOMS ONLY) + !=============================================================================== + ! Calculates silicate uptake for diatom frustule formation + ! + ! Key Parameters: + ! SiCUptakeRatio : Maximum uptake ratio Si:C [mmolSi mmolC-1] + ! SiCmax : Maximum cell quota of silicon (Si:C) [mmolSi mmolC-1] + ! SiMaxSlope : Maximum slope for Si quota limiting function [-] + ! k_si : Half-saturation constant for Si uptake [mmolSi m-3] + ! P_cm_d : Maximum photosynthesis rate for diatoms [day-1] + ! + ! Note: Silicon uptake is coupled to nitrogen status - high N:C ratios indicate + ! low intracellular energy reserves, limiting energy-intensive Si uptake + !------------------------------------------------------------------------------- + + limitFacSi = recom_limiter(SiMaxSlope, qSiC, SiCmax) * limitFacN_dia + + if (.NOT. enable_coccos) then + ! Standard silicon assimilation formulation + Si_assim = V_cm_fact_d * P_cm_d * arrFunc * SiCUptakeRatio * limitFacSi * & + Si/(Si + k_si) + else + ! Alternative formulation with temperature dependence + Si_assim = V_cm_fact_d * Temp_diatoms * SiCUptakeRatio * limitFacSi * & + Si/(Si + k_si) VTSi_assimDia(k) = Si_assim -#endif -!------------------------------------------------------------------------------- -!< *** Iron chemistry *** -!< ********************** -! select the method to calculate freeFe - freeFe = iron_chemistry(Fe,totalligand,ligandStabConst) -!------------------------------------------------------------------------------- -!< *** Chlorophyll synthesis *** -!< ***************************** - -!< Coupled to N uptake -!< Converted to chlorophyll units with a maximum Chl:N ratio, Chl2N_max -!< Chl2N_max: Maximum Chl:N ratio for phytoplankton [mg Chl mmol N−1 ] + endif - chlSynth = zero - if (PARave .ge. tiny .AND. PARave .eq. PARave) then - chlSynth = N_assim * Chl2N_max & - * min(real(one),Cphot/(alfa * Chl2C * PARave)) - end if - ChlSynth_dia = zero - if (PARave .ge. tiny .AND. PARave .eq. PARave) then - ChlSynth_dia = N_assim_dia * Chl2N_max_d & - * min(real(one),Cphot_dia /(alfa_d * Chl2C_dia * PARave)) - end if - -#if defined (__coccos) + !=============================================================================== + ! 3. IRON CHEMISTRY + !=============================================================================== + ! Computes free (bioavailable) iron concentration from total dissolved iron + ! accounting for complexation with organic ligands + ! + ! Variables: + ! Fe : Total dissolved iron [µmol m-3] + ! totalligand : Total organic ligand concentration [µmol m-3] + ! ligandStabConst : Conditional stability constant [M-1] + ! freeFe : Free (inorganic) iron concentration [µmol m-3] + !------------------------------------------------------------------------------- + + freeFe = iron_chemistry(Fe, totalligand, ligandStabConst) + + !=============================================================================== + ! 4. CHLOROPHYLL SYNTHESIS + !=============================================================================== + ! Calculates chlorophyll production coupled to nitrogen assimilation + ! following photoacclimation theory (Geider et al. 1998) + ! + ! Key Parameters: + ! Chl2N_max : Maximum Chl:N ratio [mg Chl mmolN-1] + ! Chl2C : Chlorophyll to carbon ratio [mg Chl mmolC-1] + ! alfa : Initial slope of P-I curve [mmolC (mg Chl)-1 m2 µmol-1 day-1] + ! Cphot : Carbon-specific photosynthesis rate [day-1] + ! PARave : Depth-averaged photosynthetically available radiation [µmol m-2 s-1] + ! + ! Note: Chlorophyll synthesis is down-regulated when light is sufficient, + ! preventing over-investment in light-harvesting machinery + !------------------------------------------------------------------------------- + + ! --- Small phytoplankton Chlorophyll Synthesis --- + chlSynth = zero + if (PARave >= tiny .AND. PARave == PARave) then + chlSynth = N_assim * Chl2N_max * & + min(real(one), Cphot/(alfa * Chl2C * PARave)) + end if + + ! --- Diatom Chlorophyll Synthesis --- + ChlSynth_dia = zero + if (PARave >= tiny .AND. PARave == PARave) then + ChlSynth_dia = N_assim_dia * Chl2N_max_d * & + min(real(one), Cphot_dia/(alfa_d * Chl2C_dia * PARave)) + end if + + ! --- Optional Coccolithophore and Phaeocystis Chlorophyll Synthesis --- + if (enable_coccos) then + ! Coccolithophore chlorophyll synthesis ChlSynth_cocco = zero - if (PARave .ge. tiny .AND. PARave .eq. PARave) then - ChlSynth_cocco = N_assim_cocco * Chl2N_max_c & - * min(real(one),Cphot_cocco /(alfa_c * Chl2C_cocco * PARave)) + if (PARave >= tiny .AND. PARave == PARave) then + ChlSynth_cocco = N_assim_cocco * Chl2N_max_c * & + min(real(one), Cphot_cocco/(alfa_c * Chl2C_cocco * PARave)) end if - ChlSynth_phaeo = zero - if (PARave .ge. tiny .AND. PARave .eq. PARave) then - ChlSynth_phaeo = N_assim_phaeo * Chl2N_max_p & - * min(real(one),Cphot_phaeo /(alfa_p * Chl2C_phaeo * PARave)) - end if -#endif -!------------------------------------------------------------------------------- -!< *** Phytoplankton respiraion rate *** -!< ************************************* -!< res_phy: Maintenance respiration rate constant [day−1 ] -!< biosynth: The cost of biosynthesis of N [mmol C mmol N−1 ] + ! Phaeocystis chlorophyll synthesis + ChlSynth_phaeo = zero + if (PARave >= tiny .AND. PARave == PARave) then + ChlSynth_phaeo = N_assim_phaeo * Chl2N_max_p * & + min(real(one), Cphot_phaeo/(alfa_p * Chl2C_phaeo * PARave)) + end if + endif - phyRespRate = res_phy * limitFacN + biosynth * N_assim - phyRespRate_dia = res_phy_d * limitFacN_dia + biosynth * N_assim_dia + biosynthSi * Si_assim -#if defined (__coccos) + !=============================================================================== + ! 5. PHYTOPLANKTON RESPIRATION RATES + !=============================================================================== + ! Computes carbon loss through maintenance respiration and biosynthetic costs + ! + ! Key Parameters: + ! res_phy : Maintenance respiration rate constant [day-1] + ! biosynth : Biosynthetic cost of nitrogen assimilation [mmolC mmolN-1] + ! biosynthSi : Biosynthetic cost of silicon assimilation [mmolC mmolSi-1] + ! + ! Components: + ! 1. Maintenance respiration: Quota-dependent baseline metabolic cost + ! 2. Biosynthetic costs: Additional respiration for nutrient assimilation + ! + ! Equation: R = res_phy * limitFacN + biosynth * N_assim + biosynthSi * Si_assim + !------------------------------------------------------------------------------- + + ! --- Small phytoplankton Respiration --- + phyRespRate = res_phy * limitFacN + biosynth * N_assim + + ! --- Diatom Respiration (includes silicon biosynthesis cost) --- + phyRespRate_dia = res_phy_d * limitFacN_dia + biosynth * N_assim_dia + & + biosynthSi * Si_assim + + ! --- Optional Coccolithophore and Phaeocystis Respiration --- + if (enable_coccos) then phyRespRate_cocco = res_phy_c * limitFacN_cocco + biosynth * N_assim_cocco - phyRespRate_phaeo = res_phy_p * limitFacN_phaeo + biosynth * N_assim_phaeo ! Phaeocystis -#endif + phyRespRate_phaeo = res_phy_p * limitFacN_phaeo + biosynth * N_assim_phaeo + endif -!------------------------------------------------------------------------------- -! Mesozooplankton -!------------------------------------------------------------------------------- -!< Grazing on small phytoplankton, diatoms, coccolithophore (optional), -!< microzooplankton (optional), slow- and fast-sinking detritus - -!< *** Food availability *** -!< ************************* -!< pzPhy: Maximum nanophytoplankton preference -!< pzDia: Maximum diatom preference -!< pzCocco: Maximum coccolithophore preference -!< pzDet: Maximum slow-sinking detritus prefence by first zooplankton -!< pzDetZ2: Maximum fast-sinking detritus preference by first zooplankton -!< pzMicZoo: Maximum microzooplankton preference by first zooplankton - - if (REcoM_Grazing_Variable_Preference) then ! CHECK ONUR - aux = pzPhy*PhyN + pzDia*DiaN - if (Grazing_detritus) aux = aux + PzDet*DetN -#if defined (__3Zoo2Det) - if (Grazing_detritus) aux = aux + pzDetZ2*DetZ2N ! 2Det - aux = aux + pzMicZoo*MicZooN ! 3Zoo -#endif -#if defined (__coccos) - aux = aux + pzCocco*CoccoN - aux = aux + pzPhaeo*PhaeoN -#endif -! ****************************************************************************** - varpzPhy = (pzPhy*PhyN)/aux - varpzDia = (pzDia*DiaN)/aux - if (Grazing_detritus) varpzDet = (pzDet*DetN)/aux -#if defined (__3Zoo2Det) - if (Grazing_detritus) varpzDetZ2 = (pzDetZ2*DetZ2N)/aux ! 2Det - varpzMicZoo = (pzMicZoo*MicZooN)/aux ! 3Zoo -#endif -#if defined (__coccos) - varpzCocco = (pzCocco*CoccoN)/aux - varpzPhaeo = (pzPhaeo*PhaeoN)/aux -#endif -! ****************************************************************************** - fDiaN = varpzDia * DiaN - fPhyN = varpzPhy * PhyN - if (Grazing_detritus) fDetN = varpzDet * DetN -#if defined (__3Zoo2Det) - if (Grazing_detritus) fDetZ2N = varpzDetZ2 * DetZ2N ! 2Det - fMicZooN = varpzMicZoo * MicZooN ! 3Zoo -#endif -#if defined (__coccos) + !=============================================================================== + ! MESOZOOPLANKTON GRAZING + !=============================================================================== + ! Simulates mesozooplankton grazing on multiple prey types using a Holling + ! Type III functional response with food-dependent preferences and efficiency. + ! + ! This module calculates: + ! 1. Food availability and grazing preferences (fixed or variable) + ! 2. Total grazing flux with Holling Type III response + ! 3. Distribution of grazing among prey types + ! 4. Food-dependent grazing efficiency + ! 5. Carbon flux from grazed prey to mesozooplankton + ! + ! Key Features: + ! - Variable or fixed prey preferences + ! - Optional prey types (coccolithophores, microzooplankton, detritus) + ! - Temperature-dependent grazing rate (Q10 or Arrhenius) + ! - Food-dependent assimilation efficiency + ! + ! References: + ! - Schourup-Kristensen et al. (2013) - REcoM model description + !=============================================================================== + + !=============================================================================== + ! 1. FOOD AVAILABILITY AND GRAZING PREFERENCES + !=============================================================================== + ! Calculates which prey types are available and their relative preferences. + ! Two modes: + ! - Variable preferences: Adjust based on relative prey abundance + ! - Fixed preferences: Use constant maximum preference values + ! + ! Variables: + ! pzPhy, pzDia : Max preference for small phyto and diatoms [-] + ! pzCocco, pzPhaeo: Max preference for coccoliths and Phaeocystis [-] + ! pzDet, pzDetZ2 : Max preference for slow/fast sinking detritus [-] + ! pzMicZoo : Max preference for microzooplankton [-] + ! PhyN, DiaN : Small phytoplankton and diatom nitrogen [mmolN m-3] + ! CoccoN, PhaeoN : Coccolithophore and Phaeocystis nitrogen [mmolN m-3] + ! DetN, DetZ2N : Slow and fast sinking detritus nitrogen [mmolN m-3] + ! MicZooN : Microzooplankton nitrogen [mmolN m-3] + ! varpz* : Variable preferences (calculated from availability) [-] + ! f*N : Available food pools (preference × concentration) [mmolN m-3] + ! aux : Total weighted food availability [mmolN m-3] + ! + ! Logic: + ! IF variable preferences: varpz_i = (pz_i × prey_i) / Σ(pz_j × prey_j) + ! ELSE: Use fixed maximum preferences (pz_i) + ! Food pools: f_i = preference_i × prey_i + !------------------------------------------------------------------------------- + + if (REcoM_Grazing_Variable_Preference) then + !--------------------------------------------------------------------------- + ! VARIABLE PREFERENCE MODE + ! Preferences scale with relative abundance of each prey type + !--------------------------------------------------------------------------- + + ! Calculate total weighted food availability (denominator) + aux = pzPhy * PhyN + pzDia * DiaN + + if (Grazing_detritus) then + aux = aux + pzDet * DetN + endif + + if (enable_3zoo2det) then + if (Grazing_detritus) aux = aux + pzDetZ2 * DetZ2N ! Fast-sinking detritus + aux = aux + pzMicZoo * MicZooN ! Microzooplankton + endif + + if (enable_coccos) then + aux = aux + pzCocco * CoccoN + pzPhaeo * PhaeoN + endif + + ! Calculate variable preferences (normalized by total availability) + varpzPhy = (pzPhy * PhyN) / aux + varpzDia = (pzDia * DiaN) / aux + + if (Grazing_detritus) then + varpzDet = (pzDet * DetN) / aux + endif + + if (enable_3zoo2det) then + if (Grazing_detritus) varpzDetZ2 = (pzDetZ2 * DetZ2N) / aux + varpzMicZoo = (pzMicZoo * MicZooN) / aux + endif + + if (enable_coccos) then + varpzCocco = (pzCocco * CoccoN) / aux + varpzPhaeo = (pzPhaeo * PhaeoN) / aux + endif + + ! Calculate available food pools (preference × concentration) + fPhyN = varpzPhy * PhyN + fDiaN = varpzDia * DiaN + + if (Grazing_detritus) then + fDetN = varpzDet * DetN + endif + + if (enable_3zoo2det) then + if (Grazing_detritus) fDetZ2N = varpzDetZ2 * DetZ2N + fMicZooN = varpzMicZoo * MicZooN + endif + + if (enable_coccos) then fCoccoN = varpzCocco * CoccoN fPhaeoN = varpzPhaeo * PhaeoN -#endif - else ! REcoM_Grazing_Variable_Preference = .false. - fPhyN = pzPhy * PhyN - fDiaN = pzDia * DiaN - if (Grazing_detritus) fDetN = pzDet * DetN -#if defined (__3Zoo2Det) - if (Grazing_detritus) fDetZ2N = pzDetZ2 * DetZ2N ! 2Det - fMicZooN = pzMicZoo * MicZooN ! 3Zoo -#endif -#if defined (__coccos) + endif + + else + !--------------------------------------------------------------------------- + ! FIXED PREFERENCE MODE + ! Use constant maximum preference values + !--------------------------------------------------------------------------- + + fPhyN = pzPhy * PhyN + fDiaN = pzDia * DiaN + + if (Grazing_detritus) then + fDetN = pzDet * DetN + endif + + if (enable_3zoo2det) then + if (Grazing_detritus) fDetZ2N = pzDetZ2 * DetZ2N + fMicZooN = pzMicZoo * MicZooN + endif + + if (enable_coccos) then fCoccoN = pzCocco * CoccoN fPhaeoN = pzPhaeo * PhaeoN -#endif - end if ! REcoM_Grazing_Variable_Preference + endif + + endif ! REcoM_Grazing_Variable_Preference + + !=============================================================================== + ! 2. TOTAL GRAZING FLUX (HOLLING TYPE III) + !=============================================================================== + ! Calculates total grazing rate using a sigmoidal (Type III) functional response. + ! This creates a threshold effect where grazing accelerates at higher food levels. + ! + ! Variables: + ! food : Total available food [mmolN m-3] + ! foodsq : Squared food concentration [mmolN2 m-6] + ! grazingFlux : Total N grazing rate [mmolN m-3 day-1] + ! Graz_max : Maximum specific grazing rate [day-1] + ! epsilonr : Half-saturation constant squared [mmolN2 m-6] + ! HetN : Mesozooplankton nitrogen concentration [mmolN m-3] + ! q10_mes : Q10 temperature function for mesozooplankton [-] + ! arrFunc : Arrhenius temperature function [-] + ! + ! Equation: Holling Type III + ! grazingFlux = (Graz_max × food²) / (epsilonr + food²) × HetN × T_func + ! + ! Note: Uses Q10 when 3-zoo/2-detritus enabled, otherwise uses Arrhenius + !------------------------------------------------------------------------------- + + ! Sum all available food pools + food = fPhyN + fDiaN -!< *** Grazing fluxes *** -!< ********************** - food = fPhyN + fDiaN - if (Grazing_detritus) food = food + fDetN -#if defined (__3Zoo2Det) + if (Grazing_detritus) then + food = food + fDetN + endif + + if (enable_3zoo2det) then if (Grazing_detritus) food = food + fDetZ2N - food = food + fMicZooN ! 3Zoo -#endif -#if defined (__coccos) - food = food + fCoccoN - food = food + fPhaeoN -#endif -! ****************************************************************************** - foodsq = food**2 - grazingFlux = (Graz_max * foodsq)/(epsilonr + foodsq) * HetN * arrFunc -#if defined (__3Zoo2Det) - grazingFlux = (Graz_max * foodsq)/(epsilonr + foodsq) * HetN * q10_mes -#endif - grazingFlux_phy = grazingFlux * fphyN / food - grazingFlux_Dia = grazingFlux * fDiaN / food - if (Grazing_detritus) grazingFlux_Det = grazingFlux * fDetN / food -#if defined (__3Zoo2Det) + food = food + fMicZooN + endif + + if (enable_coccos) then + food = food + fCoccoN + fPhaeoN + endif + + ! Calculate grazing flux with Holling Type III functional response + foodsq = food**2 + + if (enable_3zoo2det) then + grazingFlux = (Graz_max * foodsq) / (epsilonr + foodsq) * HetN * q10_mes + else + grazingFlux = (Graz_max * foodsq) / (epsilonr + foodsq) * HetN * arrFunc + endif + + !=============================================================================== + ! 3. GRAZING FLUX DISTRIBUTION + !=============================================================================== + ! Partitions total grazing among prey types proportional to their availability. + ! + ! Variables: + ! grazingFlux_phy : Grazing on small phytoplankton [mmolN m-3 day-1] + ! grazingFlux_Dia : Grazing on diatoms [mmolN m-3 day-1] + ! grazingFlux_Det : Grazing on slow-sinking detritus [mmolN m-3 day-1] + ! grazingFlux_DetZ2 : Grazing on fast-sinking detritus [mmolN m-3 day-1] + ! grazingFlux_miczoo : Grazing on microzooplankton [mmolN m-3 day-1] + ! grazingFlux_Cocco : Grazing on coccolithophores [mmolN m-3 day-1] + ! grazingFlux_Phaeo : Grazing on Phaeocystis [mmolN m-3 day-1] + ! + ! Equation for each prey type i: + ! grazingFlux_i = grazingFlux × (f_i / total_food) + !------------------------------------------------------------------------------- + + grazingFlux_phy = grazingFlux * fPhyN / food + grazingFlux_Dia = grazingFlux * fDiaN / food + + if (Grazing_detritus) then + grazingFlux_Det = grazingFlux * fDetN / food + endif + + if (enable_3zoo2det) then if (Grazing_detritus) grazingFlux_DetZ2 = grazingFlux * fDetZ2N / food - grazingFlux_miczoo = grazingFlux * fMicZooN / food ! 3Zoo -#endif -#if defined (__coccos) + grazingFlux_miczoo = grazingFlux * fMicZooN / food + endif + + if (enable_coccos) then grazingFlux_Cocco = grazingFlux * fCoccoN / food grazingFlux_Phaeo = grazingFlux * fPhaeoN / food -#endif - -!< *** Grazing efficiency *** -!< ************************** - grazEff = gfin + 1/(0.2*food + 2) - - grazingFluxcarbon_mes = (grazingFlux_phy * recipQuota * grazEff) & - + (grazingFlux_Dia * recipQuota_Dia * grazEff) - - if (Grazing_detritus) grazingFluxcarbon_mes = grazingFluxcarbon_mes & - + (grazingFlux_Det * recipDet * grazEff) -#if defined (__3Zoo2Det) - if (Grazing_detritus) grazingFluxcarbon_mes = grazingFluxcarbon_mes & - + (grazingFlux_DetZ2 * recipDet2 * grazEff) - grazingFluxcarbon_mes = grazingFluxcarbon_mes & - + (grazingFlux_miczoo * recipQZoo3 * grazEff) ! 3Zoo -#endif -#if defined (__coccos) - grazingFluxcarbon_mes = grazingFluxcarbon_mes & - + (grazingFlux_Cocco * recipQuota_Cocco * grazEff) - grazingFluxcarbon_mes = grazingFluxcarbon_mes & - + (grazingFlux_Phaeo * recipQuota_phaeo * grazEff) -#endif - -!------------------------------------------------------------------------------- -! Second Zooplankton -!------------------------------------------------------------------------------- -!< Grazing on small phytoplankton, diatoms, coccolithophore (optional), -!< heterotrophs, slow- and fast-sinking detritus - -!< *** Food availability *** -!< ************************* -!< pzPhy2: Maximum nanophytoplankton preference -!< pzDia2: Maximum diatom preference -!< pzCocco2: Maximum coccolithophore preference -!< pzPhaeo2: Maximum phaeocystis preference -!< pzDet2: Maximum slow-sinking detritus prefence by macrozooplankton -!< pzDetZ22: Maximum fast-sinking detritus preference by macrozooplankton -!< pzHet: Maximum mesozooplankton preference -!< pzMicZoo2: Maximum microzooplankton preference - -#if defined (__3Zoo2Det) - if (REcoM_Grazing_Variable_Preference) then - aux = pzPhy2 * PhyN + PzDia2 * DiaN + pzHet * HetN - if (Grazing_detritus) aux = aux + pzDet2 * DetN + pzDetZ22 * DetZ2N - aux = aux + pzMicZoo2 * MicZooN ! 3Zoo -#if defined (__coccos) - aux = aux + pzCocco2 * CoccoN - aux = aux + pzPhaeo2 * PhaeoN -#endif -! ****************************************************************************** - varpzPhy2 = (pzPhy2 * PhyN)/aux - varpzDia2 = (pzDia2 * DiaN)/aux - varpzMicZoo2 = (pzMicZoo2 * MicZooN)/aux ! 3Zoo - -#if defined (__coccos) - varpzCocco2 = (pzCocco2 * CoccoN)/aux - varpzPhaeo2 = (pzPhaeo2 * PhaeoN)/aux -#endif - varpzHet = (pzHet * HetN)/aux - if (Grazing_detritus) then - varpzDet2 = (pzDet2 * DetN)/aux - varpzDetZ22 = (pzDetZ22 * DetZ2N)/aux - end if -! ****************************************************************************** - fDiaN2 = varpzDia2 * DiaN - fPhyN2 = varpzPhy2 * PhyN - fMicZooN2 = varpzMicZoo2 * MicZooN ! 3Zoo -#if defined (__coccos) - fCoccoN2 = varpzCocco2 * CoccoN - fPhaeoN2 = varpzPhaeo2 * PhaeoN -#endif - fHetN = varpzHet * HetN - if (Grazing_detritus) then - fDetN2 = varpzDet2 * DetN - fDetZ2N2 = varpzDetZ22 * DetZ2N - end if - else ! REcoM_Grazing_Variable_Preference = .false. - - fDiaN2 = pzDia2 * DiaN - fPhyN2 = pzPhy2 * PhyN - fMicZooN2 = pzMicZoo2 * MicZooN ! 3Zoo -#if defined (__coccos) - fCoccoN2 = pzCocco2 * CoccoN - fPhaeoN2 = pzPhaeo2 * PhaeoN -#endif - fHetN = pzHet * HetN - if (Grazing_detritus) then - fDetN2 = pzDet2 * DetN - fDetZ2N2 = pzDetZ22 * DetZ2N - end if - end if ! REcoM_Grazing_Variable_Preference - -!< *** Grazing fluxes *** -!< ********************** - food2 = fPhyN2 + fDiaN2 + fHetN - if (Grazing_detritus) food2 = food2 + fDetN2 + fDetZ2N2 - food2 = food2 + fMicZooN2 ! 3Zoo -#if defined (__coccos) - food2 = food2 + fCoccoN2 - food2 = food2 + fPhaeoN2 -#endif -! ****************************************************************************** - foodsq2 = food2**2 - grazingFlux2 = (Graz_max2 * foodsq2)/(epsilon2 + foodsq2) * Zoo2N * arrFuncZoo2 + endif - grazingFlux_phy2 = (grazingFlux2 * fphyN2)/food2 - grazingFlux_Dia2 = (grazingFlux2 * fDiaN2)/food2 - grazingFlux_miczoo2 = (grazingFlux2 * fMicZooN2)/food2 ! 3Zoo + !=============================================================================== + ! 4. GRAZING EFFICIENCY AND CARBON FLUX + !=============================================================================== + ! Calculates food-dependent assimilation efficiency and converts grazed nitrogen + ! to carbon flux using prey-specific C:N ratios. + ! + ! Variables: + ! grazEff : Grazing/assimilation efficiency [-] + ! gfin : Baseline grazing efficiency [-] + ! grazingFluxcarbon_mes : Total carbon flux to mesozooplankton [mmolC m-3 day-1] + ! recipQuota : Small phytoplankton C:N ratio [mmolC mmolN-1] + ! recipQuota_Dia : Diatom C:N ratio [mmolC mmolN-1] + ! recipQuota_Cocco : Coccolithophore C:N ratio [mmolC mmolN-1] + ! recipQuota_phaeo : Phaeocystis C:N ratio [mmolC mmolN-1] + ! recipDet, recipDet2 : Detritus C:N ratios [mmolC mmolN-1] + ! recipQZoo3 : Microzooplankton C:N ratio [mmolC mmolN-1] + ! + ! Grazing Efficiency Equation: + ! grazEff = gfin + 1/(0.2×food + 2) + ! Higher food -> higher efficiency (asymptotes to gfin + 0.5) + ! + ! Carbon Flux Equation: + ! C_flux = Σ(grazingFlux_i × C:N_ratio_i × grazEff) + !------------------------------------------------------------------------------- + + ! Calculate food-dependent grazing efficiency + ! Increases with food availability, representing improved assimilation at higher rations + grazEff = gfin + 1.0 / (0.2 * food + 2.0) + + ! Convert grazed nitrogen to carbon flux using prey C:N ratios + grazingFluxcarbon_mes = (grazingFlux_phy * recipQuota * grazEff) + & + (grazingFlux_Dia * recipQuota_Dia * grazEff) -#if defined (__coccos) - grazingFlux_Cocco2 = (grazingFlux2 * fCoccoN2)/food2 - grazingFlux_Phaeo2 = (grazingFlux2 * fPhaeoN2)/food2 -#endif - grazingFlux_het2 = (grazingFlux2 * fHetN)/food2 - if (Grazing_detritus) then - grazingFlux_Det2 = (grazingFlux2 * fDetN2)/food2 - grazingFlux_DetZ22 = (grazingFlux2 * fDetZ2N2)/food2 - end if + if (Grazing_detritus) then + grazingFluxcarbon_mes = grazingFluxcarbon_mes + & + (grazingFlux_Det * recipDet * grazEff) + endif - grazingFluxcarbonzoo2 = (grazingFlux_phy2 * recipQuota * grazEff2) & - + (grazingFlux_Dia2 * recipQuota_Dia * grazEff2) & - + (grazingFlux_het2 * recipQZoo * grazEff2) + if (enable_3zoo2det) then if (Grazing_detritus) then - grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & - + (grazingFlux_Det2 * recipDet * grazEff2) & - + (grazingFlux_DetZ22 * recipDet2 * grazEff2) - end if - grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & - + (grazingFlux_miczoo2 * recipQZoo3 * grazEff2) ! 3Zoo -#if defined (__coccos) - grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & - + (grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2) - grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & - + (grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2) -#endif + grazingFluxcarbon_mes = grazingFluxcarbon_mes + & + (grazingFlux_DetZ2 * recipDet2 * grazEff) + endif + grazingFluxcarbon_mes = grazingFluxcarbon_mes + & + (grazingFlux_miczoo * recipQZoo3 * grazEff) + endif -!------------------------------------------------------------------------------- -! Third Zooplankton (Microzooplankton) -!------------------------------------------------------------------------------- -!< Grazing on small phytoplankton, diatoms and coccolithophore (optional) and phaeocystis (optional) + if (enable_coccos) then + grazingFluxcarbon_mes = grazingFluxcarbon_mes + & + (grazingFlux_Cocco * recipQuota_Cocco * grazEff) + & + (grazingFlux_Phaeo * recipQuota_phaeo * grazEff) + endif -!< *** Food availability *** -!< ************************* -!< pzPhy3: Maximum nanophytoplankton preference -!< pzDia3: Maximum diatom preference -!< pzCocco3: Maximum coccolithophore preference -!< pzPhaeo3: Maximum phaeocystis preference + !=============================================================================== + ! MACROZOOPLANKTON GRAZING + !=============================================================================== + ! Simulates macrozooplankton (second zooplankton) grazing on multiple prey types + ! using a Holling Type II functional response with food-dependent preferences. + ! + ! This module calculates: + ! 1. Food availability and grazing preferences (fixed or variable) + ! 2. Total grazing flux with Holling Type II response + ! 3. Distribution of grazing among prey types + ! 4. Carbon assimilation from grazed prey using C:N ratios + ! + ! Key Features: + ! - Carnivorous feeding: grazes on mesozooplankton and microzooplankton + ! - Herbivorous feeding: grazes on phytoplankton, diatoms, coccolithophores + ! - Detritivorous feeding: optional grazing on slow/fast-sinking detritus + ! - Variable or fixed prey preferences + ! - Temperature-dependent grazing rate (Arrhenius) + ! - Constant assimilation efficiency (grazEff2) + ! + ! Prey Types: + ! - Primary: Mesozooplankton, microzooplankton, small phyto, diatoms + ! - Optional: Coccolithophores, Phaeocystis, slow/fast-sinking detritus + ! + ! References: + ! - Schourup-Kristensen et al. (2013) - REcoM model description + !=============================================================================== + + if (enable_3zoo2det) then + + !=========================================================================== + ! 1. FOOD AVAILABILITY AND GRAZING PREFERENCES + !=========================================================================== + ! Calculates which prey types are available and their relative preferences. + ! Two modes: + ! - Variable preferences: Adjust based on relative prey abundance + ! - Fixed preferences: Use constant maximum preference values + ! + ! Variables: + ! pzPhy2, pzDia2 : Max preference for small phyto and diatoms [-] + ! pzCocco2, pzPhaeo2: Max preference for coccoliths and Phaeocystis [-] + ! pzHet : Max preference for mesozooplankton [-] + ! pzMicZoo2 : Max preference for microzooplankton [-] + ! pzDet2, pzDetZ22 : Max preference for slow/fast sinking detritus [-] + ! PhyN, DiaN : Small phytoplankton and diatom nitrogen [mmolN m-3] + ! CoccoN, PhaeoN : Coccolithophore and Phaeocystis nitrogen [mmolN m-3] + ! HetN : Mesozooplankton nitrogen [mmolN m-3] + ! MicZooN : Microzooplankton nitrogen [mmolN m-3] + ! DetN, DetZ2N : Slow and fast sinking detritus nitrogen [mmolN m-3] + ! varpz*2, varpzHet: Variable preferences (calculated from availability) [-] + ! f*N2, fHetN : Available food pools (preference × concentration) [mmolN m-3] + ! aux : Total weighted food availability [mmolN m-3] + ! + ! Logic: + ! IF variable preferences: varpz_i = (pz_i × prey_i) / Σ(pz_j × prey_j) + ! ELSE: Use fixed maximum preferences (pz_i) + ! Food pools: f_i = preference_i × prey_i + !--------------------------------------------------------------------------- if (REcoM_Grazing_Variable_Preference) then - aux = pzPhy3 * PhyN + pzDia3 * DiaN -#if defined (__coccos) - aux = aux + pzCocco3 * CoccoN - aux = aux + pzPhaeo3 * PhaeoN -#endif -! ****************************************************************************** - varpzPhy3 = (pzPhy3 * PhyN)/aux - varpzDia3 = (pzDia3 * DiaN)/aux -#if defined (__coccos) - varpzCocco3 = (pzCocco3 * CoccoN)/aux - varpzPhaeo3 = (pzPhaeo3 * PhaeoN)/aux -#endif -! ****************************************************************************** - fPhyN3 = varpzPhy3 * PhyN - fDiaN3 = varpzDia3 * DiaN -#if defined (__coccos) - fCoccoN3 = varpzCocco3 * CoccoN - fPhaeoN3 = varpzPhaeo3 * PhaeoN -#endif - else ! REcoM_Grazing_Variable_Preference = .false. - - fPhyN3 = pzPhy3 * PhyN - fDiaN3 = pzDia3 * DiaN -#if defined (__coccos) - fCoccoN3 = pzCocco3 * CoccoN - fPhaeoN3 = pzPhaeo3 * PhaeoN -#endif - endif !REcoM_Grazing_Variable_Preference - -!< *** Grazing fluxes *** -!< ********************** - food3 = fPhyN3 + fDiaN3 -#if defined (__coccos) - food3 = food3 + fCoccoN3 - food3 = food3 + fPhaeoN3 -#endif -! ****************************************************************************** - foodsq3 = food3**2 - grazingFlux3 = (Graz_max3 * foodsq3)/(epsilon3 + foodsq3) * MicZooN * q10_mic - grazingFlux_phy3 = (grazingFlux3 * fphyN3)/food3 - grazingFlux_Dia3 = (grazingFlux3 * fDiaN3)/food3 -#if defined (__coccos) - grazingFlux_Cocco3 = (grazingFlux3 * fCoccoN3)/food3 - grazingFlux_Phaeo3 = (grazingFlux3 * fPhaeoN3)/food3 -#endif -#endif + !----------------------------------------------------------------------- + ! VARIABLE PREFERENCE MODE + ! Preferences scale with relative abundance of each prey type + !----------------------------------------------------------------------- -!------------------------------------------------------------------------------- -!< Heterotrophic respiration is assumed to drive zooplankton back to -!< Redfield C:N if their C:N becomes higher than Redfield -!< res_het: Timescale for zooplankton respiration [day−1 ] - - if (het_resp_noredfield) then -#if defined (__3Zoo2Det) - HetRespFlux = res_het * q10_mes_res * HetC ! 3Zoo -#else - HetRespFlux = res_het * arrFunc * HetC ! tau * f_T [HetC] -#endif - else - HetRespFlux = recip_res_het * arrFunc * (hetC * recip_hetN_plus - redfield) * HetC - HetRespFlux = max(zero, HetRespFlux) !!!!!!!! CHECK Judith Valid for het_resp_noredfield case as well ???????? Then move it below - endif + ! Calculate total weighted food availability (denominator) + ! Core prey: phytoplankton, diatoms, meso- and microzooplankton + aux = pzPhy2 * PhyN + pzDia2 * DiaN + pzHet * HetN + pzMicZoo2 * MicZooN - if (ciso) then -!MB set HetRespFlux_plus = .true. in namelist.recom -! HetRespFlux_13 = max(zero, recip_res_het * arrFunc * (hetC_13 * recip_hetN_plus - redfield) * HetC_13) -! Numerically safer parametrization avoiding instable results which may result from different cutoff values -- CHECK - HetRespFlux_13 = HetRespFlux * HetC_13 / HetC -!! HetRespFlux_13 = HetRespFlux * (HetC_13 / HetC) **2 - if (ciso_14 .and. ciso_organic_14) then -! HetRespFlux_14 = max(zero, recip_res_het * arrFunc * (hetC_14 * recip_hetN_plus - redfield) * HetC_14) - HetRespFlux_14 = HetRespFlux * HetC_14 / HetC -!! HetRespFlux_14 = HetRespFlux * (HetC_14 / HetC) **2 + ! Add detritus pools if detrital grazing is enabled + if (Grazing_detritus) then + aux = aux + pzDet2 * DetN + pzDetZ22 * DetZ2N end if - end if -!------------------------------------------------------------------------------- -!< Zooplanton mortality (Quadratic) - - hetLossFlux = loss_het * HetN * HetN + ! Add coccolithophores and Phaeocystis if enabled + if (enable_coccos) then + aux = aux + pzCocco2 * CoccoN + pzPhaeo2 * PhaeoN + endif -#if defined (__3Zoo2Det) -!------------------------------------------------------------------------------- -!< Second zooplankton respiration + ! Calculate variable preferences (normalized by total availability) + ! Each preference = (max_pref × prey_conc) / total_weighted_food + varpzPhy2 = (pzPhy2 * PhyN) / aux + varpzDia2 = (pzDia2 * DiaN) / aux + varpzMicZoo2 = (pzMicZoo2 * MicZooN) / aux + varpzHet = (pzHet * HetN) / aux - call krill_resp(n, partit, mesh) + if (enable_coccos) then + varpzCocco2 = (pzCocco2 * CoccoN) / aux + varpzPhaeo2 = (pzPhaeo2 * PhaeoN) / aux + endif - if((grazingFluxcarbonzoo2/Zoo2C) <= 0.1)then - res_zoo2_f = 0.1*(grazingFluxcarbonzoo2/Zoo2C*100) - else - res_zoo2_f = 1. - end if - recip_res_zoo22 = res_zoo2*(1.+ res_zoo2_f + res_zoo2_a) - Zoo2RespFlux = recip_res_zoo22 * Zoo2C -!------------------------------------------------------------------------------- -!< Second zooplankton mortality (Quadratic) - - Zoo2LossFlux = loss_zoo2 * zoo2N * zoo2N + if (Grazing_detritus) then + varpzDet2 = (pzDet2 * DetN) / aux + varpzDetZ22 = (pzDetZ22 * DetZ2N) / aux + end if -!------------------------------------------------------------------------------- -!< Second zooplankton fecal pellets + ! Calculate available food pools (preference × concentration) + fPhyN2 = varpzPhy2 * PhyN + fDiaN2 = varpzDia2 * DiaN + fMicZooN2 = varpzMicZoo2 * MicZooN + fHetN = varpzHet * HetN - Zoo2fecalloss_n = fecal_rate_n * grazingFlux2 - Zoo2fecalloss_c = fecal_rate_c * grazingFluxcarbonzoo2 + if (enable_coccos) then + fCoccoN2 = varpzCocco2 * CoccoN + fPhaeoN2 = varpzPhaeo2 * PhaeoN + endif -!------------------------------------------------------------------------------- -!< Mesozooplankton fecal pellets + if (Grazing_detritus) then + fDetN2 = varpzDet2 * DetN + fDetZ2N2 = varpzDetZ22 * DetZ2N + end if - mesfecalloss_n = fecal_rate_n_mes * grazingFlux - mesfecalloss_c = fecal_rate_c_mes * grazingFluxcarbon_mes + else + !----------------------------------------------------------------------- + ! FIXED PREFERENCE MODE + ! Use constant maximum preference values + !----------------------------------------------------------------------- -!------------------------------------------------------------------------------- -! Third zooplankton, microzooplankton, respiration ! 3Zoo + fPhyN2 = pzPhy2 * PhyN + fDiaN2 = pzDia2 * DiaN + fMicZooN2 = pzMicZoo2 * MicZooN + fHetN = pzHet * HetN - MicZooRespFlux = res_miczoo * q10_mic_res * MicZooC -!------------------------------------------------------------------------------- -! Third zooplankton, microzooplankton, mortality (Quadratic) ! 3Zoo + if (enable_coccos) then + fCoccoN2 = pzCocco2 * CoccoN + fPhaeoN2 = pzPhaeo2 * PhaeoN + endif - MicZooLossFlux = loss_miczoo * MicZooN * MicZooN -#endif + if (Grazing_detritus) then + fDetN2 = pzDet2 * DetN + fDetZ2N2 = pzDetZ22 * DetZ2N + end if -!------------------------------------------------------------------------------- -! Phytoplankton and detritus aggregation -!------------------------------------------------------------------------------- - if (diatom_mucus) then - qlimitFac = recom_limiter(NMinSlope, NCmin_d, quota_dia) - qlimitFacTmp = recom_limiter(SiMinSlope, SiCmin, qSiC) - qlimitFac = min(qLimitFac, qlimitFacTmp) - feLimitFac= Fe/(k_Fe_d + Fe) - qlimitFac = min(qlimitFac, feLimitFac) - aggregationrate = agg_PP * (1 - qlimitFac) * DiaN - else - aggregationrate = agg_PP * DiaN - endif - - aggregationrate = aggregationrate + agg_PD * DetN + agg_PP * PhyN - -#if defined (__3Zoo2Det) - aggregationrate = aggregationrate + agg_PD * DetZ2N ! 2Det -#endif -#if defined (__coccos) - aggregationrate = aggregationrate + agg_PP * CoccoN - aggregationrate = aggregationrate + agg_PP * PhaeoN -#endif - -!------------------------------------------------------------------------------- -! Calcification -!------------------------------------------------------------------------------- -! Terms required for the formation and dissolution of CaCO3 -! Without this, calcification is performed by a fraction of small phytoplankton + end if ! REcoM_Grazing_Variable_Preference -#if defined (__coccos) - if (Temp(k) < 10.6) then ! (PICPOC definition after Krumhardt et al. 2017, 2019; Temp(k) because we need degC here) - PICPOCtemp = 0.104d0 * Temp(k) - 0.108d0 - else - PICPOCtemp = 1.0d0 - end if - PICPOCtemp = max(tiny,PICPOCtemp) - - PICPOCCO2 = a_co2_calc * HCO3_watercolumn(k) * Cunits / (b_co2_calc + HCO3_watercolumn(k) * Cunits) - exp(-c_co2_calc * CO2_watercolumn(k) * Cunits) - d_co2_calc * 10.**(-pH_watercolumn(k)) - PICPOCCO2 = min(PICPOCCO2,3.d0) ! April 2022: limitation to 3 - PICPOCCO2 = max(0.d0,PICPOCCO2) ! July 2022: limitation to zero - - PICPOCN = -0.31 * (DIN/(DIN + k_din_c)) + 1.31 - PICPOCN = max(tiny,PICPOCN) - - calcification = 1.d0 * Cphot_cocco * CoccoC * PICPOCtemp * PICPOCN - if (CO2lim) calcification = calcification * PICPOCCO2 - -#else -!< calc_prod_ratio: Calcite production ratio, dimensionless - calcification = calc_prod_ratio * Cphot * PhyC ! Z in equations -#endif - - calc_loss_agg = aggregationrate * PhyCalc - -#if defined (__coccos) -!< *** Coccolithophores *** -!< ************************ - aux = recipQuota_Cocco/(CoccoC + tiny) * PhyCalc - calc_loss_gra = grazingFlux_Cocco * aux -#if defined (__3Zoo2Det) - calc_loss_gra2 = grazingFlux_Cocco2 * aux - calc_loss_gra3 = grazingFlux_Cocco3 * aux ! 3Zoo -#endif - -#else -!< *** Small phytoplankton *** -!< *************************** - aux = recipQuota/(PhyC + tiny) * PhyCalc - calc_loss_gra = grazingFlux_phy * aux -#if defined (__3Zoo2Det) - calc_loss_gra2 = grazingFlux_phy2 * aux - calc_loss_gra3 = grazingFlux_phy3 * aux ! 3Zoo -#endif -#endif + !=========================================================================== + ! 2. TOTAL GRAZING FLUX (HOLLING TYPE II) + !=========================================================================== + ! Calculates total grazing rate using a hyperbolic (Type II) functional + ! response. This creates saturating grazing at high food concentrations. + ! + ! Variables: + ! food2 : Total available food [mmolN m-3] + ! foodsq2 : Squared food concentration [mmolN2 m-6] + ! grazingFlux2 : Total N grazing rate [mmolN m-3 day-1] + ! Graz_max2 : Maximum specific grazing rate [day-1] + ! epsilon2 : Half-saturation constant squared [mmolN2 m-6] + ! Zoo2N : Macrozooplankton nitrogen concentration [mmolN m-3] + ! arrFuncZoo2 : Arrhenius temperature function for macrozooplankton [-] + ! + ! Equation: Holling Type II + ! grazingFlux2 = (Graz_max2 × food²) / (epsilon2 + food²) × Zoo2N × T_func + ! + ! Note: Uses Arrhenius temperature dependency (arrFuncZoo2) + !--------------------------------------------------------------------------- + + ! Sum all available food pools + food2 = fPhyN2 + fDiaN2 + fHetN + fMicZooN2 - if (ciso) then - calcification_13 = calc_prod_ratio * Cphot * PhyC_13 * alpha_calc_13 - calcification_13 = calcification * alpha_calc_13 - calc_loss_agg_13 = aggregationRate * PhyCalc_13 - calc_loss_gra_13 = grazingFlux_phy * recipQuota_13/(PhyC_13 + tiny) * PhyCalc_13 - if (ciso_14 .and. ciso_organic_14) then - calcification_14 = calc_prod_ratio * Cphot * PhyC_14 * alpha_calc_14 - calc_loss_agg_14 = aggregationRate * PhyCalc_14 - calc_loss_gra_14 = grazingFlux_phy * recipQuota_14/(PhyC_14 + tiny) * PhyCalc_14 - end if + if (Grazing_detritus) then + food2 = food2 + fDetN2 + fDetZ2N2 end if -!------------------------------------------------------------------------------- -! Sources minus sinks (SMS) -!------------------------------------------------------------------------------- + if (enable_coccos) then + food2 = food2 + fCoccoN2 + fPhaeoN2 + endif -!< *** DIN *** -!< *********** - -!< N_assim: N assimilation rate for nanophytoplankton [mmolN mmolC-1 day-1] -!< PhyC: Intracellular carbon concentration in nanophytoplankton [mmolC m-3] -!< N_assim_Dia: N assimilation rate for diatoms [mmolN mmolC-1 day-1] -!< DiaC: Intracellular carbon concentration in diatoms [mmolC m-3] -!< N_assim_Cocco: N assimilation rate for coccolithophore [mmolN mmolC-1 day-1] -!< CoccoC: Intracellular carbon concentration in coccolithophore [mmolC m-3] -!< rho_N*arrFunc: Remineralization rate and temperature dependency which is calculated with arrFunc [day^-1] -!< O2Func: O2 dependency of organic matter remineralization -!< DON: Extracellular dissolved organic nitrogen [mmolN m-3] -!< dt_b: REcoM time step [day] - -!! Schourup 2013 Eq. A2 - - sms(k,idin) = ( & - - N_assim * PhyC & ! --> N assimilation Nanophytoplankton, [mmol N/(mmol C * day)] C specific N utilization rate - - N_assim_Dia * DiaC & ! --> N assimilation Diatoms -#if defined (__coccos) - - N_assim_Cocco * CoccoC & ! --> N assimilation Coccolithophore - - N_assim_Phaeo * PhaeoC & ! --> N assimilation Phaeocystis -#endif - + rho_N * arrFunc * O2Func * DON & ! --> DON remineralization, temperature dependent [day^-1 * mmol/m3] ! O2remin - ) * dt_b + sms(k,idin) - -!< *** DIC *** -!< *********** - -!< rho_C1: Temperature dependent C degradation of extracellular organic C (EOC) [day^-1] - - sms(k,idic) = ( & - - Cphot * PhyC & ! --> Small pyhtoplankton photosynthesis - + phyRespRate * PhyC & ! --> Small pyhtoplankton respiration - - Cphot_Dia * DiaC & ! --> Diatom photosynthesis - + phyRespRate_Dia * DiaC & ! --> Diatom respiration -#if defined (__coccos) - - Cphot_Cocco * CoccoC & ! --> Coccolithophore photosynthesis - + phyRespRate_Cocco * CoccoC & ! --> Coccolithophore respiration - - Cphot_Phaeo * PhaeoC & ! --> Phaeocystis photosynthesis - + phyRespRate_Phaeo * PhaeoC & ! --> Phaeocystis respiration -#endif - + rho_C1 * arrFunc * O2Func * EOC & ! --> Remineralization of DOC ! NEW O2remin - + HetRespFlux & ! --> Mesozooplankton respiration -#if defined (__3Zoo2Det) - + Zoo2RespFlux & ! --> Macrozooplankton respiration - + MicZooRespFlux & ! --> Microzooplankton respiration -#endif - + calc_diss * DetCalc & ! --> Calcite dissolution from slow-sinking detritus - + calc_loss_gra * calc_diss_guts & ! --> Additional dissolution in mesozooplankton guts -#if defined (__3Zoo2Det) - + calc_loss_gra2 * calc_diss_guts & ! --> Additional dissolution in macrozooplankton guts - + calc_loss_gra3 * calc_diss_guts & ! --> Additional dissolution in microzooplankton guts - + calc_diss2 * DetZ2Calc & ! --> Calcite dissolution from fast-sinking detritus -#endif - - calcification & ! --> Calcification - ) * dt_b + sms(k,idic) + ! Calculate grazing flux with Holling Type II functional response + ! Type II uses squared food (similar to Type III but with different parameters) + foodsq2 = food2**2 + grazingFlux2 = (Graz_max2 * foodsq2) / (epsilon2 + foodsq2) * Zoo2N * arrFuncZoo2 + + !=========================================================================== + ! 3. GRAZING FLUX DISTRIBUTION + !=========================================================================== + ! Partitions total grazing among prey types proportional to their availability. + ! + ! Variables: + ! grazingFlux_phy2 : Grazing on small phytoplankton [mmolN m-3 day-1] + ! grazingFlux_Dia2 : Grazing on diatoms [mmolN m-3 day-1] + ! grazingFlux_miczoo2 : Grazing on microzooplankton [mmolN m-3 day-1] + ! grazingFlux_het2 : Grazing on mesozooplankton [mmolN m-3 day-1] + ! grazingFlux_Cocco2 : Grazing on coccolithophores [mmolN m-3 day-1] + ! grazingFlux_Phaeo2 : Grazing on Phaeocystis [mmolN m-3 day-1] + ! grazingFlux_Det2 : Grazing on slow-sinking detritus [mmolN m-3 day-1] + ! grazingFlux_DetZ22 : Grazing on fast-sinking detritus [mmolN m-3 day-1] + ! + ! Equation for each prey type i: + ! grazingFlux_i = grazingFlux2 × (f_i / total_food) + !--------------------------------------------------------------------------- + + ! Distribute total grazing among prey types proportionally + grazingFlux_phy2 = (grazingFlux2 * fPhyN2) / food2 + grazingFlux_Dia2 = (grazingFlux2 * fDiaN2) / food2 + grazingFlux_miczoo2 = (grazingFlux2 * fMicZooN2) / food2 + grazingFlux_het2 = (grazingFlux2 * fHetN) / food2 + + if (enable_coccos) then + grazingFlux_Cocco2 = (grazingFlux2 * fCoccoN2) / food2 + grazingFlux_Phaeo2 = (grazingFlux2 * fPhaeoN2) / food2 + endif + + if (Grazing_detritus) then + grazingFlux_Det2 = (grazingFlux2 * fDetN2) / food2 + grazingFlux_DetZ22 = (grazingFlux2 * fDetZ2N2) / food2 + end if + + !=========================================================================== + ! 4. CARBON ASSIMILATION + !=========================================================================== + ! Converts grazed nitrogen to assimilated carbon flux using prey-specific + ! C:N ratios and constant grazing efficiency. + ! + ! Variables: + ! grazingFluxcarbonzoo2 : Total carbon flux to macrozooplankton [mmolC m-3 day-1] + ! grazEff2 : Macrozooplankton grazing efficiency (constant) [-] + ! recipQuota : Small phytoplankton C:N ratio [mmolC mmolN-1] + ! recipQuota_Dia : Diatom C:N ratio [mmolC mmolN-1] + ! recipQuota_Cocco : Coccolithophore C:N ratio [mmolC mmolN-1] + ! recipQuota_Phaeo : Phaeocystis C:N ratio [mmolC mmolN-1] + ! recipQZoo : Mesozooplankton C:N ratio [mmolC mmolN-1] + ! recipQZoo3 : Microzooplankton C:N ratio [mmolC mmolN-1] + ! recipDet, recipDet2 : Detritus C:N ratios [mmolC mmolN-1] + ! + ! Carbon Flux Equation: + ! C_flux = Σ(grazingFlux_i × C:N_ratio_i × grazEff2) + ! + ! Note: Unlike mesozooplankton, macrozooplankton uses constant efficiency + ! (grazEff2) rather than food-dependent efficiency + !--------------------------------------------------------------------------- + + ! Convert grazed nitrogen to carbon flux using prey C:N ratios + ! Start with core prey types (always present) + grazingFluxcarbonzoo2 = (grazingFlux_phy2 * recipQuota * grazEff2) + & + (grazingFlux_Dia2 * recipQuota_Dia * grazEff2) + & + (grazingFlux_het2 * recipQZoo * grazEff2) + & + (grazingFlux_miczoo2 * recipQZoo3 * grazEff2) + + ! Add detritus contribution if detrital grazing is enabled + if (Grazing_detritus) then + grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & + (grazingFlux_Det2 * recipDet * grazEff2) + & + (grazingFlux_DetZ22 * recipDet2 * grazEff2) + end if + + ! Add coccolithophore and Phaeocystis contribution if enabled + if (enable_coccos) then + grazingFluxcarbonzoo2 = grazingFluxcarbonzoo2 + & + (grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2) + & + (grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2) + endif + + endif ! enable_3zoo2det + + !=============================================================================== + ! MICROZOOPLANKTON GRAZING + !=============================================================================== + ! Simulates microzooplankton (third zooplankton) grazing on phytoplankton prey + ! using a Holling Type II functional response with food-dependent preferences. + ! + ! This module calculates: + ! 1. Food availability and grazing preferences (fixed or variable) + ! 2. Total grazing flux with Holling Type II response + ! 3. Distribution of grazing among prey types + ! 4. Carbon assimilation from grazed prey (calculated elsewhere) + ! + ! Key Features: + ! - Strictly herbivorous: only grazes on phytoplankton groups + ! - No carnivory: does not graze on other zooplankton + ! - No detritivory: does not graze on detritus + ! - Variable or fixed prey preferences + ! - Temperature-dependent grazing rate (Q10) + ! - Smallest zooplankton size class (fastest response to phytoplankton) + ! + ! Prey Types: + ! - Primary: Small phytoplankton, diatoms + ! - Optional: Coccolithophores, Phaeocystis + ! + ! Ecological Role: + ! - Links small phytoplankton to higher trophic levels + ! - Prey for mesozooplankton and macrozooplankton + ! - Rapid response to phytoplankton blooms + ! + ! References: + ! - Schourup-Kristensen et al. (2013) - REcoM model description + !=============================================================================== + + if (enable_3zoo2det) then + + !=========================================================================== + ! 1. FOOD AVAILABILITY AND GRAZING PREFERENCES + !=========================================================================== + ! Calculates which phytoplankton prey types are available and their + ! relative preferences. + ! Two modes: + ! - Variable preferences: Adjust based on relative prey abundance + ! - Fixed preferences: Use constant maximum preference values + ! + ! Variables: + ! pzPhy3, pzDia3 : Max preference for small phyto and diatoms [-] + ! pzCocco3, pzPhaeo3 : Max preference for coccoliths and Phaeocystis [-] + ! PhyN, DiaN : Small phytoplankton and diatom nitrogen [mmolN m-3] + ! CoccoN, PhaeoN : Coccolithophore and Phaeocystis nitrogen [mmolN m-3] + ! varpzPhy3, varpzDia3: Variable preferences (calculated from availability) [-] + ! varpzCocco3, varpzPhaeo3: Variable preferences for coccos/phaeo [-] + ! fPhyN3, fDiaN3 : Available food pools (preference × concentration) [mmolN m-3] + ! fCoccoN3, fPhaeoN3 : Available coccolithophore/Phaeocystis pools [mmolN m-3] + ! aux : Total weighted food availability [mmolN m-3] + ! + ! Logic: + ! IF variable preferences: varpz_i = (pz_i × prey_i) / Σ(pz_j × prey_j) + ! ELSE: Use fixed maximum preferences (pz_i) + ! Food pools: f_i = preference_i × prey_i + ! + ! Note: Microzooplankton have simpler feeding than meso/macrozooplankton + ! - No carnivory (no zooplankton prey) + ! - No detritivory (no detritus grazing) + !--------------------------------------------------------------------------- + + if (REcoM_Grazing_Variable_Preference) then + !----------------------------------------------------------------------- + ! VARIABLE PREFERENCE MODE + ! Preferences scale with relative abundance of each phytoplankton type + !----------------------------------------------------------------------- + + ! Calculate total weighted food availability (denominator) + ! Core phytoplankton prey: small phytoplankton and diatoms + aux = pzPhy3 * PhyN + pzDia3 * DiaN + + ! Add coccolithophores and Phaeocystis if enabled + if (enable_coccos) then + aux = aux + pzCocco3 * CoccoN + pzPhaeo3 * PhaeoN + endif + + ! Calculate variable preferences (normalized by total availability) + ! Each preference = (max_pref × prey_conc) / total_weighted_food + varpzPhy3 = (pzPhy3 * PhyN) / aux + varpzDia3 = (pzDia3 * DiaN) / aux + + if (enable_coccos) then + varpzCocco3 = (pzCocco3 * CoccoN) / aux + varpzPhaeo3 = (pzPhaeo3 * PhaeoN) / aux + endif + + ! Calculate available food pools (preference × concentration) + fPhyN3 = varpzPhy3 * PhyN + fDiaN3 = varpzDia3 * DiaN + + if (enable_coccos) then + fCoccoN3 = varpzCocco3 * CoccoN + fPhaeoN3 = varpzPhaeo3 * PhaeoN + endif + + else + !----------------------------------------------------------------------- + ! FIXED PREFERENCE MODE + ! Use constant maximum preference values + !----------------------------------------------------------------------- + + fPhyN3 = pzPhy3 * PhyN + fDiaN3 = pzDia3 * DiaN + + if (enable_coccos) then + fCoccoN3 = pzCocco3 * CoccoN + fPhaeoN3 = pzPhaeo3 * PhaeoN + endif + + endif ! REcoM_Grazing_Variable_Preference + + !=========================================================================== + ! 2. TOTAL GRAZING FLUX (HOLLING TYPE II) + !=========================================================================== + ! Calculates total grazing rate using a hyperbolic (Type II) functional + ! response. This creates saturating grazing at high phytoplankton + ! concentrations. + ! + ! Variables: + ! food3 : Total available phytoplankton food [mmolN m-3] + ! foodsq3 : Squared food concentration [mmolN2 m-6] + ! grazingFlux3 : Total N grazing rate [mmolN m-3 day-1] + ! Graz_max3 : Maximum specific grazing rate [day-1] + ! epsilon3 : Half-saturation constant squared [mmolN2 m-6] + ! MicZooN : Microzooplankton nitrogen concentration [mmolN m-3] + ! q10_mic : Q10 temperature function for microzooplankton [-] + ! + ! Equation: Holling Type II + ! grazingFlux3 = (Graz_max3 × food³) / (epsilon3 + food²) × MicZooN × T_func + ! + ! Note: Uses Q10 temperature dependency (q10_mic) for rapid metabolic response + ! Smaller organisms typically have higher Q10 sensitivity + !--------------------------------------------------------------------------- + + ! Sum all available phytoplankton food pools + food3 = fPhyN3 + fDiaN3 + + if (enable_coccos) then + food3 = food3 + fCoccoN3 + fPhaeoN3 + endif + + ! Calculate grazing flux with Holling Type II functional response + ! Type II creates hyperbolic saturation: grazing rate increases rapidly + ! at low food, then saturates at high food concentrations + foodsq3 = food3**2 + grazingFlux3 = (Graz_max3 * foodsq3) / (epsilon3 + foodsq3) * MicZooN * q10_mic + + !=========================================================================== + ! 3. GRAZING FLUX DISTRIBUTION + !=========================================================================== + ! Partitions total grazing among phytoplankton prey types proportional + ! to their availability. + ! + ! Variables: + ! grazingFlux_phy3 : Grazing on small phytoplankton [mmolN m-3 day-1] + ! grazingFlux_Dia3 : Grazing on diatoms [mmolN m-3 day-1] + ! grazingFlux_Cocco3 : Grazing on coccolithophores [mmolN m-3 day-1] + ! grazingFlux_Phaeo3 : Grazing on Phaeocystis [mmolN m-3 day-1] + ! + ! Equation for each prey type i: + ! grazingFlux_i = grazingFlux3 × (f_i / total_food) + ! + ! Note: This proportional distribution ensures conservation of mass + ! The sum of all distributed fluxes equals the total grazing flux + !--------------------------------------------------------------------------- + + ! Distribute total grazing among phytoplankton prey types proportionally + grazingFlux_phy3 = (grazingFlux3 * fPhyN3) / food3 + grazingFlux_Dia3 = (grazingFlux3 * fDiaN3) / food3 + + if (enable_coccos) then + grazingFlux_Cocco3 = (grazingFlux3 * fCoccoN3) / food3 + grazingFlux_Phaeo3 = (grazingFlux3 * fPhaeoN3) / food3 + endif + + !=========================================================================== + ! 4. CARBON ASSIMILATION + !=========================================================================== + ! Carbon flux calculation for microzooplankton is handled elsewhere in the + ! model code using the nitrogen grazing fluxes calculated above and + ! prey-specific C:N ratios. + ! + ! The carbon assimilation follows the general pattern: + ! C_flux = Σ(grazingFlux_i × C:N_ratio_i × grazEff3) + ! + ! Where: + ! grazEff3 = Microzooplankton grazing efficiency (constant) [-] + ! C:N ratios for each phytoplankton prey type [mmolC mmolN-1] + ! + ! This calculation is performed in the carbon balance section of the model + ! to maintain consistency with other carbon flux calculations. + !=========================================================================== + + endif ! enable_3zoo2det + + !=============================================================================== + ! MESOZOOPLANKTON RESPIRATION + !=============================================================================== + ! Calculates mesozooplankton carbon respiration using either simple temperature- + ! dependent respiration or Redfield-based respiration that accounts for C:N + ! stoichiometry deviations. + ! + ! Two respiration modes: + ! A) Simple mode: Constant specific rate with temperature correction + ! B) Redfield mode: Respirate excess carbon above Redfield C:N ratio + ! + ! Variables: + ! HetRespFlux : Mesozooplankton respiration rate [mmolC m-3 day-1] + ! res_het : Baseline respiration rate constant [day-1] + ! HetC : Mesozooplankton carbon concentration [mmolC m-3] + ! HetN : Mesozooplankton nitrogen concentration [mmolN m-3] + ! q10_mes_res : Q10 temperature function for meso respiration [-] + ! arrFunc : Arrhenius temperature function [-] + ! recip_hetN_plus : Reciprocal of (HetN + small number) [mmolN-1 m3] + ! redfield : Redfield C:N ratio (106:16 ≈ 6.625) [mmolC mmolN-1] + ! recip_res_het : Reciprocal respiration parameter [day-1] + ! + ! Logic: + ! IF simple mode: RespFlux = res_het × T_func × HetC + ! ELSE Redfield mode: RespFlux = recip_res_het × T_func × (C:N - Redfield) × HetC + ! Redfield mode respirates excess carbon when C:N > Redfield ratio + ! + ! Note: Redfield-based respiration maintains stoichiometric homeostasis + !------------------------------------------------------------------------------- + + if (het_resp_noredfield) then + !--------------------------------------------------------------------------- + ! SIMPLE RESPIRATION MODE + ! Constant specific rate with temperature dependency + !--------------------------------------------------------------------------- + + if (enable_3zoo2det) then + ! Use Q10 temperature function (exponential temperature sensitivity) + HetRespFlux = res_het * q10_mes_res * HetC + else + ! Use Arrhenius temperature function + HetRespFlux = res_het * arrFunc * HetC + endif + + else + !--------------------------------------------------------------------------- + ! REDFIELD-BASED RESPIRATION MODE + ! Respirate excess carbon above Redfield C:N ratio + !--------------------------------------------------------------------------- + + ! Calculate respiration based on deviation from Redfield ratio + ! When C:N > Redfield, organism has excess carbon that must be respired + ! This maintains stoichiometric balance in the organism + HetRespFlux = recip_res_het * arrFunc * (HetC * recip_hetN_plus - redfield) * HetC + + ! Ensure non-negative flux (no respiration when C:N ≤ Redfield) + HetRespFlux = max(zero, HetRespFlux) + + endif + + !=============================================================================== + ! CARBON ISOTOPE TRACKING (OPTIONAL) + !=============================================================================== + ! Tracks respiration fluxes of carbon isotopes (13C and 14C) for paleoclimate + ! and carbon cycle studies. + ! + ! Variables: + ! HetRespFlux_13 : 13C respiration flux [mmol13C m-3 day-1] + ! HetRespFlux_14 : 14C respiration flux [mmol14C m-3 day-1] + ! HetC_13 : Mesozooplankton 13C concentration [mmol13C m-3] + ! HetC_14 : Mesozooplankton 14C concentration [mmol14C m-3] + ! HetC : Total mesozooplankton carbon [mmolC m-3] + ! ciso : Flag for 13C isotope tracking [logical] + ! ciso_14 : Flag for 14C isotope tracking [logical] + ! ciso_organic_14 : Flag for 14C in organic matter [logical] + ! + ! Equation: + ! IsotopeFlux = TotalFlux × (Isotope_C / Total_C) + ! Assumes isotope ratios are conserved during respiration + !------------------------------------------------------------------------------- + + if (ciso) then + ! Track 13C respiration proportional to 13C:12C ratio in biomass + HetRespFlux_13 = HetRespFlux * HetC_13 / HetC + + if (ciso_14 .and. ciso_organic_14) then + ! Track 14C respiration (for radiocarbon dating applications) + ! Used to study carbon residence times and ocean circulation + HetRespFlux_14 = HetRespFlux * HetC_14 / HetC + end if + end if + + !=============================================================================== + ! MESOZOOPLANKTON MORTALITY + !=============================================================================== + ! Calculates density-dependent mortality using quadratic formulation. + ! Higher densities lead to disproportionately higher mortality. + ! + ! Variables: + ! hetLossFlux : Mesozooplankton mortality flux [mmolN m-3 day-1] + ! loss_het : Mortality rate constant [day-1 (mmolN m-3)-1] + ! HetN : Mesozooplankton nitrogen concentration [mmolN m-3] + ! + ! Equation: Quadratic Mortality + ! Mortality = loss_het × HetN² + ! + ! Ecological Rationale: + ! - Linear term represents background mortality (disease, senescence) + ! - Quadratic term represents density-dependent processes: + ! * Increased predation pressure at high densities + ! * Disease transmission (increases with encounter rate) + ! * Intraspecific competition for resources + ! + ! Note: Mortality products go to detritus pool (recycling pathway) + !------------------------------------------------------------------------------- + + hetLossFlux = loss_het * HetN * HetN + + if (enable_3zoo2det) then + + !=========================================================================== + ! MACROZOOPLANKTON RESPIRATION (KRILL) + !=========================================================================== + ! Calculates macrozooplankton respiration with feeding-dependent stress + ! response. Poor feeding conditions increase metabolic costs. + ! + ! Variables: + ! Zoo2RespFlux : Macrozooplankton respiration [mmolC m-3 day-1] + ! res_zoo2 : Baseline respiration rate [day-1] + ! res_zoo2_f : Feeding success modifier [-] + ! res_zoo2_a : Additional respiration factor [-] + ! recip_res_zoo22 : Combined respiration coefficient [day-1] + ! Zoo2C : Macrozooplankton carbon concentration [mmolC m-3] + ! grazingFluxcarbonzoo2: Carbon ingestion rate [mmolC m-3 day-1] + ! + ! Feeding Success Response: + ! - IF specific ingestion < 0.1 day-1: Stress response activated + ! * Increases metabolic costs (searching, maintenance) + ! * res_zoo2_f scales linearly with feeding rate + ! - ELSE: Normal feeding conditions (res_zoo2_f = 1.0) + ! + ! Total Respiration: + ! RespFlux = res_zoo2 × (1 + res_zoo2_f + res_zoo2_a) × Zoo2C + ! + ! Note: Calls external subroutine krill_resp() for detailed metabolism + !--------------------------------------------------------------------------- + + ! Call detailed krill respiration subroutine + ! Handles additional physiological processes (e.g., molting, reproduction) + call krill_resp(n, partit, mesh) + + ! Calculate feeding success modifier + ! Low feeding rates trigger stress response with elevated respiration + if ((grazingFluxcarbonzoo2 / Zoo2C) <= 0.1) then + ! Stress response: metabolic costs increase linearly with feeding deficit + ! Factor of 0.1 converts to percentage basis + res_zoo2_f = 0.1 * (grazingFluxcarbonzoo2 / Zoo2C * 100.0) + else + ! Normal feeding: no additional metabolic stress + res_zoo2_f = 1.0 + end if + + ! Calculate combined respiration coefficient + ! Includes baseline + feeding stress + additional factors + recip_res_zoo22 = res_zoo2 * (1.0 + res_zoo2_f + res_zoo2_a) + + ! Calculate total respiration flux + Zoo2RespFlux = recip_res_zoo22 * Zoo2C + + !=========================================================================== + ! MACROZOOPLANKTON MORTALITY + !=========================================================================== + ! Quadratic density-dependent mortality for macrozooplankton. + ! + ! Variables: + ! Zoo2LossFlux : Macrozooplankton mortality flux [mmolN m-3 day-1] + ! loss_zoo2 : Mortality rate constant [day-1 (mmolN m-3)-1] + ! zoo2N : Macrozooplankton nitrogen concentration [mmolN m-3] + ! + ! Equation: Quadratic Mortality + ! Mortality = loss_zoo2 × zoo2N² + !--------------------------------------------------------------------------- + + Zoo2LossFlux = loss_zoo2 * zoo2N * zoo2N + + !=========================================================================== + ! MICROZOOPLANKTON RESPIRATION AND MORTALITY + !=========================================================================== + ! Calculates microzooplankton respiration and mortality. + ! Simpler than macro/mesozooplankton (no feeding-dependent stress). + ! + ! Variables: + ! MicZooRespFlux : Microzooplankton respiration [mmolC m-3 day-1] + ! MicZooLossFlux : Microzooplankton mortality [mmolN m-3 day-1] + ! res_miczoo : Respiration rate constant [day-1] + ! loss_miczoo : Mortality rate constant [day-1 (mmolN m-3)-1] + ! q10_mic_res : Q10 temperature function for micro respiration [-] + ! MicZooC : Microzooplankton carbon concentration [mmolC m-3] + ! MicZooN : Microzooplankton nitrogen concentration [mmolN m-3] + ! + ! Respiration Equation: + ! RespFlux = res_miczoo × q10_mic_res × MicZooC + ! + ! Mortality Equation: + ! Mortality = loss_miczoo × MicZooN² + !--------------------------------------------------------------------------- + + ! Temperature-dependent respiration (Q10 formulation) + ! Smaller organisms typically have higher temperature sensitivity + MicZooRespFlux = res_miczoo * q10_mic_res * MicZooC + + ! Quadratic density-dependent mortality + MicZooLossFlux = loss_miczoo * MicZooN * MicZooN + + endif ! enable_3zoo2det + + !=============================================================================== + ! FECAL PELLET PRODUCTION + !=============================================================================== + ! Calculates fecal pellet production from mesozooplankton and macrozooplankton. + ! Fecal pellets are key to the biological carbon pump due to fast sinking. + ! + ! Fecal pellets represent: + ! - Undigested/unassimilated food material + ! - Packaged waste with high sinking velocity (100-1000 m/day) + ! - Major pathway for carbon export to deep ocean + ! - Important food source for deep-sea organisms + ! + ! Variables: + ! Zoo2fecalloss_n : Macrozooplankton fecal N [mmolN m-3 day-1] + ! Zoo2fecalloss_c : Macrozooplankton fecal C [mmolC m-3 day-1] + ! mesfecalloss_n : Mesozooplankton fecal N [mmolN m-3 day-1] + ! mesfecalloss_c : Mesozooplankton fecal C [mmolC m-3 day-1] + ! fecal_rate_n : Fecal production rate for N [fraction of ingestion] + ! fecal_rate_c : Fecal production rate for C [fraction of ingestion] + ! fecal_rate_n_mes : Mesozooplankton N fecal rate [-] + ! fecal_rate_c_mes : Mesozooplankton C fecal rate [-] + ! grazingFlux2 : Macrozooplankton N ingestion [mmolN m-3 day-1] + ! grazingFlux : Mesozooplankton N ingestion [mmolN m-3 day-1] + ! grazingFluxcarbonzoo2 : Macro C ingestion [mmolC m-3 day-1] + ! grazingFluxcarbon_mes : Meso C ingestion [mmolC m-3 day-1] + ! + ! Equation: + ! Fecal_flux = fecal_rate × ingestion_flux + ! Fecal rate typically 10-30% of ingestion (remainder is assimilated) + ! + ! Note: Fecal C:N ratio may differ from prey due to selective digestion + !------------------------------------------------------------------------------- + + if (enable_3zoo2det) then + + !--------------------------------------------------------------------------- + ! Macrozooplankton Fecal Pellet Production + !--------------------------------------------------------------------------- + ! Larger zooplankton produce larger, faster-sinking fecal pellets + + Zoo2fecalloss_n = fecal_rate_n * grazingFlux2 ! Nitrogen + Zoo2fecalloss_c = fecal_rate_c * grazingFluxcarbonzoo2 ! Carbon + + !--------------------------------------------------------------------------- + ! Mesozooplankton Fecal Pellet Production + !--------------------------------------------------------------------------- + ! Smaller fecal pellets than macrozooplankton but still fast-sinking + + mesfecalloss_n = fecal_rate_n_mes * grazingFlux ! Nitrogen + mesfecalloss_c = fecal_rate_c_mes * grazingFluxcarbon_mes ! Carbon + + endif ! enable_3zoo2det + + !=============================================================================== + ! PHYTOPLANKTON AND DETRITUS AGGREGATION + !=============================================================================== + ! Calculates particle aggregation that forms larger, faster-sinking particles. + ! Critical process for biological carbon pump and export production. + ! + ! Aggregation mechanisms: + ! - Particle collision and sticking (Brownian motion, shear, settling) + ! - Diatom mucus production enhances aggregation (nutrient stress response) + ! - Transparent exopolymer particles (TEP) glue particles together + ! + ! Variables: + ! aggregationrate : Total particle aggregation rate [mmolN m-3 day-1] + ! agg_PP : Phytoplankton-phytoplankton aggregation rate [day-1] + ! agg_PD : Phytoplankton-detritus aggregation rate [day-1] + ! PhyN, DiaN : Phytoplankton nitrogen concentrations [mmolN m-3] + ! CoccoN, PhaeoN : Coccolithophore and Phaeocystis N [mmolN m-3] + ! DetN, DetZ2N : Slow and fast-sinking detritus N [mmolN m-3] + ! qlimitFac : Nutrient limitation factor (0=replete, 1=limited) [-] + ! feLimitFac : Iron limitation factor [-] + ! quota_dia : Diatom N:C quota [mmolN mmolC-1] + ! qSiC : Diatom Si:C quota [mmolSi mmolC-1] + ! + ! Note: Aggregation products enter fast-sinking detritus pool (DetZ2N) + !------------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Diatom Mucus-Enhanced Aggregation (Optional) + !--------------------------------------------------------------------------- + ! Nutrient limitation triggers diatom mucus production, enhancing aggregation + ! and forming large, rapidly-sinking marine snow aggregates. + + if (diatom_mucus) then + + !----------------------------------------------------------------------- + ! Calculate nutrient limitation factors + !----------------------------------------------------------------------- + + ! Nitrogen limitation factor + ! Uses limiter function: returns 0 when quota is high (replete) + ! returns 1 when quota is low (limited) + qlimitFac = recom_limiter(NMinSlope, NCmin_d, quota_dia) + + ! Silicon limitation factor + ! Diatoms require silica for frustule (shell) formation + qlimitFacTmp = recom_limiter(SiMinSlope, SiCmin, qSiC) + qlimitFac = min(qlimitFac, qlimitFacTmp) ! Most limiting nutrient + + ! Iron limitation factor + ! Iron is essential for photosynthesis and often limiting in ocean + feLimitFac = Fe / (k_Fe_d + Fe) + qlimitFac = min(qlimitFac, feLimitFac) ! Most limiting of all nutrients + + ! Calculate mucus-enhanced aggregation rate + ! Aggregation increases with nutrient stress (high limitation factor) + ! Factor (1 - qlimitFac): 0 when replete, 1 when severely limited + aggregationrate = agg_PP * (1.0 - qlimitFac) * DiaN + + else + + !----------------------------------------------------------------------- + ! Simple aggregation without nutrient limitation effect + !----------------------------------------------------------------------- + aggregationrate = agg_PP * DiaN + + endif + + !--------------------------------------------------------------------------- + ! Total Aggregation Rate + !--------------------------------------------------------------------------- + ! Sum contributions from all particle types + ! Each particle type can aggregate with itself and other particles + + ! Add small phytoplankton and detritus aggregation + aggregationrate = aggregationrate + agg_PD * DetN + agg_PP * PhyN + + if (enable_3zoo2det) then + ! Add fast-sinking detritus aggregation + aggregationrate = aggregationrate + agg_PD * DetZ2N + endif + + if (enable_coccos) then + ! Add coccolithophore and Phaeocystis aggregation + ! These can form large blooms with high aggregation potential + aggregationrate = aggregationrate + agg_PP * CoccoN + agg_PP * PhaeoN + endif + + !=============================================================================== + ! MARINE CALCIFICATION + !=============================================================================== + ! Simulates the formation and dissolution of calcium carbonate (CaCO3) in + ! marine environments, primarily through phytoplankton calcification. + ! + ! This module calculates: + ! 1. Calcification rates (organism-specific or general) + ! 2. Environmental controls on calcification (temperature, CO2, nutrients) + ! 3. Loss processes (grazing, aggregation) + ! 4. Carbon isotope fractionation (13C, 14C - optional) + ! + ! Key Features: + ! - Explicit coccolithophore calcification (temperature, CO2, nutrient effects) + ! - General small phytoplankton calcification (simplified) + ! - Ocean acidification sensitivity (CO2/carbonate chemistry effects) + ! - PIC:POC ratio variability (environmental controls on calcite production) + ! - Isotope fractionation during calcification + ! + ! Calcification Scenarios: + ! A) enable_coccos = TRUE: Explicit coccolithophore model + ! - Temperature-dependent PIC:POC ratios (Krumhardt et al. 2017, 2019) + ! - CO2/carbonate chemistry effects (ocean acidification) + ! - Nitrogen limitation effects + ! B) enable_coccos = FALSE: General small phytoplankton + ! - Fixed fraction of photosynthesis goes to calcification + ! + ! Ecological/Biogeochemical Significance: + ! - Produces ballast that increases particle sinking (biological pump) + ! - Releases CO2 during calcification (carbonate counter-pump) + ! - Major component of ocean alkalinity cycle + ! - Sensitive to ocean acidification (climate change impact) + ! + ! References: + ! - Krumhardt et al. (2017, 2019) - Coccolithophore parameterization + ! - Gürses et al. (2023) - REcoM2 model description + !=============================================================================== + + !=============================================================================== + ! CALCIFICATION RATE CALCULATION + !=============================================================================== + ! Calculates the rate at which calcium carbonate (CaCO3) is formed by marine + ! organisms, with environmental modulation of the PIC:POC ratio. + ! + ! PIC = Particulate Inorganic Carbon (CaCO3) + ! POC = Particulate Organic Carbon (photosynthetic biomass) + ! + ! Variables (Coccolithophore mode): + ! calcification : CaCO3 formation rate [mmolC m-3 day-1] + ! Cphot_cocco : Coccolithophore C-specific photosynthesis [day-1] + ! CoccoC : Coccolithophore carbon concentration [mmolC m-3] + ! PICPOCtemp : Temperature modifier for PIC:POC ratio [-] + ! PICPOCCO2 : CO2/carbonate chemistry modifier for PIC:POC [-] + ! PICPOCN : Nitrogen limitation modifier for PIC:POC [-] + ! Temp(k) : Temperature at depth k [degC] + ! HCO3_watercolumn: Bicarbonate concentration [mmolC m-3] + ! CO2_watercolumn : Dissolved CO2 concentration [mmolC m-3] + ! pH_watercolumn : Water column pH [-] + ! DIN : Dissolved inorganic nitrogen [mmolN m-3] + ! k_din_c : Half-saturation for DIN effect on calcification [mmolN m-3] + ! a,b,c,d_co2_calc: CO2 effect parameters [-] + ! Cunits : Conversion factor for units [-] + ! + ! Variables (General phytoplankton mode): + ! calc_prod_ratio : Fixed calcification:photosynthesis ratio [-] + ! Cphot : Small phytoplankton photosynthesis rate [day-1] + ! PhyC : Small phytoplankton carbon [mmolC m-3] + !------------------------------------------------------------------------------- + + if (enable_coccos) then + + !=========================================================================== + ! COCCOLITHOPHORE-SPECIFIC CALCIFICATION + !=========================================================================== + ! Coccolithophores are marine phytoplankton that produce calcite plates + ! (coccoliths) as an external protective covering. + ! + ! Environmental Controls: + ! - Temperature: Optimum calcification at warm temperatures (>10.6degC) + ! - CO2: Ocean acidification reduces calcification efficiency + ! - Nitrogen: High nutrient availability reduces PIC:POC ratio + !--------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Temperature Effect on PIC:POC Ratio + !--------------------------------------------------------------------------- + ! Based on Krumhardt et al. (2017, 2019) parameterization + ! Warmer temperatures favor higher calcification efficiency + + if (Temp(k) < 10.6) then + ! Linear relationship for temperatures below 10.6degC + ! Calcification efficiency increases with temperature + PICPOCtemp = 0.104d0 * Temp(k) - 0.108d0 + else + ! Maximum efficiency at temperatures ≥ 10.6degC + ! Represents optimal conditions for coccolith formation + PICPOCtemp = 1.0d0 + end if + + ! Prevent negative values (can occur at very low temperatures) + PICPOCtemp = max(tiny, PICPOCtemp) + + !--------------------------------------------------------------------------- + ! CO2/Carbonate Chemistry Effect on PIC:POC Ratio + !--------------------------------------------------------------------------- + ! Complex function representing ocean acidification impacts + ! Three components: + ! 1. HCO3- availability (substrate for calcification) + ! 2. High CO2 inhibition (ocean acidification stress) + ! 3. Low pH inhibition (direct pH stress on calcification) + + PICPOCCO2 = a_co2_calc * HCO3_watercolumn(k) * Cunits / (b_co2_calc + HCO3_watercolumn(k) * Cunits) & + - exp(-c_co2_calc * CO2_watercolumn(k) * Cunits) & + - d_co2_calc * 10.d0**(-pH_watercolumn(k)) + + ! Apply empirical constraints to CO2 effect + PICPOCCO2 = min(PICPOCCO2, 3.d0) ! Upper limit (April 2022 modification) + PICPOCCO2 = max(0.d0, PICPOCCO2) ! Lower limit (July 2022 modification) + + !--------------------------------------------------------------------------- + ! Nitrogen Limitation Effect on PIC:POC Ratio + !--------------------------------------------------------------------------- + ! Higher DIN availability reduces calcification efficiency + ! Ecological rationale: Under nutrient replete conditions, organisms + ! allocate resources preferentially to organic carbon (growth) rather + ! than calcite plates (protection) + + PICPOCN = -0.31 * (DIN / (DIN + k_din_c)) + 1.31 + PICPOCN = max(tiny, PICPOCN) ! Prevent negative values + + !--------------------------------------------------------------------------- + ! Calculate Final Coccolithophore Calcification Rate + !--------------------------------------------------------------------------- + ! Combine photosynthesis rate with all environmental modifiers + ! Base rate × Temperature effect × Nutrient effect + + calcification = 1.d0 * Cphot_cocco * CoccoC * PICPOCtemp * PICPOCN + + ! Apply CO2 limitation if ocean acidification sensitivity is enabled + if (CO2lim) then + calcification = calcification * PICPOCCO2 + end if + + else + + !=========================================================================== + ! GENERAL SMALL PHYTOPLANKTON CALCIFICATION + !=========================================================================== + ! Simplified approach: calcification as a fixed fraction of photosynthesis + ! Used when coccolithophores are not explicitly represented + ! Represents calcification by other small calcifying organisms + !--------------------------------------------------------------------------- + + calcification = calc_prod_ratio * Cphot * PhyC + + endif + + !=============================================================================== + ! CALCIFICATION LOSS PROCESSES + !=============================================================================== + ! Calculates removal of calcified material through grazing and aggregation. + ! These processes transfer CaCO3 to zooplankton or sinking particles. + ! + ! Variables: + ! calc_loss_agg : CaCO3 loss through aggregation [mmolC m-3 day-1] + ! calc_loss_gra : CaCO3 loss to primary grazer [mmolC m-3 day-1] + ! calc_loss_gra2 : CaCO3 loss to secondary grazer [mmolC m-3 day-1] + ! calc_loss_gra3 : CaCO3 loss to tertiary grazer [mmolC m-3 day-1] + ! PhyCalc : Phytoplankton calcite content [mmolC m-3] + ! aggregationrate : Particle aggregation rate [mmolN m-3 day-1] + ! recipQuota : Small phytoplankton C:N ratio [mmolC mmolN-1] + ! recipQuota_Cocco: Coccolithophore C:N ratio [mmolC mmolN-1] + ! grazingFlux_* : Grazing rates on different prey [mmolN m-3 day-1] + ! aux : Auxiliary conversion factor [mmolC mmolN-1] + ! + ! Note: CaCO3 in grazed material can dissolve in zooplankton guts or + ! provide ballast for fecal pellets (enhancing sinking) + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Aggregation Loss + !------------------------------------------------------------------------------- + ! CaCO3 is incorporated into aggregates (marine snow) that sink rapidly + ! Provides ballast effect: increases particle density and sinking velocity + + calc_loss_agg = aggregationrate * PhyCalc + + if (enable_coccos) then + + !--------------------------------------------------------------------------- + ! Coccolithophore Grazing Losses + !--------------------------------------------------------------------------- + ! Calculate CaCO3 consumed by grazers feeding on coccolithophores + ! Requires conversion from nitrogen-based grazing to carbon flux + + ! Calculate auxiliary conversion factor (CaCO3:N ratio in coccolithophores) + aux = recipQuota_Cocco / (CoccoC + tiny) * PhyCalc + + ! Primary grazer (mesozooplankton) consumption + calc_loss_gra = grazingFlux_Cocco * aux + + if (enable_3zoo2det) then + ! Secondary grazer (macrozooplankton) consumption + calc_loss_gra2 = grazingFlux_Cocco2 * aux + + ! Tertiary grazer (microzooplankton) consumption + calc_loss_gra3 = grazingFlux_Cocco3 * aux + endif + + else + + !--------------------------------------------------------------------------- + ! Small Phytoplankton Grazing Losses + !--------------------------------------------------------------------------- + ! Calculate CaCO3 consumed by grazers feeding on calcifying small phytoplankton + + ! Calculate auxiliary conversion factor (CaCO3:N ratio in small phytoplankton) + aux = recipQuota / (PhyC + tiny) * PhyCalc + + ! Primary grazer (mesozooplankton) consumption + calc_loss_gra = grazingFlux_phy * aux + + if (enable_3zoo2det) then + ! Secondary grazer (macrozooplankton) consumption + calc_loss_gra2 = grazingFlux_phy2 * aux + + ! Tertiary grazer (microzooplankton) consumption + calc_loss_gra3 = grazingFlux_phy3 * aux + endif + + endif + + !=============================================================================== + ! CARBON ISOTOPE FRACTIONATION + !=============================================================================== + ! Handles carbon-13 and carbon-14 isotope fractionation during calcification + ! and loss processes. Used for paleoclimate reconstructions and carbon cycle + ! studies. + ! + ! Isotope Fractionation: + ! - Light isotopes (12C) are preferentially incorporated during calcification + ! - Fractionation factors (alpha) quantify this discrimination + ! - Different fractionation for 13C and 14C + ! + ! Variables: + ! calcification_13 : 13C calcification rate [mmol13C m-3 day-1] + ! calcification_14 : 14C calcification rate [mmol14C m-3 day-1] + ! alpha_calc_13 : 13C fractionation factor during calcification [-] + ! alpha_calc_14 : 14C fractionation factor during calcification [-] + ! calc_loss_agg_13/14 : Isotope losses through aggregation [mmol m-3 day-1] + ! calc_loss_gra_13/14 : Isotope losses through grazing [mmol m-3 day-1] + ! PhyCalc_13/14 : Phytoplankton calcite isotope content [mmol m-3] + ! PhyC_13/14 : Phytoplankton organic carbon isotopes [mmol m-3] + ! recipQuota_13/14 : Isotope-specific C:N ratios [mmol mmol-1] + ! + ! Applications: + ! - 13C: Paleoclimate proxies, carbon source tracing + ! - 14C: Radiocarbon dating, carbon residence times + ! + ! Note: Only executed if carbon isotope tracking is enabled (ciso = TRUE) + !------------------------------------------------------------------------------- + + if (ciso) then + + !=========================================================================== + ! Carbon-13 Isotope Calculations + !=========================================================================== + ! Track 13C through calcification and loss processes + !--------------------------------------------------------------------------- + + ! Calcification with isotopic fractionation + ! Alpha factor < 1 means light isotope (12C) is preferentially incorporated + calcification_13 = calcification * alpha_calc_13 + + ! Isotopic losses through aggregation + ! Assumes no fractionation during physical aggregation process + calc_loss_agg_13 = aggregationRate * PhyCalc_13 + + ! Isotopic losses through grazing + ! Requires isotope-specific conversion factor + calc_loss_gra_13 = grazingFlux_phy * recipQuota_13 / (PhyC_13 + tiny) * PhyCalc_13 + + if (ciso_14 .and. ciso_organic_14) then + + !======================================================================= + ! Carbon-14 Isotope Calculations + !======================================================================= + ! Track radiocarbon (14C) through calcification and loss processes + ! Used for determining carbon residence times and age dating + !----------------------------------------------------------------------- + + ! Calcification with 14C fractionation + ! 14C fractionation is approximately twice that of 13C + calcification_14 = calc_prod_ratio * Cphot * PhyC_14 * alpha_calc_14 + + ! 14C losses through aggregation + calc_loss_agg_14 = aggregationRate * PhyCalc_14 + + ! 14C losses through grazing + calc_loss_gra_14 = grazingFlux_phy * recipQuota_14 / (PhyC_14 + tiny) * PhyCalc_14 + + end if ! ciso_14 .and. ciso_organic_14 + + end if ! ciso + + !=============================================================================== + ! 1. DISSOLVED INORGANIC NITROGEN (DIN) + !=============================================================================== + ! Represents the pool of bioavailable nitrogen (nitrate + ammonium) + ! + ! Variables: + ! N_assim : N assimilation rate for small phytoplankton [mmolN mmolC-1 day-1] + ! N_assim_Dia : N assimilation rate for diatoms [mmolN mmolC-1 day-1] + ! N_assim_Cocco : N assimilation rate for coccolithophore [mmolN mmolC-1 day-1] + ! N_assim_Phaeo : N assimilation rate for Phaeocystis [mmolN mmolC-1 day-1] + ! PhyC, DiaC : Intracellular carbon concentration [mmolC m-3] + ! CoccoC, PhaeoC : Intracellular carbon concentration [mmolC m-3] + ! rho_N : Remineralization rate constant [day-1] + ! arrFunc : Arrhenius temperature dependency function [-] + ! O2Func : O2 dependency of organic matter remineralization [-] + ! DON : Dissolved organic nitrogen [mmolN m-3] + ! dt_b : REcoM time step [day] + ! + ! Equation Reference: Schourup-Kristensen 2013, Eq. A2 + + sms(k,idin) = ( & + !--------------------------------------------------------------------------- + ! SINKS: Nitrogen Uptake (decreases DIN) + !--------------------------------------------------------------------------- + ! Phytoplankton assimilation of NO3- and NH4+ + - N_assim * PhyC & ! Small phytoplankton + - N_assim_Dia * DiaC & ! Diatoms + - N_assim_Cocco * CoccoC * is_coccos & ! Coccolithophores + - N_assim_Phaeo * PhaeoC * is_coccos & ! Phaeocystis + !--------------------------------------------------------------------------- + ! SOURCES: Remineralization (increases DIN) + !--------------------------------------------------------------------------- + ! DON remineralization releases bioavailable nitrogen + + rho_N * arrFunc * O2Func * DON & ! Temperature and O2 dependent + ) * dt_b + sms(k,idin) + + !=============================================================================== + ! 2. DISSOLVED INORGANIC CARBON (DIC) + !=============================================================================== + ! Represents the pool of inorganic carbon (CO2 + HCO3- + CO3-2) + ! + ! Variables: + ! Cphot : Small phytoplankton photosynthesis rate [day-1] + ! Cphot_Dia : Diatom photosynthesis rate [day-1] + ! Cphot_Cocco : Coccolithophore photosynthesis rate [day-1] + ! Cphot_Phaeo : Phaeocystis photosynthesis rate [day-1] + ! phyRespRate : Small phytoplankton respiration rate [day-1] + ! phyRespRate_Dia : Diatom respiration rate [day-1] + ! phyRespRate_Cocco : Coccolithophore respiration rate [day-1] + ! phyRespRate_Phaeo : Phaeocystis respiration rate [day-1] + ! rho_C1 : Temperature-dependent DOC degradation rate [day-1] + ! EOC : Extracellular organic carbon [mmolC m-3] + ! HetRespFlux : Mesozooplankton respiration flux [mmolC m-3 day-1] + ! Zoo2RespFlux : Macrozooplankton respiration flux [mmolC m-3 day-1] + ! MicZooRespFlux : Microzooplankton respiration flux [mmolC m-3 day-1] + ! calc_diss : Slow-sinking calcite dissolution rate [day-1] + ! calc_diss2 : Fast-sinking calcite dissolution rate [day-1] + ! DetCalc : Slow-sinking calcite detritus pool [mmolC m-3] + ! DetZ2Calc : Fast-sinking calcite detritus pool [mmolC m-3] + ! calc_loss_gra : Calcite loss via mesozooplankton grazing [mmolC m-3 day-1] + ! calc_loss_gra2 : Calcite loss via macrozooplankton grazing [mmolC m-3 day-1] + ! calc_loss_gra3 : Calcite loss via microzooplankton grazing [mmolC m-3 day-1] + ! calc_diss_guts : Calcite dissolution rate in zooplankton guts [-] + ! calcification : Rate of CaCO3 formation [mmolC m-3 day-1] + + sms(k,idic) = ( & + !--------------------------------------------------------------------------- + ! SINKS: Carbon Fixation (decreases DIC) + !--------------------------------------------------------------------------- + ! Photosynthetic uptake of CO2 by phytoplankton + - Cphot * PhyC & ! Small phytoplankton + - Cphot_Dia * DiaC & ! Diatoms + - Cphot_Cocco * CoccoC * is_coccos & ! Coccolithophores + - Cphot_Phaeo * PhaeoC * is_coccos & ! Phaeocystis + !--------------------------------------------------------------------------- + ! SINKS: Calcification (decreases DIC) + !--------------------------------------------------------------------------- + ! CaCO3 formation: Ca2+ + CO3-2 -> CaCO3 + - calcification & + !--------------------------------------------------------------------------- + ! SOURCES: Phytoplankton Respiration (increases DIC) + !--------------------------------------------------------------------------- + ! Release of CO2 through autotrophic respiration + + phyRespRate * PhyC & ! Small phytoplankton + + phyRespRate_Dia * DiaC & ! Diatoms + + phyRespRate_Cocco * CoccoC * is_coccos & ! Coccolithophores + + phyRespRate_Phaeo * PhaeoC * is_coccos & ! Phaeocystis + !--------------------------------------------------------------------------- + ! SOURCES: DOC Remineralization (increases DIC) + !--------------------------------------------------------------------------- + ! Microbial degradation of dissolved organic carbon + + rho_C1 * arrFunc * O2Func * EOC & ! Temperature and O2 dependent + !--------------------------------------------------------------------------- + ! SOURCES: Zooplankton Respiration (increases DIC) + !--------------------------------------------------------------------------- + ! Release of CO2 through heterotrophic respiration + + HetRespFlux & ! Mesozooplankton + + Zoo2RespFlux * is_3zoo2det & ! Macrozooplankton + + MicZooRespFlux * is_3zoo2det & ! Microzooplankton + !--------------------------------------------------------------------------- + ! SOURCES: Calcite Dissolution (increases DIC) + !--------------------------------------------------------------------------- + ! Reaction: CaCO3 + CO2 + H2O -> Ca2+ + 2HCO3- + + calc_diss * DetCalc & ! Slow-sinking calcite + + calc_loss_gra * calc_diss_guts & ! Mesozooplankton gut + + calc_loss_gra2 * calc_diss_guts * is_3zoo2det & ! Macrozooplankton gut + + calc_loss_gra3 * calc_diss_guts * is_3zoo2det & ! Microzooplankton gut + + calc_diss2 * DetZ2Calc * is_3zoo2det & ! Fast-sinking calcite + ) * dt_b + sms(k,idic) ! if((Latd(1)<-45.0) .and. ((state(k,idic)+sms(k,idic))>2500)) then ! !co2flux(1)=0.0 @@ -1372,1380 +4004,3099 @@ subroutine REcoM_sms(n,Nn,state,thick,recipthick,SurfSR,sms,Temp, Sali_depth & ! stop ! endif -!< *** Alk *** -!< *********** - -!< Alkalinity (Assumes that N:P follows a constant Redfield ratio -!< N_assimC: 1.0625 = 1/16 + 1 - - sms(k,ialk) = ( & - + 1.0625 * N_assim * PhyC & - + 1.0625 * N_assim_Dia * DiaC & -#if defined (__coccos) - + 1.0625 * N_assim_Cocco * CoccoC & - + 1.0625 * N_assim_Phaeo * PhaeoC & -#endif - - 1.0625 * rho_N * arrFunc * O2Func * DON & ! O2remin - + 2.d0 * calc_diss * DetCalc & - + 2.d0 * calc_loss_gra * calc_diss_guts & -#if defined (__3Zoo2Det) - + 2.d0 * calc_loss_gra2 * calc_diss_guts & - + 2.d0 * calc_loss_gra3 * calc_diss_guts & ! 3Zoo - + 2.d0 * calc_diss2 * DetZ2Calc & -#endif - - 2.d0 * calcification & - ) * dt_b + sms(k,ialk) -!< *** Small Phytoplankton *** -!< *************************** - -!____________________________________________________________ -!< Small phytoplankton N - -!< lossN: Phytoplankton loss of organic N compounds [day^-1] - - sms(k,iphyn) = ( & - + N_assim * PhyC & ! --> N assimilation - - lossN * limitFacN * PhyN & ! --> DON excretion - - aggregationRate * PhyN & ! --> Aggregation loss - - grazingFlux_phy & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_phy2 & - - grazingFlux_phy3 & ! 3Zoo -#endif - ) * dt_b + sms(k,iphyn) -!____________________________________________________________ -!< Small phytoplankton C - -!< lossC: Phytoplankton loss of carbon [day^-1] -!< When N : C ratio becomes too high, excretion of DOC is downregulated -!< by the limiter function limitFacN -!< aggregationRate transfers C to the detritus pool - - sms(k,iphyc) = ( & - + Cphot * PhyC & ! --> Photosynthesis ---->/ - - lossC * limitFacN * PhyC & ! --> Excretion of DOC / Net photosynthesis - - phyRespRate * PhyC & ! --> Respiration ----->/ - - aggregationRate * PhyC & ! --> Aggregation loss - - grazingFlux_phy * recipQuota & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_phy2 * recipQuota & - - grazingFlux_phy3 * recipQuota & ! 3Zoo -#endif - ) * dt_b + sms(k,iphyc) -!____________________________________________________________ -! Phytoplankton ChlA - -!< Chl2N: Conversion factor from mmolN to mgChla -!< Chl2N = PhyChl/PhyN - - sms(k,ipchl) = ( & - + chlSynth * PhyC & ! --> Chl-a synthesis - - KOchl * PhyChl & ! --> Degradation loss - - aggregationRate * PhyChl & ! --> Aggregation loss - - grazingFlux_phy * Chl2N & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_phy2 * Chl2N & - - grazingFlux_phy3 * Chl2N & ! 3Zoo -#endif - ) * dt_b + sms(k,ipchl) - -!< *** Slow-sinking Detritus *** -!< ***************************** - -!____________________________________________________________ -! Detritus N - if (Grazing_detritus) then -#if defined (__3Zoo2Det) - sms(k,idetn) = ( & - + grazingFlux_phy3 & ! --> grazing on small phytoplankton by third zooplankton - - grazingFlux_phy3 * grazEff3 & ! --> fraction of grazingFlux_phy3 into microzooplankton pool - + grazingFlux_dia3 & ! --> grazing on diatoms by third zooplankton - - grazingFlux_dia3 * grazEff3 & ! --> fraction of grazingFlux_dia3 into microzooplankton pool -#if defined (__coccos) - + grazingFlux_Cocco3 & ! --> grazing on coccolithophores by third zooplankton - - grazingFlux_Cocco3 * grazEff3 & ! --> fraction of grazingFlux_Cocco3 into microzooplankton pool - + aggregationRate * CoccoN & - + grazingFlux_Phaeo3 * & ! --> grazing on phaeocystis by third zooplankton - - grazingFlux_Phaeo3 * grazEff3 & ! --> fraction of grazingFlux_Phaeo3 into microzooplankton pool - + aggregationRate * PhaeoN & -#endif - - grazingFlux_Det * grazEff & ! --> grazing of first zoo (meso) on first detritus class - - grazingFlux_Det2 * grazEff2 & ! --> grazing of second zoo (macro) on first detritus class - + aggregationRate * PhyN & - + aggregationRate * DiaN & - + miczooLossFlux & ! --> microzooplankton, mortality - - reminN * arrFunc * O2Func * DetN & ! --> O2remin - ) * dt_b + sms(k,idetn) -#else - sms(k,idetn) = ( & - + grazingFlux_phy & ! Technically it is mesooooooooooooooooo - - grazingFlux_phy * grazEff & - + grazingFlux_dia & - - grazingFlux_dia * grazEff & -#if defined (__coccos) - + grazingFlux_Cocco & - - grazingFlux_Cocco * grazEff & - + aggregationRate * CoccoN & - + grazingFlux_Phaeo * & - - grazingFlux_Phaeo * grazEff & - + aggregationRate * PhaeoN & -#endif - - grazingFlux_Det * grazEff & ! Sloppy feeding is thought because of grazing flux multiplied with grazeff - - grazingFlux_Det2 * grazEff2 & !!!!!!!!!!CHECK - + aggregationRate * PhyN & - + aggregationRate * DiaN & - + hetLossFlux & - - reminN * arrFunc * O2Func * DetN & ! O2remin - ) * dt_b + sms(k,idetn) -#endif - else -#if defined (__3Zoo2Det) - sms(k,idetn) = ( & - + grazingFlux_phy3 & - + grazingFlux_dia3 & -#if defined (__coccos) - + grazingFlux_Cocco3 & - + aggregationRate * CoccoN & - + grazingFlux_Phaeo3 * & - + aggregationRate * PhaeoN & -#endif - - grazingFlux * grazEff3 & - + aggregationRate * PhyN & - + aggregationRate * DiaN & - + miczooLossFlux & - - reminN * arrFunc * O2Func * DetN & ! O2remin - ) * dt_b + sms(k,idetn) -#else - sms(k,idetn) = ( & - + grazingFlux_phy & - + grazingFlux_dia & -#if defined (__coccos) - + grazingFlux_Cocco & - + aggregationRate * CoccoN & - + grazingFlux_Phaeo * & - + aggregationRate * PhaeoN & -#endif - - grazingFlux * grazEff & - + aggregationRate * PhyN & - + aggregationRate * DiaN & - + hetLossFlux & - - reminN * arrFunc * O2Func * DetN & ! O2remin - ) * dt_b + sms(k,idetn) -#endif - end if - -!____________________________________________________________ -! Detritus C - if (Grazing_detritus) then -#if defined (__3Zoo2Det) - sms(k,idetc) = ( & - + grazingFlux_phy3 * recipQuota & - - grazingFlux_phy3 * recipQuota * grazEff3 & - + grazingFlux_Dia3 * recipQuota_Dia & - - grazingFlux_Dia3 * recipQuota_Dia * grazEff3 & -#if defined (__coccos) - + grazingFlux_Cocco3 * recipQuota_Cocco & - - grazingFlux_Cocco3 * recipQuota_Cocco * grazEff3 & - + aggregationRate * CoccoC & - + grazingFlux_Phaeo3 * recipQuota_Phaeo & - - grazingFlux_Phaeo3 * recipQuota_Phaeo * grazEff3 & - + aggregationRate * PhaeoC & -#endif - - grazingFlux_Det * recipDet * grazEff & - - grazingFlux_Det2 * recipDet * grazEff2 & ! corrected recipDet2 -> recipDet - + aggregationRate * PhyC & - + aggregationRate * DiaC & - + miczooLossFlux * recipQZoo3 & - - reminC * arrFunc * O2Func * DetC & ! O2remin - ) * dt_b + sms(k,idetc) -#else - sms(k,idetc) = ( & - + grazingFlux_phy * recipQuota & - - grazingFlux_phy * recipQuota * grazEff & - + grazingFlux_Dia * recipQuota_Dia & - - grazingFlux_Dia * recipQuota_Dia * grazEff & -#if defined (__coccos) - + grazingFlux_Cocco * recipQuota_Cocco & - - grazingFlux_Cocco * recipQuota_Cocco * grazEff & - + aggregationRate * CoccoC & - + grazingFlux_Phaeo * recipQuota_Phaeo & - - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & - + aggregationRate * PhaeoC & -#endif - - grazingFlux_Det * recipDet * grazEff & - ! - grazingFlux_Det2 * recipDet2 * grazEff & !!!!!! CHECK - + aggregationRate * phyC & - + aggregationRate * DiaC & - + hetLossFlux * recipQZoo & - - reminC * arrFunc * O2Func * DetC & ! O2remin - ) * dt_b + sms(k,idetc) -#endif - else -#if defined (__3Zoo2Det) - sms(k,idetc) = ( & - + grazingFlux_phy3 * recipQuota & - - grazingFlux_phy3 * recipQuota * grazEff3 & - + grazingFlux_Dia3 * recipQuota_Dia & - - grazingFlux_Dia3 * recipQuota_Dia * grazEff3 & -#if defined (__coccos) - + grazingFlux_Cocco3 * recipQuota_Cocco & - - grazingFlux_Cocco3 * recipQuota_Cocco * grazEff3 & - + aggregationRate * CoccoC & - + grazingFlux_Phaeo3 * recipQuota_Phaeo & - - grazingFlux_Phaeo3 * recipQuota_Phaeo * grazEff3 & - + aggregationRate * PhaeoC & -#endif - + aggregationRate * PhyC & - + aggregationRate * DiaC & - + miczooLossFlux * recipQZoo3 & - - reminC * arrFunc * O2Func * DetC & ! O2remin - ) * dt_b + sms(k,idetc) -#else - sms(k,idetc) = ( & - + grazingFlux_phy * recipQuota & - - grazingFlux_phy * recipQuota * grazEff & - + grazingFlux_Dia * recipQuota_Dia & - - grazingFlux_Dia * recipQuota_Dia * grazEff & -#if defined (__coccos) - + grazingFlux_Cocco * recipQuota_Cocco & - - grazingFlux_Cocco * recipQuota_Cocco * grazEff & - + aggregationRate * CoccoC & - + grazingFlux_Phaeo * recipQuota_Phaeo & - - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & - + aggregationRate * PhaeoC & -#endif - + aggregationRate * phyC & - + aggregationRate * DiaC & - + hetLossFlux * recipQZoo & - - reminC * arrFunc * O2Func * DetC & ! O2remin - ) * dt_b + sms(k,idetc) -#endif - end if - -!< *** Mesozooplankton *** -!< *********************** - -!____________________________________________________________ -!< Heterotrophic N - sms(k,ihetn) = ( & - + grazingFlux * grazEff & ! --> Grazing on phytoplankton -> okay, because of recipQuota -#if defined (__3Zoo2Det) - - grazingFlux_het2 & - - Mesfecalloss_n & ! 3Zoo -#endif - - hetLossFlux & ! --> Mortality - - lossN_z * HetN & ! --> Excretion of DON - ) * dt_b + sms(k,ihetn) -!____________________________________________________________ -!< Heterotrophic C + !=============================================================================== + ! 3. ALKALINITY (Alk) + !=============================================================================== + ! Total alkalinity affects ocean pH and CO2 uptake capacity + ! Assumes constant Redfield N:P ratio + ! + ! Key coefficient: 1.0625 = (1/16) + 1 + ! - Represents the change in alkalinity per mole of nitrogen + ! - Includes both nitrate reduction (+ charge) and phosphate uptake + + sms(k,ialk) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Nutrient Uptake (increases alkalinity) + !--------------------------------------------------------------------------- + ! Phytoplankton uptake of NO3- increases alkalinity + + 1.0625 * N_assim * PhyC & ! Small phytoplankton + + 1.0625 * N_assim_Dia * DiaC & ! Diatoms + + 1.0625 * N_assim_Cocco * CoccoC * is_coccos & ! Coccolithophores + + 1.0625 * N_assim_Phaeo * PhaeoC * is_coccos & ! Phaeocystis + + !--------------------------------------------------------------------------- + ! SINKS: Remineralization (decreases alkalinity) + !--------------------------------------------------------------------------- + ! DON remineralization releases H+ and decreases alkalinity + - 1.0625 * rho_N * arrFunc * O2Func * DON & + !--------------------------------------------------------------------------- + ! SOURCES: Calcite Dissolution (increases alkalinity) + !--------------------------------------------------------------------------- + ! Reaction: CaCO3 + CO2 + H2O -> Ca2+ + 2HCO3- + ! Increases alkalinity by 2 equivalents per mole CaCO3 + + 2.d0 * calc_diss * DetCalc & ! Slow-sinking calcite + + 2.d0 * calc_loss_gra * calc_diss_guts & ! Mesozooplankton gut + + 2.d0 * calc_loss_gra2 * calc_diss_guts * is_3zoo2det & ! Macrozooplankton gut + + 2.d0 * calc_loss_gra3 * calc_diss_guts * is_3zoo2det & ! Microzooplankton gut + + 2.d0 * calc_diss2 * DetZ2Calc * is_3zoo2det & ! Fast-sinking calcite + + !--------------------------------------------------------------------------- + ! SINKS: Calcification (decreases alkalinity) + !--------------------------------------------------------------------------- + ! CaCO3 formation removes 2 equivalents of alkalinity + - 2.d0 * calcification & + ) * dt_b + sms(k,ialk) + + !=============================================================================== + ! SMALL PHYTOPLANKTON NITROGEN (PhyN) + !=============================================================================== + ! Tracks the nitrogen content of small phytoplankton + ! + ! Variables: + ! N_assim : N assimilation rate [day-1] + ! lossN : N loss rate [day-1] + ! limitFacN : Limiter function for N:C ratio regulation [-] + ! aggregationRate : Aggregation to detritus [day-1] + ! grazingFlux_phy : Mesozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_phy2 : Macrozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_phy3 : Microzooplankton grazing [mmolN m-3 day-1] + + sms(k,iphyn) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Nitrogen Assimilation + !--------------------------------------------------------------------------- + + N_assim * PhyC & + !--------------------------------------------------------------------------- + ! SINKS: Losses + !--------------------------------------------------------------------------- + - lossN * limitFacN * PhyN & ! DON excretion (N:C regulated) + - aggregationRate * PhyN & ! Aggregation to detritus + - grazingFlux_phy & ! Mesozooplankton + - grazingFlux_phy2 * is_3zoo2det & ! Macrozooplankton + - grazingFlux_phy3 * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,iphyn) + + !=============================================================================== + ! 5. SMALL PHYTOPLANKTON CARBON (PhyC) + !=============================================================================== + ! Tracks the carbon content of small phytoplankton. + ! + ! Variables: + ! Cphot : Gross photosynthesis rate [day-1] + ! phyRespRate : Autotrophic respiration rate [day-1] + ! lossC : C loss rate [day-1] + ! recipQuota : Reciprocal of N:C quota (for N->C conversion) [-] + ! + ! Note: DOC excretion is downregulated by limitFacN when N:C ratio is too high + + sms(k,iphyc) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Net Photosynthesis + !--------------------------------------------------------------------------- + + Cphot * PhyC & ! Gross photosynthesis + - phyRespRate * PhyC & ! Autotrophic respiration + !--------------------------------------------------------------------------- + ! SINKS: Losses + !--------------------------------------------------------------------------- + - lossC * limitFacN * PhyC & ! DOC excretion (regulated) + - aggregationRate * PhyC & ! Aggregation to detritus + - grazingFlux_phy * recipQuota & ! Mesozooplankton (N->C) + - grazingFlux_phy2 * recipQuota * is_3zoo2det & ! Macrozooplankton + - grazingFlux_phy3 * recipQuota * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,iphyc) + + !=============================================================================== + ! 6. PHYTOPLANKTON CHLOROPHYLL-A (PhyChl) + !=============================================================================== + ! Tracks chlorophyll-a content for light harvesting and photoacclimation + ! + ! Variables: + ! chlSynth : Chlorophyll synthesis rate [mgChl mmolC-1 day-1] + ! KOchl : Chlorophyll degradation rate constant [day-1] + ! Chl2N : Chl:N ratio = PhyChl/PhyN [mgChl mmolN-1] + + sms(k,ipchl) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Chlorophyll Synthesis + !--------------------------------------------------------------------------- + + chlSynth * PhyC & ! Photoacclimation + !--------------------------------------------------------------------------- + ! SINKS: Degradation and Losses + !--------------------------------------------------------------------------- + + - KOchl * PhyChl & ! Natural degradation + - aggregationRate * PhyChl & ! Aggregation to detritus + - grazingFlux_phy * Chl2N & ! Mesozooplankton + - grazingFlux_phy2 * Chl2N * is_3zoo2det & ! Macrozooplankton + - grazingFlux_phy3 * Chl2N * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,ipchl) + + !=============================================================================== + ! 7. DETRITUS NITROGEN (DetN) + !=============================================================================== + ! Tracks nitrogen content in slow-sinking organic particles. + ! + ! Key Concepts: + ! - Sloppy Feeding: Not all grazed material is assimilated + ! Net detritus = Total grazing × (1 - grazing efficiency) + ! - Four Configurations: Based on Grazing_detritus and enable_3zoo2det flags + ! + ! Variables: + ! grazEff, grazEff2, grazEff3 : Grazing efficiency (assimilation) [-] + ! aggregationRate : Aggregation rate [day-1] + ! hetLossFlux, miczooLossFlux : Zooplankton mortality [mmolN m-3 day-1] + ! reminN : Remineralization rate [day-1] + ! arrFunc : Arrhenius temperature function [-] + ! O2Func : Oxygen limitation function [-] + ! grazingFlux_phy3, grazingFlux_dia3 : Grazing by microzooplankton [mmolN m-3 day-1] + ! grazingFlux_phy, grazingFlux_dia : Grazing by mesozooplankton [mmolN m-3 day-1] + ! DetN : Detrital nitrogen concentration [mmolN m-3] + ! dt_b : Time step [day] + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Configuration 1: WITH Detritus Grazing + 3 Zooplankton Types + !------------------------------------------------------------------------------- + + if (Grazing_detritus) then + if (enable_3zoo2det) then + sms(k,idetn) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Microzooplankton + !----------------------------------------------------------------------- + ! Net flux = Total grazing - Assimilated portion + + grazingFlux_phy3 - grazingFlux_phy3 * grazEff3 & ! Small phytoplankton + + grazingFlux_dia3 - grazingFlux_dia3 * grazEff3 & ! Diatoms + + (grazingFlux_Cocco3 - grazingFlux_Cocco3 * grazEff3) * is_coccos & ! Coccolithophores + + (grazingFlux_Phaeo3 - grazingFlux_Phaeo3 * grazEff3) * is_coccos & ! Phaeocystis + + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation + !----------------------------------------------------------------------- + + aggregationRate * PhyN & + + aggregationRate * DiaN & + + aggregationRate * CoccoN * is_coccos & + + aggregationRate * PhaeoN * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality + !----------------------------------------------------------------------- + + miczooLossFlux & + !----------------------------------------------------------------------- + ! SINKS: Detritus Consumption + !----------------------------------------------------------------------- + - grazingFlux_Det * grazEff & ! Mesozooplankton + - grazingFlux_Det2 * grazEff2 & ! Macrozooplankton + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminN * arrFunc * O2Func * DetN & ! Bacterial decomposition + ) * dt_b + sms(k,idetn) + + !------------------------------------------------------------------------------- + ! Configuration 2: WITH Detritus Grazing + 2 Zooplankton Types (Standard) + !------------------------------------------------------------------------------- + else + sms(k,idetn) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Mesozooplankton + !----------------------------------------------------------------------- + + grazingFlux_phy - grazingFlux_phy * grazEff & ! Small phytoplankton + + grazingFlux_dia - grazingFlux_dia * grazEff & ! Diatoms + + (grazingFlux_Cocco - grazingFlux_Cocco * grazEff) * is_coccos & ! Coccolithophores + + (grazingFlux_Phaeo - grazingFlux_Phaeo * grazEff) * is_coccos & ! Phaeocystis + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation + !----------------------------------------------------------------------- + + aggregationRate * PhyN & + + aggregationRate * DiaN & + + aggregationRate * CoccoN * is_coccos & + + aggregationRate * PhaeoN * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality + !----------------------------------------------------------------------- + + hetLossFlux & + !----------------------------------------------------------------------- + ! SINKS: Detritus Consumption + !----------------------------------------------------------------------- + - grazingFlux_Det * grazEff & ! Mesozooplankton + - grazingFlux_Det2 * grazEff2 & ! Macrozooplankton + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminN * arrFunc * O2Func * DetN & + ) * dt_b + sms(k,idetn) + endif + + !------------------------------------------------------------------------------- + ! Configuration 3: WITHOUT Detritus Grazing + 3 Zooplankton Types + !------------------------------------------------------------------------------- + else + if (enable_3zoo2det) then + sms(k,idetn) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Direct Transfer from Grazing + !----------------------------------------------------------------------- + ! All grazed material enters detritus (no detritus grazing) + + grazingFlux_phy3 & ! Microzooplankton->small phyto + + grazingFlux_dia3 & ! Microzooplankton->diatoms + + grazingFlux_Cocco3 * is_coccos & ! Microzooplankton->coccoliths + + grazingFlux_Phaeo3 * is_coccos & ! Microzooplankton->Phaeocystis + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation + !----------------------------------------------------------------------- + + aggregationRate * PhyN & + + aggregationRate * DiaN & + + aggregationRate * CoccoN * is_coccos & + + aggregationRate * PhaeoN * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality + !----------------------------------------------------------------------- + + miczooLossFlux & + !----------------------------------------------------------------------- + ! SINKS: Generic Zooplankton Consumption + !----------------------------------------------------------------------- + - grazingFlux * grazEff3 & + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminN * arrFunc * O2Func * DetN & + ) * dt_b + sms(k,idetn) + + !------------------------------------------------------------------------------- + ! Configuration 4: WITHOUT Detritus Grazing + 2 Zooplankton Types + !------------------------------------------------------------------------------- + else + sms(k,idetn) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Direct Transfer from Grazing + !----------------------------------------------------------------------- + + grazingFlux_phy & ! Mesozooplankton->small phyto + + grazingFlux_dia & ! Mesozooplankton->diatoms + + grazingFlux_Cocco * is_coccos & ! Mesozooplankton->coccoliths + + grazingFlux_Phaeo * is_coccos & ! Mesozooplankton->Phaeocystis + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation + !----------------------------------------------------------------------- + + aggregationRate * PhyN & + + aggregationRate * DiaN & + + aggregationRate * CoccoN * is_coccos & + + aggregationRate * PhaeoN * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality + !----------------------------------------------------------------------- + + hetLossFlux & + !----------------------------------------------------------------------- + ! SINKS: Generic Zooplankton Consumption + !----------------------------------------------------------------------- + - grazingFlux * grazEff & + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminN * arrFunc * O2Func * DetN & + ) * dt_b + sms(k,idetn) + + endif + end if + + !=============================================================================== + ! 8. DETRITUS CARBON (DetC) + !=============================================================================== + ! Tracks carbon content in slow-sinking organic particles + ! + ! Key Concepts: + ! - Stoichiometric Conversion: N-based fluxes -> C-based fluxes + ! Uses reciprocal quotas (recipQuota = C:N ratio) for conversion + ! - Sloppy Feeding: Net detritus = Total grazing × (1 - efficiency) + ! + ! Variables: + ! recipQuota, recipQuota_Dia, etc. : C:N quotas for phytoplankton [-] + ! recipDet, recipDet2 : C:N ratios in detritus [-] + ! recipQZoo, recipQZoo2, recipQZoo3: C:N ratios in zooplankton [-] + ! reminC : C remineralization rate [day-1] + ! +!=============================================================================== +! KEY CONCEPTS: +!=============================================================================== +! 1. SLOPPY FEEDING: Not all grazed material is assimilated +! - Net detritus production = Total grazing × (1 - grazing efficiency) +! - Represents fecal pellets and inefficient consumption +! +! 2. STOICHIOMETRIC CONVERSION: N-based fluxes -> C-based fluxes +! - recipQuota = C:N ratio of phytoplankton +! - recipDet = C:N ratio of detritus +! - recipQZoo = C:N ratio of zooplankton +! +! 3. FOOD WEB CONFIGURATIONS: +! - Grazing_detritus ON: Zooplankton can feed on detritus (coprophagy) +! - Grazing_detritus OFF: Detritus only forms from grazing/mortality +! - enable_3zoo2det: Adds microzooplankton + fast-sinking detritus +! +! 4. REMINERALIZATION: Temperature and oxygen dependent +! - arrFunc: Increases with temperature (Arrhenius kinetics) +! - O2Func: Decreases under low oxygen (anaerobic conditions) +!=============================================================================== + !------------------------------------------------------------------------------- + ! Configuration 1: WITH Detritus Grazing + 3 Zooplankton Types + !------------------------------------------------------------------------------- if (Grazing_detritus) then - sms(k,ihetc) = ( & - + grazingFlux_phy * recipQuota * grazEff & ! --> Grazing on small phytoplankton - + grazingFlux_Dia * recipQuota_Dia * grazEff & ! --> Grazing on diatom -#if defined (__coccos) - + grazingFlux_Cocco * recipQuota_Cocco * grazEff & - + grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & -#endif -#if defined (__3Zoo2Det) - + grazingFlux_miczoo * recipQZoo3 * grazEff & ! 3Zoo - + grazingFlux_DetZ2 * recipDet2 * grazEff & - - grazingFlux_het2 * recipQZoo & - - Mesfecalloss_c & ! 3Zoo -#endif - + grazingFlux_Det * recipDet * grazEff & ! --> Grazing on detritus - - hetLossFlux * recipQZoo & ! --> Mortality loss - - lossC_z * HetC & ! --> Excretion loss - - hetRespFlux & ! --> REspiration loss - ) * dt_b + sms(k,ihetc) + if (enable_3zoo2det) then + sms(k,idetc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Microzooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy3 * recipQuota * (1.d0 - grazEff3) & ! Small phyto + + grazingFlux_Dia3 * recipQuota_Dia * (1.d0 - grazEff3) & ! Diatoms + + grazingFlux_Cocco3 * recipQuota_Cocco * (1.d0 - grazEff3) * is_coccos & ! Coccoliths + + grazingFlux_Phaeo3 * recipQuota_Phaeo * (1.d0 - grazEff3) * is_coccos & ! Phaeocystis + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation (C-basis) + !----------------------------------------------------------------------- + + aggregationRate * PhyC & + + aggregationRate * DiaC & + + aggregationRate * CoccoC * is_coccos & + + aggregationRate * PhaeoC * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality (C-basis) + !----------------------------------------------------------------------- + + miczooLossFlux * recipQZoo3 & ! N->C conversion + !----------------------------------------------------------------------- + ! SINKS: Detritus Consumption (C-basis) + !----------------------------------------------------------------------- + - grazingFlux_Det * recipDet * grazEff & ! Mesozooplankton + - grazingFlux_Det2 * recipDet * grazEff2 & ! Macrozooplankton + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminC * arrFunc * O2Func * DetC & ! Bacterial respiration + ) * dt_b + sms(k,idetc) + + !------------------------------------------------------------------------------- + ! Configuration 2: WITH Detritus Grazing + 2 Zooplankton Types (Standard) + !------------------------------------------------------------------------------- + else + sms(k,idetc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Mesozooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota * (1.d0 - grazEff) & + + grazingFlux_Dia * recipQuota_Dia * (1.d0 - grazEff) & + + grazingFlux_Cocco * recipQuota_Cocco * (1.d0 - grazEff) * is_coccos & + + grazingFlux_Phaeo * recipQuota_Phaeo * (1.d0 - grazEff) * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation (C-basis) + !----------------------------------------------------------------------- + + aggregationRate * phyC & + + aggregationRate * DiaC & + + aggregationRate * CoccoC * is_coccos & + + aggregationRate * PhaeoC * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality (C-basis) + !----------------------------------------------------------------------- + + hetLossFlux * recipQZoo & + !----------------------------------------------------------------------- + ! SINKS: Detritus Consumption (C-basis) + !----------------------------------------------------------------------- + - grazingFlux_Det * recipDet * grazEff & + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminC * arrFunc * O2Func * DetC & + ) * dt_b + sms(k,idetc) + + endif + + !------------------------------------------------------------------------------- + ! Configuration 3: WITHOUT Detritus Grazing + 3 Zooplankton Types + !------------------------------------------------------------------------------- else - sms(k,ihetc) = ( & - + grazingFlux_phy * recipQuota * grazEff & - + grazingFlux_Dia * recipQuota_Dia * grazEff & -#if defined (__coccos) - + grazingFlux_Cocco * recipQuota_Cocco * grazEff & - + grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & -#endif -#if defined (__3Zoo2Det) - + grazingFlux_miczoo * recipQZoo3 * grazEff & ! 3Zoo - - grazingFlux_het2 * recipQZoo & - - Mesfecalloss_c & ! 3Zoo -#endif - - hetLossFlux * recipQZoo & - - lossC_z * HetC & - - hetRespFlux & - ) * dt_b + sms(k,ihetc) + if (enable_3zoo2det) then + sms(k,idetc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Microzooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy3 * recipQuota * (1.d0 - grazEff3) & + + grazingFlux_Dia3 * recipQuota_Dia * (1.d0 - grazEff3) & + + grazingFlux_Cocco3 * recipQuota_Cocco * (1.d0 - grazEff3) * is_coccos & + + grazingFlux_Phaeo3 * recipQuota_Phaeo * (1.d0 - grazEff3) * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation (C-basis) + !----------------------------------------------------------------------- + + aggregationRate * PhyC & + + aggregationRate * DiaC & + + aggregationRate * CoccoC * is_coccos & + + aggregationRate * PhaeoC * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality (C-basis) + !----------------------------------------------------------------------- + + miczooLossFlux * recipQZoo3 & + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminC * arrFunc * O2Func * DetC & + ) * dt_b + sms(k,idetc) + + !------------------------------------------------------------------------------- + ! Configuration 4: WITHOUT Detritus Grazing + 2 Zooplankton Types + !------------------------------------------------------------------------------- + else + sms(k,idetc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Mesozooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota * (1.d0 - grazEff) & + + grazingFlux_Dia * recipQuota_Dia * (1.d0 - grazEff) & + + grazingFlux_Cocco * recipQuota_Cocco * (1.d0 - grazEff) * is_coccos & + + grazingFlux_Phaeo * recipQuota_Phaeo * (1.d0 - grazEff) * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Aggregation (C-basis) + !----------------------------------------------------------------------- + + aggregationRate * phyC & + + aggregationRate * DiaC & + + aggregationRate * CoccoC * is_coccos & + + aggregationRate * PhaeoC * is_coccos & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality (C-basis) + !----------------------------------------------------------------------- + + hetLossFlux * recipQZoo & + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminC * arrFunc * O2Func * DetC & + ) * dt_b + sms(k,idetc) + + endif + end if + + !=============================================================================== + ! 9. MESOZOOPLANKTON NITROGEN (HetN) + !=============================================================================== + ! Primary herbivorous/omnivorous grazers that feed on phytoplankton and + ! smaller prey items. + ! + ! Variables: + ! grazingFlux : Total N grazing rate [mmolN m-3 day-1] + ! grazEff : Grazing/assimilation efficiency [-] + ! grazingFlux_het2 : Predation by macrozooplankton [mmolN m-3 day-1] + ! Mesfecalloss_n : Fecal pellet production [mmolN m-3 day-1] + ! hetLossFlux : Mortality flux [mmolN m-3 day-1] + ! lossN_z : DON excretion rate [day-1] + !------------------------------------------------------------------------------- + + sms(k,ihetn) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Grazing + !--------------------------------------------------------------------------- + + grazingFlux * grazEff & ! Assimilated N + !--------------------------------------------------------------------------- + ! SINKS: Predation, Mortality, Excretion + !--------------------------------------------------------------------------- + - grazingFlux_het2 * is_3zoo2det & ! Predation by macrozooplankton + - Mesfecalloss_n * is_3zoo2det & ! Fecal pellets + - hetLossFlux & ! Mortality + - lossN_z * HetN & ! DON excretion + ) * dt_b + sms(k,ihetn) + + !=============================================================================== + ! 10. MESOZOOPLANKTON CARBON (HetC) + !=============================================================================== + ! Carbon budget uses reciprocal quotas (C:N ratios) to convert N-based + ! grazing rates to carbon equivalents. + ! + ! Variables: + ! recipQuota, recipQuota_Dia, etc. : C:N ratios of prey items [-] + ! recipDet, recipDet2 : C:N ratios of detritus [-] + ! recipQZoo, recipQZoo3 : C:N ratios of zooplankton [-] + ! hetRespFlux : Respiration to CO2 [mmolC m-3 day-1] + ! lossC_z : DOC excretion rate [day-1] + !------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------- + ! Configuration: Mesozooplankton CAN Graze on Detritus + !------------------------------------------------------------------------------- + if (Grazing_detritus) then + sms(k,ihetc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Grazing (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota * grazEff & ! Small phytoplankton + + grazingFlux_Dia * recipQuota_Dia * grazEff & ! Diatoms + + grazingFlux_Cocco * recipQuota_Cocco * grazEff * is_coccos & ! Coccolithophores + + grazingFlux_Phaeo * recipQuota_Phaeo * grazEff * is_coccos & ! Phaeocystis + + grazingFlux_miczoo * recipQZoo3 * grazEff * is_3zoo2det & ! Microzooplankton + + grazingFlux_DetZ2 * recipDet2 * grazEff * is_3zoo2det & ! Fast-sinking detritus + + grazingFlux_Det * recipDet * grazEff & ! Slow-sinking detritus + !----------------------------------------------------------------------- + ! SINKS: Predation, Mortality, Respiration, Excretion + !----------------------------------------------------------------------- + - grazingFlux_het2 * recipQZoo * is_3zoo2det & ! Predation + - Mesfecalloss_c * is_3zoo2det & ! Fecal pellets + - hetLossFlux * recipQZoo & ! Mortality + - lossC_z * HetC & ! DOC excretion + - hetRespFlux & ! Respiration to CO2 + ) * dt_b + sms(k,ihetc) + + !------------------------------------------------------------------------------- + ! Configuration: Mesozooplankton CANNOT Graze on Detritus + !------------------------------------------------------------------------------- + else + sms(k,ihetc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Grazing (C-basis, herbivorous diet only) + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota * grazEff & + + grazingFlux_Dia * recipQuota_Dia * grazEff & + + grazingFlux_Cocco * recipQuota_Cocco * grazEff * is_coccos & + + grazingFlux_Phaeo * recipQuota_Phaeo * grazEff * is_coccos & + + grazingFlux_miczoo * recipQZoo3 * grazEff * is_3zoo2det & + !----------------------------------------------------------------------- + ! SINKS: Predation, Mortality, Respiration, Excretion + !----------------------------------------------------------------------- + - grazingFlux_het2 * recipQZoo * is_3zoo2det & + - Mesfecalloss_c * is_3zoo2det & + - hetLossFlux * recipQZoo & + - lossC_z * HetC & + - hetRespFlux & + ) * dt_b + sms(k,ihetc) endif -!< *** Macrozooplankton *** -!< ************************ - -#if defined (__3Zoo2Det) -!____________________________________________________________ -!< Second Zooplankton N - sms(k,izoo2n) = ( & - + grazingFlux2 * grazEff2 & - - Zoo2LossFlux & - - lossN_z2 * Zoo2N & - - Zoo2fecalloss_n & - ) * dt_b + sms(k,izoo2n) - -!____________________________________________________________ -!< Second Zooplankton C - if (Grazing_detritus) then - - sms(k,izoo2c) = ( & - + grazingFlux_phy2 * recipQuota * grazEff2 & - + grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & -#if defined (__coccos) - + grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & - + grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & -#endif - + grazingFlux_het2 * recipQZoo * grazEff2 & - + grazingFlux_miczoo2* recipQZoo3 * grazEff2 & ! 3Zoo - + grazingFlux_Det2 * recipDet * grazEff2 & - + grazingFlux_DetZ22 * recipDet2 * grazEff2 & - - zoo2LossFlux * recipQZoo2 & - - lossC_z2 * Zoo2C & - - Zoo2RespFlux & - - Zoo2fecalloss_c & - ) * dt_b + sms(k,izoo2c) - else - sms(k,izoo2c) = ( & - + grazingFlux_phy2 * recipQuota * grazEff2 & - + grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & -#if defined (__coccos) - + grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & - + grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & -#endif - + grazingFlux_het2 * recipQZoo * grazEff2 & - + grazingFlux_miczoo2* recipQZoo3 * grazEff2 & ! 3Zoo - - zoo2LossFlux * recipQZoo2 & - - lossC_z2 * Zoo2C & - - Zoo2RespFlux & - - Zoo2fecalloss_c & - ) * dt_b + sms(k,izoo2c) - end if - -!< *** Microzooplankton *** -!< ************************ - -!____________________________________________________________ -!< Third Zooplankton N - sms(k,imiczoon) = ( & - + grazingFlux3 * grazEff3 & - - grazingFlux_miczoo & - - grazingFlux_miczoo2 & - - MicZooLossFlux & - - lossN_z3 * MicZooN & - ) * dt_b + sms(k,imiczoon) - -!____________________________________________________________ -!< Third Zooplankton C - sms(k,imiczooc) = ( & - + grazingFlux_phy3 * recipQuota * grazEff3 & - + grazingFlux_Dia3 * recipQuota_Dia * grazEff3 & -#if defined (__coccos) - + grazingFlux_Cocco3 * recipQuota_Cocco * grazEff3 & - + grazingFlux_Phaeo3 * recipQuota_Phaeo * grazEff3 & -#endif - - MicZooLossFlux * recipQZoo3 & - - grazingFlux_miczoo * recipQZoo3 & - - grazingFlux_miczoo2 * recipQZoo3 & - - lossC_z3 * MicZooC & - - MicZooRespFlux & - ) * dt_b + sms(k,imiczooc) - -!< *** Fast-sinking Detritus *** -!< ***************************** - -!____________________________________________________________ -!< Second Zooplankton (Macro) Detritus N - if (Grazing_detritus) then - sms(k,idetz2n) = ( & - + grazingFlux_phy2 & - - grazingFlux_phy2 * grazEff2 & - + grazingFlux_dia2 & - - grazingFlux_dia2 * grazEff2 & -#if defined (__coccos) - + grazingFlux_Cocco & - - grazingFlux_Cocco * grazEff & - + grazingFlux_Cocco2 & - - grazingFlux_Cocco2 * grazEff2 & - + grazingFlux_Phaeo & - - grazingFlux_Phaeo * grazEff & - + grazingFlux_Phaeo2 & - - grazingFlux_Phaeo2 * grazEff2 & -#endif - + grazingFlux_het2 & - - grazingFlux_het2 * grazEff2 & - + grazingFlux_miczoo2 & - - grazingFlux_miczoo2 * grazEff2 & - + grazingFlux_phy & - - grazingFlux_phy * grazEff & - + grazingFlux_dia & - - grazingFlux_dia * grazEff & - + grazingFlux_miczoo & - - grazingFlux_miczoo * grazEff & - - grazingFlux_DetZ2 * grazEff & - - grazingFlux_DetZ22 * grazEff2 & - + Zoo2LossFlux & - + hetLossFlux & - + Zoo2fecalloss_n & - + Mesfecalloss_n & - - reminN * arrFunc * O2Func * DetZ2N & ! O2remin - ) * dt_b + sms(k,idetz2n) - else - sms(k,idetz2n) = ( & - + grazingFlux_phy2 & - + grazingFlux_dia2 & -#if defined (__coccos) - + grazingFlux_Cocco & - + grazingFlux_Cocco2 & - + grazingFlux_Phaeo & - + grazingFlux_Phaeo2 & -#endif - + grazingFlux_het2 & - + grazingFlux_miczoo2 & - - grazingFlux2 * grazEff2 & - + grazingFlux_phy & - + grazingFlux_dia & - + grazingFlux_miczoo & - - grazingFlux * grazEff & - + Zoo2LossFlux & - + hetLossFlux & - + Zoo2fecalloss_n & - + Mesfecalloss_n & - - reminN * arrFunc * O2Func * DetZ2N & ! O2remin - ) * dt_b + sms(k,idetz2n) - end if - -!____________________________________________________________ -!< Second Zooplankton Detritus C - if (Grazing_detritus) then - sms(k,idetz2c) = ( & - + grazingFlux_phy2 * recipQuota & - - grazingFlux_phy2 * recipQuota * grazEff2 & - + grazingFlux_Dia2 * recipQuota_Dia & - - grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & -#if defined (__coccos) - + grazingFlux_Cocco * recipQuota_Cocco & - - grazingFlux_Cocco * recipQuota_Cocco * grazEff & - + grazingFlux_Cocco2 * recipQuota_Cocco & - - grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & - + grazingFlux_Phaeo * recipQuota_Phaeo & - - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & - + grazingFlux_Phaeo2 * recipQuota_Phaeo & - - grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & -#endif - + grazingFlux_het2 * recipQZoo & - - grazingFlux_het2 * recipQZoo * grazEff2 & - + grazingFlux_miczoo2 * recipQZoo3 & - - grazingFlux_miczoo2 * recipQZoo3 * grazEff2 & - + grazingFlux_phy * recipQuota & - - grazingFlux_phy * recipQuota * grazEff & - + grazingFlux_Dia * recipQuota_Dia & - - grazingFlux_Dia * recipQuota_Dia * grazEff & - + grazingFlux_miczoo * recipQZoo3 & - - grazingFlux_miczoo * recipQZoo3 * grazEff & - - grazingFlux_DetZ2 * recipDet2 * grazEff & - - grazingFlux_DetZ22 * recipDet2 * grazEff2 & - + Zoo2LossFlux * recipQZoo2 & - + hetLossFlux * recipQZoo & - + Zoo2fecalloss_c & - + Mesfecalloss_c & - - reminC * arrFunc * O2Func * DetZ2C & ! O2remin - ) * dt_b + sms(k,idetz2c) - else - sms(k,idetz2c) = ( & - + grazingFlux_phy2 * recipQuota & - - grazingFlux_phy2 * recipQuota * grazEff2 & - + grazingFlux_Dia2 * recipQuota_Dia & - - grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & -#if defined (__coccos) - + grazingFlux_Cocco * recipQuota_Cocco & - - grazingFlux_Cocco * recipQuota_Cocco * grazEff & - + grazingFlux_Cocco2 * recipQuota_Cocco & - - grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 & - + grazingFlux_Phaeo * recipQuota_Phaeo & - - grazingFlux_Phaeo * recipQuota_Phaeo * grazEff & - + grazingFlux_Phaeo2 * recipQuota_Phaeo & - - grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 & -#endif - + grazingFlux_het2 * recipQZoo & - - grazingFlux_het2 * recipQZoo * grazEff2 & - + grazingFlux_miczoo2 * recipQZoo3 & - - grazingFlux_miczoo2 * recipQZoo3 * grazEff2 & - + grazingFlux_phy * recipQuota & - - grazingFlux_phy * recipQuota * grazEff & - + grazingFlux_Dia * recipQuota_Dia & - - grazingFlux_Dia * recipQuota_Dia * grazEff & - + grazingFlux_miczoo * recipQZoo3 & - - grazingFlux_miczoo * recipQZoo3 * grazEff & - + Zoo2LossFlux * recipQZoo2 & - + hetLossFlux * recipQZoo & - + Zoo2fecalloss_c & - + Mesfecalloss_c & - - reminC * arrFunc * O2Func * DetZ2C & ! O2remin - ) * dt_b + sms(k,idetz2c) - end if - -!____________________________________________________________ -!< Second Zooplankton Detritus Si - sms(k,idetz2si) = ( & - + grazingFlux_dia2 * qSiN & ! --> qSin convert N to Si - + grazingFlux_dia * qSiN & - - reminSiT * DetZ2Si & - ) * dt_b + sms(k,idetz2si) - -!____________________________________________________________ -!< Second Zooplankton Detritus calcite - sms(k,idetz2calc) = ( & - + calc_loss_gra2 & - - calc_loss_gra2 * calc_diss_guts & - + calc_loss_gra & - - calc_loss_gra * calc_diss_guts & - - calc_diss2 * DetZ2Calc & - ) * dt_b + sms(k,idetz2calc) -#endif - -!< *** DOM *** -!< *********** - -!____________________________________________________________ -!< DON (Extracellular organic N) - - sms(k,idon) = ( & - + lossN * limitFacN * phyN & - + lossN_d * limitFacN_Dia * DiaN & -#if defined (__coccos) - + lossN_c * limitFacN_Cocco * CoccoN & - + lossN_p * limitFacN_Phaeo * PhaeoN & -#endif - + reminN * arrFunc * O2Func * DetN & - + lossN_z * HetN & -#if defined (__3Zoo2Det) - + reminN * arrFunc * O2Func * DetZ2N & - + lossN_z2 * Zoo2N & - + lossN_z3 * MicZooN & ! 3Zoo -#endif - - rho_N * arrFunc * O2Func * DON & ! O2remin - ) * dt_b + sms(k,idon) - -!____________________________________________________________ -!< EOC - - sms(k,idoc) = ( & - + lossC * limitFacN * phyC & - + lossC_d * limitFacN_dia * DiaC & -#if defined (__coccos) - + lossC_c * limitFacN_cocco * CoccoC & - + lossC_p * limitFacN_Phaeo * PhaeoC & -#endif - + reminC * arrFunc * O2Func * DetC & - + lossC_z * HetC & -#if defined (__3Zoo2Det) - + reminC * arrFunc * O2Func * DetZ2C & - + lossC_z2 * Zoo2C & - + lossC_z3 * MicZooC & ! 3Zoo -#endif - - rho_c1 * arrFunc * O2Func * EOC & ! O2remin - ) * dt_b + sms(k,idoc) - -!< *** Diatoms *** -!< *************** - -!____________________________________________________________ -!< Diatom N + !=============================================================================== + ! 11. MACROZOOPLANKTON NITROGEN (Zoo2N) + !=============================================================================== + ! Larger predatory zooplankton that feed on mesozooplankton, microzooplankton, + ! and phytoplankton. Only active when enable_3zoo2det = .true. + ! + ! Variables: + ! grazingFlux2 : Total N grazing rate [mmolN m-3 day-1] + ! grazEff2 : Grazing/assimilation efficiency [-] + ! Zoo2LossFlux : Mortality flux [mmolN m-3 day-1] + ! lossN_z2 : DON excretion rate [day-1] + ! Zoo2fecalloss_n : Fecal pellet production [mmolN m-3 day-1] + !------------------------------------------------------------------------------- + + if (enable_3zoo2det) then + sms(k,izoo2n) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Grazing + !----------------------------------------------------------------------- + + grazingFlux2 * grazEff2 & ! Assimilated N + !----------------------------------------------------------------------- + ! SINKS: Mortality, Excretion, Fecal Pellets + !----------------------------------------------------------------------- + - Zoo2LossFlux & ! Mortality + - lossN_z2 * Zoo2N & ! DON excretion + - Zoo2fecalloss_n & ! Fecal pellets + ) * dt_b + sms(k,izoo2n) + + !=============================================================================== + ! 12. MACROZOOPLANKTON CARBON (Zoo2C) + !=============================================================================== + ! Carbon budget for macrozooplankton with stoichiometric conversions. + ! + ! Variables: + ! recipQuota, recipQuota_Dia, etc. : C:N ratios of prey [-] + ! recipDet, recipDet2 : C:N ratios of detritus [-] + ! recipQZoo, recipQZoo2, recipQZoo3: C:N ratios of zooplankton [-] + ! Zoo2RespFlux : Respiration to CO2 [mmolC m-3 day-1] + ! lossC_z2 : DOC excretion rate [day-1] + !------------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Configuration: Macrozooplankton CAN Graze on Detritus + !--------------------------------------------------------------------------- + + if (Grazing_detritus) then + sms(k,izoo2c) = ( & + !------------------------------------------------------------------- + ! SOURCES: Grazing (C-basis) + !------------------------------------------------------------------- + + grazingFlux_phy2 * recipQuota * grazEff2 & ! Small phytoplankton + + grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & ! Diatoms + + grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 * is_coccos & ! Coccolithophores + + grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 * is_coccos & ! Phaeocystis + + grazingFlux_het2 * recipQZoo * grazEff2 & ! Mesozooplankton (predation) + + grazingFlux_miczoo2* recipQZoo3 * grazEff2 & ! Microzooplankton + + grazingFlux_Det2 * recipDet * grazEff2 & ! Slow-sinking detritus + + grazingFlux_DetZ22 * recipDet2 * grazEff2 & ! Fast-sinking detritus + !------------------------------------------------------------------- + ! SINKS: Mortality, Respiration, Excretion, Fecal Pellets + !------------------------------------------------------------------- + - zoo2LossFlux * recipQZoo2 & ! Mortality + - lossC_z2 * Zoo2C & ! DOC excretion + - Zoo2RespFlux & ! Respiration to CO2 + - Zoo2fecalloss_c & ! Fecal pellets + ) * dt_b + sms(k,izoo2c) + + !--------------------------------------------------------------------------- + ! Configuration: Macrozooplankton CANNOT Graze on Detritus + !--------------------------------------------------------------------------- + else + sms(k,izoo2c) = ( & + !------------------------------------------------------------------- + ! SOURCES: Grazing (C-basis, no detritus feeding) + !------------------------------------------------------------------- + + grazingFlux_phy2 * recipQuota * grazEff2 & + + grazingFlux_Dia2 * recipQuota_Dia * grazEff2 & + + grazingFlux_Cocco2 * recipQuota_Cocco * grazEff2 * is_coccos & + + grazingFlux_Phaeo2 * recipQuota_Phaeo * grazEff2 * is_coccos & + + grazingFlux_het2 * recipQZoo * grazEff2 & + + grazingFlux_miczoo2* recipQZoo3 * grazEff2 & + !------------------------------------------------------------------- + ! SINKS: Mortality, Respiration, Excretion, Fecal Pellets + !------------------------------------------------------------------- + - zoo2LossFlux * recipQZoo2 & + - lossC_z2 * Zoo2C & + - Zoo2RespFlux & + - Zoo2fecalloss_c & + ) * dt_b + sms(k,izoo2c) + + end if + + !=============================================================================== + ! 13. MICROZOOPLANKTON NITROGEN (MicZooN) + !=============================================================================== + ! Small heterotrophic protists that graze on phytoplankton and are prey for + ! meso- and macrozooplankton. + ! + ! Variables: + ! grazingFlux3 : Total N grazing rate [mmolN m-3 day-1] + ! grazEff3 : Grazing/assimilation efficiency [-] + ! grazingFlux_miczoo : Predation by mesozooplankton [mmolN m-3 day-1] + ! grazingFlux_miczoo2: Predation by macrozooplankton [mmolN m-3 day-1] + ! MicZooLossFlux : Mortality flux [mmolN m-3 day-1] + ! lossN_z3 : DON excretion rate [day-1] + !------------------------------------------------------------------------------- + + sms(k,imiczoon) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Grazing + !----------------------------------------------------------------------- + + grazingFlux3 * grazEff3 & ! Assimilated N + !----------------------------------------------------------------------- + ! SINKS: Predation, Mortality, Excretion + !----------------------------------------------------------------------- + - grazingFlux_miczoo & ! Predation by mesozooplankton + - grazingFlux_miczoo2 & ! Predation by macrozooplankton + - MicZooLossFlux & ! Mortality + - lossN_z3 * MicZooN & ! DON excretion + ) * dt_b + sms(k,imiczoon) + + !=============================================================================== + ! 14. MICROZOOPLANKTON CARBON (MicZooC) + !=============================================================================== + ! Carbon budget for microzooplankton with stoichiometric conversions. + ! + ! Variables: + ! recipQuota, recipQuota_Dia, etc. : C:N ratios of prey [-] + ! recipQZoo3 : C:N ratio of microzooplankton [-] + ! MicZooRespFlux : Respiration to CO2 [mmolC m-3 day-1] + ! lossC_z3 : DOC excretion rate [day-1] + !------------------------------------------------------------------------------- + + sms(k,imiczooc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Grazing (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy3 * recipQuota * grazEff3 & ! Small phytoplankton + + grazingFlux_Dia3 * recipQuota_Dia * grazEff3 & ! Diatoms + + grazingFlux_Cocco3 * recipQuota_Cocco * grazEff3 * is_coccos & ! Coccolithophores + + grazingFlux_Phaeo3 * recipQuota_Phaeo * grazEff3 * is_coccos & ! Phaeocystis + !----------------------------------------------------------------------- + ! SINKS: Predation, Mortality, Respiration, Excretion + !----------------------------------------------------------------------- + - MicZooLossFlux * recipQZoo3 & ! Mortality + - grazingFlux_miczoo * recipQZoo3 & ! Predation by mesozooplankton + - grazingFlux_miczoo2 * recipQZoo3 & ! Predation by macrozooplankton + - lossC_z3 * MicZooC & ! DOC excretion + - MicZooRespFlux & ! Respiration to CO2 + ) * dt_b + sms(k,imiczooc) + + end if + + !=============================================================================== + ! 15. FAST-SINKING DETRITUS NITROGEN (DetZ2N) + !=============================================================================== + ! Particulate organic matter produced from zooplankton mortality, fecal pellets, + ! and unassimilated grazing. Sinks faster than regular detritus. + ! Only active when enable_3zoo2det = .true. + ! + ! Variables: + ! grazingFlux_phy, grazingFlux_phy2 : Grazing on small phyto [mmolN m-3 day-1] + ! grazingFlux_dia, grazingFlux_dia2 : Grazing on diatoms [mmolN m-3 day-1] + ! grazingFlux_het2 : Predation on mesozooplankton [mmolN m-3 day-1] + ! grazingFlux_miczoo, grazingFlux_miczoo2 : Grazing on microzooplankton [mmolN m-3 day-1] + ! grazingFlux_DetZ2, grazingFlux_DetZ22 : Grazing on fast detritus [mmolN m-3 day-1] + ! Zoo2LossFlux, hetLossFlux : Zooplankton mortality [mmolN m-3 day-1] + ! Zoo2fecalloss_n, Mesfecalloss_n : Fecal pellet production [mmolN m-3 day-1] + ! reminN : Remineralization rate [day-1] + !------------------------------------------------------------------------------- + + if (enable_3zoo2det) then + + !--------------------------------------------------------------------------- + ! Configuration: Zooplankton CAN Graze on Fast-Sinking Detritus + !--------------------------------------------------------------------------- + if (Grazing_detritus) then + sms(k,idetz2n) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Macrozooplankton + !----------------------------------------------------------------------- + + grazingFlux_phy2 * (1.d0 - grazEff2) & ! Small phytoplankton + + grazingFlux_dia2 * (1.d0 - grazEff2) & ! Diatoms + + grazingFlux_Cocco * (1.d0 - grazEff) * is_coccos & ! Coccoliths (meso) + + grazingFlux_Cocco2 * (1.d0 - grazEff2) * is_coccos & ! Coccoliths (macro) + + grazingFlux_Phaeo * (1.d0 - grazEff) * is_coccos & ! Phaeocystis (meso) + + grazingFlux_Phaeo2 * (1.d0 - grazEff2) * is_coccos & ! Phaeocystis (macro) + + grazingFlux_het2 * (1.d0 - grazEff2) & ! Mesozooplankton (predation) + + grazingFlux_miczoo2 * (1.d0 - grazEff2) & ! Microzooplankton + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Mesozooplankton + !----------------------------------------------------------------------- + + grazingFlux_phy * (1.d0 - grazEff) & ! Small phytoplankton + + grazingFlux_dia * (1.d0 - grazEff) & ! Diatoms + + grazingFlux_miczoo * (1.d0 - grazEff) & ! Microzooplankton + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality + !----------------------------------------------------------------------- + + Zoo2LossFlux & ! Macrozooplankton + + hetLossFlux & ! Mesozooplankton + !----------------------------------------------------------------------- + ! SOURCES: Fecal Pellet Production + !----------------------------------------------------------------------- + + Zoo2fecalloss_n & ! Macrozooplankton + + Mesfecalloss_n & ! Mesozooplankton + !----------------------------------------------------------------------- + ! SINKS: Detritus Consumption (Coprophagy) + !----------------------------------------------------------------------- + - grazingFlux_DetZ2 * grazEff & ! Mesozooplankton + - grazingFlux_DetZ22 * grazEff2 & ! Macrozooplankton + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminN * arrFunc * O2Func * DetZ2N & ! Bacterial decomposition + ) * dt_b + sms(k,idetz2n) + + !--------------------------------------------------------------------------- + ! Configuration: Zooplankton CANNOT Graze on Fast-Sinking Detritus + !--------------------------------------------------------------------------- + else + sms(k,idetz2n) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Macrozooplankton + !----------------------------------------------------------------------- + + grazingFlux_phy2 & ! All grazing enters detritus + + grazingFlux_dia2 & + + grazingFlux_Cocco * is_coccos & + + grazingFlux_Cocco2 * is_coccos & + + grazingFlux_Phaeo * is_coccos & + + grazingFlux_Phaeo2 * is_coccos & + + grazingFlux_het2 & + + grazingFlux_miczoo2 & + - grazingFlux2 * grazEff2 & ! Minus assimilated portion + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Mesozooplankton + !----------------------------------------------------------------------- + + grazingFlux_phy & + + grazingFlux_dia & + + grazingFlux_miczoo & + - grazingFlux * grazEff & ! Minus assimilated portion + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality + !----------------------------------------------------------------------- + + Zoo2LossFlux & + + hetLossFlux & + !----------------------------------------------------------------------- + ! SOURCES: Fecal Pellet Production + !----------------------------------------------------------------------- + + Zoo2fecalloss_n & + + Mesfecalloss_n & + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminN * arrFunc * O2Func * DetZ2N & + ) * dt_b + sms(k,idetz2n) + end if + + !=============================================================================== + ! 16. FAST-SINKING DETRITUS CARBON (DetZ2C) + !=============================================================================== + ! Carbon budget for fast-sinking detritus with stoichiometric conversions. + ! + ! Variables: + ! recipQuota, recipQuota_Dia, etc. : C:N ratios of phytoplankton [-] + ! recipQZoo, recipQZoo2, recipQZoo3: C:N ratios of zooplankton [-] + ! recipDet2 : C:N ratio of fast-sinking detritus [-] + ! reminC : C remineralization rate [day-1] + !------------------------------------------------------------------------------- + + !--------------------------------------------------------------------------- + ! Configuration: Zooplankton CAN Graze on Fast-Sinking Detritus + !--------------------------------------------------------------------------- + if (Grazing_detritus) then + sms(k,idetz2c) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Macrozooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy2 * recipQuota * (1.d0 - grazEff2) & ! Small phyto + + grazingFlux_Dia2 * recipQuota_Dia * (1.d0 - grazEff2) & ! Diatoms + + grazingFlux_Cocco * recipQuota_Cocco * (1.d0 - grazEff) * is_coccos & ! Coccoliths (meso) + + grazingFlux_Cocco2 * recipQuota_Cocco * (1.d0 - grazEff2) * is_coccos & ! Coccoliths (macro) + + grazingFlux_Phaeo * recipQuota_Phaeo * (1.d0 - grazEff) * is_coccos & ! Phaeocystis (meso) + + grazingFlux_Phaeo2 * recipQuota_Phaeo * (1.d0 - grazEff2) * is_coccos & ! Phaeocystis (macro) + + grazingFlux_het2 * recipQZoo * (1.d0 - grazEff2) & ! Mesozooplankton + + grazingFlux_miczoo2 * recipQZoo3 * (1.d0 - grazEff2) & ! Microzooplankton + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Mesozooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota * (1.d0 - grazEff) & ! Small phyto + + grazingFlux_Dia * recipQuota_Dia * (1.d0 - grazEff) & ! Diatoms + + grazingFlux_miczoo * recipQZoo3 * (1.d0 - grazEff) & ! Microzooplankton + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality (C-basis) + !----------------------------------------------------------------------- + + Zoo2LossFlux * recipQZoo2 & ! Macrozooplankton (N->C) + + hetLossFlux * recipQZoo & ! Mesozooplankton (N->C) + !----------------------------------------------------------------------- + ! SOURCES: Fecal Pellet Production (C-basis) + !----------------------------------------------------------------------- + + Zoo2fecalloss_c & ! Macrozooplankton + + Mesfecalloss_c & ! Mesozooplankton + !----------------------------------------------------------------------- + ! SINKS: Detritus Consumption (C-basis) + !----------------------------------------------------------------------- + - grazingFlux_DetZ2 * recipDet2 * grazEff & ! Mesozooplankton + - grazingFlux_DetZ22 * recipDet2 * grazEff2 & ! Macrozooplankton + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminC * arrFunc * O2Func * DetZ2C & ! Bacterial respiration + ) * dt_b + sms(k,idetz2c) + + !--------------------------------------------------------------------------- + ! Configuration: Zooplankton CANNOT Graze on Fast-Sinking Detritus + !--------------------------------------------------------------------------- + else + sms(k,idetz2c) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Macrozooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy2 * recipQuota * (1.d0 - grazEff2) & + + grazingFlux_Dia2 * recipQuota_Dia * (1.d0 - grazEff2) & + + grazingFlux_Cocco * recipQuota_Cocco * (1.d0 - grazEff) * is_coccos & + + grazingFlux_Cocco2 * recipQuota_Cocco * (1.d0 - grazEff2) * is_coccos & + + grazingFlux_Phaeo * recipQuota_Phaeo * (1.d0 - grazEff) * is_coccos & + + grazingFlux_Phaeo2 * recipQuota_Phaeo * (1.d0 - grazEff2) * is_coccos & + + grazingFlux_het2 * recipQZoo * (1.d0 - grazEff2) & + + grazingFlux_miczoo2 * recipQZoo3 * (1.d0 - grazEff2) & + !----------------------------------------------------------------------- + ! SOURCES: Sloppy Feeding by Mesozooplankton (C-basis) + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota * (1.d0 - grazEff) & + + grazingFlux_Dia * recipQuota_Dia * (1.d0 - grazEff) & + + grazingFlux_miczoo * recipQZoo3 * (1.d0 - grazEff) & + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Mortality (C-basis) + !----------------------------------------------------------------------- + + Zoo2LossFlux * recipQZoo2 & + + hetLossFlux * recipQZoo & + !----------------------------------------------------------------------- + ! SOURCES: Fecal Pellet Production (C-basis) + !----------------------------------------------------------------------- + + Zoo2fecalloss_c & + + Mesfecalloss_c & + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminC * arrFunc * O2Func * DetZ2C & + ) * dt_b + sms(k,idetz2c) + end if + + !=============================================================================== + ! 17. FAST-SINKING DETRITUS SILICA (DetZ2Si) + !=============================================================================== + ! Biogenic silica from diatom frustules in fast-sinking detritus. + ! + ! Variables: + ! grazingFlux_dia, grazingFlux_dia2 : Grazing on diatoms [mmolN m-3 day-1] + ! qSiN : Si:N ratio in diatoms [mmolSi mmolN-1] + ! reminSiT : Temperature-dependent dissolution [day-1] + !------------------------------------------------------------------------------- + + sms(k,idetz2si) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Grazing on Diatoms + !----------------------------------------------------------------------- + + grazingFlux_dia2 * qSiN & ! Macrozooplankton grazing + + grazingFlux_dia * qSiN & ! Mesozooplankton grazing + !----------------------------------------------------------------------- + ! SINKS: Dissolution + !----------------------------------------------------------------------- + - reminSiT * DetZ2Si & ! Temperature-dependent + ) * dt_b + sms(k,idetz2si) + + !=============================================================================== + ! 18. FAST-SINKING DETRITUS CALCITE (DetZ2Calc) + !=============================================================================== + ! Calcite particles from coccolithophore shells in fast-sinking detritus. + ! + ! Variables: + ! calc_loss_gra, calc_loss_gra2 : Calcite from grazing [mmolCaCO3 m-3 day-1] + ! calc_diss_guts : Gut dissolution fraction [-] + ! calc_diss2 : Water column dissolution rate [day-1] + !------------------------------------------------------------------------------- + + sms(k,idetz2calc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Grazing on Calcifying Phytoplankton + !----------------------------------------------------------------------- + + calc_loss_gra2 * (1.d0 - calc_diss_guts) & ! Macrozooplankton (net) + + calc_loss_gra * (1.d0 - calc_diss_guts) & ! Mesozooplankton (net) + !----------------------------------------------------------------------- + ! SINKS: Dissolution in Water Column + !----------------------------------------------------------------------- + - calc_diss2 * DetZ2Calc & ! CaCO3 dissolution + ) * dt_b + sms(k,idetz2calc) + + endif ! enable_3zoo2det + + !=============================================================================== + ! 19. DISSOLVED ORGANIC NITROGEN (DON) + !=============================================================================== + ! Dissolved organic nitrogen pool from phytoplankton excretion, zooplankton + ! metabolism, and detrital remineralization. + ! + ! Variables: + ! lossN, lossN_d, lossN_c, lossN_p : Phytoplankton DON excretion rates [day-1] + ! limitFacN, limitFacN_Dia, etc. : N:C ratio limiters (regulate excretion) [-] + ! reminN : Detrital N remineralization rate [day-1] + ! rho_N : DON remineralization rate [day-1] + ! lossN_z, lossN_z2, lossN_z3 : Zooplankton DON excretion rates [day-1] + ! arrFunc : Arrhenius temperature function [-] + ! O2Func : Oxygen limitation function [-] + !------------------------------------------------------------------------------- + + sms(k,idon) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Phytoplankton Excretion + !--------------------------------------------------------------------------- + + lossN * limitFacN * phyN & ! Small phytoplankton + + lossN_d * limitFacN_Dia * DiaN & ! Diatoms + + lossN_c * limitFacN_Cocco * CoccoN * is_coccos & ! Coccolithophores + + lossN_p * limitFacN_Phaeo * PhaeoN * is_coccos & ! Phaeocystis + !--------------------------------------------------------------------------- + ! SOURCES: Detrital Remineralization + !--------------------------------------------------------------------------- + + reminN * arrFunc * O2Func * DetN & ! Slow-sinking detritus + + reminN * arrFunc * O2Func * DetZ2N * is_3zoo2det & ! Fast-sinking detritus + !--------------------------------------------------------------------------- + ! SOURCES: Zooplankton Excretion + !--------------------------------------------------------------------------- + + lossN_z * HetN & ! Mesozooplankton + + lossN_z2 * Zoo2N * is_3zoo2det & ! Macrozooplankton + + lossN_z3 * MicZooN * is_3zoo2det & ! Microzooplankton + !--------------------------------------------------------------------------- + ! SINKS: Remineralization to NH4 + !--------------------------------------------------------------------------- + - rho_N * arrFunc * O2Func * DON & ! Bacterial remineralization + ) * dt_b + sms(k,idon) + + !=============================================================================== + ! 20. EXTRACELLULAR ORGANIC CARBON (EOC / DOC) + !=============================================================================== + ! Dissolved organic carbon pool from phytoplankton excretion, zooplankton + ! metabolism, and detrital remineralization. + ! + ! Variables: + ! lossC, lossC_d, lossC_c, lossC_p : Phytoplankton DOC excretion rates [day-1] + ! limitFacN, limitFacN_dia, etc. : N:C ratio limiters (regulate excretion) [-] + ! reminC : Detrital C remineralization rate [day-1] + ! rho_c1 : DOC remineralization rate [day-1] + ! lossC_z, lossC_z2, lossC_z3 : Zooplankton DOC excretion rates [day-1] + !------------------------------------------------------------------------------- + + sms(k,idoc) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Phytoplankton Excretion + !--------------------------------------------------------------------------- + + lossC * limitFacN * phyC & ! Small phytoplankton + + lossC_d * limitFacN_dia * DiaC & ! Diatoms + + lossC_c * limitFacN_cocco * CoccoC * is_coccos & ! Coccolithophores + + lossC_p * limitFacN_Phaeo * PhaeoC * is_coccos & ! Phaeocystis + !--------------------------------------------------------------------------- + ! SOURCES: Detrital Remineralization + !--------------------------------------------------------------------------- + + reminC * arrFunc * O2Func * DetC & ! Slow-sinking detritus + + reminC * arrFunc * O2Func * DetZ2C * is_3zoo2det & ! Fast-sinking detritus + !--------------------------------------------------------------------------- + ! SOURCES: Zooplankton Excretion + !--------------------------------------------------------------------------- + + lossC_z * HetC & ! Mesozooplankton + + lossC_z2 * Zoo2C * is_3zoo2det & ! Macrozooplankton + + lossC_z3 * MicZooC * is_3zoo2det & ! Microzooplankton + !--------------------------------------------------------------------------- + ! SINKS: Remineralization to CO2 + !--------------------------------------------------------------------------- + - rho_c1 * arrFunc * O2Func * EOC & ! Bacterial respiration + ) * dt_b + sms(k,idoc) + + !=============================================================================== + ! 21. DIATOM NITROGEN (DiaN) + !=============================================================================== + ! Tracks nitrogen content of diatoms (large phytoplankton with silica frustules). + ! + ! Variables: + ! N_assim_dia : N assimilation rate [day-1] + ! lossN_d : N loss rate [day-1] + ! limitFacN_dia : Limiter function for N:C ratio regulation [-] + ! aggregationRate : Aggregation to detritus [day-1] + ! grazingFlux_Dia : Mesozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_Dia2 : Macrozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_Dia3 : Microzooplankton grazing [mmolN m-3 day-1] + !------------------------------------------------------------------------------- + + sms(k,idian) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Nitrogen Assimilation + !--------------------------------------------------------------------------- + + N_assim_dia * DiaC & + !--------------------------------------------------------------------------- + ! SINKS: DON Excretion + !--------------------------------------------------------------------------- + - lossN_d * limitFacN_dia * DiaN & + !--------------------------------------------------------------------------- + ! SINKS: Aggregation + !--------------------------------------------------------------------------- + - aggregationRate * DiaN & + !--------------------------------------------------------------------------- + ! SINKS: Grazing + !--------------------------------------------------------------------------- + - grazingFlux_Dia & ! Mesozooplankton + - grazingFlux_Dia2 * is_3zoo2det & ! Macrozooplankton + - grazingFlux_Dia3 * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,idian) + + !=============================================================================== + ! 22. DIATOM CARBON (DiaC) + !=============================================================================== + ! Tracks carbon content of diatoms. + ! + ! Variables: + ! Cphot_dia : Gross photosynthesis rate [day-1] + ! phyRespRate_dia : Autotrophic respiration rate [day-1] + ! lossC_d : C loss rate [day-1] + ! recipQuota_dia : Reciprocal of N:C quota (for N->C conversion) [-] + !------------------------------------------------------------------------------- + + sms(k,idiac) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Net Photosynthesis + !--------------------------------------------------------------------------- + + Cphot_dia * DiaC & ! Gross photosynthesis + !--------------------------------------------------------------------------- + ! SINKS: DOC Excretion + !--------------------------------------------------------------------------- + - lossC_d * limitFacN_dia * DiaC & + !--------------------------------------------------------------------------- + ! SINKS: Respiration + !--------------------------------------------------------------------------- + - phyRespRate_dia * DiaC & + !--------------------------------------------------------------------------- + ! SINKS: Aggregation + !--------------------------------------------------------------------------- + - aggregationRate * DiaC & + !--------------------------------------------------------------------------- + ! SINKS: Grazing (C-basis) + !--------------------------------------------------------------------------- + - grazingFlux_dia * recipQuota_dia & ! Mesozooplankton (N->C) + - grazingFlux_dia2 * recipQuota_dia * is_3zoo2det & ! Macrozooplankton + - grazingFlux_dia3 * recipQuota_dia * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,idiac) + + !=============================================================================== + ! 23. DIATOM CHLOROPHYLL-A (DiaChl) + !=============================================================================== + ! Tracks chlorophyll-a content for light harvesting and photoacclimation. + ! + ! Variables: + ! chlSynth_dia : Chlorophyll synthesis rate [mgChl mmolC-1 day-1] + ! KOchl_dia : Chlorophyll degradation rate [day-1] + ! Chl2N_dia : Chl:N ratio = DiaChl/DiaN [mgChl mmolN-1] + !------------------------------------------------------------------------------- + + sms(k,idchl) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Chlorophyll Synthesis + !--------------------------------------------------------------------------- + + chlSynth_dia * DiaC & ! Photoacclimation + !--------------------------------------------------------------------------- + ! SINKS: Photo-oxidation + !--------------------------------------------------------------------------- + - KOchl_dia * DiaChl & + !--------------------------------------------------------------------------- + ! SINKS: Aggregation + !--------------------------------------------------------------------------- + - aggregationRate * DiaChl & + !--------------------------------------------------------------------------- + ! SINKS: Grazing (Chl-basis) + !--------------------------------------------------------------------------- + - grazingFlux_dia * Chl2N_dia & ! Mesozooplankton (N->Chl) + - grazingFlux_dia2 * Chl2N_dia * is_3zoo2det & ! Macrozooplankton + - grazingFlux_dia3 * Chl2N_dia * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,idchl) + + !=============================================================================== + ! 24. DIATOM SILICA (DiaSi) + !=============================================================================== + ! Tracks biogenic silica content in diatom frustules. + ! + ! Variables: + ! Si_assim : Silicic acid assimilation rate [day-1] + ! qSiN : Si:N ratio in diatoms [mmolSi mmolN-1] + !------------------------------------------------------------------------------- + + sms(k,idiasi) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Silicon Assimilation + !--------------------------------------------------------------------------- + + Si_assim * DiaC & + !--------------------------------------------------------------------------- + ! SINKS: Silicon Excretion + !--------------------------------------------------------------------------- + - lossN_d * limitFacN_dia * DiaSi & + !--------------------------------------------------------------------------- + ! SINKS: Aggregation + !--------------------------------------------------------------------------- + - aggregationRate * DiaSi & + !--------------------------------------------------------------------------- + ! SINKS: Grazing (Si-basis) + !--------------------------------------------------------------------------- + - grazingFlux_dia * qSiN & ! Mesozooplankton (N->Si) + - grazingFlux_dia2 * qSiN * is_3zoo2det & ! Macrozooplankton + - grazingFlux_dia3 * qSiN * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,idiasi) + + !=============================================================================== + ! 25. COCCOLITHOPHORE NITROGEN (CoccoN) + !=============================================================================== + ! Tracks nitrogen content of coccolithophores (calcifying small phytoplankton). + ! Only active when enable_coccos = .true. + ! + ! Variables: + ! N_assim_cocco : N assimilation rate [day-1] + ! lossN_c : N loss rate [day-1] + ! limitFacN_cocco : Limiter function for N:C ratio regulation [-] + ! aggregationRate : Aggregation to detritus [day-1] + ! grazingFlux_Cocco : Mesozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_Cocco2 : Macrozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_Cocco3 : Microzooplankton grazing [mmolN m-3 day-1] + !------------------------------------------------------------------------------- + + if (enable_coccos) then + sms(k,icocn) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Nitrogen Assimilation + !----------------------------------------------------------------------- + + N_assim_cocco * CoccoC & + !----------------------------------------------------------------------- + ! SINKS: DON Excretion + !----------------------------------------------------------------------- + - lossN_c * limitFacN_cocco * CoccoN & + !----------------------------------------------------------------------- + ! SINKS: Aggregation + !----------------------------------------------------------------------- + - aggregationRate * CoccoN & + !----------------------------------------------------------------------- + ! SINKS: Grazing + !----------------------------------------------------------------------- + - grazingFlux_Cocco & ! Mesozooplankton + - grazingFlux_Cocco2 * is_3zoo2det & ! Macrozooplankton + - grazingFlux_Cocco3 * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,icocn) + + !=============================================================================== + ! 26. COCCOLITHOPHORE CARBON (CoccoC) + !=============================================================================== + ! Tracks carbon content of coccolithophores. + ! + ! Variables: + ! Cphot_cocco : Gross photosynthesis rate [day-1] + ! phyRespRate_cocco : Autotrophic respiration rate [day-1] + ! lossC_c : C loss rate [day-1] + ! recipQuota_cocco : Reciprocal of N:C quota (for N->C conversion) [-] + !------------------------------------------------------------------------------- + + sms(k,icocc) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Net Photosynthesis + !----------------------------------------------------------------------- + + Cphot_cocco * CoccoC & ! Gross photosynthesis + !----------------------------------------------------------------------- + ! SINKS: DOC Excretion + !----------------------------------------------------------------------- + - lossC_c * limitFacN_cocco * CoccoC & + !----------------------------------------------------------------------- + ! SINKS: Respiration + !----------------------------------------------------------------------- + - phyRespRate_cocco * CoccoC & + !----------------------------------------------------------------------- + ! SINKS: Aggregation + !----------------------------------------------------------------------- + - aggregationRate * CoccoC & + !----------------------------------------------------------------------- + ! SINKS: Grazing (C-basis) + !----------------------------------------------------------------------- + - grazingFlux_cocco * recipQuota_cocco & ! Mesozooplankton (N->C) + - grazingFlux_Cocco2 * recipQuota_cocco * is_3zoo2det & ! Macrozooplankton + - grazingFlux_Cocco3 * recipQuota_cocco * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,icocc) + + !--------------------------------------------------------------------------- + ! Error Check: Unrealistic CoccoC Growth + !--------------------------------------------------------------------------- + if(sms(k,icocc) > 100) then + print*,'ERROR: Unrealistic CoccoC growth detected!' + print*,'k= ', k + print*,'dt= ', dt + print*,'dt_b= ', dt_b + print*,'state(k,icocc): ', state(k,icocc) + print*,'CoccoC: ', CoccoC + print*,'CoccoN: ', CoccoN + print*,'Cphot_cocco: ', Cphot_cocco*CoccoC + print*,'lossC_c: ', lossC_c + print*,'limitFacN_cocco: ', limitFacN_cocco + print*,'phyRespRate_cocco: ', phyRespRate_cocco + print*,'grazingFlux_cocco: ', grazingFlux_cocco + print*,'grazingFlux_Cocco2: ', grazingFlux_Cocco2 + print*,'grazingFlux_Cocco3: ', grazingFlux_Cocco3 + print*,'recipQuota_cocco: ', recipQuota_cocco + call par_ex(partit%MPI_COMM_FESOM, partit%mype) + stop + endif + + !=============================================================================== + ! 27. COCCOLITHOPHORE CHLOROPHYLL-A (CoccoChl) + !=============================================================================== + ! Tracks chlorophyll-a content for light harvesting and photoacclimation. + ! + ! Variables: + ! ChlSynth_cocco : Chlorophyll synthesis rate [mgChl mmolC-1 day-1] + ! KOchl_cocco : Chlorophyll degradation rate [day-1] + ! Chl2N_cocco : Chl:N ratio = CoccoChl/CoccoN [mgChl mmolN-1] + !------------------------------------------------------------------------------- + + sms(k,icchl) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Chlorophyll Synthesis + !----------------------------------------------------------------------- + + ChlSynth_cocco * CoccoC & ! Photoacclimation + !----------------------------------------------------------------------- + ! SINKS: Photo-oxidation + !----------------------------------------------------------------------- + - KOchl_cocco * CoccoChl & + !----------------------------------------------------------------------- + ! SINKS: Aggregation + !----------------------------------------------------------------------- + - aggregationRate * CoccoChl & + !----------------------------------------------------------------------- + ! SINKS: Grazing (Chl-basis) + !----------------------------------------------------------------------- + - grazingFlux_cocco * Chl2N_cocco & ! Mesozooplankton (N->Chl) + - grazingFlux_Cocco2 * Chl2N_cocco * is_3zoo2det & ! Macrozooplankton + - grazingFlux_Cocco3 * Chl2N_cocco * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,icchl) + + !=============================================================================== + ! 28. PHAEOCYSTIS NITROGEN (PhaeoN) + !=============================================================================== + ! Tracks nitrogen content of Phaeocystis (colony-forming phytoplankton). + ! Only active when enable_coccos = .true. + ! + ! Variables: + ! N_assim_phaeo : N assimilation rate [day-1] + ! lossN_p : N loss rate [day-1] + ! limitFacN_phaeo : Limiter function for N:C ratio regulation [-] + ! aggregationRate : Aggregation to detritus [day-1] + ! grazingFlux_phaeo : Mesozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_phaeo2 : Macrozooplankton grazing [mmolN m-3 day-1] + ! grazingFlux_phaeo3 : Microzooplankton grazing [mmolN m-3 day-1] + !------------------------------------------------------------------------------- + + sms(k,iphan) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Nitrogen Assimilation + !----------------------------------------------------------------------- + + N_assim_phaeo * PhaeoC & + !----------------------------------------------------------------------- + ! SINKS: DON Excretion + !----------------------------------------------------------------------- + - lossN_p * limitFacN_phaeo * PhaeoN & + !----------------------------------------------------------------------- + ! SINKS: Aggregation + !----------------------------------------------------------------------- + - aggregationRate * PhaeoN & + !----------------------------------------------------------------------- + ! SINKS: Grazing + !----------------------------------------------------------------------- + - grazingFlux_phaeo & ! Mesozooplankton + - grazingFlux_phaeo2 * is_3zoo2det & ! Macrozooplankton + - grazingFlux_phaeo3 * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,iphan) + + !=============================================================================== + ! 29. PHAEOCYSTIS CARBON (PhaeoC) + !=============================================================================== + ! Tracks carbon content of Phaeocystis. + ! + ! Variables: + ! Cphot_phaeo : Gross photosynthesis rate [day-1] + ! phyRespRate_phaeo : Autotrophic respiration rate [day-1] + ! lossC_p : C loss rate [day-1] + ! recipQuota_phaeo : Reciprocal of N:C quota (for N->C conversion) [-] + !------------------------------------------------------------------------------- + + sms(k,iphac) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Net Photosynthesis + !----------------------------------------------------------------------- + + Cphot_phaeo * PhaeoC & ! Gross photosynthesis + !----------------------------------------------------------------------- + ! SINKS: DOC Excretion + !----------------------------------------------------------------------- + - lossC_p * limitFacN_phaeo * PhaeoC & + !----------------------------------------------------------------------- + ! SINKS: Respiration + !----------------------------------------------------------------------- + - phyRespRate_phaeo * PhaeoC & + !----------------------------------------------------------------------- + ! SINKS: Aggregation + !----------------------------------------------------------------------- + - aggregationRate * PhaeoC & + !----------------------------------------------------------------------- + ! SINKS: Grazing (C-basis) + !----------------------------------------------------------------------- + - grazingFlux_phaeo * recipQuota_phaeo & ! Mesozooplankton (N->C) + - grazingFlux_phaeo2 * recipQuota_phaeo * is_3zoo2det & ! Macrozooplankton + - grazingFlux_phaeo3 * recipQuota_phaeo * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,iphac) + + !=============================================================================== + ! 30. PHAEOCYSTIS CHLOROPHYLL-A (PhaeoChl) + !=============================================================================== + ! Tracks chlorophyll-a content for light harvesting and photoacclimation. + ! + ! Variables: + ! chlSynth_phaeo : Chlorophyll synthesis rate [mgChl mmolC-1 day-1] + ! KOchl_phaeo : Chlorophyll degradation rate [day-1] + ! Chl2N_phaeo : Chl:N ratio = PhaeoChl/PhaeoN [mgChl mmolN-1] + !------------------------------------------------------------------------------- + + sms(k,iphachl) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Chlorophyll Synthesis + !----------------------------------------------------------------------- + + chlSynth_phaeo * PhaeoC & ! Photoacclimation + !----------------------------------------------------------------------- + ! SINKS: Photo-oxidation + !----------------------------------------------------------------------- + - KOchl_phaeo * PhaeoChl & + !----------------------------------------------------------------------- + ! SINKS: Aggregation + !----------------------------------------------------------------------- + - aggregationRate * PhaeoChl & + !----------------------------------------------------------------------- + ! SINKS: Grazing (Chl-basis) + !----------------------------------------------------------------------- + - grazingFlux_phaeo * Chl2N_phaeo & ! Mesozooplankton (N->Chl) + - grazingFlux_phaeo2 * Chl2N_phaeo * is_3zoo2det & ! Macrozooplankton + - grazingFlux_phaeo3 * Chl2N_phaeo * is_3zoo2det & ! Microzooplankton + ) * dt_b + sms(k,iphachl) + + endif ! enable_coccos + + !=============================================================================== + ! 31. DETRITAL SILICA (DetSi) + !=============================================================================== + ! Biogenic silica from diatom frustules in slow-sinking detritus. + ! + ! Variables: + ! aggregationRate : Diatom aggregation rate [day-1] + ! lossN_d : Diatom mortality/excretion rate [day-1] + ! grazingFlux_dia, grazingFlux_dia3 : Grazing on diatoms [mmolN m-3 day-1] + ! qSiN : Si:N ratio in diatoms [mmolSi mmolN-1] + ! reminSiT : Temperature-dependent dissolution [day-1] + !------------------------------------------------------------------------------- + + sms(k,idetsi) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Diatom Aggregation + !--------------------------------------------------------------------------- + + aggregationRate * DiaSi & + !--------------------------------------------------------------------------- + ! SOURCES: Diatom Excretion/Mortality + !--------------------------------------------------------------------------- + + lossN_d * limitFacN_dia * DiaSi & + !--------------------------------------------------------------------------- + ! SOURCES: Grazing on Diatoms (Si-basis) + !--------------------------------------------------------------------------- + + grazingFlux_dia3 * qSiN * is_3zoo2det & ! Microzooplankton + + grazingFlux_dia * qSiN * (1.0 - is_3zoo2det) & ! Mesozooplankton (when 3zoo disabled) + !--------------------------------------------------------------------------- + ! SINKS: Dissolution + !--------------------------------------------------------------------------- + - reminSiT * DetSi & ! Temperature-dependent + ) * dt_b + sms(k,idetsi) + + !=============================================================================== + ! 32. DISSOLVED SILICATE (DSi) + !=============================================================================== + ! Dissolved silicate available for diatom uptake. + ! Based on Schourup 2013 Eq. A3 + ! + ! Variables: + ! Si_assim : Silicic acid assimilation by diatoms [day-1] + ! reminSiT : Temperature-dependent dissolution [day-1] + ! DetSi, DetZ2Si : Detrital silica pools [mmolSi m-3] + !------------------------------------------------------------------------------- + + sms(k,isi) = ( & + !--------------------------------------------------------------------------- + ! SINKS: Biological Uptake + !--------------------------------------------------------------------------- + - Si_assim * DiaC & + !--------------------------------------------------------------------------- + ! SOURCES: Remineralization + !--------------------------------------------------------------------------- + + reminSiT * DetSi & ! Slow-sinking detritus + + reminSiT * DetZ2Si * is_3zoo2det & ! Fast-sinking detritus + ) * dt_b + sms(k,isi) + + !=============================================================================== + ! 33. DISSOLVED IRON (Fe) + !=============================================================================== + ! Tracks dissolved iron, a limiting micronutrient for phytoplankton growth. + ! + ! Key Concept: Iron cycling is coupled to nitrogen via the Fe:N ratio (Fe2N) + ! All N-based fluxes are converted to Fe equivalents + ! + ! Variables: + ! Fe2N : Intracellular Fe:N ratio [μmol Fe mmol N-1] + ! Note: Fe2N = Fe2C × 6.625 (Redfield conversion) + ! N_assim, N_assim_dia, etc. : N assimilation rates [mmol N mmol C-1 day-1] + ! lossN, lossN_d, etc. : N excretion rates [day-1] + ! limitFacN, etc. : Nutrient limitation factors [-] + ! reminN : Temperature-dependent remineralization [day-1] + ! kScavFe : Iron scavenging rate [m3 mmol C-1 day-1] + ! FreeFe : Free dissolved iron [μmol Fe m-3] + !------------------------------------------------------------------------------- + + sms(k,ife) = ( & + !--------------------------------------------------------------------------- + ! Iron Uptake/Release Coupled to Nitrogen Cycling (via Fe:N ratio) + !--------------------------------------------------------------------------- + Fe2N * ( & + !----------------------------------------------------------------------- + ! SINKS: Phytoplankton Assimilation + !----------------------------------------------------------------------- + - N_assim * PhyC & ! Small phytoplankton + - N_assim_dia * DiaC & ! Diatoms + - N_assim_cocco * CoccoC * is_coccos & ! Coccolithophores + - N_assim_phaeo * PhaeoC * is_coccos & ! Phaeocystis + !----------------------------------------------------------------------- + ! SOURCES: Phytoplankton Excretion + !----------------------------------------------------------------------- + + lossN * limitFacN * PhyN & ! Small phytoplankton + + lossN_d * limitFacN_dia * DiaN & ! Diatoms + + lossN_c * limitFacN_cocco * CoccoN * is_coccos & ! Coccolithophores + + lossN_p * limitFacN_phaeo * PhaeoN * is_coccos & ! Phaeocystis + !----------------------------------------------------------------------- + ! SOURCES: Detrital Remineralization + !----------------------------------------------------------------------- + + reminN * arrFunc * O2Func * DetN & ! Slow-sinking detritus + + reminN * arrFunc * O2Func * DetZ2N * is_3zoo2det & ! Fast-sinking detritus + !----------------------------------------------------------------------- + ! SOURCES: Zooplankton Excretion + !----------------------------------------------------------------------- + + lossN_z * HetN & ! Mesozooplankton + + lossN_z2 * Zoo2N * is_3zoo2det & ! Macrozooplankton + + lossN_z3 * MicZooN * is_3zoo2det & ! Microzooplankton + ) & + !--------------------------------------------------------------------------- + ! SINKS: Abiotic Iron Scavenging onto Particles + !--------------------------------------------------------------------------- + - kScavFe * DetC * FreeFe & ! Slow-sinking detritus + - kScavFe * DetZ2C * FreeFe * is_3zoo2det & ! Fast-sinking detritus + ) * dt_b + sms(k,ife) -!< lossN: Diatom loss of organic N compounds [day^-1] -!< When N : C ratio becomes too high, excretion of DON is downregulated -!< by the limiter function limitFacN_dia -!< aggregationRate transfers N to the detritus pool - - sms(k,idian) = ( & - + N_assim_dia * DiaC & ! --> N assimilation - - lossN_d * limitFacN_dia * DiaN & ! --> DON excretion - - aggregationRate * DiaN & ! --> Aggregation loss - - grazingFlux_Dia & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_Dia2 & - - grazingFlux_Dia3 & ! 3Zoo -#endif - ) * dt_b + sms(k,idian) - -!____________________________________________________________ -!< Diatom C - -!< lossC_d: Diatom loss of carbon [day^-1] -!< When N : C ratio becomes too high, excretion of DOC is downregulated -!< by the limiter function limitFacN_dia -!< aggregationRate transfers C to the detritus pool - - sms(k,idiac) = ( & - + Cphot_dia * DiaC & ! -- Photosynthesis ---->/ - - lossC_d * limitFacN_dia * DiaC & ! -- Excretion of DOC --/ Net Photosynthesis - - phyRespRate_dia * DiaC & ! -- Respiration ----->/ - - aggregationRate * DiaC & - - grazingFlux_dia * recipQuota_dia & -#if defined (__3Zoo2Det) - - grazingFlux_dia2 * recipQuota_dia & - - grazingFlux_dia3 * recipQuota_dia & ! 3Zoo -#endif - ) * dt_b + sms(k,idiac) - -!____________________________________________________________ -!< Diatom Chl - - sms(k,idchl) = ( & - + chlSynth_dia * DiaC & ! --> Chl a synthesis - - KOchl_dia * DiaChl & ! --> Degradation loss - - aggregationRate * DiaChl & ! --> Aggregation loss - - grazingFlux_dia * Chl2N_dia & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_dia2 * Chl2N_dia & - - grazingFlux_dia3 * Chl2N_dia & ! 3Zoo -#endif - ) * dt_b + sms(k,idchl) - -!____________________________________________________________ -!< Diatom Si - -!< lossN_d: Diatom loss of organic nitrogen compunds [day^-1] -!< When N : C ratio becomes too high, excretion is downregulated -!< by the limiter function limitFacN_dia -!< aggregationRate transfers Si to the detritus pool - - sms(k,idiasi) = ( & - + Si_assim * DiaC & ! -- Diatom silicon assimilation - - lossN_d * limitFacN_dia * DiaSi & ! -- Excretion to detritus - - aggregationRate * DiaSi & ! -- Aggregation loss - - grazingFlux_dia * qSiN & ! -- Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_dia2 * qSiN & - - grazingFlux_dia3 * qSiN & ! 3Zoo -#endif - ) * dt_b + sms(k,idiasi) - -!< *** Coccolithophore *** -!< *********************** - -#if defined (__coccos) -!____________________________________________________________ -!< Coccolithophore N - sms(k,icocn) = ( & - + N_assim_cocco * CoccoC & - - lossN_c * limitFacN_cocco * CoccoN & - - aggregationRate * CoccoN & - - grazingFlux_Cocco & -#if defined (__3Zoo2Det) - - grazingFlux_Cocco2 & - - grazingFlux_Cocco3 & ! 3Zoo -#endif - ) * dt_b + sms(k,icocn) - -!____________________________________________________________ -!< Coccolithophore C - - sms(k,icocc) = ( & - + Cphot_cocco * CoccoC & - - lossC_c * limitFacN_cocco * CoccoC & - - phyRespRate_cocco * CoccoC & - - aggregationRate * CoccoC & - - grazingFlux_cocco * recipQuota_cocco & -#if defined (__3Zoo2Det) - - grazingFlux_Cocco2 * recipQuota_cocco & - - grazingFlux_Cocco3 * recipQuota_cocco & ! 3Zoo -#endif - ) * dt_b + sms(k,icocc) - - if(sms(k,icocc)>100) then - print*,'ERROR: strange CoccoC !' - print*,'k= ', k - print*,'dt= ', dt - print*,'dt_b= ', dt_b - print*,'state(k,icocc): ', state(k,icocc) - print*,'sms CoccoC: ', CoccoC - print*,'sms CoccoN: ', CoccoN - print*,'sms Cphot cocco: ', Cphot_cocco*CoccoC - print*,'sms lossC_c: ', lossC_c - print*,'sms limitFacN_cocco: ', limitFacN_cocco - print*,'sms phyRespRate_cocco: ', phyRespRate_cocco - print*,'sms grazingFlux_cocco: ', grazingFlux_cocco - print*,'sms grazingFlux_cocco2: ', grazingFlux_Cocco2 - print*,'sms grazingFlux_cocco3: ', grazingFlux_Cocco3 - print*,'sms recipQuota_cocco: ', recipQuota_cocco - - print*,'sms recipQuota_cocco: ', recipQuota_cocco - call par_ex(partit%MPI_COMM_FESOM, partit%mype) - stop - endif + !=============================================================================== + ! 34. PHYTOPLANKTON CALCITE (PhyCalc) + !=============================================================================== + ! Tracks calcium carbonate in living phytoplankton (coccoliths). + ! + ! Variables: + ! calcification : CaCO3 production rate [mmolCaCO3 m-3 day-1] + ! calc_loss_agg : Calcite loss to aggregation [mmolCaCO3 m-3 day-1] + ! calc_loss_gra, calc_loss_gra2, calc_loss_gra3 : Calcite loss to grazing [mmolCaCO3 m-3 day-1] + ! lossC, lossC_c : C excretion rates [day-1] + ! phyRespRate, phyRespRate_cocco : Respiration rates [day-1] + ! limitFacN, limitFacN_cocco : N:C ratio limiters [-] + !------------------------------------------------------------------------------- + + if (enable_coccos) then + !--------------------------------------------------------------------------- + ! Configuration: Coccolithophore-Specific Calcite Dynamics + !--------------------------------------------------------------------------- + sms(k,iphycal) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Calcification + !----------------------------------------------------------------------- + + calcification & ! New CaCO3 production + !----------------------------------------------------------------------- + ! SINKS: Losses from Living Cells + !----------------------------------------------------------------------- + - lossC_c * limitFacN_cocco * PhyCalc & ! Excretion/exudation + - phyRespRate_cocco * PhyCalc & ! Respiration-associated loss + - calc_loss_agg & ! Aggregation/sinking + - calc_loss_gra & ! Mesozooplankton grazing + - calc_loss_gra2 * is_3zoo2det & ! Macrozooplankton grazing + - calc_loss_gra3 * is_3zoo2det & ! Microzooplankton grazing + ) * dt_b + sms(k,iphycal) + else + !--------------------------------------------------------------------------- + ! Configuration: Generic Phytoplankton Calcite (Small Calcifiers) + !--------------------------------------------------------------------------- + sms(k,iphycal) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Calcification + !----------------------------------------------------------------------- + + calcification & + !----------------------------------------------------------------------- + ! SINKS: Losses from Living Cells + !----------------------------------------------------------------------- + - lossC * limitFacN * PhyCalc & + - phyRespRate * PhyCalc & + - calc_loss_agg & + - calc_loss_gra & + - calc_loss_gra2 * is_3zoo2det & + - calc_loss_gra3 * is_3zoo2det & + ) * dt_b + sms(k,iphycal) + endif -!____________________________________________________________ -!< Coccolithophore Chl - - sms(k,icchl) = ( & - + ChlSynth_cocco * CoccoC & - - KOchl_cocco * CoccoChl & - - aggregationRate * CoccoChl & - - grazingFlux_cocco * Chl2N_cocco & -#if defined (__3Zoo2Det) - - grazingFlux_Cocco2 * Chl2N_cocco & - - grazingFlux_Cocco3 * Chl2N_cocco & ! 3Zoo -#endif - ) * dt_b + sms(k,icchl) - -!< *** Phaeocystis *** -!< ******************* - -!____________________________________________________________ -!< Phaeocystis N - -!< lossN_p: Phaeocystis loss of organic N compounds [day^-1] - - sms(k,iphan) = ( & - + N_assim_phaeo * PhaeoC & ! --> N assimilation - - lossN_p * limitFacN_phaeo * PhaeoN & ! --> DON excretion - - aggregationRate * PhaeoN & ! --> Aggregation loss - - grazingFlux_phaeo & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_phaeo2 & - - grazingFlux_phaeo3 & ! 3Zoo -#endif - ) * dt_b + sms(k,iphan) -!____________________________________________________________ -!< Phaeocystis C - -!< lossC_p: Phaeocystis loss of carbon [day^-1] -!< When N : C ratio becomes too high, excretion of DOC is downregulated -!< by the limiter function limitFacN -!< aggregationRate transfers C to the detritus pool - - sms(k,iphac) = ( & - + Cphot_phaeo * PhaeoC & ! --> Photosynthesis ---->/ - - lossC_p * limitFacN_phaeo * PhaeoC & ! --> Excretion of DOC / Net photosynthesis - - phyRespRate_phaeo * PhaeoC & ! --> Respiration ----->/ - - aggregationRate * PhaeoC & ! --> Aggregation loss - - grazingFlux_phaeo * recipQuota_phaeo & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_phaeo2 * recipQuota_phaeo & - - grazingFlux_phaeo3 * recipQuota_phaeo & ! 3Zoo -#endif - ) * dt_b + sms(k,iphac) -!__________________________________________________________ -! Phaeocystis ChlA - -!< Chl2N: Conversion factor from mmolN to mgChla -!< Chl2N = PhyChl/PhyN - - sms(k,iphachl) = ( & - + chlSynth_phaeo * PhaeoC & ! --> Chl-a synthesis - - KOchl_phaeo * PhaeoChl & ! --> Degradation loss - - aggregationRate * PhaeoChl & ! --> Aggregation loss - - grazingFlux_phaeo * Chl2N_phaeo & ! --> Grazing loss -#if defined (__3Zoo2Det) - - grazingFlux_phaeo2 * Chl2N_phaeo & - - grazingFlux_phaeo3 * Chl2N_phaeo & ! 3Zoo -#endif - ) * dt_b + sms(k,iphachl) -#endif - - -!< *** Silicate *** -!< **************** - -!____________________________________________________________ -!< Detritus Si -#if defined (__3Zoo2Det) - sms(k,idetsi) = ( & - + aggregationRate * DiaSi & - + lossN_d * limitFacN_dia * DiaSi & - + grazingFlux_dia3 * qSiN & - - reminSiT * DetSi & - ) * dt_b + sms(k,idetsi) -#else - sms(k,idetsi) = ( & - + aggregationRate * DiaSi & - + lossN_d * limitFacN_dia * DiaSi & - + grazingFlux_dia * qSiN & - - reminSiT * DetSi & - ) * dt_b + sms(k,idetsi) -#endif -!____________________________________________________________ -!< DSi, Silicate - -!< DiaC: Intracellular carbon concentration in diatoms [mmolC m-3] -!< DetSi: Detritus silicon concentration [mmolSi m-3] -!< Si_assim: Si assimilation rate for diatoms [mmolSi mmolC-1 day-1] -!< reminSiT: Remineralization rate of silicon, temperature dependency [day-1] -!< dt_b: REcoM time step [day] - -!! Schourup 2013 Eq. A3 - - sms(k,isi) = ( & - - Si_assim * DiaC & ! --> Si assimilation of diatoms - + reminSiT * DetSi & ! --> Remineralization of detritus, temperature dependent -#if defined (__3Zoo2Det) - + reminSiT * DetZ2Si & -#endif - ) * dt_b + sms(k,isi) -!< *** Iron *** -!< ************ - -!____________________________________________________________ -!< Fe - -!< Fe2N: Intracellular Fe : N ratio [μmol Fe mmol N^-1] Fe2N = Fe2C * 6.625 -!< PhyC: Intracellular carbon concentration in nanophytoplankton [mmolCm^-3] -!< Cphot: C-specific actual rate of photosynthesis for nanopyhtoplankton [day^-1] -!< DiaC: Intracellular carbon concentration in diatoms [mmol C m^-3 ] -!< Cphot_dia: C-specific actual rate of photosynthesis for diatom [day^-1] -!< phyRespRate: Nanopyhtoplankton respiration rate [day^-1] -!< phyRespRate_dia: Diatom respiration rate [day^-1] -!< lossC: Nanopyhtoplankton excretion of organic C [day^-1] -!< limitFacN: limiting factor -!< lossC_d: Diatom excretion of organic C [day^-1] -!< limitFacN_dia: limiting factor -!< detC: Detritus carbon concentration [mmol C m^-3] -!< reminC: Temperature dependent remineralisation rate of detritus [day^-1] -!< arrFunc: Arrhenius function -!< hetC: Zooplankton carbon concentration [mmol C m^-3 ] -!< lossC_z: Zooplankton excretion of organic C [day^-1 ] -!< hetRespFlux: Zooplankton respiration rate [day^-1] -!< kScavFe: Scavenging rate of iron [m3 mmol C^-1 day^-1] - - sms(k,ife) = ( Fe2N * ( & - - N_assim * PhyC & ! --> N assimilation Nanophytoplankton, [mmol N/(mmol C * day)] C specific N utilization rate - - N_assim_dia * DiaC & ! --> N assimilation Diatom -#if defined (__coccos) - - N_assim_cocco * CoccoC & - + lossN_c * limitFacN_cocco * CoccoN & - - N_assim_phaeo * PhaeoC & - + lossN_p * limitFacN_phaeo * PhaeoN & -#endif - + lossN * limitFacN * PhyN & ! --> Excretion from small pythoplankton - + lossN_d * limitFacN_dia * DiaN & ! --> Excretion from diatom - + reminN * arrFunc * O2Func * DetN & ! --> Remineralization of detritus ! NEW O2remin - + lossN_z * HetN & ! --> Excretion from zooplankton -#if defined (__3Zoo2Det) - + reminN * arrFunc * O2Func * DetZ2N & ! O2remin - + lossN_z2 * Zoo2N & - + lossN_z3 * MicZooN & ! 3Zoo -#endif - ) & - - kScavFe * DetC * FreeFe & -#if defined (__3Zoo2Det) - - kScavFe * DetZ2C * FreeFe & -#endif - ) * dt_b + sms(k,ife) - -!< *** Calcification *** -!< ********************* - -!____________________________________________________________ -!< Small phytoplankton calcite - -#if defined (__coccos) - sms(k,iphycal) = ( & - + calcification & ! --> Calcification - - lossC_c * limitFacN_cocco * PhyCalc & ! --> Excretion loss - - phyRespRate_cocco * PhyCalc & ! --> Respiration - - calc_loss_agg & ! --> Aggregation loss - - calc_loss_gra & ! --> Grazing loss -#if defined (__3Zoo2Det) - - calc_loss_gra2 & - - calc_loss_gra3 & ! 3Zoo -#endif - ) * dt_b + sms(k,iphycal) -#else - sms(k,iphycal) = ( & - + calcification & ! --> Calcification - - lossC * limitFacN * PhyCalc & ! --> Excretion loss - - phyRespRate * PhyCalc & ! --> Respiration - - calc_loss_agg & ! --> Aggregation loss - - calc_loss_gra & ! --> Grazing loss -#if defined (__3Zoo2Det) - - calc_loss_gra2 & - - calc_loss_gra3 & ! 3Zoo -#endif - ) * dt_b + sms(k,iphycal) -#endif - -!____________________________________________________________ -! Detritus calcite -#if defined (__coccos) - -#if defined (__3Zoo2Det) - sms(k,idetcal) = ( & - + lossC_c * limitFacN_cocco * PhyCalc & - + phyRespRate_cocco * PhyCalc & - + calc_loss_agg & - + calc_loss_gra3 & - - calc_loss_gra3 * calc_diss_guts & - - calc_diss * DetCalc & - ) * dt_b + sms(k,idetcal) - -#else - sms(k,idetcal) = ( & - + lossC_c * limitFacN_cocco * PhyCalc & - + phyRespRate_cocco * PhyCalc & - + calc_loss_agg & - + calc_loss_gra & - - calc_loss_gra * calc_diss_guts & - - calc_diss * DetCalc & - ) * dt_b + sms(k,idetcal) - -#endif - -#else - -#if defined (__3Zoo2Det) - sms(k,idetcal) = ( & - + lossC * limitFacN * PhyCalc & - + phyRespRate * PhyCalc & - + calc_loss_agg & - + calc_loss_gra3 & - - calc_loss_gra3 * calc_diss_guts & - - calc_diss * DetCalc & - ) * dt_b + sms(k,idetcal) -#else - sms(k,idetcal) = ( & - + lossC * limitFacN * PhyCalc & - + phyRespRate * PhyCalc & - + calc_loss_agg & - + calc_loss_gra & - - calc_loss_gra * calc_diss_guts & - - calc_diss * DetCalc & - ) * dt_b + sms(k,idetcal) -#endif -#endif - -!____________________________________________________________ -! Oxygen - - sms(k,ioxy) = ( & - + Cphot * phyC & - - phyRespRate * phyC & - + Cphot_dia * diaC & - - phyRespRate_dia * diaC & -#if defined (__coccos) - + Cphot_cocco * CoccoC & - - phyRespRate_cocco * CoccoC & - + Cphot_phaeo * PhaeoC & - - phyRespRate_phaeo * PhaeoC & -#endif - - rho_C1 * arrFunc * O2Func * EOC & ! O2remin - - hetRespFlux & -#if defined (__3Zoo2Det) - - Zoo2RespFlux & - - MicZooRespFlux & ! 3Zoo -#endif - ) * redO2C * dt_b + sms(k,ioxy) -! - if (ciso) then -!------------------------------------------------------------------------------- -! DIC_13 - sms(k,idic_13) = ( & - - Cphot * PhyC_13 & - + phyRespRate * PhyC_13 & - - Cphot_Dia * DiaC_13 & - + phyRespRate_Dia * DiaC_13 & - + rho_C1 * arrFunc * EOC_13 & - + HetRespFlux_13 & - + calc_diss_13 * DetCalc_13 & - + calc_loss_gra_13 * calc_diss_guts & - - calcification_13 & - ) * dt_b + sms(k,idic_13) -!------------------------------------------------------------------------------- -! Phytoplankton C_13 - sms(k,iphyc_13) = ( & - + Cphot * PhyC_13 & - - lossC * limitFacN * PhyC_13 & - - phyRespRate * PhyC_13 & - - aggregationRate * PhyC_13 & - - grazingFlux_phy * recipQuota_13 & - ) * dt_b + sms(k,iphyc_13) -!------------------------------------------------------------------------------- -! Detritus C_13 - sms(k,idetc_13) = ( & - + grazingFlux_phy * recipQuota_13 & - - grazingFlux_phy * recipQuota_13 * grazEff & - + grazingFlux_Dia * recipQuota_dia_13 & - - grazingFlux_Dia * recipQuota_dia_13 * grazEff & - + aggregationRate * phyC_13 & - + aggregationRate * DiaC_13 & - + hetLossFlux * recipQZoo_13 & - - reminC * arrFunc * DetC_13 & - ) * dt_b + sms(k,idetc_13) -!------------------------------------------------------------------------------- -! Heterotrophic C_13 - sms(k,ihetc_13) = ( & - + grazingFlux_phy * recipQuota_13 * grazEff & - + grazingFlux_Dia * recipQuota_dia_13 * grazEff & - - hetLossFlux * recipQZoo_13 & - - lossC_z * HetC_13 & - - hetRespFlux_13 & - ) * dt_b + sms(k,ihetc_13) -!------------------------------------------------------------------------------- -! EOC_13 - sms(k,idoc_13) = ( & - + lossC * limitFacN * phyC_13 & - + lossC_d * limitFacN_dia * DiaC_13 & - + reminC * arrFunc * DetC_13 & - + lossC_z * HetC_13 & - - rho_c1 * arrFunc * EOC_13 & - + LocRiverDOC * r_iorg_13 & - ) * dt_b + sms(k,idoc_13) -!------------------------------------------------------------------------------- -! Diatom C_13 - sms(k,idiac_13) = ( & - + Cphot_dia * DiaC_13 & - - lossC_d * limitFacN_dia * DiaC_13 & - - phyRespRate_dia * DiaC_13 & - - aggregationRate * DiaC_13 & - - grazingFlux_dia * recipQuota_dia_13 & - ) * dt_b + sms(k,idiac_13) -!------------------------------------------------------------------------------- -! Small phytoplankton calcite_13 - sms(k,iphycal_13) = ( & - + calcification_13 & - - lossC * limitFacN * phyCalc_13 & - - phyRespRate * phyCalc_13 & - - calc_loss_agg_13 & - - calc_loss_gra_13 & - ) * dt_b + sms(k,iphycal_13) -!------------------------------------------------------------------------------- -! Detritus calcite_13 - sms(k,idetcal_13) = ( & - + lossC * limitFacN * phyCalc_13 & - + phyRespRate * phyCalc_13 & - + calc_loss_agg_13 & - + calc_loss_gra_13 & - - calc_loss_gra_13 * calc_diss_guts & - - calc_diss_13 * DetCalc_13 & - ) * dt_b + sms(k,idetcal_13) -!------------------------------------------------------------------------------- - if (ciso_14) then -!------------------------------------------------------------------------------- - if (ciso_organic_14) then -! DIC_14 - sms(k,idic_14) = ( & - - Cphot * PhyC_14 & - + phyRespRate * PhyC_14 & - - Cphot_Dia * DiaC_14 & - + phyRespRate_Dia * DiaC_14 & - + rho_C1 * arrFunc * EOC_14 & - + HetRespFlux_14 & - + calc_diss_14 * DetCalc_14 & - + calc_loss_gra_14 * calc_diss_guts & - - calcification_14 & - ) * dt_b + sms(k,idic_14) -!------------------------------------------------------------------------------- -! Phytoplankton C_14 - sms(k,iphyc_14) = ( & - + Cphot * PhyC_14 & - - lossC * limitFacN * PhyC_14 & - - phyRespRate * PhyC_14 & - - aggregationRate * PhyC_14 & - - grazingFlux_phy * recipQuota_14 & - ) * dt_b + sms(k,iphyc_14) -!------------------------------------------------------------------------------- -! Detritus C_14 - sms(k,idetc_14) = ( & - + grazingFlux_phy * recipQuota_14 & - - grazingFlux_phy * recipQuota_14 * grazEff & - + grazingFlux_Dia * recipQuota_dia_14 & - - grazingFlux_Dia * recipQuota_dia_14 * grazEff & - + aggregationRate * phyC_14 & - + aggregationRate * DiaC_14 & - + hetLossFlux * recipQZoo_14 & - - reminC * arrFunc * DetC_14 & - ) * dt_b + sms(k,idetc_14) -!------------------------------------------------------------------------------- -! Heterotrophic C_14 - sms(k,ihetc_14) = ( & - + grazingFlux_phy * recipQuota_14 * grazEff & - + grazingFlux_Dia * recipQuota_dia_14 * grazEff & - - hetLossFlux * recipQZoo_14 & - - lossC_z * HetC_14 & - - hetRespFlux_14 & - ) * dt_b + sms(k,ihetc_14) -!------------------------------------------------------------------------------- -! EOC_14 - sms(k,idoc_14) = ( & - + lossC * limitFacN * phyC_14 & - + lossC_d * limitFacN_dia * DiaC_14 & - + reminC * arrFunc * DetC_14 & - + lossC_z * HetC_14 & - - rho_c1 * arrFunc * EOC_14 & - + LocRiverDOC * r_iorg_14 & - ) * dt_b + sms(k,idoc_14) -!------------------------------------------------------------------------------- -! Diatom C_14 - sms(k,idiac_14) = ( & - + Cphot_dia * DiaC_14 & - - lossC_d * limitFacN_dia * DiaC_14 & - - phyRespRate_dia * DiaC_14 & - - aggregationRate * DiaC_14 & - - grazingFlux_dia * recipQuota_dia_14 & - ) * dt_b + sms(k,idiac_14) -!------------------------------------------------------------------------------- -! Small phytoplankton calcite_14 - sms(k,iphycal_14) = ( & - + calcification_14 & - - lossC * limitFacN * phyCalc_14 & - - phyRespRate * phyCalc_14 & - - calc_loss_agg_14 & - - calc_loss_gra_14 & - ) * dt_b + sms(k,iphycal_14) -!------------------------------------------------------------------------------- -! Detritus calcite_14 - sms(k,idetcal_14) = ( & - + lossC * limitFacN * phyCalc_14 & - + phyRespRate * phyCalc_14 & - + calc_loss_agg_14 & - + calc_loss_gra_14 & - - calc_loss_gra_14 * calc_diss_guts & - - calc_diss_14 * DetCalc_14 & - ) * dt_b + sms(k,idetcal_14) -!------------------------------------------------------------------------------- + !=============================================================================== + ! 35. DETRITAL CALCITE (DetCalc) + !=============================================================================== + ! Tracks calcium carbonate in slow-sinking organic particles. + ! + ! Variables: + ! calc_loss_agg : Calcite from aggregation [mmolCaCO3 m-3 day-1] + ! calc_loss_gra, calc_loss_gra3 : Calcite from grazing [mmolCaCO3 m-3 day-1] + ! calc_diss_guts : Gut dissolution fraction [-] + ! calc_diss : Water column dissolution rate [day-1] + !------------------------------------------------------------------------------- + + if (enable_coccos) then + if (enable_3zoo2det) then + !----------------------------------------------------------------------- + ! Configuration: Coccolithophore Calcite with 3-Zooplankton Model + !----------------------------------------------------------------------- + sms(k,idetcal) = ( & + !------------------------------------------------------------------- + ! SOURCES: Transfer from Living Cells + !------------------------------------------------------------------- + + lossC_c * limitFacN_cocco * PhyCalc & ! Excretion + + phyRespRate_cocco * PhyCalc & ! Respiration products + + calc_loss_agg & ! Aggregation products + + calc_loss_gra3 & ! Microzooplankton grazing + !------------------------------------------------------------------- + ! SINKS: Dissolution + !------------------------------------------------------------------- + - calc_loss_gra3 * calc_diss_guts & ! Gut dissolution + - calc_diss * DetCalc & ! Water column dissolution + ) * dt_b + sms(k,idetcal) + else + !----------------------------------------------------------------------- + ! Configuration: Coccolithophore Calcite with Standard Zooplankton + !----------------------------------------------------------------------- + sms(k,idetcal) = ( & + !------------------------------------------------------------------- + ! SOURCES: Transfer from Living Cells + !------------------------------------------------------------------- + + lossC_c * limitFacN_cocco * PhyCalc & + + phyRespRate_cocco * PhyCalc & + + calc_loss_agg & + + calc_loss_gra & + !------------------------------------------------------------------- + ! SINKS: Dissolution + !------------------------------------------------------------------- + - calc_loss_gra * calc_diss_guts & + - calc_diss * DetCalc & + ) * dt_b + sms(k,idetcal) + endif else -! "Abiotic" DIC_14, identical to DIC except for radioactive decay (-> -! recom_forcing) - sms(k,idic_14) = sms(k,idic) - end if ! ciso_organic_14 - end if ! ciso_14 - end if ! ciso -!------------------------------------------------------------------------------- -! Diagnostics: Averaged rates - - recipbiostep = 1.d0/real(biostep) -if (Diags) then -!*** Net primary production [mmol C /(m3 * day)] - vertNPPn(k) = vertNPPn(k) + ( & - + Cphot * PhyC & - - PhyRespRate * PhyC & - ) * recipbiostep - - vertNPPd(k) = vertNPPd(k) + ( & - + Cphot_dia * DiaC & - - PhyRespRate_dia * DiaC & - ) * recipbiostep - -#if defined (__coccos) - vertNPPc(k) = vertNPPc(k) + ( & - + Cphot_cocco * CoccoC & - - PhyRespRate_cocco * CoccoC & - ) * recipbiostep - vertNPPp(k) = vertNPPp(k) + ( & - + Cphot_phaeo * PhaeoC & - - PhyRespRate_phaeo * PhaeoC & - ) * recipbiostep -#endif - -!*** Gross primary production [mmol C /(m3 * day)] - vertGPPn(k) = vertGPPn(k) + ( & - + Cphot * PhyC & - ) * recipbiostep - - vertGPPd(k) = vertGPPd(k) + ( & - + Cphot_dia * DiaC & - ) * recipbiostep - -#if defined (__coccos) - vertGPPc(k) = vertGPPc(k) + ( & - + Cphot_cocco * CoccoC & - ) * recipbiostep - vertGPPp(k) = vertGPPp(k) + ( & - + Cphot_phaeo * PhaeoC & - ) * recipbiostep -#endif - -!*** Net N-assimilation [mmol N/(m3 * day)] - vertNNAn(k) = vertNNAn(k) + ( & - + N_assim * PhyC & - - lossN * limitFacN * PhyN & - ) * recipbiostep - - vertNNAd(k) = vertNNAd(k) + ( & - + N_assim_dia * DiaC & - - lossN * limitFacN_dia * DiaN & - ) * recipbiostep - -#if defined (__coccos) - vertNNAc(k) = vertNNAc(k) + ( & - + N_assim_cocco * CoccoC & - - lossN * limitFacN_cocco * CoccoN & - ) * recipbiostep - vertNNAp(k) = vertNNAp(k) + ( & - + N_assim_phaeo * PhaeoC & - - lossN * limitFacN_phaeo * PhaeoN & - ) * recipbiostep -#endif - -!*** Changed to chlorophyll degradation (commented out gross N-assimilation below) - vertChldegn(k) = vertChldegn(k) + ( & - + KOchl & - ) * recipbiostep - - vertChldegd(k) = vertChldegd(k) + ( & - + KOchl_dia & - ) * recipbiostep - -#if defined (__coccos) - vertChldegc(k) = vertChldegc(k) + ( & - + KOchl_cocco & - ) * recipbiostep - vertChldegp(k) = vertChldegp(k) + ( & - + KOchl_phaeo & - ) * recipbiostep -#endif - -!*** zooplankton1 respiration - vertrespmeso(k) = vertrespmeso(k) + ( & - + HetRespFlux & - ) * recipbiostep -#if defined (__3Zoo2Det) -!*** zooplankton2 respiration - vertrespmacro(k) = vertrespmacro(k) + ( & - + Zoo2RespFlux & - ) * recipbiostep - -!*** zooplankton3 respiration - vertrespmicro(k) = vertrespmicro(k) + ( & - + MicZooRespFlux & - ) * recipbiostep -#endif -!*** calc_diss - vertcalcdiss(k) = vertcalcdiss(k) + ( & - + calc_diss * DetCalc & - ) * recipbiostep - -!*** aggregation by small phytoplankton - vertaggn(k) = vertaggn(k) + ( & - + aggregationrate * PhyC & - ) * recipbiostep - -!*** aggregation by diatoms - vertaggd(k) = vertaggd(k) + ( & - + aggregationrate * DiaC & - ) * recipbiostep - -#if defined (__coccos) -!*** aggregation by coccolithophores - vertaggc(k) = vertaggc(k) + ( & - + aggregationrate * CoccoC & - ) * recipbiostep -!*** aggregation by phaeocystis - vertaggp(k) = vertaggp(k) + ( & - + aggregationrate * PhaeoC & - ) * recipbiostep -#endif - -!*** excrection of DOC by phytoplankton - vertdocexn(k) = vertdocexn(k) + ( & - + lossC * limitFacN * phyC & - ) * recipbiostep - -!*** excrection of DOC by diatoms - vertdocexd(k) = vertdocexd(k) + ( & - + lossC_d * limitFacN_dia * DiaC & - ) * recipbiostep - -#if defined (__coccos) -!*** excretion of DOC by coccolithophores - vertdocexc(k) = vertdocexc(k) + ( & - + lossC_c * limitFacN_cocco * CoccoC & - ) * recipbiostep -!*** excretion of DOC by phaeocystis - vertdocexp(k) = vertdocexp(k) + ( & - + lossC_p * limitFacN_phaeo * PhaeoC & - ) * recipbiostep -#endif - -!*** calcification - vertcalcif(k) = vertcalcif(k) + ( & - + calcification & - ) * recipbiostep - -! phy respiration - vertrespn(k) = vertrespn(k) + ( & - + PhyRespRate * PhyC & - ) * recipbiostep - -! dia respiration - vertrespd(k) = vertrespd(k) + ( & - + PhyRespRate_dia * DiaC & - ) * recipbiostep - -#if defined (__coccos) -! cocco resipration - vertrespc(k) = vertrespc(k) + ( & - + PhyRespRate_cocco * CoccoC & - ) * recipbiostep -! phaeo resipration - vertrespp(k) = vertrespp(k) + ( & - + PhyRespRate_phaeo * PhaeoC & - ) * recipbiostep -#endif -endif - end do ! Main vertikal loop ends + if (enable_3zoo2det) then + !----------------------------------------------------------------------- + ! Configuration: Generic Phytoplankton Calcite with 3-Zooplankton + !----------------------------------------------------------------------- + sms(k,idetcal) = ( & + !------------------------------------------------------------------- + ! SOURCES: Transfer from Living Cells + !------------------------------------------------------------------- + + lossC * limitFacN * PhyCalc & + + phyRespRate * PhyCalc & + + calc_loss_agg & + + calc_loss_gra3 & + !------------------------------------------------------------------- + ! SINKS: Dissolution + !------------------------------------------------------------------- + - calc_loss_gra3 * calc_diss_guts & + - calc_diss * DetCalc & + ) * dt_b + sms(k,idetcal) + else + !----------------------------------------------------------------------- + ! Configuration: Generic Phytoplankton Calcite with Standard Zooplankton + !----------------------------------------------------------------------- + sms(k,idetcal) = ( & + !------------------------------------------------------------------- + ! SOURCES: Transfer from Living Cells + !------------------------------------------------------------------- + + lossC * limitFacN * PhyCalc & + + phyRespRate * PhyCalc & + + calc_loss_agg & + + calc_loss_gra & + !------------------------------------------------------------------- + ! SINKS: Dissolution + !------------------------------------------------------------------- + - calc_loss_gra * calc_diss_guts & + - calc_diss * DetCalc & + ) * dt_b + sms(k,idetcal) + endif + endif + + !=============================================================================== + ! 36. DISSOLVED OXYGEN (O2) + !=============================================================================== + ! Tracks oxygen production (photosynthesis) and consumption (respiration, + ! remineralization). + ! + ! Variables: + ! Cphot, Cphot_dia, etc. : Gross photosynthesis rates [day-1] + ! phyRespRate, phyRespRate_dia, etc. : Autotrophic respiration rates [day-1] + ! rho_C1 : DOC remineralization rate [day-1] + ! hetRespFlux, Zoo2RespFlux, MicZooRespFlux : Zooplankton respiration [mmolC m-3 day-1] + ! redO2C : O2:C stoichiometric ratio (Redfield) [-] + ! Typically ~170/122 = 1.39 mol O2/mol C + !------------------------------------------------------------------------------- + + sms(k,ioxy) = ( & + !--------------------------------------------------------------------------- + ! SOURCES: Photosynthetic Oxygen Production + !--------------------------------------------------------------------------- + + Cphot * phyC & ! Small phytoplankton + + Cphot_dia * diaC & ! Diatoms + + Cphot_cocco * CoccoC * is_coccos & ! Coccolithophores + + Cphot_phaeo * PhaeoC * is_coccos & ! Phaeocystis + !--------------------------------------------------------------------------- + ! SINKS: Autotrophic Respiration + !--------------------------------------------------------------------------- + - phyRespRate * phyC & ! Small phytoplankton + - phyRespRate_dia * diaC & ! Diatoms + - phyRespRate_cocco * CoccoC * is_coccos & ! Coccolithophores + - phyRespRate_phaeo * PhaeoC * is_coccos & ! Phaeocystis + !--------------------------------------------------------------------------- + ! SINKS: Heterotrophic Respiration and Remineralization + !--------------------------------------------------------------------------- + - rho_C1 * arrFunc * O2Func * EOC & ! DOC remineralization + - hetRespFlux & ! Mesozooplankton + - Zoo2RespFlux * is_3zoo2det & ! Macrozooplankton + - MicZooRespFlux * is_3zoo2det & ! Microzooplankton + ) * redO2C * dt_b + sms(k,ioxy) + ! Note: redO2C converts carbon-based rates to oxygen equivalents + ! using the Redfield ratio (typically ~170/122 = 1.39 mol O2/mol C) + + if (ciso) then + + !=========================================================================== + ! 1. CARBON-13 (13C) BUDGETS + !=========================================================================== + ! Calculates 13C budgets for all carbon pools with isotope fractionation. + ! Parallel structure to total carbon budgets. + !--------------------------------------------------------------------------- + + !=========================================================================== + ! DISSOLVED INORGANIC CARBON (DIC_13) + !=========================================================================== + ! Source-minus-sink budget for 13C in dissolved inorganic carbon pool. + ! + ! SOURCES (+): + ! - Phytoplankton respiration (returns 13C to DIC) + ! - Diatom respiration + ! - DOC remineralization (aerobic respiration) + ! - Heterotroph respiration + ! - Calcite dissolution (releases 13C from CaCO3) + ! - Calcite dissolution in grazer guts + ! + ! SINKS (-): + ! - Phytoplankton photosynthesis (fixes 13C into organic matter) + ! - Diatom photosynthesis + ! - Calcification (removes 13C for CaCO3 formation) + ! + ! Variables: + ! Cphot, Cphot_Dia : Photosynthesis rates [day-1] + ! PhyC_13, DiaC_13 : Phytoplankton 13C pools [mmol13C m-3] + ! phyRespRate : Phytoplankton respiration rates [day-1] + ! rho_C1 : DOC remineralization rate [day-1] + ! arrFunc : Temperature function [-] + ! EOC_13 : Dissolved organic 13C [mmol13C m-3] + ! HetRespFlux_13 : Heterotroph respiration flux [mmol13C m-3 day-1] + ! calc_diss_13 : Calcite dissolution rate [day-1] + ! DetCalc_13 : Detrital calcite 13C [mmol13C m-3] + ! calc_loss_gra_13 : Calcite grazing flux [mmol13C m-3 day-1] + ! calc_diss_guts : Gut dissolution fraction [-] + ! calcification_13 : Calcification flux [mmol13C m-3 day-1] + ! dt_b : Biogeochemistry time step [day] + ! + ! Note: Photosynthesis preferentially takes up 12C, leaving DIC enriched in 13C + ! Respiration returns carbon with original isotopic composition + !--------------------------------------------------------------------------- + + sms(k, idic_13) = ( & + !----------------------------------------------------------------------- + ! SINKS: Carbon fixation (removes 13C-DIC) + !----------------------------------------------------------------------- + - Cphot * PhyC_13 & ! Small phyto photosynthesis + - Cphot_Dia * DiaC_13 & ! Diatom photosynthesis + ! + !----------------------------------------------------------------------- + ! SOURCES: Respiration and remineralization (returns 13C to DIC) + !----------------------------------------------------------------------- + + phyRespRate * PhyC_13 & ! Small phyto respiration + + phyRespRate_Dia * DiaC_13 & ! Diatom respiration + + rho_C1 * arrFunc * EOC_13 & ! DOC remineralization + + HetRespFlux_13 & ! Heterotroph respiration + ! + !----------------------------------------------------------------------- + ! SOURCES: Calcite dissolution (releases 13C from CaCO3) + !----------------------------------------------------------------------- + + calc_diss_13 * DetCalc_13 & ! Water column dissolution + + calc_loss_gra_13 * calc_diss_guts & ! Gut dissolution + ! + !----------------------------------------------------------------------- + ! SINKS: Calcification (removes 13C for CaCO3 formation) + !----------------------------------------------------------------------- + - calcification_13 & ! CaCO3 precipitation + ! + ) * dt_b + sms(k, idic_13) + + !=========================================================================== + ! SMALL PHYTOPLANKTON ORGANIC CARBON (PhyC_13) + !=========================================================================== + ! 13C budget for small phytoplankton biomass. + ! + ! SOURCES (+): + ! - Photosynthesis (fixes 13C-DIC into biomass) + ! + ! SINKS (-): + ! - Nutrient-stress mortality (lysis) + ! - Respiration (maintenance costs) + ! - Aggregation (particle formation) + ! - Grazing by zooplankton + ! + ! Variables: + ! lossC : Mortality rate constant [day-1] + ! limitFacN : Nutrient limitation factor [0-1] + ! aggregationRate : Aggregation rate [day-1] + ! grazingFlux_phy : Grazing flux on small phyto [mmolN m-3 day-1] + ! recipQuota_13 : 13C:N ratio [mmol13C mmolN-1] + ! + ! Note: Grazing uses recipQuota_13 to convert N-based flux to 13C flux + !--------------------------------------------------------------------------- + + sms(k, iphyc_13) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Photosynthetic production + !----------------------------------------------------------------------- + + Cphot * PhyC_13 & ! 13C fixation + ! + !----------------------------------------------------------------------- + ! SINKS: Mortality, respiration, and losses + !----------------------------------------------------------------------- + - lossC * limitFacN * PhyC_13 & ! Nutrient-stress mortality + - phyRespRate * PhyC_13 & ! Respiration + - aggregationRate * PhyC_13 & ! Aggregation loss + - grazingFlux_phy * recipQuota_13 & ! Grazing loss (N->C conversion) + ! + ) * dt_b + sms(k, iphyc_13) + + !=========================================================================== + ! DETRITAL ORGANIC CARBON (DetC_13) + !=========================================================================== + ! 13C budget for dead organic matter (detritus pool). + ! + ! SOURCES (+): + ! - Unassimilated grazing (sloppy feeding + egestion) + ! - Phytoplankton aggregation + ! - Diatom aggregation + ! - Heterotroph mortality + ! + ! SINKS (-): + ! - Remineralization (aerobic respiration) + ! - Assimilated grazing (efficient consumption) + ! + ! Variables: + ! grazEff : Grazing efficiency (fraction assimilated) [-] + ! hetLossFlux : Heterotroph mortality flux [mmolN m-3 day-1] + ! recipQZoo_13 : Heterotroph 13C:N ratio [mmol13C mmolN-1] + ! reminC : Detritus remineralization rate [day-1] + ! + ! Grazing Partitioning: + ! Total ingestion = Assimilated + Unassimilated + ! Assimilated: Goes to heterotroph biomass (grazEff × flux) + ! Unassimilated: Goes to detritus ((1-grazEff) × flux) + !--------------------------------------------------------------------------- + + sms(k, idetc_13) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Unassimilated grazing (sloppy feeding) + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota_13 & ! Total small phyto grazing + - grazingFlux_phy * recipQuota_13 * grazEff & ! Minus assimilated portion + + grazingFlux_Dia * recipQuota_dia_13 & ! Total diatom grazing + - grazingFlux_Dia * recipQuota_dia_13 * grazEff & ! Minus assimilated portion + ! + !----------------------------------------------------------------------- + ! SOURCES: Aggregation and mortality + !----------------------------------------------------------------------- + + aggregationRate * phyC_13 & ! Small phyto aggregation + + aggregationRate * DiaC_13 & ! Diatom aggregation + + hetLossFlux * recipQZoo_13 & ! Heterotroph mortality + ! + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - reminC * arrFunc * DetC_13 & ! Aerobic respiration + ! + ) * dt_b + sms(k, idetc_13) + + !=========================================================================== + ! HETEROTROPH ORGANIC CARBON (HetC_13) + !=========================================================================== + ! 13C budget for zooplankton biomass. + ! + ! SOURCES (+): + ! - Assimilated grazing on phytoplankton + ! - Assimilated grazing on diatoms + ! + ! SINKS (-): + ! - Mortality (density-dependent) + ! - Non-predatory losses (diseases, senescence) + ! - Respiration (metabolic costs) + ! + ! Variables: + ! lossC_z : Non-predatory loss rate [day-1] + ! hetRespFlux_13: Heterotroph respiration flux [mmol13C m-3 day-1] + ! + ! Note: Grazing efficiency (grazEff) determines assimilation fraction + ! Typical values: 0.6-0.8 (60-80% assimilated) + !--------------------------------------------------------------------------- + + sms(k, ihetc_13) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Assimilated food + !----------------------------------------------------------------------- + + grazingFlux_phy * recipQuota_13 * grazEff & ! Small phyto consumption + + grazingFlux_Dia * recipQuota_dia_13 * grazEff & ! Diatom consumption + ! + !----------------------------------------------------------------------- + ! SINKS: Mortality and respiration + !----------------------------------------------------------------------- + - hetLossFlux * recipQZoo_13 & ! Mortality flux + - lossC_z * HetC_13 & ! Non-predatory losses + - hetRespFlux_13 & ! Respiration + ! + ) * dt_b + sms(k, ihetc_13) + + !=========================================================================== + ! DISSOLVED ORGANIC CARBON (EOC_13) + !=========================================================================== + ! 13C budget for dissolved organic carbon pool. + ! + ! SOURCES (+): + ! - Phytoplankton exudation (nutrient-stress losses) + ! - Diatom exudation + ! - Detritus remineralization (solubilization) + ! - Heterotroph exudation (sloppy feeding, excretion) + ! - River input (terrestrial DOC) + ! + ! SINKS (-): + ! - Remineralization (microbial respiration) + ! + ! Variables: + ! lossC, lossC_d : Exudation rate constants [day-1] + ! limitFacN : Nutrient limitation factors [0-1] + ! LocRiverDOC : River DOC input flux [mmolC m-3 day-1] + ! r_iorg_13 : River 13C:12C ratio (isotopic signature) [-] + ! + ! DOC Pool Characteristics: + ! - Labile fraction: Days to weeks turnover + ! - Semi-labile fraction: Months to years turnover + ! - Model uses bulk DOC with single remineralization rate + ! + ! River Isotope Signature: + ! - Terrestrial organic matter typically depleted in 13C + ! - δ13C ≈ -27‰ for C3 plants, -13‰ for C4 plants + ! - Marine phytoplankton: δ13C ≈ -20 to -22‰ + !--------------------------------------------------------------------------- + + sms(k, idoc_13) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Exudation and solubilization + !----------------------------------------------------------------------- + + lossC * limitFacN * phyC_13 & ! Small phyto exudation + + lossC_d * limitFacN_dia * DiaC_13 & ! Diatom exudation + + reminC * arrFunc * DetC_13 & ! Detritus solubilization + + lossC_z * HetC_13 & ! Heterotroph exudation + ! + !----------------------------------------------------------------------- + ! SOURCES: River input (terrestrial DOC) + !----------------------------------------------------------------------- + + LocRiverDOC * r_iorg_13 & ! River 13C input + ! + !----------------------------------------------------------------------- + ! SINKS: Remineralization + !----------------------------------------------------------------------- + - rho_c1 * arrFunc * EOC_13 & ! Microbial respiration + ! + ) * dt_b + sms(k, idoc_13) + + !=========================================================================== + ! DIATOM ORGANIC CARBON (DiaC_13) + !=========================================================================== + ! 13C budget for diatom biomass (large phytoplankton). + ! + ! Structure identical to small phytoplankton (section 1.2) + ! with diatom-specific parameters and fluxes. + !--------------------------------------------------------------------------- + + sms(k, idiac_13) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Photosynthetic production + !----------------------------------------------------------------------- + + Cphot_dia * DiaC_13 & ! 13C fixation + ! + !----------------------------------------------------------------------- + ! SINKS: Mortality, respiration, and losses + !----------------------------------------------------------------------- + - lossC_d * limitFacN_dia * DiaC_13 & ! Nutrient-stress mortality + - phyRespRate_dia * DiaC_13 & ! Respiration + - aggregationRate * DiaC_13 & ! Aggregation loss + - grazingFlux_dia * recipQuota_dia_13 & ! Grazing loss + ! + ) * dt_b + sms(k, idiac_13) + + !=========================================================================== + ! PHYTOPLANKTON CALCITE (PhyCalc_13) + !=========================================================================== + ! 13C budget for calcium carbonate associated with living phytoplankton. + ! + ! SOURCES (+): + ! - Calcification (CaCO3 precipitation on cells) + ! + ! SINKS (-): + ! - Nutrient-stress mortality (CaCO3 to detritus) + ! - Cell death respiration (CaCO3 to detritus) + ! - Aggregation (CaCO3 incorporated in aggregates) + ! - Grazing (CaCO3 consumed with cells) + ! + ! Variables: + ! calcification_13 : 13C calcification flux [mmol13C m-3 day-1] + ! phyCalc_13 : Phytoplankton calcite 13C [mmol13C m-3] + ! calc_loss_agg_13 : Aggregation loss flux [mmol13C m-3 day-1] + ! calc_loss_gra_13 : Grazing loss flux [mmol13C m-3 day-1] + ! + ! Calcite Isotope Fractionation: + ! - Small enrichment in 13C relative to DIC (~+1‰) + ! - Temperature-dependent fractionation + ! - Important for paleoclimate proxies (foraminifera, coccoliths) + !--------------------------------------------------------------------------- + + sms(k, iphycal_13) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Calcification + !----------------------------------------------------------------------- + + calcification_13 & ! CaCO3 precipitation + ! + !----------------------------------------------------------------------- + ! SINKS: Mortality and losses + !----------------------------------------------------------------------- + - lossC * limitFacN * phyCalc_13 & ! Mortality to detritus + - phyRespRate * phyCalc_13 & ! Death to detritus + - calc_loss_agg_13 & ! Aggregation + - calc_loss_gra_13 & ! Grazing + ! + ) * dt_b + sms(k, iphycal_13) + + !=========================================================================== + ! DETRITAL CALCITE (DetCalc_13) + !=========================================================================== + ! 13C budget for calcium carbonate in detritus/particles. + ! + ! SOURCES (+): + ! - Phytoplankton mortality (CaCO3 from dead cells) + ! - Cell death (respiratory loss to detritus) + ! - Aggregation (CaCO3 in aggregates) + ! - Grazing (CaCO3 in fecal pellets) + ! + ! SINKS (-): + ! - Dissolution in water column + ! - Dissolution in grazer guts + ! + ! Variables: + ! calc_diss_guts : Fraction dissolved in guts (typically 0.1-0.5) [-] + ! + ! Calcite Dissolution: + ! - Thermodynamically driven (saturation state dependent) + ! - Faster in undersaturated waters (deep ocean, high CO2) + ! - Gut dissolution: Acidic environment accelerates dissolution + ! - Returns 13C to DIC pool (source for DIC_13 budget) + !--------------------------------------------------------------------------- + + sms(k, idetcal_13) = ( & + !----------------------------------------------------------------------- + ! SOURCES: Mortality and transfer from living cells + !----------------------------------------------------------------------- + + lossC * limitFacN * phyCalc_13 & ! Mortality + + phyRespRate * phyCalc_13 & ! Death + + calc_loss_agg_13 & ! Aggregation + + calc_loss_gra_13 & ! Grazing (to fecal pellets) + ! + !----------------------------------------------------------------------- + ! SINKS: Dissolution + !----------------------------------------------------------------------- + - calc_loss_gra_13 * calc_diss_guts & ! Gut dissolution + - calc_diss_13 * DetCalc_13 & ! Water column dissolution + ! + ) * dt_b + sms(k, idetcal_13) + + if (ciso_14) then + + if (ciso_organic_14) then + + !=================================================================== + ! CARBON-14 (14C) BUDGETS + !=================================================================== + ! Calculates 14C budgets for radiocarbon applications. + ! Structure identical to 13C budgets (sections 1.1-1.8). + ! + ! Additional Consideration: + ! - Radioactive decay (half-life 5,730 years) + ! - Decay term handled separately in forcing module + ! - Bomb radiocarbon (anthropogenic 14C pulse) + ! + ! Applications: + ! - Ocean ventilation age (Δ14C) + ! - Carbon residence time + ! - Mixing timescales + ! - Model validation (WOCE/CLIVAR 14C data) + ! + ! Notation: + ! All variables end in _14 (e.g., PhyC_14, DiaC_14) + ! Structure parallels 13C budgets exactly + !------------------------------------------------------------------- + + !=================================================================== + ! DIC_14 + !=================================================================== + sms(k, idic_14) = ( & + - Cphot * PhyC_14 & + + phyRespRate * PhyC_14 & + - Cphot_Dia * DiaC_14 & + + phyRespRate_Dia * DiaC_14 & + + rho_C1 * arrFunc * EOC_14 & + + HetRespFlux_14 & + + calc_diss_14 * DetCalc_14 & + + calc_loss_gra_14 * calc_diss_guts & + - calcification_14 & + ) * dt_b + sms(k, idic_14) + + !=================================================================== + ! PhyC_14 + !=================================================================== + sms(k, iphyc_14) = ( & + + Cphot * PhyC_14 & + - lossC * limitFacN * PhyC_14 & + - phyRespRate * PhyC_14 & + - aggregationRate * PhyC_14 & + - grazingFlux_phy * recipQuota_14 & + ) * dt_b + sms(k, iphyc_14) + + !=================================================================== + ! DetC_14 + !=================================================================== + sms(k, idetc_14) = ( & + + grazingFlux_phy * recipQuota_14 & + - grazingFlux_phy * recipQuota_14 * grazEff & + + grazingFlux_Dia * recipQuota_dia_14 & + - grazingFlux_Dia * recipQuota_dia_14 * grazEff & + + aggregationRate * phyC_14 & + + aggregationRate * DiaC_14 & + + hetLossFlux * recipQZoo_14 & + - reminC * arrFunc * DetC_14 & + ) * dt_b + sms(k, idetc_14) + + !=================================================================== + ! HetC_14 + !=================================================================== + sms(k, ihetc_14) = ( & + + grazingFlux_phy * recipQuota_14 * grazEff & + + grazingFlux_Dia * recipQuota_dia_14 * grazEff & + - hetLossFlux * recipQZoo_14 & + - lossC_z * HetC_14 & + - hetRespFlux_14 & + ) * dt_b + sms(k, ihetc_14) + + !=================================================================== + ! EOC_14 + !=================================================================== + sms(k, idoc_14) = ( & + + lossC * limitFacN * phyC_14 & + + lossC_d * limitFacN_dia * DiaC_14 & + + reminC * arrFunc * DetC_14 & + + lossC_z * HetC_14 & + - rho_c1 * arrFunc * EOC_14 & + + LocRiverDOC * r_iorg_14 & + ) * dt_b + sms(k, idoc_14) + + !=================================================================== + ! DiaC_14 + !=================================================================== + sms(k, idiac_14) = ( & + + Cphot_dia * DiaC_14 & + - lossC_d * limitFacN_dia * DiaC_14 & + - phyRespRate_dia * DiaC_14 & + - aggregationRate * DiaC_14 & + - grazingFlux_dia * recipQuota_dia_14 & + ) * dt_b + sms(k, idiac_14) + + !=================================================================== + ! PhyCalc_14 + !=================================================================== + sms(k, iphycal_14) = ( & + + calcification_14 & + - lossC * limitFacN * phyCalc_14 & + - phyRespRate * phyCalc_14 & + - calc_loss_agg_14 & + - calc_loss_gra_14 & + ) * dt_b + sms(k, iphycal_14) + + !=================================================================== + ! DetCalc_14 + !=================================================================== + sms(k, idetcal_14) = ( & + + lossC * limitFacN * phyCalc_14 & + + phyRespRate * phyCalc_14 & + + calc_loss_agg_14 & + + calc_loss_gra_14 & + - calc_loss_gra_14 * calc_diss_guts & + - calc_diss_14 * DetCalc_14 & + ) * dt_b + sms(k, idetcal_14) + + else + + !=================================================================== + ! ABIOTIC DIC_14 (SIMPLIFIED MODE) + !=================================================================== + ! "Abiotic" 14C tracking without explicit organic pools + ! DIC_14 tracks total carbon with radioactive decay only + ! + ! Use Case: + ! - Simplified radiocarbon tracer + ! - Tracks ventilation/mixing without biology + ! - Computationally efficient + ! - Decay handled in forcing module (recom_forcing) + ! + ! Equation: + ! DIC_14 changes identically to DIC (conservative tracer) + ! Plus: Radioactive decay (handled separately) + ! + ! Limitation: + ! - No isotope fractionation during biological processes + ! - Cannot capture biological isotope signals + ! - Suitable only for physical circulation studies + !------------------------------------------------------------------- + + sms(k, idic_14) = sms(k, idic) + + end if ! ciso_organic_14 + + end if ! ciso_14 + + end if ! ciso + + !------------------------------------------------------------------------------- + ! DIAGNOSTIC ACCUMULATION INITIALIZATION + !------------------------------------------------------------------------------- + ! Calculate averaging weight for accumulating diagnostics over biogeochemical + ! sub-time steps. + ! + ! Variables: + ! recipbiostep : Reciprocal of number of bio sub-steps (averaging weight) [-] + ! biostep : Number of biogeochemistry steps per physics step [-] + ! + ! Averaging Approach: + ! Each sub-step contributes: (1/biostep) × rate + ! After biostep iterations: average rate over physics time step + ! + ! Example: + ! If biostep = 4 (4 bio steps per physics step) + ! recipbiostep = 0.25 + ! Each contribution weighted by 0.25 + ! Sum of 4 contributions = time-averaged rate + !------------------------------------------------------------------------------- + + recipbiostep = 1.d0 / real(biostep) + + if (Diags) then + + !=========================================================================== + ! PRIMARY PRODUCTION DIAGNOSTICS + !=========================================================================== + ! Net Primary Production (NPP) = Gross Production - Autotrophic Respiration + ! Gross Primary Production (GPP) = Photosynthetic carbon fixation only + ! + ! NPP represents carbon available for: + ! - Growth (biomass increase) + ! - Exudation (DOC production) + ! - Grazing by herbivores + ! + ! Units: mmolC m-3 day-1 + !--------------------------------------------------------------------------- + + !=========================================================================== + ! NET PRIMARY PRODUCTION (NPP) + !=========================================================================== + ! NPP = Photosynthesis - Respiration + ! Carbon available after meeting metabolic maintenance costs + ! + ! Variables (Small phytoplankton): + ! vertNPPn(k) : Time-averaged NPP for small phyto [mmolC m-3 day-1] + ! Cphot : Carbon-specific photosynthesis rate [day-1] + ! PhyC : Small phytoplankton carbon [mmolC m-3] + ! PhyRespRate : Respiration rate [day-1] + ! + ! Ecological Interpretation: + ! High NPP: Nutrient replete, optimal growth conditions + ! Low NPP: Nutrient/light limited, high respiration costs + ! Negative NPP: Respiration exceeds photosynthesis (rare, stress) + ! + ! Validation Targets: + ! - 14C uptake measurements + ! - Satellite-based NPP estimates (VGPM, CbPM, CAFE) + ! - Time series stations (HOT, BATS) + ! - Typical range: 0.1-10 mmolC m-3 day-1 (surface) + !--------------------------------------------------------------------------- + + ! Small phytoplankton NPP + vertNPPn(k) = vertNPPn(k) + ( & + + Cphot * PhyC & ! Photosynthetic production + - PhyRespRate * PhyC & ! Minus respiration costs + ) * recipbiostep + + ! Diatom NPP + vertNPPd(k) = vertNPPd(k) + ( & + + Cphot_dia * DiaC & + - PhyRespRate_dia * DiaC & + ) * recipbiostep + + if (enable_coccos) then + ! Coccolithophore NPP + vertNPPc(k) = vertNPPc(k) + ( & + + Cphot_cocco * CoccoC & + - PhyRespRate_cocco * CoccoC & + ) * recipbiostep + + ! Phaeocystis NPP + vertNPPp(k) = vertNPPp(k) + ( & + + Cphot_phaeo * PhaeoC & + - PhyRespRate_phaeo * PhaeoC & + ) * recipbiostep + endif + + !=========================================================================== + ! GROSS PRIMARY PRODUCTION (GPP) + !=========================================================================== + ! GPP = Total photosynthetic carbon fixation (before respiration) + ! Represents maximum potential carbon uptake + ! + ! Relationship: + ! GPP = NPP + Respiration + ! Growth efficiency = NPP / GPP (typically 0.6-0.8) + ! + ! Uses: + ! - Calculate carbon use efficiency + ! - Compare to oxygen evolution (photosynthetic quotient) + ! - Understand temperature effects (GPP and R differ) + ! + ! Typical Values: + ! Surface: 1-20 mmolC m-3 day-1 + ! Deep chlorophyll max: 0.1-5 mmolC m-3 day-1 + ! Below euphotic zone: <0.01 mmolC m-3 day-1 + !--------------------------------------------------------------------------- + + ! Small phytoplankton GPP + vertGPPn(k) = vertGPPn(k) + ( & + + Cphot * PhyC & ! Total photosynthetic fixation + ) * recipbiostep + + ! Diatom GPP + vertGPPd(k) = vertGPPd(k) + ( & + + Cphot_dia * DiaC & + ) * recipbiostep + + if (enable_coccos) then + ! Coccolithophore GPP + vertGPPc(k) = vertGPPc(k) + ( & + + Cphot_cocco * CoccoC & + ) * recipbiostep + + ! Phaeocystis GPP + vertGPPp(k) = vertGPPp(k) + ( & + + Cphot_phaeo * PhaeoC & + ) * recipbiostep + endif + + !=========================================================================== + ! NET NITROGEN ASSIMILATION + !=========================================================================== + ! Net nitrogen uptake = Assimilation - Exudation losses + ! Represents nitrogen incorporation into biomass + ! + ! Variables (Small phytoplankton): + ! vertNNAn(k) : Net N assimilation for small phyto [mmolN m-3 day-1] + ! N_assim : N-specific assimilation rate [mmolN mmolC-1 day-1] + ! PhyC : Small phytoplankton carbon [mmolC m-3] + ! lossN : N exudation rate constant [day-1] + ! limitFacN : Nutrient limitation factor [0-1] + ! PhyN : Small phytoplankton nitrogen [mmolN m-3] + ! + ! Ecological Interpretation: + ! Positive: Net nitrogen accumulation (growth) + ! Negative: Net nitrogen loss (stress-induced exudation) + ! Zero: Balanced uptake and loss (steady state) + ! + ! Relationship to C:N Ratio: + ! Net N assimilation / NPP = change in N:C quota + ! High ratio -> decreasing C:N (N accumulation) + ! Low ratio -> increasing C:N (N limitation) + ! + ! Validation: + ! - 15N tracer studies + ! - Nutrient depletion experiments + ! - Typical range: 0.01-2 mmolN m-3 day-1 + !--------------------------------------------------------------------------- + + ! Small phytoplankton net N assimilation + vertNNAn(k) = vertNNAn(k) + ( & + + N_assim * PhyC & ! Nitrogen uptake from DIN + - lossN * limitFacN * PhyN & ! Minus exudation (stress-induced) + ) * recipbiostep + + ! Diatom net N assimilation + vertNNAd(k) = vertNNAd(k) + ( & + + N_assim_dia * DiaC & + - lossN * limitFacN_dia * DiaN & + ) * recipbiostep + + if (enable_coccos) then + ! Coccolithophore net N assimilation + vertNNAc(k) = vertNNAc(k) + ( & + + N_assim_cocco * CoccoC & + - lossN * limitFacN_cocco * CoccoN & + ) * recipbiostep + + ! Phaeocystis net N assimilation + vertNNAp(k) = vertNNAp(k) + ( & + + N_assim_phaeo * PhaeoC & + - lossN * limitFacN_phaeo * PhaeoN & + ) * recipbiostep + endif + + !=========================================================================== + ! CHLOROPHYLL DEGRADATION RATES + !=========================================================================== + ! Tracks chlorophyll turnover rates (photodamage + senescence) + ! Important for understanding chlorophyll:carbon dynamics + ! + ! Variables: + ! vertChldegn(k) : Small phyto Chl degradation rate [day-1] + ! KOchl : Chlorophyll degradation rate coefficient [day-1] + ! + ! Rate Components: + ! - Base degradation: Constant senescence (~0.01-0.05 day-1) + ! - Photodamage: Light-dependent additional degradation + ! - Total: KOchl = base + photodamage component + ! + ! Ecological Significance: + ! - High rates: Photodamage stress, high light + ! - Low rates: Low light, minimal photoinhibition + ! - Affects Chl:C ratio and satellite retrievals + ! + ! Applications: + ! - Understand Chl:C variability + ! - Validate photoacclimation dynamics + ! - Interpret satellite chlorophyll trends + ! + ! Note: Changed from gross N-assimilation diagnostic (previous version) + !--------------------------------------------------------------------------- + + ! Small phytoplankton Chl degradation + vertChldegn(k) = vertChldegn(k) + ( & + + KOchl & ! Degradation rate [day-1] + ) * recipbiostep + + ! Diatom Chl degradation + vertChldegd(k) = vertChldegd(k) + ( & + + KOchl_dia & + ) * recipbiostep + + if (enable_coccos) then + ! Coccolithophore Chl degradation + vertChldegc(k) = vertChldegc(k) + ( & + + KOchl_cocco & + ) * recipbiostep + + ! Phaeocystis Chl degradation + vertChldegp(k) = vertChldegp(k) + ( & + + KOchl_phaeo & + ) * recipbiostep + endif + + !=========================================================================== + ! ZOOPLANKTON RESPIRATION + !=========================================================================== + ! Tracks heterotrophic respiration (metabolic CO2 release) + ! Key component of carbon cycling and food web energetics + ! + ! Variables: + ! vertrespmeso(k) : Mesozooplankton respiration [mmolC m-3 day-1] + ! HetRespFlux : Meso respiration flux [mmolC m-3 day-1] + ! + ! Ecological Significance: + ! - Represents metabolic carbon loss + ! - Typically 20-40% of ingested carbon + ! - Temperature-dependent (Q10 ≈ 2-3) + ! - Increases with activity level + ! + ! Validation: + ! - Incubation experiments (O2 consumption) + ! - ETS (electron transport system) measurements + ! - Typical range: 0.01-1 mmolC m-3 day-1 + !--------------------------------------------------------------------------- + + ! Mesozooplankton respiration + vertrespmeso(k) = vertrespmeso(k) + ( & + + HetRespFlux & ! Carbon respiration flux + ) * recipbiostep + + if (enable_3zoo2det) then + ! Macrozooplankton (krill) respiration + vertrespmacro(k) = vertrespmacro(k) + ( & + + Zoo2RespFlux & + ) * recipbiostep + + ! Microzooplankton respiration + vertrespmicro(k) = vertrespmicro(k) + ( & + + MicZooRespFlux & + ) * recipbiostep + endif + + !=========================================================================== + ! CALCITE DISSOLUTION + !=========================================================================== + ! Tracks calcium carbonate dissolution in water column + ! Critical for carbonate counter-pump and alkalinity cycling + ! + ! Variables: + ! vertcalcdiss(k) : Calcite dissolution rate [mmolC m-3 day-1] + ! calc_diss : Dissolution rate coefficient [day-1] + ! DetCalc : Detrital calcite concentration [mmolC m-3] + ! + ! Process: + ! CaCO3 -> Ca²⁺ + CO3²⁻ + ! Releases DIC (+1) and alkalinity (+2) + ! + ! Controls: + ! - Saturation state (Ω < 1 favors dissolution) + ! - Temperature (higher T -> faster kinetics) + ! - Pressure (higher P -> lower Ω) + ! + ! Depth Pattern: + ! - Surface: Minimal (supersaturated, Ω > 1) + ! - Intermediate: Moderate (Ω ≈ 1) + ! - Deep: High (undersaturated, Ω < 1) + ! + ! Applications: + ! - Ocean acidification impacts + ! - Carbon export efficiency + ! - Sediment CaCO3 preservation + !--------------------------------------------------------------------------- + + vertcalcdiss(k) = vertcalcdiss(k) + ( & + + calc_diss * DetCalc & ! Dissolution flux + ) * recipbiostep + + !=========================================================================== + ! PARTICLE AGGREGATION + !=========================================================================== + ! Tracks formation of large particles through aggregation + ! Key process for biological pump and carbon export + ! + ! Variables: + ! vertaggn(k) : Small phyto aggregation [mmolC m-3 day-1] + ! aggregationrate : Aggregation rate coefficient [day-1] + ! PhyC : Small phytoplankton carbon [mmolC m-3] + ! + ! Aggregation Mechanisms: + ! - Brownian motion (small particles) + ! - Differential settling (size-dependent) + ! - Shear aggregation (turbulence) + ! - Mucus/TEP gluing (especially diatoms) + ! + ! Enhancement Factors: + ! - High phytoplankton concentration + ! - Nutrient limitation (mucus production) + ! - Turbulence (increased collision rate) + ! - Sticky exudates (TEP, polysaccharides) + ! + ! Ecological Significance: + ! - Increases sinking velocity (export) + ! - Forms marine snow + ! - Provides food for deep-sea organisms + ! - Removes surface biomass + ! + ! Typical Rates: + ! - Low aggregation: <0.01 day-1 + ! - Moderate: 0.01-0.1 day-1 + ! - High (bloom collapse): >0.1 day-1 + !--------------------------------------------------------------------------- + + ! Small phytoplankton aggregation + vertaggn(k) = vertaggn(k) + ( & + + aggregationrate * PhyC & ! Aggregate formation + ) * recipbiostep + + ! Diatom aggregation + vertaggd(k) = vertaggd(k) + ( & + + aggregationrate * DiaC & + ) * recipbiostep + + if (enable_coccos) then + ! Coccolithophore aggregation + vertaggc(k) = vertaggc(k) + ( & + + aggregationrate * CoccoC & + ) * recipbiostep + + ! Phaeocystis aggregation + vertaggp(k) = vertaggp(k) + ( & + + aggregationrate * PhaeoC & + ) * recipbiostep + endif + + !=========================================================================== + ! DOC EXCRETION + !=========================================================================== + ! Tracks dissolved organic carbon release by phytoplankton + ! Important for microbial loop and carbon cycling + ! + ! Variables: + ! vertdocexn(k) : Small phyto DOC excretion [mmolC m-3 day-1] + ! lossC : Carbon exudation rate constant [day-1] + ! limitFacN : Nutrient limitation factor [0-1] + ! phyC : Small phytoplankton carbon [mmolC m-3] + ! + ! Exudation Mechanisms: + ! - Passive leakage (diffusion across membranes) + ! - Overflow metabolism (excess photosynthate) + ! - Stress response (nutrient limitation) + ! - Viral lysis (cell breakage) + ! + ! Nutrient Stress Effect: + ! - High limitFacN (replete): Low exudation + ! - Low limitFacN (limited): High exudation + ! - C:N imbalance drives carbon overflow + ! + ! DOC Fate: + ! - Labile fraction: Rapid bacterial uptake (hours-days) + ! - Semi-labile: Slower degradation (weeks-months) + ! - Refractory: Accumulates (years-millennia) + ! + ! Ecological Role: + ! - Fuels microbial loop + ! - Carbon loss without grazing + ! - Nutrient regeneration (after remineralization) + ! + ! Typical Rates: + ! - Percent of GPP: 5-30% + ! - Higher under nutrient stress + ! - Lower for healthy, growing cells + !--------------------------------------------------------------------------- + + ! Small phytoplankton DOC excretion + vertdocexn(k) = vertdocexn(k) + ( & + + lossC * limitFacN * phyC & ! Stress-induced exudation + ) * recipbiostep + + ! Diatom DOC excretion + vertdocexd(k) = vertdocexd(k) + ( & + + lossC_d * limitFacN_dia * DiaC & + ) * recipbiostep + + if (enable_coccos) then + ! Coccolithophore DOC excretion + vertdocexc(k) = vertdocexc(k) + ( & + + lossC_c * limitFacN_cocco * CoccoC & + ) * recipbiostep + + ! Phaeocystis DOC excretion + vertdocexp(k) = vertdocexp(k) + ( & + + lossC_p * limitFacN_phaeo * PhaeoC & + ) * recipbiostep + endif + + !=========================================================================== + ! CALCIFICATION + !=========================================================================== + ! Tracks calcium carbonate precipitation by phytoplankton + ! Key process for carbonate counter-pump + ! + ! Variables: + ! vertcalcif(k) : Calcification rate [mmolC m-3 day-1] + ! calcification : CaCO3 precipitation flux [mmolC m-3 day-1] + ! + ! Process: + ! Ca²⁺ + 2HCO3⁻ -> CaCO3 + CO2 + H2O + ! Consumes DIC (-1) and alkalinity (-2) + ! Releases CO2 (carbonate counter-pump) + ! + ! Organisms: + ! - Coccolithophores (calcite plates) + ! - Foraminifera (calcite shells) + ! - Pteropods (aragonite shells - not in this model) + ! + ! Environmental Controls: + ! - Temperature (warmer favors calcification) + ! - Carbonate saturation (Ω > 1 required) + ! - pH/CO2 (ocean acidification reduces rate) + ! - Nutrient availability (affects PIC:POC ratio) + ! + ! Ecological Significance: + ! - Ballast for sinking (increases export) + ! - Protection from grazers + ! - CO2 source (opposite to photosynthesis) + ! - Sensitive to ocean acidification + ! + ! Typical Rates: + ! - Surface (bloom): 0.1-2 mmolC m-3 day-1 + ! - Background: 0.001-0.05 mmolC m-3 day-1 + !--------------------------------------------------------------------------- + + vertcalcif(k) = vertcalcif(k) + ( & + + calcification & ! CaCO3 precipitation + ) * recipbiostep + + !=========================================================================== + ! PHYTOPLANKTON RESPIRATION + !=========================================================================== + ! Tracks autotrophic respiration (maintenance costs) + ! Component of community respiration, complement to GPP + ! + ! Variables: + ! vertrespn(k) : Small phyto respiration [mmolC m-3 day-1] + ! PhyRespRate : Respiration rate coefficient [day-1] + ! PhyC : Small phytoplankton carbon [mmolC m-3] + ! + ! Respiration Components: + ! - Basal metabolism: Maintenance of cellular machinery + ! - Biosynthesis: Costs of growth (protein synthesis, etc.) + ! - Active transport: Nutrient uptake against gradients + ! - Photorespiration: Oxygenase activity of Rubisco + ! + ! Temperature Dependence: + ! - Q10 ≈ 2-3 (doubles per 10degC increase) + ! - Often higher than photosynthesis Q10 + ! - Creates temperature-dependent growth efficiency + ! + ! Relationship to NPP: + ! GPP = NPP + Respiration + ! Growth efficiency = NPP/GPP = 1 - (Resp/GPP) + ! Typical: 0.6-0.8 (60-80% efficiency) + ! + ! Ecological Patterns: + ! - Increases with biomass (proportional) + ! - Higher in warm waters (temperature effect) + ! - Lower in nutrient-replete conditions (efficient growth) + ! - Higher during stress (maintenance costs) + !--------------------------------------------------------------------------- + + ! Small phytoplankton respiration + vertrespn(k) = vertrespn(k) + ( & + + PhyRespRate * PhyC & ! Maintenance respiration + ) * recipbiostep + + ! Diatom respiration + vertrespd(k) = vertrespd(k) + ( & + + PhyRespRate_dia * DiaC & + ) * recipbiostep + + if (enable_coccos) then + ! Coccolithophore respiration + vertrespc(k) = vertrespc(k) + ( & + + PhyRespRate_cocco * CoccoC & + ) * recipbiostep + + ! Phaeocystis respiration + vertrespp(k) = vertrespp(k) + ( & + + PhyRespRate_phaeo * PhaeoC & + ) * recipbiostep + endif + + endif ! Diags + + end do ! Main vertikal loop ends + + !=============================================================================== + ! BENTHIC REMINERALIZATION + !=============================================================================== + ! Simulates nutrient return from sediments to the bottom water layer through + ! remineralization of organic matter and calcite dissolution. + ! + ! This part calculates: + ! 1. Remineralization of benthic organic matter (N, C, Si) + ! 2. Dissolution of benthic calcite (CaCO3) + ! 3. Carbon isotope remineralization (13C, 14C - optional) + ! 4. Nutrient flux from sediments to bottom water + ! + ! Key Features: + ! - Single benthic layer (vertically integrated) + ! - First-order decay kinetics for remineralization + ! - Separate rates for N, C, Si, and calcite + ! - Optional MEDUSA sediment flux forcing + ! - Isotope fractionation during remineralization + ! - Conservative tracer return to water column + ! + ! Benthic Processes: + ! - Aerobic respiration: Organic matter -> DIN + DIC + ! - Silica dissolution: Biogenic SiO2 -> Si(OH)4 + ! - Calcite dissolution: CaCO3 -> Ca²⁺ + CO3²⁻ (affects DIC + Alk) + ! - Denitrification: In anoxic sediments (not explicitly modeled) + ! + ! Model Structure: + ! - Benthos as single well-mixed compartment + ! - Area-integrated concentrations [mmol m-2] + ! - Decay rates calibrated to observations + ! - Instant return to bottom water layer + ! + ! Ecological/Biogeochemical Significance: + ! - Closes nutrient cycles (prevents accumulation in benthos) + ! - Critical for shallow shelf ecosystems + ! - Supports benthic-pelagic coupling + ! - Affects bottom water oxygen and pH + ! - Important for coastal carbon budgets + ! + ! Limitations: + ! - No explicit burial (all material eventually remineralized) + ! - No bioturbation or bioirrigation + ! - No redox zonation in sediments + ! - Simplified single-layer representation + ! + ! References: + ! - Schourup-Kristensen et al. (2013) - REcoM benthic module + ! - MEDUSA forcing for data-constrained sediment fluxes + !=============================================================================== + + !=============================================================================== + ! REMINERALIZATION MODE SELECTION + !=============================================================================== + ! Determines whether to use MEDUSA sediment flux forcing or internal + ! benthic remineralization calculations. + ! + ! Variables: + ! use_MEDUSA : Flag to enable MEDUSA sediment forcing [logical] + ! sedflx_num : Number of MEDUSA sediment flux entries [-] + ! mype : Processor ID for parallel output [integer] + ! + ! MEDUSA Mode: + ! - Uses observationally-constrained sediment fluxes + ! - Overrides internal benthic calculations + ! - Typically used for hindcast simulations + ! - Requires external data file + ! + ! Internal Mode: + ! - Uses prognostic benthic compartment + ! - First-order decay kinetics + ! - Suitable for future projections + ! - No external data required + !------------------------------------------------------------------------------- + + if (use_MEDUSA .and. (sedflx_num /= 0)) then + + !=========================================================================== + ! MEDUSA SEDIMENT FLUX FORCING MODE + !=========================================================================== + ! Use externally prescribed sediment nutrient fluxes + ! This overrides all internal benthic calculations + !--------------------------------------------------------------------------- + + if (mype == 0) then + ! Print message only on master processor (parallel computing) + write(*, *) ' --> Sedimentary input of nutrients through MEDUSA' + endif + + ! Note: MEDUSA fluxes are applied elsewhere in the code + ! This section simply skips internal benthic calculations -!------------------------------------------------------------------------------- -! Remineralization from the sediments into the bottom layer - - if (use_MEDUSA .and. (sedflx_num .ne. 0)) then - if (mype==0) then !OG - write(*,*) ' --> Sedimentary input of nutrients through MEDUSA' - endif - - else ! not use_MEDUSA or sedflx_num = 0 -!*** DIN *** -!< decayRateBenN: Remineralization rate for benthic N [day^-1] -!< LocBenthos(1): Vertically integrated N concentration in benthos (1 layer) [mmolN/m^2] - decayBenthos(1) = decayRateBenN * LocBenthos(1) - LocBenthos(1) = LocBenthos(1) - decaybenthos(1) * dt_b ! remove from benthos (flux) - -!*** DIC *** -!< decayRateBenC: Remineralization rate for benthic C [day^-1] -!< LocBenthos(2): Vertically integrated C concentration in benthos (1 layer) [mmolC/m^2] - decayBenthos(2) = decayRateBenC * LocBenthos(2) - LocBenthos(2) = LocBenthos(2) - decaybenthos(2) * dt_b - -!*** Si *** -!< decayRateBenSi: Remineralization rate for benthic Si [day^-1] -!< LocBenthos(3) : Vertically integrated N concentration in benthos (1 layer) [mmolSi/m^2] - decayBenthos(3) = decayRateBenSi * LocBenthos(3) ! [1/day] * [mmolSi/m2] -> [mmolSi/m2/day] - LocBenthos(3) = LocBenthos(3) - decaybenthos(3) * dt_b - -!*** Calc: DIC, Alk *** ! OG calc_diss_ben is taken from the deepest level - decayBenthos(4) = calc_diss_ben * LocBenthos(4) ! NEW DISS changed calc_diss to calc_diss_ben to not make the dissolution omega dependent when using the switch OmegaC_diss - LocBenthos(4) = LocBenthos(4) - decayBenthos(4) * dt_b - - if (ciso) then -!*** DIC_13 *** We ignore isotopic fractionation during remineralization. - decayBenthos(5) = alpha_dcal_13 * decayRateBenC * LocBenthos(5) - LocBenthos(5) = LocBenthos(5) - decayBenthos(5) * dt_b -!*** Calc: DIC_13 *** - decayBenthos(6) = calc_diss_13 * LocBenthos(6) - LocBenthos(6) = LocBenthos(6) - decayBenthos(6) * dt_b ! / depth of benthos - if (ciso_14) then - if (ciso_organic_14) then -!*** DIC_14 *** We ignore isotopic fractionation during remineralization. - decayBenthos(7) = alpha_dcal_14 * decayRateBenC * LocBenthos(7) - LocBenthos(7) = LocBenthos(7) - decayBenthos(7) * dt_b -!*** Calc: DIC_14 *** - decayBenthos(8) = calc_diss_14 * LocBenthos(8) - LocBenthos(8) = LocBenthos(8) - decayBenthos(8) * dt_b ! / depth of benthos else -! Do nothing here because sms(idic_14) is defined as sms(idic) further -! above - end if ! ciso_organic_14 - end if ! ciso_14 - end if ! ciso - endif ! use_MEDUSA - end do ! Main time loop ends + !=========================================================================== + ! INTERNAL BENTHIC REMINERALIZATION (DEFAULT MODE) + !=========================================================================== + ! Calculates nutrient return from benthic compartment using first-order + ! decay kinetics for each element. + !--------------------------------------------------------------------------- + + !=========================================================================== + ! DISSOLVED INORGANIC NITROGEN (DIN) REMINERALIZATION + !=========================================================================== + ! Aerobic remineralization of organic nitrogen in sediments releases + ! bioavailable nitrogen (NH4+ and NO3-) back to the water column. + ! + ! Variables: + ! decayBenthos(1) : N remineralization flux [mmolN m-2 day-1] + ! decayRateBenN : Benthic N remineralization rate [day-1] + ! LocBenthos(1) : Benthic N pool (area-integrated) [mmolN m-2] + ! dt_b : REcoM time step [day] + ! + ! Equation: + ! Flux = decayRateBenN × LocBenthos(1) + ! LocBenthos(1)_new = LocBenthos(1)_old - Flux × dt_b + ! + ! Process Representation: + ! Organic N (proteins, amino acids, etc.) -> NH4+ -> NO3- + ! First-order decay: rate proportional to benthic N pool + ! + ! Typical Values: + ! decayRateBenN ~ 0.01-0.1 day-1 (10-100 day turnover) + ! Higher rates in warm, oxygenated sediments + !--------------------------------------------------------------------------- + + ! Calculate N remineralization flux [mmolN m-2 day-1] + decayBenthos(1) = decayRateBenN * LocBenthos(1) + + ! Update benthic N pool (remove remineralized N) + LocBenthos(1) = LocBenthos(1) - decayBenthos(1) * dt_b + + !=========================================================================== + ! DISSOLVED INORGANIC CARBON (DIC) REMINERALIZATION + !=========================================================================== + ! Aerobic respiration of organic carbon releases CO2 to bottom water. + ! Affects carbonate system (pH, pCO2, saturation state). + ! + ! Variables: + ! decayBenthos(2) : C remineralization flux [mmolC m-2 day-1] + ! decayRateBenC : Benthic C remineralization rate [day-1] + ! LocBenthos(2) : Benthic C pool (area-integrated) [mmolC m-2] + ! + ! Process Representation: + ! Organic C (carbohydrates, lipids, etc.) + O2 -> CO2 + H2O + ! Releases DIC and consumes O2 (not explicitly tracked) + ! + ! Stoichiometry: + ! C:N remineralization ratio typically near Redfield (6.6:1) + ! Can vary with organic matter source and degradation state + ! + ! Typical Values: + ! decayRateBenC ~ 0.01-0.1 day-1 + ! May differ from N rate due to preferential degradation + !--------------------------------------------------------------------------- + + ! Calculate C remineralization flux [mmolC m-2 day-1] + decayBenthos(2) = decayRateBenC * LocBenthos(2) + + ! Update benthic C pool + LocBenthos(2) = LocBenthos(2) - decayBenthos(2) * dt_b + + !=========================================================================== + ! SILICATE (Si) DISSOLUTION + !=========================================================================== + ! Dissolution of biogenic silica (diatom frustules) releases Si(OH)4. + ! Temperature-dependent process (faster in warm water). + ! + ! Variables: + ! decayBenthos(3) : Si dissolution flux [mmolSi m-2 day-1] + ! decayRateBenSi : Benthic Si dissolution rate [day-1] + ! LocBenthos(3) : Benthic Si pool (area-integrated) [mmolSi m-2] + ! + ! Process Representation: + ! Biogenic SiO2 (opal) + H2O -> Si(OH)4 (silicic acid) + ! Thermodynamically driven dissolution (opal undersaturated in seawater) + ! + ! Typical Values: + ! decayRateBenSi ~ 0.001-0.01 day-1 (100-1000 day turnover) + ! Slower than organic matter (opal is recalcitrant) + ! Temperature-dependent (see reminSiT calculation earlier) + ! + ! Ecological Significance: + ! - Returns Si to support diatom production + ! - Critical in Si-limited regions + ! - Permanent burial in deep sediments affects long-term Si cycle + !--------------------------------------------------------------------------- + + ! Calculate Si dissolution flux [mmolSi m-2 day-1] + decayBenthos(3) = decayRateBenSi * LocBenthos(3) + + ! Update benthic Si pool + LocBenthos(3) = LocBenthos(3) - decayBenthos(3) * dt_b + + !=========================================================================== + ! CALCITE (CaCO3) DISSOLUTION + !=========================================================================== + ! Dissolution of calcium carbonate affects both DIC and alkalinity. + ! Rate depends on saturation state (calculated in deepest water layer). + ! + ! Variables: + ! decayBenthos(4) : Calcite dissolution flux [mmolC m-2 day-1] + ! calc_diss_ben : Benthic calcite dissolution rate [day-1] + ! LocBenthos(4) : Benthic calcite pool [mmolC m-2] + ! + ! Process Representation: + ! CaCO3 + CO2 + H2O ⇌ Ca²⁺ + 2HCO3- + ! Increases DIC (+1) and alkalinity (+2) + ! + ! Rate Determination: + ! calc_diss_ben taken from deepest water layer + ! Uses either saturation-state or depth-dependent formulation + ! (see calcite dissolution module earlier in code) + ! + ! Carbonate Chemistry Effect: + ! - Raises pH (consumes CO2) + ! - Increases carbonate saturation + ! - Buffers ocean acidification locally + ! + ! Note: Changed from calc_diss to calc_diss_ben to allow independent + ! control when using OmegaC_diss switch + !--------------------------------------------------------------------------- + + ! Calculate calcite dissolution flux [mmolC m-2 day-1] + decayBenthos(4) = calc_diss_ben * LocBenthos(4) + + ! Update benthic calcite pool + LocBenthos(4) = LocBenthos(4) - decayBenthos(4) * dt_b + + if (ciso) then + + !======================================================================= + ! CARBON ISOTOPE REMINERALIZATION (OPTIONAL) + !======================================================================= + ! Tracks 13C and 14C through benthic remineralization processes. + ! Important for paleoclimate reconstructions and carbon cycle studies. + !----------------------------------------------------------------------- + + !======================================================================= + ! Carbon-13 (13C) Remineralization + !======================================================================= + ! Organic matter remineralization with isotopic fractionation + ! + ! Variables: + ! decayBenthos(5) : 13C remineralization flux [mmol13C m-2 day-1] + ! alpha_dcal_13 : 13C fractionation factor for remineralization [-] + ! LocBenthos(5) : Benthic 13C pool [mmol13C m-2] + ! + ! Note: Assumes same decay rate as total carbon (decayRateBenC) + ! Fractionation factor typically near 1.0 (minimal fractionation) + !----------------------------------------------------------------------- + + ! Calculate 13C remineralization flux + ! Ignores isotopic fractionation during remineralization (alpha ≈ 1) + decayBenthos(5) = alpha_dcal_13 * decayRateBenC * LocBenthos(5) + + ! Update benthic 13C pool + LocBenthos(5) = LocBenthos(5) - decayBenthos(5) * dt_b + + !======================================================================= + ! Carbon-13 Calcite Dissolution + !======================================================================= + ! Dissolution of 13C-containing calcite + ! + ! Variables: + ! decayBenthos(6) : 13C calcite dissolution flux [mmol13C m-2 day-1] + ! calc_diss_13 : 13C calcite dissolution rate [day-1] + ! LocBenthos(6) : Benthic 13C-calcite pool [mmol13C m-2] + !----------------------------------------------------------------------- + + ! Calculate 13C calcite dissolution flux + decayBenthos(6) = calc_diss_13 * LocBenthos(6) + + ! Update benthic 13C-calcite pool + LocBenthos(6) = LocBenthos(6) - decayBenthos(6) * dt_b + + if (ciso_14) then + + if (ciso_organic_14) then + !=============================================================== + ! Carbon-14 (14C) Remineralization + !=============================================================== + ! Radiocarbon remineralization for age dating and residence times + ! + ! Variables: + ! decayBenthos(7) : 14C remineralization flux [mmol14C m-2 day-1] + ! alpha_dcal_14 : 14C fractionation factor [-] + ! LocBenthos(7) : Benthic 14C pool [mmol14C m-2] + ! + ! Note: 14C also subject to radioactive decay (half-life ~5730 years) + ! This is typically handled separately in full carbon cycle models + !--------------------------------------------------------------- + + ! Calculate 14C remineralization flux + ! Ignores isotopic fractionation during remineralization + decayBenthos(7) = alpha_dcal_14 * decayRateBenC * LocBenthos(7) + + ! Update benthic 14C pool + LocBenthos(7) = LocBenthos(7) - decayBenthos(7) * dt_b + + !=============================================================== + ! 3.4 Carbon-14 Calcite Dissolution + !=============================================================== + ! Dissolution of 14C-containing calcite + ! + ! Variables: + ! decayBenthos(8) : 14C calcite dissolution flux [mmol14C m-2 day-1] + ! calc_diss_14 : 14C calcite dissolution rate [day-1] + ! LocBenthos(8) : Benthic 14C-calcite pool [mmol14C m-2] + !--------------------------------------------------------------- + + ! Calculate 14C calcite dissolution flux + decayBenthos(8) = calc_diss_14 * LocBenthos(8) + + ! Update benthic 14C-calcite pool + LocBenthos(8) = LocBenthos(8) - decayBenthos(8) * dt_b + + else + !--------------------------------------------------------------- + ! Alternative 14C handling + !--------------------------------------------------------------- + ! When ciso_organic_14 = FALSE: + ! 14C defined as proportional to total DIC elsewhere in code + ! No separate remineralization calculation needed + ! (sms(idic_14) = sms(idic) × isotope_ratio) + !--------------------------------------------------------------- + + end if ! ciso_organic_14 + + end if ! ciso_14 + + end if ! ciso + + endif ! use_MEDUSA + + end do ! Main time loop ends end subroutine REcoM_sms From 8484f71b101f5b926fabe76e8b6fa7c897de312d Mon Sep 17 00:00:00 2001 From: Jan Streffing Date: Wed, 29 Oct 2025 15:59:41 +0100 Subject: [PATCH 17/66] bit more git like --- src/MOD_TRACER.F90 | 4 ++-- src/int_recom/recom_main.F90 | 8 ++++---- src/io_meandata.F90 | 2 +- src/oce_ale_tracer.F90 | 26 +++++++++++++------------- src/oce_setup_step.F90 | 8 ++++---- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/MOD_TRACER.F90 b/src/MOD_TRACER.F90 index d1b872a18..0fd08466b 100644 --- a/src/MOD_TRACER.F90 +++ b/src/MOD_TRACER.F90 @@ -22,7 +22,7 @@ MODULE MOD_TRACER integer :: ID !___________________________________________________________________________ ! TODO: Make it as a part of namelist.tra -logical :: ltra_diag = .true. ! OG - tra_diag +logical :: ltra_diag = .true. contains procedure WRITE_T_TRACER_DATA @@ -44,7 +44,7 @@ MODULE MOD_TRACER ! compute Tstar = 0.5*( T^(n+1) + T^n) real(kind=WP), allocatable, dimension(:,:,:) :: dvd_trflx_hor, dvd_trflx_ver -! in case ltra_diag=.true. --> calculate tracer diags ! OG - tra_diag +! in case ltra_diag=.true. --> calculate tracer diags real(kind=WP), allocatable :: tra_advhoriz(:,:,:), tra_advvert(:,:,:) real(kind=WP), allocatable :: tra_diff_part_hor_redi(:,:,:) real(kind=WP), allocatable :: tra_diff_part_ver_expl(:,:,:) diff --git a/src/int_recom/recom_main.F90 b/src/int_recom/recom_main.F90 index 2ce0aeb28..ccdb33a37 100755 --- a/src/int_recom/recom_main.F90 +++ b/src/int_recom/recom_main.F90 @@ -115,7 +115,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) real(kind=8), allocatable :: OmegaC_watercolumn(:) real(kind=8), allocatable :: kspc_watercolumn(:) real(kind=8), allocatable :: rhoSW_watercolumn(:) - real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, tracers%num_tracers) ! local variable ! OG - tra_diag + real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, tracers%num_tracers) ! local variable #include "../associate_part_def.h" #include "../associate_mesh_def.h" @@ -245,11 +245,11 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) C(1:nzmax, tr_num-2) = tracers%data(tr_num)%values(1:nzmax, n) end do - ttf_rhs_bak = 0.0 ! OG - tra_diag + ttf_rhs_bak = 0.0 do tr_num=1, num_tracers - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag) then ttf_rhs_bak(1:nzmax,tr_num) = tracers%data(tr_num)%values(1:nzmax, n) end if end do @@ -398,7 +398,7 @@ subroutine recom(ice, dynamics, tracers, partit, mesh) ! recom_sms do tr_num=1, num_tracers - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag) then tracers%work%tra_recom_sms(1:nzmax,n,tr_num) = tracers%data(tr_num)%values(1:nzmax, n) - ttf_rhs_bak(1:nzmax,tr_num) !if (mype==0) print *, tra_recom_sms(:,:,tr_num) end if diff --git a/src/io_meandata.F90 b/src/io_meandata.F90 index 1a2986661..a4eab26a2 100644 --- a/src/io_meandata.F90 +++ b/src/io_meandata.F90 @@ -961,7 +961,7 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) if (use_REcoM) then call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC', 'Dissolved Inorganic C', '[mmol/m3]', tracers%data(j)%values(:,:), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) - if (tracers%data(j)%ltra_diag) then ! OG - tra_diag + if (tracers%data(j)%ltra_diag) then ! horizontal advection call def_stream((/nl-1, nod2D/), (/nl-1, myDim_nod2D/), 'DIC_hor_adv', 'Horizontal advection part of dissolved Inorganic C', '[mmol/m3/s]', tracers%work%tra_advhoriz(:,:,j), io_list(i)%freq, io_list(i)%unit, io_list(i)%precision, partit, mesh) diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index dc2faec76..46a77222f 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -164,8 +164,8 @@ subroutine solve_tracers_ale(ice, dynamics, tracers, partit, mesh) type(t_mesh) , intent(in) , target :: mesh !___________________________________________________________________________ integer :: i, tr_num, node, elem, nzmax, nzmin - real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, partit%myDim_nod2D+partit%eDim_elem2D) ! local variable ! OG - tra_diag - integer :: nz, n, nu1, nl1 ! OG - tra_diag + real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, partit%myDim_nod2D+partit%eDim_elem2D) ! local variable + integer :: nz, n, nu1, nl1 !___________________________________________________________________________ ! pointer on necessary derived types real(kind=WP), dimension(:,:,:), pointer :: UV, fer_UV @@ -398,8 +398,8 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) type(t_mesh) , intent(in) , target :: mesh !___________________________________________________________________________ integer :: n, nzmax, nzmin - real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, partit%myDim_nod2D+partit%eDim_nod2D) ! OG - tra_diag - integer :: nz, nu1, nl1 ! OG - tra_diag + real(kind=WP) :: ttf_rhs_bak (mesh%nl-1, partit%myDim_nod2D+partit%eDim_nod2D) + integer :: nz, nu1, nl1 !___________________________________________________________________________ ! pointer on necessary derived types real(kind=WP), pointer :: del_ttf(:,:) @@ -414,9 +414,9 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) vert_sink = 0.0_WP #endif - ttf_rhs_bak = 0.0 ! OG - tra_diag + ttf_rhs_bak = 0.0 - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) @@ -432,7 +432,7 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) ! includes Redi diffusivity if Redi=.true. call diff_part_hor_redi(tracers, partit, mesh) ! seems to be ~9% faster than diff_part_hor - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) @@ -444,7 +444,7 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) end do end if - if ((.not. tracers%data(tr_num)%i_vert_diff) .and. tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if ((.not. tracers%data(tr_num)%i_vert_diff) .and. tracers%data(tr_num)%ltra_diag) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) @@ -459,7 +459,7 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) ! OG i_vert_diff = TRUE so, we dont call explicit scheme ! If we use this, check surface forcing for recom variables (They are not updated) - if ((.not. tracers%data(tr_num)%i_vert_diff) .and. tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if ((.not. tracers%data(tr_num)%i_vert_diff) .and. tracers%data(tr_num)%ltra_diag) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) @@ -474,7 +474,7 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) ! A projection of horizontal Redi diffussivity onto vertical. This par contains horizontal ! derivatives and has to be computed explicitly! - if (tracers%data(tr_num)%ltra_diag .and. Redi) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag .and. Redi) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) @@ -486,7 +486,7 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) if (Redi) call diff_ver_part_redi_expl(tracers, partit, mesh) - if (tracers%data(tr_num)%ltra_diag .and. Redi) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag .and. Redi) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) @@ -585,7 +585,7 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) if (tracers%data(tr_num)%i_vert_diff) then ! do vertical diffusion: implicite - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) @@ -599,7 +599,7 @@ subroutine diff_tracers_ale(tr_num, dynamics, tracers, ice, partit, mesh) call diff_ver_part_impl_ale(tr_num, dynamics, tracers, ice, partit, mesh) ! vertical diffusion: implicit - if (tracers%data(tr_num)%ltra_diag) then ! OG - tra_diag + if (tracers%data(tr_num)%ltra_diag) then do n=1, myDim_nod2D+eDim_nod2D nu1 = ulevels_nod2D(n) nl1 = nlevels_nod2D(n) diff --git a/src/oce_setup_step.F90 b/src/oce_setup_step.F90 index 6bb66d4de..682597b72 100755 --- a/src/oce_setup_step.F90 +++ b/src/oce_setup_step.F90 @@ -302,12 +302,12 @@ SUBROUTINE tracer_init(tracers, partit, mesh) !___________________________________________________________________________ ! define tracer namelist parameter integer :: num_tracers - logical :: i_vert_diff, smooth_bh_tra , ltra_diag ! OG - tra_diag + logical :: i_vert_diff, smooth_bh_tra , ltra_diag real(kind=WP) :: gamma0_tra, gamma1_tra, gamma2_tra integer :: AB_order = 2 namelist /tracer_listsize/ num_tracers namelist /tracer_list / nml_tracer_list - namelist /tracer_general / smooth_bh_tra, gamma0_tra, gamma1_tra, gamma2_tra, i_vert_diff, AB_order, ltra_diag ! OG - tra_diag + namelist /tracer_general / smooth_bh_tra, gamma0_tra, gamma1_tra, gamma2_tra, i_vert_diff, AB_order, ltra_diag !___________________________________________________________________________ ! pointer on necessary derived types #include "associate_part_def.h" @@ -465,7 +465,7 @@ SUBROUTINE tracer_init(tracers, partit, mesh) tracers%data(n)%valuesAB = 0. tracers%data(n)%valuesold = 0. tracers%data(n)%i_vert_diff = i_vert_diff - tracers%data(n)%ltra_diag = ltra_diag ! OG - tra_diag + tracers%data(n)%ltra_diag = ltra_diag end do allocate(tracers%work%del_ttf(nl-1,node_size)) allocate(tracers%work%del_ttf_advhoriz(nl-1,node_size),tracers%work%del_ttf_advvert(nl-1,node_size)) @@ -478,7 +478,7 @@ SUBROUTINE tracer_init(tracers, partit, mesh) tracers%work%dvd_trflx_hor = 0.0_WP tracers%work%dvd_trflx_ver = 0.0_WP end if - if (ltra_diag) then ! OG - tra_diag + if (ltra_diag) then allocate(tracers%work%tra_advhoriz(nl-1,node_size,num_tracers),tracers%work%tra_advvert(nl-1,node_size,num_tracers)) tracers%work%tra_advhoriz = 0.0_WP tracers%work%tra_advvert = 0.0_WP From bd25920ec9b0f87ec0b3949080eb8d3a78a0f511 Mon Sep 17 00:00:00 2001 From: Jan Streffing Date: Thu, 30 Oct 2025 08:25:47 +0100 Subject: [PATCH 18/66] Remove comment from files array declaration --- src/io_restart_file_group.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/io_restart_file_group.F90 b/src/io_restart_file_group.F90 index b69e11d95..27e34a5f7 100644 --- a/src/io_restart_file_group.F90 +++ b/src/io_restart_file_group.F90 @@ -17,7 +17,7 @@ module restart_file_group_module type restart_file_group private - type(restart_file_type), public :: files(200) ! .OG. 112 Before + type(restart_file_type), public :: files(200) integer, public :: nfiles = 0 ! todo: allow dynamically allocated size without messing with shallow copied pointers contains From 5073a7e501bcbe0b63d29c301d8c5380ea8d3697 Mon Sep 17 00:00:00 2001 From: ogurses Date: Mon, 10 Nov 2025 15:07:20 +0100 Subject: [PATCH 19/66] ci(recom): Add initialization and surface ocean boundary conditions for REcoM-CI test Add recom initialzation and sbc files for recom. Standard setup for recom is enable_3zoo2det = .true. and enable_coccos = .false. (namelist.recom) --- .../recom/DustClimMonthlyAlbani_pimesh.nc | Bin 0 -> 309140 bytes ...16b.PI_TCO2_fesom2_mmol_fix_z_Fillvalue.nc | Bin 0 -> 705519 bytes test/input/recom/MonthlyAtmCO2_gcb2024.nc | Bin 0 -> 205372 bytes test/input/recom/din5deg.nc | Bin 0 -> 1092120 bytes test/input/recom/fe5deg.nc | Bin 0 -> 686916 bytes test/input/recom/oxy5deg.nc | Bin 0 -> 2141374 bytes test/input/recom/si5deg.nc | Bin 0 -> 1092124 bytes test/input/recom/talk5deg.nc | Bin 0 -> 705485 bytes test/input/recom/tco2_5deg.nc | Bin 0 -> 705898 bytes test/input/recom/woa18_netcdf_5deg.nc | Bin 0 -> 694351 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/input/recom/DustClimMonthlyAlbani_pimesh.nc create mode 100644 test/input/recom/GLODAPv2.2016b.PI_TCO2_fesom2_mmol_fix_z_Fillvalue.nc create mode 100644 test/input/recom/MonthlyAtmCO2_gcb2024.nc create mode 100644 test/input/recom/din5deg.nc create mode 100644 test/input/recom/fe5deg.nc create mode 100644 test/input/recom/oxy5deg.nc create mode 100644 test/input/recom/si5deg.nc create mode 100644 test/input/recom/talk5deg.nc create mode 100644 test/input/recom/tco2_5deg.nc create mode 100644 test/input/recom/woa18_netcdf_5deg.nc diff --git a/test/input/recom/DustClimMonthlyAlbani_pimesh.nc b/test/input/recom/DustClimMonthlyAlbani_pimesh.nc new file mode 100644 index 0000000000000000000000000000000000000000..01d17125e28e8282938d7f1a0adfb492c346ce49 GIT binary patch literal 309140 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 OEK2oYuVdHI^U^1 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�~lu3QrRF%eq` zxJEWTLufy8_T!y=bC?5+Qd#W*1t>n9!{6b0Bll=Dy!f9xxeyW!wS)IR)`IN@7pci+ z?U6liV)Vn=2et5cuC}+0r4dM0v@NA?wZq1qX?DF^0}#w5XuU{Ayqd=!gyn>qK)-8a zw0x%)5<6VazEr7#l+CMB#Fwh!_nOFXPJT7Kq_B9gELIJrG8ez3htz8B1R63Lqy3^nyGrKklQKANe%&j9tn|p<|K?+cBz<5?svLse zFtc5MQ*>nKQ~Kewl@i5ZL~Kyk(^Uw?+3n2j%oRs=&U(zu-Bn%)lR3kMbUsC3*rfeO zF1Hxm1gUDKJ@a9twdA=gdcN@a2n@aU$vv_=MxZQ9_B#*!>;tL@`3m8CQLkiJTg{QZ zqi3Ez)nIFbu^oMq3cmUyd$YxTe&7W)P^vk--cHa70}|P7D^;z)c5HcD&8ZngBKU4B zqWg7->93_NeiJN|>)Z>v*$i)&K2?&6H^E$MtJoZ89jJ$PirbcvU&3bbSEQ$BX1yw8ey z+-yKGEXgfQSrL}P6<>aS&vWP;h&$44o?Z^IWasyOe<*_a=On&yKTtd({m<8@t_5(b z|5)hx4fLG(>~8#uungWuu(L3rxK>4?j!5%~3Xokdnps~efVUBSwGy;7F!x8p@6BUm zUt>w5V3fDHy4^!eQd4nst!uwy`KK=L$j+Kp%;e@@^WmSJYk#SqeE>z^$;{v%pNDkj z{Ox^ddr@5aq^a-){!S41D%`{}Ru5`xp0?i5bo9EQD3h_^Y{QXV+hzxHB9Q(Ri)C{4 z6jL`41>3MVu(v=`vgXw}!aBg+bK&GCn}Vu)3G!ZHO~8XQO1S&24r1{}q@1_v;g40( zoj&$Pz~-&4kM}eJU79id^~^TVhJ$Kkd9uPijVpE4zLq9 zKV%oKf~O-3f0r~Gj;^)N)c8y#aC^S2=2#S($N9!zdg7>G z?!WV(_n%{?U;)xMZxea&rT{Lu@X()XD1tL?9p!})U9b>1En!;J0HSt-Y|a1CY5f1q z$F&*{o+4? zPN&tFAN9?@?>I+ZW68EECw#U+l>+w<#4(~tAHK}|*Z>~?!N=dLg}lLc{50q4VEi@1QUv0JC~@1*PD@lnfX8FZ zF%$8+b7VBA%Sw($9(ub0bLTP;oHr#kNGbv|N&!y8r4slzPx_17VM7OXsDA!`Mq`Hx zYKrYVs7~h@QRt+wV;C(R{Wg6A*UfwL{etQ6aepjnJ*xK5?+u2rqE!dqr=w zfY5)+PxPC?_RJ8?>#Sy&v=W(pID%A`3u;$DPUZ}mv+9| z421#2b5R5hK*Sx#$iGqt8B)Jo8#L-*_s~P4mbeM!*LH&Ma-#XReOu8e(G1PT+Ue|t z?Qmecv$=wvuT%To-L1wQ5aw?{s>|98Rhu2mE~gsd&Jzyu+eim3@43B!J?9+qBYKFt zLb`$9Na6De(nI{rBlZf9@fR#8Qcv8#T|spucdl`;H^Yyrv+oGU(Ej(|`Q>P~O7}wR z+CGZRY_z%z9#oWz-$MTHG~35bD(VV2H|F_h@?HTnX_f~a3oiykOa9~jRJDjVoLX^A zyaB3C)xNuE+W=$LBp;(oD*00Y zA>Ofo2Jka`dGqz%CP?p2`TJD~anbDPFGw9$!;)asB1u9e1e%zAcvOq_)BnzMBjv%Q zK|=|Aq3fHIS}TIvTa*2M`b{vf^&Fw%8jj}IKvId)F}exvve;XwwD!UG;&f3i#JM0~ zNo!;I*a%!pgE!st+rZZ6l;StS3Dg(I^S02w1&RcDQ?opK{km zeea1j?Zi#(AR(D^jo?!c_?DTHWGXd5t5k^UE(g*hycs%B*FFb(ILhVCVH5D}SzPs@zZE%6G$S&<-E?h`vdXT(P1tIxg8gkn!AyVIm z=K7T~P$*e3zQk7rz4#6GIn9;OoOJW%-i-=W$3f0L;+PM)H&MKODsT;*6F=xo-%zgw z|NJa_60=%}3M9g{5NrVMozh7*YQzZ}yiL?s-w2j>#ToRu|94(BhqKf89-;Vjs+GnZ zLpA($lQiSNtpM}#N9*io%a7)9<=ajCQ|7He;cq996)*q}A%&+V(>g$#QaroWatfr? z-)DTl>469Fep;DrBET&m5?9c)6@$9ueZ@b{JQuXybiw+QG8fm z`Uy2>D!$JkJz5@%-;wmoKf&LDd0cC^5_kgh$W@pS$Bt?3pdayHaVi#Rn39CRS)8d|+TQRWVJdjo3%m=>AXBBj2xu`xz zS^sNnE(E5{piDqHOke8aCIZ&wdMo)>HXF(LnRQibMsgcMHyT^&-wFhLJgXC z-RZYz-R+wzgi|}zz@36GDlDtDfCU!y6QT1SRo4s7n}Yv4{+q8J3p?|>rx6ctM~(g* zPaUMGv*7KYsRNNHg{Y>aTKF(`;PxJIAaeuCuYM{Ep|&uLdV@CHsKr1ZEz& z8}=-`6H;PF_f8-k>b;)~Lm%Ri?rAguP9M`aFlpf6Nxbcbtk}i)T+Ti?-%QU$Db)#e z3iaAfQ|(|*upj5MfVgb;OG?J25qHvHH=yuaAEZ`>@eeKy!21J-yT7%@kj_|3KAF!1 z9Bexzd|{~syoSoCIHy`TS+qHlSQ^8*Cwz}y zuo5nbr_BjbqWmDkuD~(mzem@seCBQ}fH?uKFKH9GaAQ36o&kO?%pJ_DWtSBm&5yf& zWgm@hAqY70Ys^;X!s9Vrr^iMWP**>{^31;;ELbi#eZa2+Q=JsI5W+@Kk&f(PZD{}; z{_~zI4v4=Zr0Q_@S}jOK1V`DUIM2V)DbSC-_emv4EB>`Ql&%B%(|)h7ch(-wU+euR z7Sl`BAlRr(rLx!nX35_SjL`Y)p6&aPg@IZ?=mYQ1$lt2KV=4NJp0i{$?qrwp+Q2!G z62b__;qGAnm9JX^aH@V*pKTxUB879`+X!w$+&BA36)9ZIdU5-^&_Db@W3k*|t;gvbo)@ zJr1n{eDlTjAC;iMfq%VlNP z8I1e|BD6Di@mTp-`4 ziC9N|$jgIAk4uq`f#%_iA-flc^At%is7WNS10vwM?cQNLMI zC5T4K%!m3SodPy@2k!Yw;3!csuH&hI+>SrgBEOD z^gWiE0J|SMcCC?+1pBU@blXj!AA|$)AB7^FaT#M@d|#V!D4L4;SVBDxlBxTKG}dE~ z$YrY@n==f|Ucrkqj4i-nHp*9Y3H57B`#$q%?SXxAl?IulQ8)%iVJ8m*fq_n z=RmJ4IV!y^0v(Y#bNti!aE=sqtFy|XkxB(WfZr`4ZD3S zuL=SQjH_?sHUYt{@xE@+8Za~Azb(F92NvET^TJ!TkQy)<6;sp%UDgiDJ6EfrC(TAq zBBBz^@>P`TCToEeGdgc$UjeVx^kWwFTi{%HR%ICx{upE?*BWhTR4-bIoADRCMi4X*-vmalevbenq*0CIlPS0?#!aGZZW z|5e%I(|nU|3ErAhrI;->z$UkhoG{|1 zpypj+b;<$wd7u5EGwl>;i>}u_K|F#a^^|A}q_>(_mO*eaV-KbV$$D3sOQAi6%~(9J z8s7DP5ZQZM4b$J^R=ITYz;;jiQ&m$Atb9F`H9uJZ{U@S+4b)#@SvXl%3AgPUySv0Ifzh_? z&D!NUa6H2*Go4ipQBS#4w@)`f%A|B=MsPiIHGohE{>c4N{Jsk)Cqxrd{!; zQ@xN~9C~uEyd9R;K1!bHn}D0=Vg)I#BOaT)<>cf0tI#AIrkOW91yirD)2Dtf1YJLO zJdgESu)9p4^ab(4!#>mW5w_)lJV|Pyn{h6LX+CP!*Qx@8)?1vpe@X$PEqTa*;6Rm{2 z<{Hm7zBXu$VV&>kX#l>7ly0Vl28g^WR-23Zq=9N~UT>uqsKvz!{}$CFe$FkKY58_w zI_8cAovMZ2Y~2qW=-eCHfn(_FQU~O-D%NUu>*045OZEyS(eS{(Eu~a*{4cV z>Vd8LXMIh^B&Z3qgr|Efhlv%rp@%-AYJy#IXjVa#!mx?S8~Ir`*M5NXECy)<%5uh7}Xr$gW>NU+%1~ zow@|kx(41M^jpv+ScGd?w*WPRq70b^(-79esgbkX3odp=FNjXh!RpoEUuUx?f!Cjq zIvjC$BJgfrnG{}txJObic1C~0B5m{Z*_kRBlA(CIlHLUN=Y4B%L%N`?JcEXfwhn?4 z@jE3t>Y=}y@ax!cEl?TOeb{=@2xoRS?InLV19f>?;WUbW&HZE$E^?^>*&l=q8KfPE z@3(d8uUZF;t8Q%l9BTpg0=wh6v~AEkJej?S&WBezO@cj(8$s*WVOu{%9T*CnatZUP z1Yi5%iW^B$yj*Vqrp`nbH}WRXQBa-f=&V6?B)L~R8S7EJJo53Q z+Hvrs6D(wX-vq>yYc6M}x9FY7P#|LJ- zGuTxR3jHQ-hkHqyGsjdrfRqn=F8-kz&U?KU=}&Hk6Qv5Qn6JNT~J#?vI1p+OX;LG^&%mS7vkk1L8b0u7~bjUIPQu zW>2>Sa%{opSI_51;~=r{%J2#MAnK0_iDD;tktt505D_9`5QYpR0*XM1MA^j+N9CnA$jN8qm@@E`6C_Di6uavZ+;*(Y12 zjl%g;ey>ImSAD_m&>DspS!qAJ7_)`Rf@Zu@S9G`SI@NEosSLn6_`^Ovt zDx^ykLns%12frQaui6Y8(00ImBH0(Z(XH@~wPc3?ozEkLY6;$THNyJ#7cZ5eS{Ntq zk#K83ym=wlfw;To zokLN?J6Jwb`SjW>1UjgP4rfh40x`p4*yB-%-=`v#b{~bgfHjHrhF%zRr;=|$`_Xf_ zb#oEvMQmn0ym}n^;ajeJeUT308h5|xD1Y4!Wkw|RLx|J3)rVUg@x2q;*Uau$Qa1x9 z{ZcdqGuqbzh8GMo>p{#cd?6>>?(@l_G3(PZh2-A>xF5nBok}ta>+;Ws0#KZU zcH4$D>tQbpX1OG^yg*#1+Qvf5#4R8leKELQfppV{SISD;a;m%yO-zPLBi|A?hV! zmqc7s3j2rS@rS?>^^I)IpAKV9GRF1gV!(dam|X2ln}MuRhHTF08R&Klx2vp}f!vb> zy=;7wAidMiVflFqZi|a;jqD-rloAXdRxWtY#s*-3!Ni zZ9;q~dSGHiGODQy=@&P4$T73m!+q`S5SPFTP#jZH!mlic=e80wazB1SSN}@azS;uB z+*zfIxjGEXKT6Z$NXOxDb#UJ5;!p6EPyVa&ZURUSx~aaT4?%*>L#9t5{jkdZ>Edc# zFDx2rl8hFPKyZ8CH!H~@;0rty?fJS4#`Eu+|4Jhsy8g)~u9q8-sB(cNP3RE313$eI z)+fgJ;+b!D&#yw?y^hW4wJkXP^gG=#Q6g-v{aJAa-9GGV)ydMhAU=x0m93pTe2gZE z;qdyqKVaLBi*ex*V%eI!KJ?0j*epZUU*_&Jm|xiD`dM#$EHk#2F<^=uqfnz5VU8uh z;@DODKO~)|usZR! z0rb_FyJNfBKx;{r%Rw9E=k~+DYUK_J}DK-n+`9u-rQiyX?>KAKs zaU4ESh7|>|%mBlUHsiyvQMgF^Wg@wM5o!bl8cw{ zr()Z1xkT>7>&!KXs~9?67q$d6#^<5x%LW`%{3UVAeHXY=Y_i;MZ9~=j#F;4i9dP2& zci`G5!~98#E41jTu*e$}4wrq2uyhia_DDh@EUt<&qyKg%oLIW`C7-Vo9^P@%POlq* zxsSW1yxDC~KgVdZQP2su*S;9xKIj6i0nw}d;fO1pwH!^*h^oOi^@p)|NOvSHiuMQY% z68aN{_>z5Al)>458{m{_(3ewMUC@=9)DEP*NPpGfxZgX(bDC1RTVFi`KZjO3y5e^L zPbV#=UTP7=>j@LW!d8LWP(w6lVFfH%u$}xz+i*|IN!`SG9bQnh`mNr(f*q)>3JHv? z!>D+Xb!YqrcxE`gUT8y{hZ+ z0$d`jZiDeJ9wj*@pX?odE@S{6(3RSzG4`SJ&d*1o-P6!m=RIKXd<0avgF=o za+o0MH#AfULpQ@7Fsog`alfz%3GYd#Xnaw>&yJ0ARpJI5kFjYcKXC|m^JK}0lyR_f znvNIeCvdRh65rtBA$&~KcS<5GiUKQBX3e`8Plh?%f7>TSNP(H<3=+jDlVXW%*U4|! zp1^o-yk-0Pfg0&^zf|8^AjBSXB?PA4LFY0Y+9mf1#L3bX899mkS4*u~moworpu%$c z(@5+*;$x;d*!xaENeZon>dkS$oxVV0okoSFq=b~TkP%@A%yKbmXZK;4`P*Wu%U{$7 zPaml@v=8#9xp3{#?|k+_N+f`m2*aB&HFc;bzRT0x+*6E#$H9M2S_C!~8eL=QttsfTY`@H~*7dBglX;tb{_A=7Sg?<6LxfhUA3PKDjp zSdVr&Mu^E)v!6&8C&CK8c@uTeFk%v+VWZ*4PGR$WO)naIX|ThJ#jm!cjF^J4RjSo@ zCd>}6idVRa3!|u8Gwh1Kh}~RCx%SXP1Pf5mh}#!Dhvm`LX1A}cfvDG^u)5C*kQ(~l zHnPkvl8BAwu7O@6Y=iOBPvG+i zSI>9+32h%nJ>&7|*y}A+uEgt>wR+6?jDQytK{btY7A`V%p z=cTiMz_!5A^l&%JOfC6Fbg;<2f>!yKS5Hb+2%?H8}=t`PBBiN z8|$bXO*zH=9Gfe4?jVgeQ| z*<;nq$lsU}FI`=O7GGaJd52%{rl1oq_1PkXH#&R28D0eA!di(B1HS-|`PEtS=Ql9& z)L}0PLtc#0X{Be{_X5UY#dbxRj|ltiFj_3Vh~j4Ai9Z@WPhv~Du$?A9UL@b8tkYK71`tIQukWtUv7V z(qr}EmG8=p=0R9HhK|SMH^ly!)J^tV1J`l_j|}-W2=iVh*7~&q_4svY4EK0v<u^Ei1VJ`4KBl{37T9`f13Y*Jz4_-!ur$X?$>R+9j`t>hlxZ0)3_BF#VjC^YF z(lmVRy(-DjF$BMOd`I`J(fQ#?`}?<7rr=g?`^VrDbFjJlUhBpgBJ9*jsf0teQOJ-x z7VcDt>X2uSllT^x!bXCQqyx$u$g4`~i=QfoYflwy$?WqW=hnpZ*E6N??OZogltB^L zF_V;NTq*~Fa(d#EB8Zp#?y~}6J03>_i3*$O8vT*`Jgm?Tlsw?kBWIjx-nkrsSRo`&PV;?6eE38vT|)NF!yQS~^L>ONZU)l@<5 zn~-IWhfuiEG}ZyrPED<^>fgWv??>-W z3%R3u*Drl?_SO)2OOZ6Q*aCKoeGPQpnZSFR{E533J`gCD@9Mt#1UAYseq!!34rbUXF-Isd3);@~rQR7< zD9<}=V#fR&K2M&I2w_SG)t5uZ&S?jL&%HtgI;Q6U?PdNqP+vva$rdZhiVP@{uC8@c zT?5{!ciz7}7vS>pmx-qr$3WL?Zu%w4d%I!h@aj(IfG;AL?Cj^jp7v+k(W^g!SL{U0 za4+(ET&X$J1TSIFgavd`HIoY?)=kXa%L+1C0patiG?jb~hb_*@qHN+a`i4 zQ{fDYT{3+8{5?BfE(%26{i$v#h=8q)n2oa%2}oZ;mR+DT0Zbwtxh9Wg!=`Iq<_q&C zSbdUzyr#MWekxogEE8!5XNmLA$^5#2SN}DSxn(mbOWrUw5+cCPkqB)TCn6re`cUB# z#|EhU5`Du%unPJQ18vIZ7eFYTrd4Yi@epPl`ozSV!Q9Wi!x5cNiOIhIE?Mt@CSyn3 zKbpEQFRy$}CCL;-bZ|J=ot1%@!Mb-i%M-|7vj1}AGX$MzeNv9!u0Uxc+`f6o8iq|y z{=|AO&ClR<}_YNf-iqal4VbLL(yaA{YHiN(A+x61-L(8|05MY58GQ99!g3oEr|xn zmoDy$-kET+j<-^)B_4`z&5WDwhXT2hWY+*~ICvAZ@m72(hqz^j3A1;o?sqxBR~^;q zIpSuti}*HxT$DfoOLQIB_4a!%u;XH!Hcx9uZP9u1^wY>v6bBC^C-(Gangqq|v?p2_ zgAklQkme&d0%Jrcjr)jtAdvHGA{ypvUorlJds!uC_ zc@*_;`QzQxS$GZi^UIjEEj?iUPR^n8ss+%l_wGWc0lYhI zBcmc@22bc;X-cbU!@jK`rM>fG_~89HR_?ndNbgl@%DAb*i55nDYaI=s>;JXQ{@W7l z+I_NpP@ZXsRrOSY_ZBdz_K59$n1PWe(>161KLcwX#o9b+B6Jxr-~2=W5mK&u?mc;B z3A|)(Y}{K`AVqXo8#(R+EMy6zbsFtpl9=e_eYzb={gWqjd!Bxw zuZbE|T>Db)r|<|2WD*`;o6m=8gUHMqw(c;4N1GT=84pZv+!aF%5?d<0Fs10C)Y%$gG2R;LNq*Epsd!qym0&{fQ_Aij3Hyd!?1Y?J3rUZ&w8m z)^fR@qCP2(FG1P!Rk+v#Uiql;jtK~-znc5Vat+)cER>gIHA1tSTiHdAQBZ89xMD!p z4cni(hCkqq0v1sHvHgA*oNB8mT>VGv!tq_A|`gg_2&;zP>~q@P&^AZNzpj0 zNwd&s#bV_WX%DOYD|e=e)d9M-CQS%~Ksxxah&s+0%*_sTPmxZQrv8LFr4%oK5+y{0|IQRIh-kn};C{#-S zormmtjqItNS&KCQHR-l>$tv(&xJ`Fp&<>G_wW2|BiQvfN;mrLZ1GpdHrqgWrK@^+B zoo_W(XummL-QsQyyop^`BRdiG}Fe-jP)y$;> zA@0Uh=li5!gT;hh0F#AZK^HFtN`42W0tb=j^)aBf$gu4(S_&l1!4P_l>B$*rsAr&MK^*RdS*0#pE)V4xMr{80`5nPJmS2tKL zRu4dYnVS-gOBcADYk;-79x(b7durQc2EH5rsQJs-1)A|)dgs5?1O3?~ zT_e91rWVlmx9cP(QFSH1# zoqNiV2ysMrqDu*E!J!8eY^T%%Breha?NAR$lw7lgvK&FdhDH{Xw*=!*1?qz1HgHD* z&bKoeg41pKs@K%dfqL%cpU>Cy5C{J3iCH{7P$hdXK$4{cDrw_Sf&^L0nmchonv#(A}^+X8j`%xC5*YpNZvy%0A;<%FZm*sU<$_LwvO9 zxh1s&>n6w|p9r3Jt^pLG#`_YF>SXm9`@j7}dLr}`TxvQ+0CwK7l##ihRj`*@a61Wp zUbM;m*p&)I>xsHeC*pv2qAhF90O`a!mB^^;ML}KF;1{n2)Zcqv>XgoKF{~y26|6E! zgp=JQXIrwKLm+-<`ot{*P&DRRhP!%zW51(*_p%_r45%RMJq`9Hv4k= z&=_RWJ>93ctYAaY^e143Fz)a9nn}?FmZRSVCW{(@Rll;MHf916y7l*>HXUF(@2Uck zTo~*&?BSH|1px>UKbdj#11it`uVgE35T<7xd>`qL5J}#Rmr}k5rNKh2T1-;l9L>C( z5O5#1{Mjpnk-mnr$Vq;V-48$`U>haX7y`E!<1SFfTSABQtciT26ohT#zTA$K2060H zi{2(8z^FWHcJ7G~Xtp}dkgj4d{p-3))GLvrk@9_@%J{AfHg*f2_34XaSd_}Sj8`bW zMv9kjQ`c$?__*_z(=NI~+faqN8jCbAN#YH39g_jJ+sQ?|+IqlX*}HcOdjS2Rmm>#e z6oE=0>h8M}5)eGtf}2J!2ZO7^LKC##frIXOpZCFg2)>%<`%*X+@E?C8^_G7JCn>xt z9vP(ofnQA21Fi26b5ePWku?i$u`5i<>U@NYIgjn~gHV4#V>x-Z+5|+OxsflhmJ28E zsN(qt7eZr{GR+RE{|TF*JzxlHg^sH>8Jp=q`*-bt~Zdv8Iwm^j`-^DQju=Ni2teGB@1IOmez1cAI7ZkEu! zP$2!V!5DJZ7#4|fNYm;}Aob1(Bxz*`M0fw8F& z;h;Wy&?b0GlVsop63ZgSss3IdBSaKg%;W-s^`1ej70*F(pq@{g!-)?N+TYENB_Dn4wo$Oiux!i4avgD z*`PT3cxj+-*D9MSh=)QM3u;n49|*Jhf%{q67O3)aV;sF+{2#K;0~*Wl|NljW(hkv5 zT8IXvq4!frO2}3bNg>%Qd+!}dSw)e(_ue~uWecTHC?m!H`u_gk`knLtpVK+_xt|^n z&*!@D>%PY4^Lk4^J_pd#n|&RO~^@O*Tl zT|`R&9eH6*Kjj2T-rcJVV%5f}QQBI&VIfF-VSFOZdl4M3PLv*);-qkx*`_V-7oaH8 zen^!SIZqj+^I})#xM#J{oUM}H5~LD1Q|!%y7Q zQB|<+TC0FCDi4j`zo&Q|)J^<*c3RxRsn17Kmi`dGih1edS}Q@MGFklYc_DyC5mgz# zKNs;Oj(^tbTpSp4H#qMteg`J+rn=iaufbhK;pqw{yl1ZOzPY9G2p$$+d$TMW+hp%_ zavddH$wPPbuI6+jcS6h1Tz7!*ff~mnhu?$yq56h(MdZ3QYrJQbpM|50>Faj>&P0-f z&GAH1-~22%Hu^5%G@rjec5j>h83<#+C4m>^D;+sEXoOGGv>5&3m(wa_$>cS$(?xZUs@KmJAh{V_g-2KHN?`nzvkzC zMEFas`pv282yj1r*w$SgdDq@vVWG0Yj!Q4;wUi9;?&+shPgiTBT-toFW7z=y>Q`nK zbaX-eI=8MaMjsxOCLQYvBPbehYqqtTpi{4Y75@hZTy7G4{X^CcS6**9&g)|j7v8** z0K%2N68|5 zg(D}pWWc46>7jB(0;?{V*i5g!fyB!*xqhnGz-N;^r*g#}{0A5K|A-mm^VT_A&w5Kx zdrIWRw%KBr@*2jtX(x24N37^H5`SNe=Xud7VMzOybDZlH!8`6lQDZl+;OgBmIRSeJyK9l0^t^GcyxW2?EHuwUzm!^dPP?+lHkJFjH8D8Jqa? z_EBW$b%(g8PEZ8sx^}0_ou`Z$n0y})xJOH%)J zcH5r_h1W=Dv#>3ah=8QJWVqfM9tun3DQdTPvd-AKWv*A>4^F8g6WR%Lh!D8VC6rVJ z^@h80ob~!}T)VokR!|OZ7GANW;uN1ESWVjkgiyvC{7ltG7?UE_FSF>b;j{7yZTt{` zGX3Yt9inFuvV5OyVs{eaSDF$t+1|lg*Q)J3Stkg$zt%a!9)LcU8Z*fkhB!Gd&-!(e z_*O3M(NBHvi5txkU6Bvl@k+sLNJ5|*uWZ=AKiL$EN!#abwp<0+&iUGh<3l9^GqQY- zl73od>!?yt!)rWoNWF8+<^`C4=PvI|u!6qZ%JKI5gx|Ga@bm6PN9;b(HC4Iamh5A; z_%*xQqotVs;72Ma_)iAyG$NdS{(wRe@pbB0{GOc0)S`j)x6c*t&Co^kpHZrpXLJ!) zI!;-e>x`V=Rb>KSjBq-As3oOEAFWQ+oK17axWl)jkXoroxnFUOs5 zD_mDbwbUA>q4(}}U37(stJ22mNq4et9CT#YXAL}gM`g9fPz~M<+fLMS+=9CCZDYqZ z%GiG6jJ@BHJ2?KZsLb(@0-l#`?JQuqg9iZ`wH`Nb;E_+n7>rk;2p zR^MfjJj;KGa!IlD;i>s!luRC$+wBrO6#C^?DhztU6mF+hK~7!@?jNIYe|YVaEqsc?wBZ}`xoCC@ z|14|!aeZcrz*0ILw+9=gt<@=^d4+{?_}fJ7U|$d-!`J$k`*&i9TB%>FVGI?LCte>a zCS2REo69HV)sSbQon)&l1Ld4S(eYyXO)MYgsb-M31tClf3*dvHf(X_21#V(9EaDTg-6AWpMV;B{NVZ&hfI)S)gyl z%+~6P9XL0=8}?H&!$k+b-;>!ESlzzILFS|*K6zZ3ySGIf?S;aN-;_u{D045FvOx>Y zHzpTX?bC!y1BKt#Sr1bsPHi9eI-;Yd({ES4G5jyIt~oqxfi2x%ZRrSC$m+DkM1`#l z;kUATw=>w`(;=D6_HtL;q2Uei{_Y7S5%KRQ7_{)^Q&@Fp$}Mm=I?(mbsG#P8xM=k^ zamdn+oeQ~m2W3aDSsOXu0$CY~5!@t$?~2v?&}~V$#unxW_PC*jdye)3uPa`qeR1Dc zyl=OeR#nS4n_Bdj_r2^D@E*wYq}fmy$ocE zpj<_o9PdOSmnh!f8sci6x&rHBi_)App@045`BJ7ahp-!Xmqba7vT=u>_V1NHtMy@9 zzjt`@JE^nTc7x&1{-5ZV;R)?F*+?mSRSBuN`oJN#EfogFT*S zpQo7)wZix}wT%3e=D4-(5T!uD6Su;SRg8x|1>JL%3oYipC^IUZ_D zh<@N@_@3yAZwF|~-ioP%&%iHVuu2*qgaaGq4k=@!kvg{m^(_P`#}Af#P{HO)1;s^g zRG^To6(rT-f&NB%1-{H+>|9)Ww?)Pa9m)g6eV;vWcg zeXDsSfQ3R4+7+k}n}`>gX0F`SIq0w$xnrgkj7V#VT~h-=kd+G>X)s$&sW}tDQdqr- z;?($^PvH6=^10v3uai8Bz2m700p0UxxRGAHBk?QtasGIuS2>J)Hw*vvYXPWVyWkbp z*@E>$?XOZkr9f6`>B6}qQFygm`s?Yo7I2*jS$Vy#4RO(2%65Bu&{%)kCATyM(p)Z@ zqr26>EGee-FhiDjK35I?kdnpRzLu&ny}Q4;a`mvX zXJeE04;y^@&SS63_6#~2Nk3m%+JU*Vgi%u69U?BS-GPgK;PjR3UH?=alA@}qM!U#! zGJTFd*Wm$r>HmcHSg0au?sV;c*1hJx&&_0ie*wAsqY@q(&rtc%|Gi_-3v3xPGv(8I z1~vIb=G#jFkllGSiK^ixtjzd?%f=%y&%CXYN|o?9Srq%JpZX*0kUH*PQN`YvD7mxO zrE!nmMKRL#I(U|4&Zob>1>wXaV>i#-fnnll6Vb=lQDw?_x12W&Oc&$>#g7HxYu^8$>kV}%QWWKx5&I1o`ufj?rEtV2^h;bq`S5;9U+t& zRh376I3OzaVNvl>L1EZr4M)y&L?uj=_ZqbHb!n)_r^ei#XKM;L|(F;us8y59n5VPFq8e0A9mT? z+sh)b^^)rC$v4Rm`dBJ!&)|j^$`Tzrq*m9E(@C%e3Hm-tDPJIeECSlP=Gd z^cxSKUwqFa_#Q_OosiFT%D_5<*Sy;AbBP~lwy2pS74^5;JD+OCV%r?;`x^mdokKHd zL`#!!I1)`1e)=}SIGRP~u6PF?XZ;$VXnBcrQJuZ_E|Gpg_4K>jo+>22ay#9K`aK*z z!LOL%cMJcc*;JOmaYMteQZLNlUG3s{{E-&gzP*jOcsL204*!P$l8Pz0<19)JDL7a5 zNi`um2~Wcq3}WNrV4Fm>gV~DIH4O`Xsu|0|&FjabemB&kF}&p2z#(5;l%Ba!!(#@g z>r%X|#!e94_oa3{zaJzSzI=a7_{K5=C)w^xlK$ZEin2(S0rENpw9l#=V*Sf~eji#L zv2>KS^^cx0LZvqrTs5^p^SjQmaT-Hx4ie(a6pO`0S&h#*Zwrw6Hgh|RV=mdxT7Spo zupefksbfb){g54!T#q%-%+t-nBQ%BW#CZ=v!Fi@ZbZFDx8K#B zm-(MUkk5$x)5juD>kUs0Eif(VRXp9Oj|R^niNQ#av|YiSOWNup6J+1eBN&he|dDpzsAsvL=Zi9H2Sh`CwqnDqxLra)&|+9Mj z!go>@HCu0e0b_1Ug_xYEpAgsuK4ND(RvGn-ui7>TdGO&{3{>!<)y%3=jaJf zrgY@b-0TUCN(0-|k9Go0$@s0k=h60{0@Mv=eXGoE25V``g=AH?FB%AJzR*vTo_>k3ebyX-hHi=pfPgtOg-o-%js4X@aW%Jied84Z2 z7Jo&YJHFBGcmLvTkM>oHNuErm_~}|}x{=%u9k+dd*q^F^ekrFO!x6&s?vXOCf8>wS zs!OePWzSGdof@BYI|W<^KKY8Mq=Mmxm^nMy2R9G7)N%1_9;p0}TUEYl!M*5^dI|X# z*!ocyO5;Wtas5Ox;K;hY7S#^DOg&O3@!$r5;NWeioXrNkNBDlrB~3;?8Pex?hs;eP z@H#5U@ML8u3?4I#_mBExC)>iW8J!?RH>h`wF!^IMRnPqPC=XoPdh)Mj`6je*ecJ$vC!bqWeSyuppSTtUFt)}t)bzZ zs6T5?;we^bO=V(>0oM~u#V1oR{HW_aNOlpm?OT0Jk{ca-f9$V7K_w<9EM-% z+npz9ydlWR?V1`Mgi|&?BF1rH@IPc377`eOz>5zT$~1hTXJL~ae&iXh-~8tJBi{p2 zgP~ncK31rjzWuu<&I~dQ+vJu=J-gd=HV&_M<+wI%FDT1Wg3Srx=4sZ$3QBOeu%daj)gMN%%=E=3PKwD0$vE

#Wc4HQ5c^`8@pDxRq_@oW`UXUznR#RX3{xN;c4Dz;?K`l^^=}EP4u@1+ z+-I*D;!_N#a!?_B;StT2Q<bQ;>)80F$u z;CGqP>p)s{~7s=+h_=K=Peh&+LrVT7kLcRJ?RYb+`{kI022B5%b`o8??7E*i&HN6*h=_VJUYQjH1R z*iw^pMxYg)NxkgHcgKTOzg)ula425(U%s~TBpGKD=`LODj)eJrmXZ)Y!ezdA+p|;f z8FoC{w5P!{1aS%zrGdRxP!E4>ye_82B31?R;W~XXr9Jqt-G{=!~zVHwFUp}U>;Q#Q% zCcpkIdO3t8+{~kq&Th=KO(PEBX=(CXh%bvNs@2Z;Yy^hSiKLcp%7H`0^7f``!h!tZ z7x_ptp5*)VoJy7p#rlt_3#t8HDDXWKS)}9!KP#%hgDwu(yS5-)<)J&Ym*O6?=oaHg z&GoHPCZ(8<>{c7FB>bv6^_e2GSX>{XTg9LF5pyv+Tq0toL9=yqv|H>GqT;UZcVV1D zpo=PN2JJ`KEZwr=_&NpWrkM-ZZ;wJw`h|U2c_Th&xGqamk@_$8Z9ij2((qwd;k$UP zNMtO_+)hbNZ{WS_o%*p-x+H-UGp(pWRl-{e&ek2UHHj1nh{P7xz zKd0S&BLeV6I5#YYtb>d8uxcqBa>3!>_2N^G#IK~e#Mh%}g#4xtnjuLfKPhZ+V83!6 z1b!{%otA0_{aHx@&&t8cM?$2=t^(d$cTLb3zk~k47`{u9Z?SP?-ig*|2$wx%b0_7; z!Mn~UTW;$xybjHIto9tmdHoQt&p(FH#%p%m$d>r8OLprYKSy|MI}MCY_7JX+&)GkA zq^{?XaE-|TsW+L<6Lz}$itu24H!}~ny+wlG!teI!cu*%cQJV+3;k=>E7Pmw)A7vFP z)0=SsZNT1}=9g-~d}G1zF@H0jM{||I~ zOe)RQ1eJS?Pws88Mx;lyl0~o~@-x?@4^^39w~KM8R*wF^*Z-cUnzW=$@)=-uLEOwn z?-eFK<-TUzMD`uiTsFvf68~A<_X4NMXmU^e(a!IBi;SEn@~j$faEspm3i8^4D#Kw%hOAZ(_ESEdVtAT0DGm2VwRbeLe zEWf}Z9--_-eNLqAx7s0S!F78vZdh&8yQ@QZt`$aGq~c#8pMK7D?B*M&JvvnS;%++} zf6SU{y&1&TFxe%>>^>ZQrnBEgsvES&c67(j_94yh>l~{PS+BpaL=`OEjPr*=ls@q` z<4Fjw?MiA2*eA<v8^vUq_X^(l!x8i80-BB)x^@&c-* z?!2j=LrGo`&1NC(0K7OMtdahJ%nJuXY3MVjtjlEahCFv>@jDwyt(l^TY5e>9>BOQP{ea*qXIK^1w2qdS2?} z!7^`!C50{m_Fh2?@*5(cH9WMfCawnS6lSnp-DNBC>y>mo)-$?ZoZcA(M+OB|)pSp^HQq0kXv;>#g`p$o zGzjN6_(#}>BWV!b)17}sCkq4T*0LMBSz&5@DOJ3M6V5QPd~S2GL3F^G3B&7l|Ke9O z6m2kVuYqXqtH-9vew@!;s>(~REg`1yu&v(lCHB1#>S?0)M)3#gl07H=vEOoU#!E*h z*baCwglX8}=MAO+f&EtKEb-p_>9z?5eFh~yJkdt2?C~zCH^h%nw^{3&!!11huwF%` z*AcU;-i0o1H6Q{hu_W4K#p?zgwp$qKz zd5v&3JGV-(xRd-#wT{cLKNGLf3Z2r%E7@?mnb;#m`x+m-eo0I{^GEe+uc_l|Y2avC zmOHvB4ROdl63m|t6SJd+=PpFRQn9Q^ce4lR3S@s%ZF0sv&m$2%Ppx1g`d;qY7aM%m zY;;s*wt)F~k8RDw(F^YF-}A z-rwnPbH=sKYkBYuwiFX6OGoz&_j9op0ocP_bG0@%0a-T%tUrsqMsT~1oxpA%G>e{! zrycWzMjDgn@^vTp9Q=<--Ud{$!hKJUo1y%VJhkds(|_MH|8=|lsy{|B;k@}=-P;_@ zfoG!lV@$Bb)=mG0jLZLTJ%cS4l3EMc$hu3{Ix+2uR%_%xF*_)1YKG_Sr*F!|SwZOg zkB7P{ICq#C**UhK28D_n!+uu&uibgPt$A zAIsIbt|vYzzae=#);Aas9Ic}(3rFXBL&_m~Ulf+Ecmx=d@vO|YYX-Ky82VuK<=#Vk z?Ce+-mZRkesgK?|neWN<-e|k|FtZ7gm(Px@FExdH*u7u7xJ>`OZr-nT-rU0*i352t zCIxm_t@(St&B+Gm%qzV!R?IQv%j`1kYKAKuJlxsq&2Z;%jwt~3LG(l!%)42qNp*B z?+*FusAverl}l`=pE+Wm%Y}SeR!bb*_s84xw}wTEa1F$~r9SM2KgKl{fyZ27@SQ#SNs$-fANjv?i}!=ka|?43 z;?FHoP&RB|=ZvsRGDqb1x?|^UFP7F@j=1Z4>~wOB9Ta9Cnq^aLku@A{`|hss|Mz#7 z{iaCfdh6q$eRcj9O*`DzTE*yp#SC5vZ)QW@n&QpVoG4=@BY3M_{7n7c7&C#ZFUXl0 z5k8xaY0YUHSl#V2-dE#^%IeABSAlkLX7rpC$#ueghudol7o4!9yZ#EpLpv1CPK%xT zVTUpS$&$0ww$O37X(?l53nAw9n^`uSz^BP(VP?Pxd=Kq;-;;dSeHTt-@cCQAeZcwb zgDDf7N;1FwVXG0|U$A^T;%|!cW*4i2^9>O@(6;u`ck(#_Ya~9U+af4Ae7-lx3Qt*+ zJ|Cd7#=-yG4pX*ZTvex0;A@Rrbi0J6m#qK&9Vt={3`xXeu}zfPg!zLW;rcknX?-$B z|Lx${H9^66KROKw>uk(r^xu~)rpVMO6C~d{mM8_=?Omc7TO)n zF~yzBiV1wH&9VQHy_NmI6Rcd4xwy8_6wC+D^q+Ur$6@LdQMXPR{X41;5A2vYZv?3m zei21sMz9WEt9SY8|9;-}$aSf#*Nm{s`ZN7a3u96*ee0FU8eL=y?$>=pyeE%mL$7Bk zYhgy|ckICdW8ziVzu`={5h9*-ZL%xY#R;CPAAjC4gx)JgUzZs}Y@d+msU-VoXKdxQ zSPrDX?8o*bqtYZK84k6r8&8HaQ~BHJtx4!UbamUw`84EgR1!U4oQS%KW^sDOgnvKx z_jCTf@9+7r$S!_;Vd8`M@6Q!=wsi73$Nzty|M&O(eShhH$_+OqA*1Ymv!hNNRK72B zW*>})N7O^{`^j;*yn`{uPazH^@4tDPN~Qcea>poLx^N&32LA)BOvkIt$P8Cf*Yb1o zmVLf-@vy&7=Y8mGF8*UhQ})WkEbX~7>MzK8!rDmHsh0(Kt6v(){fzMc|NFjg)cKpg zBOk@r9T=6j#et>zo$TtZasSSLA1Lj9WEzM30B?cerg#71WqbNvmEq$A$aeg`UTKyE z+Mdf-SBGTbd~9ii+s|0sKIV4s`BW@~>2pk8zK=uD{#qu+-Xu6bIR0|GY0|&f%T*17 z4@JkKz$V`~*(4qsH`~HD)Fk5X_xyWI^7YN*Bz0YXzwh7ot>Ze8&G@Yd>{*9H9}u3| z-=k|seC108~7wr=9gd9yW z_ZYUz`FD)3jgp@4BV7Bvn`CKjVdL3iKN!|2wZea_nc}>R4pl=%Zr} zih*fwDg%E&?7#Sxo?hnYl}ty8Vx;P6N#b|V4x39noB1zpg|@#G7JTFW#p!R{>M6oq zpA=I5>jTR|>GSJf0?GUSzW*0rdVHu&67h=u-(!W0Xs=FlGXBQR%(72!&?XgMhZjm8 zi)G>O|No8O-|s!%t=zlKy%h(C_8I)9$;00`vUsve&>SuL7f)%4`WB;(GW?CFSEj*c z_J#kAs;Po53lY`hr&iWv z{EP3#p5Q-7-F>~p}xXn}b zg5;_HjsH1^x!nB?F~koy)15hz{4d^A=XrHMJ&T7BSH_`juanRtm|Bs)BObRIPc3bX zOhd5dXs#enHuzt=?#Zq|J_|Juv7VekALGjr0}0RDg%a- z(MfyRQwS&2$Fk;b1!|X9g&XCRlljrB2A#BiED8PA;!rDvtUzEu1>tNoAE*!=XzIYq zC~ZZ1N+s@;+@-$hOn6=YjrZU4nUJ|dPh6V7pgVVriL77!zvn+zWWUBdsD$Yg@7QFG zF>LZ$WqZ!86`Q|>)wgO5K-W=8{+MJZ0;gKuFWUE#b%v$;Zyd64K$u!Vps)-L)d4(l zG#UTe;nA@q zoUt}%z^Ob1j58|XN2XH##dX@QzQ6rzD*nd%Z=6?$7Cf~$Qw^0$p5ZH3OR(pECM=zB zGJ5%0Kz{(%b6xDyXeD`K&V9U1J@`l_ZEH#iZ}IxW&|}_BP+`7wB7$(|u7|L;Sgug+=jU%D*^g`&~(}+?9d4%x#@N#4<4^WB8<1m3XpmoRM_P zO86J|_!m}puPddHaYI@=-MwTSx-CtsaWf5z*LP(k@}`2U&Tf0;o{EdM z$2UA{%0^vP0lkqy2F}@PPRwg2W8XU;wiShBFz#xNv)h>RUyozjzvItz{s)6wGZ6C2 ziYa!f1Z=HMRD5)VtNY)0_Ot9i)wEIqRiEkiY1yS1Zt^OxmnFP5dY5l`T^}%It7w$e zlMmIb_k|goyV0TRz2`^KAnvK3^ZUr$iN^T&@A)rU(JfXwE!EnLWfQeBuPoy2(W26d zsmv$&U)O4RICC)_Cl}h8PU>zn5}#-BG@`P-VPE3K7Vrcfd@8)P9aYI2w0_RFV8^l# zSD0QuStl}5wLj90#(-5usRA8v+p;@Qdbu5QRqa0-^WS5U)g+{sTyJWxHDq4CP5u|} zzwI$#sifnso&q1g;UV#N{~PDn2FDXmkEQ+BJDP%R%u^g|K4$!jvrJo7)|D$MFt70! zh|x($B;%Dgtp3D*u&nCcSe}eAY2oL;I+JlYL87(nEV+*V8~2^T*Zk#WQ}Ow#PZc%c z6ZZyX3EetU^e^6*PTaY9oUarf4^A;Dzxv;J`|2AX^d<3iZa!UCYTXER`-ZK<_d8Ji zGxGWERlNvN(<>06&xeRsIMeyo9&DA-lso*b7oUzcuU@%H>ZNTC@BY!&iuPw#X->Xm z{ZEBqVY_W9)JB~PP2F-pZ@Aa!((Yym|6Gt*m~28o=Q=6oJuUDtScKV*W_;FL-KIqP zlU08A*yXFMP|K>A8A;y)#&G4M!Nk)Uc}h=D(YXU_Ep%@#vbN*LY`2BuwNk9GG;hwZ zOvGo6JCkNviC}2{npz^B1gkM+JBy?=;%93~8gWR&$JQWA2Hy-+DgRld3rqup+|ak# z=1e%P@+@xLO?}TkYVq|WWx-*yl0S{lrbPuo$L;O(0VH2hn=qOl7jG5YfeB8AuROoo{O6V=j(Y!jt(b|w?Z7bL>{!K}iq;c{3bre!ASsl>S7V)tz}lWK=frAIy_lUw_cz-lmmXRZz=*}wBA3~I39fTVZDd-6PCppjMd}7@CcKfY&+=HvYRg-YlFwicxY)-At|8QE_yo6@N(!(GpJ=ftT?U>mbtCh%k_ z(v!a%oaW6!U#Wb`FE^6cASU5uGEUn2zekbD*!}+YB#(dFl$4rA8V+p>{^3fzU4Pq2 zQtg-Hr_aUsdmQ_qJbaP865+P`oChw}VLi*;%2W5rbN0XO8QwPJ_0Wanas2WduKZDg zrw<*??irRrT2EMOgKZs-SP1t|RCYsV`ThL`>Ka^Ilg&QzyB|j$f8ACXS%Z!{90eQ5 zbNLeAFXsj^edyT?Wb#OhCZXIk( zx$_lBUFqNU-F=!)kk6+bK_)d?+mAKi<;(iFTR*izw>$FQxhKSnrF!Vl?TloUUU(4G zpOOl5h9e%oNS?{A_rf&W^|R2E)e+oCl}ET|+_wW%({bkhh0rUBnK;YFQ0ziHXQnHs zRkv#t{A*_kTjRk)o2#&FlVPO!wE?HD&8=SENc=m-%iFqxE1@(R>+#*#=SR4`fgCK?9X?`W$cIWMn|K>0!}bjK z_G6>M5uUHyqsSQFon|~gjtBfy-D@_DLuupU&qT96+>c215o{a9*v$7ePkK8rue)(p zV`Uh9Tlp@omFz-Io~JFVO*0(QKD^{R+lcIprM30^!-!~Eo6#!L56i|{zSwJhFfz;t zTaayok;P`V5Mk2pJRe;%XR^KbB!2Gql&|^>4bU|oC^vnY0+VM) zKAv78ehy0oS%ZWY#DppqTT_=}hpq!lby^FyS!m60D>uTz>br^jz6_)rGTbheNCS`4 z%b_#GgP1BZYPrarff!vj_Up{4DC0cto*A8u9UhUJc|VZn+&#_vwf@CW___1P=RD$> z8@WailFxv2wrut<$!tiw8e2WcCRradmh`LivoY>f z|JwD=_Mr_2uV*3X)}>5uy$oF1^u=9;oZFgO&V+Bx`PYs`%IDpRiC-f6WESh?!X6ya zcIpu}>BPt`*D~t#Vd&P3*d3_tL{Le7G5_WvsAzabDl&{iSM{iVsLm&RF!XFs{W^vZ z))}Xii6@EXiwe(o@^fQ)Ibj2fBRDGJWia`<18-V`Z@#Q)hQ?08=u+P<3>N!2(~Nea zu#cuu;d>AE)HyhcR5oGp@{1+avL+mm=6I^i-;15E5;sb{tp&|*BX(CE!lAz9#UXdQ z4gwN4uL<5v#ji)Fvgp{JYiX=c#+A`H>QcXKjImpY zx&F#PWCzcj|6&$S?B|(Oib#iq6|WJ$7vV?Gs<-@<&xX+IZ6_K#$o?_se#Lsp`hUm2 z?Ird3iivM&J&qbLon~}e-7QKPoM~X5( z`H%d-qoj3_UlSQ9lyt#Vx4zF9JT>mZoHhpciSsHvs)OjW+dls@;v;-Gx$LOa2QiS_ zWqxRA43|?2x6z0-BGjmQQ2aFE&(Q4NB0ITW!@Qkf*8cfgs;Uvv9G6-YyBZLX zyxD8etOdc27LShH?SP0jbU^;Z(X zKTsMz_9TOFA0>3BZ#R>A0xC+t#Rf>NQxnk^&O=LW^W*5COk7GBb1In0!m;*;hO9YR zICEDdlQa2$+vjWe#s@T6sW^6Ig*|{V1)J)q-^)y8;!&SgpmKdK41}5rlq5^ArNqy# zKfM^*vj*B@B(7Df>Wzam@=&;4D1~(o;R&I*DuHFwu1E?)fw^oL!c|a^lU0>4kykRe_j>2g5*Od zVgw)j#8Pwij^usYDR05cu#T-U9 z^rOSPhxMwq!*aXdqhM_qt*BllXg+DNU)@oM zwOVIWRqqz#Wu{T@pM?Uf6Eg@}bD4MwRMS-SXG>uhwyx=@HsSoIRX5Bhl|uaO?hBhz z3UJEk^hX7;T6FtwzPwe6_y$W=3#|#aoNCXfpoozwxVb)A>zdL$lF~@_%_pF`v!A9qIGwm&29Dy9OG#?{Gy`{i$^3=tK1rJpuWbJp3Lif zGh<7ll8LvTbD_+e^j}EHP@68vM9`o+oxn;ia)MP8ikwlC3tR!c-%PJ2UbJM^YDlXPzLF{ zAMgAOZOMp9391#$m{>Q?ZyP~!npUx$#3(dpCENc z$bo9G74C-I<{bhbFh6nm+ZcU2_^S3=sZ?}=x)HGM zdtsZqr35pX6GJ?Eh%bo#7gLTs;h0yFvOu4PO%-e>%&U$X|hVQAdvWu44GCxOfE(c_mOpNuZbUa$8pa8 z_=4){r>&PA8{zfs%#JTsrPvfBDrLe^j(t~L8E*^~qw)9)v&5M^=s%9=@aZ8w5`kvn zgIbluPa$`9VW|!q%(HB6koB80`x_I2gv+o-F)Hogg+lDiy}0pDMhS#scx7{H;CWU>O$;!%ljYFJO0ZHAnQkGt!Ho2wBe6ovXCriAMW-q zo=bJh#bWitkq10w==1t5R=2K!toK+xXYnzhCG^U1i95Gb`#SLiUnwu@yj}@yzRz3QOiJ)!YsBHMBW^30xOXwZ(O^Jz$p26W+Ap1=?g1G2iFnbLG&7B+P5{hG#Z)| z6-@XcSDN3@xRpU@rsRU2Z6$tIJ@I9|Q338V{d9K3oA9faw)a_AHHyuw4s$LHLg?ae z;h6LN$oKk@rOx(+>^Hg6?wy~&y%ga*!E2Q;e8iQz@c?;#+P}In%+vv<;0{|_(MHe) zjjx_4Xho&9!ii#w4($K_CfIAT4Td`cLS0tKILn#dLV(n5N+;x2X%CdZ%jlTo?$w#- zc_(3XFFp;Y{kW_jm89d;>Gdkl)HCouIx=$oOBCA;+l7(w9)+Re74eTo6kgGdZO?!$ zo6n)RcUe&1JL(iDkb&RNKc_hvXQIVk_AISUI>rOem;Ux3yqmh@M-6rvxG%o)+MBFT zXV48FP2)(xo~=W2G-N$$4}%{2IiD(Y4b=(0iKu{_DGybfTRU<-K0G+Ey8_DNMh78Y z0~$^B&>!&woxU{=arL6TH;N(7VUE@tpfIU8^159 zmclXgh=ew81rm~uSxIds{oD(sQ#;B0jc(7@%HL<&uv?x-YL56j#755Ks}fJxQ0}{F zHpMEe+p)`HmZ}a-w%z(qu75$W-M%;4XS?BEYJ6Gc>Nvb(4zqnIsf1jBGj;Z#I@G`P zyUFyR6wxV5wr96AA?-=BtJ0@h%+ZQw2@SO&wfIZw9^!?!>g%gIj$%^xr*)?_tN_=T zXHGr~$U%~985PHaY#cGwlZ~^?Bz(>k?h`k1A#%)TO4u(8V~)Sg6vVS(ZRxFYV{Il} zWKZAbG|fcb9`jA|H?puNL{rD&6!GOA6B+swlL5y4AHN$GWq>u>|9aqtZ2XcGQ80U% zfgM|x6otEz@kO9;q>AL-@OILHfInIMb_~y4XIiPh;viUKdndk_`a3w zu5dtEe`S- z$`kMF-J{Q%h`(jk%k#U_KD|fYs@1(M>coF!$vY>d^AQ7wz4rbT8iWF`gt(>7S8)4y zW$gR&5k)b(y$`@9;H>wIwvfJgv6o_B&9xr#$8j=^f zgYR6IcMC$FTs>jioR7D^f-V^l-{87C?rpgga@|&EbNEydPx^*&m%i3ajI>`7WuVH0 zM$1V)q1~B?yR)r5DK`V0@uIH?aR99%=Zr&VGl?%@y!Hp#{}rrYWODvUyzJ?BH2bo$ z5goKTY_uv3^1Vkj=UuX3Zc{q%dX4yn`-WfmeeS`Mw@Ty7%gyMP-d>vVq6yyKx>L?4 zI>0Syl%ux%0nzPFRwB!jc%I(;K$-Lt?LIMLt)FYL$#hqOuTMRWJPC4_{zG`?0t%Eb z=*E?^5s}teWSzKwXhg@S0bX=y*%4WXzG7W__R1OLBrsokN4%s(@js1aXsHg9a;)E`*H7&n#Jhdz&IDVxeWaa3Ov(lRR~$iXq1vB9+o!Vx_s$!ycvAG zR%EDx?2{edBqLvgxHEK*K7|(Iq+s~E-^BB*uJK66g!sVkyjAv>ChKN>6|Bl?^BLGQ z*fb>z!fTQo-*VNB_|a+)|KMlLM9M0&y4w?E-r>=onRg)@2Q#g0ONi%F*zd5xjfXin zcu+~{vOq4WN8K#oG(HW!w*}{)CK0|Zlh?N!rKJBjw)Vcuk1>=g{SFr+^Xzw;e@EH6+aw2ah z#VYbGr?cE<%K6*RlFwY+MOpDaSwUmGgR-`4-GD~_R?0R%y3N&g+bC!0Eoz<0cqu&- z8{Xd~-gu>iQ?jFE9CFiQzs5`P67UAsF|u-(qH|iTg5J9ns;frx`j(1e`n=}DgI5{& z68Hxp&oeNww9s@{p#;yZZQAGCNr|SKqN=hno7-a&S(V$~czz#()A4*q{_D-~dM4D}a=aZZo5cDXFAkzfbD`oP z^(@rB?7lqA*oIA$H1USSyQsBE_x9u7ZgjnW`HkoFFpja#ZaByE1C62Y?uH#)O<_u9 zFaGs$4P~du>W6tATPY5vPb&I~XekTNh7*EDwop#QY*W%)+(J?52zI@3m6hV}UZB3p zgqadO$=`h7z;4P@pCjI!O$R8ZlH&&Qn#`13`ZLcy$8%EN(3u>tx8S4*h?~DQH!Om> zlb&~+N)ee!6@cj2%e;>3vO{0kklDn7X4O2 zu8T_w!Nixjwfbf;Jds30H;sB1t30Si&-M!J#iPU-IM zPC-FhQd+tjQA!X5k!Szj>#NUoz0Y5B&0)^r%$hlS_Fn5=pBqYo?9b?adj~HZ4AWWv zyo1ZH-pMQD)Ie@}LyRiYgA9EvQz25Wf`DOz@I`N2?54Jr23s=@wq-m}ZyzuM=O$k~ zd}ulkO%@x^2Y2=$j$)i>p=$$V?XrHQBA%@0p`??C(h#KVQarlDItCVBDS4YdEW?Ow zbp1KWF>tzZ@4~3u7&t_fU$P!vgMv$exALiHKvKHm+h)ZIP|q8aJJal=dDpM1+ZHD= z!RRb$i>x!4;~9R9`w!_cSJoXSiee&+*87>+&m}VK=XX*Ak}J#@i(8#euqHjmP6(+4 zB=i_AEe_EZ;_}`+x0>rSa1GN)@l{UMxP&G1oABA-uw&!+&M!;W88H5DPDzNRq{Csu7RuBrW=P6Rj?soc$yf^_lMgoadLj) zVk!aw2EXh#L2ZK$Z`ZjWe$VysF2#O_-tlwE7|5k;KB|_T0G_3v7q@hl;P+ml^zteZ#wwpdQIU57YkQx> zUU?c9n|nI&@P))#%wsjmh(qxlRwy#LX(mdB*=}QJ%690mEn8ckkl2vZuK%|D84A$8G-!O?9WiEysiU0K@lD?oNB1>I%XGL zfbucSsuV_DAHbJIHsx$aCF*lfjOyG#&qw7;Iz-cmTlb^(n|nePTgN|buG2XO$4dWrK zZ4ngq%B;ehX}`z4R>v`cm1@R`czi4)>D{Sz6U1YGDiy`SO^T8F$n>SN(_!A17`4B9 zuwn$?3FKR@v181+9dqw`s4?4xdCa3v6q~vic98KK`7!FB+g3*NRf4{!Hp0R0QQreY zp-){U6gQ?Q(~u$GdtC|c`rEZIxY9Durq>9*(4Ei;za8pN2r9N^SNL#Z!@m;pz!^YI=7;FK7qx2U?g=H`i z)QVS%SOmRqFT3*Naj@>TNdqqA3lemNwEo;5JWQC0(B|emK2~W9J?$Dq*n_zrN?TG~ z*rJO5XJS!mELHtns>>_`miviRnkDPPf7~D%%*i`J`$h;S*5+>{T+LSvKK%+qMK#C| z@j(l-1n);E-bp_2H?D_ptN9Kh<0hbr(_`9_Z-F+rq=&+Q^w;HXzG#F)3NqTG*Ew=Gk`DfkucV<;IN>(6>{Yag*-@A9->ziZI08G#HmS)BF{t zkF(?|ejbE~pZ9U^5l(~7%!&G~7X!dQbWU4Za1;)D^a`{&Mj=+|w}w&o797pH=X|p! z!m`DDTI&|6G48@#b%|#eu!)FvT^YIa*gjc!C~q4x#>(+3Ps;N=_N**b-Tu^N44d-T zD_cPv{Qkk+^H<3+wdZz5;^G7F+VLSx>f=cu`O#a|#DaXozcY-bnGXS!G+=EBNEdT_ z__&Y$7zDfsDRIy4fkL00E)!2C?7_T4s_j#J%s_~?VI+1J-afp+RBt^Dk<*K7uJ67B z`@p7RTf!`eoF?jEJEFj71Wffktmh!i-0JvZ)dNhcsubf9V89rPXi9jgE@L)}-BeCN zEZG0D7qeXz`okx-IZT^t;SM#knk zW|Y@XWiJ~WrfY>9L40xtk0zj#i4Kf1tpQy5jNw6pX-MM0>-|nP1-dc7L9aW8*8iT- zZ`wzovW;+L0QH41=Y(D*wi$%IP(10#@0T#n@w&|@0(vaH_56Z;%^9q~t8*7;2p99% zY$V()K7nmSPf>5SaACv#f?k1TmoV1h4zkYzte7&_6JTQIz#3*kf81*4#WL$}cN~rL zVn%(h_>Xe=FpR|S_=VfoFy@nsFRT(-Fj9gxa?4XQz;M4+=u7t;%uY{L^HhIE{fx9k zTzH7jlSYu{+SUNw90pNe(7K|8Jt8H~uob)~ttXk}GGX$oKxb^~9FQ>gM@d#8ebH~0 z0ikbWAg@UNZvn8UFoLD0r-*Mr=h*_1$Z@DeSfCj!6H9jmkUw8hPi7ArsSua zW63yqJe9WhFx}jgeBTOY%*fh@)4OXAsPq?vPh98(+A9ME{dPjwhb~>)@rO6DQ(V-- zEv;M_&Ho49--i6Q^5@D*i{R7eJ4UlQ4bn@kc;zP+;8|q+{fF0Q!Mmj~;IYVei2sh) zO&@~#`!;6JG*;%rgC7)6SM2)W@je|%ycqH)ukL01MS=Q{h)+*z-s*+DGYM&Da&sW4 zpwim)Fbk%e7aeewLx4YLHp@3P1B}^S+RNhlp|_JDXXPO+c1M&{;>iF%rY2)s+^Nrv zIi62?+^M?;zgGj=^-e9raASXpb|3{NUr0Whh3X%7qxEcLuV2K5FR}4{^&N(aj>_y^ zRJT@Q8=Ah;KMWc=-Pdwr#vz#q=UIW|2-Iu~I>PY^vj{ zLAmcCtTrmR4#h0N*+O#lua7?gRi@C|$DwVwUKDmmJB|cnRZJB5c|?lUZR}CC;8I{8 zs`AFix`?pX=}V~{LL1P0pS1i|<~)4p_`o9UxCqb7`TyMa-U7=EyQwtOIS|ss%%3PP zfEL;6H7S&LRqFm|?oRO)Tx0nx19s-Xq=@v{WKJQR>Msg>n%fIA^Y?jJet!lg(??`M za@D|heMgwqMu5OG zG~P7W(h_>k+P*xQ=P(0JbiKTb3}Z0bN>qEqFo%5SDJuF5N8#iCkid6WA&j~^lD_bO z95Z5H_G~`Cgr3+J{hnPwK520=6k~xXPpV0uutrz`?>ja}=bDi(-JDwub;=UV-5wS) zRp|ni+Op! zSLR!UJJLODuU*$*$I$Z?{+~^lBlo?OY_|!*n|Q|ffyE$vjOi`kK|j=aXRfSFAg*#r zY)r67HH^(tINC|fWZpE_g-;*hTc|ApIDA0m4 zUH9**9p%G4o=(3*Lf=b(qv7kF z$qOlnlNL_!4EaV-wcIu^5JUPk%Wlma$10GS`ote(y8yR5+v>hOU4-6^MV^rnr2Fw| zA5Qo=1C>gP7b+G8;JT~jpJURs;JsHa`L+2FnDaRI5*4_yDwmXuw6;X#$8cVxuGIoe zn^bVGbbbJ(bA;bSc^beVuY%izs0^&$?|i@ZDGRMn@?~~IlVR?U^Ci{ukx=F?`?BFy z19Yl*SANN<0*ww`sr+`7zmLjG2ySl#4*Pw{Zi+G>VxEng9U6g#!y}2gUgX=S)>h9s zxd>L~S8sk~{R+IR!H?C|7J<=nQSj>K3V7202J#`~i_B(KI=Qz155C2UP2OBa8I1dU z)yw))0{QVl%@0F$Fm!g&1Z^qM|g_w%Iy%ZdeVE+ zCk?3Z=AEsMyuj6Y#r}P=1)N$RQ}9K3cri%|jKv}ep3!@zCHF7Fr2lIli3d}lkn~(i z_tFf|;=20$uzNN|?SC>gYd_eGihg7#s^hw{nL^S7=@xA&7qsNEU3 ze@WZ7A1{ZSB*qG>5=g&ucJJn`*?17i<`{^yK-?LA|6J#VOnB>kOk{yD4IW<)-MC5? z4&EAL$8ax&L3+xyOOM$LV6gQknHyOdysR}FZkn!wj5B?+B*#7>|G;3yY}XnHNM71I zY0(R{+ago6S%Ywrp~CmnX{5X0j=7Vuw+_886j<*@&x1t~t+hP5k2rT5y{|b8!YBQ9 ztEBi508S%2+0!E^-+5RU*IoiW(V2UGNawQWqXlnT8^HKcyZqQ`CEypv(bgQ&0j}m8 zl2gJ+P>XrTzf(-Knb+77|%H4o$m7ZNS^F>wT{X>GC| zp!}zK+-e7zzA88`aJ-rBbA`fo`<*a)Em*=E{F$kf2y#XJ{k_DVke~g=)CB2EHUzSl zo(2s21Sz@dJ^ZC?XdukCmtVAk;8$8)p${VA z4FB!LQ_Q}w)_Lcg5N{z2$k#czzpF<5Pey>p6$3}4CS${<$?!ZiWL=&r6@nWrsN5_= zz-jRZjQ}&^P3;662pOltiQBw{6VsJ&;rbfgxxRLAxbs~oD!&!F6m!M|6#GEss+d3% zbKQ=P&KtO`rprL#t__B{t7=w%G=MhX;&4`=I%w)WXBr7M0am|me2wcn@a~zQ?KIyR z%z10M`3e3a=$^fK?n!kq7}I^OH~f$Z_q9*OGnyxW>}~?t=m{-2YTf46ym%O|MHrWp;7?E%-Tq3e06^T=O)_2})h704Aj2zCG12Lb$?#I&7V@J#Xj zSo+*2#3OioXph?mG`w{I5)XC27Jq4<;)@ng^?dAIZZrco)ytl%Ec!4WSro=h_!>H< zluHVJSHbxX^7RJ`Ua(wJW<%GS2Bvni57*@LKrr08u%Iv^JzN_79SiZ+Wg_9LHpiHvJa z$me{eA#5^fyb-#E4CcQ?cEZ93i8)rJKip_-v|*$;fz`#QlPTzLgVfQ-#S5J-FcnwW zYaOHw_7mjxJszeY&GGuf2XhP1(;FX8%kYG7U4E<6l}_;HwtFuTy$Rr4V^;mKYy?L1 z@u+9l1o?Wj8(f_(uV6o~v+meqaysrsaX57$(JKFNcC36gbioPG7cKZNazM;+Uc^2s_9@-jMqV=`ci6?Z^ z9__Gp)!NpTQwM73aYWO+O+bl*)KN3b844DMB>F;C;iw}1cEMvK>Z6D~rm9-I8je!P9jlO4C8C+{~V0iQ@2pD#H z=3_f^!DzRLE7KqdN;$>;yps6@!*%Ae$I!yA^#+W|lmgkg zOu*rNAOEnUDQM2mFrE8q1l<0;bDAIxHX6)ei^#mXoKFcMY7yz%;MAH)NgW$bUsUkTW;!ym@{bamTG+ zy!-U21|~y|Qsa42&^qMgq}HemxL**i!B`QmF!V%4Dw;nNT*obNyD$eQyPISUTXf)o zDyzJS>KkzMyl!p69t0ao3l3ENYLFkT!%1te4lg+mPYedUhGB_hKfNPWFr2Mcjr^ep z*HYfP7Mpj$r!DC(+`md8Se;-{btVd~eku8)8dCz5Q3I-1ej}fVn1`Dxm$O0tP#eoT z`T!-5=*h_E)8OkfmYi3Nbx;`*_&KAc5(a2!3L`~^A>CTk89%!Ts=am3epc^;3crR| zcT`58#;xB+{R^ry^bn|e%+JI5tXP|SljY#fXsQq%R0&5nJ_H0frvdfvb)H9ei@?~B zavk3z1sYfDtZd`sk-s6ulkucD@TbEk3b!x=t~(9iPL~z~$Nw-g9&zwdH}3wes~(VF zeZL&%j}ge})~P)5djkr52^4uAZxHuW!JKQ$0&YZd8VfmC!!=z_0bKNZ|D9i)zfNWe zg%NTRL>mU6qiIqZH)e`{x42$v&Zcm??TNaOsv%ghTL>Fv`T}kEaP^PrNYJlr*P{9! z44&8G;u|sYN@m9?K~CFLVcj`JNcdeT)kZH1mjw=N zMqj^xyn#!LxpA)`MKquJ7LC-uZF#@O-LqWsm_bxPaf=cm=G7!fk=6HafIC?m&O@7!VZlgJ;-*6k}{PA*KZ zlMlbBh=zxeEH^|RY3r4=k1@i?y) zSwnTTsse?AEj)SmIa%hm4Vd`Wvi-?G_amA8-L+2^Kv>I}QKWAUN7o7O>{NKdX2#Dh zLgN6qRGj?q;Yt9ky=ZuTv&#?IpR!nYfjbC_>(8904MV;WTgwby!9dU2DQ|0q{CuRQ zC?zhv0cQ4R9n@D$!0}waRfo7LWNj>1`^~7re)H8-dUI8X!rfsS?o~zkg~lFYBV~|Y zv`sW1kAY7+_+Nf^z6JbTf1O-jXUGe%@FYwPh2yh-JbHpc!SU-PS4kH^Og^g)4}M~p(#3Z);u3jqWK(~-BAgk^aO02? zDIWl_c~+f=q{ycr{0aV1tRBb<^NdFGs)FESBIQ*|HF#yZRc0Ea3S{opsRW^~L4F~R znORR34&Hg%lsPFtEQOdAi?RZw2KDUm&Xj@KiO|wu_X^P7&Ul#Fc*=?&LGZBWP5K&C5YOM&W0>Cz#|`-JagZ2Xlo&Fp+p>= z9}`~nS5Jq)@-ID~&9QiBX(PEzLzo1GvfHaSX zyHQKfy)n@CTi5|8AHSK#z9P;DZLdJc6B}3@x_N0^&S~VEvyAinR_~gz|G0d3zwB6Ad8%@X3HuN>5`79a7)Z!TBprD>B?)kX{Uh~qHhNE zCk6MPS!zR)5FX>&eRU}E$2x_oHQ@CQ=f+yRI*_zJx*$)Y0p#6-S@#oFA>DAvs9Mki z7(#_(Ol&++exr#1N&*0XAnVRfMlgt{Hf0Lg$AXgn)6B|KkudopTjsf)8bny@YHF#f zLCOw2-NAqgnA}H`ZY~8_Dr1X?bCHG@gmc!^l5#LEVfZD3^#%BZoE06%e+iJY@jE@b z8wyCr9)E8|{?A^OhQ?3HFxQE&SpiR8Oea;t?VYX&)=wETe}toq>CAmwZ=^;yF8(0X z(1JR~jr)N1V_rT)2Oqyxk&p%Rb#A!xj>+)(e!=$C@tatF(7nQmN>G)K!b;3XuHBZDVTPWfsm}7sZ4%>F6bsH11@YeO>X^m(lkPoVPc5zb` zmJ&X@&0bZ7h4vZ$$UqJ7y;uJXgqE+o$6;Noks-C>16UB8Ej7JX2Y%(T%bV&+kZ9qA>%rgybcYeW&X2u8iz1|_ zGzBr@iiB{WVTF7kVBc`gLj^`zDZ*z7<)UTu5B-x+Yl?qqY|xx>6q+{;TF?vOB| zMWl{6GNv&$O7jwkms6f1&79y3cjh-1dt3bhKg{y~m8hA8{CqSGuHRqXB#AKw7sHkNWOa`6f(Kq5ARD@2>Un|L#k}dlq$; z4>cgu`~Jr+S`}!{Yq1N@N8EoN(Il-oY0x+rPY+>`2l|U%i_Txb=Za!HI;7W1B2}>o7RfqMS4qr+ zIO)rpjx^@i_KWe30`gDf)X~yjNP|X<<@h>XDA+tc0*u9_r@vi2YrytwNWeltp-CP&jpi%WI(BmwK-`;0fq>vU35-rz}MKF z-o->kP!u?F)~9-f{Df^;EBX^edOn(I^V_Azv2v#?wmVj?+X3BBA;Bo zxWV~~k;Tv_Zcx8>lAoP45Z1(tGdNMck>Kq;{APwAc+D{qGv$QxXGSCbrO`%E`*c&| z{5dmlx-S%NdRGg8{+3mtvmQL?S<|ei(f_YbuLmqrm3uE91;c4C@zlFo=}@))U2gy{ z2Ey?^_8CkjLUJg5jk8rMNRK~_iQGf^=4vK?imqhH|NSB1?3WBUGkD^++w}wx;KeUu z!ct+W{btO%1pXo9zMu2Fb}0{9qaSiZKG`8Qr_YHmIweyjiuUVEFI?1<~8 zv~Ww+!4(cT1up!WMtWZr)VERqAUE8S{C}Z2%+nd!ua$SmCv9+ z$_W}oH>mWVc)^uhhAh-Mt}x#dAbf`?7}U1JzYfuR!;!3d`+A@U;7*H9<46TTi4=oe z0#zu`ed2ykk{AIm*DiCrtlPlC==kHchlp48R)xm)j2SG)aBvjOm;e#Ec=!A%3)no# zF5{JF3n8y>5|f%Gf%va9+aZe*AQw7qQ}(+U{HTdW9wWYv&xs@!j@f*uBz3x#hWf1i zOa#_rp#Hm-e02^aJxh+p6a5_0vOWmXb zcx9|;YN-g;)p5c87KuP_U1R8fxeVUy9+B`^EkWrlpkg72{ZmTn4M2oi# zWfMrSH!gNhx{GMB@6V%X-0u-!v?+6peaA>KI_vL019EmDG+7a!XX6)SIv)=^=!^&A z-O~eBJR_jf=JQxqpa%Nlr%4zl^1(%robyO-7HqFq=HEp1#yA;^DZTnh;EveiJvG?| zTTdU@i9SN}a96|lF4X!w`e!+4sY?%vnwoUZ_ZS23(uYQ7Y7H=C6%7oxR|8I@NN+5R zgA?K&vt?juO^ z=y%S)r}5}|=gAKV!XiL~hk9@BXBg}zDbiMK*h2u7 zM2VV%72;s|6X2)XKoS4R__Jm%@cPJLms`vp@-K1s9cI)(z+i{3nV{VEF#Lq zF`zuC$yR~rK_t+;o!gMrT!BAXg$=?#PhfOX%Oy&JblBNM+tN40)Y!(TN-=L0^1XjG zt8;s`0k-9EO^U}e;Rh?en|X9PoP3BQ%uPXxRWP*B%~kw>10u1G*$cy9T7Oe`0_hz4 zKAOl#F(1H+m1fTE^<^kN-D=H2vH__rL{oT7QED%MBxAUnOC9R-4(VM-&9$Yr6$CJ`K-GGX-5Dw8IP%!^83SF^gCL6=@8IMpqo9ga0g?P zqw{mJv2g$7+mZcK!O%-p(Wv`77IJPrZ=zQ5fQ(e43oqXK0`+~|w6-EwPm ztTH|uxKld9xH4J&(QYMFk7cMwtDrgr-q~Io$z-V8d)O3nITgg0`^hV(Yv8u)2?08! z+n1$_VdVP$5nAvJyZait;P-N&ks3}4q+YS6XHHE5N~ts2C5X?-_4e$&o9EnNOlYIU zul_Z75?GO?;l?}3_FA1JXukITX}&@>kQE(z8=`UX!1_eZ^y&sY z4SauC7WElysCbq%&Qu_du3gCG{uv+;PHblo>4O!bV?Upx{H{;Pm88737ATEShBMO)JJBU{nBVpsp zWCWLbKih;SYlHBBeU*E^HgF|;b-WrZ2V+SxI0?5r;V|{twoQ>KJP}y*^lq$!e3}Zzs#`kFAtZ0GdkZj4$7*b zMeIvSs7{#R5x9>0Pd9j;YnKK>h~V`sNzGuWa(QGJMjr>l*Wb|d3?zZYoc2O>45g(U4|Ff9G4-pQ~W!eg%TXYi%Kz~$Jk9lH*A$MblmRAdk&j2m3o-^Ibe ztfLNdRs=*F`c!9l#lXk-=xT<=I!JDimaQ>u292o+-U!7esFV6keGGA_M^1aO#owuh z-INDnUS-9Q*PUHMTAB>9fr)10?#PerK3?ZkZv*t6En2@RH4o#(hd$pV2cf?+I^3$@ z9SB`8HmTGPh0FU2DjbX{Af!aKN1LmQbfs>DB4NrP!Xz;?oAC%vH0xV`t+N52v##Hs ze>8-Rde0Y9Luel6Q#I>>ctV5PdsQUO#jv(G-RU=#3q?1N^K8YTyc}b{YQmjikP&J9 z%@CgrAf0@!w>%tv*BsA~wh4!oi)Vg@Kmz)mvcO-_os3@O)~LigKqO z+>;hApZYQh8jMf%)$sFyQR%5s<;577H(+~$bp^ok-8=rCU4by7=B-YT?+&+Vs0H&7 zk8vTj+bBTnGid&iH(^&RL;5quH|CwuK%8w=P_C2;+9r68zJ9*&yXl7b`6*vWQr-Tl z9-V~zaX%EYC1il#9ih0#Qt{AE*mdZ}kq!?zHQqRPB*1PE!TD#t(eQJ%9=Gl?((xsd zhfC!&!C*Bjm7~-UOuP(qrQ^(kTf&)~)|I)Ca&~L&?z1ScB;4eu`ZUY#|G{B;a1=-3(B)+WAp{ z#`y(u6LBmk8W!w)g$c{z(0pNA<$g^p_}a2la_Psz{KU`GZAslgx2XJ0S!M_xcW75k z^Y_7=DHZ;Ee8hR^{L1`7q7tGd4x)}0-@}Vjl_M|rk?uny)Uy-yZ4Vhw=k#kd!(_8H z^_)@#K6_|_q*ry1tY%LXoz{2%Mx$H6U{PAvA=UgznU?99Z$m<8k>Kz+mE(HN& zkcHqNt_vKyWg}?0-iA2IQa3UYPprf6n{=md1bElZw6f~@!|huX{|B8}+@Fr1 zX*bt^1(z7_BTYlFbK9A>Igt&=2+ip`sXxM%aBG`oWCqbb^zN~uSpi&4;3IkdA{i(x z4-`F zBt!pvL;c}LBfsvdPN46*W-)s@q!d(YI6`x_%YZDPrh|y58CYQUgdZU8A&0D{!#e6i z{$5NbLs$ny`eG*(nh{T;WPN0nHXp1xM46qIg8p5H()pL!*USSzRsV_2OD+zqG>CP-+{MBM_7T?ez}Lj^$fM*f0zMLSGLc4t~U=0LlM zL`$qk6zpWPRrLFYfi1kzDhqdmp@b=|o)>Sy(j~-p;+Q3f%Sl9V;ibYu+Ep(v#LY50 zGgfph00+zKc6)1j|0nQd4O;zq)&XK}UT@rQ<^i}wOE54YAJpd-JJvkqVMsvq{HFkxPwp6b~C82c&5`wp!tW%^{%($ zh43qz<+Sr=9UKm6x85Lb0PQL7eRb3)5pZMs%mf$eSEC$beUDcP(a42{_ID8wj)pzC zBriW}? zUX>8i;rO=PE(Z*kuAJmT{+5c`LaW*}p`aKXll)5z>B}~nh%6sjgO9xtoA8n~cxLk3 zOluf`EsLF(u96!3#))drRYSbWVe27B-03Z2Eu1J@d~=4d1o8Wi1xyzO!=c00ZrfBaP;B0Bn0E1oFUD2-O#;EtZfqdI zMC$SH^}qXuE-b=nb8o?EvU%f+dIqF;ydug${iVm7*^JJh@lVTdDX<{27?3HlsDw!Y zOh4~qUl&b=90Pf~>0EyxFTEJ+Sr-h1cLSY{emEn(Y2O>X2ZpG>P%4y?&J;Jg>3b2nKVa(5;1Eq|~>xK(WusPi+KQxATK3^26$j#ruvzG!a>aMAf zT&4Z4zA^;_4w~<#`*s5{9i6{X`4HH*64(c#KK{-WC7syJX%M|eipTnX2I8 z3*u`Y)l`gKfNR>Q!TPZW_T94ay3Goq{mj_zYe%d5zXdoIir;a!~y;-gWU| zS_7O&jelx@p0obb_vB)~l)y^y^ZBHm_uz8ZsNnjOQfM2<3nS+Xh6?(eYJ%gTU|0I( z9C1Q8{EZ|2cXrj*QGXy5hl4oe6Law6*_m?=XuoUx&qwZHSRJUveYl)~#*dJ`ryW_~ zr**g_Q-pls{HHG*wdcbVpRqdbOK3j%apRaVEAl_(d$o-7(E$ohwI?q>cLm+B>Q`c# zXuR&ep=Tkg2{TrvT#oa)K%8qbwNqpUme?rkMit7BjO{Qd?MuM3rfxRj!yw2yY4h>r z?QFOfPjyl(ycVoJ%m|0yEe3_g$4Yf)(}3OQ$Bmw~RPeJ$B`9^&7hNV=q9@%048moR z_e6VOR#Z4BNv;Q;ZC;2d;OPVJTU5u(kuEAMOS${n*e59dBd2T2S_D5i3pK8HrUJiN z*2;6*D40AYwT2PaLo4N#<5gNskOYQS+ho;XEkmreQdWw5c9*kte+0wbUB|@Dj378@ z8+`g!I2Z;F8+h<@>hLS? z6{ZZN41hb3&-PpGE3iEOE@$?tH&B0iE|eN(2Wza+Og5}pFvrmrW4@OUgu(AQ?^-2- z+XUa?ug?ka<7u$s&U_Wn+ezGghx*YDrJvN9On(A=|BSYY;zsDn{TGiD zU_-ve`O#0lh@tBkx&J*cANjBjZRZg1hJe7GKQV$&{NYGIKBFYv8*uiuZT!{!fm-Be zzS(p1yie%u`12$QXjj5qtj~smZb?DMLb(U9`7x}LA|0icVsTPRrU97mDq74g835h6 z*uun3U0A3hxnjMq3Sj}G8P6k8zH@!#T6&EgJVV*&JoYST>RK#y|CtDqlmxqmA;=Fw zn(virZ8nJT(z$pj=KwJ~-QJE>5s>ggwrM~y_#bsQsD8+X@)WJqgt<6S{xtn%_iHK$ zv1`xU%^)8p%S+EB$3tP%{k&3$We9wf|9Wp%4&_7gQlb<*!a?cxhJy2a7}PvlB3;dn z`gfjYnJ;hTZR#&eR9OD=z*1f!ff1TvET=SQ|nMr0z`LP>0SR3euk3CJ_9S zZSc873b3ENKH_*X8tye0`^aM{@bt9=#aFcMe{N8}A#fh?%=?IK83>WioISOa53S=) zUPwxi6HfuU_4Zu?&QREULM*t#fX3tCYF~%QU{L(?xzuGW4EC`+X0@FtDF1aY)qol0 zo!0yOjmX~qd;PabO!?hQKG1}lA#pL%8=N8|FE|O9LK&fnz2$-v&?^@o=l=NyJ_S8W zUPgJ-&Hy!GZgzb*MdI~4$U_}+SG6v3W*ERPD~2$EmN4Mk(9B!W^#E-m?+O*-XfRY1 zE6)>(fk%t4FML^vhAr1yOiKK*;GStdQd}Maas)-H;!Xa*{miX6X)*w=zGM-oqYVdX zt{BNLY@smG^D=aL9@Qg9-Y9&&9|3f}F*m5DLO`20oQ)6FJ#Xq|Jti}8gYC*`EnzKV z=%2^uxqn~*{kBG*N~0_guYgql)rdZbq^$*@ zxT8|`Bhbhh=w>K7Z{|9|O?Rr6Cv@(R=Kj6&2=f5L#t`o3k9?t_?2&S;svE2#x+Rye z7syJ#U(Sv4hWc|NWoBqluHs^{6VfmTMV-LsMFmEnh%=7xk_((ym3%^U%n|r2y`QT}I)isz9M$<02M`W3dB^&|0fcA<-FWa_{(TS8 zgP=h@KjimuheI-f)EW439ouLI(RJaRoO)qnf^@P{MbQ`aAvUL>@^-iZSnryjSJ~2s z*sfdCmrk0Tt{pbZGBwFc6{(W4!G zJD}`*bwj4!;NRAC_=b3Gmlh0GIc<@^xyl8_OOepX4(JG=l}hGe~%A% zrKkJ~tp}XP-vzzq$b$Ew^6w7XGa@qI+JoVpk>2lea`OhrS!Bsyf63>KRnYtBDSsDNKpU^(ibuG<-=1zSB4O>)? z`!8NNKZt*Ay5zzZ$-X5$aVccY619r#mOykt3By=>IuNMi4X5m;100Suhis+6i>tMQ zl&3NQS-bJS6i@s2`qNx*O(FVpNZcnw9b9Sfy~U?7@=-SYJef&!tXx%&Kn=ll1# zYg)uFykwD&5lI#4cuelU?H>X@HNZ0AjCN+xBZ91d@sQU06h!$w6+VSYamPrf!S4!j z$}z^&f7>Cl#$vPU$j@=lg^!B(|8C_xejbx~ln+WWRH?+yd4T}5B`nc2OkTaTV5ql&SXuMZd(HNX_tiYP#y7a z-0BHQ`1SQu|HbKV+}=oxNuT?b2E9-3len_y!kd+E&iSs$U+=%;8%1@#d{s+_zgv@; zS--Q*+3+`RX8v_P3!T~UA~l;qS0^9-{{3(K{+>5ZMX>~DbrH~PKS;i%ng@U5C|~~s zcjhOmoBtQjkEG10#Lv>;Z#)USKEK;PO8FPZzx(wT_H{If2WZ6?CB1D{4q=kTS0d^Q z!OZ(l&YiPGaC_+{F7bRJh_(AH#IhCri?2s~`G>c&S#Zkayb!%u9$4o*B=JB#A{Rty zPtMBZLr7!8E*D82obx{Ek9#8zc<$cgI0`I+zwxjB%6*Hk4$bERaJ!iVi~q&@6*U#> z{z3*^xsX5o{Z<-OpVTNwt3mf;q>k}r$1Iq*p;$||o)43qn+$7dS@1ai!&xPfRG2?* ztRhZ{j!#Qdz`vgUZ~Hf{L~;>Ksh-FeL{j?(9c~8bdlcxmj-`USg!s9q$WPNWI9Et^ z?;Sij{j#?qKM(m?@s0RiMZPMN`=)x_IqfyP}Q3ifO6$rWa zPLMsQgl}eNJ?$=)z|-Qkl2iiZ-&hfQ?lST@`FkBc;B3nF1r>tb+~5>>0`dv9`ncEw zMZol+`qMm39`w&ln(vVn!i3Oo#&*#>uwmojd5y-UM?CrdPQ!)po>DNV4CR?|nZpb} z?-cxtqv?Z(her7s|KiJjq0IN7IO|{h|HirI1t$lgXd1-6_(IVBG3{SmlNgsz1;k~- z-+2Fxvulfy`+4gW=(qX!%SHg6!++F*5lvL_ccp9)4N+#_smTG2 z%`t}n`)p{r_9<<38tE9>R4>(iLUDD-nrbaf1&V07I|R!AH{K@v{QDs{YEYjN^Eb7t zmGF$V?4n8bJJ>zn=vINaD0J7bmxci!{>8U-=1(pzS2cJ{oHpMRdk0+R!;abG|2NJj zBKocWyea~l{STE(w+fKI!ku*tamvystskAlFa8(z=^MCmV(5N+uDlT1^nb`Y?{F^P z_y3dZY$9b7AyP&q=WQohDVZfyMoVUy*%`^+dv7m$?_KsLB(kzX5h}my{W(6L_xF$A zU-zLps^h-y>$=YIJf9E2A~ZrHr9)JOg9{6s>GM4}sFF!`WFpRh!mMmWtj$3C%YXN$ zMh@_868zc_&IgX-Wde6Y#6_JmzCZCP9k7e%2OgkvqP4B&(v3@L|2|K5JYd$D%Leb? zdos@wQ-R+#$#E^`|K6wXx$NNGziG%ma_ypQAUfY>PBJI6)mn-3gYb~ zLmcU?WSvWmus+hG|IWD_g7L%ZpS$89U?fiJMH14rtd;bhOU!^b%Kj1b==>!(cm57< zRSMu;;N42IOaak(@~5s+buc$NRA;DO3nMp0a~AGaL#B6-TtYnZ6Z5RwviwvAP9c(R z_KMZ8Bb!CY?p6tWAzLH&knTUQm32Pe6!E*0a@Q@;{<5aFzb`&h4Bse&j9(&u=l{L$ z|E-5iZQ#Y&!ZK*=ljvl3!~Of7Rn01m^7xA2B9*D2{3{%My);eq*8p*1{`;OA4IeKY z9cIHAyVA%wsweGlw<_{=!rR52B@v`g2>VlNaCM>t4#yMlpA?jX&b2Bnc5$>1M$4*~WE~is8~v;RVLtLg)}BbKI0D1IxkuEoa&axZX)({R#D7nkhcue^9|eMbW%fE)P0q zti5`r(S0vrfAORX2b%BZ&oSOc@zQ&u9f}VpivIoiII|Y3l705S@7d9P+&ft#3;y?> zb=lAVvU-yNnUmR12d}gO-q{7I3$^L6;5Tbb-ctm+G8>Ag@NsY$apoawe&N5re)6XC zMLWadf8XnY%KWs8avj`yFmEa5*9PtF4Bz{*8$rI!_uR-jnk&}a6u)}987A)w#u*_$ zHnxI8)r&1{@Ox1{M_NA%F4MS(CPmePBrNxw;wT4|H;M3eAP?{D;9E=xzLIgCEL& zrbA4};2`($X5Z<0P)j1V^}^+so-W~l zfPGtIm9+#2_g#`K8A{+`octqd6i1p3o_%1WUIZFH79*D;3c=vc=RhCY0?2!ROV<|h zolaN`trO(t!`Ljd8ih+P*e(-~X!@Y<_rL4F#2+b=a5e)1D&>RpIJ2QMKJ4>6+8^|` z*Usit)Ir@2k+aDN4!V`b=|z)^|G)LHzmXnyn-+0F*mpkUXB5Jh=>swU?Oaf6_I$!c zgy!yQQbkeeaL!PQ2+Fb}OfaBSW*?8&Qu(imUgT$)mtZ}#@{TEs!`)@#i>B6VQ% z>{2@q;uL#0n|eJU?|`(AsZ*oKA98&AZ*^+%2cR9{P$NnmfTC7eP3g=UcdO^Dbv7%Z*nJ$(m$UZwa^(Zwr4f0!S`4wiF2gdH3Lq*iw@bpT z5LSbl&rDd9!f*Pm+pX$DApM$3%08K0@r>>Ui_35r!@|H_pb%q zuqXf{@dT2)*X#dX-&*k`)s>EVxG#Mqdv7ZrR!*$cQ_q(}E1#3!+E5{g%-)P75yZh} zn>2w|8xH>bDQSMGkq-sQ{F{ZNmK%9yHt+U#Mx_NjB;@C-%HT~>I{q$w_Yb<^^D7hlk?Rz^1Zp3;yKNm**g$L62 z&N|{C=uq?J2^9bRZ=GAurp=sQDu5wnk5aXZI2h6PTedh>1f}WNFbN;(*Zp^WDGc_4 z-jx?4jv7y9M;}_hUBdchW*mrzhDPWa)WK7ouMIbEG(fkx3n`gP4=iIF0UGE&JN>YR z#cQD+9)-z9uYN}Bb);g`v4YOei^tUmh?;=y_hZ>RsP0VpRJ}CxGvXUqUP%_C#X)81 zOy`svH^4&9EWZZjCEY!p>0->NZgAdx$ha7B z=Hcc&vpdKiZ>e#6(Gt~xRduc9S#sfPfZg#wYgN!%Mtf`!ougvhE9TaT`4HxxMss;C z51Qx`*BDgtVK0#JbisZm9Fgq*GU&;HFP0V!w>PsP(!(92MgAoI6J-7(`6Zx&Ka#|h zhT=GUuC}}7C=avoPL!;Hw31+gW>^_-(VBW~DbT$^1Sw^I)rYclMch)Z>c@>Tc?rc$`qEs~*!=37(Qzt+fC zW<$+2Rf2blS#VwQ;F_I(Ch%E(e>3|Q&1X)ik2;y;fYW~(q**}trPj6`aXXVfc2LEj zee&_DPW<181t8qG?R(;FE}R&gemJm)gXe!OnmIdhu#in%`(2_K5)hl0{!@9pz{D(E1W8ZsM`|~0n}xnG@Mj}nG}O+*6=Ak(8(9r?s4Jy*y#?&NnH;WH4FWsYp0bnTEIj-0 zt$0mf3US|wqXUzd!S>0Dw+&r6^cw`>O<0ygP)MrYVrmtrvT2N^MO8y3Ri@t%(s3yI ztXPnscuS3DyyGpN1*s1WU$>=!>bgS6=z17 z?22K#P~y+>$0B&b^x)`4Iu3LNCtr|E=E0YwoyPIWf`6Y$)_1SV$>YHJwS;2JN-l^! z4AtK(Dg1Z+tl1pD-?^O+5!1ZU4(R_&qJvReW|u*`d@qs2_eKz5C>|hoDuUpSnF{*X z#h{Rt7D(k#0VP`hDAFroMK>_eLbd=LlD(8ACI_I+^OjQDr%`xyZq4b=!zDPN54FrV zI{-cJM2&S5ze8v7@i?)Y-Kg&ndf_tt2wcB!EbLrU25q-4B=a=(p!p|`FSddo5Ko6* z!FL^Cpw)sV^Yj zbN}X@-*Zs*!1;#Ey=u@E_q_l6V--}ycp0oTAkHCXy=mi#{1~sP7fy|(!wtKeWa1-8 z2RlVDu8h@yxuDx98S3wjc5Sb&8lw2YT}LV$_0_&1FG77O#67GQ;HL`A1_#@q4*IA0 z(4PM+#sJN?6yp3BNP`OCWhe86C@Yj-hBV;bqdWu4tK_jOMD?;J${GTb5?DR)`Eg+{ z(!u}ty?6U{L|^z;43a^EG|xB-K#YI<-0rtRAk!auo9R;oT3*EmF^GrwAG{7<0VpVy zP}`CggL@^{wH=g~Boq`r_YtXt%Xy{eYJ2KHJMP5S7>*K{#0wHtazW?(pHHtZ6qkSw zNB2{~do|!hTu?WN@{@2cn|68kQV93$s1jdA@t}KY4kJ3>eibWRbQYcmF6xTy*VXed zeMPL;j&cIXv%*BA<&ZBEINFT<8iZ16N>!@y0jT@)yC*Vh9Qbrh^MF4j`A`swX?;El%7k_py;mA@rh_{Vyftq;wP@M(iGMST&)FyzOt6!>Kv z<>lI0BFwn=>2N~Og_bm>4E$wQ(i_?fVLbVyqfS!+)DFLY_B^xzHf=4GX=@7L$-@2n z+YQ>fx2}9ogkuin;qiyL z_FGU0+xOM$;wMoa_iijn0r|4;CfdGm@kIJIbt{*1pOHSG;o5u@UoqSh$1=JeAwK9} zpvCGL#0Ax77fpFn0S{6y3Dn;~-*J{eYC%9fM5?gzrTi{|no!4UPeh8rRVa8+3Hb>N zJ>FFD&MAV!QyU?eaS?3(dg_*%UkpFI(jNWDD1wwk_VqA{T97t$432#_20g@bD)qhn zP`xJ@o{8diyI)s2DzQ<}JvGTik~0QDHw?7YP<|Xs62#XeF$fo(lQ)j@G(+M$hW^co zW)Q#FuArmR1YOFlmL28jK6_jyEI%*=G!Et)XVq6hKa%{_y}B77nraZgNxK1FKjwc} zpghkuwbnO|sRi6h?}-;z)ep9Ml9XjeLJs zfNsKdwrZIw2#9k#iho)Tf6rRu91y31$o3kY6JXI`E>$^&Ii*6;-{^Na8TM}=3Mp)<-OS8ge;0L=}9d6 zFXm)H0*5}nTS+duw=>SO*cUkFs3ak)ODf~$j+ELSR+1FTG7gp9@=l7Otc(etp&TY( z&=s-MmO(-7N88Qh3drSZHXVy7f=7Q|Zv|K2AcwwJr|MTFH1HZvnpRap&6$zsfAcDV zRl%V8L_rM*o?MqW{;U+5Z52fQ8X z_`?v8E62qU>={uW^)S%{R|wLG@?ZyR&^8+cM}K4zt9zq4i>?#&1uowXul-r)%`T8M>-gX zuY;B7K4#VJkN=4k!K;w&*l+JjpzTF^9_= zUd-zpPfUpMma)yXVAJqbh<>Ks(U33nrM1{OeK|GA7Kd&$< z6~mmE3YVZF=9N;}i z&+>a!;PBImQBZCO>Xvi~dmY<>`^`xCjfpRyG<`;SjRpt%54!Fs2~_~!+H!3=YdMHp zyVp-$FN5H-?tPDcl>%eS={(=hsQ;kfNqNnp2#5;KNt&YX>q@jqpEBZ`)NJ9FtWkXg zXR1t2a}Mb-ht^N&BK@NJW8%l(P#j;XG4n#;UI~oxCyB2k-pAca(<|fAW#IFy@m9NO z3B29T6^|Uv0snA0y@&Sokg?uXKg8GsGx@egojM(`PhVn}Iot{73!{wxqIxu=9?$37 zh)XVg(!Y%kegER^&wRR)szH)VqVvOSa9<+{yblFJ;$u$u3AdJ-Ps2!gA1^0bHJX1!yU~xR|0l2JB z(uG?b2h}@w@LQkFL+EL@WQnSE*qPA`;by9ay(5OtnWP<17bq9c+EWAHJz07i(7=#s8A;BxGoOJ z`DUcd64CiwV^%GX>im6mgwY1f#Q^gnPZ^;E%sJ^g?(P%=Z}II~m3G8|#%vN-5l_Ws zBuwFO3J33n)t`EXl!95VaI9qB0GOKR|JleHhnoy6e9gz2pdm(%z_3~{VAV^0+n~UtRqO@`ck#;i*6mbF1-~CSw`Qr{4}!)RTEfH>gILJ zw!%t$QQE5uh&xJkIbHFv6*#mK3%>kp15J&(VG8XwIL^zg&@ z0LLzn`f!--xjF)V$LB6k6n=-QhnD;oYIi_vT#JK~cM)zL>=*{JZG&zB&1h2X0rdO| z-zg-f#@+SGt2M@6{-j!7sMP1N!I^#QRbId5#zHa#a+4zX zY5MrxN!vmw7Uq4u_`L|KOy?4O9g9(2@DwSX49crpnGI8rj``brCB0jU#c)1yE13IO zDGXjuIGA5jyYJAmFE%_OqmANXDgE5nlQTE7LOq@@H3}mvH|CMbH3*AG3O2 z@_rIHo@V%m=FbARgv6_4{0~q@>@I1n*$Qo}#o>FGI-sW1Y)J$0O}vPsX86za02yV5 zeb2RSDB-PpDSNITeA|_8UPAeL<09>iP{M9VwcS{x85x7lk(FO-(PN+w+U$Y8+vvXP z^)oWS!|ackN#t68L-zQ3v~>0{>{2&(c<&`LEWPR>>2o%G?7_#=+wWgdV;z}^hBw%0 zu(pLq>gCPU*l688%}E{>Oj3i7eT#w#`;RSaH7&-_K2A{9L5p>1MTD806UPee?z3O8 zMfpFD(ZTsy9fTVVpAJ9h1Wqc>QI73yc%k~a8i{W$L`Lk^N#c+#)%j;BLDTD|sh6alxE~e2Z zm$gR)Fs1v_v@O02m^j-u95@PqPHLC>Qr0FcxP%{SZES*cMLVCSAd2^xI^&L-w;+`H zp`0P%7r48rTW9+78@%`JT0Y%91P^)$IE=0#Ut+T-dfglS5OQ@*Z^L#N=?`RX8+ea^ zF4fn;q0v4NxO$wkO`{L|f@N&y_dCGaaKbgnyA{>1&1r5M_e0JjB!wH<1@lMzZilsa z*alOdX-GabHgb(Uyq$~)Q^ZDIE`MggUd76}JibVYwX2Tf6R1*S>1T~iwJfNyAME`e z(o`ogJKB}*hkv;-4!k72ujxz}nY!`!TbKEml%fUCNCA$1Piqpj6t*>mB!OP~ShhCD^Fiew}9q_jV zjy{|%DN09r@ZWsNC)X>W<6vM$L8BCO&b`IQb>;)#DPz4NRIgmxxp71MQO#m(w{vs@)4Mr+2W;$w9EKYBE-AYytYE$?1;*XB=Oih<}ZmNzHdsfFlRCwzI zrt|6>C)rEnKPq%jw%nW<6X*QsjUUE_u?NZuU1H$I445>h4A=xPcDlyA1rHufg!Nph z2fH9P6(vkCA<2X3{{3Pif4mMhyxy2xLH81qzuGWfd?RF=e*J6L-40X5GbCOI$RF$# z8NsAWB|1OFttfe$!90j@#7?IQQ6H_^2>-dqqg<&J*@~d%M^3zIZ6);I51hV%@?9Ax zpQ#tPM;ZtWr@Y`0Iko!=*U}TQM3fo z_Osd%6g#l&sDH&_3C)e0Fq7QAz5+}ZpJ}f)c7R9Lqfg4>jc}4rV1u&j3*f(hpT(0f z1-GV*KCYS_z^wV1$WvT@;SFwP@y(e(un_KeI|?Jgmo z-057Hrb_P9fMcgI-@r{G|7A{0JHbbwHeM9t#|>XM|0ROe*P0S?j`Cv`-EzCazKuX` z(ynn8_2*S3*7^&WTEXm2m_z>SMlh{te<<=4aWn)BYU5K|!RbGLpcdR;FN+DkXo8%S zzfrs=Ye7(J>XQ%Ra@uaIww%7M7HUkA&3>gNnFkAe$6GRu z&w{1Xq<7uf;zWFx8ZO^Ex-yLJC&?NQ z@2rvzAfs!QtSswp->nc?^Qi4AI#292 z9}F9?cL2xTH|HG^R{?9Ar@kV#1j63c>&8h3U{9d*Aq?H0v6ga=T}Fv98J%sCpcgb) zMIh;VOKKlPoX=~WZbiJIw%Uydfe|=2QhtnUZ5N~@;!gc z&HLAq-k+z%e0mRjUp0_mw_YdPD0Na}4*bm1v6-w`tJ$|Wz8Owz(lh!rtv@Fw?L@`; z9qseCcAwPn@0`Ob7b#UIxXxk6j2OJ%BywUh*SM1j)(5~^|5WB3a z7hR^tBuLFW_iD4zVlAJqh^xT}38v9&*hs$--y=@WYp zv+!YnEOHwp;_6REux-JJ&aO zd>HvE@c>U7A2z2Q89>!9g1z1$8jf2K!qWU=@oDW(Vdp(B|Gtzx3fAEzw_aVIL;wEt zJ=N2L;8z?zHF0qgINR)Mlci=r!HcFrqHi1;V_rDRluyA2BL|GcgA;pAWJ9caj{ysj zTBPn|r@%%+`V80FcY!5ui`iqA0Bc_EKXr`w2uQkrpR=OfM;v?9z8v`lLVlz93ZxQP z5hXXfQ7Q)(Ziu7s6g-bnSk7PEH4w+bXid4Ecp*+q94#|VsRU+pgX3GejyM)@`W>H3 z0V_sJ^wQ>b7#Buz+`98y#tf)kWvPyA83v=W!+M7EA0gu@O~;N&E3j9Q-l9bPaf3HU z8xDt45S0}?^4fP4`X*_bz07FPGNPs?07hq+`tbPFsL z#!B5xlut!SV=_HS+yc7SFvWK>TKpf*VL#*tp`S(wTN@I1cyAmJV_LnMVL>2({o3WN zV*FN`ny#wB};>VWGG{Y-G z!ZYE7X+W3dJao=&61J;PrFk(-g0NA2Gc<6vE_mwZfs^_fZ0gUSs|>~&d3hK$`D@HuMF>fh}~`rEB`*GCfAoxCd9VIO&{;<7(K zCC>`%e4whxZJ7jz8{P~}XXZeXR!nQubs4^KGXL1G!+~OM|HlsIAt3qn;kTD|1#H^~ z-Nieof$)?u<#Rpt(15W{S}nDKsOD`_rjB&Tw0D~<)Gq)okFyz~n~PaVBPI6J%wu(fZw(eK#YuyhzC)Zw;{luH5=^Td z8?wKTc-ov6tv*IyLD5@1#dT!|%3l0cpx)X+JX51teiqcnZF<93Lf-??t(XMi{c7l% z^dAV%s{_OA)e4cMCNN4|rHn&!&h*0Wo03}@05NA38(3o?KG2yarX2Yue3eeQAUOww za8k__@vANz%hNOS1Z-Sgl<5B?)xiH47EFQ9~bOPp2g_$9DjijVJd{iDBp$`kcdU zH3=hM8GPTonFhb`{_70Smf&k0QF-h90J1mO%GiSZ>xFZlcqPc*3b;e4`3PY^fzQMH@l7_W|pjxI#$W_DOEp&4eL>o-}*b4(L6X z78vj~7kGL1@R;UNe<)efv&FXr>d5|%(w7gR{CE(5*!l=8CtXF88R@Xx{j!iBY3$g8 zo2TOJci6F%dwtrK)~B(7cr(qo&L+UrJRF|&HA85br{AZfS>&5t&Dz6W3MHP=pD*4l z1;VjC6@1j!{`z$<;r4SrN`WBy^>6WA??SM?&@|@lwu3PtwNv3O6P@?!p zmG4O>bjrU{2|wrnCx^=)4P=^NKSXTe*-#tY)b8(bk!goV>VA*C&iw%2-fCw%G+)|0 zm2`rodkZXMWcf#w=fE3}>Mq;gS%_H3e|^t=5h&|iayBy2x@5#5=EM@zPPV`R2ieYK_ExSoY2GlIm4Qu}nhP0>7!eTpv5Edv#12kG7)Q(tV3L9EM5jp65CpwCpAJ+gHNzVPKA$u&)b?^=X{4f7b(zL=usH=c(l z&VTah(fz-GXE2LK(eUAZC`56)(CKgvZ9es7-`| ztO?$Ur)yylK0QJnTO9ya6t`4Z@VsEW*Xn%Chu~A7GiP!*ONd# zHq|TSX+K!=H)IYlqWM(yp{GY0UEsY!t06@<0FNcV-}-&F1Zb>JGS|MUgs_-R-N!;z zFtcOHm3gTfR;+Uz+m)Cxb9$Xk^+(h#vjc!N%DW{>T5PvTEsCIy6r|7Figm1|d?) zOOIUIL6&CZTGr?XRR6ZaG?#{epVyIL)M)~mt~Z8;nU2E8UP3Y|r!62mXZ7h;VIN$& zVxHZmH3F23ktZ`ABd)f2`QBr@QE1{|6iX``fb;j?$IBu8Mv?i$rpCD;kYd#*)63|9 zuvnsZiEL3&|D1TaPbw9B&#+(LC$xc6e6Q66kq_HizNGp+b$7Ur>*sN?^Mp&<`fMf{ zo^UtgJ~MSb@(27KPHy1o4i~zbxQRovfVO4nZ11agAXee2?%0QXx3YB7-Z44DiwWlo z(Zr50+b|F?ll%%EpGn$gpe%xIah143+D>4#-*_?D@(EaNLxqZeenGn9OnU4YF*YK< zmZz-x1FU+w{bdXWA*q@Fw=>eSAKaWeuZZgF@66q%11o%ht&uD$+R7HReY9R)L4F>t z&3wUCEWY41|M0W`(n-+TMF)9y48Z+PrLrN>5G3mX6DC*-nFJ?&idoyC>6%0aDV@*K8ENa%D6b}`wHY;;{!=Sb@Eqx93 zLvHtd9TogJ47|ks4hN$3;B3(KjdHLXzPr6ZBkswNkpJ{ECE})Z&@G)dzZMQp4lnC{ zMDxur(k)2nN{ZlKOttbOH21>i_;&eYXbdz}I(M^}M8dPD_j`v>J%U<)&(D~#8)}Of ze?1Q92Yaz^$Mmzupj+o#E!bw}HbS6tr&=A?5H+OV{ zSiQBQAAasYARt*9wf+VkYM!|NxxpP=ev{aKO>l%F-7k$RXdW+dQnfOA%K`c#luJz9 z{Gq#?LZDU74Sajtlf3A=>eS*JJmiNA86Iye=Bd^Aaegw{qQU_0aE z*0mo-a3h)aJPqDMuuFe_yeG^FWUWi-OM1G&J%=1m>ij6^u{0G_dVGPu>ApCArg;cn zoGY!ybwJZwDjxIGNWZc7erKJb2j(`^E*_YDghvD{>cbq(@O9|qV^O3_f2*GQS33^* zIQ&U3{PH0WNaZOc9)EoW`npBmMRFS8{$(|d5(7 zE;OfZafh{55nesZldBKi#RJVtb_?!CZLtlC^={Sj_c$vrmX>xY^@BP_nIh#T_b zxxpXguQXly2CodQGpD^Z!4X3<+|T02V$wc>$IVsetM3P)635zeYaHq9dB!4r7Jq}n z(=f&G^mXVnJAC&3k0ajP1HmPVc$ZeTS|EmzO(hI|9hJj&X3g_CcJ9}-%* zLCAr4NJ^L&jG4*U@a4GyohCyAU7Rn3?bMSK5xoU&x^W%jKu^#zdQlp)>kg;#dLzY= zPtltZArf6`cW`~HUBq5v4RphjTvD5J0FTm(Hu>w}lnYL8usH^X9iOoJqdDubFb1nn zCH}yjP?5c;`2;L~H*6iXJHkDcyy|Ub#DfU<{PZ5dCkW^HcDyEH7{W$-qb=JyA!){v z(+}0l7cyk#mx!leFFnX#ngIFI6)z?%PosWyh2~w-eboQx|H1WI0L>GaRE=*vj6wbQ zpToQ-a-gOs%0=E5`AoCE|M)}220GK(p6*3=!u*PirHgAFq+TpK?2f4gSKG;h7f+)> zWcain*A|+m^2SeWM{_U%TSfZh2Z-D7!_d0TBOdubG;Qjpv_XHfoq70X8<>wNr1re& zgfxO9c31h25J+D7j1cjcf7+@x86ZDo+-%D@OHdEgTZkA2?jX**-B@Lhk*=GnPvEOxj5EIZx;pQHIH3f1e%L#39sTR+&hG;%6Tc0vYx{%xK?1k_oEH?_ z%4ivvLw+N5Own1)-iTMa`&eBs9&*hr7^Un&z-x2&@^=*Halz`ea}4s~8`@7wOmRc} zOP-IzM!vAFa3=dc+J|x{=%=6d*1*}Sy#&6uad7=T*GkS`Q_%9mReFxkgH!zI%i~qw zL5u5x59Tun;s(=OWaNb)Pv%Q|6X{|JZJD(8BJ-dvRU`TosShYz*jo6&ln&2HeB}4Y zQ(*C}<#rXzOZfXI+k*PqOEAD6k`_R^!L4>qd;?y@7w=X*CVUUYx6x;WR~%A6Ab#>J z3GxZ?s23V39V&w6wEah-2X&zH^0>JATrT|MG8Sds2>O+OdaWHh!9T~!UqN;l)i=I= z`g^wq?1XmcMEq;Oy{B-%!?Xr!FdD-4>=vLIcGH`oXoqHbFHPmF3Me`-^ESI$4}U^R zWe$z=KqTtbIo*diU@;8EzoL@{!qtx^%`4JDw!ZSoP3c51Zp&{*ST0H#Eiau#ql!L86cE&xmgJE&soXmsEA8ZT@QX0q~Lg-|H10A;& zq&?eeXVEeQN_wYH23ncW@7q(KMp1zLGIK*0#zH}-$4Ja)#1r(4Z{u9L>|itQrcrLI zB^*<|V#?I71oQ#K+-Dw1fnfUIT{2NA;2#lPlWBo}pKHduPw#Zz#`?{+7=%_Ru;P4o zfrR!>_}e5XxyXk6?-oAfPVA+=4*gRX*9hIS7O| zoD0}bhJcy+DNVYd1eo2DSbXRi4s6+Pc%mkP;V?r%-jY8+3jh z_{s#xP$U2SG2=8DFB=%noT~^Fdxq-i$!QKjh9G-$jJwEA4{EwIopOIXg*FEsxxU6n zpvFfZ+c)|gXt{2gEdN1sq+eBpxQzTk{41-~?vw{a+?P$h`YsS|m#&>OS4TdF>O!3d zZww$9x+Q~$ZGqjg!Y1PeTIYzN(&=yw2+_KA%-BR0e3$yFqt&H>OF~5T7$yyt!&9U8 z^Dz+lY`cl6%fN>ECD&v6q8Pa`Ie~2Tb*%I5W14qzQrH6jO4UI0WlXInK<+_f25cHU zsR=Zr!>-@_#{I{x9CRNr*&1fYK=^rrzw1_E@Fa@-%qyqops@OW&4xM&Xx=gAU;mU0 zrmG>NnJdZQbh-OeA@XN1C2+jBt!#;WU>3`tpEH8_YwvH|yqyY}bk##cNtvK^{_MCl znsXjo3d~%p4uN)7$-9eVNT)X-eLNM--90ahbtFUchzS;asX*hS} zw#+6F&j!&MXd)k;^je$>?*}M}R&Z<;9Rqwx<`~?K1$gS9<;5(Hbm;%I;Wn$`wc(gX zZh9Rwe&a5p*NXuT%Ddjx=TID|QeYI3TL>@N>+lR4;vhydu26J&y}!2!=--k{m_pQP8MBARET&2Uq=DZqaw5{hSySzr7p*^&Z0{1Mk8> z{;q7mwTI!LlzK!=*Bc4!=}QO4H6tLhOC%AO8Vg5fh}gv@qacn_XmT*p30z;(h6Rh5 zK)06jAgZn9@lsZR2jn}YY!d(nLO*25o^S6xGz=3FLw{fT6&yp{uskjyIjT4 z9}8e=nv%ljEZ8YsKqH-KzToDGKw^w=6kmr#vEOBbSD$L&eYlKUo;MlS8p1D-A>n zm!6CKkcM2m4udxZh(maRY&QSNANcuQX4LN#D;9ay-~QHDaqI_K+3(#R1+3hr=9O>e zT}&jy@LnR12FB4q|E+Jy0P}cxv0J%42Pp3t=P}u&z$)`4_w=!3=+Y)4EE{LX9{$Rc zWa8(>9=sfMHgiHgX7mBHhpRuqk?ihbH#%=@gSs2z8iIjG;8MroelSq8rj@*4jRW1= zH+C9>oj}y;*g)BXWT-AvT5=doh7XtQ4QyuZL7w5k9OJJ?Fzab&S|^tZepSj%+@9%> zt8v$`eo?d)#&3&p|WE=xz(@H;qc`z-w_qy&5{iC5I}5}|2eqCw;A4|rqmme7BC z4a{>dFy}n%1-<>v!>IZ%kX}dXhY3!>+6!~iVsy`IH=Jh=acBX&8-X>Mcp31!+R@`4 zyB7%6+$6m8BoGV*Uc4cDm;e;#zBJC5hCpBD!lSufw0<6ez{nPh=FHmDS=ZAbg)fHZ zoKXlc_~jc}sK14MUiKVqm0*zXk*4KSj|Oh>O460VD9GYV?V(c*g4iE;tHj45;9(`4 zn_@%x<L|Fz06EC>xtm-S*40rED6?jZ>e}mCIOdO z(5^bMJ7g&tGZoj_0~cO}&-UI!P+nF%OT20WjL!u>1w4KZ-4ji&%yOcvc$A=Dm>AvE=<^PRu0wIFxX@6zTkN61b2rxP*Ar{@dN0$wU)WIL#M@5V!4g0*m@XeO9D z#>r^qxx=3+E+SJ@^;OuWwGg1Ogjp3Ooukcmk)sJPG>twqMb#ZSa3&a$Pz!C{o`cQyq`99!GVxLoulmho=TDY-V z0SxSa7fKf|f%7*=FKHs3r+vZmOo{0d#KV}WpO}3CImxtg4T-ieTJ!zh$iY3(;#OT? zl)V1$dC4UCAuC>79T*(=jY4ygPmq+vlUNl`IOfNk%WvNgBSR5|((g&J;TQE8Kjk?w zdLdEYog)EE+#s3uBc33}$mT25oP8Pl*5ibmS{A_`JsSN9Sq1P`+rlDuxDplW3a3J+7rbg|$aedB!9%VX~%jPWN0`uv1OljhPYT*w943W;g*8mZ&-( zw=;1ZYku(Q@b1ZJNZq=%v`1A5_nq#_EX74aD!<2&+4MRL+0t|QGRy)6H-FV})Ng!F zGyZcBONNtf)M{#1gTQewPGf2)5IjD2ZCB5S!k@0#jq0s9_|&OoOZ6iM<}~yk%ZH{R ze$)<`=Z_4CyL|kRUN#6iFB~_|Gm8NG*uurkrZ6CCH|uX|FMyr*g$uf9KAJ?t)kTr0 z6&PluJ``S$14h#*$0A2m-;BW{jLVM)o6LE3b+ri4E-Sr4*&YRj17``SlcL~VT6$j+ z!+W5O2&*7%LW3Te$Fjmr3lXL@!> zE5hUj2=rQvw*^@O;r$cc^e7%2VdgLyfAJC`ovzB-Cndv9%I=c6F`5H#SvsvYR|+$i z-enQQlp`IYF7Fs&HMBkxt-+r-b|DnUM*W2y3qH>)Qe;&Mn&;`YBWRnzgEs8J zxmzWW=K5BX@OvC|_i9IOu+d}lp(`_HFOl9SwOXDuiUh0CkVi+wFOa|gKqN`|7$&?W zgVTMz4rC5*RHSGYK(B%I44y#}C~L`kZir36f%8A4&OTH}t;r@GMLt2IahWSVBk%_* zwg|b#fRBb`lw#xqNNwhSx~7*39&Wd5Wj6gG=QbM!i@FcI>UTCci|WP|nMJY^D6jNO zCtl1Ic7Z_MtF?P9Zos?As@X6U4ji{+zOpq2pt+w)p|SZeP_DkzX!WuZ9x|>o{zdn# zR37ClV|qBOQ7X75nrFk6s1hAc#Y_nIJPGEVeUhnk<3PWc!gYN!74+JD63Dud zPVU3$J<03<_~oNBgC7wmy^hrjFfLe+Y1(Cxl3bb`_mF8Jg< zx0q;zZ|)u!=;i9cfbgEFU~MzhzZTodGedJ^v@ajA9@IjT#|1b3h#EM<{XD1=_3;Se zzsmX{pMt!Z$mF2Fa^PR~f2o=52K6qq{JcF@@bI)x(^0M^syCma#QXCKq>!ibeuFL0 z1O~t8JJJPxHr|dbRy0>D=l%Q~Z7OIK__p!MAos?I<$#gL(~y>Uc-6!eapAw|q*hoS z$2J9YY~0*Xoi9cq?nYV>oW9hhzx1#izKnli8Suyey(jk0DNs;%tJ<2e?t1 z9&EIn3Sw%9=09({K;(_&saKY7pstroPV$^RY@d{Db^hxJpUml>|39+cJ08pM{r?XM z86h%Ch>Q@~qmCYw_RvAUIlkC0s-h1!8S4LL(o$vSOlh5Pv{rz=5 zuDjdaeIMs_o#$~LC~ zc&+VLs7xj#%$BjNj-^5565G9}>aGy1XxZ3g?+six)=Tnsy@8PY^WQ@%dyo#C-#kO% z1_S8~{>y*sVVJ(&N)grb5~(ByQD4o4twbE{Sj5LzasAUgFH{H5((d~bpQwcM_JOK7 zL1j?w(8ofFI}Tlx6QcMmsLzBfBv#57=@Ds<-u(657QSlCDpxtU0&>b?75|unSjUaa zLxVPm*L>V>n9vwr)mzo8Jx_p?53w$?S5V!e+NDfk(_+#7 zeY@Q{fvp?rF9+^u+&=8a(bh%m-pCJ^|i_E!?{BcTcBRiUAd6_}bb;_-J| zfKa{9YpEhjD7_@C6}6#^xC)m`6Ixw>f#(`m=3N`0h5Z1x@lrTv3*|NKnP6ncpCLQ5EzMpN z35B6x{05H1C=j$HStL}*gJXiYY&6w5&{UdDop!MZ5=HLrYE^uIf{Y$hW*Q%O0D-AD zi#~yj3Et@%eNW&~IejYRwjEsaI*Ge`=ngTZdOOT_JK(mFOkt?g2t4?m`?^_V9@262 zn>P%zKuWA$J)C10+5qdBW^H2L z@4$A7$og_=K1_&q(GMg=f*j4K%8a+=@Zsv)A5|!?pk05nn&)OL5Em$})S~rt z+gK==*FB$dDJX?9gy*-F=DUk2rUmfQQo`Eakr@=Kj?HK>Ah*F;-3NS?`M zR+f&16RTI3_n&q^{!Ut|zjrO9{dh=WUN;4X1$kv|W?hiGW^&@bTMTfPT`Yh0-2-l$ z?S>6k1^}yU!_fNt8<0zwUWqQ&M;v8p3bNNeZB&L%8I zgSlGMP#A9->`?gV_-^L`jf$~b2y7VUWf`c~z__N1 zA;Gm8jO`Y2G+4c$VWPlN?}9tXXl*yWY;*-}NtF)fGcGV`=4M5l?+&b7QnCkasBh7M z@yet5pAbsCv|{}@2DG;J^#w#w|Bo0~SfqXo@P1P$YJMCF#Z>g_^SjZoPOtrlPcR$i zJU(uRT#bd4|H8><|2h*4Nl1WN!a8NBDzx%Nh z!hF)p`B(hm*f_D9Mnoj|E}V{SL3&L!uI)mN6<%r;XMou2HhI@$#3u%tV&^B^D(h&#snc8k;M_NTgaKv!nebh%BZ112Ez`Y3V1XMS; zaEsssj!#7=D~c0vTDw2zF9Hsd)netBsBfx42P7p6AcDX9vVW*QsGm>@cK1cx?`n#^ ztDc__*Fv2%PTwC`jj!|S-}8bC{Z~{&zb}Gt0D*ji!f#mUHyLrHTZ3EY`3@Wk>mjm! zPyCAj;=;T*P85d-rS`lr>Wc0t&%C6n74u{XeCUj&Nn(b8PsHz#W@ii}Zus0=wQ{L-=^AfAEYOlyPsQMP2oPYqzxpNPNA4Nah1vFXc~NjssENB>kIrREmqLh*fqVUq&mUuvfci<9F`gCo6E(mi6H>BM z5&*ZHf_}Z<_Xf9X+*WT=ona_d;zJ>tr)u^j(#m`nkejtg7;dvg_3D$>dmS&p_51Yf zPO2GD#XdWIi#7-1U+=vY7(*PES5jw~hBhH+249o_@tCV=1g8p7zNGh)2J0k>yVx*1 zBMRp%fYFqXrI92RKyZvv)ywr0yx7S4(af9x;rAcE_>T0j12uRHWE}#)y+(&EsA?A0 zr%pB28LfhQKSFOcXQ4np9TVEp#GF?h#8t;*2a3(p8O5K^fZ zvIgCJBAMGjo0h6YM6enZGqBsQhW~FKE(cEw6%M0)^szdX1KLlC-J=IMT`fS$ON)fH z8TARs6NP&ZWP!b6yod>RDv+P!G`tu685W5v2z%+jLc<;Ui$IDvo+&he4_l)lHBnpk zzATEzngmN$Rm6c@wbQ*)+$#7giTza=N`U<`T*7CUQC%V7j^`T`zkFD)&)&o84hn4i zA>l}u@y=~4UP==Su&pQPdU?eTPBus17SlHc}4VFQ(v4?b=!eq zk{5#-`M6lb;U=Zir)lu|{F*jJs~TiZ;wp&UPKI@wWBR>v6|iLI%XA$t2Z$%#&rUoK zhj9DXKN8;}eGZf3nfV{T14F@XrzoL65Vb5gPkf$4>uXiU@0vNpqi)JQ#ajnw1zi$G z!$)8xw~dVHDbl%?_fI^O?}u=)FEmCcJHd9!z58cH8$1-SQ<@5^hy3AW+CQ{NuZ`%H z9xs^>NMpoop6n>U{6X@r5SasTHjkceMREBHrseS}+^=Cz56ie@lLgcg?u-iQC_jE1 zi<_Itfz->(6;BbzM!{Xt+}<+<)PfmUX?qX{|IFxhc{aqaVdOX|8j=E0CAF^JsBd!U zH1BH9VkEd+oDn0sm|aW|}%MF`!rv=1L)Qr?Yx11NH6Ov@jZFY=8#`ne3t2 z7<49$ZWG;JMd!Ty36`L3m`JxOqL-1zPi@RaSuPCy? zxrI%@%V+y#P0CYHlfE8QlGqG%=@WQmMgyQqeLCWyT{m3aIsb|7Y8&Xiso7?BuLDNC zZ#HH|{_v%P%|MRP4cIAyDoYxiL4(x>6C8Df&w-R@%P+kLk}p_5+Jrf{-EN}hMLffZ zS^Ijot7Y(P+Al;O?Sq<+-$%!==fL}0&)v=wpghw}!5qVI#7mL1n_%!y1ET;_azl52 zAn|zkemye;-bcwUyzp>`s)p6LPH6|Axo70RvgH7R8+sBsCRX5kTIEOH5Yi`*F)}b} zdI=4@xsDyYW#IMn`;rQKIlQptK*A)0ota~v$MhDw;PO+s~rM)?!GHK^3D-Q?_^0WFH| z1V6V0s7^bi$~8sjaoj$!Yb2=uMu$1i`x)Z(@x6{Fq)7uUy{HbKZN!m0qhtE&b2w-- zi?MVGCc-j!+;JBE0tMgib8}xFLb~59biw4~5J=3()@IWNO#>1)K3NSwdRk?O`|VEX zuQm@25v+hRIsbLxRm7L(I#m`Z<_#snNipp54$y~R$*$Aq0wuNg9b;IJI%bk3!2$7cZ1rGhj2!$@zcPWG4rK{BAyv@RGz&)L1+ z&o=}+q3rQk4O!+moW_$p*&o#p2N%BnXgDzd8&q)@K8%b)N@uN2`-grgVXOUUg6yaH zGtlL30Q!i1MSV@ReE1=mcTz+w87vM~8oXHIA;Vo)thwR~Or5rlij3`r*WH3agqdxy zInEy3bQ0-Om5(w!l&OQ=dl6~mgC$^Sl{Q@-jMh=#NO?XxFX(mOCG*7%gnxE4`ETM5 zakjgiYna2|fuGJy$_AqyJkt$}stk07lO!#T2lwN_cp-Fm$2Jm*T}nqA9+I0#FfiU)#TH(LKK56E{CsXPck=UCb3@O1(gSh}FiX(|5>s1!oq{bDqM;^cu0 zs^T{wMA08=`q>mzDkRgJ$zOvNtLol-&qKIIjh`&9hy2Mvd08)#REW0^?VJ!n+zBV=CeO zl3&y7Q&q5xN7)b{SP5r7eXxIVB@;3V3GN>!b%E7jt}l5Kq44fR0j$_~0S~SV*JAvq zBl`tA-gsDHZvm*({*)Uz(79_*FA$yz_4XsT-7ZE$TKrXUCH63 zatnmm6YmXwwE2Q>(&rEXM_XWg({GnbU`DvJV_)dH5@ZJOlC!DrIl7PX zf1FVEv4l1)9aqXkD_D6E`HAa#0(^X(ycNh64nymXvUQu0fM*~gu!;7SllrIk@X>SY z+oDo><9;sen6=!s(kq0xp~wg!#BuRV*KT`;bc?ul6y6h3{sdVnUAMi?C`geyb`~!r z2FRxLKdaeALg?EE_XAABAf*2jJ?(ff#OL(oXT0@?_4mS>22cEte&?^Qmaev7J816a zP_b-w115)fO&*~DD3=hEkFfIrYqcsTnh%cfChCD%D~S!NM?Q7y(mpeL29$Qux7mfZM0YYMs%&%OyS>BHFu+aMLd0Vr7X0_FFGK|kSw--4<6SSTdW8z;i4XqAaq%SbM zkND>vsyoo!TT(WudJC^6Zp4be_5(N55$g0YPk0qg{sz#s*TVFj3{{l3x#u4hzw{Lj zbXb1fqKt)Yu2m23vypJ391|jN`~s`J{(an@pAmO)$U(_26oS_Rn=T=}!l|5+JjVG? z;BHl_D)HhYY=}-4JzDevx@oSl8KgtdJkux4aqu4gX4Nx$hP;J4!(}>&>gG_bcS9xq zra92|4w*0$zk$|UePl$qdJyCEei-XBhNZ%FYk^Kr@IMwFAbiys{#%Ap=neJ(hhZe) z9uW2Wej- z(V%!RL-lr7+?ES0RQsKt$K2sdL;8naFK1XufsRfZ@1yT=#ldwO!5X0`;e&zllaC<# zNZp*`mkk)VR+b=YF&I{PjM4X)f)cMw?QFRjtn-{*XYw&YdT8u;M#mi>Vf;^NVx1MJ z{#-@`K6{XSN8=qw>I!1tb``TRXCOTE%8NAj21n9%T#7zq=NtY@g*E0!BiG>aZRQRFW=-p(&zo8=vI^*Ng_iO)g;wP69o7^h61_XbG80G_UA6=-rk;AS zXk+l85B#IIX9dOY)ab9}+rlkdA=b=nCm@UBNv6DM1t3m#V^hrmQ9NlgYk@q(Ipo7izUP2uno%&XR6gj<2ABjPF3~q->)78VSx0~O z?{ogW@87kb@cUEucmD71^t6P6`%(SG|NHs>uK&HCYc1PwlOzZAH4HxTlg&l^xH=;9 z(G1{z!|xiHlL^WvthY(VvLHk7lqcVX+@le<&TDLoB_DRRI|w}=7J%`+PlVDIg}{4n zc0oKW7fPh4US*FKLD$)XoOabxq_;4`eygYias2MNeAp}m`oA)_6Y~D=ed)L-%g>_t z2jA_l((gi$p80l4s2fSf(RI+vn?_nRIiPc0f1mwf){(u~U!4=rHp_YY-#unE4+~k*O`t4j_e^QIN!DRtOE8_54Dti%Rrg3EIlBr@@V8gpLC}arx4ye zxuB&Hk#{uCwMcMh8o{Ig;4 znt%9^cpcb~%=+KBZXQ@NKdO#0%Rd?$a|ASXP=CTdyQ%j}k8$x9!pD@Y9=@^y z`1kMs?Dy|?ul?oIQL(Fl%qLk1i!;;oc4%^c-G*)?bEhGAg0bMtNmLAZ@2>6 zxUROqKl?YQRQ>Rq$b|mcbz$L^(j$9Qep&2Ve4GQH21#@@m-66MBth{XDa4~xu@uiB zK|F?5xig*h#fYa(PwY9A0~>u-4w5JiIK)evEoa z4)+C4aXt*bvm^;@MckH^aWaGPN~A~W@f6ZK;3-D&%WvCvUoX}6Lx)%Q5Ywa3L)TOBeW&?t2s(LD6 zTri4fe!UTN%%9(ThvMZThn_cye7a#(_4u_9gq`q#Sb~q{b|E^4(b)V%JSBr!T}lD% z|C@()Co-p<_$&z3WC}RJhwk&Pk+Z*eih$j-?2_~KEC}oI9;I)~h1o`0dSU6;(VvN zfc)6px+!%Byw>CQUVGdCn6aSDX)DwRaT2v&Qr5!ZC>_4?%R2DOQ>75quK}O;lVZl& z)lk`$A6hqEab#~M?d%!9sZL;Fh?ZBoTnP~}m-Bvj)I(_a?3l(*2Smx0kt$a89@#e` z-p=S3Q8%o;e$b^7k2qXDsi*Ra3y$n;po@818=|^j!tMs?zgeKm?1B3fD*=I@^|ldc z-T!CzMX>^^u(eze{mfYYygM7D!@uTql$OGsw&xbhpK`%tny2#BPsIBQ3jd7Lnhy@o zX+P$w=0Y>`9}aPiJb0dAY^>o_08W{!^?K+zWPgcsXrNsH&)xG{?JpM|jgKtLs^U{h z!TxwCcL?IkPW&l23^`kKWY4d`9I+`Mn_;JI``k~1CU{W7d*^OZFTgdMF%a*8?*$Tk zaajeZZdT?4?Uf#AqiNobUTy=`_u6$lAKM__Iej)TxDkAes5RFG8z2IEV&(Ix8n|qQ zg~dyXf%`J??N#amkatljuQTd{<&F=lG5h_X@nx>{N!9?o&8k!IIjjbKmK3skcCC=- zUQ1u6*$xu4b3%0G?Lb+R$U!iKIGdY`1Y*y+z-_pQB2Tvp7Ej{{{M5|{{A+nS=fm@k z?EP;(So>YH=Wr__l4Cz7lm+eE|7+*&fns(;{%pVsZ|+i&=K@_so|XrF&XJw5^t8OP z+(Ot^@oexZ%!B5YYahe%b79k^^Oa^7io-2G9m#SmgrXj%=e!ApM|PKxBpc&D%tv)1 zk;5}Xs9)&H zWnY#WaEv&ecuckgJivRLgD)SXecZwmpAW*BgUwMJ8N^L290`()8HNUi1xZ=?QHTwY zKIOAN2orumhJ*^u;HSp#ele*7MkLZLPav+`9E&24;NxD<{`FlnG0J6Wchr%fL2LeXfb12Hu-=f3!s0GodFB#kk#bV8-dvE*on$ zXg?#8S<6S9JF5hVth0siO%=Cxjiwl=&Gh3eeM*k5u}g2R4sVql**Vh-A0atQ;h&wK zY1tlVA$^O{2R9>bpXdPn>lB~(>&s!x^y+n2x^~nDqMA4QyB7I>S8`WH8;)LglrrAR zLw!5{>^cx{7PU*#5AySb=Sd^_ftfwSYI$h@G`o+#rXlMB!qZMy`sXI$MI?FfS_I-p zd472y^{yRWUE?P4IxGY?E`i~MFa40_pz#%txC5%LHe40js)e4$GkXU-D6W@xkt*T< z?H|U2tX;b!a8@iNc<;^xoDa|7_(V4f30U0Uz`e<%YqE~(n~Yp@uo205`qhnP_`uJ8 z-r@Wdkh)n|mSzk=__NA62E@T^QgXuM_|yqBeuOS~-aT+nzCA{ba`0$=ZeYdL2HnUX zKBd)B+EoceFH~zkC^Ufdn@W<^8(Lgm>4eXcsh=Jc z*8!JDJ6kQ{-T5$?dXo(`eu0!11; zj+E&RID4F!>yc+SJWIUNz~nOkn}&;|lxD4PUag37`gS>(c*VBz;33YA3Y|3RU>>Y? z%Sk6aD1fLcQv35rkIIK*G3Y0EF0c>NkFu|qz;q$!ll=X15IgfuMqRxE_Jbs*UGd5w zeV_J^|MznEd%5EAJ)Uyl`L94h1+<<>P3bBrI~qOJmJj!`(eu;1D;M;x3>-gOF}Z!M zgn#ptxE5#V=~@W?#@8;y4R@1EfV}nFcGXNfJQJV7)*jLj&A(8atmb570Z@bw85G9Drd5M#3?N~7v>Yz3Rir85LM%p0ipP! z=da;*D6`#`Ek=EivlsDv zR?nY!JPBie%lNcyw;|QxPH3RbJVcuiJMScKz>e~9E@H0V&~<&Gw!U>2mA+v2a_?iK)>j*AIvEK?Y+cD*dgBlP14c!^h;$hD9mY7iu&%a zx_u}4OfU@Fsmq^TAN2rXGbgcJcsJk$UU6(mLv;|33Sv#W7C=hvcS_K}EOg{AsLj3F zff2e#q=b7ru=C2XLU48;m~fJESMyUYLao0YG~G@K8YNf5?8~z! zF8MS<6TU*XQ8}1suw_D@2*&I6AQhC|UpI4qD+2?rq~tWDv(e9` zJHXCc&zgE?vJLj%nUcrd^+VVPP7G8|6)+cHfsTgk&wxLpC9Y|o!xMtz_E z=C#ngI*xR)9E{q8d(Y1yuK)SwcSMM%dM&bZUpu_jD3p^@ze)HOd>@ zH(ey31u0=&J*|)h_}Cg0sf+AZ=;RWci1wYof$vH}Ur)f|o0e#SljylVZK*r8(FqOH z#Cl3LwP5FZcemG}3Z(g&8WR!sY&qzU=$oAZ@Gt4SHt>81K1h7xxNo8xo^`hPT|;wBaP27$s*F~dZm z8_v_QC0TJ*0zQRAq>WS)v}71RIF``@AE$^>1`(|fH?lswwCD!;x-+%gV<^dF%X6-1 zy&k%GLuBhI>OsGe?Xy~UHS`K>f7(6Ffb{q6n60X<;*PbQ)baT`M4o~~+w4l`3Ob(0k+c~gEjEIYck_Wz6WQo z6R&l-{RVd-Y{>S+A&8SETxv%C);auNT^|wephkl}cL* zTmCR$FS8EBq_+HmPPRe6>w15oe?}OMg5_e0{d8S)@rjI&i324H}ujOYffsPKfZG6%u5a_p= zw$A|N>lql+D|=daA^^2_J8=4yqJVjr9Pf5fnCsE#I%gVI0x#o8cNlD<3KV? z5}Z*n0OH)5bhyf$;H>pWLF)T3_@}>YI$JvcaJyj9YjYfaRSB_as4oJeIeU%C%Rj(T z`k=bL^BBfDBkGl7(FJ!l{5-Srdw_rVERV0)5ZvoG4;5k^0^Iti9woj2MLe4Z?^17Zm7&bKeLLt$LdryvouN^rCMu9 zPx)rI^4KhFyZQ-NRxg0T6_(V@YlgOW81-INp!%V>SqN?_wJ!C#J!9DSx-_*$&X6NSJ%x z2IO(wTv*+~#rzgnzhCqE18S;cba#n*;M_NN#pP@LaEg3RbFa4#%;!}k!Yqd&>kkmw zPq#tL9s2nv&8?88`8-dmyARxI#{H!y+t9i7$@8mW+;ZmS6e{#vArvjo# zd6mzkSAqUqx7~Z3S|Ir(z4y4G0hB6_aeIU{fcgbVXXke{D1V#kw|KS|{%ngEza(mh z^Q&9_3COIQ*Cs-yixQy8`_-2rb9y&}_n7UfCVrn-z5 z0XITNcxZY7bS~4gDFluHDjIYCIx+@0UeX@>>m9K8S6%9k$21fgjt`FiMf1h`pNPT` zYztZbIu$V1F2TGi=a5{<(=-+6~k#Oxp`9dkuwbUXIt!8WV zy;KI;Y$y8VE6PE4DOJ!Rya#S^kVjB&l|$m2x0FPv4yj>fG{x4x6a-6IiOWXHA%t5$ ztMeh!7iqpRdT{?AkF*l#vueHckiYpPyiC>BxDqmle6ICNl%l>@)15U+S3fu z*CENyJqory?HYGcpMvPu1=DV&A?RQfXm>&W3g<;(Clz$w5}*{um;X@*caKjW|2WqH zmlBsm7;DkF;j;JBjpiy4e4ttU@IUvxf#`=TCFO8~L0IX}y$WEPJ&9k8bhUoI=4Vg; zTm$|stB#RQ4XBS#e=GDyHH0|COcKUaL%+VNUHqd4Sh=O?pCZ=`cRD^kYPsA5_Z4U* z##F1J@Yw50r_?I2*ZlH~RK6PVCscc^QJsYvg+0^uu}aV-)LSuhLp=0HwtLUo%YlQx zo;6DaaqE&ue`ulSv+_ai&9tYLps&#*W5-+rq~EMA59C(EyTdn<%BEG28Fe8j_e2F4 z^}KIOAFqZ#@z;C3zcoSw+la3Pc`IZ;PB9VX>40autj8*cJ0Sc&c!h}$;B?87|zi>HreE}wA%B@QI7J!CtqUYHq)F(2EZ?ZtT z33uC1QnAF&g3c`}qL`s$*hY`wa@mzp*crO}h?iy*2G1W0JpO$S7B5O@Oa#pT@427? z{HF}*8lV;O3CZkhODaJ@@#2|0ff~d~AbUCKSp{PjOCf9JUZ@U4TKmRY{XYq z!*D1;Y63?MP+TRts)^#k^SXcVuB^7gQjUev7qmWH=Ev(Mvqy1cJ8GLVxvl6tl%CA> zs~()(GKj<9H-O$H?YEa`&^eO3&cYD&ul%(Y#7#)5gHD@eLBrY_m|07F^Es3*rd6&WJ|poT&hrfvd)El`0XJ=G*wvN(E@D`Ajek)dB~N zSISslB|Nw;p&VyW0S+Z1De=73;D08M*1;C>fnUzt@E&OaZ3_b9XSX__=Z)^TE1}=iTt3=IH$0e9=w>`6(yb4LlQmvGq zmZ8OapOt296|@*%#8!X#1zCPn4JD@zLHn`(S}|G=LmvCsjh~qVduz_xh6_u;B_qiD z)4K~&?^&onQEWsyBrJl=^G(23FuCdfw+3$4*#5{5sfFCyuk%z(^-wX^-0~XvrvlpY zcaGIIAQ{`^8RD#M5G|oxNLSDf)X`})t`C~wZ+``m;&3ZSohv4rnrMJ1DkpYF_gWas zAbB43tqR8V@gx=f${~K|W`fpGIf$J8N<$f21}!;M-R&hPj>=r|@*xL0pC0=-7ILZ* zc6{wsc|>X;mws*80r?G_d^xm~G)O1l*xp$h`Fcp+Z@nG+qzc##OLOc@Y9P{Pyi?V* z2EttC6njxU{i}JY#p+1Jna$@^dS2WI_TO}$h4K!9Rm9w15o{7_*eeRPl_y~5!a+eZ zc_$2Mvg-Q1X#w}NFm5jPE+D&Cdas9Q8Pa~8cdcgH1R|S{ozgpN;C1fG9lfAEFw!u1 zoGAMj)a`r3bt*c*&MxEiDA4 zti+1iU<639GQBPkfB(f-1wDu2_E(7+N9(~(D5U!Ma0578>3h{ag>*@!l=>Hbmcy{- z_3JIo)vzZzn@8Q;4EB0I=AF>}IdZ!;E$d1(#NLP}+qhi`vu4MH^`IQ}Wq;-T_OJq& z{F8qv7a+ZnH=HVZvMq3xb?53IwEj2+S(n(%HiDf8KC2{6Erh4$oG(LhHmFV-<`k-h zmF@k2N$Fa6bH0>i!NGz9B(6}p5G<4|8|#X!X| zf%sWZcH1}B;JHy77>X9%{aB}$aEn&Isk-Ej7aZm@rBJr=h;0Zw>@iG!+m zSfN4I9^qR&jLqf)wJ+MgCH{t9m$zL8dH1N}PDQ(j=d^B~_wzTTWnY+`=-!8c7X6p} zX@60_tPDAa)INmH%<@jkwuAK3*_K1OaoGF1@a@XSNvIIpn<^&hgkLMnTN2?N(CAsJ z?@7}R_FfjJaqPRGAh`U2YcblVR$di%yl;jdm-9-5iK^g9#An=lnpF^{5MiE1R1I$0 z$A{{D>!8do7^czl`u6&MrdMejMCi9@KP0b)lQqGYM)cc3YxhpZW>6zs`KC!pGFcDS znu1;9Kbk-}vw`Gk0OI|9)cGol^drW?x@_$eI^l)UW@xl;Gc=u0Y|IJjg7P8J_Hf@- za7Als)^`d{WaTUnc^trjl@bf*@E_o%dcLI4F$hTJ_ z=OJYN#=FaTNarL+5a&4Q5_D(Sv3osT13ObqzCQL@=-+Dolr*sh7E(PE?Qf4^1T>aq zXUF#duWsV=TQ364`EiSZHZc))eBoXOr4b&cWLbE}p6VF(t^SSmPd`p9C+meie$f;R z|Ckpp9bEv;!r+a;=ZnzHWgxmDxeZUZF)MniRfupcl)F2>0J3`KeNSRKA$rm)KjUB& z*vB$ln3>UjVc1T=McWBf;nJpylAWM#*7SrC<>M|TZOp2TBmEB?F2_Z&HW2n5@^#Qd zTs-rcOSXztF!ikv7k{b&rU;J-JAdwlmke_}rC0la!d-n!u(=bYnA5iYjP;;;nx97b zlf9rNJio|pG5`tw&n6=ChLFB|_T3fYKA0q>ZEd;N13jmbFKDohLl1je-&?M2(21dM zZD5`PBKDsdj$dXVr}S*Lb_Wio*k8G)WPyvNv5Ba^wK(}xt; zv_i{o9M$ufCy)AkNZ&~;mRE?EvX%v7_>d|d*&(+z2 z(?5Gah2;Jq&-G5Yk`XHTfTsn-J*Ku!mN%evA!(qk&J_4bmBd`7KZIj%LI~!)5P!MhH{VnB9bo=d`Nt@I7dW*~RPAVOLIc^gc?ndP z{q^*|-`$Hin957FswwsZaFMiI-qgauMo2%;cATKbTwNmVUTqU#6BoXTmDLhpUs^sc z%|)HYvhC{*whgGUQ6EwT@nA;m(ZOBG@~&Gh;L@*BRp-De z33nnGvoByw4E{}4Go6rG$2q*_Fb`xMyVuAcEP@tQsRp^I>(m6nO<+&Dyw1r*P{oC5wN+EuCKK#xXVf z1;2JuPpPE7S74zUFN_)B#v?4rZ#J<$i}unpOJOL)r6*uwYw zB6vuz@&pI#TVp%bSxtdGGNH<3 zrKiC979S*YT;73uaw|-^5C4EJE{=&l;@~8dES<=fp}|PDf?wP@O^scA=fy{=cMi)~ zA9`Dubq*ViI$m!|bPkhV`rFH`$BUiM&K^lV&x#e#CVot2WXEh591Z^rFk^{#sC;rm zsW3;a#(JH!3z%#4JP*y*2+{+4hHnFNaA$!wUKH^th-J$7@aYDjsGVV#s%sEjjP8~Z z#*M<6WZiKE7Gms1a^l6M$aNH~upD)#BgEX_mx^R{Y(rpw$gKf>9IRO}KJ{|aA&}qC z-FuJ!8|s6^A6>U$!^l^a^gnq~VZXaLyt!YW$1GgjUEE?AF|IQV<@mo?F#Z}Ug&{{~ zEVt^BEtftg_IyEU%jwBQEb$SC^Zf^0*gh47M)e;mEI9d7*~RaZV3TI0u3|X^_*hU8 zW8f5wQ|zR^LHlZvvIg-;**T0+o88((m$)ec9W0-w3O}+#X1vbgU8GjdX*o~7*$6UX#Vmv3Wm%TpChTRPB&^IIC z!TuJpeCPIH!(s&Lli%LFgn3`(`IS{CfZ-;#UBKaD$MQIthDI(iV-!W)G*dcLAWC^t zUGLi#uviuqpZT*6jEZ?ISI$kreh-7+PvdF0Mqz+=mtz*p^@HE;(@a713yrD9D0b{H z%K6*u?F-n`r-Rc!ENC#ZnViK>&6Jq#eG_jMpv2-M<6Y{%P+=T{GxBHdvS5EXl}KF3 znXns^P05p-w=nwK{)%^gUBv#Uj*T006=_v!dwvZ&*y5S+<-UsDrsn2;z$}afo17Z2 zFc!mHUrrSnE>mMMFQl_W%Q&z>eWS$e60TQh8qL6oGbRCV$&mkj zY+B%}4G$&~s;p#g&54orlvGWSUBq~C9sY8tGGi(9)3@?3UceIAAAQt6FMyG$$_~zp z@L(2-3cPwNf*4NdKFTye+3I05;J5#Sc)Tvj?*0!8Net#PEA#2rC3nfGfRa%7oB+zIA@Q~FcUX;^{X z-y0-O?XwUJRpTUAmZ8SpTD)G24`Z^6?euQGf;s$Mve+Q!!!|g0v#3rgV}6}F_F)MK zgRXml^lPpl)A{5pWv?lC>*g}yf%=XvNdJe#D1sTKcbnH^ zl9>2r$}Q`Xec(S3cR5b|3(_qf)U`bQ1>fjIuGpRY4Z~gWZXNPSUuM8^yeVl4rff^P z&a3yq9onpW^423DJdl_}u{Z|r&t%+R51j&!jZ1O&@vFd=mT-FPNik&V?`gU}r^5`c z)0DJ(pTa0DJMRkduEXr`&WZ07Xx~3w(RfQ|8C)D+>5qFX1HqugIqm*w2uN|N8qZz? zgLt7)VeL7feE3wSH{u3HsDVQkb-<4Wk7iDs)PIhtEYtPSH1c9xvKZo;f<&IL`HBcJ+*d>EoxNAEN4Iauu!LT~JpX(m?3|c^Pv%N$qmg}3*=~7x z^!Z;nmaeHRBvk>1KZVLtTTfz z^{yoD6nx2#m9bo$h5xoc(DPw~XMVkj3YNx3m}?*^rh2mtl1~alOl3Er zPMDX_xMTx$;XN3X2;70h0D;HxQtObW-@$XzX$>B?bBe_woy8zyuUiIoh!Za!rp(!~(>dyf_Swo^Q1bNSE&Y~3Q1<>4@r0raEYJ5h-x?l)hX@K9rrZOsLMC*d zNo|AFyYChPZ#O_8SeCEl$~F{4Eu>!=S%l6qQHKk{OK`{SsMw;$C}Ji4D&$8)k5;)QJ4oUXLOjOL?P!6?qj`d4wqgnAw6%AVvA9bbb# z!2$u?ho>=mD~ZRwVKb0Mgg;Dx^dU+lnV(bLKZWt&#-(YH2wLVw7cKT4R|L}*EU)&;DA!00Da0ID-DCMoNZ&IGpsla{}< zslXT%fjZP;L7V@F)#>}GFqB~Wr|$yd%QCl}bNQPGZYE=**PRPttczT-OezQPKR&f5 z##-Rzh3rYuh5?{n755<{pMuW7rs5R?bpE`4!TOfR8j5?#*r{FK1Z`>|)5|>bs7~UP zZiB!aI4}D}1)#3eGt7TwZ$4iEug4k*U;DP;Tl@b<)_=!y{l5SII4YF}Dl?%Xr9neO zb$dh_Qjv-hg%*;cY!$L)kLqeEkVi>03RX4@P1WN8K@{_aBis zzR=>f|%4+2NjZ7^(GeWLI8TYMebmLf~~#GFt2)HC;KLb8CXA#nF7eE9?9IhAt} z^5cF{?e_>Quid*;vgizsjYV7I#(a?U_5J7Vgd^}WR3Jh`DHE%1G&xw6m%(<`Wfikd z;-mOyvs;YQcNkN-vfnD8qVR6w{yZT{L*dhz9{O=@9Nul7ln<+0VAqv;JjloqNssf>VAoC#br+y0y`ibkE@`OR*UffzVYKN6(Sg`uk! z9X+JZNvHMvZR9-RKKA!Wa9ydx!~61@pCSq|lEJX^+PxB-+-Q5v!m9*L-dxUiMf;(0 z-z_MS?I6X%S-!dZOgOqFGhS2d!m*!WTziZ2G$Q8S{9SsxhO%k;*6UJY^7`@@z1RKm z!xWbX3e?BzHc`g-U+ekC5&dqZq>uD9UA5#gu$StqvJ_v#~sVZ6*=GaQvC=AuK5ULYdROTRhD0x#9m*A(WwLm!V5Md^+v zKJoB;t5Ed8b!k&$=krM@|5;JK_>$B!9H}ByXgzU&@##sgG}7;Pf1k-7FFRBgKbq*f zXbHomvPr*v#^`ThDhJ0WBy+LY-j^K&>r!a*mS=-xol@h{teD3X|Dw&w%t2gk<4F%B zdAO1J0W~U@SZLW^nV6M(gPXnSBDcKEv2%-_=9$~CQ7C=SY-hUnpFz!GY2=(dse|ny_kQ#{u6#G+Uo94u7p&OO+oVceCWMw zboEZHL&L7p%4^oV6o)(Bmmo5Wy_H%LVSE{|x*EKr=g>T=-9lV__R&#lT;FsnD=|`b z8cF8T744=7wdhrF3$jz%jo6;l?28BUzB;?7D#ZUov`kTk@P$%Y-@cPp_J#S+=fX4P z8IVLTI!r9sT z8M?N0xZ7h)GkLEZIdVbk^ebDSw1f6|zdq4jR>YUYWoeW3Q-1uYu_hAc6>7Ms-r19r&FjdPs;fThZF_FJ7ak>goydnUmWXU?XbWB6cfyU8$A)~v8F1V%?f`WcBJ|BzlD+Y83n^MeNdhMrtsK( z4kx-g{TJP4a3N0ig>-f$8aB(ixKT$#+Ojg~xr{$uWEn1x+Jv(q^N*=xWNJKb&D~R&~(w zN^qRH5(L@X=l1Zt-a_%YSKc7c&q&cjPt8vrX3F&N#GZ!N-gqJ(xFe{J_^?*<%3P{) zgTME|jbUwRun~y7Ir1eD)$BW-a@xB>^@A17g~1Bc=zbW#uQCd@gEbfSxDtO1X?LdI z-ix?g_J>)E@HkrgpE#9%E=SOV~KZ6OUs$+VD_KSW2epGS^ z$9ScIp;*5lUN05Yx7vJ*Efe6$9kFQ>XA)?XZaglC41}&EW0{4~SCr>)bJCIifg3W$ zCvUuX4LVmDnqR*R5!J}}_1Ka<>JAiK7K^ikX8s!v0QIFk;?cK#<{P_jvX=8jSy z=(YqMj-PJ>x5poUzU~2Z9Ma3(@a8AlchyaY9i*e|>zpvk<@^NZ7E8q{Kay8>$Y8Q4 z^97@(!L|MFeyBaIb?yB-MhbgTPbuedTFTz5(hK>de_nX2AJgPESDZ6=-}Hda4{UFC zsE9tF|K8d2(=B073*2Xp_!gI^qV1D7?oemKWjONAH0irj zw$*xP$`OnUp-0%$vO+MfxZYWM@gs&Dl+wiXLs3QT>T#CvK6tr`4uwT!U_eDx%Xfzp zzRhY>444=rW8=gFwH+pCf7+w4!`TeQ&jeFN)$9ouUp(cmfD_D1<%&D%^@7zxvQD2fmsfRp!rO1%@V>@d3HzC`*#r5?OCe?vG+J)-Qt z8BD-0Z=3BvbkH$Hts$_}R5?_7P=-(&0ouj!39*4RB?BwTvzJ=s^BzUp}` z8fWzPda8AVfIj`vChuM=cqFQoH%C|_%D#o=9nn)gjxc}y=ol5{XZl!%en&g32eSpN z?@VDdK+I1>W(EQMZmrbOyezMP7mPts5#hQCo2+;f9Xk-@m*jSw)H7-S^fA^vB4 zHI-xKH3(7G6jZWE#U^24)wd&4==^?y-|zA&%GE1x(;P2%L868|Eou|-k%;iTEl^#I zX|BK!o2_-ASuI&Az|x1eyQ&X{&bAO=O0|b(@{zEUzEyk1A({Af73=-%_6B|J4JPJm zAz0K-x^C6}5!db?3%L{i5pst4dy*bHLH^>ZBaECT$bK`iQ^d~+T-8m_*BXaF-sUGI zzQz%dc>e8HxeX3&*(9s9*%oTzW9IfFA8_+qE|ayG8@5fEmJ|1G>^fOjn7!Q%g)`~u zwQ_{Zo494qn!XR1^!?r1DCmV8ixJO_JPr^lt9rRb)ec``e9oju+aqO5>eLHMAKYAL zZ?dD6^hc|4zn5C=j@e4?O!k{D2wS6Qhh|4?^Z0$E(Cr<}FUBTcS24qDkv@f@{T7f< zata}>9?*CqxlSr10EJ}&_43EOVR)-!f92WH%jYVOwCj};aNJ={&-UtE*=?U-k?r+B^8yn zPc}QkB1!gdPP!ew3y8*=&ju1c(;aEQy`j)r&A=%dJP)U0&MvKTDoSyE$|f$2WE8NT zWQlBSfy@E=P+`?FOr;7kRqyYE|2aA7xv#xQD7$e&;%E=(MRC-)KNTsL7;gE~72-3e z*m51wKLo~nDR4<`!-nAlKFKdDamQw}PY`tgws$Ym%SlJ0vaXOg20Fn|=xF+-X=n7G zx|?#?&jmN%DMnY=JApFpRqM6g71XW4ffo!M@w(r_gssDwoLi2Ra`E{fkD=jAnSwcf z)vKjASDV4?*?gp>r#0zkV5ZqGV~^%yM>cli7a<=XuKD!r2RzYM`(@T)L#o--vv-o+ z5aDk4ZuYG=MvtGlvMRTnd4S2*mCT=q%Psr?=*TTYOvP}lAC|UzN$-rL6Oo-?DBgY`EFsDd-Ma= z-c@4Pe`<~R^)lb|6bzvE^>@PO5iM}HW}QB5qy_5dISo3;pOb!o;BE$nXZRvszgcAP zF&J52s~F|&q{!N+ne=BKryO$BIF=Dcd~6@x+?SJnlrnH)^!(R}2z)K0`>^EzE5+N% zgsWLQ0c{fjQ@uuA7&y_b&akTvH4Zx%Jh!`p?^~Aq{SLyPJ#kSzfs6R+-d@rPz5W$C ziQa7Q;@MXmV-V+;Xz#@1jIc-d6o?O|WJHG}a}92+I^Soe zm4>Qf$1A%G3c#Zx=1RY(3=&s$RFp}*n?Yt&Tu<8t+SU$U^`?H97+4bj#!GmBF}?iW zcRxVmnsC(tvYrd<@!e|u$A$bqM`Y~Q3&7~c1rf$9cbK%E$ng~Zh;CNI3tS}oB6+$t zhf=bRPPF8Ax>`UlI&`7>g*h%wb|;1K*~4l5>gmMw_V8OpE%k`k9S$@JzHJ5`keM2Z zG6&te9c}xnPr=er9XZM`85i;Sp=l zrmnsrt#6B1;lUl{QI@EimYki|u!JRDibvm|4YEcj_-^#u5)SFGnfHhzGSBq*XpsBk z8z~4g6Ldz5j!3yFIY&`W<(O>{jRzg7RkUI=;C6a3<=BQ4sKhW|c*Xh-*Z;Gfxo1uE zMS@1ne)_n%S}^@y;45gDY#42%yadCIy2E+2S~zU?@&-qg3hoKoUSw5Q#bKkU!q2^R z@KBVE&OEc8;&e8?D}#FnrHXEYVdi^Q%KIo!b@>inieAOvsIetbgr+{_eSdY5f;s84 zmQ7+5j>sdQ3@p>J(0_T(ni7P)z7s8#$%M;ziOFT;5j&+&?2psE)m)T*KA-tWXCIgj z-=tE!+XeH=;UKG|LX4NHKhFQy3H3v4I$xeuqF5l=ob@`rXhf*kPfGU;ylf7flISTqx=HAAXg#uBiPLY7v6C+ zF%^2?)1H$$?Xm$-R}pbAHS$MWh0ozDYMyZ09OUCsnGBnC-D4A~CWvs%E$e-00&T%4 zVP{4gyzr5-x%kc*%zvE|ww(&a!)I|;$$=4wlXhkk$@&PrwlakZ6(8(PuQ-_&>WAqD z+88R6NPMr_l)o_Tk8Sv>eb>9w!+I@2Q?EkY|(ISO-w|&J$6htNA9h3LTABHq3|w8 zbQSqMrBnI{-!IDzeU~C}cSKz4N(kXjv^rMb&dkO$0lQ5_)g&*bvSYIKbNb5vd3Q)hZ!cxQ+lGyU)J5*skHj7eJx?*0Ul3h4 ze4H{=B6e?f_$jtEQI5scUBQ^#WudZP4*YtQm0A1s7fofux`plsjx ztL*v_W=e(T(b;zzt0;%ff`lApnJL>m@1CZ+Py8V+O2}@E-9ov@S}fh;5e|oV5sJ^b z&q#RB`pP%Dm*^qV#%8``z*z{F_rJcbFEG8RO|(;m>5}SCwUZsFlb5eN9&y8=Dv6g_ zMG6%_+pK^aGIKiA7))M47Ser;>Gf@&8EhYn6pvxc&?Cw!S7R|7St9*4_&@P zqVYX$u6H{uGwp)%Hkm>uNn8Bc!WJ>3?1A=DQ|%Xwk$BD(#}}m;M*N3ZF_qFr*)9=7}2#i|I1JTS=-mWo7C{c#?ukFijeS6~`)PQs7aR(g*aV<;OAgm*++k-pSM zhe|Qx@QdOZrjy93&j6*?eEAt4hGmg7uq>){Ceeixx>8Yx4x%7=-Gp6 zCIZNLHT~+v5?VjBti9=%CNz!18~PGov2CD;#d$0i)o!Cmyq?$EZMuUp>%0EIZebwQ86cf`On?GL+Md@PdnzgezxZU}%qWnuVgi0B9vkMmD12)7gMjN^miS|RUO$zd6sEFnj}|II`Xy_c~KZBRi@m>x*z<-=Hp>w+n*JH zv;Urgvs67?jw~`(76riO__Wmf{%J^w#C}hZCwi1WW;4W03)ci+RRz~)V`0|k$1mb@ z&l@sxh4o}DF6ji8v{qJtQ98Zjr&ci{PE|cW??`m6ib0;rLP3z!%1@EBtw4AGgS3R+ z8Z@UF^gi2Oi`6&79rhC5WX2JpID=c^km-#$TV(hFX%2$HOV9ie_J(uQ%~cWboVNTN zP!>h@-9Be(WBkA;w~p7H&zI;t}y?rn%4CsDo#8YS<+q**pA%gKSk|&R&C4et|IFj~^*6#nU+p!KQW}UG7evQQ zoM|ZAVkd%?WvD2n=?5}Q+I~QqhW2eVLpPou_W2%|)sOiXhxFPWe}UaWO}A}i-5grEok1#i`^T?25+Lp1YB3#HWF==G-PDPA5n(JLN|` zvcuNd_NVQMjtG1*+H4jc1ll*R?yMI{#h9i^q1nrLT#r>`+_J6+IU?#8hji0%Yt3cV zRT6esTPSSZqGJQ<`^7AK$@!_B8BM*!7cYlb+K6qN6Jk$tzJ5aVw3Vm2+jY(n-xpo= zyVG8^h&s(7OGEnX?Jb_p7xg#5sJr;bujx9R>Q6M=KG%v}GEM@chYC<(wpTTwz6|@t zn5rwvEODaf;uP~Ua}cP;P%__J2+rFz*$NS!{Eth$yF09L#^~scWF}*9ERA;6L}bH6 z*H@QbFAzOl<#9280`PU#o@&Cs6+7!LDb>yo!aMm;Nx%9WD!{UESYd|r*OOHi1GqJc(E5?5EMJ(>J)m}YGbj*R`T{a1H zEm;0q!xz(8hxH}Ar#V-3!>hpYe#4m#Z2M6t=$SzJ7;Iv7Stl#7E~w;}(h47ZMXpU#+Y< zkQ$LxR_EV_Q*sXG9}UKl>!}&`d%hgEwuczz22?@vk4gA%ZwGX2&*$6D;|!P94a?$u z@6oPklGHb01>Rflf>I;iBZ}+3mX2Q-UT*HmdrIZ$Fo2P0S4 zn8l$O;+It$cb+j86JhEO30sIRecuJo;iM!y43Rw=@;(FW0eTyzQKQmza84`bTjG)zJSh%Z_2lz7&{Rh@t5#k6#|FH1wx5W7H5*%{Lyqw zZ$0NA6CCiz+pi7UUkMS3vH%)I65#a_6HZ@Q30 z@`fAPJ{hr!dw`xWH!}&R+{qvyq{=S>N-?Pe>r2zHH=A#jUPm_Q`D@%#-5qc?r%P0T z-w`PV2Xg;Vc|xNrq)g(hGfv%^$)NQh{w0=&ycYtUar;Jg^i8Hgy!mqd=ThYe;vZ1a zY0%H&=&p7fm!uNBeL^`m%z>Yb-bkAAn^e$8Sc$`$&^4ax7G81lytJpZDVmQMb0* zcKiMuI1A`{Q@>6}&xP;`Vdii=%=@}Fq23ewwiXz6Z4Cgmp5EnG^u#w=bumLdBovWJ zx6kHV_#wIaz@-f`F0fTxbz_Z33TotHmMfMcQE)|i^JEk8T{(Cv_p!|s!dvrCEj-Rg z$YNu_d6Pgq7J9`icQ6SG~5dSI+Nlc6do``{|^1374|d%@ny35wU{)+uR| ze3In#?zaNoI79cnA&}Dzt<%&GKgYPiMY_GW)zclNXBFFiYmY-Ht*K4=;XJMeF|3x& zo5rePGjrif#2;8gfaMw&;q1_u?_wo-cHYNN(qFgs;-&L#yWYS-w0=()4WjD9(8b0@ zAH7Lv?%gHdU{s9yy;Ea>dps~;c;0TQ(-mv~zXk?36#e1+d}S};R^GBTw0`3XIw4E@ zCxn|k@-}AgBfSj zXGcGsR8Ke!%jXZ0Jm}?yaGSsM`S|M8eL$imk?<>@TUn;yJ{a8-9NPj)#@5Pw89O`i7O_*8iIp@rlOvZgh< zT*b-|;KOAX%UF-|%Fh0~h(7w2Rd;kdF5g`(Q%w!9V!=~{uRcR6;it$ zfqH9mJ3=b%`tma6f~9Jm_!}z^tP<`LY8@t{9IWuB>z#gec!ADsrwmvJ9WR0f$g4N<=^6-VA8NtU)~!4AIjKpZJi5NeOrqB%j%)#9zC4`IT|@%`ik*Y(AL#IvjWYlX0?yg6*hNq$=^_RBsoNHS@8D z&Tdzlfn6T>To%zK>ST}CUJb7Gs=-)4A}aMZat=v>zXu|^vcY1#c|1WY5F`4LdE(E= zzVAf^L$^{azIN~(|3;rgcn|y!*($xUT0%NKwZseJA?KMFqdc%l`pD%9ZlW((&uUxh zOmt0c-&#fWW-w-NDr9}G7-vGG)`LQPxxM24E?Iwtt(cL&)%O8>-|Z$e<<*OP?PIoH z!A%HkQoDY8e>o0qooHSleX(;|Ya>OYKCa9|puC$af$Yl~1qA5bVKo25=ky0Rr1to67oK#*kkbQ~)E0kS z{UB>MKK~Je+`?S3z9jF-Vab-kUx@wJQwGMr=i~WnQ@@srgtvJ5NlU&>G#vCOCpT^m z2W|Z11A$zByt!4cBO(70Y2o5)Gw6J=I8G@&Q00m{3qF%qlwIL?Waeqkr4Wc(y7fqe z&*Mrfr$uWx4P|(qtEzrr5X&3wbn~y|!u5@!zGy-?gb(WLwiBi|yPR|u^|~ZX_dN8< zyXcKO^*b5%S$HAcDMr;UAOJP3gJF8i-jEnm>`V)pf}z9Tg1j2yXCQbuQDk)i$`>}C z`cCr|a*if1`-l3GRp!F5%drlxgyS9VtSZBIfAigzRYjy9HjST(=&zWfzp)oi_`o?d z{~fPj0HCMJnIIK_fWU-@!>)dyJ$U1+#ce;b-~VfEo9~MG+9xrlu|D{y+gxTucru20 z;pd|nGN8ow$AaZr5~Oaov)Qo3BT3(QjU{yux@YsOCkZcqR&3lOATcxVXQ7GWv)o_!o_X(!Nb*lyKRPF(&ixZ7?|-fw6(7Okx|?4MwoM^wqw3Oy z(c;EA4A6E6O&2lypzg8i%rQq_Y`Z)6*OxnpaAR1gC#D1NLsN3S zA6+jxhSORe`Sc^o@cyR1+@)w*_j=!r(@i+}E^jB*x=Nyd>Q7=jS&FxD9!*XHCD_~W z;+a=?2>S9VGk*d@(3|&rfa#Mz7`Nss22}>&f*M6|n^z!|O0~c9Yzx8LZ(o~I?vZor zOzWg@W)}Wa+jD(R#co}`z`SFLFmvY86*M5e#yyK3>>}|9T&+8}?-zN_uij<$i9Hg! zeVcPN_!7{xDX!FjAqa;qi`o4Wbj1%t`mn?9PB1Cd_x!8sjM;^S^STWdP-7f2mdZXme}5W{mp|K$M^7V?CQ>meeg^Y*u6-`$ z`~k+c9-e^n!x&iFlEG~H9fylrY_~5Kqodi<;tvvV^L_C4Z0;<46*4mEYx76&4i7zB z)gVOEu8ZpP4a6PWN%qsx&2Vuae?6G+66n$f9j^=L{U zGzWNeAN`HMf9_UNe7W#!3;sCHnnCzHykFcNCF8L==ggPH82p%V|8cw|4rT_I{Dvk2 zh#$k_XVZ*<@Qpdu=$`M5@-!EXr+KzmJz3EnBV&h--N$GhGVH-1)pX}}rXgJR3q`&4 z(uUH~-(x~Yg28^mzAuxj4F0VJqc7~kk#hP#5+Zrj zr;i*?tuBQY_dvq)k#cO7l~?{jbR8L6*!~`P6^2Uo;HbiNk?>^S->b$Gg@18;5UH}O zFE0SG$L?tGwg)0u?B;zl8uEECu2bI^AB<@R-!1BX@wn&NcJ+Q&8gdxEv+NU(2NPls zt2z+B(ED7R6RAnqW1aQ4|BWB^9lf5n;gTEX)||ds<>QXJo9`1AEAR@EYv~X(D0j!JE;=_u_o@O^V>7A zy>VFaT2&l0c=d#SuTDV7z~t5S=b|C%8L}@~CL0Ww_g-q?X-5Awse@{aec(LyOW0R& z0F+}Q@|t)0q14v#!bh_QSNt!wzV&Fqp@(r_efFk9tHFhtgD({PMq6WxE(K#uC;NWf z1;U|J{9$7_|LHegYV&V{Hn#ZS2{?0 zAf=+xU=4pp`eT{&_9*Xs-dq+NfrCxQhM0L`ko0Wl*24WUh?3wavfdbqBW*1it{?Mp zKBgn0h};i*&AHB3ai6f4zF5>QpacR6b-S$9$pz9Srh~0COB)hyIf=jIP~i z;r=!RHzKlanB)^sAk19Cw=NrJ`Xn_NIy10!W?@8RT{4*O&cEIGB?$rJC!1ByMIu^d z*ks%_5G*zGe3nl_P?_Oed9f*k=ubS~abFHXpqqtBAcsFx*Q7mXeCEFL`eMNj<--jm zpS5_-YNp%~S9i#UJ-T2Cb-4z%oLXySjJz6>qqT&Ny=(|OttqbP%M`t(H^!~;bxjec zwc*NkLfOK=4C}{cE8}?mz{B}f(EoA>;Tp)>R4RMnD$ixL$pGS0o_C=>D>Vk=%Yk}j zED`YJy$j&@Ow-H(R{cK5mYR_50o=?KB4S(uo(dY9?qbd%2jSVhjN$ zv1g-(+BoE~+QU200AKFb>z9YS;{DG549T1!^quM?dnVDxnJlU<{w48|n5%!i(HZqJ zim8JPemK$MFn5UP8)&ktdS(0lkk-EH2XCMk;vVfbuqHY(WjXDkZMD8QZazM47Vm(N zXC^YALrqaD>{K(>{0>!@qwc!uDBffHf z+H6AV!0HNHEkbWN!{iXJ+FC}U=X>ZY!9?<2E-5`@rqo_2mTh>qKt6~6#@^VBF{W-~ zNWHnoBaueV<6^6ny}17G=W$2!oRi(@gpPIXLf<|*puEoOfOEeySmu`9 zt7218G??0*@ss$zstJt#ph<&d(CaPRqEd0?5l2?FZYsEVY)2l;q~O7G>Ok2u|Mz|W ze$K!5{kxuf*yof|ld|%CvG-Qh@9;_ae}4YI-}mqRj`PKS?Hoz?_O$KB-{Xn+VxX(x zXO@iA$DF~2>4_N4{63Sin1CUrUKOg004Lc7xKu_S>#Fq zx(ELQ+9V??G>~a}OY+LKr_p{4nxvulRAkH5o#`v_%GY9(y5XFP?`^HFPyc3NHDi$c z2cih1o$um{-y4U-){r=EY2wfI-9+yu8_Az0*E^n3Pb0p4LHgXclU82e&sou6Wf6xx z2k+c6G>*beo&kRT3vu{&pZ~_=plvyOKV{{9|Gn=PpYqQ_>rNbM44qZrEL$0=Q&s6L z2oHa7*(A8;%a@gS_#Ud}d@0unrYK9=FAqEM>%+av9ID+b+@L_$(F|A!WGWu+?BZPX9=gZACFv#)4#YaYtb%LnIuE7 zW6;-scRC7xx|Y=4NWj1MFXUN>)GtKg-)Mhx^qZ?J@jd)s+*CIn94%&o|^uIXPwH^B)P|&#&&wyU-_@mdl@GqVxNLAlt zx@#ql|E@2s-Uk`?B;?wk_vNfk27P|bHcDhE`WRljS-nm~STC)oAK`)jEEHw8-IrPxYasF1*<>_zw;7_gl!m&^#OsddA6(M}Ls|M zsMXI-lHVEpoOw!x=;f8p2_tziLVWi{9Sr?)x#kjpp!bM>a~jbl zhqAD6rLV-@DWgPJMlB8WCyyM9(aAut|5foOwRBJ~zL)--mxBk{y6WN@2_(-Ws@zST zh{0V|+cc6Bq0~)F|DY@Z?|&6HZ#s~G(X4wt>e302-a)D8sZ78{yYAckm5D3k+f%Xu zVRk9_c;>UfY4juAlLFUaPor*nO$ZWr8_-ao#5-4$D?}olW z-~851d2;@oZD$B1r#u|KcD_<7h4Ae6GiawfH^Z`;a>m%A2^Z5#7StsOH{7zR;{0L> zWVn3Rb*(Q49sl{(QIl#2u`1|Zi>b%>Kq+%4Zyj=eE|{)RcSHE`%jw9KDdKB+mb((?rCtTL z$9<$;SXIB~n`I)NhTaphUY&$Gk>i3wQpwmwRYo^clLWi#v{r_KNh@(LtGJP1wUhWY z8%|_cBqU>xT!K1FVarOqFF55Luio2%Hqn#`9hv`&H|vJX#~u%waGybn;iOw5vL87g z+Dz8<4-y-09<8nc&BpEB$#-k8;S}G)wc<4x-hKL=YjHJx^v2!kK3h+Gz6(-fCJ9Hj za#}0mBH@J=()pDz*5QTQ@Y*x1B2^TuCdWo^olJsh9^LbD1~g~#nU+-h;*dv$FNe?5-h{BTa7 z^%F{HpEoZlrD7_xU8Ght0aScmiq=OmaNRzS=c+_LF7mAEFNq?3k>3`WuIJ@pi^{XG zLjqY)FBUdv7|2KZ7C9SV%M`r0GTI^fARSl#&`>ls=B`}Vw%Co-Fr=--dCer%<{X(+ z{EPF#BWr=N?i2`0JmWMj8-jGyR~ENE;vW*k(9O#^jHA6n-G9?su=PL$<>74C%Im7h zy{!tX8dl=^WKUS>m5drNOdTEFf2prV6i)8i zSBFjU%SSQ^r^a6FlA4SH@tvsM)EcT$iE;MF>&?h~ZOBRNVC8GT-JtA`+sQoC#rQnW zDI%Q12!#*6$~8!cpTERyOn8`FPdeX-w&2ZPxvoo}npUn)f1z9s%^|<(e20xR7 zd}Nd1{WmP>kw_-;>thCjgbT0`V$iBxN&L20yDi@OWJ4st`s3dN1(0v+ui$3NK>INn zL#|VUz+w63a{FxDlgJ<3&Oz$gR|B6tTF%42d2l$@*1V208I@sQ2khO_uy$(cv5R~f zg0}rURp&H>#8XEWBtjeTJK<=kcx2!IGanBwerb%mH%fTBmu^gwe4p64%Qni^Rk$@- zS^vep3D$opcOLmPf#zfcudGcSq&<_amUh-4Hsdspqz?Ii)*s1zIavqRTBbEM4UJfG z+%Y%L7Uw_TDeuRza+03mAfT+Ehl@w9o-f}x*p8UraU|KmNhfa=Xs zxyGh;oIBOE-Y|mjjnp*S+${*FcT`12MEna5ZL7WItVH&ox;xK3tFOh`jCXp^XUkEa zok)G9tP<;;R=fHSe+I`cN_1;jHGb|73hy*2!3W)|C*3(RAXWL3kZ*Hw%zC-yqXgk5 z{t^11Sy_xxkE{G|zh)wi)_Ih&n1|EnSzKQcKQhnGji=si9|JAb1xx-p!sCj};QSmo z3h(mY0|PnJ$WQ4Dj#VoHe_ldJ&-WsnI<`YDtvqXGY+|^m{`y=2xDBsm(j;ZWT;SOG zoco#hH&1TeZfi=GI`D7Yx%8)tJ+c=#WngeXdkCL9Z|OG~46e-Q2A%p>bW_dnlatz< zMAmIl=QT5H{hRTW>qQkOT9GihdFR#6W_T%nVr)Cp44w5NeR>>(hp9BSW?NGeM8}>D z*!MP}<8l2`v_c(W_J*>P&zAEk}dIFPuRi&NP*f2lE_nYYYE(O!uZVhe4D_c#!Rc2qn|3xXzCA%5a zV+_qdr`s`?o2m6%kNDuQUP#cXZ^6`_? z?SA#m?sWAl^ILxF#DSQII$WDLRIePQm&l{jr}DP>m^s9ameou2##BuSymHCag_f54i8-gI6w8+(a zt;lO@l&|S(Mn~)Jn|3?f5zpKsq$AUcq;f}3YT7S^d*$`}+xu3e_L>AM{pbSwu@mKj ztGfs{@$22J?d?d}vrcj}sr7%)i5k4`iFhvYrWs<}&YMxhnz6j8;Qa}YDoDJGV3e}| zf@-BF4j1IeIydqmUTCx)o^BG-ZNhEnQuRIb!KH(62HvWt>>>Si8SK`FU-m+`-Opyf zZy%C!cw##XMiA2ZomyvU7WuvWr^K7;&|}Nwr}DcF>C{>KC&;>VgU7_XgVgWu>@Uhy z6s(1xzkqdZEQrxkmq=&=6(WnY%iS)EKEkfqr~RAx1?WYt57cE-&8OuHL^MVh{2WD zM;d1vKS5~QY;$%b;eh<*OV3jp0&mjb?L(!*=)Ck(C@$Pu<(9Q6OLXxR+{J52id}i zr^$rBS&+=qm?AfVD}Hh&%)15<{o8r$C*h#vN@PiTCU&8-`nqL#N*k_-ZWVl6UWet3 zC=;)^Ch$+L)>Rm(N8u43!&SFiVH95YO(nk(X4x;7*^hq3(YIC}XPkQB&)y|@L3sez zX|MWB5l%{zT2+3>#S#2?9OSevaRM`f)+aL-8({ISh9mzz@w?N@xktOB9<2AMld`jO z@P?nZzSNEGA7R;wvJ&Wylj_CMyp{3aeBI&S!MV<< z6ZS%-&n+uD@l0|}kkr#UC`yhluo<=?R^f!QfJiy^HF7H*{#*(dGhhErbnx)^TEr0;ZHK$KeZWi=@D+O>J-lbDdG=s!`ZgU zs}Osp6qPF|pDG%G%`tNhaVO+QC3QZ2|#b<@={w5pZj}x0` zq?t%KAkBSVBINvFcVsQ=yO*TD>m1$e?;YK^5_OWABl9cK)9l}w*Evf1dG)QLpO548 z^(VUuvKm19jAprznfOa=qNobAea7VdP+dx09ZF8feN!WR0|SUcuag(tGIOS(M7?~;Xhsah3b=JGbdo8Jf@`+srY zR61buJEs_X_nmR|U@66hiOXl{FOm7x{Yz&q`U!*d|B?OMkn41l+Jmu@aMfQ4KJV#Zo%QFq~}%c2k^!1O?0X6GQ@q?^SSJ_ z1uq2yrU|l!A^6LD;_mBdcpRfzEK4^G+QT>_emZ?{A8S5irLMsjtCSDpYCD6vukwME$}l0-uo=#H zzFGscM-odp^R$|<9A4>^@6rm^!~eV-*_B|esM^gfTLqDi1xOw(Ho~Qcgf>SfjiByL zJvvL<4&NEGa`4}D!Dk`XcDI!wz`f~Kai$;jv*W|czd5zRREpcrWRhms6qDG-h>(v` zD|lJPsRznG>qnQM=SxCF>>)evAP9_4WQgbtK+4Olb&)@#sBTUy^m{h|<%3msb2vs} z^zP5URk~XsF`qgoc6J>?EaYp|_O_tx$k=h|!XB{YjFOx-*nr?MY0GxxZxH&HkSxA6 z0ZuBXio21IF->K>hGwJ-49w=~(oQu)zzZ$y{Bw2i>x`Unz<59CUFrU-7LPc9)zpn* zH^x9=RNFp^rc{?XXyP<4*nBim3O(gF2KZDO>*lTu=pan?ScBITam2q?%Y9sub^VdN>SvqSqfEm>#7GDk@0a{^!(D( zl23SV*$J^rMcVGR=)M_El-Fcd1OIShnHLZTm%5_x;r22*FPW2d@}Qi@m-6;3kMwTH z&}exzJc~R(mEkKjlI<{JhpYJZI^qWpwA@v%XaS7GSHG959XNk!RK0T>gfhCf0bdhG z;k~Cs|A<2`Q2lz3>+yUD_;PKU2u_W`@=*TPH@b0X%TeI|X3!6IU0>WI9M+-c!h`E+ zep|3c%sf*c+YOi8Z~SmYd1UVrRte_xc4%{+J7!Pmf67*49Ca9^;o0g*Ld@vl&S6w+S2%>eSo_YT;AamPY=I zHgN3Tj??CD2X!KyfKGHi-Z>TC^!iH-E@E zn{@!aEQ_2#Jo0bhZ$y*OcR~|aF?(M~2jm`(hJ;o3fc^%>^T7thnO+W?2u zNn(4h2?i3LGW+Cqz>}rJy*BlHsP3MSAH7%(r{t!So**CjxQMo4+}8p)Id6bJOj!u+ zNx#k(UdV^5IOhZYOyMX1M7h zAI@{Nfpqk~Bus?y>%NJU>$xKl*V*MhrFQLo&CI&hJ!$cz5g zg!1GcALtKtK-P;Kbt}Y$^i_-PX}XK{ehn-`4WGAz(WPb!{@s4axV3cgKJ? zaR-=F{+)k6)eQ@aJsSI{Z_)W@Ax+7)2bwChK1i>215a)Lwm@qyxZn{x2v-aPE@ND( zOi~wcWd@0VEk>LNQC7Rdx*1r_)DW&ZoCHPJ!BFds5$H3Ph!xgD{oFlc+?VV9P~ony z%!7Pf0!~JxrhAoO$*W5ENT(g>m`ZUM>^dRTbVs5basK^JMJba7b;C{Kj+c+A%V2Ti zd!_h#9bjsEjGfR1IqS{(*8|EyJZ(x1ANl`2?r+w}+$w=#+d#_E!8}M7{vGD>5It9{ zgLN-oDgdeln#g#qd`R;MbXhFVhw=e$P7&m>7b_#PZIUg4_wMvt#|vek!XHm`*i{0? z^)G$o9~Q%-nJaPjax<0sd#iT3S#( zY%_eg_0MK6;vFQNFo`oaW1uk43TaujoAP^{VK&n_^}MeuBqLtBrPn(TxV=lE`Ci~jwjkpD z2^Ot<`CbNzn|9KyD7TQ||JjI!7kTUkZ?m>~l!Kp`u+uFiG`}#W3R}$Sfbx8b=}+g; zd@BBf|G^#PFLN>f5lt}&1UuPAL96{}Pfxwru5Jt(9nF-!xOPMCtnwL}kWR>dMmH6L z-UkpEYr7%P1FFR|lWYUs$cK;`T`<-MRQ2N}%;?-h&26yUq%j1kZ%Xa2AwDesLyp!1 zsbRQ!T>1TK9paM7TonB6fqW0|>fhJS%|evi>ITp2K6vH%(Dj>04_N6w$fYKzfRDty zw2WkfP;LJx%&2`7yzZSVc_B4{xa|LVbGzUIY0HPDFLglwM@D;ns1B6PIrCHbdw}7E z_#g|)sV=jztVkC|L%k_<4iW%1LerO7AjT>Q=#pxH!1!?eAl618D16O z(JdZJqH}Z4*WrfRNt72Lov9}hDnxty{mQ(of018Q*s90~^+zI)B;h&o@tmqTg*`5V zo-u;RPgCVUgRb#!sGs8WBhi`WZY31IYgwsL8UT;ht3?AWsBiI^n4fxg7&NOxf^Ks5 z0S%qqoBRlLKC88jYJ5Bde?LEwp|~^v`Uou0ePw@cjThcB1- zisg04-zcj3Y=QcAnmHkyi0@$%{#{t;`T*E%R@1X;jDl%!ZqB>U!+W#>YOeJBycfR0EtfQZ#pOfYWqNe{J8?!z7jO?t4_1)Y_`hitcv-y4SjT{Ax%0 zrrVa1cTqmX<_5phb{TO03`7L?2I#(A5$-C8a(xeS`JGXJMQ!VKZ1d({xN%-1*K4pG zsJowZPX$!~MP2xxyQtp8_b9Y#G($OB{x7{$dR5@lGaQaLh3fe0Iag?^MnGfptyFsJ z80=A=?0%M-hVh+~)znjya7#yH;NGiw;Hq0q#5p|yx#j-^@!gi8Upv`1uJfU zLR@O)_zVu`gl&`y^=lO8Sc2vrhUb*>Yv2= zHJsc!OYmrdeb|<95xNxWu1R$fVEVeBYR*~`VXAR{W?g#R>oGY(FO|+!KEDN zJRbb{E??_rHKaKU7PFxIP{;S=8}0|yFv>zEb3+k%XM6C%0*0z#N26ZFsJR-hkd(gW zMtQV0k!Ft=xn;QM<+@@Lx`I5)rcYI8=is&GeXAQUr{QNpD^2{=I;@PzZAd?wgZYE5 zx^LI#;MK(l9M8cSc>mHMi+yAPBM|b72Mg0PJe%M+aF5iGrXOWFSa^zo| zlCE{=-GEQd=iKT7)&TDUS%a7|Ax7vHUAuQ{15$p@_2_o2!|RUhm0kqtn=bFjdG=9g_rbPA1T?XdFI&gMyRGt6dV z4}{ORfzEf{)BDF=5OgZxgps-jK5Eb`<*Evm2W6!s?bqyXaLYw{j2T3K% zph}|gY;0~5OvzOacwGrG9t9rOa-kjg%z1q?EoK$okrs`suP%X1_ty#2y=}NpNfB;# zZ5?cm7L5F~yJrr!OSu zun)^ooH~tV(g=KH&KRg0I3GHyj`)e?j zPWLCpcpHQ@#YC^U96{K*=JlOoQmjln#Kh~eXD{}g!!p=xZ(ljXjCI(r69j8q#wrausT{g!vB>1! zV%IoUOrDd8Dduv&g_@)=|6y!Fp)eZrYq%l{c=h&y| z-q10E4){HUkypL!0^6py^m^8fur_%?rkwv2w)MBc+&_K=Mrg*SK2eZh7b~o?&vP7t z{a=~1O>QzwQ&757E|CiJu@5xoWGM@}>=az!i*k17pm0V!<}W`pLZhUc_7@ z*jc@h??5dkXny@YC1$%qU2OjK0w$HiZ^yXO2Rl!Sx7|X~+-6GQ?qFg!Fs=~)8%KKr zEecH2q%Viy!z!tH!uKAKy^}2aA%+UOt&&E1L!St9nhE93l4ih8L>V=kE2*&TCA-Hb z^Jg*IcBUd8w|&^$>^q|MK7lW4uO|w9$+7hb%9ZC77ciTDSCa53X|VF8rT(ceELi&G zXZyPEnK8DV2eLo@Ud9MKq?Q)gFJsl&EI4-~STIu_?yh+}Hf;D-xQr`41!gG8-Z!Jy z4;&*xg|aQZ@G_ESt59Pch$KetTz@tUszjb!0*Z(eb5FIB!jcJN{NQu*jT0``a%DYL zI))XKqRITwbVQA#2!szi>u3~J-KTN-@c)-Q51|obbIIt#o zKX(?&a7v=d3)!)8?YHD0$c!CJXKxr%&|wYM&eWDpmoeXmqBH~bY}k~g zXIt(~M(o09Bo|B4Ic#rQgR}8I9~NwR{rt1hYgqfPLhhtAFE*Mfw?c`I&82-?<0234 zU{^PaV&=(sF!6M+6hB=7Og-+ch=wRDCbv!h+t!E!^Y_@X^4gpQYg?(su<~&bZr`ca zS4DkSm$zgeUyOs}T-E#*%M|o@`dy4ho`k_y5(YusE1=+$q{_*?1hO5i1wYo8;mVkc zax69hJSI5Vimx`{1J62p_bw-P?G%+mKkiLz&Lx?%U*rnL#{I@wZi5SZ-?&9#Hp+_O zn+)zqb@O7PZb8y-e{f^5wq5>zK?u{mXeG5}@&MCN`BG#;Du#Wa=P-8u#e>PmcWQhQ zyoFtA)zPZ+r^Q%n_4OX3-&^LKoR9D}%3F)?yDBWLpmVxuYs#B3i2PZD?|)?s#)~L3 zh1XHNdRyh^pz}Bc5D1Vy37vqVJREl!ln;Bma4nEIY#myzF-jB6BhMnfh~qG}3Zt(H z%T4AN!Q59gQ#4@%EHzlk638YY*_n9U$P49t{cK;l9^S%YUpVF-S@B|nEjop`zxlA8 zdSW#1#CPcP~V308?22(Gbc(eNg^yLcIy`p+;1g(*e8`ccD%~ zJ}vt_HHPEg6Oe)XJB9D-AWWL+ITN>WChx+1G!kuUmy{=*tv%DoYG7V?)ViJSeu}sLD ze04Ve>+q{R7@MN&ovHf=VY3mB8F=?WT3TOC2IckG&N3Wx1?+>t*B30y>nAXEJ9Iek zxE+X-eSKy2Cc$8WV(H20e)xSbx?@9xMmZ+ShUQD-Af3+fsg=9|l%1{xxLRd_GNb5> zcuO4EtuV|o2qgnsP&lct8=6CELyTh00?2O-h$d2=!=&2Qv?83hpu}s6cC4TeaAv$6 zs+2pSq>*~Gd}>$B?>5({D8k12(M8}DPYHBW@Px`?o>fwK2~=NI7@ zo2C!%y=Lg&xzxY$t5BKNCPIM~0B33A>ehainl?c$1FXEu6|!RQ-Dz<7qg zhPD+4if&ud|)7&cwSPH2fc5+a*fH-kf&nl*Mw6N6iLRvPmE1~(|3tURQQn> z`KM@c1LYw6Wp~fJ!#@wQ!X;S?yZ^xaT=$4?IxfamO_vnGcL@1}T(Jr#$bUYjq!~(A z0%aD?T4XNB-&{tC%Vd!O2@GxGI<%QE)%&uCZGRn-7j$K6Ui3g?$Ro%~K+D9RVn+(>u#Mm{N7682tq?scGAYG02}83Qx_-Y0x@8*ojU zmrCO2G%zteq;c^02iB=uS@BYM7*63^dECfDxN;)MAcT18B^-D;e5(6EBQE01uW|&X zG!(c$r*W`!dMdG%m}AiIeQNp~VzulR#&uyD5_FtnBuqj|@=u$jLIcQQ5&=~821sZ-)F=MNU_Siq?|SQ+(;a2~54 zRAj*84t~i5v@et^n)H-JD+5&CnuOwPX99M1Myoy$)zu=MS8tS!!GGN~JL5TU5bLlU zqTYZvYyWQMBR>lx72g8o>rG%BI?OT`4gj)lWr7B?L~vQZtZ(5P10phSC@dDe!R~j~ z8^*#G$dkfi6qCigTdN zyq?1`C=t@=PVRjrh=D{^IRP8eLKq#_e32#`1GkFH&bv62qj{Nio+uQfeTf2sp6MKL z4I003jQZ2Y544q;Do8QkZ>`a%IoIG|?d}gE(_x@W4lj%e!@<7Gjq)i;;b1WrZh8;0 ztV0K}+xQjxEg*eu|2mK10E}KGh5T9EgkShnN}btzP>vUBhD3QFC#ijqvswn%o{XpH z+Bc*5z7zG;)_Pc7_Rr|K6$4d#WuhN~JfOUXD^KQ^7d$B@qzJp|0$G!5eh=ntU@TDJ zn%wIIh*&uE7o|WPE7DApC*u3?(vNoap|%f{g)LNR@&*CjMOj&MPk+!A`Aqkr3Hc(v z*7cf*q5b(*#*BYMxxh5Z@FdHw3~{(UqxKGRpi+HO+TnX2ge*L6Hm4Ze2jC@TVQ8!wSA0Fv+~!w?Vu%5r)t5Q9$@Vz;Q2FaePLCw`B!E z1Zu?^RVXhs;(J;2RRr`}_Ul|God*3g(!$53LttzrJiQFvz?WdZa1qT5s^zf1)E(te zeLtgi8u{e6Mh2Cri(4SaD_DyT_aAV@RR-Lh;KkB~Np9rMS3$Rt^NV*CNkBU@LZEdP z4-4Oub_{yPfziBpMr!KHinW!lNQ4FOV2p0JkAI`K;O3+qY?{_by<{O$s*y%&#{8Ty$FofQiSUwQ^5QIOK43~Jn)=c*COAH0jfma z9oyXmxLvLilD731TsKtX{bGH~9;05<7zB3GN(~ym1zh(8umq+66%fS6`i@)rIgoICJ02)Nx z!VWPjSLarj=s&#zzNMm zpYg7Y8v|C!LVX(X956rL0g`%qFtBT#8pp2(vIi}R9rx>?pz|UB+$Ne|`u$y}*(rm* zH_MEymbHLAFl>GQq6MzKGo`KkQ4NuTsYU%;lTff=TP?JC6Dv?L??0R)!QL|G5!LA} z0pXJ$na^*rV0Wg@e%40kkj08C4P4?}*l>f%Gj;u|7|XbqI*$0YP7-R-)@uT8*5mCgCmLzHvaEyndcl(Wj%@OdC zS*+UE2Gv>1nSI~8M`143(X)!17TZ!H?0%L_fTgu^cC62*ZtZRf{N27Rs54xb(%r#kFy&eRkHhwbmR>B+Y&@vhJ z0wAxjp*dq=1f~xS|7bophKr8`+jhU$LJ_gc!{?iEFt3$FfuWyo)>Dm`<_qHdzqs6@ z&+iWehW;a5(%!JaUTy4N><2Q1k@1%c{2@k#>BY*g2$23maEIL^2rhfLXl2BP0QhyA zsJ*ZQ-?9?jpFx%|Z(5yuR>cV3sEo@$Q?CLQPd?(%?K=4Mcw+NvX(iMO&-zWALEIV% z4!@AEf#6mes9nA13p0NH*IHc-;5LqHee{$*ycYRXhiCsC1j2FHBVCcVYvl5oD`?+8 z#_mOW{MTI6-{O!Q-A6g*fQBcD1?8YQq!SQ6&e{4i>p8SDG>CeLR0GWIigJ?q-oKcLO0$36SC3QT<1@k-oTF#rAYyzz?2=O#ci zrBrkgn~1wGh}$0twuaItc6m`y`{>;1fip3nD`talkM_C>)C14Sp?QId{m%fhlxUDu zEc@x^iJnhFY&1;o=0Q_$@Piu%1LjgI8ACjZhsiwL70mBnhpQ8(LZdmlK~!$^rQO^N zV0k^sO88}9`D1MPW?}_OjZxjUAgO~75p_?Q(EZOaTR(_AxDpnzV8shMnZOqjE9qj0 z@<-==MZUBnezTcSLbg~o(AlPonzqJ6l>DD1m1rw4^>b%Ty=DtrwT3!2&Y>trd87Uw zRWy`^Ta6bUc)_R-j^ImR zmYDlNZ?S_pXXQ_5+V^fcr)&#-qHYB(-HsrdP_lrRY7S4YeynqrC;`{gvK9nGUZy-;H|eCnzX4d(l#r||wP z6Sh0R8)x;31+%FUkRyIS2V{W*yIeQ~7?)eYt(l4{&?nA3qE$|Z<>Iq1%rRQ*>C9(o zE)V2Y^?RG~^z1Jvih3XVI425rmu{beb`ngxC+UdhTmB5b!Q=FW(O3H^5nFU z4G@3HesW(U48C7^`?Zuj63X;!rQ}k>f#ZniL@F&D4o`}9#Vf*L*iazgYXssm9H|Sv z(nj^c4cy86rvb=suhDgI)(Nys&27>ZePJ_t>~2GyCnz1X-$?LshSkC{y`UX?D7$d; zUq!nkD44ug%a;j)-{QE9W~IM?uvfZpoHrEe?~L3268Z&$tzSin-F+dE%a%Bx96fia zgM8`4tYMG*K(`v@Rc>5zZpx@9#1?UTJq&3Q;hj6thKK4o44+l!>ynR9^li1ZIaCs(%MGU~yO=%2$Tn8#;JEnA_yM1iaBpcrzCOIH#Qk9W#?>%$## zRyX-+8V5&QGja(J*<;+Y3y1RGmfu3E}U^*=f23hs~3Q|M@{jSx7^(803Svz~qjK&V} zUGDz2;22JmUmsE8@$iI4u2U!fGM)ar*5szz*#e=wM)x*82w7I7G18#LY|73yn<1bdVX#QSu>y6d6R|L?Ci)VK-ML@mJjoq5twumd}axdY9 zGkj%`ivev9;0fPU+?4YGb!(4-)0(azs$450;S>Z!dFD%Ei*_)^bf9)N&H*Uik;2zB zdziP9)K_f`f=1mhBr*RY;FD~>`X_c5c-Q%2*<$J^be=xaZNC}`A==VpLX$CYnxCHa z{_RL$mUcO8Qul{5l&2Q*^upklJQh=c8vqN_WSw+jkzoAqRq-drKwvD8e9d>$ALu?? z%pWU8!b&c4(C(%WTzsyd9{VmDWQrIT@3DnL?DdxPv+uq`o^8wNvtbU93N8&4HzUb&QYx2edxoB*On51|d=bCl&;V z+mgcnnW@?rd}QOPKO2Ms#qEbLlMoi=B-j8}5x@KolU%w^R!y{9k?JS8L(V53w_o zo3-$Y+ksY|xEnNRPEpOy$3eUUuF`a1CcJ9UZhz?=0IbF?3VsLf@UFVEo<71G{I7?o zsp$tm^ewhbVNb+0(6ZDtH1dP!xYRJg(*Y0>(eSE`$_vz;>xUm4r9r!GM|6I;1F*BY z+*#$chh$Q1MOq#wxUl+~{0_RVr@5w$vYz@wnqQvMh)g1!6K$m{JCAq-Qa#xcsNR+` zj<|PQD;l;8&K`%R1%og3*jxMcUvM)=IW#&p28xwtjJDNd;YjSP_qBi|kb0;Ux&J-{ zyy$}i&#`BKrvj@^MOY%FDlnQ$-Eji?R|c2KKH5O~=DhOXTR*{I&o(7>*B-*7C`=b3 zEMR!p>xk>Y52#vP>MUsc2C~qzaC0Bs-yAq81d_j@{K;b{i3nfd9JxQe;1vv3EWK8P zA0lAS*h3;ZISoAB2ot-+(Vk$k_z$9oIiR-flm1W?{d)_i>x%tf!I$VN4SmrM@SDGH zrYLERynI1rE_`<2R+0IOoY)F%PUc%0=p2ClnGQkbM|<%9+c>FQhWLyxD6ibhA;3r$ zzK!aYp2x0HHtjSw;A0Nss_zyu@UbKIC+V>VbjZuir+FlF0u^f8t2EnWSY5?e2GVnX zA^DX>aNBFdwk57&47R7@s=0~A=aKGXFFgv3uA^PcW8$;przgU*h>4ETdgYi1Q}NChy>B;zm>%uODY`*mWceeMJ~s{3Zyd|6^dEryDf&tUJicyK4=FYGFL(qtp9T=ipD+-Brs^wP1}Sx72G z^UKv4dYnMG5}Fa-aybe*4rz;7OT6J;uZ4{9hX9z1rn_Wh9Rh6`ad@UG{xH8~(QF!t zJPIrF&U|LU(9rBE>GT|(Z|&cS{m#jO6SJo*MDk9M<>`#>PU|XWS@9L*eiB!QD4Kxu{Y%N8t-=6z zQscagRvd5)+IUU~rh>uSttgAwOz

Cj8x+1b&{8jSS)c@47ThKf07!ZwSu{b?Bsb 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 literal 0 HcmV?d00001 diff --git a/test/input/recom/GLODAPv2.2016b.PI_TCO2_fesom2_mmol_fix_z_Fillvalue.nc b/test/input/recom/GLODAPv2.2016b.PI_TCO2_fesom2_mmol_fix_z_Fillvalue.nc new file mode 100644 index 0000000000000000000000000000000000000000..3c5292ae113743da3bc96bc7bb0c0f4875e1830e GIT binary patch literal 705519 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 z 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 z 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 A+5i9m literal 0 HcmV?d00001 diff --git a/test/input/recom/MonthlyAtmCO2_gcb2024.nc b/test/input/recom/MonthlyAtmCO2_gcb2024.nc new file mode 100644 index 0000000000000000000000000000000000000000..1874cf8f3bd50b5bb18712dfb796dde5dd588568 GIT binary patch literal 205372 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

@Y@gh_92r0YuHOZC%&?Ml1pX+XuiZpM%usXvvM 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

Quh4Olj#uU*cutAOll@PSe)kT9 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%0DA4|O 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

<|q!?AH-xUi$)|0R9%+kX0gxBq9%V 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 I|MndCKcz@+SpWb4 literal 0 HcmV?d00001 diff --git a/test/input/recom/fe5deg.nc b/test/input/recom/fe5deg.nc new file mode 100644 index 0000000000000000000000000000000000000000..76d5c8e4b1d90a242f50ee2b530885e23dd028b0 GIT binary patch literal 686916 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