blob: 0808bd6c19d70c14704050e0d6ac9ea3957f4b4e (
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
|
#include "Particles/Gather/GetExternalFields.H"
#include "Particles/MultiParticleContainer.H"
#include "Particles/WarpXParticleContainer.H"
#include "WarpX.H"
#include <AMReX_Vector.H>
#include <string>
GetExternalEField::GetExternalEField (const WarpXParIter& a_pti, int a_offset) noexcept
{
auto& warpx = WarpX::GetInstance();
auto& mypc = warpx.GetPartContainer();
if (mypc.m_E_ext_particle_s=="constant" || mypc.m_E_ext_particle_s=="default")
{
m_type = Constant;
m_field_value[0] = mypc.m_E_external_particle[0];
m_field_value[1] = mypc.m_E_external_particle[1];
m_field_value[2] = mypc.m_E_external_particle[2];
}
else if (mypc.m_E_ext_particle_s=="parse_e_ext_particle_function")
{
m_type = Parser;
m_time = warpx.gett_new(a_pti.GetLevel());
m_get_position = GetParticlePosition(a_pti, a_offset);
m_xfield_partparser = mypc.m_Ex_particle_parser->compile<4>();
m_yfield_partparser = mypc.m_Ey_particle_parser->compile<4>();
m_zfield_partparser = mypc.m_Ez_particle_parser->compile<4>();
}
}
GetExternalBField::GetExternalBField (const WarpXParIter& a_pti, int a_offset) noexcept
{
auto& warpx = WarpX::GetInstance();
auto& mypc = warpx.GetPartContainer();
if (mypc.m_B_ext_particle_s=="constant" || mypc.m_B_ext_particle_s=="default")
{
m_type = Constant;
m_field_value[0] = mypc.m_B_external_particle[0];
m_field_value[1] = mypc.m_B_external_particle[1];
m_field_value[2] = mypc.m_B_external_particle[2];
}
else if (mypc.m_B_ext_particle_s=="parse_b_ext_particle_function")
{
m_type = Parser;
m_time = warpx.gett_new(a_pti.GetLevel());
m_get_position = GetParticlePosition(a_pti, a_offset);
m_xfield_partparser = mypc.m_Bx_particle_parser->compile<4>();
m_yfield_partparser = mypc.m_By_particle_parser->compile<4>();
m_zfield_partparser = mypc.m_Bz_particle_parser->compile<4>();
}
}
|