get_vec Subroutine

public subroutine get_vec(ix, igrid, x, tloc, vec)

Uses

  • proc~~get_vec~~UsesGraph proc~get_vec get_vec module~mod_global_parameters mod_global_parameters proc~get_vec->module~mod_global_parameters module~mod_usr_methods mod_usr_methods proc~get_vec->module~mod_usr_methods 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

Type IntentOptional Attributes Name
integer, intent(in) :: ix(ndir)

Indices in gridvars

integer, intent(in) :: igrid
double precision, intent(in), dimension(3) :: x
double precision, intent(in) :: tloc
double precision, intent(out), dimension(ndir) :: vec

Calls

proc~~get_vec~~CallsGraph proc~get_vec get_vec proc~interpolate_var interpolate_var proc~get_vec->proc~interpolate_var proc~mpistop mpistop proc~interpolate_var->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort

Called by

proc~~get_vec~~CalledByGraph proc~get_vec get_vec proc~derivs_gca derivs_gca proc~derivs_gca->proc~get_vec proc~get_bfield get_bfield proc~derivs_gca->proc~get_bfield proc~get_efield get_efield proc~derivs_gca->proc~get_efield proc~derivs_gca_rk derivs_gca_rk proc~derivs_gca_rk->proc~get_vec proc~derivs_gca_rk->proc~get_bfield proc~derivs_gca_rk->proc~get_efield proc~gca_create_particles gca_create_particles proc~gca_create_particles->proc~get_vec proc~gca_update_payload gca_update_payload proc~gca_create_particles->proc~gca_update_payload proc~gca_update_payload->proc~get_vec proc~gca_update_payload->proc~get_bfield proc~gca_update_payload->proc~get_efield proc~get_bfield->proc~get_vec proc~get_efield->proc~get_vec proc~get_efield->proc~get_bfield proc~lorentz_get_particle_dt Lorentz_get_particle_dt proc~lorentz_get_particle_dt->proc~get_vec proc~gca_get_particle_dt gca_get_particle_dt proc~gca_get_particle_dt->proc~derivs_gca proc~gca_get_particle_dt->proc~derivs_gca_rk proc~gca_integrate_particles gca_integrate_particles proc~gca_integrate_particles->proc~derivs_gca proc~gca_integrate_particles->proc~derivs_gca_rk proc~gca_integrate_particles->proc~gca_update_payload proc~gca_integrate_particles->proc~get_bfield proc~gca_integrate_particles->proc~get_efield proc~gca_integrate_particles->proc~gca_get_particle_dt proc~lorentz_integrate_particles Lorentz_integrate_particles proc~lorentz_integrate_particles->proc~get_bfield proc~lorentz_integrate_particles->proc~get_efield proc~lorentz_integrate_particles->proc~lorentz_get_particle_dt proc~lorentz_update_payload Lorentz_update_payload proc~lorentz_integrate_particles->proc~lorentz_update_payload proc~lorentz_update_payload->proc~get_bfield proc~lorentz_update_payload->proc~get_efield proc~particles_create particles_create proc~particles_create->proc~gca_create_particles proc~lorentz_create_particles Lorentz_create_particles proc~particles_create->proc~lorentz_create_particles proc~lorentz_create_particles->proc~lorentz_update_payload proc~main main proc~main->proc~particles_create program~agile agile program~agile->proc~main

Source Code

  subroutine get_vec(ix,igrid,x,tloc,vec)
    use mod_global_parameters
    use mod_usr_methods, only: usr_particle_analytic

    integer,intent(in)                                 :: ix(ndir)
    !< Indices in gridvars
    integer,intent(in)                                 :: igrid
    double precision,dimension(3), intent(in)          :: x
    double precision, intent(in)                       :: tloc
    double precision,dimension(ndir), intent(out)      :: vec
    double precision,dimension(ndir)                   :: vec1, vec2
    double precision                                   :: td
    integer                                            :: ic1,ic2,ic3,idir

    if (associated(usr_particle_analytic)) then
      call usr_particle_analytic(ix, x, tloc, vec)
    else
      do idir=1,ndir
        call interpolate_var(igrid,ixGlo1,ixGlo2,ixGlo3,ixGhi1,ixGhi2,ixGhi3,&
           ixMlo1,ixMlo2,ixMlo3,ixMhi1,ixMhi2,ixMhi3,&
           gridvars(igrid)%w(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,&
           ix(idir)), ps(igrid)%x(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,&
           1:ndim),x,vec(idir))
      end do
      if (time_advance) then
        do idir=1,ndir
          call interpolate_var(igrid,ixGlo1,ixGlo2,ixGlo3,ixGhi1,ixGhi2,ixGhi3,&
             ixMlo1,ixMlo2,ixMlo3,ixMhi1,ixMhi2,ixMhi3,&
             gridvars(igrid)%wold(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,&
             ix(idir)), ps(igrid)%x(ixGlo1:ixGhi1,ixGlo2:ixGhi2,ixGlo3:ixGhi3,&
             1:ndim),x,vec2(idir))
        end do
        td = (tloc - global_time) / dt
        vec(:) = vec(:) * (1.0d0 - td) + vec2(:) * td
      end if
    end if

  end subroutine get_vec