Changeset 2715 for trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
- Timestamp:
- 2011-03-30T17:58:35+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
r2528 r2715 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_top' TOP models 12 !!----------------------------------------------------------------------13 12 !!---------------------------------------------------------------------- 14 13 !! trc_adv : compute ocean tracer advection trend … … 26 25 USE traadv_eiv ! eddy induced velocity (tra_adv_eiv routine) 27 26 USE ldftra_oce ! lateral diffusion coefficient on tracers 28 USE in_out_manager ! I/O manager 29 USE prtctl_trc ! Print control 27 USE prtctl_trc ! Print control 30 28 31 29 IMPLICIT NONE 32 30 PRIVATE 33 31 34 PUBLIC trc_adv ! routine called by step module 32 PUBLIC trc_adv ! routine called by step module 33 PUBLIC trc_adv_alloc ! routine called by nemogcm module 35 34 36 35 INTEGER :: nadv ! choice of the type of advection scheme 37 REAL(wp), DIMENSION(jpk) :: r2dt ! vertical profile time-step, = 2 rdttra38 !! except at nit000 (=rdttra) if neuler=036 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt ! vertical profile time-step, = 2 rdttra 37 ! ! except at nit000 (=rdttra) if neuler=0 39 38 40 39 !! * Substitutions … … 46 45 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 47 46 !!---------------------------------------------------------------------- 48 49 47 CONTAINS 48 49 INTEGER FUNCTION trc_adv_alloc() 50 !!---------------------------------------------------------------------- 51 !! *** ROUTINE trc_adv_alloc *** 52 !!---------------------------------------------------------------------- 53 54 ALLOCATE( r2dt(jpk), STAT=trc_adv_alloc ) 55 56 IF( trc_adv_alloc /= 0 ) CALL ctl_warn('trc_adv_alloc : failed to allocate array.') 57 58 END FUNCTION trc_adv_alloc 59 50 60 51 61 SUBROUTINE trc_adv( kt ) … … 57 67 !! ** Method : - Update the tracer with the advection term following nadv 58 68 !!---------------------------------------------------------------------- 69 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 70 USE wrk_nemo, ONLY: zun => wrk_3d_4, zvn => wrk_3d_5, zwn => wrk_3d_6 ! effective velocity 59 71 !! 60 INTEGER, INTENT( in ) :: kt ! ocean time-step index 61 ! 62 INTEGER :: jk 63 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zun, zvn, zwn ! effective velocity 64 CHARACTER (len=22) :: charout 65 !!---------------------------------------------------------------------- 72 INTEGER, INTENT(in) :: kt ! ocean time-step index 73 ! 74 INTEGER :: jk 75 CHARACTER (len=22) :: charout 76 !!---------------------------------------------------------------------- 77 ! 78 IF( wrk_in_use(3, 4,5,6) ) THEN 79 CALL ctl_stop('trc_adv : requested workspace arrays unavailable') ; RETURN 80 ENDIF 66 81 67 82 IF( kt == nit000 ) CALL trc_adv_ctl ! initialisation & control of options … … 80 95 DO jk = 1, jpkm1 81 96 ! ! eulerian transport only 82 zun(:,:,jk) = e2u (:,:) * fse3u(:,:,jk) * un(:,:,jk)83 zvn(:,:,jk) = e1v (:,:) * fse3v(:,:,jk) * vn(:,:,jk)84 zwn(:,:,jk) = e1 t(:,:) * e2t(:,:)* wn(:,:,jk)97 zun(:,:,jk) = e2u (:,:) * fse3u(:,:,jk) * un(:,:,jk) 98 zvn(:,:,jk) = e1v (:,:) * fse3v(:,:,jk) * vn(:,:,jk) 99 zwn(:,:,jk) = e1e2t(:,:) * wn(:,:,jk) 85 100 ! 86 101 END DO … … 125 140 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 126 141 END IF 142 ! 143 IF( wrk_not_released(3, 4,5,6) ) CALL ctl_stop('trc_adv : failed to release workspace arrays.') 127 144 ! 128 145 END SUBROUTINE trc_adv … … 171 188 ! 172 189 END SUBROUTINE trc_adv_ctl 190 173 191 #else 174 192 !!---------------------------------------------------------------------- … … 181 199 END SUBROUTINE trc_adv 182 200 #endif 201 183 202 !!====================================================================== 184 203 END MODULE trcadv
Note: See TracChangeset
for help on using the changeset viewer.