Changeset 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r2715 r3294 36 36 USE obc_oce 37 37 USE obctra ! open boundary condition (obc_tra routine) 38 USE bdy_ par ! Unstructured open boundary condition (bdy_tra_frs routine)39 USE bdytra ! Unstructured open boundary condition (bdy_tra_frsroutine)38 USE bdy_oce 39 USE bdytra ! open boundary condition (bdy_tra routine) 40 40 USE in_out_manager ! I/O manager 41 41 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 42 42 USE prtctl ! Print control 43 43 USE traqsr ! penetrative solar radiation (needed for nksr) 44 USE traswp ! swap array45 USE obc_oce46 44 #if defined key_agrif 47 45 USE agrif_opa_update 48 46 USE agrif_opa_interp 49 47 #endif 48 USE wrk_nemo ! Memory allocation 49 USE timing ! Timing 50 50 51 51 IMPLICIT NONE … … 81 81 !! - Apply lateral boundary conditions on (ta,sa) 82 82 !! at the local domain boundaries through lbc_lnk call, 83 !! at the radiative open boundaries (lk_obc=T), 84 !! at the relaxed open boundaries (lk_bdy=T), and 83 !! at the one-way open boundaries (lk_obc=T), 85 84 !! at the AGRIF zoom boundaries (lk_agrif=T) 86 85 !! … … 95 94 INTEGER :: jk, jn ! dummy loop indices 96 95 REAL(wp) :: zfact ! local scalars 97 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt, ztrds 98 !!---------------------------------------------------------------------- 99 96 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdt, ztrds 97 !!---------------------------------------------------------------------- 98 ! 99 IF( nn_timing == 1 ) CALL timing_start( 'tra_nxt') 100 ! 100 101 IF( kt == nit000 ) THEN 101 102 IF(lwp) WRITE(numout,*) … … 111 112 CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1. ) 112 113 ! 113 #if defined key_obc || defined key_bdy || defined key_agrif114 CALL tra_unswap115 #endif116 117 114 #if defined key_obc 118 115 IF( lk_obc ) CALL obc_tra( kt ) ! OBC open boundaries 119 116 #endif 120 117 #if defined key_bdy 121 IF( lk_bdy ) CALL bdy_tra _frs( kt ) ! BDY open boundaries118 IF( lk_bdy ) CALL bdy_tra( kt ) ! BDY open boundaries 122 119 #endif 123 120 #if defined key_agrif 124 121 CALL Agrif_tra ! AGRIF zoom boundaries 125 #endif126 127 #if defined key_obc || defined key_bdy || defined key_agrif128 CALL tra_swap129 122 #endif 130 123 … … 136 129 ! trends computation initialisation 137 130 IF( l_trdtra ) THEN ! store now fields before applying the Asselin filter 138 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsn(:,:,:,jp_tem) 139 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = tsn(:,:,:,jp_sal) 131 CALL wrk_alloc( jpi, jpj, jpk, ztrdt, ztrds ) 132 ztrdt(:,:,:) = tsn(:,:,:,jp_tem) 133 ztrds(:,:,:) = tsn(:,:,:,jp_sal) 140 134 ENDIF 141 135 … … 148 142 ELSE ! Leap-Frog + Asselin filter time stepping 149 143 ! 150 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, 'TRA', tsb, tsn, tsa, jpts ) ! variable volume level (vvl)151 ELSE ; CALL tra_nxt_fix( kt, 'TRA', tsb, tsn, tsa, jpts ) ! fixed volume level144 IF( lk_vvl ) THEN ; CALL tra_nxt_vvl( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! variable volume level (vvl) 145 ELSE ; CALL tra_nxt_fix( kt, nit000, 'TRA', tsb, tsn, tsa, jpts ) ! fixed volume level 152 146 ENDIF 153 147 ENDIF … … 155 149 #if defined key_agrif 156 150 ! Update tracer at AGRIF zoom boundaries 157 CALL tra_unswap158 151 IF( .NOT.Agrif_Root() ) CALL Agrif_Update_Tra( kt ) ! children only 159 CALL tra_swap160 152 #endif 161 153 ! … … 169 161 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_atf, ztrdt ) 170 162 CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_atf, ztrds ) 171 DEALLOCATE( ztrdt ) ; DEALLOCATE( ztrds )163 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt, ztrds ) 172 164 END IF 173 165 ! … … 176 168 & tab3d_2=tsn(:,:,:,jp_sal), clinfo2= ' Sn: ', mask2=tmask ) 177 169 ! 170 ! 171 IF( nn_timing == 1 ) CALL timing_stop('tra_nxt') 172 ! 178 173 END SUBROUTINE tra_nxt 179 174 180 175 181 SUBROUTINE tra_nxt_fix( kt, cdtype, ptb, ptn, pta, kjpt )176 SUBROUTINE tra_nxt_fix( kt, kit000, cdtype, ptb, ptn, pta, kjpt ) 182 177 !!---------------------------------------------------------------------- 183 178 !! *** ROUTINE tra_nxt_fix *** … … 203 198 !!---------------------------------------------------------------------- 204 199 INTEGER , INTENT(in ) :: kt ! ocean time-step index 200 INTEGER , INTENT(in ) :: kit000 ! first time step index 205 201 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 206 202 INTEGER , INTENT(in ) :: kjpt ! number of tracers … … 214 210 !!---------------------------------------------------------------------- 215 211 216 IF( kt == nit000 ) THEN212 IF( kt == kit000 ) THEN 217 213 IF(lwp) WRITE(numout,*) 218 IF(lwp) WRITE(numout,*) 'tra_nxt_fix : time stepping' 214 IF(lwp) WRITE(numout,*) 'tra_nxt_fix : time stepping', cdtype 219 215 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 220 216 ENDIF … … 245 241 246 242 247 SUBROUTINE tra_nxt_vvl( kt, cdtype, ptb, ptn, pta, kjpt )243 SUBROUTINE tra_nxt_vvl( kt, kit000, cdtype, ptb, ptn, pta, kjpt ) 248 244 !!---------------------------------------------------------------------- 249 245 !! *** ROUTINE tra_nxt_vvl *** … … 270 266 !!---------------------------------------------------------------------- 271 267 INTEGER , INTENT(in ) :: kt ! ocean time-step index 268 INTEGER , INTENT(in ) :: kit000 ! first time step index 272 269 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 273 270 INTEGER , INTENT(in ) :: kjpt ! number of tracers … … 281 278 REAL(wp) :: zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d ! - - 282 279 !!---------------------------------------------------------------------- 283 284 IF( kt == nit000 )THEN280 ! 281 IF( kt == kit000 ) THEN 285 282 IF(lwp) WRITE(numout,*) 286 IF(lwp) WRITE(numout,*) 'tra_nxt_vvl : time stepping' 283 IF(lwp) WRITE(numout,*) 'tra_nxt_vvl : time stepping', cdtype 287 284 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 288 285 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.