Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Functions/Subroutines
fast3d.F90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine gen_fast_spacing ()
 Generate fast diagonalization matrices for each element. More...
 
subroutine plane_space (lr, ls, lt, i1, i2, w, x, y, z, nx, nxn, nz0, nzn)
 Here, spacing is based on harmonic mean. pff 2/10/07. More...
 
subroutine get_fast_bc (lbr, rbr, lbs, rbs, lbt, rbt, e, bsym, ierr)
 
subroutine load_semhat_weighted ()
 Note that this routine performs the following matrix multiplies after getting the matrices back from semhat: dgl = bgl dgl jgl = bgl jgl. More...
 
subroutine do_semhat_weight (jgl, dgl, bgl, n)
 re-weight jgl and dgl with bgl More...
 
subroutine generate_semhat (a, b, c, d, z, dgll, jgll, bgl, zgl, dgl, jgl, n, w)
 Generate matrices for single element, 1D operators: More...
 
subroutine fd_weights_full (xx, x, n, m, c)
 This routine evaluates the derivative based on all points in the stencils. It is more memory efficient than "fd_weights". More...
 
subroutine swap_lengths ()
 
subroutine row_zero (a, m, n, e)
 zero the eth row of a More...
 
subroutine swap (b, ind, n, temp)
 Reorder vector using temporary buffer. More...
 

Function/Subroutine Documentation

subroutine do_semhat_weight ( real(dp), dimension(1:n-1,0:n jgl,
real(dp), dimension(1:n-1,0:n dgl,
real(dp), dimension(1:n-1)  bgl,
integer  n 
)

re-weight jgl and dgl with bgl

Definition at line 289 of file fast3d.F90.

Referenced by load_semhat_weighted().

+ Here is the caller graph for this function:

subroutine fd_weights_full ( real(dp)  xx,
real(dp), dimension(0:n x,
integer  n,
integer  m,
real(dp), dimension(0:n,0:m)  c 
)

This routine evaluates the derivative based on all points in the stencils. It is more memory efficient than "fd_weights".

This set of routines comes from the appendix of A Practical Guide to Pseudospectral Methods, B. Fornberg Cambridge Univ. Press, 1996. (pff)

Input parameters: xx – point at wich the approximations are to be accurate x – array of x-ordinates: x(0:n) n – polynomial degree of interpolant (# of points := n+1) m – highest order of derivative to be approxxmated at xi Output: c – set of coefficients c(0:n,0:m). c(j,k) is to be applied at x(j) when the kth derivative is approxxmated by a stencil extending over x(0),x(1),...x(n).

Definition at line 409 of file fast3d.F90.

Referenced by gen_dgl(), gen_int(), generate_semhat(), hsmg_routines::hsmg_setup_intpm(), and xyzlin().

+ Here is the caller graph for this function:

subroutine gen_fast_spacing ( )

Generate fast diagonalization matrices for each element.

Definition at line 3 of file fast3d.F90.

References load_semhat_weighted(), plane_space(), speclib::zwgl(), and speclib::zwgll().

Referenced by set_overlap().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine generate_semhat ( real(dp), dimension(0:n,0:n a,
real(dp), dimension(0:n b,
real(dp), dimension(0:n,0:n c,
real(dp), dimension(0:n,0:n d,
real(dp), dimension(0:n z,
real(dp), dimension(0:n,1:n-1)  dgll,
real(dp), dimension(0:n,1:n-1)  jgll,
real(dp), dimension(1:n-1)  bgl,
real(dp), dimension(1:n-1)  zgl,
real(dp), dimension(1:n-1,0:n dgl,
real(dp), dimension(1:n-1,0:n jgl,
integer  n,
real(dp), dimension(0:(n+1)*2)  w 
)

Generate matrices for single element, 1D operators:

a = Laplacian b = diagonal mass matrix c = convection operator b*d d = derivative matrix dgll = derivative matrix, mapping from pressure nodes to velocity jgll = interpolation matrix, mapping from pressure nodes to velocity z = GLL points

zgl = GL points bgl = diagonal mass matrix on GL dgl = derivative matrix, mapping from velocity nodes to pressure jgl = interpolation matrix, mapping from velocity nodes to pressure

n = polynomial degree (velocity space) w = work array of size 2*n+2

Currently, this is set up for pressure nodes on the interior GLL pts.

Definition at line 328 of file fast3d.F90.

References fd_weights_full(), speclib::zwgl(), and speclib::zwgll().

Referenced by hsmg_routines::h1mg_setup_semhat(), hsmg_routines::hsmg_setup_semhat(), and load_semhat_weighted().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine get_fast_bc ( integer  lbr,
integer  rbr,
integer  lbs,
integer  rbs,
integer  lbt,
integer  rbt,
integer  e,
integer  bsym,
integer  ierr 
)

Definition at line 192 of file fast3d.F90.

References exitti(), and parallel::lglel().

Referenced by hsmg_routines::h1mg_setup_mask(), and hsmg_routines::hsmg_setup_fast().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine load_semhat_weighted ( )

Note that this routine performs the following matrix multiplies after getting the matrices back from semhat: dgl = bgl dgl jgl = bgl jgl.

Definition at line 274 of file fast3d.F90.

References do_semhat_weight(), and generate_semhat().

Referenced by gen_fast_spacing().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

subroutine plane_space ( real(dp), dimension(*)  lr,
real(dp), dimension(*)  ls,
real(dp), dimension(*)  lt,
integer  i1,
integer  i2,
real(dp), dimension(*)  w,
real(dp), dimension(0:nxn,0:nxn,nz0:nzn,*)  x,
real(dp), dimension(0:nxn,0:nxn,nz0:nzn,*)  y,
real(dp), dimension(0:nxn,0:nxn,nz0:nzn,*)  z,
integer  nx,
integer  nxn,
integer  nz0,
integer  nzn 
)

Here, spacing is based on harmonic mean. pff 2/10/07.

Definition at line 71 of file fast3d.F90.

Referenced by gen_fast_spacing(), and swap_lengths().

+ Here is the caller graph for this function:

subroutine row_zero ( real(dp), dimension(m,n a,
integer  m,
integer  n,
integer  e 
)

zero the eth row of a

Definition at line 527 of file fast3d.F90.

Referenced by hsmg_routines::hsmg_setup_fast1d().

+ Here is the caller graph for this function:

subroutine swap ( real(dp), dimension(*)  b,
integer, dimension(*)  ind,
integer  n,
real(dp), dimension(*)  temp 
)

Reorder vector using temporary buffer.

Definition at line 541 of file fast3d.F90.

subroutine swap_lengths ( )

Definition at line 453 of file fast3d.F90.

References dssum(), and plane_space().

Referenced by set_overlap().

+ Here is the call graph for this function:

+ Here is the caller graph for this function: