Changeset 3192
- Timestamp:
- 2011-12-05T14:55:12+01:00 (12 years ago)
- Location:
- branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zflx.F90
r3160 r3192 305 305 t_oce_co2_flx = 0._wp 306 306 ! 307 CALL p4z_patm( nit000 ) 308 ! 307 309 END SUBROUTINE p4z_flx_init 308 310 … … 326 328 327 329 ! ! -------------------- ! 328 IF( kt == nit trc000 ) THEN ! First call kt=nittrc000 !330 IF( kt == nit000 ) THEN ! First call kt=nittrc000 ! 329 331 ! ! -------------------- ! 330 332 ! !* set file information (default values) -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlys.F90
r3160 r3192 61 61 INTEGER, INTENT(in) :: kt ! ocean time step 62 62 INTEGER :: ji, jj, jk, jn 63 REAL(wp) :: zalk, zdic, zph, z remco3, zah263 REAL(wp) :: zalk, zdic, zph, zah2 64 64 REAL(wp) :: zdispot, zfact, zcalcon, zalka, zaldi 65 65 REAL(wp) :: zomegaca, zexcess, zexcess0 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90
r3160 r3192 340 340 IF( nn_timing == 1 ) CALL timing_start('p4z_sbc') 341 341 ! 342 ! Compute dust at nit trc000 or only if there is more than 1 time record in dust file342 ! Compute dust at nit000 or only if there is more than 1 time record in dust file 343 343 IF( ln_dust ) THEN 344 IF( kt == nit trc000 .OR. ( kt /= nittrc000 .AND. ntimes_dust > 1 ) ) THEN344 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_dust > 1 ) ) THEN 345 345 CALL fld_read( kt, 1, sf_dust ) 346 346 dust(:,:) = sf_dust(1)%fnow(:,:,1) … … 349 349 350 350 ! N/P and Si releases due to coastal rivers 351 ! Compute river at nit trc000 or only if there is more than 1 time record in river file351 ! Compute river at nit000 or only if there is more than 1 time record in river file 352 352 ! ----------------------------------------- 353 353 IF( ln_river ) THEN 354 IF( kt == nit trc000 .OR. ( kt /= nittrc000 .AND. ntimes_riv > 1 ) ) THEN354 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_riv > 1 ) ) THEN 355 355 CALL fld_read( kt, 1, sf_riverdic ) 356 356 CALL fld_read( kt, 1, sf_riverdoc ) … … 365 365 ENDIF 366 366 367 ! Compute N deposition at nit trc000 or only if there is more than 1 time record in N deposition file367 ! Compute N deposition at nit000 or only if there is more than 1 time record in N deposition file 368 368 IF( ln_ndepo ) THEN 369 IF( kt == nit trc000 .OR. ( kt /= nittrc000 .AND. ntimes_ndep > 1 ) ) THEN369 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_ndep > 1 ) ) THEN 370 370 CALL fld_read( kt, 1, sf_ndepo ) 371 371 DO jj = 1, jpj … … 597 597 ENDIF 598 598 ! 599 IF( ll_sbc ) CALL p4z_sbc( nit000 ) 600 ! 599 601 IF(lwp) THEN 600 602 WRITE(numout,*) -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
r2977 r3192 26 26 USE p4zflx ! Gas exchange 27 27 USE p4zsed ! Sedimentation 28 USE p4zlim ! Co-limitations of differents nutrients 29 USE p4zprod ! Growth rate of the 2 phyto groups 30 USE p4zmicro ! Sources and sinks of microzooplankton 31 USE p4zmeso ! Sources and sinks of mesozooplankton 32 USE p4zmort ! Mortality terms for phytoplankton 33 USE p4zlys ! Calcite saturation 34 USE p4zsed ! Sedimentation 28 35 29 36 IMPLICIT NONE … … 55 62 !!---------------------------------------------------------------------- 56 63 ! 64 INTEGER :: ji, jj, jk 65 REAL(wp) :: zcaralk, zbicarb, zco3 66 REAL(wp) :: ztmas, ztmas1 67 !!---------------------------------------------------------------------- 57 68 IF(lwp) WRITE(numout,*) 58 69 IF(lwp) WRITE(numout,*) ' trc_ini_pisces : PISCES biochemical model initialisation' … … 123 134 ENDIF 124 135 136 IF( .NOT. ln_rsttr ) THEN 137 ! Initialization of chemical variables of the carbon cycle 138 ! -------------------------------------------------------- 139 DO jk = 1, jpk 140 DO jj = 1, jpj 141 DO ji = 1, jpi 142 ztmas = tmask(ji,jj,jk) 143 ztmas1 = 1. - tmask(ji,jj,jk) 144 zcaralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) ) ) 145 zco3 = ( zcaralk - trn(ji,jj,jk,jpdic) ) * ztmas + 0.5e-3 * ztmas1 146 zbicarb = ( 2. * trn(ji,jj,jk,jpdic) - zcaralk ) 147 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * zbicarb / zco3 ) * ztmas + 1.e-9 * ztmas1 148 END DO 149 END DO 150 END DO 151 ! 152 END IF 153 154 ! Time step duration for biology 155 xstep = rfact2 / rday 156 157 CALL p4z_sink_init ! vertical flux of particulate organic matter 158 CALL p4z_opt_init ! Optic: PAR in the water column 159 CALL p4z_lim_init ! co-limitations by the various nutrients 160 CALL p4z_prod_init ! phytoplankton growth rate over the global ocean. 161 CALL p4z_rem_init ! remineralisation 162 CALL p4z_mort_init ! phytoplankton mortality 163 CALL p4z_micro_init ! microzooplankton 164 CALL p4z_meso_init ! mesozooplankton 165 CALL p4z_sed_init ! sedimentation 166 CALL p4z_lys_init ! calcite saturation 167 CALL p4z_flx_init ! gas exchange 168 169 ndayflxtr = 0 170 125 171 IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' 126 172 IF(lwp) WRITE(numout,*) ' ' … … 135 181 !! ** Purpose : Allocate all the dynamic arrays of PISCES 136 182 !!---------------------------------------------------------------------- 137 USE p4zsink , ONLY : p4z_sink_alloc138 USE p4zopt , ONLY : p4z_opt_alloc139 USE p4zprod , ONLY : p4z_prod_alloc140 USE p4zrem , ONLY : p4z_rem_alloc141 USE p4zsed , ONLY : p4z_sed_alloc142 USE p4zflx , ONLY : p4z_flx_alloc143 183 ! 144 184 INTEGER :: ierr -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
r3175 r3192 18 18 USE p4zbio ! Biological model 19 19 USE p4zche ! Chemical model 20 USE p4zsink ! vertical flux of particulate matter due to sinking21 USE p4zopt ! optical model22 USE p4zlim ! Co-limitations of differents nutrients23 USE p4zprod ! Growth rate of the 2 phyto groups24 USE p4zmort ! Mortality terms for phytoplankton25 USE p4zmicro ! Sources and sinks of microzooplankton26 USE p4zmeso ! Sources and sinks of mesozooplankton27 USE p4zrem ! Remineralisation of organic matter28 20 USE p4zlys ! Calcite saturation 29 21 USE p4zflx ! Gas exchange … … 74 66 IF( nn_timing == 1 ) CALL timing_start('trc_sms_pisces') 75 67 ! 76 IF( kt == nittrc000 ) CALL trc_sms_pisces_init ! Initialization (first time-step only)77 68 IF( ln_pisdmp .AND. MOD( kt - nn_dttrc, nn_pisdmp ) == 0 ) CALL trc_sms_pisces_dmp( kt ) ! Relaxation of some tracers 78 CALL trc_sms_pisces_mass_conserv( kt ) 69 CALL trc_sms_pisces_mass_conserv( kt ) ! Mass conservation checking 79 70 80 71 IF( ndayflxtr /= nday_year ) THEN ! New days … … 176 167 177 168 END SUBROUTINE trc_sms_pisces_dmp 178 179 SUBROUTINE trc_sms_pisces_init180 !!----------------------------------------------------------------------181 !! *** ROUTINE trc_sms_pisces_init ***182 !!183 !! ** Purpose : Initialization of PH variable184 !!185 !!----------------------------------------------------------------------186 INTEGER :: ji, jj, jk187 REAL(wp) :: zcaralk, zbicarb, zco3188 REAL(wp) :: ztmas, ztmas1189 190 IF( .NOT. ln_rsttr ) THEN191 ! Initialization of chemical variables of the carbon cycle192 ! --------------------------------------------------------193 DO jk = 1, jpk194 DO jj = 1, jpj195 DO ji = 1, jpi196 ztmas = tmask(ji,jj,jk)197 ztmas1 = 1. - tmask(ji,jj,jk)198 zcaralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.E-8 / ( rtrn + akb3(ji,jj,jk) ) )199 zco3 = ( zcaralk - trn(ji,jj,jk,jpdic) ) * ztmas + 0.5e-3 * ztmas1200 zbicarb = ( 2. * trn(ji,jj,jk,jpdic) - zcaralk )201 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * zbicarb / zco3 ) * ztmas + 1.e-9 * ztmas1202 END DO203 END DO204 END DO205 !206 END IF207 208 ! Time step duration for biology209 xstep = rfact2 / rday210 211 CALL p4z_sink_init ! vertical flux of particulate organic matter212 CALL p4z_opt_init ! Optic: PAR in the water column213 CALL p4z_lim_init ! co-limitations by the various nutrients214 CALL p4z_prod_init ! phytoplankton growth rate over the global ocean.215 CALL p4z_rem_init ! remineralisation216 CALL p4z_mort_init ! phytoplankton mortality217 CALL p4z_micro_init ! microzooplankton218 CALL p4z_meso_init ! mesozooplankton219 CALL p4z_sed_init ! sedimentation220 CALL p4z_lys_init ! calcite saturation221 CALL p4z_flx_init ! gas exchange222 223 ndayflxtr = 0224 225 END SUBROUTINE trc_sms_pisces_init226 169 227 170 SUBROUTINE trc_sms_pisces_mass_conserv ( kt ) … … 277 220 ENDIF 278 221 ENDIF 279 9500 FORMAT(i 6,e18.10)222 9500 FORMAT(i10,e18.10) 280 223 ! 281 224 END SUBROUTINE trc_sms_pisces_mass_conserv -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/trc.F90
r3175 r3192 79 79 !! additional 2D/3D outputs namelist 80 80 !! -------------------------------------------------- 81 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:, :) :: trc2d!: additional 2d outputs array82 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: trc3d!: additional 3d outputs array83 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2d!: 2d field short name84 CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2l!: 2d field long name85 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2u!: 2d field unit86 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3d!: 3d field short name87 CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3l!: 3d field long name88 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3u!: 3d field unit81 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:, :) :: trc2d !: additional 2d outputs array 82 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: trc3d !: additional 3d outputs array 83 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2d !: 2d field short name 84 CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2l !: 2d field long name 85 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc2u !: 2d field unit 86 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3d !: 3d field short name 87 CHARACTER(len = 80), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3l !: 3d field long name 88 CHARACTER(len = 20), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ctrc3u !: 3d field unit 89 89 LOGICAL , PUBLIC :: ln_diatrc !: boolean term for additional diagnostic 90 90 INTEGER , PUBLIC :: nn_writedia !: frequency of additional outputs … … 105 105 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsn_tm !: t/s average [m/s] 106 106 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_tm !: vertical diffusivity coeff. at w-point [m2/s] 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rhop_tm !: Density107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rhop_tm !: 108 108 # if defined key_zdfddm 109 109 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avs_tm !: vertical double diffusivity coeff. at w-point [m/s] … … 163 163 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsn_temp 164 164 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: un_temp,vn_temp,wn_temp !: hold current values of avt, un, vn, wn 165 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_temp, rhop_temp 165 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_temp, rhop_temp !: hold current values of avt, un, vn, wn 166 166 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3t_temp,e3u_temp,e3v_temp,e3w_temp !: hold current values 167 167 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshn_temp, sshb_temp, ssha_temp, rnf_temp,h_rnf_temp -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/trcdta.F90
r3160 r3192 183 183 IF( ln_sco ) THEN !== s- or mixed s-zps-coordinate ==! 184 184 ! 185 IF( kt == nit trc000 .AND. lwp )THEN185 IF( kt == nit000 .AND. lwp )THEN 186 186 WRITE(numout,*) 187 187 WRITE(numout,*) 'trc_dta: interpolates passive tracer data onto the s- or mixed s-z-coordinate mesh' … … 238 238 ENDDO 239 239 ! 240 IF( lwp .AND. kt == nit trc000 ) THEN240 IF( lwp .AND. kt == nit000 ) THEN 241 241 DO jn = 1, ntra 242 242 clndta = TRIM( sf_trcdta(jn)%clvar ) -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r3174 r3192 77 77 78 78 CALL trc_nam ! read passive tracers namelists 79 ! ! masked grid volume 80 DO jk = 1, jpk 81 cvol(:,:,jk) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk) 82 END DO 83 IF( lk_degrad ) cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:) ! degrad option: reduction by facvol 84 ! ! total volume of the ocean 85 areatot = glob_sum( cvol(:,:,:) ) 79 86 80 87 IF( lk_lobster ) THEN ; CALL trc_ini_lobster ! LOBSTER bio-model … … 139 146 IF( ln_zps .AND. .NOT. lk_c1d ) & ! Partial steps: before horizontal gradient of passive 140 147 & CALL zps_hde( nit000, jptra, trn, gtru, gtrv ) ! tracers at the bottom ocean level 141 ! ! masked grid volume142 DO jk = 1, jpk143 cvol(:,:,jk) = e1e2t(:,:) * fse3t(:,:,jk) * tmask(:,:,jk)144 END DO145 IF( lk_degrad ) cvol(:,:,:) = cvol(:,:,:) * facvol(:,:,:) ! degrad option: reduction by facvol146 ! ! total volume of the ocean147 areatot = glob_sum( cvol(:,:,:) )148 148 149 149 ! -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
r3175 r3192 98 98 END DO 99 99 IF( lwp ) WRITE(numstr,9300) kt, ztrai / areatot 100 9300 FORMAT(i 6,e18.10)100 9300 FORMAT(i10,e18.10) 101 101 ! 102 102 IF( nn_timing == 1 ) CALL timing_stop('trc_stp') -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/TOP_SRC/trcsub.F90
r3175 r3192 172 172 wn_temp (:,:,:) = wn (:,:,:) 173 173 tsn_temp (:,:,:,:) = tsn (:,:,:,:) 174 rhop_temp (:,:,:) = rhop (:,:,:) 174 rhop_temp (:,:,:) = rhop (:,:,:) 175 175 avt_temp (:,:,:) = avt (:,:,:) 176 176 # if defined key_zdfddm 177 avs_temp (:,:,:)= avs (:,:,:)177 avs_temp (:,:,:) = avs (:,:,:) 178 178 # endif 179 179 #if defined key_ldfslp … … 474 474 CALL lbc_lnk( avt (:,:,:) , 'W', 1. ) 475 475 # if defined key_zdfddm 476 CALL lbc_lnk( avs (:,:,:) , 'W', 1. )476 CALL lbc_lnk( avs (:,:,:) , 'W', 1. ) 477 477 # endif 478 478 #if defined key_ldfslp … … 1035 1035 ALLOCATE( un_temp(jpi,jpj,jpk) , vn_temp(jpi,jpj,jpk) , & 1036 1036 & wn_temp(jpi,jpj,jpk) , avt_temp(jpi,jpj,jpk) , & 1037 & rhop_temp(jpi,jpj,jpk) , rhop_tm(jpi,jpj,jpk) , & 1037 1038 & sshn_temp(jpi,jpj) , sshb_temp(jpi,jpj) , & 1038 1039 & ssha_temp(jpi,jpj) , sshu_a_temp(jpi,jpj), & … … 1059 1060 & avs_tm(jpi,jpj,jpk) , avs_temp(jpi,jpj,jpk) , & 1060 1061 # endif 1061 & rhop_tm(jpi,jpj,jpk) , rhop_temp(jpi,jpj,jpk) , &1062 1062 #if defined key_traldf_c3d 1063 1063 & ahtt_tm(jpi,jpj,jpk) , ahtt_temp(jpi,jpj,jpk), &
Note: See TracChangeset
for help on using the changeset viewer.