Skip to content

Bridge fails for a code without epsilon_squared as a parameter #902

@rieder

Description

@rieder

See below:
when adding a code that doesn't have an epsilon_squared parameter, Bridge will raise a CoreException when querying for this.
Replacing the if...else statement with a try...except clause would probably fix this.

---> 53 system.add_system(
     54     hydro,
     55     partners=to_hydro_kickers,
     56     do_sync=True,
     57     h_smooth_is_eps=True,
     58     zero_smoothing=True
     59 )

File ~/Code/ghostwind/env/lib/python3.10/site-packages/amuse/couple/bridge.py:527, in Bridge.add_system(self, interface, partners, do_sync, radius_is_eps, h_smooth_is_eps, zero_smoothing)
    522 """
    523 add a system to bridge integrator
    524 """
    526 if hasattr(interface, "particles"):
--> 527     code = GravityCodeInField(interface, partners, do_sync, self.verbose,
    528         radius_is_eps, h_smooth_is_eps, zero_smoothing)
    529     self.add_code(code)
    530 else:

File ~/Code/ghostwind/env/lib/python3.10/site-packages/amuse/couple/bridge.py:325, in GravityCodeInField.__init__(self, code, field_codes, do_sync, verbose, radius_is_eps, h_smooth_is_eps, zero_smoothing)
    323 if not hasattr(self.code,"parameters"):
    324     self.zero_smoothing=True
--> 325 elif not hasattr(self.code.parameters,"epsilon_squared"):
    326     self.zero_smoothing=True
    327 else:

File ~/Code/ghostwind/env/lib/python3.10/site-packages/amuse/datamodel/parameters.py:310, in ParametersWithUnitsConverted.__getattr__(self, name)
    309 def __getattr__(self, name):
--> 310     return self.convert_from_target_to_source_if_needed(getattr(self._original, name))

File ~/Code/ghostwind/env/lib/python3.10/site-packages/amuse/datamodel/parameters.py:35, in Parameters.__getattr__(self, name)
     31 def __getattr__(self, name):
     32     #if name.startswith('__'):
     33     #    return object.__getattribute__(self, name)
     34     if not name in self._mapping_from_name_to_definition:
---> 35         raise exceptions.CoreException("tried to get unknown parameter '{0}' for a '{1}' object".format(name, type(self._instance()).__name__))
     37     self._instance().before_get_parameter()
     39     return self.get_parameter(name).get_value()

CoreException: tried to get unknown parameter 'epsilon_squared' for a 'Phantom' object```

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions