#include "Utils/WarpXConst.H"
#include <AMReX.H>
#include <AMReX_FArrayBox.H>
#include <cmath>
Go to the source code of this file.
|
AMREX_GPU_HOST_DEVICE AMREX_INLINE void | calc_M (amrex::Real arr[], amrex::Real ex, amrex::Real ey, amrex::Real ez, amrex::Real bx, amrex::Real by, amrex::Real bz, amrex::Real xi_c2, amrex::Real c2) |
|
AMREX_GPU_HOST_DEVICE AMREX_INLINE void | warpx_hybrid_QED_push (int j, int k, int l, amrex::Array4< amrex::Real > const &Ex, amrex::Array4< amrex::Real > const &Ey, amrex::Array4< amrex::Real > const &Ez, amrex::Array4< amrex::Real > const &Bx, amrex::Array4< amrex::Real > const &By, amrex::Array4< amrex::Real const > const &Bz, amrex::Array4< amrex::Real > const &tmpEx, amrex::Array4< amrex::Real > const &tmpEy, amrex::Array4< amrex::Real > const &tmpEz, amrex::Array4< amrex::Real > const &Jx, amrex::Array4< amrex::Real > const &Jy, amrex::Array4< amrex::Real > const &Jz, const amrex::Real dx, const amrex::Real dy, const amrex::Real dz, const amrex::Real dt, const amrex::Real xi_c2) |
|
◆ calc_M()
AMREX_GPU_HOST_DEVICE AMREX_INLINE void calc_M |
( |
amrex::Real |
arr[], |
|
|
amrex::Real |
ex, |
|
|
amrex::Real |
ey, |
|
|
amrex::Real |
ez, |
|
|
amrex::Real |
bx, |
|
|
amrex::Real |
by, |
|
|
amrex::Real |
bz, |
|
|
amrex::Real |
xi_c2, |
|
|
amrex::Real |
c2 |
|
) |
| |
calc_M calculates the Magnetization field of the vacuum at a specific point and returns it as a three component vector
- Parameters
-
[in] | arr | This is teh empty array that will be filled with the components of the M-field |
[in] | ex | The x-component of the E-field at the point at which the M-field is to be calculated |
[in] | ey | The y-component of the E-field at the point at which the M-field is to be calculated |
[in] | ez | The z-component of the E-field at the point at which the M-field is to be calculated |
[in] | bx | The x-component of the B-field at the point at which the M-field is to be calculated |
[in] | by | The y-component of the B-field at the point at which the M-field is to be calculated |
[in] | bz | The z-component of the B-field at the point at which the M-field is to be calculated |
[in] | xi_c2 | The quantum parameter * c2 being used for the simulation |
[in] | c2 | the speed of light squared |
◆ warpx_hybrid_QED_push()
AMREX_GPU_HOST_DEVICE AMREX_INLINE void warpx_hybrid_QED_push |
( |
int |
j, |
|
|
int |
k, |
|
|
int |
l, |
|
|
amrex::Array4< amrex::Real > const & |
Ex, |
|
|
amrex::Array4< amrex::Real > const & |
Ey, |
|
|
amrex::Array4< amrex::Real > const & |
Ez, |
|
|
amrex::Array4< amrex::Real > const & |
Bx, |
|
|
amrex::Array4< amrex::Real > const & |
By, |
|
|
amrex::Array4< amrex::Real const > const & |
Bz, |
|
|
amrex::Array4< amrex::Real > const & |
tmpEx, |
|
|
amrex::Array4< amrex::Real > const & |
tmpEy, |
|
|
amrex::Array4< amrex::Real > const & |
tmpEz, |
|
|
amrex::Array4< amrex::Real > const & |
Jx, |
|
|
amrex::Array4< amrex::Real > const & |
Jy, |
|
|
amrex::Array4< amrex::Real > const & |
Jz, |
|
|
const amrex::Real |
dx, |
|
|
const amrex::Real |
dy, |
|
|
const amrex::Real |
dz, |
|
|
const amrex::Real |
dt, |
|
|
const amrex::Real |
xi_c2 |
|
) |
| |
warpx_hybrid_QED_push uses an FDTD scheme to calculate QED corrections to Maxwell's equations and preforms a half timestep correction to the E-fields
- Parameters
-
[in] | j | mesh index |
[in] | k | mesh index |
[in] | l | mesh index |
[in,out] | Ex | This function modifies the Ex field at the end |
[in,out] | Ey | This function modifies the Ey field at the end |
[in,out] | Ez | This function modifies the Ez field at the end |
[in] | Bx | The QED corrections are non-linear functions of B. However, they do not modify B itself |
[in] | By | The QED corrections are non-linear functions of B. However, they do not modify B itself |
[in] | Bz | The QED corrections are non-linear functions of B. However, they do not modify B itself |
[in] | tmpEx | Since the corrections to E at a given node are non-linear functions of the values of E on the surronding nodes, temp arrays are used so that modifications to one node do not influence the corrections to the surronding nodes |
[in] | tmpEy | Since the corrections to E at a given node are non-linear functions of the values of E on the surronding nodes, temp arrays are used so that modifications to one node do not influence the corrections to the surronding nodes |
[in] | tmpEz | Since the corrections to E at a given node are non-linear functions of the values of E on the surronding nodes, temp arrays are used so that modifications to one node do not influence the corrections to the surronding nodes |
[in] | Jx | the current field in x |
[in] | Jy | the current field in y |
[in] | Jz | the current field in z |
[in] | dx | The x spatial step, used for calculating curls |
[in] | dy | The y spatial step, used for calculating curls |
[in] | dz | The z spatial step, used for calculating curls |
[in] | dt | The temporal step, used for the half push/correction to the E-fields at the end of the function |
[in] | xi_c2 | Quantum parameter * c**2 |