#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 |