WarpX
Toggle main menu visibility
Loading...
Searching...
No Matches
Source
Fields.H
Go to the documentation of this file.
1
/* Copyright 2024 The WarpX Community
2
*
3
* This file is part of WarpX.
4
*
5
* License: BSD-3-Clause-LBNL
6
* Authors: Luca Fedeli, Justin Angus, Remi Lehe, Axel Huebl
7
*/
8
#ifndef WARPX_FIELDS_H_
9
#define WARPX_FIELDS_H_
10
11
#include <
ablastr/fields/MultiFabRegister.H
>
12
13
#include <
AMReX_Enum.H
>
14
15
#include <algorithm>
16
#include <iterator>
17
18
19
namespace
warpx::fields
20
{
26
AMREX_ENUM
(
FieldType
,
27
None
,
28
Efield_aux
,
29
Bfield_aux
,
30
Efield_fp
,
31
Bfield_fp
,
32
Efield_fp_external
,
33
Bfield_fp_external
,
34
current_fp
,
35
current_fp_nodal
,
36
current_fp_vay
,
37
current_buf
,
38
current_store
,
39
rho_buf
,
40
rho_fp
,
41
F_fp
,
42
G_fp
,
43
phi_fp
,
44
vector_potential_fp
,
45
vector_potential_fp_nodal
,
46
vector_potential_grad_buf_e_stag
,
47
vector_potential_grad_buf_b_stag
,
48
hybrid_electron_pressure_fp
,
49
hybrid_electron_temperature_fp
,
50
hybrid_entropy_fp
,
51
hybrid_qdsmc_weights_fp
,
52
hybrid_electron_velocity_fp
,
53
hybrid_rho_fp_temp
,
54
hybrid_current_fp_temp
,
55
hybrid_current_fp_plasma
,
56
hybrid_current_fp_external
,
57
hybrid_B_fp_external
,
58
hybrid_E_fp_external
,
59
Efield_cp
,
60
Bfield_cp
,
61
current_cp
,
62
rho_cp
,
63
F_cp
,
64
G_cp
,
65
Efield_cax
,
66
Bfield_cax
,
67
E_external_particle_field
,
68
B_external_particle_field
,
69
distance_to_eb
,
70
edge_lengths
,
71
face_areas
,
72
area_mod
,
73
pml_E_fp
,
74
pml_B_fp
,
75
pml_j_fp
,
76
pml_F_fp
,
77
pml_G_fp
,
78
pml_E_cp
,
79
pml_B_cp
,
80
pml_j_cp
,
81
pml_F_cp
,
82
pml_G_cp
,
83
Efield_avg_fp
,
84
Bfield_avg_fp
,
85
Efield_avg_cp
,
86
Bfield_avg_cp
,
87
B_old
,
// Stores the value of B at the beginning of the timestep, for the implicit solver
88
E_old
,
// Stores the value of E at the beginning of the timestep, for the implicit solver
89
Efield_fp_save
,
// E at start of Newton step used by the implicit solvers
90
current_fp_non_suborbit
,
// J from non-suborbit particles used by the implicit solvers
91
MassMatrices_X
,
// Stores full mass matrix elements for Jx used by the implicit solvers
92
MassMatrices_Y,
// Stores full mass matrix elements for Jy used by the implicit solvers
93
MassMatrices_Z,
// Stores full mass matrix elements for Jz used by the implicit solvers
94
MassMatrices_PC,
// Stores reduced mass matrix elements for the implicit solver preconditioner (PC)
95
curl2_BC_mask,
// Masks used to incorporate boundary conditions into the curl curl matrix
96
ECTRhofield,
97
Venl,
98
global_debye_length,
99
dA_fp,
100
effective_potential_sigma
101
);
102
104
constexpr
FieldType
ArrayFieldTypes
[] = {
105
FieldType::Efield_aux
,
106
FieldType::Bfield_aux
,
107
FieldType::Efield_fp
,
108
FieldType::Bfield_fp
,
109
FieldType::current_fp
,
110
FieldType::current_fp_nodal
,
111
FieldType::current_fp_vay
,
112
FieldType::current_buf
,
113
FieldType::current_store
,
114
FieldType::vector_potential_fp
,
115
FieldType::vector_potential_fp_nodal
,
116
FieldType::vector_potential_grad_buf_e_stag
,
117
FieldType::vector_potential_grad_buf_b_stag
,
118
FieldType::hybrid_current_fp_temp
,
119
FieldType::hybrid_current_fp_plasma
,
120
FieldType::hybrid_current_fp_external
,
121
FieldType::hybrid_B_fp_external
,
122
FieldType::hybrid_E_fp_external
,
123
FieldType::Efield_cp
,
124
FieldType::Bfield_cp
,
125
FieldType::current_cp
,
126
FieldType::Efield_cax
,
127
FieldType::Bfield_cax
,
128
FieldType::E_external_particle_field
,
129
FieldType::B_external_particle_field
,
130
FieldType::pml_E_fp
,
131
FieldType::pml_B_fp
,
132
FieldType::pml_j_fp
,
133
FieldType::pml_E_cp
,
134
FieldType::pml_B_cp
,
135
FieldType::pml_j_cp
,
136
FieldType::Efield_avg_fp
,
137
FieldType::Bfield_avg_fp
,
138
FieldType::Efield_avg_cp
,
139
FieldType::Bfield_avg_cp
,
140
FieldType::B_old
,
141
FieldType::E_old
,
142
FieldType::Efield_fp_save
,
143
FieldType::current_fp_non_suborbit
,
144
FieldType::MassMatrices_X
,
145
FieldType::MassMatrices_Y
,
146
FieldType::MassMatrices_Z
,
147
FieldType::MassMatrices_PC
,
148
FieldType::curl2_BC_mask
,
149
FieldType::ECTRhofield
,
150
FieldType::Venl
,
151
FieldType::dA_fp
,
152
};
153
155
inline
bool
156
isFieldArray
(
const
FieldType
field_type)
157
{
158
return
std::any_of( std::begin(
ArrayFieldTypes
), std::end(
ArrayFieldTypes
),
159
[field_type](
const
FieldType
& f) {
return
f == field_type; });
160
}
161
162
}
163
164
#endif
//WARPX_FIELDS_H_
AMReX_Enum.H
MultiFabRegister.H
AMREX_ENUM
#define AMREX_ENUM(CLASS,...)
warpx::fields
Definition
Fields.H:20
warpx::fields::ArrayFieldTypes
constexpr FieldType ArrayFieldTypes[]
Definition
Fields.H:104
warpx::fields::FieldType
FieldType
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_current_fp_external
@ hybrid_current_fp_external
Definition
Fields.H:92
warpx::fields::FieldType::Efield_aux
@ Efield_aux
Definition
Fields.H:92
warpx::fields::FieldType::B_old
@ B_old
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_entropy_fp
@ hybrid_entropy_fp
Definition
Fields.H:92
warpx::fields::FieldType::current_cp
@ current_cp
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_current_fp_temp
@ hybrid_current_fp_temp
Definition
Fields.H:92
warpx::fields::FieldType::current_fp_nodal
@ current_fp_nodal
Definition
Fields.H:92
warpx::fields::FieldType::vector_potential_grad_buf_e_stag
@ vector_potential_grad_buf_e_stag
Definition
Fields.H:92
warpx::fields::FieldType::F_fp
@ F_fp
Definition
Fields.H:92
warpx::fields::FieldType::Bfield_aux
@ Bfield_aux
Definition
Fields.H:92
warpx::fields::FieldType::E_old
@ E_old
Definition
Fields.H:93
warpx::fields::FieldType::pml_F_cp
@ pml_F_cp
Definition
Fields.H:92
warpx::fields::FieldType::G_cp
@ G_cp
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_E_fp_external
@ hybrid_E_fp_external
Definition
Fields.H:92
warpx::fields::FieldType::phi_fp
@ phi_fp
Definition
Fields.H:92
warpx::fields::FieldType::current_fp_vay
@ current_fp_vay
Definition
Fields.H:92
warpx::fields::FieldType::pml_j_cp
@ pml_j_cp
Definition
Fields.H:92
warpx::fields::FieldType::Efield_cp
@ Efield_cp
Definition
Fields.H:92
warpx::fields::FieldType::current_buf
@ current_buf
Definition
Fields.H:92
warpx::fields::FieldType::MassMatrices_X
@ MassMatrices_X
Definition
Fields.H:96
warpx::fields::FieldType::vector_potential_fp_nodal
@ vector_potential_fp_nodal
Definition
Fields.H:92
warpx::fields::FieldType::vector_potential_grad_buf_b_stag
@ vector_potential_grad_buf_b_stag
Definition
Fields.H:92
warpx::fields::FieldType::rho_cp
@ rho_cp
Definition
Fields.H:92
warpx::fields::FieldType::Efield_fp
@ Efield_fp
Definition
Fields.H:92
warpx::fields::FieldType::ECTRhofield
@ ECTRhofield
Definition
Fields.H:101
warpx::fields::FieldType::B_external_particle_field
@ B_external_particle_field
Definition
Fields.H:92
warpx::fields::FieldType::edge_lengths
@ edge_lengths
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_B_fp_external
@ hybrid_B_fp_external
Definition
Fields.H:92
warpx::fields::FieldType::Efield_fp_external
@ Efield_fp_external
Definition
Fields.H:92
warpx::fields::FieldType::face_areas
@ face_areas
Definition
Fields.H:92
warpx::fields::FieldType::None
@ None
Definition
Fields.H:92
warpx::fields::FieldType::pml_F_fp
@ pml_F_fp
Definition
Fields.H:92
warpx::fields::FieldType::G_fp
@ G_fp
Definition
Fields.H:92
warpx::fields::FieldType::rho_buf
@ rho_buf
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_current_fp_plasma
@ hybrid_current_fp_plasma
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_rho_fp_temp
@ hybrid_rho_fp_temp
Definition
Fields.H:92
warpx::fields::FieldType::area_mod
@ area_mod
Definition
Fields.H:92
warpx::fields::FieldType::pml_B_cp
@ pml_B_cp
Definition
Fields.H:92
warpx::fields::FieldType::Bfield_cax
@ Bfield_cax
Definition
Fields.H:92
warpx::fields::FieldType::pml_j_fp
@ pml_j_fp
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_electron_pressure_fp
@ hybrid_electron_pressure_fp
Definition
Fields.H:92
warpx::fields::FieldType::current_store
@ current_store
Definition
Fields.H:92
warpx::fields::FieldType::pml_B_fp
@ pml_B_fp
Definition
Fields.H:92
warpx::fields::FieldType::curl2_BC_mask
@ curl2_BC_mask
Definition
Fields.H:100
warpx::fields::FieldType::current_fp
@ current_fp
Definition
Fields.H:92
warpx::fields::FieldType::distance_to_eb
@ distance_to_eb
Definition
Fields.H:92
warpx::fields::FieldType::pml_E_cp
@ pml_E_cp
Definition
Fields.H:92
warpx::fields::FieldType::Efield_fp_save
@ Efield_fp_save
Definition
Fields.H:94
warpx::fields::FieldType::rho_fp
@ rho_fp
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_electron_temperature_fp
@ hybrid_electron_temperature_fp
Definition
Fields.H:92
warpx::fields::FieldType::MassMatrices_PC
@ MassMatrices_PC
Definition
Fields.H:99
warpx::fields::FieldType::Bfield_cp
@ Bfield_cp
Definition
Fields.H:92
warpx::fields::FieldType::Bfield_fp
@ Bfield_fp
Definition
Fields.H:92
warpx::fields::FieldType::Venl
@ Venl
Definition
Fields.H:101
warpx::fields::FieldType::Efield_cax
@ Efield_cax
Definition
Fields.H:92
warpx::fields::FieldType::F_cp
@ F_cp
Definition
Fields.H:92
warpx::fields::FieldType::Bfield_avg_cp
@ Bfield_avg_cp
Definition
Fields.H:92
warpx::fields::FieldType::Efield_avg_fp
@ Efield_avg_fp
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_electron_velocity_fp
@ hybrid_electron_velocity_fp
Definition
Fields.H:92
warpx::fields::FieldType::MassMatrices_Y
@ MassMatrices_Y
Definition
Fields.H:97
warpx::fields::FieldType::pml_G_cp
@ pml_G_cp
Definition
Fields.H:92
warpx::fields::FieldType::Bfield_fp_external
@ Bfield_fp_external
Definition
Fields.H:92
warpx::fields::FieldType::Efield_avg_cp
@ Efield_avg_cp
Definition
Fields.H:92
warpx::fields::FieldType::MassMatrices_Z
@ MassMatrices_Z
Definition
Fields.H:98
warpx::fields::FieldType::pml_G_fp
@ pml_G_fp
Definition
Fields.H:92
warpx::fields::FieldType::pml_E_fp
@ pml_E_fp
Definition
Fields.H:92
warpx::fields::FieldType::Bfield_avg_fp
@ Bfield_avg_fp
Definition
Fields.H:92
warpx::fields::FieldType::hybrid_qdsmc_weights_fp
@ hybrid_qdsmc_weights_fp
Definition
Fields.H:92
warpx::fields::FieldType::E_external_particle_field
@ E_external_particle_field
Definition
Fields.H:92
warpx::fields::FieldType::vector_potential_fp
@ vector_potential_fp
Definition
Fields.H:92
warpx::fields::FieldType::current_fp_non_suborbit
@ current_fp_non_suborbit
Definition
Fields.H:95
warpx::fields::FieldType::dA_fp
@ dA_fp
Definition
Fields.H:101
warpx::fields::isFieldArray
bool isFieldArray(const FieldType field_type)
Definition
Fields.H:156
Generated by
1.18.0