Hipace
ExternalFields.H
Go to the documentation of this file.
1 /* Copyright 2020-2021
2  *
3  * This file is part of HiPACE++.
4  *
5  * Authors: MaxThevenet, Severin Diederichs
6  * License: BSD-3-Clause-LBNL
7  */
8 #ifndef EXTERNALFIELDS_H_
9 #define EXTERNALFIELDS_H_
10 
30  const amrex::ParticleReal xp,
31  const amrex::ParticleReal yp,
32  const amrex::ParticleReal zp,
33  const amrex::ParticleReal time,
34  const amrex::ParticleReal clight,
35  amrex::ParticleReal& ExmByp,
36  amrex::ParticleReal& EypBxp,
37  amrex::ParticleReal& Ezp,
38  amrex::ParticleReal& Bxp,
39  amrex::ParticleReal& Byp,
40  amrex::ParticleReal& Bzp,
41  amrex::GpuArray<amrex::ParserExecutor<4>, 6> external_fields)
42 {
43  const amrex::Real Ex = external_fields[0](xp, yp, zp, time);
44  const amrex::Real Ey = external_fields[1](xp, yp, zp, time);
45  const amrex::Real Ez = external_fields[2](xp, yp, zp, time);
46  const amrex::Real Bx = external_fields[3](xp, yp, zp, time);
47  const amrex::Real By = external_fields[4](xp, yp, zp, time);
48  const amrex::Real Bz = external_fields[5](xp, yp, zp, time);
49 
50  ExmByp += Ex - clight * By;
51  EypBxp += Ey + clight * Bx;
52  Ezp += Ez;
53  Bxp += Bx;
54  Byp += By;
55  Bzp += Bz;
56 }
57 
58 #endif // EXTERNALFIELDS_H_
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void ApplyExternalField(const amrex::ParticleReal xp, const amrex::ParticleReal yp, const amrex::ParticleReal zp, const amrex::ParticleReal time, const amrex::ParticleReal clight, amrex::ParticleReal &ExmByp, amrex::ParticleReal &EypBxp, amrex::ParticleReal &Ezp, amrex::ParticleReal &Bxp, amrex::ParticleReal &Byp, amrex::ParticleReal &Bzp, amrex::GpuArray< amrex::ParserExecutor< 4 >, 6 > external_fields)
add axisymmetric linear focusing field on particles and linear accelerating field....
Definition: ExternalFields.H:29