- Timestamp:
- 2015-12-16T10:25:22+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_merge_2015/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r5656 r6060 101 101 WRITE(numout,*) 'trc_nxt : time stepping on passive tracers' 102 102 ENDIF 103 103 ! 104 104 #if defined key_agrif 105 105 CALL Agrif_trc ! AGRIF zoom boundaries 106 106 #endif 107 ! Update after tracer on domain lateral boundaries 108 DO jn = 1, jptra 107 DO jn = 1, jptra ! Update after tracer on domain lateral boundaries 109 108 CALL lbc_lnk( tra(:,:,:,jn), 'T', 1. ) 110 109 END DO 111 112 113 110 #if defined key_bdy 114 !! CALL bdy_trc( kt ) 111 !! CALL bdy_trc( kt ) ! BDY open boundaries 115 112 #endif 116 113 117 118 ! set time step size (Euler/Leapfrog) 114 ! ! set time step size (Euler/Leapfrog) 119 115 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ; r2dt(:) = rdttrc(:) ! at nittrc000 (Euler) 120 116 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ; r2dt(:) = 2.* rdttrc(:) ! at nit000 or nit000+1 (Leapfrog) 121 117 ENDIF 122 118 123 ! trends computation initialisation 124 IF( l_trdtrc ) THEN 125 CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrdt ) !* store now fields before applying the Asselin filter 119 IF( l_trdtrc ) THEN ! trends: store now fields before the Asselin filter application 120 CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrdt ) 126 121 ztrdt(:,:,:,:) = trn(:,:,:,:) 127 122 ENDIF 128 ! Leap-Frog + Asselin filter time stepping 129 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! Euler time-stepping at first time-step 130 ! ! (only swap) 123 ! ! Leap-Frog + Asselin filter time stepping 124 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! Euler time-stepping at first time-step (only swap) 131 125 DO jn = 1, jptra 132 126 DO jk = 1, jpkm1 … … 134 128 END DO 135 129 END DO 136 ! 137 ELSE 138 ! Leap-Frog + Asselin filter time stepping 139 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 140 & sbc_trc, sbc_trc_b, jptra ) ! variable volume level (vvl) 141 ELSE ; CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra ) ! fixed volume level 130 ELSE ! Asselin filter + swap 131 IF( ln_linssh ) THEN ; CALL tra_nxt_fix( kt, nittrc000, 'TRC', trb, trn, tra, jptra ) ! linear ssh 132 ELSE ; CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra, & 133 & sbc_trc, sbc_trc_b, jptra ) ! non-linear ssh 142 134 ENDIF 135 ! 136 DO jn = 1, jptra 137 CALL lbc_lnk( trb(:,:,:,jn), 'T', 1._wp ) 138 CALL lbc_lnk( trn(:,:,:,jn), 'T', 1._wp ) 139 CALL lbc_lnk( tra(:,:,:,jn), 'T', 1._wp ) 140 END DO 143 141 ENDIF 144 145 ! trends computation 146 IF( l_trdtrc ) THEN ! trends 142 ! 143 IF( l_trdtrc ) THEN ! trends: send Asselin filter trends to trdtra manager for further diagnostics 147 144 DO jn = 1, jptra 148 145 DO jk = 1, jpkm1 149 zfact = 1. e0/ r2dt(jk)146 zfact = 1._wp / r2dt(jk) 150 147 ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact 151 148 CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt )
Note: See TracChangeset
for help on using the changeset viewer.