arrays_fields.f90 Source File


Source Code

module arrays_fields

   use mpi
   use common_types, only: response_matrix_type, eigen_type

   implicit none

   complex, dimension(:, :, :, :), allocatable :: phi, phi_old
   complex, dimension(:, :, :, :), allocatable :: apar, apar_old
   complex, dimension(:, :, :, :), allocatable :: bpar, bpar_old
   ! (naky, nakx, -nzgrid:nzgrid, ntubes)

   ! DSO 0 the following is a band-aid for radially global simulations until
   ! we more fully incorporate shared memory
   complex, dimension(:, :, :, :), pointer :: phi_shared
   ! (naky, nakx, -nzgrid:nzgrid, ntubes)

   ! radial corrections to phi and apar from quasineutrality/whatever controls apar
   complex, dimension(:, :, :, :), allocatable :: phi_corr_QN, apar_corr_QN
   ! (naky, nakx, -nzgrid:nzgrid, ntubes)

   ! needed to implement time-delayed source when using projection method
   complex, dimension(:, :, :), allocatable :: phi_proj, phi_proj_stage
   ! (nakx, -nzgrid:nzgrid, ntubes)

   ! radial corrections to phi and apar from gyroaveraging
   ! may result in tight space constraints however
   complex, dimension(:, :, :, :, :), allocatable :: phi_corr_GA, apar_corr_GA
   ! (naky, nakx, -nzgrid:nzgrid, ntubes, -vmu-layout-)

   type(response_matrix_type), dimension(:), allocatable :: response_matrix
   integer :: response_window = MPI_WIN_NULL

   real, dimension(:), allocatable :: shift_state

   real, dimension(:, :, :), allocatable :: gamtot, dgamtotdr
   real, dimension(:, :, :), allocatable :: gamtot13, gamtot31, gamtot33
   real, dimension(:, :, :), allocatable :: gamtotinv11, gamtotinv13, gamtotinv31, gamtotinv33
   real, dimension(:, :), allocatable :: gamtot3
   real, dimension(:, :, :), allocatable ::  apar_denom
   !real :: gamtot_h, gamtot3_h, efac, efacp

   complex, dimension(:, :, :), allocatable :: theta
   ! (nakx, nakx, -nzgrid:nzgrid)

   complex, dimension(:, :), allocatable :: c_mat
   ! (nakx, nakx)

   complex, dimension(:), pointer :: phi_ext => null()
   ! (nakx*nztot)

   type(eigen_type), dimension(:, :), allocatable :: phi_solve
   type(eigen_type) :: phizf_solve

   !variables needed for the source
   logical :: exclude_boundary_regions_qn
   real :: tcorr_source_qn, exp_fac_qn
   integer :: qn_window = MPI_WIN_NULL, qn_zf_window = MPI_WIN_NULL

   real :: gamtot_h, gamtot3_h, efac, efacp
   real, dimension(2, 5) :: time_field_solve = 0.

end module arrays_fields