54 RP::add(
"TestHall.BX0",
"Magnetic field x (T)", 1.0e-9);
55 RP::add(
"TestHall.BY0",
"Magnetic field y (T)", 1.0e-9);
56 RP::add(
"TestHall.BZ0",
"Magnetic field z (T)", 1.0e-9);
57 RP::add(
"TestHall.VX0",
"velocity x (m/s)", -1.0e3);
58 RP::add(
"TestHall.VY0",
"velocity y (m/s)", 1.0e3);
59 RP::add(
"TestHall.VZ0",
"velocity z (m/s)", 1.0e3);
60 RP::add(
"TestHall.Temperature",
"Temperature (K)", 1.0e6);
61 RP::add(
"TestHall.rho",
"Number density (m^-3)", 1.0e6);
69 std::cerr <<
"The selected project does not support multiple particle populations! Aborting in " << __FILE__ <<
" line " << __LINE__ << std::endl;
72 RP::get(
"TestHall.BX0", this->
BX0);
73 RP::get(
"TestHall.BY0", this->
BY0);
74 RP::get(
"TestHall.BZ0", this->
BZ0);
75 RP::get(
"TestHall.VX0", this->
VX0);
76 RP::get(
"TestHall.VY0", this->
VY0);
77 RP::get(
"TestHall.VZ0", this->
VZ0);
79 RP::get(
"TestHall.rho", this->
DENSITY);
116 vmesh->getBlockInfo(blockGID,&blockCoords[0]);
117 creal vxBlock = blockCoords[0];
118 creal vyBlock = blockCoords[1];
119 creal vzBlock = blockCoords[2];
120 creal dvxCell = blockCoords[3];
121 creal dvyCell = blockCoords[4];
122 creal dvzCell = blockCoords[5];
124 creal vx = vxBlock + (
i+0.5)*dvxCell - initV0X;
125 creal vy = vyBlock + (
j+0.5)*dvyCell - initV0Y;
126 creal vz = vzBlock + (
k+0.5)*dvzCell - initV0Z;
144 const auto BX0_l = this->
BX0;
145 const auto BY0_l = this->
BY0;
146 const auto BZ0_l = this->
BZ0;
147 fsgrid.parallel_for([](
int timerId) -> phiprof::Timer {
return phiprof::Timer{timerId}; },
148 phiprof::initializeTimer(
"setProjectBField-loop"), technical,
149 [=](
const fsgrid::Coordinates &coordinates,
const fsgrid::FsStencil& stencil,
cuint sysBoundaryFlag,
cuint sysBoundaryLayer) {
150 const std::array<Real, 3> xyz = coordinates.getPhysicalCoords(stencil.i, stencil.j, stencil.k);
151 auto& cell = perb[stencil.ooo()];
#define ARCH_INNER_BODY(...)
void setBackgroundFieldToZero(FieldSolverGrid &fsgrid, fsgrids::technicalspan technical, fsgrids::bgbspan bgb)
virtual bool initialize()
virtual void getParameters()
virtual bool initialize(void) override
virtual void calcCellParameters(spatial_cell::SpatialCell *cell, creal &t) override
virtual void setProjectBField(fsgrids::perbspan perb, fsgrids::bgbspan bgb, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid) override
static void addParameters(void)
virtual void getParameters(void) override
virtual Realf fillPhaseSpace(spatial_cell::SpatialCell *cell, const uint popID, const uint nRequested) const override
vmesh::VelocityMesh * get_velocity_mesh(const size_t &popID)
vmesh::VelocityBlockContainer * get_velocity_blocks(const size_t &popID)
vmesh::VelocityBlockContainer * dev_get_velocity_blocks(const size_t &popID)
vmesh::VelocityMesh * dev_get_velocity_mesh(const size_t &popID)
ARCH_HOSTDEV Realf * getData()
fsgrid::FsGrid< FS_STENCIL_WIDTH > FieldSolverGrid
ObjectWrapper & getObjectWrapper()
static void parallel_reduce(const uint(&limits)[NDim], Lambda loop_body, T &sum)
std::span< std::array< Real, fsgrids::bfield::N_BFIELD > > perbspan
std::span< technical > technicalspan
std::span< std::array< Real, bgbfield::N_BGB > > bgbspan
ARCH_HOSTDEV Realf MaxwellianPhaseSpaceDensity(creal &vx, creal &vy, creal &vz, creal &T, creal &rho, creal &mass)
std::vector< species::Species > particleSpecies