Changeset 12590 for NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traldf_lap_blp.F90
- Timestamp:
- 2020-03-23T22:16:19+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traldf_lap_blp.F90
r12377 r12590 4 4 !! Ocean tracers: lateral diffusivity trend (laplacian and bilaplacian) 5 5 !!============================================================================== 6 !! History : 3.7 ! 2014-01 (G. Madec, S. Masson) Original code, re-entrant laplacian 6 !! History : 3.7 ! 2014-01 (G. Madec, S. Masson) Original code, re-entrant laplacian 7 7 !!---------------------------------------------------------------------- 8 8 … … 38 38 !! * Substitutions 39 39 # include "do_loop_substitute.h90" 40 # include "domzgr_substitute.h90" 40 41 !!---------------------------------------------------------------------- 41 42 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 47 48 SUBROUTINE tra_ldf_lap( kt, Kmm, kit000, cdtype, pahu, pahv , & 48 49 & pgu , pgv , pgui, pgvi, & 49 & pt , pt_rhs, kjpt, kpass ) 50 & pt , pt_rhs, kjpt, kpass ) 50 51 !!---------------------------------------------------------------------- 51 52 !! *** ROUTINE tra_ldf_lap *** 52 !! 53 !! ** Purpose : Compute the before horizontal tracer (t & s) diffusive 53 !! 54 !! ** Purpose : Compute the before horizontal tracer (t & s) diffusive 54 55 !! trend and add it to the general trend of tracer equation. 55 56 !! 56 57 !! ** Method : Second order diffusive operator evaluated using before 57 !! fields (forward time scheme). The horizontal diffusive trends of 58 !! fields (forward time scheme). The horizontal diffusive trends of 58 59 !! the tracer is given by: 59 60 !! difft = 1/(e1e2t*e3t) { di-1[ pahu e2u*e3u/e1u di(tb) ] … … 62 63 !! pt_rhs = pt_rhs + difft 63 64 !! 64 !! ** Action : - Update pt_rhs arrays with the before iso-level 65 !! ** Action : - Update pt_rhs arrays with the before iso-level 65 66 !! harmonic mixing trend. 66 67 !!---------------------------------------------------------------------- … … 75 76 REAL(wp), DIMENSION(jpi,jpj, kjpt), INTENT(in ) :: pgui, pgvi ! tracer gradient at top levels 76 77 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: pt ! before tracer fields 77 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pt_rhs ! tracer trend 78 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pt_rhs ! tracer trend 78 79 ! 79 80 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 105 106 ! ! =========== ! 106 107 DO jn = 1, kjpt ! tracer loop ! 107 ! ! =========== ! 108 ! 108 ! ! =========== ! 109 ! 109 110 DO_3D_10_10( 1, jpkm1 ) 110 111 ztu(ji,jj,jk) = zaheeu(ji,jj,jk) * ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) … … 118 119 IF( ln_isfcav ) THEN ! top in ocean cavities only 119 120 DO_2D_10_10 120 IF( miku(ji,jj) > 1 ) ztu(ji,jj,miku(ji,jj)) = zaheeu(ji,jj,miku(ji,jj)) * pgui(ji,jj,jn) 121 IF( mikv(ji,jj) > 1 ) ztv(ji,jj,mikv(ji,jj)) = zaheev(ji,jj,mikv(ji,jj)) * pgvi(ji,jj,jn) 121 IF( miku(ji,jj) > 1 ) ztu(ji,jj,miku(ji,jj)) = zaheeu(ji,jj,miku(ji,jj)) * pgui(ji,jj,jn) 122 IF( mikv(ji,jj) > 1 ) ztv(ji,jj,mikv(ji,jj)) = zaheev(ji,jj,mikv(ji,jj)) * pgvi(ji,jj,jn) 122 123 END_2D 123 124 ENDIF … … 142 143 ! 143 144 END SUBROUTINE tra_ldf_lap 144 145 145 146 146 147 SUBROUTINE tra_ldf_blp( kt, Kmm, kit000, cdtype, pahu, pahv , & … … 149 150 !!---------------------------------------------------------------------- 150 151 !! *** ROUTINE tra_ldf_blp *** 151 !! 152 !! ** Purpose : Compute the before lateral tracer diffusive 152 !! 153 !! ** Purpose : Compute the before lateral tracer diffusive 153 154 !! trend and add it to the general trend of tracer equation. 154 155 !! … … 200 201 ! 201 202 CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1. ) ! Lateral boundary conditions (unchanged sign) 202 ! ! Partial top/bottom cell: GRADh( zlap ) 203 ! ! Partial top/bottom cell: GRADh( zlap ) 203 204 IF( ln_isfcav .AND. ln_zps ) THEN ; CALL zps_hde_isf( kt, Kmm, kjpt, zlap, zglu, zglv, zgui, zgvi ) ! both top & bottom 204 ELSEIF( ln_zps ) THEN ; CALL zps_hde ( kt, Kmm, kjpt, zlap, zglu, zglv ) ! only bottom 205 ELSEIF( ln_zps ) THEN ; CALL zps_hde ( kt, Kmm, kjpt, zlap, zglu, zglv ) ! only bottom 205 206 ENDIF 206 207 !
Note: See TracChangeset
for help on using the changeset viewer.