Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions process/core/io/in_dat/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -414,8 +414,17 @@ def get_parameters(data, use_string_values=True):
if item == "f_nd_impurity_electrons":
for k in range(len(data["f_nd_impurity_electrons"].get_value)):
name = f"f_nd_impurity_electrons({str(k + 1).zfill(1)})"
value = data["f_nd_impurity_electrons"].get_value[k]
parameters[module][name] = value
# if the variable appears elsewhere in data, it is being
# used as an iteration variable. need to add to
# parameters separately otherwise its value in a
# varyrun remains the same as it is taken from the
# default values
if name in data:
value = data[name].value
parameters[module][name] = value
else:
value = data["f_nd_impurity_electrons"].get_value[k]
parameters[module][name] = value

elif item == "ioptimz":
name = item
Expand Down
5 changes: 3 additions & 2 deletions process/core/io/vary_run/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,10 @@ def __iter__(self):
return self

def __next__(self):
_neqns, itervars = get_neqns_itervars(in_dat=self.infile, wdir=self.wdir)
_neqns, itervars = get_neqns_itervars(in_dat=self.initial_infile, wdir=self.wdir)

lbs, ubs = get_variable_range(
itervars, self.factor, self.infile, self.data, self.wdir
itervars, self.factor, self.initial_infile, self.data, self.wdir
)
self.run_process(self.wdir / self.infile, self.solver)
check_input_error(mfile=self.outfile, wdir=self.wdir)
Expand Down
4 changes: 1 addition & 3 deletions process/core/io/vary_run/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ def get_variable_range(itervars, factor, indat, data: DataStructure, wdir="."):
"""Returns the lower and upper bounds of the variable range
for each iteration variable.

For f-values the allowed range is equal to their process bounds.

Parameters
----------
itervars :
Expand Down Expand Up @@ -320,7 +318,7 @@ def get_from_indat_or_default(in_dat, varname):
if "(" in varname:
name, index = re.match(r"([a-zA-Z0-9_]+)\(([0-9]+)\)", varname.strip()).groups()

if varname in in_dat.data:
if name in in_dat.data:
return in_dat.data[name].get_value[int(index) - 1]

return dicts["DICT_DEFAULT"][name][int(index) - 1]
Expand Down
Loading