aboutsummaryrefslogtreecommitdiff
path: root/Source/FieldSolver/WarpX_K.H
blob: 2772b764d23e4d6fa8d048485349580d97c96ba7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#ifndef WARPX_K_H_
#define WARPX_K_H_

#include <AMReX_FArrayBox.H>

using namespace amrex;

AMREX_GPU_HOST_DEVICE AMREX_INLINE
void warpx_push_bx_nodal (int j, int k, int l, Array4<Real> const& Bx,
                          Array4<Real const> const& Ey, Array4<Real const> const& Ez,
                          Real dtsdy, Real dtsdz)
{
#if (AMREX_SPACEDIM == 3)
    Bx(j,k,l) = Bx(j,k,l) - 0.5*dtsdy * (Ez(j,k+1,l  ) - Ez(j,k-1,l  ))
                          + 0.5*dtsdz * (Ey(j,k  ,l+1) - Ey(j,k  ,l-1));
#else
    Bx(j,k,0) = Bx(j,k,0) + 0.5*dtsdz * (Ey(j,k+1,0) - Ey(j,k-1,0));
#endif
}

AMREX_GPU_HOST_DEVICE AMREX_INLINE
void warpx_push_by_nodal (int j, int k, int l, Array4<Real> const& By,
                          Array4<Real const> const& Ex, Array4<Real const> const& Ez,
                          Real dtsdx, Real dtsdz)
{
#if (AMREX_SPACEDIM == 3)
    By(j,k,l) = By(j,k,l) + 0.5*dtsdx * (Ez(j+1,k,l  ) - Ez(j-1,k,l  ))
                          - 0.5*dtsdz * (Ex(j  ,k,l+1) - Ex(j  ,k,l-1));
#else
    By(j,k,0) = By(j,k,0) + 0.5*dtsdx * (Ez(j+1,k  ,0) - Ez(j-1,k  ,0))
                          - 0.5*dtsdz * (Ex(j  ,k+1,0) - Ex(j  ,k-1,0));
#endif
}

AMREX_GPU_HOST_DEVICE AMREX_INLINE
void warpx_push_bz_nodal (int j, int k, int l, Array4<Real> const& Bz,
                          Array4<Real const> const& Ex, Array4<Real const> const& Ey,
                          Real dtsdx, Real dtsdy)
{
#if (AMREX_SPACEDIM == 3)
    Bz(j,k,l) = Bz(j,k,l) - 0.5*dtsdx * (Ey(j+1,k  ,l) - Ey(j-1,k  ,l))
                          + 0.5*dtsdy * (Ex(j  ,k+1,l) - Ex(j  ,k-1,l));
#else
    Bz(j,k,0) = Bz(j,k,0) - 0.5*dtsdx * (Ey(j+1,k  ,0) - Ey(j-1,k  ,0));
#endif
}

AMREX_GPU_HOST_DEVICE AMREX_INLINE
void warpx_push_ex_nodal (int j, int k, int l, Array4<Real> const& Ex,
                          Array4<Real const> const& By, Array4<Real const> const& Bz,
                          Array4<Real const> const& jx,
                          Real mudt, Real dtsdy, Real dtsdz)
{
#if (AMREX_SPACEDIM == 3)
    Ex(j,k,l) = Ex(j,k,l) + 0.5*dtsdy * (Bz(j,k+1,l  ) - Bz(j,k-1,l  ))
                          - 0.5*dtsdz * (By(j,k  ,l+1) - By(j,k  ,l-1))
        - mudt  * jx(j,k,l);
#else
    Ex(j,k,0) = Ex(j,k,0) - 0.5*dtsdz * (By(j,k+1,0) - By(j,k-1,0))
        - mudt  * jx(j,k,0);
#endif
}

AMREX_GPU_HOST_DEVICE AMREX_INLINE
void warpx_push_ey_nodal (int j, int k, int l, Array4<Real> const& Ey,
                          Array4<Real const> const& Bx, Array4<Real const> const& Bz,
                          Array4<Real const> const& jy,
                          Real mudt, Real dtsdx, Real dtsdz)
{
#if (AMREX_SPACEDIM == 3)
    Ey(j,k,l) = Ey(j,k,l) - 0.5*dtsdx * (Bz(j+1,k,l  ) - Bz(j-1,k,l  ))
                          + 0.5*dtsdz * (Bx(j  ,k,l+1) - Bx(j  ,k,l-1))
        - mudt  * jy(j,k,l);
#else
    Ey(j,k,0) = Ey(j,k,0) - 0.5*dtsdx * (Bz(j+1,k  ,0) - Bz(j-1,k  ,0))
                          + 0.5*dtsdz * (Bx(j  ,k+1,0) - Bx(j  ,k-1,0))
        - mudt  * jy(j,k,0);
#endif
}

AMREX_GPU_HOST_DEVICE AMREX_INLINE
void warpx_push_ez_nodal (int j, int k, int l, Array4<Real> const& Ez,
                          Array4<Real const> const& Bx, Array4<Real const> const& By,
                          Array4<Real const> const& jz,
                          Real mudt, Real dtsdx, Real dtsdy)
{
#if (AMREX_SPACEDIM == 3)
    Ez(j,k,l) = Ez(j,k,l) + 0.5*dtsdx * (By(j+1,k  ,l) - By(j-1,k  ,l))
                          - 0.5*dtsdy * (Bx(j  ,k+1,l) - Bx(j  ,k-1,l))
        - mudt  * jz(j,k,l);
#else
    Ez(j,k,0) = Ez(j,k,0) + 0.5*dtsdx * (By(j+1,k,0) - By(j-1,k,0))
        - mudt  * jz(j,k,0);
#endif
}

#endif