Changeset 1565
- Timestamp:
- 2009-07-31T16:01:08+02:00 (16 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 4 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/LIM_SRC_2/limthd_2.F90
r1559 r1565 18 18 USE phycst ! physical constants 19 19 USE dom_oce ! ocean space and time domain variables 20 USE domvvl ! Variable volume 20 21 USE lbclnk 21 22 USE in_out_manager ! I/O manager … … 217 218 218 219 ! energy needed to bring ocean surface layer until its freezing 219 qcmif (ji,jj) = rau0 * rcp * fse3t(ji,jj,1) * ( tfu(ji,jj) - sst_m(ji,jj) ) * ( 1 - zinda ) 220 qcmif (ji,jj) = rau0 * rcp * fse3t_m(ji,jj,1) & 221 & * ( tfu(ji,jj) - sst_m(ji,jj) ) * ( 1 - zinda ) 220 222 221 223 ! calculate oceanic heat flux. -
trunk/NEMO/LIM_SRC_3/limthd.F90
r1465 r1565 14 14 USE phycst ! physical constants 15 15 USE dom_oce ! ocean space and time domain variables 16 USE domvvl ! Variable volume 16 17 USE lbclnk 17 18 USE in_out_manager ! I/O manager … … 241 242 ! Energy needed to bring ocean surface layer until its freezing 242 243 ! qcmif, limflx 243 qcmif (ji,jj) = rau0 * rcp * fse3t(ji,jj,1) * ( t_bo(ji,jj) - (sst_m(ji,jj) + rt0) ) * ( 1. - zinda ) 244 qcmif (ji,jj) = rau0 * rcp * fse3t_m(ji,jj,1) & 245 & * ( t_bo(ji,jj) - (sst_m(ji,jj) + rt0) ) * ( 1. - zinda ) 244 246 245 247 ! calculate oceanic heat flux (limthd_dh) -
trunk/NEMO/OPA_SRC/DOM/domzgr_substitute.h90
r1438 r1565 46 46 # define fse3vw(i,j,k) e3vw_1(i,j,k) 47 47 48 # define fsdept_b(i,j,k) (fsdept_0(i,j,k)*(1 +sshb(i,j)*mut(i,j,k)))49 # define fsdepw_b(i,j,k) (fsdepw_0(i,j,k)*(1 +sshb(i,j)*mut(i,j,k)))50 # define fsde3w_b(i,j,k) (fsde3w_0(i,j,k)*(1 +sshb(i,j)*mut(i,j,k))-sshb(i,j))51 # define fse3t_b(i,j,k) (fse3t_0(i,j,k)*(1 +sshb(i,j)*mut(i,j,k)))52 # define fse3u_b(i,j,k) (fse3u_0(i,j,k)*(1 +sshu_b(i,j)*muu(i,j,k)))53 # define fse3v_b(i,j,k) (fse3v_0(i,j,k)*(1 +sshv_b(i,j)*muv(i,j,k)))54 # define fse3f_b(i,j,k) (fse3f_0(i,j,k)*(1 +sshf_b(i,j)*muf(i,j,k)))55 # define fse3w_b(i,j,k) (fse3w_0(i,j,k)*(1 +sshb(i,j)*mut(i,j,k)))56 # define fse3uw_b(i,j,k) (fse3uw_0(i,j,k)*(1 +sshu_b(i,j)*muu(i,j,k)))57 # define fse3vw_b(i,j,k) (fse3vw_0(i,j,k)*(1 +sshv_b(i,j)*muv(i,j,k)))48 # define fsdept_b(i,j,k) (fsdept_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 49 # define fsdepw_b(i,j,k) (fsdepw_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 50 # define fsde3w_b(i,j,k) (fsde3w_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))-sshb(i,j)) 51 # define fse3t_b(i,j,k) (fse3t_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 52 # define fse3u_b(i,j,k) (fse3u_0(i,j,k)*(1.+sshu_b(i,j)*muu(i,j,k))) 53 # define fse3v_b(i,j,k) (fse3v_0(i,j,k)*(1.+sshv_b(i,j)*muv(i,j,k))) 54 # define fse3f_b(i,j,k) (fse3f_0(i,j,k)*(1.+sshf_b(i,j)*muf(i,j,k))) 55 # define fse3w_b(i,j,k) (fse3w_0(i,j,k)*(1.+sshb(i,j)*mut(i,j,k))) 56 # define fse3uw_b(i,j,k) (fse3uw_0(i,j,k)*(1.+sshu_b(i,j)*muu(i,j,k))) 57 # define fse3vw_b(i,j,k) (fse3vw_0(i,j,k)*(1.+sshv_b(i,j)*muv(i,j,k))) 58 58 59 # define fsdept_n(i,j,k) (fsdept_0(i,j,k)*(1 +sshn(i,j)*mut(i,j,k)))60 # define fsdepw_n(i,j,k) (fsdepw_0(i,j,k)*(1 +sshn(i,j)*mut(i,j,k)))61 # define fsde3w_n(i,j,k) (fsde3w_0(i,j,k)*(1 +sshn(i,j)*mut(i,j,k))-sshn(i,j))62 # define fse3t_n(i,j,k) (fse3t_0(i,j,k)*(1 +sshn(i,j)*mut(i,j,k)))63 # define fse3u_n(i,j,k) (fse3u_0(i,j,k)*(1 +sshu_n(i,j)*muu(i,j,k)))64 # define fse3v_n(i,j,k) (fse3v_0(i,j,k)*(1 +sshv_n(i,j)*muv(i,j,k)))65 # define fse3f_n(i,j,k) (fse3f_0(i,j,k)*(1 +sshf_n(i,j)*muf(i,j,k)))66 # define fse3w_n(i,j,k) (fse3w_0(i,j,k)*(1 +sshn(i,j)*mut(i,j,k)))67 # define fse3uw_n(i,j,k) (fse3uw_0(i,j,k)*(1 +sshu_n(i,j)*muu(i,j,k)))68 # define fse3vw_n(i,j,k) (fse3vw_0(i,j,k)*(1 +sshv_n(i,j)*muv(i,j,k)))59 # define fsdept_n(i,j,k) (fsdept_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k))) 60 # define fsdepw_n(i,j,k) (fsdepw_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k))) 61 # define fsde3w_n(i,j,k) (fsde3w_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k))-sshn(i,j)) 62 # define fse3t_n(i,j,k) (fse3t_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k))) 63 # define fse3u_n(i,j,k) (fse3u_0(i,j,k)*(1.+sshu_n(i,j)*muu(i,j,k))) 64 # define fse3v_n(i,j,k) (fse3v_0(i,j,k)*(1.+sshv_n(i,j)*muv(i,j,k))) 65 # define fse3f_n(i,j,k) (fse3f_0(i,j,k)*(1.+sshf_n(i,j)*muf(i,j,k))) 66 # define fse3w_n(i,j,k) (fse3w_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k))) 67 # define fse3uw_n(i,j,k) (fse3uw_0(i,j,k)*(1.+sshu_n(i,j)*muu(i,j,k))) 68 # define fse3vw_n(i,j,k) (fse3vw_0(i,j,k)*(1.+sshv_n(i,j)*muv(i,j,k))) 69 69 70 # define fsdept_a(i,j,k) (fsdept_0(i,j,k)*(1+ssha(i,j)*mut(i,j,k))) 71 # define fsdepw_a(i,j,k) (fsdepw_0(i,j,k)*(1+ssha(i,j)*mut(i,j,k))) 72 # define fsde3w_a(i,j,k) (fsde3w_0(i,j,k)*(1+ssha(i,j)*mut(i,j,k))-ssha(i,j)) 73 # define fse3t_a(i,j,k) (fse3t_0(i,j,k)*(1+ssha(i,j)*mut(i,j,k))) 74 # define fse3u_a(i,j,k) (fse3u_0(i,j,k)*(1+sshu_a(i,j)*muu(i,j,k))) 75 # define fse3v_a(i,j,k) (fse3v_0(i,j,k)*(1+sshv_a(i,j)*muv(i,j,k))) 76 # define fse3f_a(i,j,k) (fse3f_0(i,j,k)*(1+sshf_a(i,j)*muf(i,j,k))) 77 # define fse3w_a(i,j,k) (fse3w_0(i,j,k)*(1+ssha(i,j)*mut(i,j,k))) 78 # define fse3uw_a(i,j,k) (fse3uw_0(i,j,k)*(1+sshu_a(i,j)*muu(i,j,k))) 79 # define fse3vw_a(i,j,k) (fse3vw_0(i,j,k)*(1+sshv_a(i,j)*muv(i,j,k))) 70 # define fse3t_m(i,j,k) (fse3t_0(i,j,k)*(1.+ssh_m(i,j)*mut(i,j,k))) 71 72 # define fsdept_a(i,j,k) (fsdept_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 73 # define fsdepw_a(i,j,k) (fsdepw_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 74 # define fsde3w_a(i,j,k) (fsde3w_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))-ssha(i,j)) 75 # define fse3t_a(i,j,k) (fse3t_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 76 # define fse3u_a(i,j,k) (fse3u_0(i,j,k)*(1.+sshu_a(i,j)*muu(i,j,k))) 77 # define fse3v_a(i,j,k) (fse3v_0(i,j,k)*(1.+sshv_a(i,j)*muv(i,j,k))) 78 # define fse3f_a(i,j,k) (fse3f_0(i,j,k)*(1.+sshf_a(i,j)*muf(i,j,k))) 79 # define fse3w_a(i,j,k) (fse3w_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k))) 80 # define fse3uw_a(i,j,k) (fse3uw_0(i,j,k)*(1.+sshu_a(i,j)*muu(i,j,k))) 81 # define fse3vw_a(i,j,k) (fse3vw_0(i,j,k)*(1.+sshv_a(i,j)*muv(i,j,k))) 80 82 81 83 #else … … 114 116 # define fse3vw_n(i,j,k) fse3vw_0(i,j,k) 115 117 118 # define fse3t_m(i,j,k) fse3t_0(i,j,k) 119 116 120 # define fsdept_a(i,j,k) fsdept_0(i,j,k) 117 121 # define fsdepw_a(i,j,k) fsdepw_0(i,j,k) -
trunk/NEMO/OPA_SRC/DYN/sshwzv.F90
r1564 r1565 1 MODULE wzvmod 2 !! MODULE sshwzv 1 MODULE sshwzv 3 2 !!============================================================================== 4 3 !! *** MODULE sshwzv *** … … 17 16 USE sbc_oce ! surface boundary condition: ocean 18 17 USE domvvl ! Variable volume 18 USE divcur ! hor. divergence and curl (div & cur routines) 19 USE cla_div ! cross land: hor. divergence (div_cla routine) 19 20 USE iom ! I/O library 20 21 USE restart ! only for lrst_oce … … 109 110 ENDIF 110 111 111 ! set time step size (Euler/Leapfrog)112 z2dt = 2. * rdt113 IF( neuler == 0 .AND. kt == nit000 ) z2dt =rdt114 115 zraur = 1. / rauw116 117 ! !------------------------------!118 ! ! After Sea Surface Height !119 ! !------------------------------!120 zhdiv(:,:) = 0.e0121 DO jk = 1, jpkm1 ! Horizontal divergence of barotropic transports122 zhdiv(:,:) = zhdiv(:,:) + fse3t(:,:,jk) * hdivn(:,:,jk)123 END DO124 125 ! ! Sea surface elevation time stepping126 ssha(:,:) = ( sshb(:,:) - z2dt * ( zraur * emp(:,:) + zhdiv(:,:) ) ) * tmask(:,:,1)127 128 #if defined key_obc129 # if defined key_agrif130 IF ( Agrif_Root() ) THEN131 # endif132 ssha(:,:) = ssha(:,:) * obctmsk(:,:)133 CALL lbc_lnk( ssha, 'T', 1. ) ! absolutly compulsory !! (jmm)134 # if defined key_agrif135 ENDIF136 # endif137 #endif138 139 ! ! Sea Surface Height at u-,v- and f-points (vvl case only)140 IF( lk_vvl ) THEN ! (required only in key_vvl case)141 DO jj = 1, jpjm1142 DO ji = 1, fs_jpim1 ! Vector Opt.143 sshu_a(ji,jj) = 0.5 * umask(ji,jj,1) / ( e1u(ji ,jj) * e2u(ji ,jj) ) &144 & * ( e1t(ji ,jj) * e2t(ji ,jj) * ssha(ji ,jj) &145 & + e1t(ji+1,jj) * e2t(ji+1,jj) * ssha(ji+1,jj) )146 sshv_a(ji,jj) = 0.5 * vmask(ji,jj,1) / ( e1v(ji,jj ) * e2v(ji,jj ) ) &147 & * ( e1t(ji,jj ) * e2t(ji,jj ) * ssha(ji,jj ) &148 & + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha(ji,jj+1) )149 sshf_a(ji,jj) = 0.25 * umask(ji,jj,1) * umask (ji,jj+1,1) & ! Caution : fmask not used150 & * ( ssha(ji ,jj) + ssha(ji ,jj+1) &151 & + ssha(ji+1,jj) + ssha(ji+1,jj+1) )152 END DO153 END DO154 CALL lbc_lnk( sshu_a, 'U', 1. ) ! Boundaries conditions155 CALL lbc_lnk( sshv_a, 'V', 1. )156 CALL lbc_lnk( sshf_a, 'F', 1. )157 ENDIF158 159 ! !------------------------------!160 ! ! Now Vertical Velocity !161 ! !------------------------------!162 ! ! integrate from the bottom the hor. divergence163 DO jk = jpkm1, 1, -1164 wn(:,:,jk) = wn(:,:,jk+1) - fse3t_n(:,:,jk) * hdivn(:,:,jk) &165 & - ( fse3t_a(:,:,jk) &166 & - fse3t_b(:,:,jk) ) * tmask(:,:,jk) / z2dt167 END DO168 !169 CALL iom_put( "woce", wn ) ! vert. current170 CALL iom_put( "ssh" , sshn ) ! sea surface height171 172 112 ! !------------------------------! 173 113 ! ! Update Now Vertical coord. ! … … 194 134 hur(:,:) = umask(:,:,1) / ( hu(:,:) + 1.e0 - umask(:,:,1) ) 195 135 hvr(:,:) = vmask(:,:,1) / ( hv(:,:) + 1.e0 - vmask(:,:,1) ) 196 197 ENDIF 136 ! 137 ENDIF 138 139 CALL div_cur( kt ) ! Horizontal divergence & Relative vorticity 140 IF( n_cla == 1 ) CALL div_cla( kt ) ! Cross Land Advection (Update Hor. divergence) 141 142 ! set time step size (Euler/Leapfrog) 143 z2dt = 2. * rdt 144 IF( neuler == 0 .AND. kt == nit000 ) z2dt =rdt 145 146 zraur = 1. / rauw 147 148 ! !------------------------------! 149 ! ! After Sea Surface Height ! 150 ! !------------------------------! 151 zhdiv(:,:) = 0.e0 152 DO jk = 1, jpkm1 ! Horizontal divergence of barotropic transports 153 zhdiv(:,:) = zhdiv(:,:) + fse3t(:,:,jk) * hdivn(:,:,jk) 154 END DO 155 156 ! ! Sea surface elevation time stepping 157 ssha(:,:) = ( sshb(:,:) - z2dt * ( zraur * emp(:,:) + zhdiv(:,:) ) ) * tmask(:,:,1) 158 159 #if defined key_obc 160 # if defined key_agrif 161 IF ( Agrif_Root() ) THEN 162 # endif 163 ssha(:,:) = ssha(:,:) * obctmsk(:,:) 164 CALL lbc_lnk( ssha, 'T', 1. ) ! absolutly compulsory !! (jmm) 165 # if defined key_agrif 166 ENDIF 167 # endif 168 #endif 169 170 ! ! Sea Surface Height at u-,v- and f-points (vvl case only) 171 IF( lk_vvl ) THEN ! (required only in key_vvl case) 172 DO jj = 1, jpjm1 173 DO ji = 1, fs_jpim1 ! Vector Opt. 174 sshu_a(ji,jj) = 0.5 * umask(ji,jj,1) / ( e1u(ji ,jj) * e2u(ji ,jj) ) & 175 & * ( e1t(ji ,jj) * e2t(ji ,jj) * ssha(ji ,jj) & 176 & + e1t(ji+1,jj) * e2t(ji+1,jj) * ssha(ji+1,jj) ) 177 sshv_a(ji,jj) = 0.5 * vmask(ji,jj,1) / ( e1v(ji,jj ) * e2v(ji,jj ) ) & 178 & * ( e1t(ji,jj ) * e2t(ji,jj ) * ssha(ji,jj ) & 179 & + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha(ji,jj+1) ) 180 sshf_a(ji,jj) = 0.25 * umask(ji,jj,1) * umask (ji,jj+1,1) & ! Caution : fmask not used 181 & * ( ssha(ji ,jj) + ssha(ji ,jj+1) & 182 & + ssha(ji+1,jj) + ssha(ji+1,jj+1) ) 183 END DO 184 END DO 185 CALL lbc_lnk( sshu_a, 'U', 1. ) ! Boundaries conditions 186 CALL lbc_lnk( sshv_a, 'V', 1. ) 187 CALL lbc_lnk( sshf_a, 'F', 1. ) 188 ENDIF 189 190 ! !------------------------------! 191 ! ! Now Vertical Velocity ! 192 ! !------------------------------! 193 ! ! integrate from the bottom the hor. divergence 194 DO jk = jpkm1, 1, -1 195 wn(:,:,jk) = wn(:,:,jk+1) - fse3t_n(:,:,jk) * hdivn(:,:,jk) & 196 & - ( fse3t_a(:,:,jk) & 197 & - fse3t_b(:,:,jk) ) * tmask(:,:,jk) / z2dt 198 END DO 199 ! 200 CALL iom_put( "woce", wn ) ! vert. current 201 CALL iom_put( "ssh" , sshn ) ! sea surface height 198 202 ! 199 203 END SUBROUTINE ssh_wzv … … 307 311 308 312 !!====================================================================== 309 END MODULE wzvmod313 END MODULE sshwzv -
trunk/NEMO/OPA_SRC/step.F90
r1561 r1565 78 78 USE bdydta ! unstructured open boundary data (bdy_dta routine) 79 79 80 USE divcur ! hor. divergence and curl (div & cur routines) 81 USE cla_div ! cross land: hor. divergence (div_cla routine) 82 USE wzvmod ! vertical velocity (wzv routine) 80 USE sshwzv ! vertical velocity and ssh (ssh_wzv routine) 83 81 84 82 USE ldfslp ! iso-neutral slopes (ldf_slp routine) … … 188 186 ! Ocean dynamics : ssh, wn, hdiv, rot ! 189 187 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 190 CALL div_cur( kstp ) ! Horizontal divergence & Relative vorticity191 IF( n_cla == 1 ) CALL div_cla( kstp ) ! Cross Land Advection (Update Hor. divergence)192 188 CALL ssh_wzv( kstp ) ! after ssh & vertical velocity 193 189
Note: See TracChangeset
for help on using the changeset viewer.