From b5d9ac8e9dc827f2aec3271e38cbe8c9ad5471a2 Mon Sep 17 00:00:00 2001 From: ogurses Date: Thu, 26 Sep 2024 14:02:04 +0200 Subject: [PATCH] fix(recom): add variable sinking into benthos for Cocco Add sinking coccos into benthos Missing part of sinking into benthos for coccos is added. We still assume that it is zero in the namelist.recom. --- src/int_recom/recom_modules.F90 | 15 +++++++++++---- src/oce_ale_tracer.F90 | 32 ++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/int_recom/recom_modules.F90 b/src/int_recom/recom_modules.F90 index 0e3e1dd70..e25cd7f31 100755 --- a/src/int_recom/recom_modules.F90 +++ b/src/int_recom/recom_modules.F90 @@ -30,13 +30,16 @@ module recom_config #if defined (__3Zoo2Det) Integer :: izoo2n = 23, izoo2c =24, idetz2n = 25, & - idetz2c = 26, idetz2si = 27, idetz2calc = 28 + idetz2c = 26, idetz2si = 27, idetz2calc = 28 + integer, dimension(4) :: recom_det2_tracer_id = (/1025, 1026, 1027, 1028/) #endif #if defined (__coccos) & defined (__3Zoo2Det) Integer :: icocn = 29, icocc = 30, icchl = 31 + integer, dimension(3) :: recom_cocco_tracer_id = (/1029, 1030, 1031/) #elif defined (__coccos) & !defined (__3Zoo2Det) - Integer :: icocn = 23, icocc = 24, icchl = 25 + Integer :: icocn = 23, icocc = 24, icchl = 25 + integer, dimension(3) :: recom_cocco_tracer_id = (/1023, 1024, 1025/) #endif #if defined (__coccos) & defined (__3Zoo2Det) @@ -49,16 +52,20 @@ module recom_config !!MB TEST: tracer ids for revised remineralization and sinking in oce_ale_tracer.F90 integer, dimension(8) :: recom_remin_tracer_id = (/1001, 1002, 1003, 1018, 1019, 1022, 1302, 1402/) + + + integer, dimension(29) :: recom_sinking_tracer_id = (/1007, 1008, 1017, 1021, 1004, 1005, 1020, 1006, & 1013, 1014, 1016, 1015, 1025, 1026, 1027, 1028, & 1029, 1030, 1031, & ! OG Cocco 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/) 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/) - integer, dimension(3) :: recom_cocco_tracer_id = (/1029, 1030, 1031/) - integer, dimension(4) :: recom_det2_tracer_id = (/1025, 1026, 1027, 1028/) +! integer, dimension(3) :: recom_cocco_tracer_id = (/1029, 1030, 1031/) +! integer, dimension(4) :: recom_det2_tracer_id = (/1025, 1026, 1027, 1028/) Real(kind=8) :: zero = 0.d0 Integer :: one = 1 diff --git a/src/oce_ale_tracer.F90 b/src/oce_ale_tracer.F90 index 621734792..3df0dfb07 100644 --- a/src/oce_ale_tracer.F90 +++ b/src/oce_ale_tracer.F90 @@ -1120,6 +1120,13 @@ subroutine ver_sinking_recom_benthos(tr_num,mesh) if (any(recom_det_tracer_id == tracer_id(tr_num))) Vben = Vdet if (any(recom_phy_tracer_id == tracer_id(tr_num))) Vben = VPhy if (any(recom_dia_tracer_id == tracer_id(tr_num))) Vben = VDia + if (any(recom_cocco_tracer_id == tracer_id(tr_num))) Vben = VCocco ! check conditions (#if defined (__coccos)) and add the necessary tracers numbers below OG: +! Adjust iphycalc + +#if defined (__coccos) + if(tracer_id(tr_num)==1020) Vben = VCocco !iphycal in case of coccos +#endif + if (allow_var_sinking .and. any(recom_det_tracer_id == tracer_id(tr_num))) then Vben = Vdet_a * abs(zbar_3d_n(:,n)) + Vben end if @@ -1128,12 +1135,12 @@ subroutine ver_sinking_recom_benthos(tr_num,mesh) ! ******************************************************* #if defined(__3Zoo2Det) - if(tracer_id(tr_num)==1025 .or. & !idetz2n - tracer_id(tr_num)==1026 .or. & !idetz2c - tracer_id(tr_num)==1027 .or. & !idetz2si - tracer_id(tr_num)==1028 ) then !idetz2calc - Vben = VDet_zoo2 - endif + if(tracer_id(tr_num)==1025 .or. & !idetz2n + tracer_id(tr_num)==1026 .or. & !idetz2c + tracer_id(tr_num)==1027 .or. & !idetz2si + tracer_id(tr_num)==1028 ) then !idetz2calc + Vben = VDet_zoo2 + endif #endif Vben= Vben/SecondsPerDay ! conversion [m/d] --> [m/s] (vertical velocity, note that it is positive here) @@ -1156,6 +1163,11 @@ subroutine ver_sinking_recom_benthos(tr_num,mesh) ! Particulate Organic Nitrogen if( tracer_id(tr_num)==1004 .or. & !iphyn tracer_id(tr_num)==1007 .or. & !idetn +#if defined (__coccos) & defined (__3Zoo2Det) + tracer_id(tr_num)==1029 .or. & !icocn +#elif defined (__coccos) & !defined (__3Zoo2Det) + tracer_id(tr_num)==1023 .or. & !icocn +#endif tracer_id(tr_num)==1013 ) then !idian ! tracer_id(tr_num)==1013 .or. & !idian ! tracer_id(tr_num)==1025 ) then !idetz2n @@ -1177,6 +1189,11 @@ subroutine ver_sinking_recom_benthos(tr_num,mesh) ! Particulate Organic Carbon if( tracer_id(tr_num)==1005 .or. & !iphyc tracer_id(tr_num)==1008 .or. & !idetc +#if defined (__coccos) & defined (__3Zoo2Det) + tracer_id(tr_num)==1030 .or. & !icocc +#elif defined (__coccos) & !defined (__3Zoo2Det) + tracer_id(tr_num)==1024 .or. & !icocc +#endif tracer_id(tr_num)==1014 ) then ! tracer_id(tr_num)==1014 .or. & !idiac ! tracer_id(tr_num)==1026 ) then !idetz2c @@ -1211,8 +1228,7 @@ subroutine ver_sinking_recom_benthos(tr_num,mesh) endif - ! Cal - if( tracer_id(tr_num)==1020 .or. & !iphycal + if( tracer_id(tr_num)==1020 .or. & !iphycal ! computed using Vcocco in case of coccos, otherwise Vphy tracer_id(tr_num)==1021 ) then !idetcal ! tracer_id(tr_num)==1021 .or. & !idetcal ! tracer_id(tr_num)==1028 ) then !idetz2cal