Skip to content

Commit

Permalink
reviewer comments
Browse files Browse the repository at this point in the history
ci: picongpu
  • Loading branch information
BrianMarre committed Dec 6, 2024
1 parent a703665 commit 6a8314b
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 94 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,12 @@ namespace picongpu::particles::atomicPhysics::kernel
return;

using FieldEnergyCache = typename T_FieldEnergyUseCacheBox::ValueType;
particles::atomicPhysics::localHelperFields::RejectionProbabilityCache_Cell<FieldEnergyCache::numberCells>&
rejectionProbabilityCacheCell
= rejectionProbabilityCacheCellBox(superCellFieldIdx);
using RejectionProbabilityCache
= localHelperFields::RejectionProbabilityCache_Cell<FieldEnergyCache::numberCells>;
RejectionProbabilityCache& rejectionProbabilityCache = rejectionProbabilityCacheCellBox(superCellFieldIdx);

FieldEnergyCache const& eFieldEnergyUseCache = fieldEnergyUseCacheBox(superCellFieldIdx);

VectorIdx const superCellCellOffset = superCellIdx * picongpu::SuperCellSize::toRT();
bool sharedResourcesOverSubscribed = false;

Expand All @@ -98,15 +99,15 @@ namespace picongpu::particles::atomicPhysics::kernel
&superCellCellOffset,
&eFieldBox,
&eFieldEnergyUseCache,
&rejectionProbabilityCacheCell,
&rejectionProbabilityCache,
&sharedResourcesOverSubscribed](uint32_t const linearCellIndex)
{
if(CalculateRejectionProbability::ofCell(
linearCellIndex,
superCellCellOffset,
eFieldBox,
eFieldEnergyUseCache,
rejectionProbabilityCacheCell))
rejectionProbabilityCache))
sharedResourcesOverSubscribed = true;
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,36 +56,36 @@ namespace picongpu::particles::atomicPhysics::stage
pmacc::AreaMapping<CORE + BORDER, MappingDesc> mapper(mappingDesc);
pmacc::DataConnector& dc = pmacc::Environment<>::get().DataConnector();

auto& timeRemainingField = *dc.get<
auto timeRemainingField = dc.get<
picongpu::particles::atomicPhysics::localHelperFields::TimeRemainingField<picongpu::MappingDesc>>(
"TimeRemainingField");

auto& sharedResourcesOverSubscribedField
= *dc.get<picongpu::particles::atomicPhysics::localHelperFields::SharedResourcesOverSubscribedField<
auto sharedResourcesOverSubscribedField
= dc.get<picongpu::particles::atomicPhysics::localHelperFields::SharedResourcesOverSubscribedField<
picongpu::MappingDesc>>("SharedResourcesOverSubscribedField");

auto& rejectionProbabilityCacheField_Cell
= *dc.get<picongpu::particles::atomicPhysics::localHelperFields::RejectionProbabilityCacheField_Cell<
auto rejectionProbabilityCacheField_Cell
= dc.get<picongpu::particles::atomicPhysics::localHelperFields::RejectionProbabilityCacheField_Cell<
picongpu::MappingDesc>>("RejectionProbabilityCacheField_Cell");

auto& eField = *dc.get<FieldE>(FieldE::getName());
auto eField = dc.get<FieldE>(FieldE::getName());

using FieldEnergyUseCacheField
= picongpu::particles::atomicPhysics::localHelperFields::FieldEnergyUseCacheField<
picongpu::MappingDesc>;
auto& fieldEnergyUseCacheField = *dc.get<FieldEnergyUseCacheField>("FieldEnergyUseCacheField");
auto fieldEnergyUseCacheField = dc.get<FieldEnergyUseCacheField>("FieldEnergyUseCacheField");

// macro for call of kernel for every superCell, see pull request #4321
PMACC_LOCKSTEP_KERNEL(
picongpu::particles::atomicPhysics::kernel::CheckForFieldEnergyOverSubscriptionKernel<
T_numberAtomicPhysicsIonSpecies>())
.template config<FieldEnergyUseCacheField::ValueType::numberCells>(mapper.getGridDim())(
mapper,
timeRemainingField.getDeviceDataBox(),
timeRemainingField->getDeviceDataBox(),
eField.getDeviceDataBox(),
fieldEnergyUseCacheField.getDeviceDataBox(),
sharedResourcesOverSubscribedField.getDeviceDataBox(),
rejectionProbabilityCacheField_Cell.getDeviceDataBox());
fieldEnergyUseCacheField->getDeviceDataBox(),
sharedResourcesOverSubscribedField->getDeviceDataBox(),
rejectionProbabilityCacheField_Cell->getDeviceDataBox());

/// @todo implement photon histogram, Brian Marre, 2023
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,14 @@ namespace picongpu::particles::atomicPhysics::stage
pmacc::AreaMapping<CORE + BORDER, MappingDesc> mapper(mappingDesc);
pmacc::DataConnector& dc = pmacc::Environment<>::get().DataConnector();

auto& timeRemainingField
= *dc.get<particles::atomicPhysics::localHelperFields::TimeRemainingField<picongpu::MappingDesc>>(
auto timeRemainingField
= dc.get<particles::atomicPhysics::localHelperFields::TimeRemainingField<picongpu::MappingDesc>>(
"TimeRemainingField");
auto& foundUnboundIonField = *dc.get<
particles::atomicPhysics::localHelperFields::FoundUnboundIonField<picongpu::MappingDesc>>(
"FoundUnboundIonField");
auto& eField = *dc.get<FieldE>(FieldE::getName());
auto& ions = *dc.get<IonSpecies>(IonSpecies::FrameType::getName());
auto foundUnboundIonField
= dc.get<particles::atomicPhysics::localHelperFields::FoundUnboundIonField<picongpu::MappingDesc>>(
"FoundUnboundIonField");
auto eField = dc.get<FieldE>(FieldE::getName());
auto ions = dc.get<IonSpecies>(IonSpecies::FrameType::getName());
RngFactoryFloat rngFactoryFloat = RngFactoryFloat{currentStep};

constexpr uint32_t numberAtomicStatesOfSpecies
Expand All @@ -99,23 +99,23 @@ namespace picongpu::particles::atomicPhysics::stage
AtomicDataType::ADKLaserPolarization>;

/// @todo implement iteration to capture field strength decrease, Brian Marre, 2024
auto& atomicData = *dc.get<AtomicDataType>(IonSpecies::FrameType::getName() + "_atomicData");
auto atomicData = dc.get<AtomicDataType>(IonSpecies::FrameType::getName() + "_atomicData");
IPDModel::template callKernelWithIPDInput<
ChooseInstantNonReversibleTransition,
IonSpecies::FrameType::frameSize>(
dc,
mapper,
rngFactoryFloat,
atomicData.template getChargeStateDataDataBox<false>(),
atomicData.template getAtomicStateDataDataBox<false>(),
atomicData.template getBoundFreeStartIndexBlockDataBox<false>(),
atomicData.template getBoundFreeNumberTransitionsDataBox<false>(),
atomicData->template getChargeStateDataDataBox<false>(),
atomicData->template getAtomicStateDataDataBox<false>(),
atomicData->template getBoundFreeStartIndexBlockDataBox<false>(),
atomicData->template getBoundFreeNumberTransitionsDataBox<false>(),
atomicData
.template getBoundFreeTransitionDataBox<false, s_enums::TransitionOrdering::byLowerState>(),
timeRemainingField.getDeviceDataBox(),
foundUnboundIonField.getDeviceDataBox(),
eField.getDeviceDataBox(),
ions.getDeviceParticlesBox());
->template getBoundFreeTransitionDataBox<false, s_enums::TransitionOrdering::byLowerState>(),
timeRemainingField->getDeviceDataBox(),
foundUnboundIonField->getDeviceDataBox(),
eField->getDeviceDataBox(),
ions->getDeviceParticlesBox());
}
}
};
Expand Down
81 changes: 41 additions & 40 deletions include/picongpu/particles/atomicPhysics/stage/FillRateCache.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,21 @@ namespace picongpu::particles::atomicPhysics::stage
pmacc::AreaMapping<CORE + BORDER, MappingDesc> mapper(mappingDesc);
pmacc::DataConnector& dc = pmacc::Environment<>::get().DataConnector();

auto& timeRemainingField = *dc.get<
auto timeRemainingField = dc.get<
picongpu::particles::atomicPhysics::localHelperFields::TimeRemainingField<picongpu::MappingDesc>>(
"TimeRemainingField");

auto& rateCacheField = *dc.get<picongpu::particles::atomicPhysics::localHelperFields::
RateCacheField<picongpu::MappingDesc, IonSpecies>>(
auto rateCacheField = dc.get<picongpu::particles::atomicPhysics::localHelperFields::
RateCacheField<picongpu::MappingDesc, IonSpecies>>(
IonSpecies::FrameType::getName() + "_rateCacheField");

auto& electronHistogramField
= *dc.get<picongpu::particles::atomicPhysics::electronDistribution::
LocalHistogramField<picongpu::atomicPhysics::ElectronHistogram, picongpu::MappingDesc>>(
auto electronHistogramField
= dc.get<picongpu::particles::atomicPhysics::electronDistribution::
LocalHistogramField<picongpu::atomicPhysics::ElectronHistogram, picongpu::MappingDesc>>(
"Electron_HistogramField");

using AtomicDataType = typename picongpu::traits::GetAtomicDataType<IonSpecies>::type;
auto& atomicData = *dc.get<AtomicDataType>(IonSpecies::FrameType::getName() + "_atomicData");
auto atomicData = dc.get<AtomicDataType>(IonSpecies::FrameType::getName() + "_atomicData");

constexpr uint8_t n_max = AtomicDataType::ConfigNumber::numberLevels;
constexpr uint32_t numberAtomicStatesOfSpecies
Expand All @@ -113,13 +113,13 @@ namespace picongpu::particles::atomicPhysics::stage
PMACC_LOCKSTEP_KERNEL(FillRateCacheUpWardBoundBound())
.template config<IonSpecies::FrameType::frameSize>(mapper.getGridDim())(
mapper,
timeRemainingField.getDeviceDataBox(),
rateCacheField.getDeviceDataBox(),
electronHistogramField.getDeviceDataBox(),
atomicData.template getAtomicStateDataDataBox<false>(),
atomicData.template getBoundBoundStartIndexBlockDataBox<false>(),
atomicData.template getBoundBoundNumberTransitionsDataBox<false>(),
atomicData.template getBoundBoundTransitionDataBox<
timeRemainingField->getDeviceDataBox(),
rateCacheField->getDeviceDataBox(),
electronHistogramField->getDeviceDataBox(),
atomicData->template getAtomicStateDataDataBox<false>(),
atomicData->template getBoundBoundStartIndexBlockDataBox<false>(),
atomicData->template getBoundBoundNumberTransitionsDataBox<false>(),
atomicData->template getBoundBoundTransitionDataBox<
false,
enums::TransitionOrdering::byLowerState>());
}
Expand All @@ -139,13 +139,13 @@ namespace picongpu::particles::atomicPhysics::stage
PMACC_LOCKSTEP_KERNEL(FillRateCacheDownWardBoundBound())
.template config<IonSpecies::FrameType::frameSize>(mapper.getGridDim())(
mapper,
timeRemainingField.getDeviceDataBox(),
rateCacheField.getDeviceDataBox(),
electronHistogramField.getDeviceDataBox(),
atomicData.template getAtomicStateDataDataBox<false>(),
atomicData.template getBoundBoundStartIndexBlockDataBox<false>(),
atomicData.template getBoundBoundNumberTransitionsDataBox<false>(),
atomicData.template getBoundBoundTransitionDataBox<
timeRemainingField->getDeviceDataBox(),
rateCacheField->getDeviceDataBox(),
electronHistogramField->getDeviceDataBox(),
atomicData->template getAtomicStateDataDataBox<false>(),
atomicData->template getBoundBoundStartIndexBlockDataBox<false>(),
atomicData->template getBoundBoundNumberTransitionsDataBox<false>(),
atomicData->template getBoundBoundTransitionDataBox<
false,
enums::TransitionOrdering::byUpperState>());
}
Expand All @@ -165,20 +165,21 @@ namespace picongpu::particles::atomicPhysics::stage
AtomicDataType::switchFieldIonization,
enums::TransitionOrdering::byLowerState>;

IPDModel::
template callKernelWithIPDInput<FillRateCacheUpWardBoundFree, IonSpecies::FrameType::frameSize>(
dc,
mapper,
timeRemainingField.getDeviceDataBox(),
rateCacheField.getDeviceDataBox(),
electronHistogramField.getDeviceDataBox(),
eField.getDeviceDataBox(),
atomicData.template getChargeStateDataDataBox<false>(),
atomicData.template getAtomicStateDataDataBox<false>(),
atomicData.template getBoundFreeStartIndexBlockDataBox<false>(),
atomicData.template getBoundFreeNumberTransitionsDataBox<false>(),
atomicData
.template getBoundFreeTransitionDataBox<false, enums::TransitionOrdering::byLowerState>());
IPDModel::template callKernelWithIPDInput<
FillRateCacheUpWardBoundFree,
IonSpecies::FrameType::frameSize>(
dc,
mapper,
timeRemainingField->getDeviceDataBox(),
rateCacheField->getDeviceDataBox(),
electronHistogramField->getDeviceDataBox(),
eField.getDeviceDataBox(),
atomicData->template getChargeStateDataDataBox<false>(),
atomicData->template getAtomicStateDataDataBox<false>(),
atomicData->template getBoundFreeStartIndexBlockDataBox<false>(),
atomicData->template getBoundFreeNumberTransitionsDataBox<false>(),
atomicData
->template getBoundFreeTransitionDataBox<false, enums::TransitionOrdering::byLowerState>());
}

// downward autonomous transition rates
Expand All @@ -192,11 +193,11 @@ namespace picongpu::particles::atomicPhysics::stage
PMACC_LOCKSTEP_KERNEL(FillRateCacheAutonomous())
.template config<IonSpecies::FrameType::frameSize>(mapper.getGridDim())(
mapper,
timeRemainingField.getDeviceDataBox(),
rateCacheField.getDeviceDataBox(),
atomicData.template getAutonomousStartIndexBlockDataBox<false>(),
atomicData.template getAutonomousNumberTransitionsDataBox<false>(),
atomicData.template getAutonomousTransitionDataBox<
timeRemainingField->getDeviceDataBox(),
rateCacheField->getDeviceDataBox(),
atomicData->template getAutonomousStartIndexBlockDataBox<false>(),
atomicData->template getAutonomousNumberTransitionsDataBox<false>(),
atomicData->template getAutonomousTransitionDataBox<
false,
enums::TransitionOrdering::byUpperState>());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,15 @@ namespace picongpu::particles::atomicPhysics::stage
pmacc::DataConnector& dc = pmacc::Environment<>::get().DataConnector();

using AtomicDataType = typename picongpu::traits::GetAtomicDataType<IonSpecies>::type;
auto& atomicData = *dc.get<AtomicDataType>(IonSpecies::FrameType::getName() + "_atomicData");
auto atomicData = dc.get<AtomicDataType>(IonSpecies::FrameType::getName() + "_atomicData");

auto& timeRemainingField = *dc.get<
auto timeRemainingField = dc.get<
picongpu::particles::atomicPhysics::localHelperFields::TimeRemainingField<picongpu::MappingDesc>>(
"TimeRemainingField");
auto& fieldEnergyUseCacheField = *dc.get<
particles::atomicPhysics::localHelperFields::FieldEnergyUseCacheField<picongpu::MappingDesc>>(
"FieldEnergyUseCacheField");
auto& ions = *dc.get<IonSpecies>(IonSpecies::FrameType::getName());
auto fieldEnergyUseCacheField
= dc.get<particles::atomicPhysics::localHelperFields::FieldEnergyUseCacheField<picongpu::MappingDesc>>(
"FieldEnergyUseCacheField");
auto ions = dc.get<IonSpecies>(IonSpecies::FrameType::getName());

using IPDModel = picongpu::atomicPhysics::IPDModel;

Expand All @@ -79,14 +79,14 @@ namespace picongpu::particles::atomicPhysics::stage
IonSpecies::FrameType::frameSize>(
dc,
mapper,
atomicData.template getChargeStateDataDataBox<false>(),
atomicData.template getAtomicStateDataDataBox<false>(),
atomicData.template getBoundFreeTransitionDataBox<
atomicData->template getChargeStateDataDataBox<false>(),
atomicData->template getAtomicStateDataDataBox<false>(),
atomicData->template getBoundFreeTransitionDataBox<
false,
picongpu::particles::atomicPhysics::enums::TransitionOrdering::byLowerState>(),
timeRemainingField.getDeviceDataBox(),
fieldEnergyUseCacheField.getDeviceDataBox(),
ions.getDeviceParticlesBox());
timeRemainingField->getDeviceDataBox(),
fieldEnergyUseCacheField->getDeviceDataBox(),
ions->getDeviceParticlesBox());
}
};

Expand Down
Loading

0 comments on commit 6a8314b

Please sign in to comment.