INTERFACE:
subroutine uequation(nlev,dt,cnpar,tx,num,gamu,Method)DESCRIPTION:
This subroutine computes the transport of momentum in
-direction according to
Coriolis rotation is accounted for as described in
section 3.2.5.
The external pressure gradient (second term on right hand side)
is applied here only if surface slopes are
directly given. Otherwise, the gradient is computed as
described in section 3.2.8, see Burchard (1999).
The internal pressure gradient (third
term on right hand side) is calculated in intpressure.F90, see
section 3.2.9.
The fifth term on the right hand side allows for nudging the velocity
to observed profiles with the relaxation time scale
.
This is useful for initialising
velocity profiles in case of significant inertial oscillations.
Bottom friction is implemented implicitly using the fourth term
on the right hand side. Implicit friction may be
applied on all levels in order to allow for inner friction terms such
as seagrass friction (see section 10.1).
Diffusion is numerically treated implicitly, see equations (7)-
(9).
The tri-diagonal matrix is solved then by a simplified Gauss elimination.
Vertical advection is included, and it must be non-conservative,
which is ensured by setting the local variable adv_mode=0,
see section 8.2.3 on page
.
USES:
use meanflow, only: gravity,avmolu
use meanflow, only: h,u,uo,v,w,avh
use meanflow, only: drag,SS,runtimeu
use observations, only: w_adv_method,w_adv_discr
use observations, only: uProf,vel_relax_tau,vel_relax_ramp
use observations, only: idpdx,dpdx
use util, only: Dirichlet,Neumann
use util, only: oneSided,zeroDivergence
IMPLICIT NONE
INPUT PARAMETERS:
number of vertical layers
integer, intent(in) :: nlev
time step (s)
REALTYPE, intent(in) :: dt
numerical "implicitness" parameter
REALTYPE, intent(in) :: cnpar
wind stress in x-direction
divided by rho_0 (m^2/s^2)
REALTYPE, intent(in) :: tx
diffusivity of momentum (m^2/s)
REALTYPE, intent(in) :: num(0:nlev)
non-local flux of momentum (m^2/s^2)
REALTYPE, intent(in) :: gamu(0:nlev)
method to compute external
pressure gradient
integer, intent(in) :: method
DEFINED PARAMETERS:
REALTYPE, parameter :: long=1.0D15REVISION HISTORY:
Original author(s): Lars Umlauf
(re-write after first version of
Hans Burchard and Karsten Bolding)
$Log: uequation.F90,v $
Revision 1.13 2010-09-17 12:53:48 jorn
extensive code clean-up to ensure proper initialization and clean-up of all variables
Revision 1.12 2008-03-07 17:57:49 hb
AdvBcup changed to oneSided
Revision 1.11 2006-11-06 13:36:45 hb
Option for conservative vertical advection added to adv_center
Revision 1.10 2006-04-03 08:39:12 lars
fixed bug in relaxation times - Thanks to Adolf Stips
Revision 1.9 2005-11-17 09:58:20 hb
explicit argument for positive definite variables in diff_center()
Revision 1.8 2005/06/27 13:44:07 kbk
modified + removed traling blanks
Revision 1.7 2004/08/18 11:44:49 lars
updated documentation
Revision 1.6 2003/03/28 09:20:35 kbk
added new copyright to files
Revision 1.5 2003/03/28 08:56:56 kbk
removed tabs
Revision 1.4 2003/03/10 08:50:07 gotm
Improved documentation and cleaned up code
Revision 1.3 2001/05/31 12:00:52 gotm
Correction in the calculation of the shear squared calculation
--- now according to Burchard 1995 (Ph.D. thesis).
Also some cosmetics and cleaning of Makefiles.
Karsten Bolding 2012-01-24