Changeset 1077
- Timestamp:
- 2008-06-05T14:21:08+02:00 (16 years ago)
- Location:
- trunk/NEMO/TOP_SRC
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/par_trc.F90
r945 r1077 30 30 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_lobster_3d + jp_pisces_3d + jp_cfc_3d + jp_my_trc_3d 31 31 ! ! total number of sms diagnostic arrays 32 INTEGER, PUBLIC, PARAMETER :: jpdia bio= jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_my_trc_trd32 INTEGER, PUBLIC, PARAMETER :: jpdiatrd = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_my_trc_trd 33 33 34 34 ! 1D configuration ("key_c1d") -
trunk/NEMO/TOP_SRC/trc.F90
r945 r1077 134 134 135 135 # endif 136 137 # if defined key_trc_diabio 138 139 !! Biological trends 140 !! ----------------- 141 CHARACTER(len=8), DIMENSION(jpdiabio) :: ctrbio !: biological trends name (NAMELIST) 142 CHARACTER(len=20), DIMENSION(jpdiabio) :: ctrbiu !: biological trends unit (NAMELIST) 143 CHARACTER(len=80), DIMENSION(jpdiabio) :: ctrbil !: biological trends long name (NAMELIST) 144 REAL(wp), DIMENSION(jpi,jpj,jpk,jpdiabio) :: trbio !: biological trends 145 146 !! Netcdf output parameters 147 !! ------------------------ 148 INTEGER :: nwritebio !: time step frequency for biological outputs (NAMELIST) 149 150 # endif 151 136 152 137 153 !! passive tracers data read and at given time_step -
trunk/NEMO/TOP_SRC/trcctl.F90
r945 r1077 14 14 USE oce_trc 15 15 USE trc 16 USE sms17 16 USE trctrp_ctl 17 USE trcctl_lobster 18 USE trcctl_pisces 19 USE trcctl_cfc 20 USE trcctl_my_trc 18 21 19 22 IMPLICIT NONE … … 81 84 IF(lwp) WRITE(numout,*) ' ' 82 85 83 # if defined key_lobster 84 # include "trcctl.lobster.h90" 86 IF( lk_lobster ) THEN ; CALL trc_ctl_lobster ! LOBSTER bio-model 87 ELSE ; IF(lwp) WRITE(numout,*) ' LOBSTER not used' 88 ENDIF 85 89 86 # elif defined key_pisces 87 # include "trcctl.pisces.h90" 90 IF( lk_pisces ) THEN ; CALL trc_ctl_pisces ! PISCES bio-model 91 ELSE ; IF(lwp) WRITE(numout,*) ' PISCES not used' 92 ENDIF 88 93 89 # elif defined key_cfc 90 # include "trcctl.cfc.h90" 94 IF( lk_cfc ) THEN ; CALL trc_ctl_cfc ! CFC tracers 95 ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used' 96 ENDIF 91 97 92 # else 93 IF(lwp) WRITE (numout,*) ' No Source/Sink'94 IF(lwp) WRITE (numout,*)95 #endif 98 IF( lk_my_trc ) THEN ; CALL trc_ctl_my_trc ! MY_TRC tracers 99 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used' 100 ENDIF 101 96 102 97 103 ! E r r o r control -
trunk/NEMO/TOP_SRC/trcdia.F90
r1011 r1077 52 52 # endif 53 53 # if defined key_trc_diabio 54 INTEGER :: nitb !: id. for additional array output file 54 55 INTEGER :: ndepitb !: id for depth mesh 55 56 INTEGER :: nhoritb !: id for horizontal mesh … … 636 637 !! IF kindic >0, output of fields before the time step loop 637 638 !!---------------------------------------------------------------------- 638 USE sms639 639 !! 640 640 INTEGER, INTENT( in ) :: kt ! ocean time-step -
trunk/NEMO/TOP_SRC/trcdta.F90
r1011 r1077 12 12 !! 'key_top' and 'key_dtatrc' TOP model + passive tracer data 13 13 !!---------------------------------------------------------------------- 14 !! dta_trc: read ocean passive tracer data14 !! trc_dta : read ocean passive tracer data 15 15 !!---------------------------------------------------------------------- 16 16 USE oce_trc … … 23 23 PRIVATE 24 24 25 PUBLIC trc_dta ! called in trc dtr.F90 and trcdmp.F9025 PUBLIC trc_dta ! called in trcini.F90 and trcdmp.F90 26 26 27 27 REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk,jptra) :: trdta !: tracer data at given time-step … … 82 82 ! Initialization 83 83 iman = jpmois 84 i15 = nday /1684 i15 = nday / 16 85 85 imois = nmonth + i15 -1 86 86 IF( imois == 0 ) imois = iman -
trunk/NEMO/TOP_SRC/trcini.F90
r1011 r1077 81 81 IF( lk_mpp ) CALL mpp_sum( areatot ) ! sum over the global domain 82 82 83 CALL trc_lec ! READ passive tracers namelists83 CALL trc_lec ! READ passive tracers namelists 84 84 85 CALL trc_ctl ! control consistency between parameters, cpp key and namelists85 CALL trc_ctl ! control consistency between parameters, cpp key 86 86 87 87 IF( lk_lobster ) THEN ; CALL trc_ini_lobster ! LOBSTER bio-model -
trunk/NEMO/TOP_SRC/trclec.F90
r945 r1077 21 21 USE trc 22 22 USE trctrp_lec 23 USE trclsm 23 USE trclsm_lobster ! LOBSTER namelist 24 USE trclsm_pisces ! PISCES namelist 25 USE trclsm_cfc ! CFC SMS namelist 26 USE trclsm_my_trc ! MY_TRC SMS namelist 27 USE in_out_manager ! I/O manager 24 28 25 29 IMPLICIT NONE … … 44 48 !! ** Purpose : READ and PRINT options for the passive tracer run (namelist) 45 49 !! 46 !! ** Method : - read namelist 50 !! ** Method : - read passive tracer namelist 51 !! - read namelist of each defined SMS model 52 !! ( (LOBSTER, PISCES, CFC, MY_TRC ) 47 53 !!--------------------------------------------------------------------- 48 54 INTEGER :: jn 49 55 CHARACTER (len=32) :: clname 50 56 57 ! Definition of a tracer as a structure 51 58 TYPE PTRACER 52 CHARACTER(len = 20) :: sname 53 CHARACTER(len = 80 ) :: lname 54 CHARACTER(len = 20 ) :: unit 55 LOGICAL :: lini 56 LOGICAL :: lsav 59 CHARACTER(len = 20) :: sname !: short name 60 CHARACTER(len = 80 ) :: lname !: long name 61 CHARACTER(len = 20 ) :: unit !: unit 62 LOGICAL :: lini !: read in a file or not 63 LOGICAL :: lsav !: ouput the tracer or not 57 64 END TYPE PTRACER 58 65 66 TYPE(PTRACER) , DIMENSION(jptra) :: tracer 67 59 68 #if defined key_trc_diaadd 60 69 ! definition of additional diagnostic as a structure 61 70 TYPE DIAG 62 CHARACTER(len = 20) :: snamedia 63 CHARACTER(len = 80 ) :: lnamedia 64 CHARACTER(len = 20 ) :: unitdia 71 CHARACTER(len = 20) :: snamedia !: short name 72 CHARACTER(len = 80 ) :: lnamedia !: long name 73 CHARACTER(len = 20 ) :: unitdia !: unit 65 74 END TYPE DIAG 66 75 67 #endif68 69 TYPE(PTRACER) , DIMENSION(jptra) :: tracer70 71 #if defined key_trc_diaadd72 76 TYPE(DIAG) , DIMENSION(jpdia2d) :: diag2d 73 77 TYPE(DIAG) , DIMENSION(jpdia3d) :: diag3d … … 184 188 ctrc2u(jn) = ' ' ! units 185 189 END DO 186 187 190 ! ! 3D output arrays 188 191 DO jn = 1, jpdia3d … … 261 264 ! namelist of SMS 262 265 ! --------------- 263 CALL trc_lsm 266 IF( lk_lobster ) THEN ; CALL trc_lsm_lobster ! LOBSTER bio-model 267 ELSE ; IF(lwp) WRITE(numout,*) ' LOBSTER not used' 268 ENDIF 269 270 IF( lk_pisces ) THEN ; CALL trc_lsm_pisces ! PISCES bio-model 271 ELSE ; IF(lwp) WRITE(numout,*) ' PISCES not used' 272 ENDIF 273 274 IF( lk_cfc ) THEN ; CALL trc_lsm_cfc ! CFC tracers 275 ELSE ; IF(lwp) WRITE(numout,*) ' CFC not used' 276 ENDIF 277 278 IF( lk_my_trc ) THEN ; CALL trc_lsm_my_trc ! MY_TRC tracers 279 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used' 280 ENDIF 264 281 ! 265 282 END SUBROUTINE trc_lec -
trunk/NEMO/TOP_SRC/trcrst.F90
r1011 r1077 16 16 USE oce_trc 17 17 USE trc 18 USE sms 18 USE sms_lobster ! LOBSTER variables 19 USE sms_pisces ! PISCES variables 19 20 USE trcsms_cfc ! CFC variables 20 21 USE trctrp_lec … … 131 132 END SELECT 132 133 133 CALL iom_open( 'restart .trc', numrtr, kiolib = jprstlib )134 CALL iom_open( 'restart_trc', numrtr, kiolib = jprstlib ) 134 135 135 136 CALL iom_get( numrtr, 'kt' , zkt ) … … 154 155 ! READ prognostic variables and computes diagnostic variable 155 156 DO jn = 1, jptra 156 CALL iom_get( numrtr, jpdom_local, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 157 CALL iom_get( numrtr, jpdom_local, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 157 CALL iom_get( numrtr, jpdom_autoglo, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 158 158 END DO 159 # if defined key_lobster 160 CALL iom_get( numrtr, jpdom_local, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 161 CALL iom_get( numrtr, jpdom_local, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 162 #endif 159 160 DO jn = 1, jptra 161 CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 162 END DO 163 164 #if defined key_lobster 165 CALL iom_get( numrtr, jpdom_autoglo, 'SEDB'//ctrcnm(jpdet), sedpocb(:,:) ) 166 CALL iom_get( numrtr, jpdom_autoglo, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 167 #endif 168 163 169 #if defined key_pisces 164 CALL iom_get( numrtr, jpdom_local, 'Silicalim', xksi(:,:) ) 165 CALL iom_get( numrtr, jpdom_local, 'Silicamax', xksimax(:,:) ) 166 #endif 170 CALL iom_get( numrtr, jpdom_autoglo, 'Silicalim', xksi(:,:) ) 171 CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax', xksimax(:,:) ) 172 #endif 173 167 174 #if defined key_cfc 168 175 DO jn = jp_cfc0, jp_cfc1 169 CALL iom_get( numrtr, jpdom_ local, 'qint'//ctrcnm(jn), qint(:,:,jn) )170 CALL iom_get( numrtr, jpdom_ local, 'qtr'//ctrcnm(jn) , qtr( :,:,jn) )176 CALL iom_get( numrtr, jpdom_autoglo, 'qint'//ctrcnm(jn), qint(:,:,jn) ) 177 CALL iom_get( numrtr, jpdom_autoglo, 'qtr'//ctrcnm(jn) , qtr( :,:,jn) ) 171 178 END DO 172 # endif 173 174 # if defined key_pisces 175 ! ! --------------------------- ! 176 IF( cp_cfg == "orca" .AND. .NOT. lk_trc_c1d ) THEN ! ORCA condiguration (not 1D) ! 177 ! ! --------------------------- ! 178 ! set total alkalinity, phosphate, NO3 & silicate 179 ! total alkalinity 180 ! ----------------------------------------------- 181 ztrasum = 0.e0 182 DO jk = 1, jpk 183 DO jj = 1, jpj 184 DO ji = 1, jpi 185 ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 179 #endif 180 181 #if defined key_pisces 182 ! ! --------------------------- ! 183 IF( cp_cfg == "orca" .AND. .NOT. lk_trc_c1d ) THEN ! ORCA condiguration (not 1D) ! 184 ! ! --------------------------- ! 185 ! set total alkalinity, phosphate, NO3 & silicate 186 ! total alkalinity 187 ! ----------------------------------------------- 188 ztrasum = 0.e0 189 DO jk = 1, jpk 190 DO jj = 1, jpj 191 DO ji = 1, jpi 192 ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 193 # if defined key_off_degrad 194 & * facvol(ji,jj,jk) & 195 # endif 196 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 197 END DO 198 END DO 199 END DO 200 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 201 202 203 ztrasum = ztrasum / areatot * 1.e6 204 IF(lwp) WRITE(numout,*) 'TALK moyen ', ztrasum 205 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / ztrasum 206 207 ! phosphate 208 ! --------- 209 ztrasum = 0.e0 210 DO jk = 1, jpk 211 DO jj = 1, jpj 212 DO ji = 1, jpi 213 ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 186 214 # if defined key_off_degrad 187 215 & * facvol(ji,jj,jk) & 188 216 # endif 189 217 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 190 END DO 191 END DO 192 END DO 193 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 194 195 196 ztrasum = ztrasum / areatot * 1.e6 197 IF(lwp) WRITE(numout,*) 'TALK moyen ', ztrasum 198 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / ztrasum 199 200 ! phosphate 201 ! --------- 202 ztrasum = 0.e0 203 DO jk = 1, jpk 204 DO jj = 1, jpj 205 DO ji = 1, jpi 206 ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 218 END DO 219 END DO 220 END DO 221 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 222 223 ztrasum = ztrasum / areatot * 1.e6 / 122. 224 IF(lwp) WRITE(numout,*) 'PO4 moyen ', ztrasum 225 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / ztrasum 226 227 ! NO3 228 ! --- 229 ztrasum = 0.e0 230 DO jk = 1, jpk 231 DO jj = 1, jpj 232 DO ji = 1, jpi 233 ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 207 234 # if defined key_off_degrad 208 235 & * facvol(ji,jj,jk) & 209 236 # endif 210 237 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 211 END DO212 END DO213 END DO214 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain215 216 ztrasum = ztrasum / areatot * 1.e6 / 122.217 IF(lwp) WRITE(numout,*) 'PO4moyen ', ztrasum218 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / ztrasum219 220 ! NO3221 !---222 ztrasum = 0.e0223 DO jk = 1, jpk224 DO jj = 1, jpj225 DO ji = 1, jpi226 ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj)&238 END DO 239 END DO 240 END DO 241 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 242 243 ztrasum = ztrasum / areatot * 1.e6 / 7.6 244 IF(lwp) WRITE(numout,*) 'NO3 moyen ', ztrasum 245 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / ztrasum 246 247 ! Silicate 248 ! -------- 249 ztrasum = 0.e0 250 DO jk = 1, jpk 251 DO jj = 1, jpj 252 DO ji = 1, jpi 253 ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 227 254 # if defined key_off_degrad 228 255 & * facvol(ji,jj,jk) & 229 256 # endif 230 257 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 231 END DO 232 END DO 233 END DO 234 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 235 236 ztrasum = ztrasum / areatot * 1.e6 / 7.6 237 IF(lwp) WRITE(numout,*) 'NO3 moyen ', ztrasum 238 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / ztrasum 239 240 ! Silicate 241 ! -------- 242 ztrasum = 0.e0 243 DO jk = 1, jpk 244 DO jj = 1, jpj 245 DO ji = 1, jpi 246 ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 247 # if defined key_off_degrad 248 & * facvol(ji,jj,jk) & 249 # endif 250 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 251 END DO 252 END DO 253 END DO 254 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 255 256 IF(lwp) WRITE(numout,*) 'SiO3 moyen ', ztrasum / areatot * 1.e6 257 ztrasum = ztrasum / areatot * 1.e6 258 trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * siomean / ztrasum ) 259 ! 260 ENDIF 258 END DO 259 END DO 260 END DO 261 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 262 263 IF(lwp) WRITE(numout,*) 'SiO3 moyen ', ztrasum / areatot * 1.e6 264 ztrasum = ztrasum / areatot * 1.e6 265 trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * siomean / ztrasum ) 266 ! 267 ENDIF 261 268 262 269 !#if defined key_kriest … … 267 274 ! trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp ) 268 275 !#endif 269 !! Set hi (???) from total alcalinity, borat (???), akb3 (???) and ak23 (???) 270 !! --------------------------------------------------------------------- 271 DO jk = 1, jpk 272 DO jj = 1, jpj 273 DO ji = 1,jpi 274 caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.e-8 / ( rtrn + akb3(ji,jj,jk) ) ) 275 co3 = ( caralk - trn(ji,jj,jk,jpdic) ) * tmask(ji,jj,jk) & 276 & + 0.5e-3 * ( 1.- tmask(ji,jj,jk) ) 277 bicarb = 2.* trn(ji,jj,jk,jpdic) - caralk 278 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) & 279 & + 1.0e-9 * ( 1.- tmask(ji,jj,jk) ) 276 !! Set hi (???) from total alcalinity, borat (???), akb3 (???) and ak23 (???) 277 !! --------------------------------------------------------------------- 278 DO jk = 1, jpk 279 DO jj = 1, jpj 280 DO ji = 1,jpi 281 caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.e-8 / ( rtrn + akb3(ji,jj,jk) ) ) 282 co3 = ( caralk - trn(ji,jj,jk,jpdic) ) * tmask(ji,jj,jk) & 283 & + 0.5e-3 * ( 1.- tmask(ji,jj,jk) ) 284 bicarb = 2.* trn(ji,jj,jk,jpdic) - caralk 285 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) & 286 & + 1.0e-9 * ( 1.- tmask(ji,jj,jk) ) 287 END DO 280 288 END DO 281 289 END DO 282 END DO 283 # endif 290 #endif 284 291 285 292 CALL iom_close( numrtr ) … … 323 330 DO jn = 1, jptra 324 331 CALL iom_rstput( kt, nitrst, numrtw, 'TRN'//ctrcnm(jn), trn(:,:,:,jn) ) 332 END DO 333 334 DO jn = 1, jptra 325 335 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 326 336 END DO … … 330 340 CALL iom_rstput( kt, nitrst, numrtw, 'SEDN'//ctrcnm(jpdet), sedpocn(:,:) ) 331 341 #endif 342 332 343 #if defined key_pisces 333 344 CALL iom_rstput( kt, nitrst, numrtw, 'Silicalim', xksi(:,:) ) 334 345 CALL iom_rstput( kt, nitrst, numrtw, 'Silicamax', xksimax(:,:) ) 335 346 #endif 347 336 348 #if defined key_cfc 337 349 DO jn = jp_cfc0, jp_cfc1 … … 340 352 END DO 341 353 #endif 354 342 355 343 356 IF(lwp) WRITE(numout,*) '----TRACER STAT----'
Note: See TracChangeset
for help on using the changeset viewer.