Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ionization model ADK #922

Merged
merged 6 commits into from
Aug 28, 2015

Conversation

n01r
Copy link
Member

@n01r n01r commented Jun 11, 2015

Added the first tunneling ionization model to PIConGPU.
It should be used on hydrogen-like atoms and ions and requires a random generator because it uses a Monte-Carlo method.

Do not merge before #874

Feel free to also point out ideas for optimization and better handling of the random numbers.

Only the last commits after f030d45 ( "Small fixes pointed out by @PrometheusPi" ) are new while the rest before is from #874.

Update:

@n01r n01r changed the title Ionization model ADK Add ionization model ADK Jun 11, 2015
@PrometheusPi PrometheusPi added this to the Open Beta milestone Jun 11, 2015
@n01r
Copy link
Member Author

n01r commented Jun 11, 2015

Again, keep in mind: you only need to check the files commit-wise from the last commits. Otherwise you will see the changes from #874, too.

@ax3l ax3l self-assigned this Jun 17, 2015
@ax3l
Copy link
Member

ax3l commented Jun 18, 2015

@n01r pls rebase against dev :)

Do you add the "add list of ionization methods (instead of single selection) applied to a species" before or after this pull?

@n01r
Copy link
Member Author

n01r commented Jun 18, 2015

I would say: after. Makes more sense if we already have two models that I can test and see if I can avoid double counting and so on. It also makes more sense chronologically:
Add ionization model 1, see that it is unphysical.
Add ionization model 2, see that it becomes unphysical at high field strengths,
Get the idea that combining the two might make it a bit less wrong.

ADK is practically ready anyway except from what you guys might have to remark about it.
I'll open an issue for the consecutive-ionization-model implementation.

@ax3l
Copy link
Member

ax3l commented Jun 18, 2015

sounds reasonable, all right.

@n01r n01r force-pushed the topic-ionizationModelADK branch from 74a34b7 to c97949b Compare June 18, 2015 13:01
@n01r
Copy link
Member Author

n01r commented Jun 18, 2015

@ax3l
Did the rebase just now ... although I can still see the old commits - strange.
Ah I'll just do a git reset --soft HEAD~<number of commits> then

@ax3l
Copy link
Member

ax3l commented Jun 18, 2015

during git rebase -i dev, just remove the lines of the old (now duplicated) commits as they show up in your editor: in that case they are really dropped from the branch's commit history.

/* atomic unit for energy:
* 1 Rydberg = 27.21 eV --> converted to Joule
*/
const float_X ATOMIC_UNIT_ENERGY = 4.36e-18;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the values here must be float_64 if in SI and they should be normalized in a ionizationEnergies.unitless file before being used in the code.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah - alright, I was doing that in the AlgorithmADK.hpp
but sure it would be clever to do the normalization there

@n01r n01r force-pushed the topic-ionizationModelADK branch 3 times, most recently from 8eb3fc1 to f9b05ad Compare June 22, 2015 13:58
@@ -141,7 +141,7 @@ typedef bmpl::vector<
interpolation<UsedField2Particle>,
current<UsedParticleCurrentSolver>,
#if(PARAM_IONIZATION == 1)
ionizer<particles::ionization::BSI<PIC_Electrons> >,
ionizer<particles::ionization::ADK<PIC_Electrons> >,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you really want to use ADK by default if it still a bit slow?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry, forgot that - will change it back

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

np, thx :)

IonizationAlgorithm ionizeAlgo;
ionizeAlgo(
bField, eField,
particle, (float_X)RandomGen()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please use static_cast<float_X> or precisionCast<float_X>

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't need to - I overlooked that the operator() returns float_X already

@n01r
Copy link
Member Author

n01r commented Aug 6, 2015

Seems like I have to do another rebase after all the changes in dev and some squashes before final merging after I fix the issues.

@ax3l
Copy link
Member

ax3l commented Aug 10, 2015

💃 rebase me, yeah yeah yeah 🎶

@n01r n01r force-pushed the topic-ionizationModelADK branch 2 times, most recently from 97c627a to 01c3479 Compare August 13, 2015 12:47
cachedE,
fieldEBlock
);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please call __syncthreads(); heare to be sure that the shared memory operation before are finished.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added below

* Omitting this results in the different GPUs receiving the same set of seeds
* periodically where the period is the max. number of MPI ranks.
*/
seed=seed<<16;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After #1046 is merged please remove this workaround.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@n01r now merged, pls rebase and remove the work-around

Marco Garten added 6 commits August 27, 2015 17:40
Random number generation has been included.
A simplified version of the Ammosov-Delone-Krainov tunneling ionization
model has been added. It is valid for hydrogen and hydrogenlike atoms.
- `ionization.hpp`: Add documentation to clarify the domain coordinates
- `ionizationMehtods.hpp`: Use the correct cell index inside the local domain
                           to improve seeding.
                           Also added documentation.
                           Shift the unique bits per GPU and species
                           to the left before XORing with `currentStep` and
                           `IONIZATION_SEED` to avoid losing uniqueness.
The random number generator only needs the cell coordinate in the local domain.
This parameter was already passed to the RNG but named wrongly.

Also: added another `__syncthreads()` in `ADK_Impl.hpp`
- `ionizationMethods.hpp`: - Removed workaround for good seed
                             after merge of ComputationalRadiationPhysics#1046
- `utilities.hpp`: - Added EOF newline
@n01r
Copy link
Member Author

n01r commented Aug 28, 2015

@ax3l I removed the workaround, added an EOF newline where necessary, rebased, compiled, run-tested and re-pushed.

@ax3l
Copy link
Member

ax3l commented Aug 28, 2015

great, thx! ✨

@ax3l ax3l added component: core in PIConGPU (core application) and removed component: core in PIConGPU (core application) labels Aug 28, 2015
@@ -140,6 +140,7 @@ struct Hydrogen
* For development purposes: ---------------------------------------------
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this comment needs to be added to the general src/picongpu/include/simulation_defines/param/speciesDefinition.param file - but we can postpone this until ionization leaves the in development state.

ax3l added a commit that referenced this pull request Aug 28, 2015
@ax3l ax3l merged commit 9a8cc03 into ComputationalRadiationPhysics:dev Aug 28, 2015
@n01r n01r deleted the topic-ionizationModelADK branch August 28, 2015 13:48
UpperMargin
> BlockArea;

BlockArea BlockDescription;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ax3l Who checked this branch last year? ^^

This is not used. This is also in the current version.

Copy link
Member

@ax3l ax3l Aug 29, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not used "any more" ;)
there was probably a magical state in between we can't see ^^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants