m_omp_spectral Module


Uses

  • module~~m_omp_spectral~~UsesGraph module~m_omp_spectral m_omp_spectral module~m_common m_common module~m_omp_spectral->module~m_common module~m_mpi m_mpi module~m_common->module~m_mpi iso_fortran_env iso_fortran_env module~m_mpi->iso_fortran_env mpi mpi module~m_mpi->mpi

Used by

  • module~~m_omp_spectral~~UsedByGraph module~m_omp_spectral m_omp_spectral module~m_omp_poisson_fft m_omp_poisson_fft module~m_omp_poisson_fft->module~m_omp_spectral proc~init_omp_poisson_fft m_omp_backend::omp_backend_t%init_omp_poisson_fft proc~init_omp_poisson_fft->module~m_omp_poisson_fft

Variables

Type Visibility Attributes Name Initial
real(kind=dp), public, parameter :: eps_wave = epsilon(1._dp)

Subroutines

public subroutine process_spectral_000(div_u, waves, nx_spec, ny_spec, nz_spec, x_sp_st, y_sp_st, z_sp_st, nx, ny, nz, ax, bx, ay, by, az, bz)

Post-process div U* in spectral space for all periodic BCs.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), dimension(:, :, :) :: div_u

Divergence of velocity in spectral space

complex(kind=dp), intent(in), dimension(:, :, :) :: waves

Spectral equivalence constants

integer, intent(in) :: nx_spec

Grid size in spectral space

integer, intent(in) :: ny_spec

Grid size in spectral space

integer, intent(in) :: nz_spec

Grid size in spectral space

integer, intent(in) :: x_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: y_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: z_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: nx

Global cell size

integer, intent(in) :: ny

Global cell size

integer, intent(in) :: nz

Global cell size

real(kind=dp), intent(in), dimension(:) :: ax
real(kind=dp), intent(in), dimension(:) :: bx
real(kind=dp), intent(in), dimension(:) :: ay
real(kind=dp), intent(in), dimension(:) :: by
real(kind=dp), intent(in), dimension(:) :: az
real(kind=dp), intent(in), dimension(:) :: bz

public subroutine process_spectral_010(div_u, waves, nx_spec, ny_spec, nz_spec, x_sp_st, y_sp_st, z_sp_st, nx, ny, nz, ax, bx, ay, by, az, bz)

Post-process div U* in spectral space, for non-periodic BC in y-dir.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), dimension(:, :, :) :: div_u

Divergence of velocity in spectral space

complex(kind=dp), intent(in), dimension(:, :, :) :: waves

Spectral equivalence constants

integer, intent(in) :: nx_spec

Grid size in spectral space

integer, intent(in) :: ny_spec

Grid size in spectral space

integer, intent(in) :: nz_spec

Grid size in spectral space

integer, intent(in) :: x_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: y_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: z_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: nx

Global cell size

integer, intent(in) :: ny

Global cell size

integer, intent(in) :: nz

Global cell size

real(kind=dp), intent(in), dimension(:) :: ax
real(kind=dp), intent(in), dimension(:) :: bx
real(kind=dp), intent(in), dimension(:) :: ay
real(kind=dp), intent(in), dimension(:) :: by
real(kind=dp), intent(in), dimension(:) :: az
real(kind=dp), intent(in), dimension(:) :: bz

public subroutine process_spectral_100(div_u, waves, nx_spec, ny_spec, nz_spec, x_sp_st, y_sp_st, z_sp_st, nx, ny, nz, ax, bx, ay, by, az, bz)

Post-process div U* in spectral space, for non-periodic BC in x-dir.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), dimension(:, :, :) :: div_u

Divergence of velocity in spectral space

complex(kind=dp), intent(in), dimension(:, :, :) :: waves

Spectral equivalence constants

integer, intent(in) :: nx_spec

Grid size in spectral space

integer, intent(in) :: ny_spec

Grid size in spectral space

integer, intent(in) :: nz_spec

Grid size in spectral space

integer, intent(in) :: x_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: y_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: z_sp_st

Offsets in the permuted pencils in spectral space

integer, intent(in) :: nx

Global cell size

integer, intent(in) :: ny

Global cell size

integer, intent(in) :: nz

Global cell size

real(kind=dp), intent(in), dimension(:) :: ax
real(kind=dp), intent(in), dimension(:) :: bx
real(kind=dp), intent(in), dimension(:) :: ay
real(kind=dp), intent(in), dimension(:) :: by
real(kind=dp), intent(in), dimension(:) :: az
real(kind=dp), intent(in), dimension(:) :: bz

public subroutine process_spectral_110_fw(div_u, n1, n2, n3, st1, st2, nx, ny, nz, ax, bx, az, bz)

Forward third of the spectral post-process for the 110 case (non-periodic x and y, periodic z, R2C Z-transpose layout): normalise, Z periodic post-process forward, then the X paired even/odd split.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), dimension(:, :, :) :: div_u

Divergence of velocity in spectral space, (nz/2+1, nx, ny) layout

integer, intent(in) :: n1

Local extents of div_u

integer, intent(in) :: n2

Local extents of div_u

integer, intent(in) :: n3

Local extents of div_u

integer, intent(in) :: st1

Offsets of the local block within the global spectral array

integer, intent(in) :: st2

Offsets of the local block within the global spectral array

integer, intent(in) :: nx

Global cell size

integer, intent(in) :: ny

Global cell size

integer, intent(in) :: nz

Global cell size

real(kind=dp), intent(in), dimension(:) :: ax
real(kind=dp), intent(in), dimension(:) :: bx
real(kind=dp), intent(in), dimension(:) :: az
real(kind=dp), intent(in), dimension(:) :: bz

public subroutine process_spectral_110_solve(div_u, waves, n1, n2, n3, st1, st2, st3, nx, ny, nz, ay, by)

Middle third of the spectral post-process for the 110 case: the Y paired even/odd split, the Poisson divide, and the Y paired even/odd recombine.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), dimension(:, :, :) :: div_u

Divergence of velocity in spectral space, (nz/2+1, nx, ny) layout

complex(kind=dp), intent(in), dimension(:, :, :) :: waves

Spectral equivalence constants, (nz/2+1, nx, ny) layout

integer, intent(in) :: n1

Local extents of div_u

integer, intent(in) :: n2

Local extents of div_u

integer, intent(in) :: n3

Local extents of div_u

integer, intent(in) :: st1

Offsets of the local block within the global spectral array

integer, intent(in) :: st2

Offsets of the local block within the global spectral array

integer, intent(in) :: st3

Offsets of the local block within the global spectral array

integer, intent(in) :: nx

Global cell size

integer, intent(in) :: ny

Global cell size

integer, intent(in) :: nz

Global cell size

real(kind=dp), intent(in), dimension(:) :: ay
real(kind=dp), intent(in), dimension(:) :: by

public subroutine process_spectral_110_bw(div_u, n1, n2, n3, st1, st2, nx, ny, nz, ax, bx, az, bz)

Backward third of the spectral post-process for the 110 case: the X paired even/odd recombine, then the Z periodic post-process backward.

Read more…

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), dimension(:, :, :) :: div_u

Divergence of velocity in spectral space, (nz/2+1, nx, ny) layout

integer, intent(in) :: n1

Local extents of div_u

integer, intent(in) :: n2

Local extents of div_u

integer, intent(in) :: n3

Local extents of div_u

integer, intent(in) :: st1

Offsets of the local block within the global spectral array

integer, intent(in) :: st2

Offsets of the local block within the global spectral array

integer, intent(in) :: nx

Global cell size

integer, intent(in) :: ny

Global cell size

integer, intent(in) :: nz

Global cell size

real(kind=dp), intent(in), dimension(:) :: ax
real(kind=dp), intent(in), dimension(:) :: bx
real(kind=dp), intent(in), dimension(:) :: az
real(kind=dp), intent(in), dimension(:) :: bz

public subroutine process_spectral_110(div_u, waves, n1, n2, n3, st1, st2, st3, nx, ny, nz, ax, bx, ay, by, az, bz)

Post-process div U* in spectral space, for non-periodic BC in both x- and y-directions (R2C Z-transpose layout: dim1 = Z r2c modes, dim2 = X modes, dim3 = Y modes).

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout), dimension(:, :, :) :: div_u

Divergence of velocity in spectral space, (nz/2+1, nx, ny) layout

complex(kind=dp), intent(in), dimension(:, :, :) :: waves

Spectral equivalence constants, (nz/2+1, nx, ny) layout

integer, intent(in) :: n1

Local extents of div_u

integer, intent(in) :: n2

Local extents of div_u

integer, intent(in) :: n3

Local extents of div_u

integer, intent(in) :: st1

Offsets of the local block within the global spectral array

integer, intent(in) :: st2

Offsets of the local block within the global spectral array

integer, intent(in) :: st3

Offsets of the local block within the global spectral array

integer, intent(in) :: nx

Global cell size

integer, intent(in) :: ny

Global cell size

integer, intent(in) :: nz

Global cell size

real(kind=dp), intent(in), dimension(:) :: ax
real(kind=dp), intent(in), dimension(:) :: bx
real(kind=dp), intent(in), dimension(:) :: ay
real(kind=dp), intent(in), dimension(:) :: by
real(kind=dp), intent(in), dimension(:) :: az
real(kind=dp), intent(in), dimension(:) :: bz