8 #ifndef WARPX_TWO_PRODUCT_FUSION_INITIALIZE_MOMENTUM_H
9 #define WARPX_TWO_PRODUCT_FUSION_INITIALIZE_MOMENTUM_H
55 void TwoProductFusionInitializeMomentum (
56 const SoaData_type& soa1_in,
const SoaData_type& soa2_in,
57 SoaData_type& soa1_out, SoaData_type& soa2_out,
60 const amrex::ParticleReal& m1_in,
const amrex::ParticleReal& m2_in,
61 const amrex::ParticleReal& m1_out,
const amrex::ParticleReal& m2_out,
62 const amrex::ParticleReal& E_fusion,
65 using namespace amrex::literals;
67 amrex::ParticleReal ux1_out = 0.0_prt, uy1_out = 0.0_prt, uz1_out = 0.0_prt;
68 amrex::ParticleReal ux2_out = 0.0_prt, uy2_out = 0.0_prt, uz2_out = 0.0_prt;
70 TwoProductFusionComputeProductMomenta(
73 soa1_in.m_rdata[
PIdx::uz][idx1_in], m1_in,
76 soa2_in.m_rdata[
PIdx::uz][idx2_in], m2_in,
77 ux1_out, uy1_out, uz1_out, m1_out,
78 ux2_out, uy2_out, uz2_out, m2_out,
84 soa1_out.m_rdata[
PIdx::ux][idx1_out_start] = ux1_out;
85 soa1_out.m_rdata[
PIdx::uy][idx1_out_start] = uy1_out;
86 soa1_out.m_rdata[
PIdx::uz][idx1_out_start] = uz1_out;
87 soa1_out.m_rdata[
PIdx::ux][idx1_out_start + 1] = ux1_out;
88 soa1_out.m_rdata[
PIdx::uy][idx1_out_start + 1] = uy1_out;
89 soa1_out.m_rdata[
PIdx::uz][idx1_out_start + 1] = uz1_out;
90 soa2_out.m_rdata[
PIdx::ux][idx2_out_start] = ux2_out;
91 soa2_out.m_rdata[
PIdx::uy][idx2_out_start] = uy2_out;
92 soa2_out.m_rdata[
PIdx::uz][idx2_out_start] = uz2_out;
93 soa2_out.m_rdata[
PIdx::ux][idx2_out_start + 1] = ux2_out;
94 soa2_out.m_rdata[
PIdx::uy][idx2_out_start + 1] = uy2_out;
95 soa2_out.m_rdata[
PIdx::uz][idx2_out_start + 1] = uz2_out;
#define AMREX_GPU_HOST_DEVICE
ParticleTile< ParticleType, NArrayReal, NArrayInt, Allocator > ParticleTileType
T_ParticleType ParticleType
typename WarpXParticleContainer::ParticleTileType ParticleTileType
Definition: ParticleUtils.cpp:32
typename ParticleTileType::ParticleTileDataType ParticleTileDataType
Definition: ParticleUtils.cpp:33
typename ParticleBins::index_type index_type
Definition: ParticleUtils.cpp:35
DenseBins< ParticleTileDataType > ParticleBins
Definition: ParticleUtils.cpp:34
typename WarpXParticleContainer::ParticleType ParticleType
Definition: ParticleUtils.cpp:31
@ uz
Definition: NamedComponentParticleContainer.H:34
@ uy
Definition: NamedComponentParticleContainer.H:34
@ ux
Definition: NamedComponentParticleContainer.H:34
ParticleTileData< StorageParticleType, NArrayReal, NArrayInt > ParticleTileDataType