module fields ! ! (c) Copyright 1991 to 1998 by Michael A. Beer, William D. Dorland, ! P. B. Snyder, Q. P. Liu, and Gregory W. Hammett. ALL RIGHTS RESERVED. ! ! ! This module contains the main 3-D field arrays. ! implicit none complex, dimension(:,:,:,:), allocatable :: density, u_par, t_par, q_par, t_perp, q_perp complex, dimension(:,:,:), allocatable :: potential complex, dimension(:,:), allocatable :: phiav_old ! ! Electron variables in pitch angle space ! complex, dimension(:,:,:), allocatable :: e_density, e_p, e_r, e_t, phi_ba ! ! Electron variables in theta space ! complex, dimension(:,:,:), allocatable :: phi_bk, e_denk ! ! Electron fluid moments for EM case ! complex, dimension(:,:,:), allocatable :: n_e, u_e, tpar_e, tperp_e, apar, phi_na contains subroutine alloc_fields use gryffin_layouts use gryffin_grid, only: ld, nd, kd, kdpass use itg_data, only: epse, beta_e, nspecies allocate (density(ld, m_low:m_alloc, n_low:n_alloc, nspecies), & u_par(ld, m_low:m_alloc, n_low:n_alloc, nspecies), & t_par(ld, m_low:m_alloc, n_low:n_alloc, nspecies), & q_par(ld, m_low:m_alloc, n_low:n_alloc, nspecies), & t_perp(ld, m_low:m_alloc, n_low:n_alloc, nspecies), & q_perp(ld, m_low:m_alloc, n_low:n_alloc, nspecies)) density = 0.; u_par = 0.; t_par = 0.; q_par = 0.; t_perp = 0. q_perp = 0. allocate (potential(ld, m_low:m_alloc, n_low:n_alloc), & phiav_old(m_low:m_alloc, n_low:n_alloc)) potential = 0.; phiav_old = 0. if(epse > 0.) then allocate (e_density(kdpass, m_low:m_alloc, n_low:n_alloc), & e_p(kdpass, m_low:m_alloc, n_low:n_alloc), & e_r(kdpass, m_low:m_alloc, n_low:n_alloc), & e_t(kdpass, m_low:m_alloc, n_low:n_alloc), & phi_ba(kdpass, m_low:m_alloc, n_low:n_alloc)) else allocate (e_density(1,1,1), & e_p(1,1,1), & e_r(1,1,1), & e_t(1,1,1), & phi_ba(1,1,1)) endif e_density = 0.; e_p = 0.; e_r = 0.; e_t = 0.; phi_ba = 0. if (beta_e > 0.) then allocate (n_e(ld, m_low:m_alloc, n_low:n_alloc)) allocate (u_e(ld, m_low:m_alloc, n_low:n_alloc)) allocate (tpar_e(ld, m_low:m_alloc, n_low:n_alloc)) allocate (tperp_e(ld, m_low:m_alloc, n_low:n_alloc)) allocate (apar(ld, m_low:m_alloc, n_low:n_alloc)) allocate (phi_na(ld, m_low:m_alloc, n_low:n_alloc)) else allocate (n_e(1,1,1)) allocate (u_e(1,1,1)) allocate (tpar_e(1,1,1)) allocate (tperp_e(1,1,1)) allocate (apar(1,1,1)) allocate (phi_na(1,1,1)) endif n_e = 0.; u_e = 0.; tpar_e = 0.; tperp_e = 0.; apar = 0.; phi_na = 0. allocate (phi_bk(ld, m_low:m_alloc, n_low:n_alloc), & e_denk(ld, m_low:m_alloc, n_low:n_alloc)) phi_bk = 0.; e_denk = 0. end subroutine alloc_fields end module fields