Changeset 3991 for branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90
- Timestamp:
- 2013-07-29T11:04:44+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3987_METO1_MERCATOR6_OBC_BDY_merge/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90
r3968 r3991 30 30 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 31 USE in_out_manager ! 32 USE domvvl ! variable volume33 32 34 33 IMPLICIT NONE … … 57 56 LOGICAL, INTENT( in ), OPTIONAL :: dyn3d_only ! T => only update baroclinic velocities 58 57 !! 59 INTEGER :: jk,ii,ij,ib ,igrd ! Loop counter60 LOGICAL :: ll_dyn2d, ll_dyn3d 58 INTEGER :: jk,ii,ij,ib_bdy,ib,igrd ! Loop counter 59 LOGICAL :: ll_dyn2d, ll_dyn3d, ll_orlanski 61 60 !! 62 61 … … 70 69 ENDIF 71 70 71 ll_orlanski = .false. 72 DO ib_bdy = 1, nb_bdy 73 IF ( cn_dyn2d(ib_bdy) == 'orlanski' .or. cn_dyn2d(ib_bdy) == 'orlanski_npo' & 74 & .or. cn_dyn3d(ib_bdy) == 'orlanski' .or. cn_dyn3d(ib_bdy) == 'orlanski_npo') ll_orlanski = .true. 75 ENDDO 76 72 77 !------------------------------------------------------- 73 78 ! Set pointers … … 77 82 phur => hur 78 83 phvr => hvr 79 CALL wrk_alloc(jpi,jpj,pu2d,pv2d) 84 CALL wrk_alloc(jpi,jpj,pua2d,pva2d) 85 IF ( ll_orlanski ) CALL wrk_alloc(jpi,jpj,pub2d,pvb2d) 80 86 81 87 !------------------------------------------------------- … … 83 89 !------------------------------------------------------- 84 90 85 pu2d(:,:) = 0.e0 86 pv2d(:,:) = 0.e0 87 IF (lk_vvl) THEN 91 ! "After" velocities: 92 93 pua2d(:,:) = 0.e0 94 pva2d(:,:) = 0.e0 95 DO jk = 1, jpkm1 !! Vertically integrated momentum trends 96 pua2d(:,:) = pua2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 97 pva2d(:,:) = pva2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 98 END DO 99 pua2d(:,:) = pua2d(:,:) * phur(:,:) 100 pva2d(:,:) = pva2d(:,:) * phvr(:,:) 101 DO jk = 1 , jpkm1 102 ua(:,:,jk) = ua(:,:,jk) - pua2d(:,:) 103 va(:,:,jk) = va(:,:,jk) - pva2d(:,:) 104 END DO 105 106 ! "Before" velocities (required for Orlanski condition): 107 108 IF ( ll_orlanski ) THEN 109 pub2d(:,:) = 0.e0 110 pvb2d(:,:) = 0.e0 88 111 DO jk = 1, jpkm1 !! Vertically integrated momentum trends 89 pu2d(:,:) = pu2d(:,:) + fse3u_a(:,:,jk) * umask(:,:,jk) * ua(:,:,jk)90 pv2d(:,:) = pv2d(:,:) + fse3v_a(:,:,jk) * vmask(:,:,jk) * va(:,:,jk)112 pub2d(:,:) = pub2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ub(:,:,jk) 113 pvb2d(:,:) = pvb2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * vb(:,:,jk) 91 114 END DO 92 pu2d(:,:) = pu2d(:,:) / ( hu_0(:,:) + sshu_a(:,:) + 1._wp - umask(:,:,1) ) 93 pv2d(:,:) = pv2d(:,:) / ( hv_0(:,:) + sshv_a(:,:) + 1._wp - vmask(:,:,1) ) 94 ELSE 95 DO jk = 1, jpkm1 !! Vertically integrated momentum trends 96 pu2d(:,:) = pu2d(:,:) + fse3u(:,:,jk) * umask(:,:,jk) * ua(:,:,jk) 97 pv2d(:,:) = pv2d(:,:) + fse3v(:,:,jk) * vmask(:,:,jk) * va(:,:,jk) 115 pub2d(:,:) = pub2d(:,:) * phur(:,:) 116 pvb2d(:,:) = pvb2d(:,:) * phvr(:,:) 117 DO jk = 1 , jpkm1 118 ub(:,:,jk) = ub(:,:,jk) - pub2d(:,:) 119 vb(:,:,jk) = vb(:,:,jk) - pvb2d(:,:) 98 120 END DO 99 pu2d(:,:) = pu2d(:,:) * phur(:,:) 100 pv2d(:,:) = pv2d(:,:) * phvr(:,:) 101 ENDIF 102 DO jk = 1 , jpkm1 103 ua(:,:,jk) = ua(:,:,jk) - pu2d(:,:) * umask(:,:,jk) 104 va(:,:,jk) = va(:,:,jk) - pv2d(:,:) * vmask(:,:,jk) 105 END DO 121 END IF 106 122 107 123 !------------------------------------------------------- … … 119 135 120 136 DO jk = 1 , jpkm1 121 ua(:,:,jk) = ( ua(:,:,jk) + pu 2d(:,:) ) * umask(:,:,jk)122 va(:,:,jk) = ( va(:,:,jk) + pv 2d(:,:) ) * vmask(:,:,jk)137 ua(:,:,jk) = ( ua(:,:,jk) + pua2d(:,:) ) * umask(:,:,jk) 138 va(:,:,jk) = ( va(:,:,jk) + pva2d(:,:) ) * vmask(:,:,jk) 123 139 END DO 124 140 125 CALL wrk_dealloc(jpi,jpj,pu2d,pv2d) 141 IF ( ll_orlanski ) THEN 142 DO jk = 1 , jpkm1 143 ub(:,:,jk) = ( ub(:,:,jk) + pub2d(:,:) ) * umask(:,:,jk) 144 vb(:,:,jk) = ( vb(:,:,jk) + pvb2d(:,:) ) * vmask(:,:,jk) 145 END DO 146 END IF 147 148 CALL wrk_dealloc(jpi,jpj,pua2d,pva2d) 149 IF ( ll_orlanski ) CALL wrk_dealloc(jpi,jpj,pub2d,pvb2d) 126 150 127 151 IF( nn_timing == 1 ) CALL timing_stop('bdy_dyn')
Note: See TracChangeset
for help on using the changeset viewer.