diff options
Diffstat (limited to 'Python/pywarpx')
-rw-r--r-- | Python/pywarpx/picmi.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index 4a3798059..f9bb6404c 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -262,14 +262,6 @@ class Species(picmistandard.PICMI_Species): self.species.rigid_advance = 1 self.species.zinject_plane = injection_plane_position - for interaction in self.interactions: - assert interaction[0] == 'ionization' - assert interaction[1] == 'ADK', 'WarpX only has ADK ionization model implemented' - self.species.do_field_ionization=1 - self.species.physical_element=self.particle_type - self.species.ionization_product_species = interaction[2].name - self.species.ionization_initial_level = self.charge_state - self.species.charge = 'q_e' picmistandard.PICMI_MultiSpecies.Species_class = Species class MultiSpecies(picmistandard.PICMI_MultiSpecies): @@ -1216,6 +1208,19 @@ class Mirror(picmistandard.PICMI_Mirror): pywarpx.warpx.mirror_z_npoints.append(self.number_of_cells) +class FieldIonization(picmistandard.PICMI_FieldIonization): + """ + WarpX only has ADK ionization model implemented. + """ + def initialize_inputs(self): + assert self.model == 'ADK', 'WarpX only has ADK ionization model implemented' + self.ionized_species.species.do_field_ionization = 1 + self.ionized_species.species.physical_element = self.ionized_species.particle_type + self.ionized_species.species.ionization_product_species = self.product_species.name + self.ionized_species.species.ionization_initial_level = self.ionized_species.charge_state + self.ionized_species.species.charge = 'q_e' + + class CoulombCollisions(picmistandard.base._ClassWithInit): """ Custom class to handle setup of binary Coulmb collisions in WarpX. If @@ -1719,6 +1724,10 @@ class Simulation(picmistandard.PICMI_Simulation): self.injection_plane_positions[i], self.injection_plane_normal_vectors[i]) + for interaction in self.interactions: + assert(isinstance(interaction, FieldIonization)) + interaction.initialize_inputs() + if self.collisions is not None: pywarpx.collisions.collision_names = [] for collision in self.collisions: |