-
Notifications
You must be signed in to change notification settings - Fork 218
Configure ionization in an example
You are here: Home > Developer Documentation > Ionization in PIConGPU > Configure ionization in an example
(See Configure an example for basic steps on setting up your simulation scenario)
struct Nitrogen
{
static constexpr float_X numberOfProtons = 7.0;
static constexpr float_X numberOfNeutrons = 7.0;
};
/* mass and charge ratios with respect to electrons */
value_identifier(float_X, MassRatioNitrogen, 25514.325);
value_identifier(float_X, ChargeRatioNitrogen, -7.0);
e.g. for your nitrogen atoms
typedef bmpl::vector<
particlePusher<UsedParticlePusher>,
shape<UsedParticleShape>,
interpolation<UsedField2Particle>,
current<UsedParticleCurrentSolver>,
massRatio<MassRatioNitrogen>, /* <-- from step 1 */
chargeRatio<ChargeRatioNitrogen>, /* <-- from step 1 */
#if(PARAM_IONIZATION == 1)
ionizer<particles::ionization::ADK<N_Electrons> >, /* <-- choose ionization model and electron species */
ionizationEnergies<AU::IONIZATION_ENERGY_NITROGEN_t>, /* <-- we'll cover that in step 3 */
#endif
atomicNumbers<Nitrogen> /* <-- from step 1 */
> ParticleFlagsNitrogen;
/* define PIC species: nitrogen */
typedef Particles<
ParticleDescription<
bmpl::string<'n'>,
SuperCellSize,
AttributeSeqIons,
ParticleFlagsNitrogen
>
> N_Ions;
Remember that you can define multiple electron species and associate them with your different ion species to track the ionisation processes separately!
/*enable (1) or disable (0) electrons*/
#define ENABLE_ELECTRONS 1 /* Here,... */
/*enable (1) or disable (0) ions*/
#ifndef PARAM_IONS
#define PARAM_IONS 1 /* ... here,... */
#endif
#define ENABLE_IONS PARAM_IONS
/*enable (1) or disable (0) ionization*/
#ifndef PARAM_IONIZATION
#define PARAM_IONIZATION 1 /* ... and here! */
#endif
/* ionization energy for nitrogen atomic units */
PMACC_CONST_VECTOR(float_X,7,IONIZATION_ENERGY_NITROGEN, /* data type, atomic number, name of the vector */
14.53413 * UNITCONV_eV_to_AU,
29.60125 * UNITCONV_eV_to_AU,
47.4453 * UNITCONV_eV_to_AU,
77.4735 * UNITCONV_eV_to_AU,
97.89013 * UNITCONV_eV_to_AU,
552.06731 * UNITCONV_eV_to_AU,
667.04609 * UNITCONV_eV_to_AU /* don't forget to convert each entry to atomic units */
);
You can refer to http://physics.nist.gov/PhysRefData/ASD/ionEnergy.html for the energy values.
typedef mpl::vector<
CreateGas<gasProfiles::Gaussian, startPosition::Random, N_Ions>, /* create atom distribution */
Manipulate<manipulators::SetBoundElectrons, N_Ions> /* make your atoms initially neutral */
> InitPipeline;
All wiki entries describe the dev branch. Features may be different in the current master branch.
Before you start please read our README!
PIConGPU is a scientific project. If you present and/or publish scientific results that used PIConGPU, you should set a reference to show your support. Our according up-to-date publication at the time of your publication should be inquired from:
The documentation in this wiki is still not complete and we need your help keeping it up to date. Feel free to help improving this wiki!