parallel_streaming Module



Variables

Type Visibility Attributes Name Initial
logical, public :: parallel_streaming_initialized = .false.
integer, public, dimension(:), allocatable :: stream_sign
real, public, dimension(:, :, :, :), allocatable :: stream
real, public, dimension(:, :, :), allocatable :: stream_c
real, public, dimension(:, :, :), allocatable :: stream_rad_var1
real, public, dimension(:, :, :), allocatable :: stream_rad_var2
real, private, dimension(:, :), allocatable :: stream_tri_a1
real, private, dimension(:, :), allocatable :: stream_tri_a2
real, private, dimension(:, :), allocatable :: stream_tri_b1
real, private, dimension(:, :), allocatable :: stream_tri_b2
real, private, dimension(:, :), allocatable :: stream_tri_c1
real, private, dimension(:, :), allocatable :: stream_tri_c2
real, public, dimension(:, :), allocatable :: gradpar_c
real, public, dimension(2, 3) :: time_parallel_streaming = 0.
integer, public, dimension(:,:), allocatable :: stream_correction_sign
integer, public, dimension(:,:), allocatable :: stream_full_sign
real, public, dimension(:, :, :, :), allocatable :: stream_correction
real, public, dimension(:, :, :, :), allocatable :: stream_store_full

Interfaces

public interface center_zed

  • private subroutine center_zed_segment_real(iv, f, llim)

    center_zed_segment_real takes as arguments the vpa index (iv) the z-depenendent real function f, and the starting iz index for the array f (llim), and overwrites f with the cell-centered version

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: iv
    real, intent(inout), dimension(llim:) :: f
    integer, intent(in) :: llim
  • private subroutine center_zed_segment_complex(iv, f, llim, periodic)

    center_zed_segment_complex takes as arguments the vpa index (iv) the z-depenendent conplex function f, and the starting iz index for the array f (llim), and overwrites f with the cell-centered version;

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: iv
    complex, intent(inout), dimension(llim:) :: f
    integer, intent(in) :: llim
    logical, intent(in) :: periodic
  • private subroutine center_zed_extended(iv, g)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: iv
    complex, intent(inout), dimension(:, :, -nzgrid:, :) :: g

Subroutines

public subroutine init_parallel_streaming()

stream_sign set to +/- 1 depending on the sign of the parallel streaming term. NB: stream_sign = -1 corresponds to positive advection velocity only need to consider ia=1, iz=0 and is=1 because alpha, z and species dependences do not lead to change in sign of the streaming pre-factor get gradpar centred in zed for negative vpa (affects upwinding) get gradpar centred in zed for positive vpa (affects upwinding)

Arguments

None

private subroutine init_invert_stream_operator()

Arguments

None

public subroutine advance_parallel_streaming_explicit(g, phi, bpar, gout)

if flux tube simulation parallel streaming stays in ky,kx,z space with ky,kx,z local if full flux surface (flux annulus), will need to calculate in y space start the timer for the parallel streaming part of the time advance

Read more…

Arguments

Type IntentOptional Attributes Name
complex, intent(in), dimension(:, :, -nzgrid:, :, vmu_lo%llim_proc:) :: g
complex, intent(in), dimension(:, :, -nzgrid:, :) :: phi
complex, intent(in), dimension(:, :, -nzgrid:, :) :: bpar
complex, intent(inout), dimension(:, :, -nzgrid:, :, vmu_lo%llim_proc:) :: gout

public subroutine add_parallel_streaming_radial_variation(g, gout, rhs)

Arguments

Type IntentOptional Attributes Name
complex, intent(in), dimension(:, :, -nzgrid:, :, vmu_lo%llim_proc:) :: g
complex, intent(inout), dimension(:, :, -nzgrid:, :, vmu_lo%llim_proc:) :: gout
complex, intent(inout), dimension(:, :, -nzgrid:, :, vmu_lo%llim_proc:) :: rhs

private subroutine get_dgdz(g, ivmu, dgdz)

Arguments

Type IntentOptional Attributes Name
complex, intent(in), dimension(:, :, -nzgrid:, :) :: g
integer, intent(in) :: ivmu
complex, intent(out), dimension(:, :, -nzgrid:, :) :: dgdz

public subroutine get_dgdz_centered(g, ivmu, dgdz)

Arguments

Type IntentOptional Attributes Name
complex, intent(in), dimension(:, :, -nzgrid:, :) :: g
integer, intent(in) :: ivmu
complex, intent(out), dimension(:, :, -nzgrid:, :) :: dgdz

private subroutine add_stream_term(g, ivmu, src)

Arguments

Type IntentOptional Attributes Name
complex, intent(in), dimension(:, :, -nzgrid:, :) :: g
integer, intent(in) :: ivmu
complex, intent(inout), dimension(:, :, -nzgrid:, :) :: src

private subroutine add_stream_term_full_ffs(g, ivmu, src)

Arguments

Type IntentOptional Attributes Name
complex, intent(in), dimension(:, :, -nzgrid:, :) :: g
integer, intent(in) :: ivmu
complex, intent(inout), dimension(:, :, -nzgrid:, :) :: src

public subroutine stream_tridiagonal_solve(iky, ie, iv, is, g)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iky
integer, intent(in) :: ie
integer, intent(in) :: iv
integer, intent(in) :: is
complex, intent(inout), dimension(:) :: g

public subroutine get_dzed(iv, g, dgdz)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iv
complex, intent(in), dimension(:, :, -nzgrid:, :) :: g
complex, intent(out), dimension(:, :, -nzgrid:, :) :: dgdz

public subroutine get_zed_derivative_extended_domain(iv, f, f_left, f_right, df_dz)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iv
complex, intent(in), dimension(:) :: f
complex, intent(in) :: f_left
complex, intent(in) :: f_right
complex, intent(out), dimension(:) :: df_dz

private subroutine center_zed_extended(iv, g)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iv
complex, intent(inout), dimension(:, :, -nzgrid:, :) :: g

private subroutine center_zed_segment_real(iv, f, llim)

center_zed_segment_real takes as arguments the vpa index (iv) the z-depenendent real function f, and the starting iz index for the array f (llim), and overwrites f with the cell-centered version

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iv
real, intent(inout), dimension(llim:) :: f
integer, intent(in) :: llim

private subroutine center_zed_segment_complex(iv, f, llim, periodic)

center_zed_segment_complex takes as arguments the vpa index (iv) the z-depenendent conplex function f, and the starting iz index for the array f (llim), and overwrites f with the cell-centered version;

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: iv
complex, intent(inout), dimension(llim:) :: f
integer, intent(in) :: llim
logical, intent(in) :: periodic

public subroutine finish_parallel_streaming()

Arguments

None

private subroutine finish_invert_stream_operator()

Arguments

None