46 RP::add(
"Firehose.Bx",
"Magnetic field x component (T)", 0.0);
47 RP::add(
"Firehose.By",
"Magnetic field y component (T)", 0.0);
48 RP::add(
"Firehose.Bz",
"Magnetic field z component (T)", 0.0);
49 RP::add(
"Firehose.lambda",
"Initial perturbation wavelength (m)", 0.0);
50 RP::add(
"Firehose.amp",
"Initial perturbation amplitude (m)", 0.0);
55 RP::add(pop +
"_Firehose.rho1",
"Number density, first peak (m^-3)", 0.0);
56 RP::add(pop +
"_Firehose.rho2",
"Number density, second peak (m^-3)", 0.0);
57 RP::add(pop +
"_Firehose.Tx1",
"Temperature x, first peak (K)", 0.0);
58 RP::add(pop +
"_Firehose.Tx2",
"Temperature x, second peak (K)", 0.0);
59 RP::add(pop +
"_Firehose.Ty1",
"Temperature y, first peak (K)", 0.0);
60 RP::add(pop +
"_Firehose.Ty2",
"Temperature y, second peak (K)", 0.0);
61 RP::add(pop +
"_Firehose.Tz1",
"Temperature z, first peak (K)", 0.0);
62 RP::add(pop +
"_Firehose.Tz2",
"Temperature z, second peak (K)", 0.0);
63 RP::add(pop +
"_Firehose.Vx1",
"Bulk velocity x component, first peak (m/s)", 0.0);
64 RP::add(pop +
"_Firehose.Vx2",
"Bulk velocity x component, second peak (m/s)", 0.0);
65 RP::add(pop +
"_Firehose.Vy1",
"Bulk velocity y component, first peak (m/s)", 0.0);
66 RP::add(pop +
"_Firehose.Vy2",
"Bulk velocity y component, second peak (m/s)", 0.0);
67 RP::add(pop +
"_Firehose.Vz1",
"Bulk velocity z component, first peak (m/s)", 0.0);
68 RP::add(pop +
"_Firehose.Vz2",
"Bulk velocity z component, second peak (m/s)", 0.0);
75 RP::get(
"Firehose.Bx", this->
Bx);
76 RP::get(
"Firehose.By", this->
By);
77 RP::get(
"Firehose.Bz", this->
Bz);
78 RP::get(
"Firehose.lambda", this->
lambda);
79 RP::get(
"Firehose.amp", this->
amp);
85 RP::get(pop +
"_Firehose.rho1", sP.
rho[0]);
86 RP::get(pop +
"_Firehose.rho2", sP.
rho[1]);
87 RP::get(pop +
"_Firehose.Tx1", sP.
Tx[0]);
88 RP::get(pop +
"_Firehose.Tx2", sP.
Tx[1]);
89 RP::get(pop +
"_Firehose.Ty1", sP.
Ty[0]);
90 RP::get(pop +
"_Firehose.Ty2", sP.
Ty[1]);
91 RP::get(pop +
"_Firehose.Tz1", sP.
Tz[0]);
92 RP::get(pop +
"_Firehose.Tz2", sP.
Tz[1]);
93 RP::get(pop +
"_Firehose.Vx1", sP.
Vx[0]);
94 RP::get(pop +
"_Firehose.Vx2", sP.
Vx[1]);
95 RP::get(pop +
"_Firehose.Vy1", sP.
Vy[0]);
96 RP::get(pop +
"_Firehose.Vy2", sP.
Vy[1]);
97 RP::get(pop +
"_Firehose.Vz1", sP.
Vz[0]);
98 RP::get(pop +
"_Firehose.Vz2", sP.
Vz[1]);
105 return top * (1.0 + this->
amp*cos(2.0*M_PI*x/this->
lambda));
110 const uint nRequested
144 vmesh->getBlockInfo(blockGID,&blockCoords[0]);
145 creal vxBlock = blockCoords[0];
146 creal vyBlock = blockCoords[1];
147 creal vzBlock = blockCoords[2];
148 creal dvxCell = blockCoords[3];
149 creal dvyCell = blockCoords[4];
150 creal dvzCell = blockCoords[5];
152 creal vx = vxBlock + (
i+0.5)*dvxCell - initV0X;
153 creal vy = vyBlock + (
j+0.5)*dvyCell - initV0Y;
154 creal vz = vzBlock + (
k+0.5)*dvzCell - initV0Z;
#define ARCH_INNER_BODY(...)
void setBackgroundField(const FieldFunction &bgFunction, fsgrids::bgbspan bgb, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid, bool append)
void initialize(const double Bx, const double By, const double Bz)
virtual void setProjectBField(fsgrids::perbspan perb, fsgrids::bgbspan bgb, fsgrids::technicalspan technical, FieldSolverGrid &fsgrid) override
virtual Realf fillPhaseSpace(spatial_cell::SpatialCell *cell, const uint popID, const uint nRequested) const override
std::vector< FirehoseSpeciesParameters > speciesParams
virtual bool initialize(void) override
virtual void getParameters(void) override
static void addParameters(void)
Real profile(creal top, creal bottom, creal x) const
virtual void calcCellParameters(spatial_cell::SpatialCell *cell, creal &t) override
virtual bool initialize()
virtual void getParameters()
vmesh::VelocityMesh * get_velocity_mesh(const size_t &popID)
vmesh::VelocityBlockContainer * get_velocity_blocks(const size_t &popID)
std::array< Real, CellParams::N_SPATIAL_CELL_PARAMS > parameters
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 TriMaxwellianPhaseSpaceDensity(creal &vx, creal &vy, creal &vz, creal &Tx, creal &Ty, creal &Tz, creal &rho, creal &mass)
std::vector< species::Species > particleSpecies