subroutine pushi
    use precision
    use particle_array
    use global_parameters
    use read_in_parameters
    use grids_eqdata
    implicit none
interface
subroutine gkpush(zpart,zpart0,wppart,wtpart0,wtpart1,&
  jtpart0,jtpart1,wzpart,mesht1d, jppart,rhogyropart,rhogyropart0,&
  qpart,apart,mp,mpmax,kapanp,kapatp,diagpart,nparam,&
  ngyro,pfluxpart,rdtempart,data1dpart,ncycle,icycle,irksub,zpart1,mp1)
  use precision
  use particle_array, only: mpdiag
  implicit none

! declaration of the dummy arguments
  integer ngyro,mp,ncycle,nparam,mpmax
  integer,dimension(:,:) :: jtpart0,jtpart1, jppart
  real(lk) qpart,apart
  real(lk),dimension(:,:),optional :: zpart1
  real(lk),dimension(:) :: wzpart
  real(lk),dimension(:) :: mesht1d,kapanp,kapatp
  real(lk),dimension(:,:) :: zpart,zpart0,wppart,wtpart0,wtpart1,rhogyropart,rhogyropart0,data1dpart
  real(lk),dimension(mpdiag) :: diagpart
  real(lk),dimension(:) :: pfluxpart,rdtempart
  integer, optional :: icycle, irksub,mp1
end subroutine gkpush
end interface
    call gkpush(zion,zion0,wpion,wtion0,wtion1,&
    jtion0,jtion1,wzion,meshti1d, jpion, rhogyroion,rhogyroion0,&
    qion,aion,mi,mimax,kapanip,kapatip,diagion,nparami,&
    ngyroi,pfluxi,rdtemi,data1di,0)
    
end subroutine pushi
