- Timestamp:
- 2016-11-28T17:04:10+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90
r5836 r7351 12 12 13 13 !!---------------------------------------------------------------------- 14 !! tra_ldf : update the tracer trend with the lateral diffusion 15 !! tra_ldf_init : initialization, namelist read, and parameters control 16 !!---------------------------------------------------------------------- 17 USE oce ! ocean dynamics and tracers 18 USE dom_oce ! ocean space and time domain 19 USE phycst ! physical constants 20 USE ldftra ! lateral diffusion: eddy diffusivity & EIV coeff. 21 USE ldfslp ! lateral diffusion: iso-neutral slope 22 USE traldf_lap ! lateral diffusion: laplacian iso-level operator (tra_ldf_lap routine) 23 USE traldf_iso ! lateral diffusion: laplacian iso-neutral standard operator (tra_ldf_iso routine) 24 USE traldf_triad ! lateral diffusion: laplacian iso-neutral triad operator (tra_ldf_triad routine) 25 USE traldf_blp ! lateral diffusion (iso-level lap/blp) (tra_ldf_lap routine) 26 USE trd_oce ! trends: ocean variables 27 USE trdtra ! ocean active tracers trends 14 !! tra_ldf : update the tracer trend with the lateral diffusion trend 15 !! tra_ldf_init : initialization, namelist read, and parameters control 16 !!---------------------------------------------------------------------- 17 USE oce ! ocean dynamics and tracers 18 USE dom_oce ! ocean space and time domain 19 USE phycst ! physical constants 20 USE ldftra ! lateral diffusion: eddy diffusivity & EIV coeff. 21 USE ldfslp ! lateral diffusion: iso-neutral slope 22 USE traldf_lap_blp ! lateral diffusion: laplacian iso-level operator (tra_ldf_lap/_blp routines) 23 USE traldf_iso ! lateral diffusion: laplacian iso-neutral standard operator (tra_ldf_iso routine ) 24 USE traldf_triad ! lateral diffusion: laplacian iso-neutral triad operator (tra_ldf_triad routine ) 25 USE trd_oce ! trends: ocean variables 26 USE trdtra ! ocean active tracers trends 28 27 ! 29 28 USE prtctl ! Print control … … 43 42 44 43 !! * Substitutions 45 # include "domzgr_substitute.h90"46 44 # include "vectopt_loop_substitute.h90" 47 45 !!---------------------------------------------------------------------- … … 72 70 ! 73 71 SELECT CASE ( nldf ) !* compute lateral mixing trend and add it to the general trend 74 !75 72 CASE ( np_lap ) ! laplacian: iso-level operator 76 73 CALL tra_ldf_lap ( kt, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, tsb, tsa, jpts, 1 ) … … 82 79 CALL tra_ldf_blp ( kt, nit000,'TRA', ahtu, ahtv, gtsu, gtsv, gtui, gtvi, tsb , tsa, jpts, nldf ) 83 80 END SELECT 84 81 ! 85 82 IF( l_trdtra ) THEN !* save the horizontal diffusive trends for further diagnostics 86 83 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) … … 114 111 WRITE(numout,*) 'tra_ldf_init : lateral tracer diffusive operator' 115 112 WRITE(numout,*) '~~~~~~~~~~~' 116 WRITE(numout,*) ' Namelist namtra_ldf already read in ldftra module'117 WRITE(numout,*) ' see ldf_tra_init report for lateral mixing parameters'113 WRITE(numout,*) ' Namelist namtra_ldf: already read in ldftra module' 114 WRITE(numout,*) ' see ldf_tra_init report for lateral mixing parameters' 118 115 WRITE(numout,*) 119 116 ENDIF … … 178 175 ENDIF 179 176 ! 180 IF( ierr == 1 ) CALL ctl_stop( ' iso-level in z-coordinate -partial step, not allowed' )177 IF( ierr == 1 ) CALL ctl_stop( 'iso-level in z-partial step, not allowed' ) 181 178 IF( ln_ldfeiv .AND. .NOT.( ln_traldf_iso .OR. ln_traldf_triad ) ) & 182 & CALL ctl_stop( ' eddy induced velocity on tracers requires isopycnal', & 183 & ' laplacian diffusion' ) 179 & CALL ctl_stop( 'eddy induced velocity on tracers requires iso-neutral laplacian diffusion' ) 180 IF( ln_isfcav .AND. ln_traldf_triad ) & 181 & CALL ctl_stop( ' ice shelf cavity and traldf_triad not tested' ) 182 ! 184 183 IF( nldf == np_lap_i .OR. nldf == np_lap_it .OR. & 185 184 & nldf == np_blp_i .OR. nldf == np_blp_it ) l_ldfslp = .TRUE. ! slope of neutral surfaces required … … 187 186 IF(lwp) THEN 188 187 WRITE(numout,*) 189 IF( nldf == np_no_ldf ) WRITE(numout,*) ' NO lateral diffusion' 190 IF( nldf == np_lap ) WRITE(numout,*) ' laplacian iso-level operator' 191 IF( nldf == np_lap_i ) WRITE(numout,*) ' Rotated laplacian operator (standard)' 192 IF( nldf == np_lap_it ) WRITE(numout,*) ' Rotated laplacian operator (triad)' 193 IF( nldf == np_blp ) WRITE(numout,*) ' bilaplacian iso-level operator' 194 IF( nldf == np_blp_i ) WRITE(numout,*) ' Rotated bilaplacian operator (standard)' 195 IF( nldf == np_blp_it ) WRITE(numout,*) ' Rotated bilaplacian operator (triad)' 188 SELECT CASE( nldf ) 189 CASE( np_no_ldf ) ; WRITE(numout,*) ' NO lateral diffusion' 190 CASE( np_lap ) ; WRITE(numout,*) ' laplacian iso-level operator' 191 CASE( np_lap_i ) ; WRITE(numout,*) ' Rotated laplacian operator (standard)' 192 CASE( np_lap_it ) ; WRITE(numout,*) ' Rotated laplacian operator (triad)' 193 CASE( np_blp ) ; WRITE(numout,*) ' bilaplacian iso-level operator' 194 CASE( np_blp_i ) ; WRITE(numout,*) ' Rotated bilaplacian operator (standard)' 195 CASE( np_blp_it ) ; WRITE(numout,*) ' Rotated bilaplacian operator (triad)' 196 END SELECT 196 197 ENDIF 197 198 !
Note: See TracChangeset
for help on using the changeset viewer.