Calculate idirmin and the idirmin:3 components of the common current array make sure that dxlevel(^D) is set correctly.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nw) | ||||
| integer | :: | ixImin1 | ||||
| integer | :: | ixImin2 | ||||
| integer | :: | ixImin3 | ||||
| integer | :: | ixImax1 | ||||
| integer | :: | ixImax2 | ||||
| integer | :: | ixImax3 | ||||
| integer | :: | ixOmin1 | ||||
| integer | :: | ixOmin2 | ||||
| integer | :: | ixOmin3 | ||||
| integer | :: | ixOmax1 | ||||
| integer | :: | ixOmax2 | ||||
| integer | :: | ixOmax3 | ||||
| integer | :: | idirmin | ||||
| double precision | :: | current(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,7-2*ndir:3) |
subroutine particle_get_current(w,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,& ixImax3,ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,ixOmax3,idirmin,current) use mod_global_parameters use mod_geometry integer :: idirmin0 integer :: ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,ixOmax3, idirmin,& ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3 double precision :: w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,& 1:nw) integer :: idir ! For ndir=2 only 3rd component of J can exist, ndir=1 is impossible for MHD double precision :: current(ixImin1:ixImax1,ixImin2:ixImax2,& ixImin3:ixImax3,7-2*ndir:3),bvec(ixImin1:ixImax1,ixImin2:ixImax2,& ixImin3:ixImax3,1:ndir) idirmin0 = 7-2*ndir if (B0field) then do idir = 1, ndir bvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,& idir)=w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,& iw_mag(idir))+block%B0(ixImin1:ixImax1,ixImin2:ixImax2,& ixImin3:ixImax3,idir,0) end do else do idir = 1, ndir bvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,& idir)=w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,& iw_mag(idir)) end do end if call curlvector(bvec,ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3,& ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,ixOmax3,current,idirmin,& idirmin0,ndir) end subroutine particle_get_current