ukaea/neutronics_material_maker

Consistent variations of material temperature/pressure

DanShort12 opened this issue · 1 comments

Currently the temperature (temperature_in_K and temperature_in_C) and pressure (pressure_in_Pa) are exposed via properties. However, nmm does not handle side effects of varying one of these properties. For example, changing the temperature_in_K should consistently change the temperature_in_C (currently one can end up with a material who's temperature in C is not 273.15 less than the temperature in K). It also appears that the density is not recalculated when changing the temperature or pressure, which may similarly lead to unexpected behaviour.

This can likely be handled by the following:

  • Adjust the setters for temperature_in_K and temperature_in_C to also set the temperature in the alternative units.
  • Adjust the setters for temperature_in_K, temperature_in_C, and pressure_in_Pa to re-evaluate the density, if the material is flagged as temperature/pressure dependent.

An alternative to the second point could be to adjust the getter for density to re-evaluate the density on each request, although I suspect setting the density when a dependent property is changed may be more efficient.

Thinking about this a bit more, I'm wondering if it's worth considering consolidating the density information into a callable property, then the value can be obtained at whatever temperature the user requests - the temperature and pressure aren't intrinsic properties of the material after all, unlike density (particularly if defined by a function), composition, etc. I believe that may have been discussed before though, so would be happy to see if there are any opinions on that before I put something together.