- Timestamp:
- 2016-11-01T14:23:51+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r7068 r7162 11 11 !! ! 2011-02 (J. Simeon, J. Orr) Calcon salinity dependence 12 12 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Improvment of calcite dissolution 13 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 13 14 !!---------------------------------------------------------------------- 14 15 !! p4z_lys : Compute the CaCO3 dissolution … … 18 19 USE trc ! passive tracers common variables 19 20 USE sms_pisces ! PISCES Source Minus Sink variables 21 USE p4zche ! Chemical model 20 22 USE prtctl_trc ! print control for debugging 21 23 USE iom ! I/O manager … … 57 59 INTEGER, INTENT(in) :: kt, knt ! ocean time step 58 60 INTEGER :: ji, jj, jk, jn 59 REAL(wp) :: zalk, zdic, zph, zah2 60 REAL(wp) :: zdispot, zfact, zcalcon, zalka, zaldi 61 REAL(wp) :: zdispot, zfact, zcalcon 61 62 REAL(wp) :: zomegaca, zexcess, zexcess0 62 63 CHARACTER (len=25) :: charout 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zc o3sat, zcaldiss64 REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zcaldiss, zhinit, zhi, zco3sat 64 65 !!--------------------------------------------------------------------- 65 66 ! 66 67 IF( nn_timing == 1 ) CALL timing_start('p4z_lys') 67 68 ! 68 CALL wrk_alloc( jpi, jpj, jpk, zco3, zc o3sat, zcaldiss)69 CALL wrk_alloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 69 70 ! 70 71 zco3 (:,:,:) = 0. 71 72 zcaldiss(:,:,:) = 0. 73 zhinit(:,:,:) = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 72 74 ! ------------------------------------------- 73 75 ! COMPUTE [CO3--] and [H+] CONCENTRATIONS 74 76 ! ------------------------------------------- 75 76 DO jn = 1, 5 ! BEGIN OF ITERATION 77 ! 78 DO jk = 1, jpkm1 79 DO jj = 1, jpj 80 DO ji = 1, jpi 81 zfact = rhop(ji,jj,jk) / 1000. + rtrn 82 zph = hi(ji,jj,jk) * tmask(ji,jj,jk) / zfact + ( 1.-tmask(ji,jj,jk) ) * 1.e-9 ! [H+] 83 zdic = trb(ji,jj,jk,jpdic) / zfact 84 zalka = trb(ji,jj,jk,jptal) / zfact 85 ! CALCULATE [ALK]([CO3--], [HCO3-]) 86 zalk = zalka - ( akw3(ji,jj,jk) / zph - zph / ( aphscale(ji,jj,jk) + rtrn ) & 87 & + borat(ji,jj,jk) / ( 1. + zph / akb3(ji,jj,jk) ) ) 88 ! CALCULATE [H+] and [CO3--] 89 zaldi = zdic - zalk 90 zah2 = SQRT( zaldi * zaldi + 4.* ( zalk * ak23(ji,jj,jk) / ak13(ji,jj,jk) ) * ( zdic + zaldi ) ) 91 zah2 = 0.5 * ak13(ji,jj,jk) / zalk * ( zaldi + zah2 ) 92 ! 93 zco3(ji,jj,jk) = zalk / ( 2. + zah2 / ak23(ji,jj,jk) ) * zfact 94 hi(ji,jj,jk) = zah2 * zfact 95 END DO 77 78 CALL solve_at_general(zhinit, zhi) 79 80 DO jk = 1, jpkm1 81 DO jj = 1, jpj 82 DO ji = 1, jpi 83 zco3(ji,jj,jk) = trb(ji,jj,jk,jpdic) * ak13(ji,jj,jk) * ak23(ji,jj,jk) / (zhi(ji,jj,jk)**2 & 84 & + ak13(ji,jj,jk) * zhi(ji,jj,jk) + ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn ) 85 hi(ji,jj,jk) = zhi(ji,jj,jk) * rhop(ji,jj,jk) / 1000. 96 86 END DO 97 87 END DO 98 ! 99 END DO 88 END DO 100 89 101 90 ! --------------------------------------------------------- … … 111 100 ! DEVIATION OF [CO3--] FROM SATURATION VALUE 112 101 ! Salinity dependance in zomegaca and divide by rhop/1000 to have good units 113 zcalcon = calcon * ( tsn(ji,jj,jk,jp_sal) / 35._wp )102 zcalcon = calcon * ( salinprac(ji,jj,jk) / 35._wp ) 114 103 zfact = rhop(ji,jj,jk) / 1000._wp 115 104 zomegaca = ( zcalcon * zco3(ji,jj,jk) ) / ( aksp(ji,jj,jk) * zfact + rtrn ) … … 128 117 ! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 129 118 zcaldiss(ji,jj,jk) = zdispot * rfact2 / rmtss ! calcite dissolution 130 zco3(ji,jj,jk) = zco3(ji,jj,jk) + zcaldiss(ji,jj,jk)131 119 ! 132 120 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * zcaldiss(ji,jj,jk) … … 151 139 ENDIF 152 140 ! 153 CALL wrk_dealloc( jpi, jpj, jpk, zco3, zc o3sat, zcaldiss)141 CALL wrk_dealloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 154 142 ! 155 143 IF( nn_timing == 1 ) CALL timing_stop('p4z_lys') … … 170 158 !! 171 159 !!---------------------------------------------------------------------- 172 INTEGER :: ji, jj, jk173 160 INTEGER :: ios ! Local integer output status for namelist read 174 REAL(wp) :: zcaralk, zbicarb, zco3175 REAL(wp) :: ztmas, ztmas1176 161 177 162 NAMELIST/nampiscal/ kdca, nca … … 199 184 ! 200 185 END SUBROUTINE p4z_lys_init 201 202 186 !!====================================================================== 203 187 END MODULE p4zlys
Note: See TracChangeset
for help on using the changeset viewer.