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_rho_fp_temp
,
50
hybrid_current_fp_temp
,
51
hybrid_current_fp_plasma
,
52
hybrid_current_fp_external
,
53
hybrid_B_fp_external
,
54
hybrid_E_fp_external
,
55
Efield_cp
,
56
Bfield_cp
,
57
current_cp
,
58
rho_cp
,
59
F_cp
,
60
G_cp
,
61
Efield_cax
,
62
Bfield_cax
,
63
E_external_particle_field
,
64
B_external_particle_field
,
65
distance_to_eb
,
66
edge_lengths
,
67
face_areas
,
68
area_mod
,
69
pml_E_fp
,
70
pml_B_fp
,
71
pml_j_fp
,
72
pml_F_fp
,
73
pml_G_fp
,
74
pml_E_cp
,
75
pml_B_cp
,
76
pml_j_cp
,
77
pml_F_cp
,
78
pml_G_cp
,
79
pml_edge_lengths
,
80
Efield_avg_fp
,
81
Bfield_avg_fp
,
82
Efield_avg_cp
,
83
Bfield_avg_cp
,
84
B_old
,
// Stores the value of B at the beginning of the timestep, for the implicit solver
85
E_old
,
// Stores the value of E at the beginning of the timestep, for the implicit solver
86
Efield_fp_save
,
// E at start of Newton step used by the implicit solvers
87
current_fp_non_suborbit
,
// J from non-suborbit particles used by the implicit solvers
88
MassMatrices_X
,
// Stores full mass matrix elements for Jx used by the implicit solvers
89
MassMatrices_Y
,
// Stores full mass matrix elements for Jy used by the implicit solvers
90
MassMatrices_Z
,
// Stores full mass matrix elements for Jz used by the implicit solvers
91
MassMatrices_PC
,
// Stores reduced mass matrix elements for the implicit solver preconditioner (PC)
92
curl2_BC_mask
,
// Masks used to incorporate boundary conditions into the curl curl matrix
93
ECTRhofield
,
94
Venl
,
95
global_debye_length
,
96
effective_potential_sigma
97
);
98
100
constexpr
FieldType
ArrayFieldTypes
[] = {
101
FieldType::Efield_aux
,
102
FieldType::Bfield_aux
,
103
FieldType::Efield_fp
,
104
FieldType::Bfield_fp
,
105
FieldType::current_fp
,
106
FieldType::current_fp_nodal
,
107
FieldType::current_fp_vay
,
108
FieldType::current_buf
,
109
FieldType::current_store
,
110
FieldType::vector_potential_fp
,
111
FieldType::vector_potential_fp_nodal
,
112
FieldType::vector_potential_grad_buf_e_stag
,
113
FieldType::vector_potential_grad_buf_b_stag
,
114
FieldType::hybrid_current_fp_temp
,
115
FieldType::hybrid_current_fp_plasma
,
116
FieldType::hybrid_current_fp_external
,
117
FieldType::hybrid_B_fp_external
,
118
FieldType::hybrid_E_fp_external
,
119
FieldType::Efield_cp
,
120
FieldType::Bfield_cp
,
121
FieldType::current_cp
,
122
FieldType::Efield_cax
,
123
FieldType::Bfield_cax
,
124
FieldType::E_external_particle_field
,
125
FieldType::B_external_particle_field
,
126
FieldType::pml_E_fp
,
127
FieldType::pml_B_fp
,
128
FieldType::pml_j_fp
,
129
FieldType::pml_E_cp
,
130
FieldType::pml_B_cp
,
131
FieldType::pml_j_cp
,
132
FieldType::Efield_avg_fp
,
133
FieldType::Bfield_avg_fp
,
134
FieldType::Efield_avg_cp
,
135
FieldType::Bfield_avg_cp
,
136
FieldType::B_old
,
137
FieldType::E_old
,
138
FieldType::Efield_fp_save
,
139
FieldType::current_fp_non_suborbit
,
140
FieldType::MassMatrices_X
,
141
FieldType::MassMatrices_Y
,
142
FieldType::MassMatrices_Z
,
143
FieldType::MassMatrices_PC
,
144
FieldType::curl2_BC_mask
,
145
FieldType::ECTRhofield
,
146
FieldType::Venl
147
};
148
150
inline
bool
151
isFieldArray
(
const
FieldType
field_type)
152
{
153
return
std::any_of( std::begin(
ArrayFieldTypes
), std::end(
ArrayFieldTypes
),
154
[field_type](
const
FieldType
& f) {
return
f == field_type; });
155
}
156
157
}
158
159
#endif
//WARPX_FIELDS_H_
AMReX_Enum.H
AMREX_ENUM
#define AMREX_ENUM(CLASS,...)
MultiFabRegister.H
warpx::fields
Definition
Fields.H:20
warpx::fields::ArrayFieldTypes
constexpr FieldType ArrayFieldTypes[]
Definition
Fields.H:100
warpx::fields::FieldType
FieldType
Definition
Fields.H:88
warpx::fields::FieldType::hybrid_current_fp_external
@ hybrid_current_fp_external
Definition
Fields.H:88
warpx::fields::FieldType::Efield_aux
@ Efield_aux
Definition
Fields.H:88
warpx::fields::FieldType::B_old
@ B_old
Definition
Fields.H:88
warpx::fields::FieldType::current_cp
@ current_cp
Definition
Fields.H:88
warpx::fields::FieldType::hybrid_current_fp_temp
@ hybrid_current_fp_temp
Definition
Fields.H:88
warpx::fields::FieldType::current_fp_nodal
@ current_fp_nodal
Definition
Fields.H:88
warpx::fields::FieldType::vector_potential_grad_buf_e_stag
@ vector_potential_grad_buf_e_stag
Definition
Fields.H:88
warpx::fields::FieldType::effective_potential_sigma
@ effective_potential_sigma
Definition
Fields.H:97
warpx::fields::FieldType::F_fp
@ F_fp
Definition
Fields.H:88
warpx::fields::FieldType::Bfield_aux
@ Bfield_aux
Definition
Fields.H:88
warpx::fields::FieldType::E_old
@ E_old
Definition
Fields.H:89
warpx::fields::FieldType::pml_F_cp
@ pml_F_cp
Definition
Fields.H:88
warpx::fields::FieldType::G_cp
@ G_cp
Definition
Fields.H:88
warpx::fields::FieldType::hybrid_E_fp_external
@ hybrid_E_fp_external
Definition
Fields.H:88
warpx::fields::FieldType::phi_fp
@ phi_fp
Definition
Fields.H:88
warpx::fields::FieldType::current_fp_vay
@ current_fp_vay
Definition
Fields.H:88
warpx::fields::FieldType::pml_j_cp
@ pml_j_cp
Definition
Fields.H:88
warpx::fields::FieldType::Efield_cp
@ Efield_cp
Definition
Fields.H:88
warpx::fields::FieldType::current_buf
@ current_buf
Definition
Fields.H:88
warpx::fields::FieldType::MassMatrices_X
@ MassMatrices_X
Definition
Fields.H:92
warpx::fields::FieldType::vector_potential_fp_nodal
@ vector_potential_fp_nodal
Definition
Fields.H:88
warpx::fields::FieldType::vector_potential_grad_buf_b_stag
@ vector_potential_grad_buf_b_stag
Definition
Fields.H:88
warpx::fields::FieldType::rho_cp
@ rho_cp
Definition
Fields.H:88
warpx::fields::FieldType::Efield_fp
@ Efield_fp
Definition
Fields.H:88
warpx::fields::FieldType::ECTRhofield
@ ECTRhofield
Definition
Fields.H:97
warpx::fields::FieldType::B_external_particle_field
@ B_external_particle_field
Definition
Fields.H:88
warpx::fields::FieldType::edge_lengths
@ edge_lengths
Definition
Fields.H:88
warpx::fields::FieldType::hybrid_B_fp_external
@ hybrid_B_fp_external
Definition
Fields.H:88
warpx::fields::FieldType::Efield_fp_external
@ Efield_fp_external
Definition
Fields.H:88
warpx::fields::FieldType::face_areas
@ face_areas
Definition
Fields.H:88
warpx::fields::FieldType::None
@ None
Definition
Fields.H:88
warpx::fields::FieldType::pml_F_fp
@ pml_F_fp
Definition
Fields.H:88
warpx::fields::FieldType::G_fp
@ G_fp
Definition
Fields.H:88
warpx::fields::FieldType::rho_buf
@ rho_buf
Definition
Fields.H:88
warpx::fields::FieldType::hybrid_current_fp_plasma
@ hybrid_current_fp_plasma
Definition
Fields.H:88
warpx::fields::FieldType::hybrid_rho_fp_temp
@ hybrid_rho_fp_temp
Definition
Fields.H:88
warpx::fields::FieldType::area_mod
@ area_mod
Definition
Fields.H:88
warpx::fields::FieldType::pml_B_cp
@ pml_B_cp
Definition
Fields.H:88
warpx::fields::FieldType::Bfield_cax
@ Bfield_cax
Definition
Fields.H:88
warpx::fields::FieldType::pml_j_fp
@ pml_j_fp
Definition
Fields.H:88
warpx::fields::FieldType::hybrid_electron_pressure_fp
@ hybrid_electron_pressure_fp
Definition
Fields.H:88
warpx::fields::FieldType::current_store
@ current_store
Definition
Fields.H:88
warpx::fields::FieldType::pml_B_fp
@ pml_B_fp
Definition
Fields.H:88
warpx::fields::FieldType::curl2_BC_mask
@ curl2_BC_mask
Definition
Fields.H:96
warpx::fields::FieldType::current_fp
@ current_fp
Definition
Fields.H:88
warpx::fields::FieldType::distance_to_eb
@ distance_to_eb
Definition
Fields.H:88
warpx::fields::FieldType::pml_E_cp
@ pml_E_cp
Definition
Fields.H:88
warpx::fields::FieldType::Efield_fp_save
@ Efield_fp_save
Definition
Fields.H:90
warpx::fields::FieldType::rho_fp
@ rho_fp
Definition
Fields.H:88
warpx::fields::FieldType::pml_edge_lengths
@ pml_edge_lengths
Definition
Fields.H:88
warpx::fields::FieldType::MassMatrices_PC
@ MassMatrices_PC
Definition
Fields.H:95
warpx::fields::FieldType::Bfield_cp
@ Bfield_cp
Definition
Fields.H:88
warpx::fields::FieldType::Bfield_fp
@ Bfield_fp
Definition
Fields.H:88
warpx::fields::FieldType::Venl
@ Venl
Definition
Fields.H:97
warpx::fields::FieldType::Efield_cax
@ Efield_cax
Definition
Fields.H:88
warpx::fields::FieldType::F_cp
@ F_cp
Definition
Fields.H:88
warpx::fields::FieldType::Bfield_avg_cp
@ Bfield_avg_cp
Definition
Fields.H:88
warpx::fields::FieldType::Efield_avg_fp
@ Efield_avg_fp
Definition
Fields.H:88
warpx::fields::FieldType::MassMatrices_Y
@ MassMatrices_Y
Definition
Fields.H:93
warpx::fields::FieldType::pml_G_cp
@ pml_G_cp
Definition
Fields.H:88
warpx::fields::FieldType::Bfield_fp_external
@ Bfield_fp_external
Definition
Fields.H:88
warpx::fields::FieldType::Efield_avg_cp
@ Efield_avg_cp
Definition
Fields.H:88
warpx::fields::FieldType::MassMatrices_Z
@ MassMatrices_Z
Definition
Fields.H:94
warpx::fields::FieldType::pml_G_fp
@ pml_G_fp
Definition
Fields.H:88
warpx::fields::FieldType::pml_E_fp
@ pml_E_fp
Definition
Fields.H:88
warpx::fields::FieldType::Bfield_avg_fp
@ Bfield_avg_fp
Definition
Fields.H:88
warpx::fields::FieldType::E_external_particle_field
@ E_external_particle_field
Definition
Fields.H:88
warpx::fields::FieldType::global_debye_length
@ global_debye_length
Definition
Fields.H:97
warpx::fields::FieldType::vector_potential_fp
@ vector_potential_fp
Definition
Fields.H:88
warpx::fields::FieldType::current_fp_non_suborbit
@ current_fp_non_suborbit
Definition
Fields.H:91
warpx::fields::isFieldArray
bool isFieldArray(const FieldType field_type)
Definition
Fields.H:151
Generated by
1.17.0