Changeset 10813 for NEMO/branches/UKMO/dev_r10037_vorticity_trends/src
- Timestamp:
- 2019-03-29T16:06:08+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/dev_r10037_vorticity_trends/src/OCE/TRD/trdvor.F90
r10810 r10813 43 43 INTEGER, SAVE, ALLOCATABLE, DIMENSION(:) :: ndexvor1 ! needed for IOIPSL output 44 44 INTEGER :: ndebug ! (0/1) set it to 1 in case of problem to have more print 45 45 INTEGER, SAVE :: n_hf_lastcalc ! last timestep for which r1_hf_n was calculated. 46 47 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: r1_hf_n ! reciprocal of water column height at F-points 46 48 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avr ! average 47 49 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: vor_avrb ! before vorticity (kt-1) … … 71 73 & vor_avrbn (jpi,jpj) , rotot (jpi,jpj) , vor_avrtot(jpi,jpj) , & 72 74 & vor_avrres(jpi,jpj) , vortrd (jpi,jpj,jpltot_vor,jpltype_vor) , & 73 & ndexvor1 (jpi*jpj) 75 & ndexvor1 (jpi*jpj) , r1_hf_n (jpi,jpj) , STAT= trd_vor_alloc ) 74 76 ! 75 77 IF( lk_mpp ) CALL mpp_sum ( trd_vor_alloc ) … … 89 91 INTEGER , INTENT(in ) :: kt ! time step 90 92 ! 91 INTEGER :: ji, jj ! dummy loop indices93 INTEGER :: ji, jj, jk ! dummy loop indices 92 94 REAL(wp), DIMENSION(jpi,jpj) :: ztswu, ztswv ! 2D workspace 93 95 !!---------------------------------------------------------------------- 96 97 IF( n_hf_lastcalc .lt. kt ) THEN 98 ! calculate reciprocal water column depth at F points if not already done this timestep. 99 r1_hf_n(:,:) = 0.0 100 DO jk = 1,jpk 101 r1_hf_n(:,:) = r1_hf_n(:,:) + e3f_n(:,:,jk) * fmask(:,:,jk) 102 END DO 103 r1_hf_n(:,:) = fmask(:,:,1) / ( r1_hf_n(:,:) + 1._wp - fmask(:,:,1) ) 104 n_hf_lastcalc = kt 105 ENDIF 94 106 95 107 SELECT CASE( ktrd ) … … 186 198 END SELECT 187 199 200 ! Curl(vertical integral)/H diagnostics: 201 ! Curl: 202 DO ji = 1, jpim1 203 DO jj = 1, jpjm1 204 vortrd(ji,jj,ktrd,jptype_vor_int) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 205 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) 206 END DO 207 END DO 208 ! Average of the Curl and Surface mask: 209 vortrd(:,:,ktrd,jptype_vor_int) = vortrd(:,:,ktrd,jptype_vor_int) * r1_hf_n(:,:) * fmask(:,:,1) 210 188 211 ! Average except for Beta.V 189 212 zudpvor(:,:) = zudpvor(:,:) * r1_hu_n(:,:) … … 266 289 END DO 267 290 ! Average of the Curl and Surface mask: 268 vortrd(:,:,ktrd,jptype_vor_int) = vortrd(:,:,ktrd,jptype_vor_int) * r1_h u_n(:,:) * fmask(:,:,1)291 vortrd(:,:,ktrd,jptype_vor_int) = vortrd(:,:,ktrd,jptype_vor_int) * r1_hf_n(:,:) * fmask(:,:,1) 269 292 ! 270 293 ! Curl(vertical mean) diagnostics: … … 424 447 IF( iom_use("vort_zdf_int") ) CALL iom_put("vort_zdf_int",vortrd(:,:,jpvor_zdf,jptype_vor_int)) 425 448 IF( iom_use("vort_spg_int") ) CALL iom_put("vort_spg_int",vortrd(:,:,jpvor_spg,jptype_vor_int)) 426 !!$IF( iom_use("vort_swf_int") ) CALL iom_put("vort_swf_int",vortrd(:,:,jpvor_prg,jptype_vor_int))427 !!$IF( iom_use("vort_bfr_int") ) CALL iom_put("vort_bfr_int",vortrd(:,:,jpvor_prg,jptype_vor_int))449 IF( iom_use("vort_swf_int") ) CALL iom_put("vort_swf_int",vortrd(:,:,jpvor_prg,jptype_vor_int)) 450 IF( iom_use("vort_bfr_int") ) CALL iom_put("vort_bfr_int",vortrd(:,:,jpvor_prg,jptype_vor_int)) 428 451 ! 429 452 ENDIF … … 465 488 IF( trd_vor_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'trd_vor_init : unable to allocate trdvor arrays' ) 466 489 490 n_hf_lastcalc = 0 467 491 vortrd(:,:,:,:) = 0.0 468 492
Note: See TracChangeset
for help on using the changeset viewer.