From 80d428e2d1c7a68afe1f3f05debac999ea518dc1 Mon Sep 17 00:00:00 2001 From: Brian Drawert Date: Tue, 9 Aug 2022 15:34:04 -0700 Subject: [PATCH] Fixes #313 --- spatialpy/solvers/solver.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/spatialpy/solvers/solver.py b/spatialpy/solvers/solver.py index c2da3a26..b1788c3a 100644 --- a/spatialpy/solvers/solver.py +++ b/spatialpy/solvers/solver.py @@ -262,27 +262,26 @@ def __get_input_constants(self, nspecies, ncells, stoich_matrix, dep_graph): input_constants += outstr num_types = len(self.model.domain.listOfTypeIDs) - outstr = f"const int input_num_subdomain = {num_types};\n" + outstr = f"const int input_num_subdomain = {num_types-1};\n" # the backend ignores type_id=0 (a.k.a. unassigned) input_constants += outstr - outstr = f"const double input_subdomain_diffusion_matrix[{len(self.model.listOfSpecies) * num_types}] = " - outstr += "{" + outstr = f"const double input_subdomain_diffusion_matrix[{len(self.model.listOfSpecies) * (num_types-1)}] = " + outvec = [] for i, species in enumerate(self.model.listOfSpecies.values()): for j, type_id in enumerate(self.model.domain.typeNdxMapping.keys()): - if i + j > 0: - outstr += ',' + if j==0: continue # do not process type_id=0 in diffusion try: if species not in self.model.listOfDiffusionRestrictions or \ type_id in self.model.listOfDiffusionRestrictions[species]: - outstr += f"{species.diffusion_coefficient}" + outvec.append(f"{species.diffusion_coefficient}") else: - outstr += "0.0" + outvec.append("0.0") except KeyError as err: print(f"error: {err}") print(self.model.listOfDiffusionRestrictions) raise SimulationError(f"error: {self.model.listOfDiffusionRestrictions}") from err - outstr += "};\n" + outstr += "{"+",".join(outvec)+"};\n" input_constants += outstr return input_constants @@ -376,7 +375,7 @@ def __get_system_config(self, num_types, num_chem_species, num_chem_rxns, num_stoch_species, num_stoch_rxns, num_data_fn): system_config = f"debug_flag = {self.debug_level};\n" system_config += "ParticleSystem *system = new ParticleSystem(" - system_config += f"{num_types},{num_chem_species},{num_chem_rxns}," + system_config += f"{num_types-1},{num_chem_species},{num_chem_rxns}," system_config += f"{num_stoch_species},{num_stoch_rxns},{num_data_fn});\n" system_config += f"system->static_domain = {int(self.model.staticDomain)};\n" if len(self.model.listOfSpecies) > 0: