mod_particle_gca Module

Particle mover with Newtonian/relativistic Guiding Center Approximation (GCA) By Jannis Teunissen, Bart Ripperda, Oliver Porth, and Fabio Bacchini (2016-2020)


Uses

  • module~~mod_particle_gca~~UsesGraph module~mod_particle_gca mod_particle_gca module~mod_particle_base mod_particle_base module~mod_particle_gca->module~mod_particle_base mod_physics mod_physics module~mod_particle_base->mod_physics module~mod_comm_lib mod_comm_lib module~mod_particle_base->module~mod_comm_lib module~mod_constants mod_constants module~mod_particle_base->module~mod_constants module~mod_global_parameters mod_global_parameters module~mod_particle_base->module~mod_global_parameters module~mod_mpi_wrapper mod_mpi_wrapper module~mod_particle_base->module~mod_mpi_wrapper module~mod_random mod_random module~mod_particle_base->module~mod_random module~mod_global_parameters->module~mod_constants module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_mpi_wrapper->mpi module~mod_variables->module~mod_basic_types

Used by

  • module~~mod_particle_gca~~UsedByGraph module~mod_particle_gca mod_particle_gca module~mod_particles mod_particles module~mod_particles->module~mod_particle_gca proc~advance advance proc~advance->module~mod_particles proc~main main proc~main->module~mod_particles proc~resettree resettree proc~resettree->module~mod_particles proc~saveamrfile saveamrfile proc~saveamrfile->module~mod_particles proc~timeintegration timeintegration proc~timeintegration->module~mod_particles

Variables

Type Visibility Attributes Name Initial
integer, public, allocatable :: b_dot_grad_b(:)

Variable index for (B . grad)B (curvature B drift)

integer, public, allocatable :: b_dot_grad_vE(:)

Variable index for polarization drift

integer, public, allocatable :: grad_kappa_B(:)

Variable index for gradient B, with relativistic correction 1/kappa where kappa = 1/sqrt(1 - E_perp^2/B^2)

integer, public, allocatable :: vE_dot_grad_b(:)

Variable index for curvature drift

integer, public, allocatable :: vE_dot_grad_vE(:)

Variable index for polarization drift

integer, private, parameter :: ARK4 = 2
integer, private, parameter :: RK4 = 1

Functions

private function gca_get_particle_dt(partp, end_time) result(dt_p)

Arguments

Type IntentOptional Attributes Name
type(particle_ptr), intent(inout) :: partp
double precision, intent(in) :: end_time

Return Value double precision


Subroutines

public subroutine gca_create_particles()

Arguments

None

public subroutine gca_init()

Arguments

None

private subroutine derivs_gca(t_s, y, dydt)

Arguments

Type IntentOptional Attributes Name
double precision :: t_s
double precision :: y(ndir+2)
double precision :: dydt(ndir+2)

private subroutine derivs_gca_rk(t_s, y, dydt)

Arguments

Type IntentOptional Attributes Name
double precision :: t_s
double precision :: y(ndir+2)
double precision :: dydt(ndir+2)

private subroutine gca_fill_gridvars()

Arguments

None

private subroutine gca_integrate_particles(end_time)

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: end_time

private subroutine gca_update_payload(igrid, xpart, upart, qpart, mpart, mypayload, mynpayload, particle_time)

Update payload subroutine

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: igrid
double precision, intent(in) :: xpart(1:ndir)
double precision, intent(in) :: upart(1:ndir)
double precision, intent(in) :: qpart
double precision, intent(in) :: mpart
double precision, intent(out) :: mypayload(mynpayload)
integer, intent(in) :: mynpayload
double precision, intent(in) :: particle_time