Changeset 10985 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/tranpc.F90
- Timestamp:
- 2019-05-15T21:19:35+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/tranpc.F90
r10954 r10985 42 42 CONTAINS 43 43 44 SUBROUTINE tra_npc( kt, Kmm, Krhs )44 SUBROUTINE tra_npc( kt, Kmm, Krhs, pts, Kaa ) 45 45 !!---------------------------------------------------------------------- 46 46 !! *** ROUTINE tranpc *** … … 58 58 !! References : Madec, et al., 1991, JPO, 21, 9, 1349-1371. 59 59 !!---------------------------------------------------------------------- 60 INTEGER, INTENT(in) :: kt ! ocean time-step index 61 INTEGER, INTENT(in) :: Kmm, Krhs ! time level indices 60 INTEGER, INTENT(in ) :: kt ! ocean time-step index 61 INTEGER, INTENT(in ) :: Kmm, Krhs, Kaa ! time level indices 62 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 62 63 ! 63 64 INTEGER :: ji, jj, jk ! dummy loop indices … … 67 68 REAL(wp) :: zta, zalfa, zsum_temp, zsum_alfa, zaw, zdz, zsum_z 68 69 REAL(wp) :: zsa, zbeta, zsum_sali, zsum_beta, zbw, zrw, z1_r2dt 69 REAL(wp), PARAMETER :: zn2_zero = 1.e-14_wp ! acceptance criteria for neutrality (N2==0)70 REAL(wp), DIMENSION( jpk ) :: zvn2 ! vertical profile of N2 at 1 given point...71 REAL(wp), DIMENSION( jpk,jpts) :: zvts, zvab ! vertical profile of T & S , and alpha & betaat 1 given point72 REAL(wp), DIMENSION(jpi,jpj,jpk ) :: zn2 ! N^273 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) :: zab ! alpha and beta74 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdt, ztrds 70 REAL(wp), PARAMETER :: zn2_zero = 1.e-14_wp ! acceptance criteria for neutrality (N2==0) 71 REAL(wp), DIMENSION( jpk ) :: zvn2 ! vertical profile of N2 at 1 given point... 72 REAL(wp), DIMENSION( jpk,jpts) :: zvts, zvab ! vertical profile of T & S , and alpha & betaat 1 given point 73 REAL(wp), DIMENSION(jpi,jpj,jpk ) :: zn2 ! N^2 74 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) :: zab ! alpha and beta 75 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdt, ztrds ! 3D workspace 75 76 ! 76 77 LOGICAL, PARAMETER :: l_LB_debug = .FALSE. ! set to true if you want to follow what is … … 85 86 IF( l_trdtra ) THEN !* Save initial after fields 86 87 ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 87 ztrdt(:,:,:) = ts(:,:,:,jp_tem,Krhs)88 ztrds(:,:,:) = ts(:,:,:,jp_sal,Krhs)88 ztrdt(:,:,:) = pts(:,:,:,jp_tem,Kaa) 89 ztrds(:,:,:) = pts(:,:,:,jp_sal,Kaa) 89 90 ENDIF 90 91 ! … … 96 97 ENDIF 97 98 ! 98 CALL eos_rab( ts(:,:,:,:,Krhs), zab, Kmm ) ! after alpha and beta (given on T-points)99 CALL bn2 ( ts(:,:,:,:,Krhs), zab, zn2, Kmm ) ! after Brunt-Vaisala (given on W-points)99 CALL eos_rab( pts(:,:,:,:,Kaa), zab, Kmm ) ! after alpha and beta (given on T-points) 100 CALL bn2 ( pts(:,:,:,:,Kaa), zab, zn2, Kmm ) ! after Brunt-Vaisala (given on W-points) 100 101 ! 101 102 inpcc = 0 … … 106 107 IF( tmask(ji,jj,2) == 1 ) THEN ! At least 2 ocean points 107 108 ! ! consider one ocean column 108 zvts(:,jp_tem) = ts(ji,jj,:,jp_tem,Krhs) ! temperature109 zvts(:,jp_sal) = ts(ji,jj,:,jp_sal,Krhs) ! salinity109 zvts(:,jp_tem) = pts(ji,jj,:,jp_tem,Kaa) ! temperature 110 zvts(:,jp_sal) = pts(ji,jj,:,jp_sal,Kaa) ! salinity 110 111 ! 111 112 zvab(:,jp_tem) = zab(ji,jj,:,jp_tem) ! Alpha … … 287 288 END DO ! DO WHILE ( .NOT. l_column_treated ) 288 289 289 !! Updating tsa:290 ts(ji,jj,:,jp_tem,Krhs) = zvts(:,jp_tem)291 ts(ji,jj,:,jp_sal,Krhs) = zvts(:,jp_sal)290 !! Updating pts: 291 pts(ji,jj,:,jp_tem,Kaa) = zvts(:,jp_tem) 292 pts(ji,jj,:,jp_sal,Kaa) = zvts(:,jp_sal) 292 293 293 294 !! LB: Potentially some other global variable beside theta and S can be treated here … … 303 304 IF( l_trdtra ) THEN ! send the Non penetrative mixing trends for diagnostic 304 305 z1_r2dt = 1._wp / (2._wp * rdt) 305 ztrdt(:,:,:) = ( ts(:,:,:,jp_tem,Krhs) - ztrdt(:,:,:) ) * z1_r2dt306 ztrds(:,:,:) = ( ts(:,:,:,jp_sal,Krhs) - ztrds(:,:,:) ) * z1_r2dt306 ztrdt(:,:,:) = ( pts(:,:,:,jp_tem,Kaa) - ztrdt(:,:,:) ) * z1_r2dt 307 ztrds(:,:,:) = ( pts(:,:,:,jp_sal,Kaa) - ztrds(:,:,:) ) * z1_r2dt 307 308 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_npc, ztrdt ) 308 309 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_npc, ztrds ) … … 310 311 ENDIF 311 312 ! 312 CALL lbc_lnk_multi( 'tranpc', ts(:,:,:,jp_tem,Krhs), 'T', 1., ts(:,:,:,jp_sal,Krhs), 'T', 1. )313 CALL lbc_lnk_multi( 'tranpc', pts(:,:,:,jp_tem,Kaa), 'T', 1., pts(:,:,:,jp_sal,Kaa), 'T', 1. ) 313 314 ! 314 315 IF( lwp .AND. l_LB_debug ) THEN
Note: See TracChangeset
for help on using the changeset viewer.