- Timestamp:
- 2019-12-05T12:06:36+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/OCE/DIA/diacfl.F90
r10425 r12065 17 17 USE lbclnk ! ocean lateral boundary condition (or mpp link) 18 18 USE in_out_manager ! I/O manager 19 USE iom ! 19 20 USE timing ! Performance output 20 21 … … 27 28 INTEGER, DIMENSION(3) :: nCu_loc, nCv_loc, nCw_loc ! U, V, and W run max locations in the global domain 28 29 REAL(wp) :: rCu_max, rCv_max, rCw_max ! associated run max Courant number 29 30 !!gm CAUTION: need to declare these arrays here, otherwise the calculation fails in multi-proc !31 !!gm I don't understand why.32 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zCu_cfl, zCv_cfl, zCw_cfl ! workspace33 !!gm end34 30 35 31 PUBLIC dia_cfl ! routine called by step.F90 … … 54 50 INTEGER, INTENT(in) :: kt ! ocean time-step index 55 51 ! 56 INTEGER :: ji, jj, jk! dummy loop indices57 REAL(wp) :: z2dt, zCu_max, zCv_max, zCw_max! local scalars58 INTEGER , DIMENSION(3) :: iloc_u , iloc_v , iloc_w , iloc! workspace59 !!gm this does not work REAL(wp), DIMENSION(jpi,jpj,jpk) :: zCu_cfl, zCv_cfl, zCw_cfl! workspace52 INTEGER :: ji, jj, jk ! dummy loop indices 53 REAL(wp) :: z2dt, zCu_max, zCv_max, zCw_max ! local scalars 54 INTEGER , DIMENSION(3) :: iloc_u , iloc_v , iloc_w , iloc ! workspace 55 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zCu_cfl, zCv_cfl, zCw_cfl ! workspace 60 56 !!---------------------------------------------------------------------- 61 57 ! … … 70 66 DO jk = 1, jpk ! calculate Courant numbers 71 67 DO jj = 1, jpj 72 DO ji = 1, fs_jpim1 ! vector opt.68 DO ji = 1, jpi 73 69 zCu_cfl(ji,jj,jk) = ABS( un(ji,jj,jk) ) * z2dt / e1u (ji,jj) ! for i-direction 74 70 zCv_cfl(ji,jj,jk) = ABS( vn(ji,jj,jk) ) * z2dt / e2v (ji,jj) ! for j-direction … … 78 74 END DO 79 75 ! 76 ! write outputs 77 IF( iom_use('cfl_cu') ) CALL iom_put( 'cfl_cu', MAXVAL( zCu_cfl, dim=3 ) ) 78 IF( iom_use('cfl_cv') ) CALL iom_put( 'cfl_cv', MAXVAL( zCv_cfl, dim=3 ) ) 79 IF( iom_use('cfl_cw') ) CALL iom_put( 'cfl_cw', MAXVAL( zCw_cfl, dim=3 ) ) 80 80 81 ! ! calculate maximum values and locations 81 82 IF( lk_mpp ) THEN … … 105 106 ! ! write out to file 106 107 IF( lwp ) THEN 107 WRITE(numcfl,FMT='(2x,i 4,5x,a6,4x,f7.4,1x,i4,1x,i4,1x,i4)') kt, 'Max Cu', zCu_max, iloc_u(1), iloc_u(2), iloc_u(3)108 WRITE(numcfl,FMT='(2x,i6,3x,a6,4x,f7.4,1x,i4,1x,i4,1x,i4)') kt, 'Max Cu', zCu_max, iloc_u(1), iloc_u(2), iloc_u(3) 108 109 WRITE(numcfl,FMT='(11x, a6,4x,f7.4,1x,i4,1x,i4,1x,i4)') 'Max Cv', zCv_max, iloc_v(1), iloc_v(2), iloc_v(3) 109 110 WRITE(numcfl,FMT='(11x, a6,4x,f7.4,1x,i4,1x,i4,1x,i4)') 'Max Cw', zCw_max, iloc_w(1), iloc_w(2), iloc_w(3) … … 166 167 rCw_max = 0._wp 167 168 ! 168 !!gm required to work169 ALLOCATE ( zCu_cfl(jpi,jpj,jpk), zCv_cfl(jpi,jpj,jpk), zCw_cfl(jpi,jpj,jpk) )170 !!gm end171 !172 169 END SUBROUTINE dia_cfl_init 173 170
Note: See TracChangeset
for help on using the changeset viewer.