-
Notifications
You must be signed in to change notification settings - Fork 59
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
Field Dependent particle activation #86
Comments
In GitLab by Thomas Goffrey (@TomGoffrey) on 05 Sep 2020, 11:53 Are the frozen particles the only particles in the simulation? |
In GitLab by Ernesto Barraza on 05 Sep 2020, 15:06 @tom yes. However, I also want to control the energy and momentum distribution as they are activated. |
In GitLab by Thomas Goffrey (@TomGoffrey) on 10 Sep 2020, 16:49 If you are triggering the activation by a laser of known temporal profile, is there a reason why |
In GitLab by Ernesto Barraza on 10 Sep 2020, 18:08 Interesting. I'll try this out. |
In GitLab by Thomas Goffrey (@TomGoffrey) on 10 Sep 2020, 18:35 Yes, essentially the particles won't be updated at all until t > particle_tstart. I realise that's not exactly what you want, but it's worth trying at least. To truly get what you want I think you'd probably want to modify the particle push so that it tests the magnitude of the electric field at each particle position. So something like:
I think the above is pretty self explanatory, but in case it's not what I've done is modify the particle push to calculate the magnitude of the electric field at the particle position, and if it is less than Strictly speaking this uses the position the particle would be at if it moved half a timestep. If this isn't accurate enough you'd have to calculate the electric field at an earlier point. I did it this way in an attempt to keep the modifications minimal, whilst guessing this was probably accurate enough. The only problem with this approach is that if a particle starts to move but then moves into a region where emag < efrozen it will stop moving. The only way I can think of to circumvent this is to add a per-particle flag that tracks if it has started moving, and if the particle is moving to ignore the efrozen test. To do this you'd have to modify (amongst other things) the particle packing and unpacking routines. This would certainly be a more complex modification. I should stress, I haven't tested any of what I've written above, but I hope this is helpful. |
In GitLab by Ernesto Barraza on 10 Sep 2020, 18:42 Awesome. This helps a lot. I'm sure i'll be back with more questions once I get started but this is a good starting point for me. The other thought I had was modifying the particle injector package to have field dependence and not being bound to the boundaries only. |
In GitLab by Thomas Goffrey (@TomGoffrey) on 10 Sep 2020, 19:01 That's not really something I can comment on with any authority, but I suspect the answer is simply that injection through a boundary was the requested/required use case. From a quick read through the code it certainly looks like the injectors are implemented as flux through a surface, rather than a more general source term as I think you are envisioning. It's possible one of the other dev team who were involved in the implementation of the injectors may want to comment further. I should add that due to time constraints we aren't able to offer support on modified versions of EPOCH. It's hard enough supporting a code base we know! Best we can do is to offer advice as above. That being said, I hope the advice offered is useful. |
In GitLab by Ernesto Barraza on 10 Sep 2020, 19:21 Thomas, thank you! I'm hoping to modify the code slowly and with easier models and build up from there. So before trying to code up a full field emission model, trying to just get frozen bunch of electrons to become active with a field magnitude. Hopefully I'll get a better idea about the inner workings of EPOCH this way. |
In GitLab by Christopher Brady (@csbrady-warwick) on 11 Sep 2020, 12:30 Hi, I'm one of the original developers of the injectors so I'll try and expand on @tom 's points. The injectors do work by calculating the flux through a boundary so they aren't really suitable for creating particles in the simulation domain. There are two reasons for this
In conclusion, if you want to write code to create particles within the domain that isn't too hard (and we're happy give you some help and advice, subject to the limits that @tom mentioned above) but there is a real risk that you might get an unphysical answer unless you are very careful about ensuring the other parts of the simulation are changed to reflect the process that has created those particles. |
In GitLab by Ernesto Barraza on 11 Sep 2020, 21:18 @chris Thank you! I think I have enough to get started and get my hands dirty. |
In GitLab by Ernesto Barraza on 24 Sep 2020, 15:36 Hi all. I finally got a chance to implement @tom 's code modification with my own code modification in the 1D case.
I tested it out with all the basic workshop examples and it seems to be working fine. I then tested to see if there was activation of these electrons and indeed the electrons were mobile after seeing an ecrit. My question would be: is it ok I moved the Let me know what you all think. |
In GitLab by Ernesto Barraza on 25 Sep 2020, 00:38 @tom @chris So I've been trying to see how the physics plays out with this activation. I have run simulation with the original EPOCH with just a localized density of electrons in a simulation cell. Physically, I would expect the electrons begin to spread out to fill the simulation domain and finally escape. Pictures below. However, the electrons continue to stay localized. I'm probably misunderstanding how the fields are generated in a non-uniform plasma.
|
In GitLab by Ernesto Barraza on 26 Sep 2020, 18:45 Hi all, So I realized I am misunderstanding the linked list and how species works. It seems that changing the immobile flag was maybe not the right solution. So I ended up modifying the ionisation code for tunneling in ionise.F90. Specifically, I changed the new and current particle updates of the ionisation process to give me the momentum only in the y-direction and to keep the initial species uncharged. Cheers!
|
In GitLab by Ernesto Barraza on 01 Oct 2020, 17:32 mentioned in issue GL#2257 |
In GitLab by Ernesto Barraza on 05 Sep 2020, 01:56 (GitLab issue GL#2244)
Hi EPOCH developers,
I had a question. I am trying to have a cluster of ions or electrons basically frozen until a strong enough field (in this case a laser) activates them (frees them).
It seems to do this, I have to go in and add things to the code.
My question is, to accomplish this is it better to do this within the particle pusher maybe make a subroutine? Or would it be better to make a whole new physics_packages for this?
Which would be the quickest dirtiest way to get started and what would be the best permanent solution?
Thanks,
Ernesto
The text was updated successfully, but these errors were encountered: