Changeset 12377 for NEMO/trunk/src/OCE/BDY/bdydyn.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/OCE/BDY/bdydyn.F90
r10068 r12377 37 37 CONTAINS 38 38 39 SUBROUTINE bdy_dyn( kt, dyn3d_only )39 SUBROUTINE bdy_dyn( kt, Kbb, puu, pvv, Kaa, dyn3d_only ) 40 40 !!---------------------------------------------------------------------- 41 41 !! *** SUBROUTINE bdy_dyn *** … … 44 44 !! 45 45 !!---------------------------------------------------------------------- 46 INTEGER, INTENT(in) :: kt ! Main time step counter 47 LOGICAL, INTENT(in), OPTIONAL :: dyn3d_only ! T => only update baroclinic velocities 46 INTEGER , INTENT(in) :: kt ! Main time step counter 47 INTEGER , INTENT(in) :: Kbb, Kaa ! Ocean time level indices 48 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! Ocean velocities (to be updated at open boundaries) 49 LOGICAL, OPTIONAL , INTENT(in) :: dyn3d_only ! T => only update baroclinic velocities 48 50 ! 49 51 INTEGER :: jk, ii, ij, ib_bdy, ib, igrd ! Loop counter 50 52 LOGICAL :: ll_dyn2d, ll_dyn3d, ll_orlanski 51 REAL(wp), DIMENSION(jpi,jpj) :: pua2d, pva2d ! after barotropic velocities53 REAL(wp), DIMENSION(jpi,jpj) :: zua2d, zva2d ! after barotropic velocities 52 54 !!---------------------------------------------------------------------- 53 55 ! … … 70 72 71 73 ! ! "After" velocities: 72 pua2d(:,:) = 0._wp73 pva2d(:,:) = 0._wp74 zua2d(:,:) = 0._wp 75 zva2d(:,:) = 0._wp 74 76 DO jk = 1, jpkm1 75 pua2d(:,:) = pua2d(:,:) + e3u_a(:,:,jk) * ua(:,:,jk) * umask(:,:,jk)76 pva2d(:,:) = pva2d(:,:) + e3v_a(:,:,jk) * va(:,:,jk) * vmask(:,:,jk)77 zua2d(:,:) = zua2d(:,:) + e3u(:,:,jk,Kaa) * puu(:,:,jk,Kaa) * umask(:,:,jk) 78 zva2d(:,:) = zva2d(:,:) + e3v(:,:,jk,Kaa) * pvv(:,:,jk,Kaa) * vmask(:,:,jk) 77 79 END DO 78 pua2d(:,:) = pua2d(:,:) * r1_hu_a(:,:)79 pva2d(:,:) = pva2d(:,:) * r1_hv_a(:,:)80 zua2d(:,:) = zua2d(:,:) * r1_hu(:,:,Kaa) 81 zva2d(:,:) = zva2d(:,:) * r1_hv(:,:,Kaa) 80 82 81 83 DO jk = 1 , jpkm1 82 ua(:,:,jk) = ( ua(:,:,jk) - pua2d(:,:) ) * umask(:,:,jk)83 va(:,:,jk) = ( va(:,:,jk) - pva2d(:,:) ) * vmask(:,:,jk)84 puu(:,:,jk,Kaa) = ( puu(:,:,jk,Kaa) - zua2d(:,:) ) * umask(:,:,jk) 85 pvv(:,:,jk,Kaa) = ( pvv(:,:,jk,Kaa) - zva2d(:,:) ) * vmask(:,:,jk) 84 86 END DO 85 87 … … 87 89 IF( ll_orlanski ) THEN ! "Before" velocities (Orlanski condition only) 88 90 DO jk = 1 , jpkm1 89 ub(:,:,jk) = ( ub(:,:,jk) - ub_b(:,:) ) * umask(:,:,jk)90 vb(:,:,jk) = ( vb(:,:,jk) - vb_b(:,:) ) * vmask(:,:,jk)91 puu(:,:,jk,Kbb) = ( puu(:,:,jk,Kbb) - uu_b(:,:,Kbb) ) * umask(:,:,jk) 92 pvv(:,:,jk,Kbb) = ( pvv(:,:,jk,Kbb) - vv_b(:,:,Kbb) ) * vmask(:,:,jk) 91 93 END DO 92 94 ENDIF … … 97 99 !------------------------------------------------------- 98 100 99 IF( ll_dyn2d ) CALL bdy_dyn2d( kt, pua2d, pva2d, ub_b, vb_b, r1_hu_a(:,:), r1_hv_a(:,:), ssha)101 IF( ll_dyn2d ) CALL bdy_dyn2d( kt, zua2d, zva2d, uu_b(:,:,Kbb), vv_b(:,:,Kbb), r1_hu(:,:,Kaa), r1_hv(:,:,Kaa), ssh(:,:,Kaa) ) 100 102 101 IF( ll_dyn3d ) CALL bdy_dyn3d( kt )103 IF( ll_dyn3d ) CALL bdy_dyn3d( kt, Kbb, puu, pvv, Kaa ) 102 104 103 105 !------------------------------------------------------- … … 106 108 ! 107 109 DO jk = 1 , jpkm1 108 ua(:,:,jk) = ( ua(:,:,jk) + pua2d(:,:) ) * umask(:,:,jk)109 va(:,:,jk) = ( va(:,:,jk) + pva2d(:,:) ) * vmask(:,:,jk)110 puu(:,:,jk,Kaa) = ( puu(:,:,jk,Kaa) + zua2d(:,:) ) * umask(:,:,jk) 111 pvv(:,:,jk,Kaa) = ( pvv(:,:,jk,Kaa) + zva2d(:,:) ) * vmask(:,:,jk) 110 112 END DO 111 113 ! 112 114 IF ( ll_orlanski ) THEN 113 115 DO jk = 1 , jpkm1 114 ub(:,:,jk) = ( ub(:,:,jk) + ub_b(:,:) ) * umask(:,:,jk)115 vb(:,:,jk) = ( vb(:,:,jk) + vb_b(:,:) ) * vmask(:,:,jk)116 puu(:,:,jk,Kbb) = ( puu(:,:,jk,Kbb) + uu_b(:,:,Kbb) ) * umask(:,:,jk) 117 pvv(:,:,jk,Kbb) = ( pvv(:,:,jk,Kbb) + vv_b(:,:,Kbb) ) * vmask(:,:,jk) 116 118 END DO 117 119 END IF
Note: See TracChangeset
for help on using the changeset viewer.