abl
Penalty "boundary conditions"

A BC which appears as a/forcing": the mini version. More...

Files

file  penalty_mini.f
 Penalty for ABL user code of nek5000.
 

Functions/Subroutines

subroutine pen_update ()
 Update penalty. More...
 
subroutine pen_forcing (ix, iy, iz, ieg)
 Compute penalty forcing. More...
 
subroutine pen_fmask_get ()
 Get 1D projection, array mapping and forcing smoothing. More...
 
subroutine pen_fterms_get (ifreset)
 Generate forcing terms: pen_k_len and pen_fstab. More...
 
subroutine pen_register ()
 Register penalty module. More...
 
subroutine pen_init ()
 Initilise penalty module. More...
 
logical function pen_is_initialised ()
 Check if module was initialised. More...
 
subroutine local_cart_dy (us, u, N, e, Dt)
 Assuming the mesh is cartesian, compute exact y-derivative for an element, by operating. More...
 
subroutine local_cart_dy_pseudo (us, u, N, e, Dt)
 Assuming the mesh is cartesian, compute pseudo(?) y-derivative along y-axis for an element, by operating. More...
 
subroutine cart_diff_y (uy, u, ifexact)
 

Detailed Description

A BC which appears as a/forcing": the mini version.

Function/Subroutine Documentation

◆ cart_diff_y()

subroutine cart_diff_y ( real, dimension(lxyz,1)  uy,
real, dimension(lxyz,1)  u,
logical  ifexact 
)

Compute exact / pseudo y-derivative in a Cartesian vel. mesh

Parameters
[out]uy
[in]u
[in]ifexactCompute exact or pseudo-derivative
+ Here is the call graph for this function:

◆ local_cart_dy()

subroutine local_cart_dy ( real, dimension(0:n,0:n,0:n)  us,
real, dimension (0:n,0:n,0:n,1)  u,
integer  N,
integer  e,
real, dimension(0:n,0:n)  Dt 
)

Assuming the mesh is cartesian, compute exact y-derivative for an element, by operating.

\[ \mathbf{u} D^T \]

Parameters
[out]us
[in]u,N,e,Dt
+ Here is the call graph for this function:

◆ local_cart_dy_pseudo()

subroutine local_cart_dy_pseudo ( real, dimension(0:n,0:n,0:n)  us,
real, dimension (0:n,0:n,0:n,1)  u,
integer  N,
integer  e,
real, dimension(0:n,0:n)  Dt 
)

Assuming the mesh is cartesian, compute pseudo(?) y-derivative along y-axis for an element, by operating.

\[ Dt \mathbf{u} \]

Parameters
[out]us
[in]u,N,e,Dt
+ Here is the call graph for this function:

◆ pen_fmask_get()

subroutine pen_fmask_get

Get 1D projection, array mapping and forcing smoothing.

This routine is just a simple version supporting only lines paralles to z axis. In future it can be generalised. The subroutine initializes pen_prj, pen_map and pen_npoint

See also
Schlatter and Örlü, “Turbulent Boundary Layers at Moderate Reynolds Numbers.” pg. 12
Remarks
This routine uses global scratch space CTMP0 and CTMP1

◆ pen_forcing()

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

Compute penalty forcing.

Parameters
[in,out]ffx,ffy,ffzforcing; x,y,z component
[in]ix,iy,izGLL point index
[in]iegglobal element number
Todo:
add ffy component and rotation
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pen_fterms_get()

subroutine pen_fterms_get ( logical  ifreset)

Generate forcing terms: pen_k_len and pen_fstab.

This used to also initializes the pen_famp array. This was to allow for spatio-temporally varying forcing, which has been removed in this version.

Parameters
[in]ifresetreset flag to reinitialize geometry term pen_k_len
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pen_init()

subroutine pen_init

Initilise penalty module.

Note
This routine should be called in frame_usr_init

◆ pen_is_initialised()

logical function pen_is_initialised

Check if module was initialised.

Returns
pen_is_initialised

◆ pen_register()

subroutine pen_register

Register penalty module.

Note
This routine should be called in frame_usr_register
+ Here is the call graph for this function:

◆ pen_update()

subroutine pen_update

Update penalty.