WarpX
Functions
WarpX_QED_K.H File Reference
#include "Utils/WarpXConst.H"
#include <AMReX.H>
#include <AMReX_FArrayBox.H>
#include <cmath>

Go to the source code of this file.

Functions

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)
 

Function Documentation

◆ 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]arrThis is teh empty array that will be filled with the components of the M-field
[in]exThe x-component of the E-field at the point at which the M-field is to be calculated
[in]eyThe y-component of the E-field at the point at which the M-field is to be calculated
[in]ezThe z-component of the E-field at the point at which the M-field is to be calculated
[in]bxThe x-component of the B-field at the point at which the M-field is to be calculated
[in]byThe y-component of the B-field at the point at which the M-field is to be calculated
[in]bzThe z-component of the B-field at the point at which the M-field is to be calculated
[in]xi_c2The quantum parameter * c2 being used for the simulation
[in]c2the 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]jmesh index
[in]kmesh index
[in]lmesh index
[in,out]ExThis function modifies the Ex field at the end
[in,out]EyThis function modifies the Ey field at the end
[in,out]EzThis function modifies the Ez field at the end
[in]BxThe QED corrections are non-linear functions of B. However, they do not modify B itself
[in]ByThe QED corrections are non-linear functions of B. However, they do not modify B itself
[in]BzThe QED corrections are non-linear functions of B. However, they do not modify B itself
[in]tmpExSince 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]tmpEySince 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]tmpEzSince 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]Jxthe current field in x
[in]Jythe current field in y
[in]Jzthe current field in z
[in]dxThe x spatial step, used for calculating curls
[in]dyThe y spatial step, used for calculating curls
[in]dzThe z spatial step, used for calculating curls
[in]dtThe temporal step, used for the half push/correction to the E-fields at the end of the function
[in]xi_c2Quantum parameter * c**2