Changeset 12377 for NEMO/trunk/src/TOP/PISCES/P4Z/p4zlys.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/TOP/PISCES/P4Z/p4zlys.F90
r12276 r12377 35 35 REAL(wp) :: calcon = 1.03E-2 ! mean calcite concentration [Ca2+] in sea water [mole/kg solution] 36 36 37 !! * Substitutions 38 # include "do_loop_substitute.h90" 37 39 !!---------------------------------------------------------------------- 38 40 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 43 45 CONTAINS 44 46 45 SUBROUTINE p4z_lys( kt, knt )47 SUBROUTINE p4z_lys( kt, knt, Kbb, Krhs ) 46 48 !!--------------------------------------------------------------------- 47 49 !! *** ROUTINE p4z_lys *** … … 54 56 !!--------------------------------------------------------------------- 55 57 INTEGER, INTENT(in) :: kt, knt ! ocean time step and ??? 58 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 56 59 ! 57 60 INTEGER :: ji, jj, jk, jn … … 70 73 ! ------------------------------------------- 71 74 72 CALL solve_at_general( zhinit, zhi )75 CALL solve_at_general( zhinit, zhi, Kbb ) 73 76 74 DO jk = 1, jpkm1 75 DO jj = 1, jpj 76 DO ji = 1, jpi 77 zco3(ji,jj,jk) = trb(ji,jj,jk,jpdic) * ak13(ji,jj,jk) * ak23(ji,jj,jk) / (zhi(ji,jj,jk)**2 & 78 & + ak13(ji,jj,jk) * zhi(ji,jj,jk) + ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn ) 79 hi (ji,jj,jk) = zhi(ji,jj,jk) * rhop(ji,jj,jk) / 1000. 80 END DO 81 END DO 82 END DO 77 DO_3D_11_11( 1, jpkm1 ) 78 zco3(ji,jj,jk) = tr(ji,jj,jk,jpdic,Kbb) * ak13(ji,jj,jk) * ak23(ji,jj,jk) / (zhi(ji,jj,jk)**2 & 79 & + ak13(ji,jj,jk) * zhi(ji,jj,jk) + ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn ) 80 hi (ji,jj,jk) = zhi(ji,jj,jk) * rhop(ji,jj,jk) / 1000. 81 END_3D 83 82 84 83 ! --------------------------------------------------------- … … 88 87 ! --------------------------------------------------------- 89 88 90 DO jk = 1, jpkm1 91 DO jj = 1, jpj 92 DO ji = 1, jpi 89 DO_3D_11_11( 1, jpkm1 ) 93 90 94 95 96 97 98 99 91 ! DEVIATION OF [CO3--] FROM SATURATION VALUE 92 ! Salinity dependance in zomegaca and divide by rhop/1000 to have good units 93 zcalcon = calcon * ( salinprac(ji,jj,jk) / 35._wp ) 94 zfact = rhop(ji,jj,jk) / 1000._wp 95 zomegaca = ( zcalcon * zco3(ji,jj,jk) ) / ( aksp(ji,jj,jk) * zfact + rtrn ) 96 zco3sat(ji,jj,jk) = aksp(ji,jj,jk) * zfact / ( zcalcon + rtrn ) 100 97 101 102 103 104 98 ! SET DEGREE OF UNDER-/SUPERSATURATION 99 excess(ji,jj,jk) = 1._wp - zomegaca 100 zexcess0 = MAX( 0., excess(ji,jj,jk) ) 101 zexcess = zexcess0**nca 105 102 106 ! AMOUNT CACO3 (12C) THAT RE-ENTERS SOLUTION 107 ! (ACCORDING TO THIS FORMULATION ALSO SOME PARTICULATE 108 ! CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION) 109 zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal) 110 ! CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 111 ! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 112 zcaldiss(ji,jj,jk) = zdispot * rfact2 / rmtss ! calcite dissolution 113 ! 114 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * zcaldiss(ji,jj,jk) 115 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zcaldiss(ji,jj,jk) 116 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zcaldiss(ji,jj,jk) 117 END DO 118 END DO 119 END DO 103 ! AMOUNT CACO3 (12C) THAT RE-ENTERS SOLUTION 104 ! (ACCORDING TO THIS FORMULATION ALSO SOME PARTICULATE 105 ! CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION) 106 zdispot = kdca * zexcess * tr(ji,jj,jk,jpcal,Kbb) 107 ! CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 108 ! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 109 zcaldiss(ji,jj,jk) = zdispot * rfact2 / rmtss ! calcite dissolution 110 ! 111 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + 2. * zcaldiss(ji,jj,jk) 112 tr(ji,jj,jk,jpcal,Krhs) = tr(ji,jj,jk,jpcal,Krhs) - zcaldiss(ji,jj,jk) 113 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zcaldiss(ji,jj,jk) 114 END_3D 120 115 ! 121 116 122 117 IF( lk_iomput .AND. knt == nrdttrc ) THEN 123 CALL iom_put( "PH" 118 CALL iom_put( "PH" , -1. * LOG10( MAX( hi(:,:,:), rtrn ) ) * tmask(:,:,:) ) 124 119 IF( iom_use( "CO3" ) ) THEN 125 120 zco3(:,:,jpk) = 0. ; CALL iom_put( "CO3" , zco3(:,:,:) * 1.e+3 * tmask(:,:,:) ) … … 130 125 IF( iom_use( "DCAL" ) ) THEN 131 126 zcaldiss(:,:,jpk) = 0. ; CALL iom_put( "DCAL" , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 132 ENDIF 127 ENDIF 133 128 ENDIF 134 129 ! 135 IF( ln_ctl) THEN ! print mean trends (used for debugging)130 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 136 131 WRITE(charout, FMT="('lys ')") 137 132 CALL prt_ctl_trc_info(charout) 138 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)133 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 139 134 ENDIF 140 135 ! … … 166 161 ENDIF 167 162 ! 168 REWIND( numnatp_ref )169 163 READ ( numnatp_ref, nampiscal, IOSTAT = ios, ERR = 901) 170 164 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiscal in reference namelist' ) 171 172 REWIND( numnatp_cfg )173 165 READ ( numnatp_cfg, nampiscal, IOSTAT = ios, ERR = 902 ) 174 166 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampiscal in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.