From cfe63efaaf3f8e6e624d1a680655fed42d0f8236 Mon Sep 17 00:00:00 2001 From: "L. Diana Amorim" Date: Wed, 18 Dec 2019 09:55:00 -0800 Subject: Fix to RZ scalar moving window Tried to make exception message clearer --- Python/pywarpx/picmi.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index 6e9c9153b..2dc08bf37 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -326,13 +326,14 @@ class CylindricalGrid(picmistandard.PICMI_CylindricalGrid): pywarpx.geometry.prob_hi = self.upper_bound pywarpx.warpx.n_rz_azimuthal_modes = self.n_azimuthal_modes - if self.moving_window_velocity is not None and np.any(np.not_equal(self.moving_window_velocity, 0.)): - pywarpx.warpx.do_moving_window = 1 - if self.moving_window_velocity[0] != 0.: - raise Exception('In cylindrical coordinates, a moving window in r can not be done') - if self.moving_window_velocity[1] != 0.: - pywarpx.warpx.moving_window_dir = 'z' - pywarpx.warpx.moving_window_v = self.moving_window_velocity[1]/constants.c # in units of the speed of light + if self.moving_window_velocity is not None: + if np.isscalar(self.moving_window_velocity): + if self.moving_window_velocity !=0: + pywarpx.warpx.do_moving_window = 1 + pywarpx.warpx.moving_window_dir = 'z' + pywarpx.warpx.moving_window_v = self.moving_window_velocity/constants.c # in units of the speed of light + else: + raise Exception('RZ PICMI moving_window_velocity (only available in z direction) should be a scalar') if self.refined_regions: assert len(self.refined_regions) == 1, Exception('WarpX only supports one refined region.') -- cgit v1.2.3 From 32d00398e92821f093a6dd573e789d64457540df Mon Sep 17 00:00:00 2001 From: "L. Diana Amorim" Date: Wed, 18 Dec 2019 13:41:28 -0800 Subject: Corrected WarpX RZ to use PICMI moving_window_zvelocity --- Python/pywarpx/picmi.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index 2dc08bf37..ce0f1f0e6 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -326,15 +326,18 @@ class CylindricalGrid(picmistandard.PICMI_CylindricalGrid): pywarpx.geometry.prob_hi = self.upper_bound pywarpx.warpx.n_rz_azimuthal_modes = self.n_azimuthal_modes - if self.moving_window_velocity is not None: - if np.isscalar(self.moving_window_velocity): - if self.moving_window_velocity !=0: + if self.moving_window_zvelocity is not None: + if np.isscalar(self.moving_window_zvelocity): + if self.moving_window_zvelocity !=0: pywarpx.warpx.do_moving_window = 1 pywarpx.warpx.moving_window_dir = 'z' - pywarpx.warpx.moving_window_v = self.moving_window_velocity/constants.c # in units of the speed of light + pywarpx.warpx.moving_window_v = self.moving_window_zvelocity/constants.c # in units of the speed of light else: raise Exception('RZ PICMI moving_window_velocity (only available in z direction) should be a scalar') + if self.moving_window_velocity is not None: + raise Exception('PICMI RZ geometry uses moving_window_zvelocity (scalar) instead of moving_window_velocity (vector)') + if self.refined_regions: assert len(self.refined_regions) == 1, Exception('WarpX only supports one refined region.') assert self.refined_regions[0][0] == 1, Exception('The one refined region can only be level 1') -- cgit v1.2.3 From c26e7d89449586a17c9d2db1e20b916f3a484c49 Mon Sep 17 00:00:00 2001 From: "L. Diana Amorim" Date: Wed, 18 Dec 2019 13:53:10 -0800 Subject: moving_window_velocity does not exist in PICMI RZ --- Python/pywarpx/picmi.py | 3 --- 1 file changed, 3 deletions(-) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index ce0f1f0e6..a21775732 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -334,9 +334,6 @@ class CylindricalGrid(picmistandard.PICMI_CylindricalGrid): pywarpx.warpx.moving_window_v = self.moving_window_zvelocity/constants.c # in units of the speed of light else: raise Exception('RZ PICMI moving_window_velocity (only available in z direction) should be a scalar') - - if self.moving_window_velocity is not None: - raise Exception('PICMI RZ geometry uses moving_window_zvelocity (scalar) instead of moving_window_velocity (vector)') if self.refined_regions: assert len(self.refined_regions) == 1, Exception('WarpX only supports one refined region.') -- cgit v1.2.3 From 6113267898fdf77ca4ca6c86db4ac48732bd45f4 Mon Sep 17 00:00:00 2001 From: "L. Diana Amorim" Date: Wed, 18 Dec 2019 16:16:24 -0800 Subject: Tried to add PICMI class for ionization --- Python/pywarpx/picmi.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index 6e9c9153b..b207ef0a5 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -56,6 +56,15 @@ class Species(picmistandard.PICMI_Species): if self.mass is None: self.mass = element.mass*periodictable.constants.atomic_mass_constant + if 'ionization' in self.interactions: + if self.interactions[1]=='ADK': + species.do_field_ionization=1 + species.physical_element=self.particle_type + species.ionization_product_species = self.interactions[2] + species.ionization_initial_level = self.charge_state + else: + raise Exception('WarpX only supports the ionization model of ADK') + def initialize_inputs(self, layout, initialize_self_fields=False): self.species_number = pywarpx.particles.nspecies pywarpx.particles.nspecies += 1 -- cgit v1.2.3 From 7fdcc5687efd5a9cd30814cd239fc3d457e05f35 Mon Sep 17 00:00:00 2001 From: "L. Diana Amorim" Date: Wed, 18 Dec 2019 16:28:41 -0800 Subject: Added print line to see absent interactions The search for ionization should only happen for particles other than elementary --- Python/pywarpx/picmi.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index 13774bff2..12accdee7 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -55,15 +55,15 @@ class Species(picmistandard.PICMI_Species): self.element = element if self.mass is None: self.mass = element.mass*periodictable.constants.atomic_mass_constant - - if 'ionization' in self.interactions: - if self.interactions[1]=='ADK': - species.do_field_ionization=1 - species.physical_element=self.particle_type - species.ionization_product_species = self.interactions[2] - species.ionization_initial_level = self.charge_state - else: - raise Exception('WarpX only supports the ionization model of ADK') + print(self.name,self.interactions) + if 'ionization' in self.interactions: + if self.interactions[1]=='ADK': + species.do_field_ionization=1 + species.physical_element=self.particle_type + species.ionization_product_species = self.interactions[2] + species.ionization_initial_level = self.charge_state + else: + raise Exception('WarpX only supports the ionization model of ADK') def initialize_inputs(self, layout, initialize_self_fields=False): self.species_number = pywarpx.particles.nspecies -- cgit v1.2.3 From 7c2887709b20103d63e4a7ff0c3cfc848f17e4e5 Mon Sep 17 00:00:00 2001 From: Remi Lehe Date: Fri, 20 Dec 2019 07:16:29 -0800 Subject: Fix EOL whitespace --- Python/pywarpx/picmi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index a21775732..19d68ca29 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -334,7 +334,7 @@ class CylindricalGrid(picmistandard.PICMI_CylindricalGrid): pywarpx.warpx.moving_window_v = self.moving_window_zvelocity/constants.c # in units of the speed of light else: raise Exception('RZ PICMI moving_window_velocity (only available in z direction) should be a scalar') - + if self.refined_regions: assert len(self.refined_regions) == 1, Exception('WarpX only supports one refined region.') assert self.refined_regions[0][0] == 1, Exception('The one refined region can only be level 1') -- cgit v1.2.3 From fa66a510bb3c8180eaeb81c0625b853734264882 Mon Sep 17 00:00:00 2001 From: "L. Diana Amorim" Date: Fri, 20 Dec 2019 10:01:01 -0800 Subject: Fixed pywarpx class where ionization call is defined --- Python/pywarpx/picmi.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index 12accdee7..a2bbcaaad 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -55,15 +55,6 @@ class Species(picmistandard.PICMI_Species): self.element = element if self.mass is None: self.mass = element.mass*periodictable.constants.atomic_mass_constant - print(self.name,self.interactions) - if 'ionization' in self.interactions: - if self.interactions[1]=='ADK': - species.do_field_ionization=1 - species.physical_element=self.particle_type - species.ionization_product_species = self.interactions[2] - species.ionization_initial_level = self.charge_state - else: - raise Exception('WarpX only supports the ionization model of ADK') def initialize_inputs(self, layout, initialize_self_fields=False): self.species_number = pywarpx.particles.nspecies @@ -84,6 +75,14 @@ class Species(picmistandard.PICMI_Species): if self.initial_distribution is not None: self.initial_distribution.initialize_inputs(self.species_number, layout, self.species, self.density_scale) + for interaction in self.interactions: + print(self, interaction[2].name) + 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 picmistandard.PICMI_MultiSpecies.Species_class = Species class MultiSpecies(picmistandard.PICMI_MultiSpecies): -- cgit v1.2.3 From 75c29903039f32749c72317f7bb3f07c4156e7b2 Mon Sep 17 00:00:00 2001 From: "L. Diana Amorim" Date: Fri, 20 Dec 2019 10:03:00 -0800 Subject: Removed test function print() --- Python/pywarpx/picmi.py | 1 - 1 file changed, 1 deletion(-) (limited to 'Python/pywarpx/picmi.py') diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py index a59e2a56d..224a53737 100644 --- a/Python/pywarpx/picmi.py +++ b/Python/pywarpx/picmi.py @@ -76,7 +76,6 @@ class Species(picmistandard.PICMI_Species): self.initial_distribution.initialize_inputs(self.species_number, layout, self.species, self.density_scale) for interaction in self.interactions: - print(self, interaction[2].name) assert interaction[0] == 'ionization' assert interaction[1] == 'ADK', 'WarpX only has ADK ionization model implemented' self.species.do_field_ionization=1 -- cgit v1.2.3