Lorentz_init Subroutine

public subroutine Lorentz_init()

Uses

  • proc~~lorentz_init~~UsesGraph proc~lorentz_init Lorentz_init module~mod_global_parameters mod_global_parameters proc~lorentz_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~~lorentz_init~~CallsGraph proc~lorentz_init Lorentz_init proc~mpistop mpistop proc~lorentz_init->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort

Called by

proc~~lorentz_init~~CalledByGraph proc~lorentz_init Lorentz_init proc~particles_init particles_init proc~particles_init->proc~lorentz_init

Source Code

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

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

    ! The first 6 gridvars are always B and E
    ngridvars = ndir*2
    nwx=0
    ! density
    if(particles_etah>0) nwx = 1

    allocate(bp(ndir))
    do idir = 1, ndir
      nwx = nwx + 1
      bp(idir) = nwx
    end do
    allocate(ep(ndir)) ! electric field
    do idir = 1, ndir
      nwx = nwx + 1
      ep(idir) = nwx
    end do
    allocate(vp(ndir)) ! fluid velocity
    do idir = 1, ndir
      nwx = nwx + 1
      vp(idir) = nwx
    end do
    allocate(jp(ndir)) ! current
    do idir = 1, ndir
      nwx = nwx + 1
      jp(idir) = nwx
    end do 
    nwx = nwx + 1 ! density
    rhop = nwx

    ngridvars=nwx

    particles_fill_gridvars => lorentz_fill_gridvars

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

    select case(integrator_type_particles)
    case('Boris','boris')
      integrator = Boris
    case('Vay','vay')
      integrator = Vay
    case('HC','hc','higueracary')
      integrator = HC
    case('LM','lm','lapentamarkidis')
      integrator = LM
    case default
      integrator = Boris
    end select

    particles_integrate => Lorentz_integrate_particles

  end subroutine Lorentz_init