- Timestamp:
- 2016-11-28T17:04:10+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/BDY/bdyvol.F90
r5930 r7351 10 10 !! 3.4 ! 2011 (D. Storkey) rewrite in preparation for OBC-BDY merge 11 11 !!---------------------------------------------------------------------- 12 #if 12 #if defined key_bdy 13 13 !!---------------------------------------------------------------------- 14 !! 'key_bdy' unstructured open boundary conditions14 !! 'key_bdy' unstructured open boundary conditions 15 15 !!---------------------------------------------------------------------- 16 USE oce 17 USE bdy_oce 18 USE sbc_oce 19 USE dom_oce 20 USE phycst 21 USE sbcisf 16 USE oce ! ocean dynamics and tracers 17 USE bdy_oce ! ocean open boundary conditions 18 USE sbc_oce ! ocean surface boundary conditions 19 USE dom_oce ! ocean space and time domain 20 USE phycst ! physical constants 21 USE sbcisf ! ice shelf 22 22 ! 23 USE in_out_manager 24 USE lib_mpp 25 USE timing 26 USE lib_fortran 23 USE in_out_manager ! I/O manager 24 USE lib_mpp ! for mppsum 25 USE timing ! Timing 26 USE lib_fortran ! Fortran routines library 27 27 28 28 IMPLICIT NONE 29 29 PRIVATE 30 30 31 PUBLIC bdy_vol31 PUBLIC bdy_vol ! called by ??? 32 32 33 !! * Substitutions34 # include "domzgr_substitute.h90"35 33 !!---------------------------------------------------------------------- 36 !! NEMO/OPA 3. 6 , NEMO Consortium (2014)34 !! NEMO/OPA 3.7 , NEMO Consortium (2015) 37 35 !! $Id$ 38 36 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 45 43 !! 46 44 !! ** Purpose : This routine controls the volume of the system. 47 !! A correction velocity is calculated 48 !! t o correct the total transport through the unstructured OBC.45 !! A correction velocity is calculated to correct the total transport 46 !! through the unstructured OBC. 49 47 !! The total depth used is constant (H0) to be consistent with the 50 !! linear free surface coded in OPA 8.2 48 !! linear free surface coded in OPA 8.2 <<<=== !!gm ???? true ???? 51 49 !! 52 50 !! ** Method : The correction velocity (zubtpecor here) is defined calculating … … 72 70 !! (set nn_volctl to 1 in tne namelist for this option) 73 71 !!---------------------------------------------------------------------- 74 INTEGER, INTENT( in) :: kt ! ocean time-step index75 ! !72 INTEGER, INTENT(in) :: kt ! ocean time-step index 73 ! 76 74 INTEGER :: ji, jj, jk, jb, jgrd 77 75 INTEGER :: ib_bdy, ii, ij … … 93 91 ! ----------------------------------------------------------------------- 94 92 !!gm replace these lines : 95 z_cflxemp = SUM ( ( emp(:,:) -rnf(:,:)+fwfisf(:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / rau093 z_cflxemp = SUM ( ( emp(:,:) - rnf(:,:) + fwfisf(:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / rau0 96 94 IF( lk_mpp ) CALL mpp_sum( z_cflxemp ) ! sum over the global domain 97 95 !!gm by : … … 110 108 ii = idx%nbi(jb,jgrd) 111 109 ij = idx%nbj(jb,jgrd) 112 zubtpecor = zubtpecor + idx%flagu(jb,jgrd) * ua(ii,ij, jk) * e2u(ii,ij) * fse3u(ii,ij,jk)110 zubtpecor = zubtpecor + idx%flagu(jb,jgrd) * ua(ii,ij, jk) * e2u(ii,ij) * e3u_n(ii,ij,jk) 113 111 END DO 114 112 END DO … … 118 116 ii = idx%nbi(jb,jgrd) 119 117 ij = idx%nbj(jb,jgrd) 120 zubtpecor = zubtpecor + idx%flagv(jb,jgrd) * va(ii,ij, jk) * e1v(ii,ij) * fse3v(ii,ij,jk)118 zubtpecor = zubtpecor + idx%flagv(jb,jgrd) * va(ii,ij, jk) * e1v(ii,ij) * e3v_n(ii,ij,jk) 121 119 END DO 122 120 END DO … … 127 125 ! The normal velocity correction 128 126 ! ------------------------------ 129 IF( nn_volctl==1 ) THEN ; zubtpecor = ( zubtpecor - z_cflxemp ) / bdysurftot130 ELSE ; zubtpecor = zubtpecor / bdysurftot127 IF( nn_volctl==1 ) THEN ; zubtpecor = ( zubtpecor - z_cflxemp ) / bdysurftot 128 ELSE ; zubtpecor = zubtpecor / bdysurftot 131 129 END IF 132 130 … … 143 141 ij = idx%nbj(jb,jgrd) 144 142 ua(ii,ij,jk) = ua(ii,ij,jk) - idx%flagu(jb,jgrd) * zubtpecor * umask(ii,ij,jk) 145 ztranst = ztranst + idx%flagu(jb,jgrd) * ua(ii,ij,jk) * e2u(ii,ij) * fse3u(ii,ij,jk)143 ztranst = ztranst + idx%flagu(jb,jgrd) * ua(ii,ij,jk) * e2u(ii,ij) * e3u_n(ii,ij,jk) 146 144 END DO 147 145 END DO … … 152 150 ij = idx%nbj(jb,jgrd) 153 151 va(ii,ij,jk) = va(ii,ij,jk) -idx%flagv(jb,jgrd) * zubtpecor * vmask(ii,ij,jk) 154 ztranst = ztranst + idx%flagv(jb,jgrd) * va(ii,ij,jk) * e1v(ii,ij) * fse3v(ii,ij,jk)152 ztranst = ztranst + idx%flagv(jb,jgrd) * va(ii,ij,jk) * e1v(ii,ij) * e3v_n(ii,ij,jk) 155 153 END DO 156 154 END DO … … 161 159 ! Check the cumulated transport through unstructured OBC once barotropic velocities corrected 162 160 ! ------------------------------------------------------ 163 IF( lwp .AND. MOD( kt, nwrite ) == 0 ) THEN161 IF( lwp .AND. MOD( kt, nwrite ) == 0 ) THEN 164 162 IF(lwp) WRITE(numout,*) 165 163 IF(lwp) WRITE(numout,*)'bdy_vol : time step :', kt … … 171 169 END IF 172 170 ! 173 IF( nn_timing == 1 ) CALL timing_stop('bdy_vol')171 IF( nn_timing == 1 ) CALL timing_stop('bdy_vol') 174 172 ! 175 173 END IF ! ln_vol
Note: See TracChangeset
for help on using the changeset viewer.