Changeset 2715 for trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
- Timestamp:
- 2011-03-30T17:58:35+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
r2528 r2715 16 16 USE oce ! ocean dynamics and tracers 17 17 USE dom_oce ! ocean space and time domain 18 USE in_out_manager ! I/O manager19 USE lbclnk ! ocean lateral boundary conditions (or mpp link)20 18 USE trdmod ! ocean dynamics trends 21 19 USE trdmod_oce ! ocean variables trends 20 USE in_out_manager ! I/O manager 22 21 USE prtctl ! Print control 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 23 USE lib_mpp ! MPP library 23 24 24 25 IMPLICIT NONE … … 34 35 # include "vectopt_loop_substitute.h90" 35 36 !!---------------------------------------------------------------------- 36 !! NEMO/OPA 3.2 , LODYC-IPSL (2009)37 !! NEMO/OPA 4.0 , NEMO Consortium (2011) 37 38 !! $Id$ 38 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 39 !!---------------------------------------------------------------------- 40 39 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 40 !!---------------------------------------------------------------------- 41 41 CONTAINS 42 42 … … 68 68 !! Reference : Shchepetkin & McWilliams, 2005, Ocean Modelling. 69 69 !!---------------------------------------------------------------------- 70 USE oce, ONLY: zfu => ta ! use ta as 3D workspace 71 USE oce, ONLY: zfv => sa ! use sa as 3D workspace 72 !! 70 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 71 USE oce , ONLY: zfu => ta , zfv => sa ! (ta,sa) used as 3D workspace 72 USE wrk_nemo, ONLY: zfu_t => wrk_3d_1 , zfv_t =>wrk_3d_4 , zfu_uw =>wrk_3d_6 ! 3D workspace 73 USE wrk_nemo, ONLY: zfu_f => wrk_3d_2 , zfv_f =>wrk_3d_5 , zfv_vw =>wrk_3d_7 74 USE wrk_nemo, ONLY: zfw => wrk_3d_3 75 USE wrk_nemo, ONLY: zlu_uu => wrk_4d_1 , zlv_vv=>wrk_4d_3 ! 4D workspace 76 USE wrk_nemo, ONLY: zlu_uv => wrk_4d_2 , zlv_vu=>wrk_4d_4 77 ! 73 78 INTEGER, INTENT(in) :: kt ! ocean time-step index 74 ! !79 ! 75 80 INTEGER :: ji, jj, jk ! dummy loop indices 76 81 REAL(wp) :: zbu, zbv ! temporary scalars 77 82 REAL(wp) :: zui, zvj, zfuj, zfvi, zl_u, zl_v ! temporary scalars 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfu_t, zfu_f ! temporary workspace79 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfv_t, zfv_f ! " "80 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfw, zfu_uw, zfv_vw81 REAL(wp), DIMENSION(jpi,jpj,jpk,2) :: zlu_uu, zlu_uv ! temporary workspace82 REAL(wp), DIMENSION(jpi,jpj,jpk,2) :: zlv_vv, zlv_vu ! temporary workspace83 83 !!---------------------------------------------------------------------- 84 84 … … 88 88 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 89 89 ENDIF 90 zfu_t(:,:,:) = 0.e0 91 zfv_t(:,:,:) = 0.e0 92 zfu_f(:,:,:) = 0.e0 93 zfv_f(:,:,:) = 0.e0 94 ! 95 zlu_uu(:,:,:,:) = 0.e0 96 zlv_vv(:,:,:,:) = 0.e0 97 zlu_uv(:,:,:,:) = 0.e0 98 zlv_vu(:,:,:,:) = 0.e0 90 91 ! Check that required workspace arrays are not already in use 92 IF( wrk_in_use(3, 1,2,3,4,5,6,7) .OR. wrk_in_use(4, 1,2,3,4) ) THEN 93 CALL ctl_stop('dyn_adv_ubs: requested workspace array unavailable') ; RETURN 94 ENDIF 95 96 zfu_t(:,:,:) = 0._wp 97 zfv_t(:,:,:) = 0._wp 98 zfu_f(:,:,:) = 0._wp 99 zfv_f(:,:,:) = 0._wp 100 ! 101 zlu_uu(:,:,:,:) = 0._wp 102 zlv_vv(:,:,:,:) = 0._wp 103 zlu_uv(:,:,:,:) = 0._wp 104 zlv_vu(:,:,:,:) = 0._wp 99 105 100 106 IF( l_trddyn ) THEN ! Save ua and va trends … … 116 122 zlu_uv(ji,jj,jk,1) = ( ub (ji,jj+1,jk)-2.*ub (ji,jj,jk)+ub (ji,jj-1,jk) ) * umask(ji,jj,jk) 117 123 zlv_vu(ji,jj,jk,1) = ( vb (ji+1,jj,jk)-2.*vb (ji,jj,jk)+vb (ji-1,jj,jk) ) * vmask(ji,jj,jk) 118 124 ! 119 125 zlu_uu(ji,jj,jk,2) = ( zfu(ji+1,jj,jk)-2.*zfu(ji,jj,jk)+zfu(ji-1,jj,jk) ) * umask(ji,jj,jk) 120 126 zlv_vv(ji,jj,jk,2) = ( zfv(ji,jj+1,jk)-2.*zfv(ji,jj,jk)+zfv(ji,jj-1,jk) ) * vmask(ji,jj,jk) … … 125 131 END DO 126 132 !!gm BUG !!! just below this should be +1 in all the communications 127 CALL lbc_lnk( zlu_uu(:,:,:,1), 'U', -1.) ; CALL lbc_lnk( zlu_uv(:,:,:,1), 'U', -1.)128 CALL lbc_lnk( zlu_uu(:,:,:,2), 'U', -1.) ; CALL lbc_lnk( zlu_uv(:,:,:,2), 'U', -1.)129 CALL lbc_lnk( zlv_vv(:,:,:,1), 'V', -1.) ; CALL lbc_lnk( zlv_vu(:,:,:,1), 'V', -1.)130 CALL lbc_lnk( zlv_vv(:,:,:,2), 'V', -1.) ; CALL lbc_lnk( zlv_vu(:,:,:,2), 'V', -1.) 131 133 ! CALL lbc_lnk( zlu_uu(:,:,:,1), 'U', -1.) ; CALL lbc_lnk( zlu_uv(:,:,:,1), 'U', -1.) 134 ! CALL lbc_lnk( zlu_uu(:,:,:,2), 'U', -1.) ; CALL lbc_lnk( zlu_uv(:,:,:,2), 'U', -1.) 135 ! CALL lbc_lnk( zlv_vv(:,:,:,1), 'V', -1.) ; CALL lbc_lnk( zlv_vu(:,:,:,1), 'V', -1.) 136 ! CALL lbc_lnk( zlv_vv(:,:,:,2), 'V', -1.) ; CALL lbc_lnk( zlv_vu(:,:,:,2), 'V', -1.) 137 ! 132 138 !!gm corrected: 133 139 CALL lbc_lnk( zlu_uu(:,:,:,1), 'U', 1. ) ; CALL lbc_lnk( zlu_uv(:,:,:,1), 'U', 1. ) … … 248 254 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 249 255 ! 256 IF( wrk_not_released(3, 1,2,3,4,5,6,7) .OR. & 257 wrk_not_released(4, 1,2,3,4) ) CALL ctl_stop('dyn_adv_ubs: failed to release workspace array') 258 ! 250 259 END SUBROUTINE dyn_adv_ubs 251 260
Note: See TracChangeset
for help on using the changeset viewer.