Changeset 763 for branches/dev_001_GM/NEMO/TOP_SRC/trcdtr.F90
- Timestamp:
- 2007-12-13T14:52:50+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_GM/NEMO/TOP_SRC/trcdtr.F90
r730 r763 1 1 MODULE trcdtr 2 !!======================================================================================= 3 !! 4 !! *** MODULE trcdtr *** 5 !! 6 !! Computes or READ initial DATA for passive tracer 7 !! 8 !!======================================================================================= 9 !! TOP 1.0, LOCEAN-IPSL (2005) 10 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/TOP_SRC/trcdtr.F90,v 1.8 2007/10/17 14:48:56 opalod Exp $ 11 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 12 !!---------------------------------------------------------------------- 13 !!---------------------------------------------------------------------- 14 !! * Modules used 15 !! ============== 16 USE oce_trc 17 USE trc 18 USE sms 19 USE trcdta 20 USE lib_mpp 21 22 IMPLICIT NONE 23 PRIVATE 24 !! * Accessibility 25 PUBLIC trc_dtr 2 !!====================================================================== 3 !! *** MODULE trcdtr *** 4 !! TOP : computes or READ initial DATA for passive tracer 5 !!====================================================================== 6 !! History : - ! 1996-11 () original code 7 !! ! 2000-12 (O. Aumont, E. Kestenare) add for POC in sediments 8 !! 1.0 ! 2005-12 (O. Aumont, A. El Moussaoui) F90 9 !!---------------------------------------------------------------------- 10 #if defined key_passivetrc 11 !!---------------------------------------------------------------------- 12 !! 'key_passivetrc' Passive tracers 13 !!---------------------------------------------------------------------- 14 !! trc_dtr : computes or READ initial DATA for passive tracer 15 !!---------------------------------------------------------------------- 16 USE oce_trc 17 USE trc 18 USE sms 19 USE trcdta 20 USE lib_mpp 21 22 IMPLICIT NONE 23 PRIVATE 24 25 PUBLIC trc_dtr ! called in ??? 26 27 !!---------------------------------------------------------------------- 28 !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 29 !! $Header:$ 30 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 31 !!---------------------------------------------------------------------- 26 32 27 33 CONTAINS 28 34 29 #if defined key_passivetrc 30 31 SUBROUTINE trc_dtr 32 !!--------------------------------------------------------------------- 33 !! 34 !! ROUTINE trci_dtr 35 !! ****************** 36 !! PURPOSE : 37 !! --------- 38 !! computes or READ initial DATA for passive tracer 39 !! ----- 40 !! COMMON 41 !! /comdom/ : domain PARAMETER 42 !! /comcoo/ : orthogonal curvilinear coordinates 43 !! and scale factors 44 !! /comask/ : masks, bathymetry 45 !! OUTPUT : 46 !! ------ 47 !! COMMON 48 !! /cottrc/ : passive tracer field now and before 49 !! 50 !! 51 !! History: 52 !! -------- 53 !! original : 96-11 54 !! additions : 99-9 55 !! : 00-12 (O. Aumont, E. Kestenare) add for POC in sediments 56 !! add for POC in sediments 57 !! 03/05 O. Aumont and A. El Moussaoui F90 58 !!---------------------------------------------------------------------- 59 !!---------------------------------------------------------------------- 60 !! local declarations 61 !! ================== 35 SUBROUTINE trc_dtr 36 !!--------------------------------------------------------------------- 37 !! *** ROUTINE trc_dtr *** 38 !! 39 !! ** Purpose : computes or READ initial DATA for passive tracer 40 !! 41 !! ** Method : 42 !!--------------------------------------------------------------------- 62 43 INTEGER :: ji,jj,jk,jn 63 44 #if defined key_trc_pisces 64 REAL(wp) :: alka0,oxyg0,calc0,bioma0, & 65 silic1,po4,no3,caralk,bicarb,co3 66 #endif 67 !!--------------------------------------------------------------------- 68 !! OPA.9 69 !!--------------------------------------------------------------------- 70 !! 0. initialisations 71 !! ------------------ 72 73 IF(lwp) WRITE(numout,*) ' ' 74 IF(lwp) WRITE(numout,*) ' *** trcdtr initialisation for ' 75 IF(lwp) WRITE(numout,*) ' passive tracers' 76 IF(lwp) WRITE(numout,*) ' ' 77 45 REAL(wp) :: alka0, oxyg0, calc0, bioma0 46 REAL(wp) :: silic1, po4, no3, caralk, bicarb, co3 47 #endif 48 !!--------------------------------------------------------------------- 49 50 IF(lwp) WRITE(numout,*) 51 IF(lwp) WRITE(numout,*) 'trc_dtr : initialisation of the passive tracers' 52 IF(lwp) WRITE(numout,*) '~~~~~~~' 78 53 79 54 #if defined key_cfc 80 trn(:,:,:,:)=0.0 55 ! CFC initialisation 56 trn(:,:,:,:) = 0.e0 57 81 58 #elif defined key_trc_pisces 82 83 sco2 = 2.3e-3 84 alka0 = 2.39e-3 85 oxyg0 = 1.8e-4 86 po4 = 2.165e-6/po4r 87 bioma0 = 1.e-8 88 silic1 = 91.51e-6 89 calc0 = 1.e-6 90 no3 = 30.88E-6*7.6 59 ! PISCES initialisation 60 ! --------------------- 61 sco2 = 2.300e-3 62 alka0 = 2.390e-3 63 oxyg0 = 1.800e-4 64 po4 = 2.165e-6 / po4r 65 bioma0 = 1.000e-8 66 silic1 = 91.510e-6 67 calc0 = 1.000e-6 68 no3 = 30.880e-6 * 7.6 91 69 92 70 trn(:,:,:,jpdic) = sco2 … … 99 77 #if ! defined key_trc_kriest 100 78 trn(:,:,:,jpgoc) = bioma0 101 trn(:,:,:,jpbfe) = bioma0 *5E-679 trn(:,:,:,jpbfe) = bioma0 * 5.e-6 102 80 #else 103 trn(:,:,:,jpnum) = bioma0 /(6.*xkr_massp)81 trn(:,:,:,jpnum) = bioma0 / ( 6. *xkr_massp ) 104 82 #endif 105 83 trn(:,:,:,jpsil) = silic1 106 trn(:,:,:,jpbsi) = bioma0 *0.15107 trn(:,:,:,jpdsi) = bioma0 *5.E-684 trn(:,:,:,jpbsi) = bioma0 * 0.15 85 trn(:,:,:,jpdsi) = bioma0 * 5.e-6 108 86 trn(:,:,:,jpphy) = bioma0 109 87 trn(:,:,:,jpdia) = bioma0 … … 111 89 trn(:,:,:,jpmes) = bioma0 112 90 trn(:,:,:,jpfer) = 0.6E-9 113 trn(:,:,:,jpsfe) = bioma0 *5.E-6114 trn(:,:,:,jpdfe) = bioma0 *5.E-6115 trn(:,:,:,jpnfe) = bioma0 *5.E-6116 trn(:,:,:,jpnch) = bioma0 *12./55.117 trn(:,:,:,jpdch) = bioma0 *12./55.91 trn(:,:,:,jpsfe) = bioma0 * 5.e-6 92 trn(:,:,:,jpdfe) = bioma0 * 5.e-6 93 trn(:,:,:,jpnfe) = bioma0 * 5.e-6 94 trn(:,:,:,jpnch) = bioma0 * 12. / 55. 95 trn(:,:,:,jpdch) = bioma0 * 12. / 55. 118 96 trn(:,:,:,jpno3) = no3 119 97 trn(:,:,:,jpnh4) = bioma0 120 98 121 122 !! Initialization of chemical variables of the carbon cycle 123 !! -------------------------------------------------------- 124 125 DO jk = 1,jpk 126 DO jj = 1,jpj 127 DO ji = 1,jpi 128 caralk = trn(ji,jj,jk,jptal)- & 129 borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk))) 130 co3 = (caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk) & 131 & +(1.-tmask(ji,jj,jk))*.5e-3 132 bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 133 hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3) & 134 *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9 135 ENDDO 136 ENDDO 137 ENDDO 138 139 140 !! initialize the half saturation constant for silicate 141 !! ---------------------------------------------------- 142 143 xksi(:,:)=2.E-6 99 ! Initialization of chemical variables of the carbon cycle 100 ! -------------------------------------------------------- 101 DO jk = 1, jpk 102 DO jj = 1, jpj 103 DO ji = 1, jpi 104 caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) ) ) 105 co3 = ( caralk - trn(ji,jj,jk,jpdic) ) * tmask(ji,jj,jk) & 106 & + 0.5e-3 * ( 1. - tmask(ji,jj,jk) ) 107 bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) 108 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) & 109 & + 1.e-9 * ( 1. - tmask(ji,jj,jk) ) 110 END DO 111 END DO 112 END DO 113 114 ! initialize the half saturation constant for silicate 115 ! ---------------------------------------------------- 116 xksi(:,:) = 2.e-6 144 117 145 118 IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' … … 147 120 148 121 #elif defined key_trc_lobster1 && ( defined key_eel_r6 || defined key_eel_r2 ) 149 ! analytical initialisation used in Levy et al. (2001) 122 ! LOBSTER initialisation for EEL 123 ! ---------------------- 124 ! here: analytical initialisation used in Levy et al. (2001) 150 125 151 DO jk =1,7152 trn(:,:,jk,jpdet)=0.016*tmask(:,:,jk)153 trn(:,:,jk,jpzoo)=0.018*tmask(:,:,jk)154 trn(:,:,jk,jpphy)=0.036*tmask(:,:,jk)155 trn(:,:,jk,jpno3)=1.e-5*tmask(:,:,jk)156 trn(:,:,jk,jpnh4)=0.0005*tmask(:,:,jk)157 trn(:,:,jk,jpdom)=0.017*tmask(:,:,jk)158 END DO 159 160 trn(:,:, 8,jpdet)=0.020*tmask(:,:,1)161 trn(:,:, 8,jpzoo)=0.027*tmask(:,:,1)162 trn(:,:, 8,jpphy)=0.041*tmask(:,:,1)163 trn(:,:, 8,jpno3)=0.00022*tmask(:,:,1)164 trn(:,:, 8,jpnh4)=0.0033*tmask(:,:,1)165 trn(:,:, 8,jpdom)=0.021*tmask(:,:,1)166 167 trn(:,:, 9,jpdet)=0.0556*tmask(:,:,1)168 trn(:,:, 9,jpzoo)=0.123*tmask(:,:,1)169 trn(:,:, 9,jpphy)=0.122*tmask(:,:,1)170 trn(:,:, 9,jpno3)=0.028*tmask(:,:,1)171 trn(:,:, 9,jpnh4)=0.024*tmask(:,:,1)172 trn(:,:, 9,jpdom)=0.06*tmask(:,:,1)173 174 trn(:,:,10,jpdet) =0.025*tmask(:,:,1)175 trn(:,:,10,jpzoo) =0.016*tmask(:,:,1)176 trn(:,:,10,jpphy) =0.029*tmask(:,:,1)177 trn(:,:,10,jpno3) =2.462*tmask(:,:,1)178 trn(:,:,10,jpnh4) =0.04*tmask(:,:,1)179 trn(:,:,10,jpdom) =0.022*tmask(:,:,1)180 181 trn(:,:,11,jpdet) =0.0057*tmask(:,:,1)182 trn(:,:,11,jpzoo) =0.0005*tmask(:,:,1)183 trn(:,:,11,jpphy) =0.0006*tmask(:,:,1)184 trn(:,:,11,jpno3) =3.336*tmask(:,:,1)185 trn(:,:,11,jpnh4) =0.005*tmask(:,:,1)186 trn(:,:,11,jpdom) =0.004*tmask(:,:,1)187 188 trn(:,:,12,jpdet) =0.002*tmask(:,:,1)189 trn(:,:,12,jpzoo) =1.e-6*tmask(:,:,1)190 trn(:,:,12,jpphy) =5.e-6*tmask(:,:,1)191 trn(:,:,12,jpno3) =4.24*tmask(:,:,1)192 trn(:,:,12,jpnh4) =0.001*tmask(:,:,1)193 trn(:,:,12,jpdom) =3.e-5*tmask(:,:,1)126 DO jk = 1, 7 127 trn(:,:,jk,jpdet) = 0.016 * tmask(:,:,jk) 128 trn(:,:,jk,jpzoo) = 0.018 * tmask(:,:,jk) 129 trn(:,:,jk,jpphy) = 0.036 * tmask(:,:,jk) 130 trn(:,:,jk,jpno3) = 1.e-5 * tmask(:,:,jk) 131 trn(:,:,jk,jpnh4) = 5.e-4 * tmask(:,:,jk) 132 trn(:,:,jk,jpdom) = 0.017 * tmask(:,:,jk) 133 END DO 134 135 trn(:,:, 8,jpdet) = 0.020 * tmask(:,:, 8) 136 trn(:,:, 8,jpzoo) = 0.027 * tmask(:,:, 8) 137 trn(:,:, 8,jpphy) = 0.041 * tmask(:,:, 8) 138 trn(:,:, 8,jpno3) = 0.00022 * tmask(:,:, 8) 139 trn(:,:, 8,jpnh4) = 0.0033 * tmask(:,:, 8) 140 trn(:,:, 8,jpdom) = 0.021 * tmask(:,:, 8) 141 142 trn(:,:, 9,jpdet) = 0.0556 * tmask(:,:, 9) 143 trn(:,:, 9,jpzoo) = 0.123 * tmask(:,:, 9) 144 trn(:,:, 9,jpphy) = 0.122 * tmask(:,:, 9) 145 trn(:,:, 9,jpno3) = 0.028 * tmask(:,:, 9) 146 trn(:,:, 9,jpnh4) = 0.024 * tmask(:,:, 9) 147 trn(:,:, 9,jpdom) = 0.06 * tmask(:,:, 9) 148 149 trn(:,:,10,jpdet) = 0.025 * tmask(:,:,10) 150 trn(:,:,10,jpzoo) = 0.016 * tmask(:,:,10) 151 trn(:,:,10,jpphy) = 0.029 * tmask(:,:,10) 152 trn(:,:,10,jpno3) = 2.462 * tmask(:,:,10) 153 trn(:,:,10,jpnh4) = 0.04 * tmask(:,:,10) 154 trn(:,:,10,jpdom) = 0.022 * tmask(:,:,10) 155 156 trn(:,:,11,jpdet) = 0.0057 * tmask(:,:,11) 157 trn(:,:,11,jpzoo) = 0.0005 * tmask(:,:,11) 158 trn(:,:,11,jpphy) = 0.0006 * tmask(:,:,11) 159 trn(:,:,11,jpno3) = 3.336 * tmask(:,:,11) 160 trn(:,:,11,jpnh4) = 0.005 * tmask(:,:,11) 161 trn(:,:,11,jpdom) = 0.004 * tmask(:,:,11) 162 163 trn(:,:,12,jpdet) = 0.002 * tmask(:,:,12) 164 trn(:,:,12,jpzoo) = 1.e-6 * tmask(:,:,12) 165 trn(:,:,12,jpphy) = 5.e-6 * tmask(:,:,12) 166 trn(:,:,12,jpno3) = 4.24 * tmask(:,:,12) 167 trn(:,:,12,jpnh4) = 0.001 * tmask(:,:,12) 168 trn(:,:,12,jpdom) = 3.e-5 * tmask(:,:,12) 194 169 195 170 DO jk=13,jpk 196 trn(:,:,jk,jpdet) =0.0197 trn(:,:,jk,jpzoo) =0.0198 trn(:,:,jk,jpphy) =0.0199 trn(:,:,jk,jpnh4) =0.0200 trn(:,:,jk,jpdom) =0.0201 END DO 202 203 trn(:,:,13,jpno3) =5.31*tmask(:,:,13)204 trn(:,:,14,jpno3) =6.73*tmask(:,:,14)205 trn(:,:,15,jpno3) =8.32*tmask(:,:,15)206 trn(:,:,16,jpno3) =10.13*tmask(:,:,16)207 trn(:,:,17,jpno3) =11.95*tmask(:,:,17)208 trn(:,:,18,jpno3) =13.57*tmask(:,:,18)209 trn(:,:,19,jpno3) =15.08*tmask(:,:,19)210 trn(:,:,20,jpno3) =16.41*tmask(:,:,20)211 trn(:,:,21,jpno3) =17.47*tmask(:,:,21)212 trn(:,:,22,jpno3) =18.29*tmask(:,:,22)213 trn(:,:,23,jpno3) =18.88*tmask(:,:,23)214 trn(:,:,24,jpno3) =19.30*tmask(:,:,24)215 trn(:,:,25,jpno3) =19.68*tmask(:,:,25)216 trn(:,:,26,jpno3) =19.91*tmask(:,:,26)217 trn(:,:,27,jpno3) =19.99*tmask(:,:,27)218 trn(:,:,28,jpno3) =20.01*tmask(:,:,28)219 trn(:,:,29,jpno3) =20.01*tmask(:,:,29)220 trn(:,:,30,jpno3) =20.01*tmask(:,:,30)171 trn(:,:,jk,jpdet) = 0.e0 172 trn(:,:,jk,jpzoo) = 0.e0 173 trn(:,:,jk,jpphy) = 0.e0 174 trn(:,:,jk,jpnh4) = 0.e0 175 trn(:,:,jk,jpdom) = 0.e0 176 END DO 177 178 trn(:,:,13,jpno3) = 5.31 * tmask(:,:,13) 179 trn(:,:,14,jpno3) = 6.73 * tmask(:,:,14) 180 trn(:,:,15,jpno3) = 8.32 * tmask(:,:,15) 181 trn(:,:,16,jpno3) = 10.13 * tmask(:,:,16) 182 trn(:,:,17,jpno3) = 11.95 * tmask(:,:,17) 183 trn(:,:,18,jpno3) = 13.57 * tmask(:,:,18) 184 trn(:,:,19,jpno3) = 15.08 * tmask(:,:,19) 185 trn(:,:,20,jpno3) = 16.41 * tmask(:,:,20) 186 trn(:,:,21,jpno3) = 17.47 * tmask(:,:,21) 187 trn(:,:,22,jpno3) = 18.29 * tmask(:,:,22) 188 trn(:,:,23,jpno3) = 18.88 * tmask(:,:,23) 189 trn(:,:,24,jpno3) = 19.30 * tmask(:,:,24) 190 trn(:,:,25,jpno3) = 19.68 * tmask(:,:,25) 191 trn(:,:,26,jpno3) = 19.91 * tmask(:,:,26) 192 trn(:,:,27,jpno3) = 19.99 * tmask(:,:,27) 193 trn(:,:,28,jpno3) = 20.01 * tmask(:,:,28) 194 trn(:,:,29,jpno3) = 20.01 * tmask(:,:,29) 195 trn(:,:,30,jpno3) = 20.01 * tmask(:,:,30) 221 196 222 197 #elif defined key_trc_lobster1 && defined key_gyre 223 ! init NO3=f(density) by asklod AS Kremeur 2005-07 224 trn(:,:,:,jpdet)=0.1*tmask(:,:,:) 225 trn(:,:,:,jpzoo)=0.1*tmask(:,:,:) 226 trn(:,:,:,jpnh4)=0.1*tmask(:,:,:) 227 trn(:,:,:,jpphy)=0.1*tmask(:,:,:) 228 trn(:,:,:,jpdom)=1.*tmask(:,:,:) 229 DO jk=1,jpk 230 DO jj=1,jpj 231 DO ji=1,jpi 232 IF (rhd(ji,jj,jk).LE.24.5e-3) THEN 233 trn(ji,jj,jk,jpno3)=2.*tmask(ji,jj,jk) 198 ! LOBSTER initialisation for GYRE 199 ! ---------------------- 200 ! here: init NO3=f(density) by asklod AS Kremeur 2005-07 201 trn(:,:,:,jpdet) = 0.1 * tmask(:,:,:) 202 trn(:,:,:,jpzoo) = 0.1 * tmask(:,:,:) 203 trn(:,:,:,jpnh4) = 0.1 * tmask(:,:,:) 204 trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:) 205 trn(:,:,:,jpdom) = 1.0 * tmask(:,:,:) 206 DO jk = 1, jpk 207 DO jj = 1, jpj 208 DO ji = 1, jpi 209 IF( rhd(ji,jj,jk) <= 24.5e-3 ) THEN 210 trn(ji,jj,jk,jpno3) = 2. * tmask(ji,jj,jk) 234 211 ELSE 235 trn(ji,jj,jk,jpno3) =(15.55*(rhd(ji,jj,jk)*1000)-380.11)*tmask(ji,jj,jk)212 trn(ji,jj,jk,jpno3) = ( 15.55 * ( rhd(ji,jj,jk) * 1000. ) - 380.11 ) * tmask(ji,jj,jk) 236 213 ENDIF 237 214 END DO … … 240 217 241 218 #else 242 243 !! general case 244 dojn = 1, jptra245 trn(:,:,:,jn) =0.1*tmask(:,:,:)246 enddo219 ! Default case 220 ! ------------ 221 DO jn = 1, jptra 222 trn(:,:,:,jn) = 0.1 * tmask(:,:,:) 223 END DO 247 224 248 225 #endif 249 226 250 227 #if defined key_dtatrc 251 !! Initialization of tracer from a file 252 !! that may also be used for damping 228 ! Initialization of tracer from a file that may also be used for damping 253 229 CALL dta_trc( nittrc000 ) 254 DO jk = 1, jptra 255 IF( lutini(jk) ) THEN 256 !! initialisation from file 257 trn(:,:,:,jk) = trdta(:,:,:,jk)*tmask(:,:,:) 258 ENDIF 259 END DO 260 #endif 261 262 !! before field : 263 !! ------------- 230 DO jn = 1, jptra 231 IF( lutini(jn) ) trn(:,:,:,jk) = trdta(:,:,:,jn) * tmask(:,:,:) ! initialisation from file if required 232 END DO 233 #endif 234 235 ! before field : 236 ! ------------- 264 237 trb(:,:,:,:) = trn(:,:,:,:) 265 238 266 239 #if defined key_trc_lobster1 267 !! initialize the POC in sediments 268 269 sedpocb(:,:) = 0. 270 sedpocn(:,:) = 0. 271 sedpoca(:,:) = 0. 272 #endif 273 274 END SUBROUTINE trc_dtr 240 ! initialize the POC in sediments 241 sedpocb(:,:) = 0.e0 242 sedpocn(:,:) = 0.e0 243 sedpoca(:,:) = 0.e0 244 #endif 245 ! 246 END SUBROUTINE trc_dtr 275 247 276 248 #else 277 278 SUBROUTINE trc_dtr 279 !!====================== 280 !! no passive tracers 281 !!====================== 282 END SUBROUTINE trc_dtr 283 #endif 284 249 !!---------------------------------------------------------------------- 250 !! Dummy module : No passive tracer 251 !!---------------------------------------------------------------------- 252 CONTAINS 253 SUBROUTINE trc_dtr ! Empty routine 254 END SUBROUTINE trc_dtr 255 #endif 256 257 !!====================================================================== 285 258 END MODULE trcdtr
Note: See TracChangeset
for help on using the changeset viewer.