Changeset 12928 for NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/TOP/PISCES/P4Z/p4zligand.F90
- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/TOP/PISCES/P4Z/p4zligand.F90
r12178 r12928 26 26 REAL(wp), PUBLIC :: prlgw !: Photochemical of weak ligand 27 27 28 !! * Substitutions 29 # include "do_loop_substitute.h90" 28 30 !!---------------------------------------------------------------------- 29 31 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 33 35 CONTAINS 34 36 35 SUBROUTINE p4z_ligand( kt, knt )37 SUBROUTINE p4z_ligand( kt, knt, Kbb, Krhs ) 36 38 !!--------------------------------------------------------------------- 37 39 !! *** ROUTINE p4z_ligand *** … … 39 41 !! ** Purpose : Compute remineralization/scavenging of organic ligands 40 42 !!--------------------------------------------------------------------- 41 INTEGER, INTENT(in) :: kt, knt ! ocean time step 43 INTEGER, INTENT(in) :: kt, knt ! ocean time step 44 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 42 45 ! 43 46 INTEGER :: ji, jj, jk 44 47 REAL(wp) :: zlgwp, zlgwpr, zlgwr, zlablgw 45 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zrligprod 46 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 48 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zligprod 47 49 CHARACTER (len=25) :: charout 48 50 !!--------------------------------------------------------------------- … … 50 52 IF( ln_timing ) CALL timing_start('p4z_ligand') 51 53 ! 52 DO jk = 1, jpkm1 53 DO jj = 1, jpj 54 DO ji = 1, jpi 55 ! 56 ! ------------------------------------------------------------------ 57 ! Remineralization of iron ligands 58 ! ------------------------------------------------------------------ 59 ! production from remineralisation of organic matter 60 zlgwp = orem(ji,jj,jk) * rlig 61 ! decay of weak ligand 62 ! This is based on the idea that as LGW is lower 63 ! there is a larger fraction of refractory OM 64 zlgwr = max( rlgs , rlgw * exp( -2 * (trb(ji,jj,jk,jplgw)*1e9) ) ) ! years 65 zlgwr = 1. / zlgwr * tgfunc(ji,jj,jk) * ( xstep / nyear_len(1) ) * blim(ji,jj,jk) * trb(ji,jj,jk,jplgw) 66 ! photochem loss of weak ligand 67 zlgwpr = prlgw * xstep * etot(ji,jj,jk) * trb(ji,jj,jk,jplgw) * (1. - fr_i(ji,jj)) 68 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zlgwp - zlgwr - zlgwpr 69 zligrem(ji,jj,jk) = zlgwr 70 zligpr(ji,jj,jk) = zlgwpr 71 zrligprod(ji,jj,jk) = zlgwp 72 ! 73 END DO 74 END DO 75 END DO 54 DO_3D_11_11( 1, jpkm1 ) 55 ! 56 ! ------------------------------------------------------------------ 57 ! Remineralization of iron ligands 58 ! ------------------------------------------------------------------ 59 ! production from remineralisation of organic matter 60 zlgwp = orem(ji,jj,jk) * rlig 61 ! decay of weak ligand 62 ! This is based on the idea that as LGW is lower 63 ! there is a larger fraction of refractory OM 64 zlgwr = max( rlgs , rlgw * exp( -2 * (tr(ji,jj,jk,jplgw,Kbb)*1e9) ) ) ! years 65 zlgwr = 1. / zlgwr * tgfunc(ji,jj,jk) * ( xstep / nyear_len(1) ) * blim(ji,jj,jk) * tr(ji,jj,jk,jplgw,Kbb) 66 ! photochem loss of weak ligand 67 zlgwpr = prlgw * xstep * etot(ji,jj,jk) * tr(ji,jj,jk,jplgw,Kbb) * (1. - fr_i(ji,jj)) 68 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zlgwp - zlgwr - zlgwpr 69 zligrem(ji,jj,jk) = zlgwr 70 zligpr(ji,jj,jk) = zlgwpr 71 zligprod(ji,jj,jk) = zlgwp 72 ! 73 END_3D 76 74 ! 77 75 ! Output of some diagnostics variables 78 76 ! --------------------------------- 79 77 IF( lk_iomput .AND. knt == nrdttrc ) THEN 80 ALLOCATE( zw3d(jpi,jpj,jpk) )81 78 IF( iom_use( "LIGREM" ) ) THEN 82 zw3d(:,:,:) = zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 83 CALL iom_put( "LIGREM", zw3d ) 79 zligrem(:,:,jpk) = 0. ; CALL iom_put( "LIGREM", zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 84 80 ENDIF 85 81 IF( iom_use( "LIGPR" ) ) THEN 86 zw3d(:,:,:) = zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 87 CALL iom_put( "LIGPR", zw3d ) 82 zligpr(:,:,jpk) = 0. ; CALL iom_put( "LIGPR" , zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 88 83 ENDIF 89 84 IF( iom_use( "LPRODR" ) ) THEN 90 zw3d(:,:,:) = zrligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 91 CALL iom_put( "LPRODR", zw3d ) 85 zligprod(:,:,jpk) = 0. ; CALL iom_put( "LPRODR", zligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 92 86 ENDIF 93 DEALLOCATE( zw3d )94 87 ENDIF 95 88 ! 96 IF( ln_ctl) THEN ! print mean trends (used for debugging)89 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 97 90 WRITE(charout, FMT="('ligand1')") 98 91 CALL prt_ctl_trc_info(charout) 99 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)92 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 100 93 ENDIF 101 94 ! … … 125 118 WRITE(numout,*) '~~~~~~~~~~~~~~~' 126 119 ENDIF 127 REWIND( numnatp_ref ) ! Namelist nampislig in reference namelist : Pisces remineralization128 120 READ ( numnatp_ref, nampislig, IOSTAT = ios, ERR = 901) 129 121 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislig in reference namelist' ) 130 REWIND( numnatp_cfg ) ! Namelist nampislig in configuration namelist : Pisces remineralization131 122 READ ( numnatp_cfg, nampislig, IOSTAT = ios, ERR = 902 ) 132 123 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampislig in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.