WarpX
Loading...
Searching...
No Matches
ParticleBoundaries.H
Go to the documentation of this file.
1/* Copyright 2021 David Grote
2 *
3 * This file is part of WarpX.
4 *
5 * License: BSD-3-Clause-LBNL
6 */
7#ifndef WARPX_PARTICLEBOUNDARIES_H_
8#define WARPX_PARTICLEBOUNDARIES_H_
9
11
12#include <AMReX_AmrCore.H>
13#include <AMReX_Array.H>
14#include <AMReX_Config.H>
15#include <AMReX_Parser.H>
16
17#include <utility>
18
19namespace warpx::particles
20{
30 std::pair<
33 >
35 const amrex::Array<bool, AMREX_SPACEDIM>& is_field_boundary_periodic);
36}
37
42{
43
44 ParticleBoundaries () noexcept;
45
46 void Set_reflect_all_velocities (bool flag);
49 void SetThermalVelocity (amrex::Real u_th);
50
54
55 [[nodiscard]] bool CheckAll (ParticleBoundaryType bc) const;
56
58
59 // reflection models for absorbing boundaries
60 std::string reflection_model_xlo_str = "0.0";
61 std::string reflection_model_xhi_str = "0.0";
62 std::string reflection_model_ylo_str = "0.0";
63 std::string reflection_model_yhi_str = "0.0";
64 std::string reflection_model_zlo_str = "0.0";
65 std::string reflection_model_zhi_str = "0.0";
66
67 std::unique_ptr<amrex::Parser> reflection_model_xlo_parser;
68 std::unique_ptr<amrex::Parser> reflection_model_xhi_parser;
69 std::unique_ptr<amrex::Parser> reflection_model_ylo_parser;
70 std::unique_ptr<amrex::Parser> reflection_model_yhi_parser;
71 std::unique_ptr<amrex::Parser> reflection_model_zlo_parser;
72 std::unique_ptr<amrex::Parser> reflection_model_zhi_parser;
73
94
95};
96#endif /*WARPX_PARTICLEBOUNDARIES_H_*/
ParticleBoundaryType
Definition WarpXAlgorithmSelection.H:146
std::array< T, N > Array
Definition TemperatureDeposition.H:34
std::pair< amrex::Array< ParticleBoundaryType, 3 >, amrex::Array< ParticleBoundaryType, 3 > > parse_particle_boundaries(const amrex::Array< bool, 3 > &is_field_boundary_periodic)
Reads the particle boundary conditions from the input file.
Definition ParticleBoundaries.cpp:56
Definition ParticleBoundaries.H:74
bool reflect_all_velocities
Definition ParticleBoundaries.H:91
amrex::ParserExecutor< 1 > reflection_model_ylo
Definition ParticleBoundaries.H:86
ParticleBoundaryType ymax_bc
Definition ParticleBoundaries.H:79
amrex::Real m_uth
Definition ParticleBoundaries.H:82
ParticleBoundaryType xmin_bc
Definition ParticleBoundaries.H:76
amrex::ParserExecutor< 1 > reflection_model_zhi
Definition ParticleBoundaries.H:89
ParticleBoundaryType xmax_bc
Definition ParticleBoundaries.H:77
amrex::ParserExecutor< 1 > reflection_model_xhi
Definition ParticleBoundaries.H:85
ParticleBoundaryType zmax_bc
Definition ParticleBoundaries.H:81
amrex::ParserExecutor< 1 > reflection_model_zlo
Definition ParticleBoundaries.H:88
ParticleBoundaryType ymin_bc
Definition ParticleBoundaries.H:78
amrex::ParserExecutor< 1 > reflection_model_xlo
Definition ParticleBoundaries.H:84
ParticleBoundaryType zmin_bc
Definition ParticleBoundaries.H:80
amrex::ParserExecutor< 1 > reflection_model_yhi
Definition ParticleBoundaries.H:87
std::string reflection_model_zlo_str
Definition ParticleBoundaries.H:64
void SetBoundsX(ParticleBoundaryType bc_lo, ParticleBoundaryType bc_hi)
Definition ParticleBoundaries.cpp:123
std::unique_ptr< amrex::Parser > reflection_model_ylo_parser
Definition ParticleBoundaries.H:69
std::unique_ptr< amrex::Parser > reflection_model_xhi_parser
Definition ParticleBoundaries.H:68
std::string reflection_model_zhi_str
Definition ParticleBoundaries.H:65
void SetBoundsZ(ParticleBoundaryType bc_lo, ParticleBoundaryType bc_hi)
Definition ParticleBoundaries.cpp:137
ParticleBoundaries() noexcept
Definition ParticleBoundaries.cpp:93
std::unique_ptr< amrex::Parser > reflection_model_zlo_parser
Definition ParticleBoundaries.H:71
std::unique_ptr< amrex::Parser > reflection_model_yhi_parser
Definition ParticleBoundaries.H:70
void SetBoundsY(ParticleBoundaryType bc_lo, ParticleBoundaryType bc_hi)
Definition ParticleBoundaries.cpp:130
bool CheckAll(ParticleBoundaryType bc) const
Definition ParticleBoundaries.cpp:144
ParticleBoundariesData data
Definition ParticleBoundaries.H:93
void SetThermalVelocity(amrex::Real u_th)
Definition ParticleBoundaries.cpp:117
std::string reflection_model_yhi_str
Definition ParticleBoundaries.H:63
std::string reflection_model_ylo_str
Definition ParticleBoundaries.H:62
std::unique_ptr< amrex::Parser > reflection_model_zhi_parser
Definition ParticleBoundaries.H:72
std::string reflection_model_xlo_str
Definition ParticleBoundaries.H:60
void Set_reflect_all_velocities(bool flag)
Definition ParticleBoundaries.cpp:100
std::unique_ptr< amrex::Parser > reflection_model_xlo_parser
Definition ParticleBoundaries.H:67
std::string reflection_model_xhi_str
Definition ParticleBoundaries.H:61
void SetAll(ParticleBoundaryType bc)
Definition ParticleBoundaries.cpp:106
void BuildReflectionModelParsers()
Definition ParticleBoundaries.cpp:154