- Timestamp:
- 2020-09-14T17:40:34+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@13382 sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/TOP/trcini.F90
r10817 r13463 20 20 USE trcnam ! Namelist read 21 21 USE daymod ! calendar manager 22 USE prtctl_trc ! Print control passive tracers (prt_ctl_trc_init routine) 23 USE trcsub ! variables to substep passive tracers 22 USE prtctl ! Print control passive tracers (prt_ctl_init routine) 24 23 USE trcrst 25 24 USE lib_mpp ! distribued memory computing library 26 25 USE trcice ! tracers in sea ice 27 USE trcbc , only : trc_bc_ini! generalized Boundary Conditions26 USE trcbc ! generalized Boundary Conditions 28 27 29 28 IMPLICIT NONE … … 32 31 PUBLIC trc_init ! called by opa 33 32 33 # include "domzgr_substitute.h90" 34 34 !!---------------------------------------------------------------------- 35 35 !! NEMO/TOP 4.0 , NEMO Consortium (2018) … … 39 39 CONTAINS 40 40 41 SUBROUTINE trc_init 41 SUBROUTINE trc_init( Kbb, Kmm, Kaa ) 42 42 !!--------------------------------------------------------------------- 43 43 !! *** ROUTINE trc_init *** … … 51 51 !! or read data or analytical formulation 52 52 !!--------------------------------------------------------------------- 53 INTEGER, INTENT(in) :: Kbb, Kmm, Kaa ! time level indices 53 54 ! 54 55 IF( ln_timing ) CALL timing_start('trc_init') … … 58 59 IF(lwp) WRITE(numout,*) '~~~~~~~~' 59 60 ! 60 CALL trc_ini_ctl ! control61 61 CALL trc_nam ! read passive tracers namelists 62 62 CALL top_alloc() ! allocate TOP arrays 63 63 64 ! 64 65 IF(.NOT.ln_trcdta ) ln_trc_ini(:) = .FALSE. … … 68 69 IF(lwp) WRITE(numout,*) 69 70 ! 70 CALL trc_ini_sms ! SMS71 CALL trc_ini_trp ! passive tracers transport72 CALL trc_ice_ini ! Tracers in sea ice71 CALL trc_ini_sms( Kmm ) ! SMS 72 CALL trc_ini_trp ! passive tracers transport 73 CALL trc_ice_ini ! Tracers in sea ice 73 74 ! 74 75 IF( lwm .AND. sn_cfctl%l_trcstat ) THEN … … 76 77 ENDIF 77 78 ! 78 CALL trc_ini_state ! passive tracers initialisation : from a restart or from clim 79 IF( nn_dttrc /= 1 ) & 80 CALL trc_sub_ini ! Initialize variables for substepping passive tracers 81 ! 82 CALL trc_ini_inv ! Inventories 79 CALL trc_ini_state( Kbb, Kmm, Kaa ) ! passive tracers initialisation : from a restart or from clim 80 ! 81 CALL trc_ini_inv( Kmm ) ! Inventories 83 82 ! 84 83 IF( ln_timing ) CALL timing_stop('trc_init') … … 87 86 88 87 89 SUBROUTINE trc_ini_ctl 90 !!---------------------------------------------------------------------- 91 !! *** ROUTINE trc_ini_ctl *** 92 !! ** Purpose : Control + ocean volume 93 !!---------------------------------------------------------------------- 94 INTEGER :: jk ! dummy loop indices 95 ! 96 ! Define logical parameter ton control dirunal cycle in TOP 97 l_trcdm2dc = ln_dm2dc .OR. ( ln_cpl .AND. ncpl_qsr_freq /= 1 ) 98 l_trcdm2dc = l_trcdm2dc .AND. .NOT. l_offline 99 IF( l_trcdm2dc .AND. lwp ) CALL ctl_warn( 'Coupling with passive tracers and used of diurnal cycle.', & 100 & 'Computation of a daily mean shortwave for some biogeochemical models ' ) 101 ! 102 END SUBROUTINE trc_ini_ctl 103 104 105 SUBROUTINE trc_ini_inv 88 SUBROUTINE trc_ini_inv( Kmm ) 106 89 !!---------------------------------------------------------------------- 107 90 !! *** ROUTINE trc_ini_stat *** 108 91 !! ** Purpose : passive tracers inventories at initialsation phase 109 92 !!---------------------------------------------------------------------- 110 INTEGER :: jk, jn ! dummy loop indices 93 INTEGER, INTENT(in) :: Kmm ! time level index 94 INTEGER :: jk, jn ! dummy loop indices 111 95 CHARACTER (len=25) :: charout 96 REAL(wp), DIMENSION(jpi,jpj,jpk,jptra) :: zzmsk 97 CHARACTER (len=25), DIMENSION(jptra) :: clseb 112 98 !!---------------------------------------------------------------------- 113 99 ! … … 118 104 ! ! masked grid volume 119 105 DO jk = 1, jpk 120 cvol(:,:,jk) = e1e2t(:,:) * e3t _n(:,:,jk) * tmask(:,:,jk)106 cvol(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 121 107 END DO 122 108 ! ! total volume of the ocean … … 125 111 trai(:) = 0._wp ! initial content of all tracers 126 112 DO jn = 1, jptra 127 trai(jn) = trai(jn) + glob_sum( 'trcini', tr n(:,:,:,jn) * cvol(:,:,:) )113 trai(jn) = trai(jn) + glob_sum( 'trcini', tr(:,:,:,jn,Kmm) * cvol(:,:,:) ) 128 114 END DO 129 115 … … 140 126 ENDIF 141 127 IF(lwp) WRITE(numout,*) 142 IF( ln_ctl) THEN ! print mean trends (used for debugging)143 CALL prt_ctl_ trc_init128 IF(sn_cfctl%l_prttrc) THEN ! print mean trends (used for debugging) 129 CALL prt_ctl_init( 'top', jptra ) 144 130 WRITE(charout, FMT="('ini ')") 145 CALL prt_ctl_trc_info( charout ) 146 CALL prt_ctl_trc( tab4d=trn, mask=tmask, clinfo=ctrcnm ) 131 CALL prt_ctl_info( charout, cdcomp = 'top' ) 132 CALL prt_ctl( tab4d_1=tr(:,:,:,:,Kmm), mask1=tmask, clinfo=ctrcnm ) 133 DO jn = 1, jptra 134 zzmsk(:,:,:,jn) = tmask(:,:,:) 135 WRITE(clseb(jn),'(a,i2.2)') 'seb ', jn 136 END DO 137 CALL prt_ctl( tab4d_1=zzmsk, mask1=tmask, clinfo=clseb ) 147 138 ENDIF 148 139 9000 FORMAT(' tracer nb : ',i2,' name :',a10,' initial content :',e18.10) … … 151 142 152 143 153 SUBROUTINE trc_ini_sms 144 SUBROUTINE trc_ini_sms( Kmm ) 154 145 !!---------------------------------------------------------------------- 155 146 !! *** ROUTINE trc_ini_sms *** … … 162 153 USE trcini_my_trc ! MY_TRC initialisation 163 154 ! 155 INTEGER, INTENT(in) :: Kmm ! time level indices 164 156 INTEGER :: jn 165 157 !!---------------------------------------------------------------------- … … 175 167 ln_trc_obc(jn) = sn_tracer(jn)%llobc 176 168 END DO 169 ! 170 IF( .NOT.ln_trcbc ) THEN 171 DO jn = 1, jp_bgc 172 ln_trc_sbc(jn) = .FALSE. 173 ln_trc_cbc(jn) = .FALSE. 174 ln_trc_obc(jn) = .FALSE. 175 END DO 176 ENDIF 177 178 lltrcbc = ( COUNT(ln_trc_sbc) + COUNT(ln_trc_obc) + COUNT(ln_trc_cbc) ) > 0 177 179 ! 178 IF( ln_pisces ) CALL trc_ini_pisces ! PISCES model179 IF( ln_my_trc ) CALL trc_ini_my_trc ! MY_TRC model180 IF( ll_cfc ) CALL trc_ini_cfc ! CFC's181 IF( ln_c14 ) CALL trc_ini_c14 ! C14 model182 IF( ln_age ) CALL trc_ini_age ! AGE180 IF( ln_pisces ) CALL trc_ini_pisces( Kmm ) ! PISCES model 181 IF( ln_my_trc ) CALL trc_ini_my_trc( Kmm ) ! MY_TRC model 182 IF( ll_cfc ) CALL trc_ini_cfc ( Kmm ) ! CFC's 183 IF( ln_c14 ) CALL trc_ini_c14 ( Kmm ) ! C14 model 184 IF( ln_age ) CALL trc_ini_age ( Kmm ) ! AGE 183 185 ! 184 186 IF(lwp) THEN ! control print … … 191 193 END DO 192 194 ENDIF 195 IF( lwp .AND. ln_trcbc .AND. lltrcbc ) THEN 196 WRITE(numout,*) 197 WRITE(numout,*) ' Applying tracer boundary conditions ' 198 ENDIF 199 193 200 9001 FORMAT(3x,i3,1x,a10,3x,l2,3x,l2,3x,l2,3x,l2) 194 201 ! … … 221 228 222 229 223 SUBROUTINE trc_ini_state 230 SUBROUTINE trc_ini_state( Kbb, Kmm, Kaa ) 224 231 !!---------------------------------------------------------------------- 225 232 !! *** ROUTINE trc_ini_state *** … … 230 237 USE trcdta ! initialisation from files 231 238 ! 232 INTEGER :: jn, jl ! dummy loop indices 233 !!---------------------------------------------------------------------- 234 ! 235 IF( ln_trcdta ) CALL trc_dta_ini( jptra ) ! set initial tracers values 236 ! 237 IF( ln_my_trc ) CALL trc_bc_ini ( jptra ) ! set tracers Boundary Conditions 239 INTEGER, INTENT(in) :: Kbb, Kmm, Kaa ! time level index 240 INTEGER :: jn, jl ! dummy loop indices 241 !!---------------------------------------------------------------------- 242 ! 243 IF( ln_trcdta ) CALL trc_dta_ini( jptra ) ! set initial tracers values 244 ! 245 IF( ln_trcbc .AND. lltrcbc ) THEN 246 CALL trc_bc_ini ( jptra, Kmm ) ! set tracers Boundary Conditions 247 CALL trc_bc ( nit000, Kmm, tr, Kaa ) ! tracers: surface and lateral Boundary Conditions 248 ENDIF 238 249 ! 239 250 ! 240 251 IF( ln_rsttr ) THEN ! restart from a file 241 252 ! 242 CALL trc_rst_read 253 CALL trc_rst_read( Kbb, Kmm ) 243 254 ! 244 255 ELSE ! Initialisation of tracer from a file that may also be used for damping … … 249 260 IF( ln_trc_ini(jn) ) THEN 250 261 jl = n_trc_index(jn) 251 CALL trc_dta( nit000, sf_trcdta(jl), rf_trfac(jl), trn(:,:,:,jn) )262 CALL trc_dta( nit000, Kmm, sf_trcdta(jl), rf_trfac(jl), tr(:,:,:,jn,Kmm) ) 252 263 ! 253 264 ! deallocate data structure if data are not used for damping … … 263 274 ENDIF 264 275 ! 265 tr b(:,:,:,:) = trn(:,:,:,:)276 tr(:,:,:,:,Kbb) = tr(:,:,:,:,Kmm) 266 277 ! 267 278 ENDIF 268 279 ! 269 tr a(:,:,:,:) = 0._wp270 ! ! Partial top/bottom cell: GRADh(tr n)280 tr(:,:,:,:,Kaa) = 0._wp 281 ! ! Partial top/bottom cell: GRADh(tr(Kmm)) 271 282 END SUBROUTINE trc_ini_state 272 283
Note: See TracChangeset
for help on using the changeset viewer.