Nek5000
SEM for Incompressible NS
|
Public Member Functions | |
subroutine, public | hsmg_setup () |
Sets up hybrid Schwarz multi-grid preconditioner. More... | |
subroutine, public | h1mg_setup () |
Sets up Poisson preconditioner. More... | |
subroutine, public | h1mg_solve (z, rhs, if_hybrid) |
Solve preconditioner: z = M rhs, where \( M \approx A^{-1} \). More... | |
subroutine | hsmg_setup_semhat |
subroutine | hsmg_setup_intp |
subroutine | hsmg_setup_intpm (jh, zf, zc, nf, nc) |
subroutine | hsmg_setup_dssum |
subroutine | h1mg_setup_wtmask |
subroutine | hsmg_setup_wtmask |
subroutine | hsmg_intp (uf, uc, l) |
subroutine | hsmg_tnsr (v, nv, u, nu, A, At) |
computes v = [A (x) A] u or v = [A (x) A (x) A] u More... | |
subroutine | hsmg_tnsr3d (v, nv, u, nu, A, Bt, Ct) |
computes: v = [C (x) B (x) A] u . More... | |
subroutine | hsmg_tnsr3d_el (v, nv, u, nu, A, Bt, Ct) |
computes v = [C (x) B (x) A] u More... | |
subroutine | hsmg_dssum (u, l) |
subroutine | hsmg_dsprod (u, l) |
subroutine | hsmg_schwarz_dssum (u, l) |
subroutine | hsmg_extrude (arr1, l1, f1, arr2, l2, f2, nx, ny, nz) |
subroutine | h1mg_schwarz (e, r, sigma, l) |
subroutine | h1mg_schwarz_part1 (e, r, l) |
subroutine | hsmg_schwarz_toext3d (a, b, n) |
subroutine | hsmg_schwarz_toreg3d (b, a, n) |
subroutine | h1mg_setup_fdm () |
subroutine | hsmg_setup_fdm () |
subroutine | hsmg_setup_fast (s, d, nl, ah, bh, n) |
not sure More... | |
subroutine | hsmg_setup_fast1d (s, lam, nl, lbc, rbc, ll, lm, lr, ah, bh, n, ie) |
subroutine | hsmg_setup_fast1d_a (a, lbc, rbc, ll, lm, lr, ah, n) |
subroutine | hsmg_setup_fast1d_b (b, lbc, rbc, ll, lm, lr, bh, n) |
subroutine | hsmg_fdm (e, r, l) |
clobbers r More... | |
subroutine | hsmg_do_fast (e, r, s, d, nl) |
clobbers r More... | |
subroutine | hsmg_do_wt (u, wt, nx, ny, nz) |
u = wt .* u More... | |
subroutine | hsmg_setup_rstr_wt (wt, nx, ny, nz, l, w) |
subroutine | hsmg_setup_schwarz_wt (ifsqrt) |
subroutine | h1mg_setup_schwarz_wt (ifsqrt) |
subroutine | hsmg_schwarz_wt (e, l) |
subroutine | hsmg_schwarz_wt3d (e, wt, n) |
subroutine | hsmg_coarse_solve (e, r) |
subroutine | hsmg_setup_solve |
subroutine | hsmg_setup_mg_nx () |
subroutine | hsmg_index_0 |
initialize index sets More... | |
subroutine | h1mg_mask (w, mask, nel) |
subroutine | mg_mask_e (w, mask) |
subroutine | hsmg_tnsr1 (v, nv, nu, A, At) |
compute v = [A (x) A] u or v = [A (x) A (x) A] u More... | |
subroutine | hsmg_tnsr1_3d (v, nv, nu, A, Bt, Ct) |
compute v = [C (x) B (x) A] v (in-place) More... | |
subroutine | h1mg_rstr (r, l, ifdssum) |
r =J r, l is coarse level More... | |
subroutine | h1mg_setup_mg_nx () |
subroutine | h1mg_setup_semhat |
SEM hat matrices for each level. More... | |
subroutine | h1mg_setup_dssum |
subroutine | mg_set_msk (p_msk, l0) |
subroutine | h1mg_setup_mask (mask, nm, nx, ny, nz, nel, l, w) |
subroutine | h1mg_setup_schwarz_wt_2 (wt, ie, n, work, ifsqrt) |
subroutine | h1mg_setup_schwarz_wt3d_2 (wt, ie, n, work, ifsqrt) |
subroutine | h1mg_setup_schwarz_wt_1 (wt, l, ifsqrt) |
subroutine hsmg_routines::h1mg_mask | ( | real(dp), dimension(*) | w, |
integer, dimension(*) | mask, | ||
integer | nel | ||
) |
Definition at line 1558 of file hsmg.F90.
References ctimer::dnekclock(), and mg_mask_e().
Referenced by h1mg_schwarz_part1(), and h1mg_solve().
subroutine hsmg_routines::h1mg_rstr | ( | real(dp), dimension(1) | r, |
integer | l, | ||
logical | ifdssum | ||
) |
r =J r, l is coarse level
Definition at line 1665 of file hsmg.F90.
References hsmg_do_wt(), hsmg_dssum(), and hsmg_tnsr1().
Referenced by h1mg_solve().
subroutine hsmg_routines::h1mg_schwarz | ( | real(dp), dimension(*) | e, |
real(dp), dimension(*) | r, | ||
real(dp), intent(in) | sigma, | ||
integer | l | ||
) |
Definition at line 628 of file hsmg.F90.
References ctimer::dnekclock(), h1mg_schwarz_part1(), and hsmg_schwarz_wt().
Referenced by h1mg_solve().
subroutine hsmg_routines::h1mg_schwarz_part1 | ( | real(dp), dimension(*) | e, |
real(dp), dimension(*) | r, | ||
integer | l | ||
) |
Definition at line 658 of file hsmg.F90.
References ctimer::dnekclock(), h1mg_mask(), hsmg_dssum(), hsmg_extrude(), hsmg_fdm(), hsmg_schwarz_dssum(), hsmg_schwarz_toext3d(), and hsmg_schwarz_toreg3d().
Referenced by h1mg_schwarz().
subroutine, public hsmg_routines::h1mg_setup | ( | ) |
Sets up Poisson preconditioner.
Definition at line 74 of file hsmg.F90.
References geom_reset(), h1mg_setup_dssum(), h1mg_setup_fdm(), h1mg_setup_mg_nx(), h1mg_setup_schwarz_wt(), h1mg_setup_semhat(), h1mg_setup_wtmask(), hsmg_setup_intp(), hsmg_setup_solve(), and mg_set_msk().
Referenced by set_overlap().
subroutine hsmg_routines::h1mg_setup_dssum | ( | ) |
Definition at line 1772 of file hsmg.F90.
References get_vert(), and setupds().
Referenced by h1mg_setup().
subroutine hsmg_routines::h1mg_setup_fdm | ( | ) |
Definition at line 795 of file hsmg.F90.
References exitt(), and hsmg_setup_fast().
Referenced by h1mg_setup().
subroutine hsmg_routines::h1mg_setup_mask | ( | integer, dimension(*) | mask, |
integer | nm, | ||
integer | nx, | ||
integer | ny, | ||
integer | nz, | ||
integer | nel, | ||
integer | l, | ||
real(dp), dimension(nx,ny,nz,nel) | w | ||
) |
Definition at line 1847 of file hsmg.F90.
References exitti(), facev(), get_fast_bc(), and hsmg_dsprod().
Referenced by mg_set_msk().
subroutine hsmg_routines::h1mg_setup_mg_nx | ( | ) |
Definition at line 1685 of file hsmg.F90.
Referenced by h1mg_setup().
subroutine hsmg_routines::h1mg_setup_schwarz_wt | ( | logical | ifsqrt | ) |
Definition at line 1331 of file hsmg.F90.
References exitt(), and h1mg_setup_schwarz_wt_1().
Referenced by h1mg_setup().
subroutine hsmg_routines::h1mg_setup_schwarz_wt3d_2 | ( | real(dp), dimension(n,n,4,3,nelv) | wt, |
integer | ie, | ||
integer | n, | ||
real(dp), dimension(n,n,n) | work, | ||
logical | ifsqrt | ||
) |
Definition at line 1954 of file hsmg.F90.
Referenced by h1mg_setup_schwarz_wt_2().
subroutine hsmg_routines::h1mg_setup_schwarz_wt_1 | ( | real(dp), dimension(1) | wt, |
integer | l, | ||
logical | ifsqrt | ||
) |
Definition at line 2007 of file hsmg.F90.
References h1mg_setup_schwarz_wt_2(), hsmg_dssum(), hsmg_extrude(), hsmg_schwarz_dssum(), and hsmg_schwarz_toreg3d().
Referenced by h1mg_setup_schwarz_wt(), and hsmg_setup_schwarz_wt().
subroutine hsmg_routines::h1mg_setup_schwarz_wt_2 | ( | real(dp), dimension(1) | wt, |
integer | ie, | ||
integer | n, | ||
real(dp), dimension(1) | work, | ||
logical | ifsqrt | ||
) |
Definition at line 1939 of file hsmg.F90.
References h1mg_setup_schwarz_wt3d_2().
Referenced by h1mg_setup_schwarz_wt_1().
subroutine hsmg_routines::h1mg_setup_semhat | ( | ) |
SEM hat matrices for each level.
Definition at line 1748 of file hsmg.F90.
References copy(), generate_semhat(), and transpose().
Referenced by h1mg_setup().
subroutine hsmg_routines::h1mg_setup_wtmask | ( | ) |
Definition at line 342 of file hsmg.F90.
References exitt(), and hsmg_setup_rstr_wt().
Referenced by h1mg_setup().
subroutine, public hsmg_routines::h1mg_solve | ( | real(dp), dimension(*), intent(out) | z, |
real(dp), dimension(*), intent(in) | rhs, | ||
logical, intent(in) | if_hybrid | ||
) |
Solve preconditioner: z = M rhs, where \( M \approx A^{-1} \).
Assumes that preprocessing has been completed via h1mg_setup()
[out] | z | approximate solution to A z = rhs |
[in] | rhs | right hand side to Poisson equation |
[in] | if_hybrid | Use hybrid or normal? |
Definition at line 111 of file hsmg.F90.
References copy(), ctimer::dnekclock(), dsavg(), h1mg_mask(), h1mg_rstr(), h1mg_schwarz(), hsmg_coarse_solve(), and hsmg_intp().
Referenced by hmh_gmres().
Definition at line 1421 of file hsmg.F90.
References crs_solve, ctimer::dnekclock(), nekgsync(), and poisson::spectral_solve().
Referenced by h1mg_solve().
subroutine hsmg_routines::hsmg_do_fast | ( | real(dp), dimension(nl**ndim,nelv) | e, |
real(dp), dimension(nl**ndim,nelv) | r, | ||
real(dp), dimension(nl*nl,2,ndim,nelv) | s, | ||
real(dp), dimension(nl**ndim,nelv) | d, | ||
integer | nl | ||
) |
clobbers r
Definition at line 1082 of file hsmg.F90.
References mxm().
Referenced by hsmg_fdm().
subroutine hsmg_routines::hsmg_do_wt | ( | real(dp), dimension(nx,ny,nz,nelv) | u, |
real(dp), dimension(nx,nz,2,ndim,nelv) | wt, | ||
integer | nx, | ||
integer | ny, | ||
integer | nz | ||
) |
u = wt .* u
Definition at line 1148 of file hsmg.F90.
Referenced by h1mg_rstr().
subroutine hsmg_routines::hsmg_dsprod | ( | real(dp), dimension(1) | u, |
integer | l | ||
) |
Definition at line 514 of file hsmg.F90.
References gs_op, and nekgsync().
Referenced by h1mg_setup_mask().
subroutine hsmg_routines::hsmg_dssum | ( | real(dp), dimension(*) | u, |
integer | l | ||
) |
Definition at line 493 of file hsmg.F90.
References ctimer::dnekclock(), gs_op, and nekgsync().
Referenced by h1mg_rstr(), h1mg_schwarz_part1(), h1mg_setup_schwarz_wt_1(), and hsmg_setup_rstr_wt().
subroutine hsmg_routines::hsmg_extrude | ( | real(dp), dimension(nx,ny,nz,nelv) | arr1, |
integer | l1, | ||
real(dp) | f1, | ||
real(dp), dimension(nx,ny,nz,nelv) | arr2, | ||
integer | l2, | ||
real(dp) | f2, | ||
integer | nx, | ||
integer | ny, | ||
integer | nz | ||
) |
Definition at line 549 of file hsmg.F90.
Referenced by h1mg_schwarz_part1(), and h1mg_setup_schwarz_wt_1().
subroutine hsmg_routines::hsmg_fdm | ( | real(dp), dimension(*) | e, |
real(dp), dimension(*) | r, | ||
integer | l | ||
) |
clobbers r
Definition at line 1066 of file hsmg.F90.
References hsmg_do_fast().
Referenced by h1mg_schwarz_part1().
subroutine hsmg_routines::hsmg_index_0 | ( | ) |
initialize index sets
Definition at line 1538 of file hsmg.F90.
Referenced by hsmg_setup().
subroutine hsmg_routines::hsmg_intp | ( | real(dp), dimension(*) | uf, |
real(dp), dimension(*) | uc, | ||
integer | l | ||
) |
Definition at line 407 of file hsmg.F90.
References hsmg_tnsr().
Referenced by h1mg_solve().
subroutine hsmg_routines::hsmg_schwarz_dssum | ( | real(dp), dimension(1) | u, |
integer | l | ||
) |
Definition at line 529 of file hsmg.F90.
References ctimer::dnekclock(), gs_op, and nekgsync().
Referenced by h1mg_schwarz_part1(), and h1mg_setup_schwarz_wt_1().
subroutine hsmg_routines::hsmg_schwarz_toext3d | ( | real(dp), dimension(0:n+1,0:n+1,0:n+1,nelv) | a, |
real(dp), dimension(n,n,n,nelv) | b, | ||
integer | n | ||
) |
Definition at line 741 of file hsmg.F90.
Referenced by h1mg_schwarz_part1().
subroutine hsmg_routines::hsmg_schwarz_toreg3d | ( | real(dp), dimension(n,n,n,nelv) | b, |
real(dp), dimension(0:n+1,0:n+1,0:n+1,nelv) | a, | ||
integer | n | ||
) |
Definition at line 770 of file hsmg.F90.
Referenced by h1mg_schwarz_part1(), and h1mg_setup_schwarz_wt_1().
subroutine hsmg_routines::hsmg_schwarz_wt | ( | real(dp), dimension(*) | e, |
integer | l | ||
) |
Definition at line 1366 of file hsmg.F90.
References hsmg_schwarz_wt3d().
Referenced by h1mg_schwarz().
subroutine hsmg_routines::hsmg_schwarz_wt3d | ( | real(dp), dimension(n,n,n,nelv) | e, |
real(dp), dimension(n,n,4,3,nelv) | wt, | ||
integer | n | ||
) |
Definition at line 1384 of file hsmg.F90.
Referenced by hsmg_schwarz_wt().
subroutine, public hsmg_routines::hsmg_setup | ( | ) |
Sets up hybrid Schwarz multi-grid preconditioner.
Definition at line 50 of file hsmg.F90.
References hsmg_index_0(), hsmg_setup_dssum(), hsmg_setup_fdm(), hsmg_setup_intp(), hsmg_setup_mg_nx(), hsmg_setup_schwarz_wt(), hsmg_setup_semhat(), hsmg_setup_solve(), and hsmg_setup_wtmask().
Referenced by set_overlap().
subroutine hsmg_routines::hsmg_setup_dssum | ( | ) |
Definition at line 303 of file hsmg.F90.
References get_vert(), and setupds().
Referenced by hsmg_setup().
subroutine hsmg_routines::hsmg_setup_fast | ( | real(dp), dimension(nl*nl,2,ndim,nelv) | s, |
real(dp), dimension(nl**ndim,nelv) | d, | ||
integer | nl, | ||
real(dp), dimension(1) | ah, | ||
real(dp), dimension(1) | bh, | ||
integer | n | ||
) |
not sure
Definition at line 870 of file hsmg.F90.
References exitti(), get_fast_bc(), and hsmg_setup_fast1d().
Referenced by h1mg_setup_fdm(), and hsmg_setup_fdm().
subroutine hsmg_routines::hsmg_setup_fast1d | ( | real(dp), dimension(nl,nl,2) | s, |
real(dp), dimension(nl) | lam, | ||
integer | nl, | ||
integer | lbc, | ||
integer | rbc, | ||
real(dp) | ll, | ||
real(dp) | lm, | ||
real(dp) | lr, | ||
real(dp), dimension(0:n,0:n) | ah, | ||
real(dp), dimension(0:n) | bh, | ||
integer | n, | ||
integer | ie | ||
) |
Definition at line 952 of file hsmg.F90.
References generalev(), hsmg_setup_fast1d_a(), hsmg_setup_fast1d_b(), row_zero(), and transpose().
Referenced by hsmg_setup_fast().
subroutine hsmg_routines::hsmg_setup_fast1d_a | ( | real(dp), dimension(0:n+2,0:n+2) | a, |
integer | lbc, | ||
integer | rbc, | ||
real(dp) | ll, | ||
real(dp) | lm, | ||
real(dp) | lr, | ||
real(dp), dimension(0:n,0:n) | ah, | ||
integer | n | ||
) |
Definition at line 979 of file hsmg.F90.
Referenced by hsmg_setup_fast1d().
subroutine hsmg_routines::hsmg_setup_fast1d_b | ( | real(dp), dimension(0:n+2,0:n+2) | b, |
integer | lbc, | ||
integer | rbc, | ||
real(dp) | ll, | ||
real(dp) | lm, | ||
real(dp) | lr, | ||
real(dp), dimension(0:n) | bh, | ||
integer | n | ||
) |
Definition at line 1025 of file hsmg.F90.
Referenced by hsmg_setup_fast1d().
subroutine hsmg_routines::hsmg_setup_fdm | ( | ) |
Definition at line 832 of file hsmg.F90.
References exitt(), and hsmg_setup_fast().
Referenced by hsmg_setup().
subroutine hsmg_routines::hsmg_setup_intp | ( | ) |
Definition at line 258 of file hsmg.F90.
References hsmg_setup_intpm(), and transpose().
Referenced by h1mg_setup(), and hsmg_setup().
subroutine hsmg_routines::hsmg_setup_intpm | ( | real(dp), dimension(nf,nc) | jh, |
real(dp), dimension(*) | zf, | ||
real(dp), dimension(*) | zc, | ||
integer | nf, | ||
integer | nc | ||
) |
Definition at line 284 of file hsmg.F90.
References fd_weights_full().
Referenced by hsmg_setup_intp().
subroutine hsmg_routines::hsmg_setup_mg_nx | ( | ) |
Definition at line 1483 of file hsmg.F90.
Referenced by hsmg_setup().
subroutine hsmg_routines::hsmg_setup_rstr_wt | ( | real(dp), dimension(nx,nz,2,ndim,nelv), intent(out) | wt, |
integer, intent(in) | nx, | ||
integer, intent(in) | ny, | ||
integer, intent(in) | nz, | ||
integer, intent(in) | l, | ||
real(dp), dimension(nx,ny,nz,nelv), intent(out) | w | ||
) |
Definition at line 1211 of file hsmg.F90.
References hsmg_dssum().
Referenced by h1mg_setup_wtmask(), and hsmg_setup_wtmask().
subroutine hsmg_routines::hsmg_setup_schwarz_wt | ( | logical | ifsqrt | ) |
Definition at line 1297 of file hsmg.F90.
References exitt(), and h1mg_setup_schwarz_wt_1().
Referenced by hsmg_setup().
subroutine hsmg_routines::hsmg_setup_semhat | ( | ) |
Definition at line 222 of file hsmg.F90.
References copy(), generate_semhat(), and transpose().
Referenced by hsmg_setup().
subroutine hsmg_routines::hsmg_setup_solve | ( | ) |
Definition at line 1460 of file hsmg.F90.
References exitt().
Referenced by h1mg_setup(), and hsmg_setup().
subroutine hsmg_routines::hsmg_setup_wtmask | ( | ) |
Definition at line 374 of file hsmg.F90.
References exitt(), and hsmg_setup_rstr_wt().
Referenced by hsmg_setup().
subroutine hsmg_routines::hsmg_tnsr | ( | real(dp), dimension(*) | v, |
integer | nv, | ||
real(dp), dimension(*) | u, | ||
integer | nu, | ||
real(dp), dimension(*) | A, | ||
real(dp), dimension(*) | At | ||
) |
computes v = [A (x) A] u or v = [A (x) A (x) A] u
Definition at line 419 of file hsmg.F90.
References hsmg_tnsr3d().
Referenced by hsmg_intp().
subroutine hsmg_routines::hsmg_tnsr1 | ( | real(dp), dimension(1) | v, |
integer | nv, | ||
integer | nu, | ||
real(dp), dimension(1) | A, | ||
real(dp), dimension(1) | At | ||
) |
compute v = [A (x) A] u or v = [A (x) A (x) A] u
Definition at line 1600 of file hsmg.F90.
References hsmg_tnsr1_3d().
Referenced by h1mg_rstr().
subroutine hsmg_routines::hsmg_tnsr1_3d | ( | real(dp), dimension(*) | v, |
integer | nv, | ||
integer | nu, | ||
real(dp), dimension(*) | A, | ||
real(dp), dimension(*) | Bt, | ||
real(dp), dimension(*) | Ct | ||
) |
compute v = [C (x) B (x) A] v (in-place)
Definition at line 1618 of file hsmg.F90.
References mxm().
Referenced by hsmg_tnsr1().
subroutine hsmg_routines::hsmg_tnsr3d | ( | real(dp), dimension(nv*nv*nv,nelv) | v, |
integer | nv, | ||
real(dp), dimension(nu*nu*nu,nelv) | u, | ||
integer | nu, | ||
real(dp), dimension(*) | A, | ||
real(dp), dimension(*) | Bt, | ||
real(dp), dimension(*) | Ct | ||
) |
computes: v = [C (x) B (x) A] u .
Definition at line 437 of file hsmg.F90.
References mxm().
Referenced by hsmg_tnsr().
subroutine hsmg_routines::mg_mask_e | ( | real(dp), dimension(1) | w, |
integer, dimension(0:1) | mask | ||
) |
Definition at line 1582 of file hsmg.F90.
Referenced by h1mg_mask().
subroutine hsmg_routines::mg_set_msk | ( | integer | p_msk, |
integer | l0 | ||
) |
Definition at line 1810 of file hsmg.F90.
References h1mg_setup_mask().
Referenced by h1mg_setup().