- Timestamp:
- 2011-08-09T13:11:24+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2787_PISCES_improvment/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlys.F90
r2715 r2823 9 9 !! 1.0 ! 2004 (O. Aumont) modifications 10 10 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 11 !! ! 2011-02 (J. Simeon, J. Orr) Calcon salinity dependence 12 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Improvment of calcite dissolution 11 13 !!---------------------------------------------------------------------- 12 14 #if defined key_pisces … … 17 19 !! p4z_lys_init : Read the namelist parameters 18 20 !!---------------------------------------------------------------------- 19 USE trc 20 USE oce_trc ! 21 USE trc 22 USE sms_pisces 23 USE prtctl_trc 24 USE iom 21 USE oce_trc ! shared variables between ocean and passive tracers 22 USE trc ! passive tracers common variables 23 USE sms_pisces ! PISCES Source Minus Sink variables 24 USE prtctl_trc ! print control for debugging 25 USE iom ! I/O manager 25 26 26 27 IMPLICIT NONE … … 62 63 INTEGER, INTENT(in) :: kt ! ocean time step 63 64 INTEGER :: ji, jj, jk, jn 64 REAL(wp) :: z bot, zalk, zdic, zph, zremco3, zah265 REAL(wp) :: zdispot, zfact, z alka65 REAL(wp) :: zalk, zdic, zph, zremco3, zah2 66 REAL(wp) :: zdispot, zfact, zcalcon, zalka, zaldi 66 67 REAL(wp) :: zomegaca, zexcess, zexcess0 67 #if defined key_diatrc && defined key_iomput68 68 REAL(wp) :: zrfact2 69 #endif70 69 CHARACTER (len=25) :: charout 71 70 !!--------------------------------------------------------------------- … … 91 90 !CDIR NOVERRCHK 92 91 DO ji = 1, jpi 93 94 ! SET DUMMY VARIABLE FOR TOTAL BORATE 95 zbot = borat(ji,jj,jk) 96 97 ! SET DUMMY VARIABLE FOR TOTAL BORATE 98 zbot = borat(ji,jj,jk) 99 zfact = rhop (ji,jj,jk) / 1000. + rtrn 100 101 ! SET DUMMY VARIABLE FOR [H+] 102 zph = hi(ji,jj,jk) * tmask(ji,jj,jk) / zfact + ( 1.-tmask(ji,jj,jk) ) * 1.e-9 103 104 ! SET DUMMY VARIABLE FOR [SUM(CO2)]GIVEN 92 zfact = rhop(ji,jj,jk) / 1000. + rtrn 93 zph = hi(ji,jj,jk) * tmask(ji,jj,jk) / zfact + ( 1.-tmask(ji,jj,jk) ) * 1.e-9 ! [H+] 105 94 zdic = trn(ji,jj,jk,jpdic) / zfact 106 95 zalka = trn(ji,jj,jk,jptal) / zfact 107 96 108 97 ! CALCULATE [ALK]([CO3--], [HCO3-]) 109 zalk = zalka - ( akw3(ji,jj,jk) / zph - zph & 110 & + zbot / (1.+ zph / akb3(ji,jj,jk) ) ) 98 zalk = zalka - ( akw3(ji,jj,jk) / zph - zph + borat(ji,jj,jk) / ( 1. + zph / akb3(ji,jj,jk) ) ) 111 99 112 100 ! CALCULATE [H+] and [CO3--] 113 zah2 = SQRT( (zdic-zalk)*(zdic-zalk)+ & 114 & 4.*(zalk*ak23(ji,jj,jk)/ak13(ji,jj,jk)) & 115 & *(2*zdic-zalk)) 116 117 zah2=0.5*ak13(ji,jj,jk)/zalk*((zdic-zalk)+zah2) 118 zco3(ji,jj,jk) = zalk/(2.+zah2/ak23(ji,jj,jk))*zfact 119 120 hi(ji,jj,jk) = zah2*zfact 121 101 zaldi = zdic - zalk 102 zah2 = SQRT( zaldi * zaldi + 4.* ( zalk * ak23(ji,jj,jk) / ak13(ji,jj,jk) ) * ( zdic + zaldi ) ) 103 zah2 = 0.5 * ak13(ji,jj,jk) / zalk * ( zaldi + zah2 ) 104 ! 105 zco3(ji,jj,jk) = zalk / ( 2. + zah2 / ak23(ji,jj,jk) ) * zfact 106 hi(ji,jj,jk) = zah2 * zfact 122 107 END DO 123 108 END DO … … 137 122 138 123 ! DEVIATION OF [CO3--] FROM SATURATION VALUE 139 zomegaca = ( calcon * zco3(ji,jj,jk) ) / aksp(ji,jj,jk) 124 ! Salinity dependance in zomegaca and divide by rhop/1000 to have good units 125 zcalcon = calcon * ( tsn(ji,jj,jk,jp_sal) / 35._wp ) 126 zfact = rhop(ji,jj,jk) / 1000._wp 127 zomegaca = ( zcalcon * zco3(ji,jj,jk) * zfact ) / aksp(ji,jj,jk) 140 128 141 129 ! SET DEGREE OF UNDER-/SUPERSATURATION 142 zexcess0 = MAX( 0., ( 1.- zomegaca ) ) 130 excess(ji,jj,jk) = 1._wp - zomegaca 131 zexcess0 = MAX( 0., excess(ji,jj,jk) ) 143 132 zexcess = zexcess0**nca 144 133 … … 166 155 END DO 167 156 END DO 168 157 ! 169 158 # if defined key_diatrc 170 # if !defined key_iomput171 trc3d(:,:,:,jp_pcs0_3d ) = hi (:,:,:) * tmask(:,:,:)172 trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:) * tmask(:,:,:)173 trc3d(:,:,:,jp_pcs0_3d + 2) = aksp(:,:,:) / calcon * tmask(:,:,:)174 # else 175 zrfact2 = 1.e3 * rfact2r176 CALL iom_put( "PH" , hi (:,:,:) * tmask(:,:,:) ) 177 CALL iom_put( "CO3" , zco3 (:,:,:) * tmask(:,:,:))178 CALL iom_put( "CO3sat", aksp (:,:,:) / calcon * tmask(:,:,:))179 CALL iom_put( "DCAL" , zcaldiss(:,:,:) * zrfact2 * tmask(:,:,:))180 # 181 # 159 # if defined key_iomput 160 zrfact2 = 1.e3 * rfact2r 161 CALL iom_put( "PH" , hi (:,:,:) * tmask(:,:,:) ) 162 CALL iom_put( "CO3" , zco3 (:,:,:) * tmask(:,:,:) ) 163 CALL iom_put( "CO3sat", aksp (:,:,:) / calcon * tmask(:,:,:) ) 164 CALL iom_put( "DCAL" , zcaldiss(:,:,:) * zrfact2 * tmask(:,:,:) ) 165 #else 166 trc3d(:,:,:,jp_pcs0_3d ) = hi (:,:,:) * tmask(:,:,:) 167 trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:) * tmask(:,:,:) 168 trc3d(:,:,:,jp_pcs0_3d + 2) = aksp(:,:,:) / calcon * tmask(:,:,:) 169 #endif 170 #endif 182 171 ! 183 172 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 207 196 NAMELIST/nampiscal/ kdca, nca 208 197 209 REWIND( numnat ) ! read numnat210 READ ( numnat , nampiscal )198 REWIND( numnatp ) ! read numnatp 199 READ ( numnatp, nampiscal ) 211 200 212 201 IF(lwp) THEN ! control print
Note: See TracChangeset
for help on using the changeset viewer.