gca_init Subroutine

public subroutine gca_init()

Uses

  • proc~~gca_init~~UsesGraph proc~gca_init gca_init module~mod_global_parameters mod_global_parameters proc~gca_init->module~mod_global_parameters 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_constants mod_constants module~mod_global_parameters->module~mod_constants 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_variables->module~mod_basic_types

Arguments

None

Calls

proc~~gca_init~~CallsGraph proc~gca_init gca_init proc~mpistop mpistop proc~gca_init->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort

Called by

proc~~gca_init~~CalledByGraph proc~gca_init gca_init proc~particles_init particles_init proc~particles_init->proc~gca_init

Source Code

  subroutine gca_init()
    use mod_global_parameters
    integer :: idir, nwx

    if (physics_type/='mhd') call mpistop(&
       "GCA particles need magnetic field!")
    if (ndir/=3) call mpistop("GCA particles need ndir=3!")

    nwx = 0
    allocate(bp(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      bp(idir) = nwx
    end do
    allocate(ep(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      ep(idir) = nwx
    end do
    allocate(grad_kappa_B(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      grad_kappa_B(idir) = nwx
    end do
    allocate(b_dot_grad_b(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      b_dot_grad_b(idir) = nwx
    end do
    allocate(vE_dot_grad_b(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      vE_dot_grad_b(idir) = nwx
    end do
    allocate(b_dot_grad_vE(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      b_dot_grad_vE(idir) = nwx
    end do
    allocate(vE_dot_grad_vE(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      vE_dot_grad_vE(idir) = nwx
    end do
    allocate(vp(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      vp(idir) = nwx
    end do
    allocate(jp(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      jp(idir) = nwx
    end do
    nwx = nwx + 1 ! density
    rhop = nwx

    ngridvars=nwx

    particles_fill_gridvars => gca_fill_gridvars

    if (associated(particles_define_additional_gridvars)) then
      call particles_define_additional_gridvars(ngridvars)
    end if

    select case(integrator_type_particles)
    case('RK4','Rk4','rk4')
      integrator = RK4
    case('ARK4','ARk4','Ark4','ark4')
      integrator = ARK4
    case default
      integrator = ARK4
    end select

    particles_integrate => gca_integrate_particles

  end subroutine gca_init