From efed8e95fb7cec88737a7f80edae061f8419c0ad Mon Sep 17 00:00:00 2001 From: David Grote Date: Fri, 10 Sep 2021 15:53:17 -0700 Subject: Various updates related to defining embedded boundaries in Python (#2280) * Various updated related to defining embedded boundaries in Python * Fix typo in comment Co-authored-by: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com> --- Python/pywarpx/Constants.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'Python/pywarpx/Constants.py') diff --git a/Python/pywarpx/Constants.py b/Python/pywarpx/Constants.py index 1ae1dda0d..abc0c3e87 100644 --- a/Python/pywarpx/Constants.py +++ b/Python/pywarpx/Constants.py @@ -24,20 +24,19 @@ class Constants(Bucket): def add_keywords(self, kwdict): mangle_dict = {} for k,v in kwdict.items(): - # Check if keyword has already been defined - # WarpX has a single global dictionary of expression variables so each - # variable must be unique - if k in self.argvattrs: - # if so, mangle the name by appending a numerical suffix - mangle_number = 1 + # WarpX has a single global dictionary of expression variables, my_constants, + # so each variable must be unique. + # Check if keyword has already been defined. If so and it has a different + # value than the already defined value, then mangle the name. + mangle_number = 0 + k_mangled = k + while k_mangled in self.argvattrs and self.argvattrs[k_mangled] != v: + mangle_number += 1 k_mangled = f'{k}{mangle_number}' - while k_mangled in self.argvattrs: - # make sure that the mangled name has also not already been defined - mangle_number += 1 - k_mangled = f'{k}{mangle_number}' + if mangle_number > 0: + # The mangle_dict contains only mangled names mangle_dict[k] = k_mangled - k = k_mangled - setattr(self, k, v) + setattr(self, k_mangled, v) return mangle_dict def mangle_expression(self, expression, mangle_dict): -- cgit v1.2.3