abl
The ABL case user-file

Contains: user specified routines for the ABL case. More...

Functions/Subroutines

subroutine uservp (ix, iy, iz, ieg)
 Set variable properties, does not call any subroutines / functions. More...
 
subroutine userf (ix, iy, iz, eg)
 Compute Coriolis acceleration. More...
 
subroutine userq (ix, iy, iz, eg)
 
subroutine useric (ix, iy, iz, eg)
 Set up initial conditions. More...
 
subroutine userbc (ix, iy, iz, iside, eg)
 Compute the boundary condition. See subdirectory bc/. More...
 
subroutine userchk ()
 Compute the turbulent stress tensors and write statistics. More...
 
subroutine userqtl
 
subroutine usrdat ()
 
subroutine usrdat2 ()
 
subroutine usrdat3 ()
 Compute inflow / outflow conditions a.k.a. driving force. Ubar=1 Not required when coriolis force is specified in userf. More...
 

Detailed Description

Contains: user specified routines for the ABL case.

Function/Subroutine Documentation

◆ userbc()

subroutine userbc ( integer  ix,
integer  iy,
integer  iz,
integer  iside,
integer  eg 
)

Compute the boundary condition. See subdirectory bc/.

Note
it is OK to define both flux and temp here since only one would be used at the same time. See BCNEUSC(), BCDIRSC() and FACEIS()
+ Here is the call graph for this function:

◆ userchk()

subroutine userchk

Compute the turbulent stress tensors and write statistics.

+ Here is the call graph for this function:

◆ userf()

subroutine userf ( integer  ix,
integer  iy,
integer  iz,
integer  eg 
)

Compute Coriolis acceleration.

\[ F_x, F_z = - f\hat{e}_y \times \vec{u} \]

See https://lists.mcs.anl.gov/pipermail/nek5000-users/2014-May/002798.html

Note
The Coroiolis acceleration also absorbs the part of the pressure under hydrostatic balance, which in turn drives the flow. When it is turned off, usrdat3() drives the flow.
Parameters
[in]ix,iy,izGLL point index
[in]egglobal element number
Todo:
Choose correct Ri
+ Here is the call graph for this function:

◆ useric()

subroutine useric ( integer  ix,
integer  iy,
integer  iz,
integer  eg 
)

Set up initial conditions.

Use standard subroutine RANDOM_NUMBER. See https://gcc.gnu.org/onlinedocs/gfortran/RANDOM_005fNUMBER.html

◆ userq()

subroutine userq ( integer  ix,
integer  iy,
integer  iz,
integer  eg 
)

◆ userqtl()

subroutine userqtl
+ Here is the call graph for this function:

◆ uservp()

subroutine uservp ( integer  ix,
integer  iy,
integer  iz,
integer  ieg 
)

Set variable properties, does not call any subroutines / functions.

Parameters
ixx-index
iyy-index
izz-index
iegelement index
Todo:
Implement turbulent Prandtl number parameter

◆ usrdat()

subroutine usrdat
+ Here is the call graph for this function:

◆ usrdat2()

subroutine usrdat2

◆ usrdat3()

subroutine usrdat3

Compute inflow / outflow conditions a.k.a. driving force. Ubar=1 Not required when coriolis force is specified in userf.

See also
https://github.com/Nek5000/NekExamples/blob/70a5792b04b7a4c2da16463f517863b10627398f/turbChannel/turbChannel.usr#L375-L386