7 #ifndef ABLASTR_PARTICLE_MOMENTS_H
8 #define ABLASTR_PARTICLE_MOMENTS_H
30 template<
typename T_PC >
33 amrex::ParticleReal, amrex::ParticleReal,
34 amrex::ParticleReal, amrex::ParticleReal,
35 amrex::ParticleReal, amrex::ParticleReal>
38 using ConstParticleTileDataType =
typename T_PC::ParticleTileType::ConstParticleTileDataType;
46 amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal>
51 const amrex::ParticleReal
x = ptd.rdata(0)[
i];
52 const amrex::ParticleReal y = ptd.rdata(1)[
i];
53 const amrex::ParticleReal z = ptd.rdata(2)[
i];
61 std::vector< amrex::ParticleReal > xyz_min = {
67 std::vector< amrex::ParticleReal > xyz_max = {
74 return {xyz_min[0], xyz_min[1], xyz_min[2], xyz_max[0], xyz_max[1], xyz_max[2]};
85 template<
typename T_PC,
int T_RealSoAWeight >
88 amrex::ParticleReal, amrex::ParticleReal,
89 amrex::ParticleReal, amrex::ParticleReal,
90 amrex::ParticleReal, amrex::ParticleReal>
94 using ConstParticleTileDataType =
typename T_PC::ParticleTileType::ConstParticleTileDataType;
102 amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal,
103 amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal,
110 const amrex::ParticleReal
x = ptd.rdata(0)[
i];
111 const amrex::ParticleReal y = ptd.rdata(1)[
i];
112 const amrex::ParticleReal z = ptd.rdata(2)[
i];
114 const amrex::ParticleReal
w = ptd.rdata(T_RealSoAWeight)[
i];
122 std::vector<amrex::ParticleReal> data_vector = {
133 amrex::ParticleReal w_sum = data_vector[6];
134 amrex::ParticleReal x_mean = data_vector[0] / w_sum;
135 amrex::ParticleReal x_std = data_vector[1] / w_sum- x_mean * x_mean;
136 amrex::ParticleReal y_mean = data_vector[2] / w_sum;
137 amrex::ParticleReal y_std = data_vector[3] / w_sum- x_mean * x_mean;
138 amrex::ParticleReal z_mean = data_vector[4] / w_sum;
139 amrex::ParticleReal z_std = data_vector[5] / w_sum- x_mean * x_mean;
141 return {x_mean, x_std, y_mean, y_std, z_mean, z_std};
static std::tuple< amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal > MinAndMaxPositions(T_PC const &pc)
Definition: ParticleMoments.H:36
static std::tuple< amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal, amrex::ParticleReal > MeanAndStdPositions(T_PC const &pc)
Definition: ParticleMoments.H:91
Definition: average.cpp:24
void ReduceRealMin(Vector< std::reference_wrapper< Real > > const &)
void ReduceRealSum(Vector< std::reference_wrapper< Real > > const &)
void ReduceRealMax(Vector< std::reference_wrapper< Real > > const &)
constexpr AMREX_GPU_HOST_DEVICE GpuTuple< detail::tuple_decay_t< Ts >... > makeTuple(Ts &&... args)
RD::Type ParticleReduce(PC const &pc, F &&f, ReduceOps &reduce_ops)
i
Definition: check_interp_points_and_weights.py:174
tuple w
Definition: yt3d_mpi.py:46