- Timestamp:
- 2011-08-09T10:29:53+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r2715 r2819 16 16 !! top_alloc : allocate the TOP arrays 17 17 !!---------------------------------------------------------------------- 18 USE oce_trc 19 USE trc 20 USE trcrst 18 USE oce_trc ! shared variables between ocean and passive tracers 19 USE trc ! passive tracers common variables 20 USE trcrst ! passive tracers restart 21 21 USE trcnam ! Namelist read 22 22 USE trcini_cfc ! CFC initialisation … … 25 25 USE trcini_c14b ! C14 bomb initialisation 26 26 USE trcini_my_trc ! MY_TRC initialisation 27 USE trcdta 28 USE daymod 27 USE trcdta ! initialisation form files 28 USE daymod ! calendar manager 29 29 USE zpshde ! partial step: hor. derivative (zps_hde routine) 30 30 USE prtctl_trc ! Print control passive tracers (prt_ctl_trc_init routine) … … 56 56 !! or read data or analytical formulation 57 57 !!--------------------------------------------------------------------- 58 INTEGER :: jk, jn ! dummy loop indices 58 INTEGER :: jk, jn, jl ! dummy loop indices 59 INTEGER :: ierr ! local integer 59 60 CHARACTER (len=25) :: charout 61 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrcdta ! 4D workspace 60 62 !!--------------------------------------------------------------------- 61 63 … … 65 67 66 68 CALL top_alloc() ! allocate TOP arrays 69 70 IF( ln_dm2dc .AND. ( lk_pisces .OR. lk_lobster ) ) & 71 & CALL ctl_stop( ' The diurnal cycle is not compatible with PISCES or LOBSTER ' ) 72 73 IF( nn_cla == 1 ) & 74 & CALL ctl_stop( ' Cross Land Advection not yet implemented with passive tracer ; nn_cla must be 0' ) 67 75 68 76 ! ! masked grid volume … … 71 79 END DO 72 80 73 ! ! total volume of the ocean 74 #if ! defined key_degrad 75 areatot = glob_sum( cvol(:,:,:) ) 76 #else 77 areatot = glob_sum( cvol(:,:,:) * facvol(:,:,:) ) ! degrad option: reduction by facvol 78 #endif 81 ! ! total volume of the ocean ( degrad option: reduction by facvol ) 82 IF( .NOT.lk_degrad ) THEN ; areatot = glob_sum( cvol(:,:,:) ) 83 ELSE ; areatot = glob_sum( cvol(:,:,:) * facvol(:,:,:) ) 84 ENDIF 79 85 80 86 CALL trc_nam ! read passive tracers namelists 81 82 ! ! restart for passive tracer (input)83 IF( ln_rsttr ) THEN84 IF(lwp) WRITE(numout,*) ' read a restart file for passive tracer : ', cn_trcrst_in85 IF(lwp) WRITE(numout,*) ' '86 ELSE87 IF( lwp .AND. lk_dtatrc ) THEN88 DO jn = 1, jptra89 IF( lutini(jn) ) & ! open input FILE only IF lutini(jn) is true90 & WRITE(numout,*) ' read an initial file for passive tracer number :', jn, ' traceur : ', ctrcnm(jn)91 END DO92 ENDIF93 IF( lwp ) WRITE(numout,*)94 ENDIF95 96 IF( ln_dm2dc .AND. ( lk_pisces .OR. lk_lobster ) ) &97 & CALL ctl_stop( ' The diurnal cycle is not compatible with PISCES or LOBSTER ' )98 99 IF( nn_cla == 1 ) &100 & CALL ctl_stop( ' Cross Land Advection not yet implemented with passive tracer ; nn_cla must be 0' )101 87 102 88 IF( lk_lobster ) THEN ; CALL trc_ini_lobster ! LOBSTER bio-model … … 119 105 ELSE ; IF(lwp) WRITE(numout,*) ' MY_TRC not used' 120 106 ENDIF 107 108 IF( ln_trcdta ) CALL trc_dta_init 121 109 122 110 IF( ln_rsttr ) THEN … … 130 118 CALL day_init ! set calendar 131 119 ENDIF 132 #if defined key_dtatrc 133 CALL trc_dta( nit000 ) ! Initialization of tracer from a file that may also be used for damping 134 DO jn = 1, jptra 135 IF( lutini(jn) ) trn(:,:,:,jn) = trdta(:,:,:,jn) * tmask(:,:,:) ! initialisation from file if required 136 END DO 137 #endif 120 IF( ln_trcdta .AND. nb_trcdta > 0 ) THEN ! Initialisation of tracer from a file that may also be used for damping 121 ALLOCATE( ztrcdta(jpi,jpj,jpk,nb_trcdta), STAT=ierr ) 122 IF( ierr > 0 ) THEN 123 CALL ctl_stop( 'trc_ini: unable to allocate ztrcdta array' ) ; RETURN 124 ENDIF 125 ! 126 CALL trc_dta( nit000, ztrcdta ) ! read tracer data at nit000 127 ! 128 DO jn = 1, jptra 129 IF( ln_trc_ini(jn) ) THEN ! update passive tracers arrays with input data read from file 130 jl = n_trc_index(jn) 131 trn(:,:,:,jn) = ztrcdta(:,:,:,jl) * tmask(:,:,:) 132 ENDIF 133 ENDDO 134 DEALLOCATE( ztrcdta ) 135 ENDIF 136 ! 138 137 trb(:,:,:,:) = trn(:,:,:,:) 139 138 ! … … 147 146 148 147 ! 149 trai = 0._wp ! Computation content of all tracers148 trai(:) = 0._wp ! Computation content of all tracers ( degrad option: reduction by facvol ) 150 149 DO jn = 1, jptra 151 #if ! defined key_degrad 152 trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:) ) 153 #else 154 trai = trai + glob_sum( trn(:,:,:,jn) * cvol(:,:,:) * facvol(:,:,:) ) ! degrad option: reduction by facvol 155 #endif 150 IF( .NOT.lk_degrad ) THEN ; trai(jn) = glob_sum( trn(:,:,:,jn) * cvol(:,:,:) ) 151 ELSE ; trai(jn) = glob_sum( trn(:,:,:,jn) * cvol(:,:,:) * facvol(:,:,:) ) 152 ENDIF 156 153 END DO 157 154 … … 161 158 WRITE(numout,*) ' *** Total number of passive tracer jptra = ', jptra 162 159 WRITE(numout,*) ' *** Total volume of ocean = ', areatot 163 WRITE(numout,*) ' *** Total inital content of all tracers = ', trai 160 WRITE(numout,*) ' *** Total inital content of all tracers ' 161 DO jn = 1, jptra 162 WRITE(numout,*) ' tracer nb : ', jn, ' name : ', ctrcnm(jn), ' initial content :', trai(jn) 163 ENDDO 164 164 WRITE(numout,*) 165 165 ENDIF … … 186 186 USE trczdf , ONLY: trc_zdf_alloc 187 187 USE trdmod_trc_oce, ONLY: trd_mod_trc_oce_alloc 188 #if ! defined key_iomput 189 USE trcdia , ONLY: trc_dia_alloc 190 #endif 191 #if defined key_trcdmp 192 USE trcdmp , ONLY: trc_dmp_alloc 193 #endif 194 #if defined key_dtatrc 195 USE trcdta , ONLY: trc_dta_alloc 196 #endif 197 #if defined key_trdmld_trc || defined key_esopa 188 #if defined key_trdmld_trc 198 189 USE trdmld_trc , ONLY: trd_mld_trc_alloc 199 190 #endif … … 207 198 ierr = ierr + trc_zdf_alloc() 208 199 ierr = ierr + trd_mod_trc_oce_alloc() 209 #if ! defined key_iomput 210 ierr = ierr + trc_dia_alloc() 211 #endif 212 #if defined key_trcdmp 213 ierr = ierr + trc_dmp_alloc() 214 #endif 215 #if defined key_dtatrc 216 ierr = ierr + trc_dta_alloc() 217 #endif 218 #if defined key_trdmld_trc || defined key_esopa 200 #if defined key_trdmld_trc 219 201 ierr = ierr + trd_mld_trc_alloc() 220 202 #endif
Note: See TracChangeset
for help on using the changeset viewer.