Created
October 27, 2022 15:13
-
-
Save berceanu/80b4644e96f25ac2119d7ff089238719 to your computer and use it in GitHub Desktop.
PIConGPU ionization param files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
#include "picongpu/simulation_defines.hpp" | |
#include "picongpu/particles/Particles.hpp" | |
#include <pmacc/particles/Identifier.hpp> | |
#include <pmacc/meta/conversion/MakeSeq.hpp> | |
#include <pmacc/identifier/value_identifier.hpp> | |
#include <pmacc/particles/traits/FilterByFlag.hpp> | |
#include <pmacc/meta/String.hpp> | |
namespace picongpu | |
{ | |
/*########################### define particle attributes #####################*/ | |
/** describe attributes of a particle*/ | |
using DefaultParticleAttributes = MakeSeq_t< | |
position<position_pic>, | |
momentum, | |
weighting | |
>; | |
/* attribute sequence for species: ions */ | |
using IonParticleAttributes = MakeSeq_t< | |
DefaultParticleAttributes, | |
boundElectrons | |
>; | |
/*########################### end particle attributes ########################*/ | |
/*########################### define species #################################*/ | |
/*--------------------------- electrons --------------------------------------*/ | |
/* ratio relative to BASE_CHARGE and BASE_MASS */ | |
value_identifier( float_X, MassRatioElectrons, 1.0 ); | |
value_identifier( float_X, ChargeRatioElectrons, 1.0 ); | |
using ParticleFlagsElectrons = MakeSeq_t< | |
particlePusher< UsedParticlePusher >, | |
shape< UsedParticleShape >, | |
interpolation< UsedField2Particle >, | |
current< UsedParticleCurrentSolver >, | |
massRatio< MassRatioElectrons >, | |
chargeRatio< ChargeRatioElectrons > | |
>; | |
/* define species: electrons */ | |
using Electrons = Particles< | |
PMACC_CSTRING( "e" ), | |
ParticleFlagsElectrons, | |
DefaultParticleAttributes | |
>; | |
/*--------------------------- He -------------------------------------------*/ | |
/* ratio relative to BASE_CHARGE and BASE_MASS */ | |
value_identifier( float_X, MassRatioHelium, 1836.152672*4 ); | |
value_identifier( float_X, ChargeRatioHelium, -2.0 ); | |
value_identifier( float_X, DensityRatioHelium, 98.0 / 208.0 ); | |
using ParticleFlagsHelium = MakeSeq_t< | |
shape< UsedParticleShape >, | |
interpolation< UsedField2Particle >, | |
current< UsedParticleCurrentSolver >, | |
massRatio< MassRatioHelium >, | |
chargeRatio< ChargeRatioHelium >, | |
densityRatio< DensityRatioHelium >, | |
atomicNumbers< ionization::atomicNumbers::Helium_t > | |
>; | |
/* define species: ions */ | |
using Helium = Particles< | |
PMACC_CSTRING( "He" ), | |
ParticleFlagsHelium, | |
IonParticleAttributes | |
>; | |
/*--------------------------- N -------------------------------------------*/ | |
/* ratio relative to BASE_CHARGE and BASE_MASS */ | |
value_identifier( float_X, MassRatioNitrogen, 1836.152672*14 ); | |
value_identifier( float_X, ChargeRatioNitrogen, -7.0 ); | |
value_identifier( float_X, DensityRatioNitrogen, 4.0 / 208.0 ); | |
/* ratio relative to BASE_DENSITY (n_e) */ | |
using ParticleFlagsNitrogen = MakeSeq_t< | |
shape< UsedParticleShape >, | |
interpolation< UsedField2Particle >, | |
current< UsedParticleCurrentSolver >, | |
massRatio< MassRatioNitrogen >, | |
chargeRatio< ChargeRatioNitrogen >, | |
densityRatio< DensityRatioNitrogen >, | |
ionizationEnergies< ionization::energies::AU::Nitrogen_t >, | |
effectiveNuclearCharge< ionization::effectiveNuclearCharge::Nitrogen_t >, | |
atomicNumbers< ionization::atomicNumbers::Nitrogen_t >, | |
ionizers< | |
MakeSeq_t< | |
particles::ionization::BSI< Electrons >, | |
particles::ionization::ADKLinPol< Electrons > | |
> | |
> | |
>; | |
/* define species: ions */ | |
using Nitrogen = Particles< | |
PMACC_CSTRING( "N" ), | |
ParticleFlagsNitrogen, | |
IonParticleAttributes | |
>; | |
/*########################### end species ####################################*/ | |
using VectorAllSpecies = MakeSeq_t< | |
Electrons, | |
Helium, | |
Nitrogen | |
>; | |
} //namespace picongpu |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
#include "picongpu/particles/InitFunctors.hpp" | |
namespace picongpu | |
{ | |
namespace particles | |
{ | |
/** InitPipeline define in which order species are initialized | |
* | |
* the functors are called in order (from first to last functor) | |
*/ | |
using InitPipeline = bmpl::vector< | |
CreateDensity< | |
densityProfiles::Homogenous, | |
startPosition::Random2ppc, | |
Helium | |
>, | |
ManipulateDerive< | |
manipulators::binary::DensityWeighting, | |
Helium, | |
Nitrogen | |
>, | |
Manipulate< | |
manipulators::ThirdIonized, | |
Nitrogen | |
>, | |
Derive< | |
Helium, | |
Electrons | |
>, | |
ManipulateDerive< | |
manipulators::binary::UnboundElectronsTimesWeighting, | |
Nitrogen, | |
Electrons | |
> | |
>; | |
} // namespace particles | |
} // namespace picongpu |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment