Changeset 1683 for trunk/NEMO
- Timestamp:
- 2009-10-28T11:24:41+01:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r1601 r1683 29 29 USE phycst ! physical constants 30 30 USE domvvl ! variable volume 31 USE dynadv ! advection 31 32 USE solmat ! matrix construction for elliptic solvers 32 33 USE solver ! solver initialization … … 136 137 zraur = 1. / rauw 137 138 138 !! Explicit physics with thickness weighted updates 139 IF( lk_vvl ) THEN ! variable volume 140 141 ! Evaluate the masked next velocity (effect of the additional force not included) 142 ! ------------------- (thickness weighted velocity, surface pressure gradient already included in dyn_hpg) 143 DO jk = 1, jpkm1 144 DO jj = 2, jpjm1 145 DO ji = fs_2, fs_jpim1 ! vector opt. 146 ua(ji,jj,jk) = ( ub(ji,jj,jk) * fse3u_b(ji,jj,jk) & 147 & + z2dt * ua(ji,jj,jk) * fse3u_n(ji,jj,jk) ) & 148 & / fse3u_a(ji,jj,jk) * umask(ji,jj,jk) 149 va(ji,jj,jk) = ( vb(ji,jj,jk) * fse3v_b(ji,jj,jk) & 150 & + z2dt * va(ji,jj,jk) * fse3v_n(ji,jj,jk) ) & 151 & / fse3v_a(ji,jj,jk) * vmask(ji,jj,jk) 139 ! Evaluate the masked next velocity (effect of the additional force not included) 140 ! --------------------------------- 141 IF( lk_vvl ) THEN ! variable volume (surface pressure gradient already included in dyn_hpg) 142 ! 143 IF( ln_dynadv_vec ) THEN ! vector form : applied on velocity 144 DO jk = 1, jpkm1 145 DO jj = 2, jpjm1 146 DO ji = fs_2, fs_jpim1 ! vector opt. 147 ua(ji,jj,jk) = ( ub(ji,jj,jk) + z2dt * ua(ji,jj,jk) ) * umask(ji,jj,jk) 148 va(ji,jj,jk) = ( vb(ji,jj,jk) + z2dt * va(ji,jj,jk) ) * vmask(ji,jj,jk) 149 END DO 152 150 END DO 153 151 END DO 154 END DO 155 156 ELSE ! fixed volume 157 158 ! Surface pressure gradient (now) 159 DO jj = 2, jpjm1 152 ! 153 ELSE ! flux form : applied on thickness weighted velocity 154 DO jk = 1, jpkm1 155 DO jj = 2, jpjm1 156 DO ji = fs_2, fs_jpim1 ! vector opt. 157 ua(ji,jj,jk) = ( ub(ji,jj,jk) * fse3u_b(ji,jj,jk) & 158 & + z2dt * ua(ji,jj,jk) * fse3u_n(ji,jj,jk) ) & 159 & / fse3u_a(ji,jj,jk) * umask(ji,jj,jk) 160 va(ji,jj,jk) = ( vb(ji,jj,jk) * fse3v_b(ji,jj,jk) & 161 & + z2dt * va(ji,jj,jk) * fse3v_n(ji,jj,jk) ) & 162 & / fse3v_a(ji,jj,jk) * vmask(ji,jj,jk) 163 END DO 164 END DO 165 END DO 166 ! 167 ENDIF 168 ! 169 ELSE ! fixed volume (add the surface pressure gradient + unweighted time stepping) 170 ! 171 DO jj = 2, jpjm1 ! Surface pressure gradient (now) 160 172 DO ji = fs_2, fs_jpim1 ! vector opt. 161 173 spgu(ji,jj) = - grav * ( sshn(ji+1,jj) - sshn(ji,jj) ) / e1u(ji,jj) … … 163 175 END DO 164 176 END DO 165 ! 166 ! add the surface pressure trend to the general trend and 167 ! evaluate the masked next velocity (effect of the additional force not included) 168 DO jk = 1, jpkm1 177 DO jk = 1, jpkm1 ! unweighted time stepping 169 178 DO jj = 2, jpjm1 170 179 DO ji = fs_2, fs_jpim1 ! vector opt.
Note: See TracChangeset
for help on using the changeset viewer.