- Timestamp:
- 2020-05-14T21:46:00+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
- Property svn:externals
-
old new 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/TRA/tradmp.F90
r12178 r12928 52 52 53 53 !! * Substitutions 54 # include " vectopt_loop_substitute.h90"54 # include "do_loop_substitute.h90" 55 55 !!---------------------------------------------------------------------- 56 56 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 72 72 73 73 74 SUBROUTINE tra_dmp( kt )74 SUBROUTINE tra_dmp( kt, Kbb, Kmm, pts, Krhs ) 75 75 !!---------------------------------------------------------------------- 76 76 !! *** ROUTINE tra_dmp *** … … 90 90 !! ** Action : - tsa: tracer trends updated with the damping trend 91 91 !!---------------------------------------------------------------------- 92 INTEGER, INTENT(in) :: kt ! ocean time-step index 92 INTEGER, INTENT(in ) :: kt ! ocean time-step index 93 INTEGER, INTENT(in ) :: Kbb, Kmm, Krhs ! time level indices 94 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 93 95 ! 94 96 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 101 103 IF( l_trdtra ) THEN !* Save ta and sa trends 102 104 ALLOCATE( ztrdts(jpi,jpj,jpk,jpts) ) 103 ztrdts(:,:,:,:) = tsa(:,:,:,:)105 ztrdts(:,:,:,:) = pts(:,:,:,:,Krhs) 104 106 ENDIF 105 107 ! !== input T-S data at kt ==! … … 110 112 CASE( 0 ) !* newtonian damping throughout the water column *! 111 113 DO jn = 1, jpts 112 DO jk = 1, jpkm1 113 DO jj = 2, jpjm1 114 DO ji = fs_2, fs_jpim1 ! vector opt. 115 tsa(ji,jj,jk,jn) = tsa(ji,jj,jk,jn) + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jn) - tsb(ji,jj,jk,jn) ) 116 END DO 117 END DO 118 END DO 114 DO_3D_00_00( 1, jpkm1 ) 115 pts(ji,jj,jk,jn,Krhs) = pts(ji,jj,jk,jn,Krhs) & 116 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jn) - pts(ji,jj,jk,jn,Kbb) ) 117 END_3D 119 118 END DO 120 119 ! 121 120 CASE ( 1 ) !* no damping in the turbocline (avt > 5 cm2/s) *! 122 DO jk = 1, jpkm1 123 DO jj = 2, jpjm1 124 DO ji = fs_2, fs_jpim1 ! vector opt. 125 IF( avt(ji,jj,jk) <= avt_c ) THEN 126 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) & 127 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_tem) - tsb(ji,jj,jk,jp_tem) ) 128 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) & 129 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_sal) - tsb(ji,jj,jk,jp_sal) ) 130 ENDIF 131 END DO 132 END DO 133 END DO 121 DO_3D_00_00( 1, jpkm1 ) 122 IF( avt(ji,jj,jk) <= avt_c ) THEN 123 pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs) & 124 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_tem) - pts(ji,jj,jk,jp_tem,Kbb) ) 125 pts(ji,jj,jk,jp_sal,Krhs) = pts(ji,jj,jk,jp_sal,Krhs) & 126 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_sal) - pts(ji,jj,jk,jp_sal,Kbb) ) 127 ENDIF 128 END_3D 134 129 ! 135 130 CASE ( 2 ) !* no damping in the mixed layer *! 136 DO jk = 1, jpkm1 137 DO jj = 2, jpjm1 138 DO ji = fs_2, fs_jpim1 ! vector opt. 139 IF( gdept_n(ji,jj,jk) >= hmlp (ji,jj) ) THEN 140 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) & 141 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_tem) - tsb(ji,jj,jk,jp_tem) ) 142 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) & 143 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_sal) - tsb(ji,jj,jk,jp_sal) ) 144 ENDIF 145 END DO 146 END DO 147 END DO 131 DO_3D_00_00( 1, jpkm1 ) 132 IF( gdept(ji,jj,jk,Kmm) >= hmlp (ji,jj) ) THEN 133 pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs) & 134 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_tem) - pts(ji,jj,jk,jp_tem,Kbb) ) 135 pts(ji,jj,jk,jp_sal,Krhs) = pts(ji,jj,jk,jp_sal,Krhs) & 136 & + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jp_sal) - pts(ji,jj,jk,jp_sal,Kbb) ) 137 ENDIF 138 END_3D 148 139 ! 149 140 END SELECT 150 141 ! 151 142 IF( l_trdtra ) THEN ! trend diagnostic 152 ztrdts(:,:,:,:) = tsa(:,:,:,:) - ztrdts(:,:,:,:)153 CALL trd_tra( kt, 'TRA', jp_tem, jptra_dmp, ztrdts(:,:,:,jp_tem) )154 CALL trd_tra( kt, 'TRA', jp_sal, jptra_dmp, ztrdts(:,:,:,jp_sal) )143 ztrdts(:,:,:,:) = pts(:,:,:,:,Krhs) - ztrdts(:,:,:,:) 144 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_dmp, ztrdts(:,:,:,jp_tem) ) 145 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_dmp, ztrdts(:,:,:,jp_sal) ) 155 146 DEALLOCATE( ztrdts ) 156 147 ENDIF 157 148 ! ! Control print 158 IF( ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' dmp - Ta: ', mask1=tmask, &159 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' )149 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab3d_1=pts(:,:,:,jp_tem,Krhs), clinfo1=' dmp - Ta: ', mask1=tmask, & 150 & tab3d_2=pts(:,:,:,jp_sal,Krhs), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 160 151 ! 161 152 IF( ln_timing ) CALL timing_stop('tra_dmp') … … 177 168 !!---------------------------------------------------------------------- 178 169 ! 179 REWIND( numnam_ref ) ! Namelist namtra_dmp in reference namelist : T & S relaxation180 170 READ ( numnam_ref, namtra_dmp, IOSTAT = ios, ERR = 901) 181 171 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtra_dmp in reference namelist' ) 182 172 ! 183 REWIND( numnam_cfg ) ! Namelist namtra_dmp in configuration namelist : T & S relaxation184 173 READ ( numnam_cfg, namtra_dmp, IOSTAT = ios, ERR = 902 ) 185 174 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtra_dmp in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.