From 5729a29636c6c7e29ab0ad22792bdf5d8963447c Mon Sep 17 00:00:00 2001 From: Chris Keckler Date: Tue, 28 Sep 2021 14:13:04 -0500 Subject: [PATCH] Fix applyInputParams bug when values are zero (#425) --- armi/materials/b4c.py | 2 +- armi/materials/mox.py | 19 ++++++++++++++++--- armi/materials/sulfur.py | 2 +- armi/materials/thU.py | 2 +- armi/materials/uraniumOxide.py | 10 ++++++++-- 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/armi/materials/b4c.py b/armi/materials/b4c.py index 63c71d30c..e63146d9d 100644 --- a/armi/materials/b4c.py +++ b/armi/materials/b4c.py @@ -29,7 +29,7 @@ class B4C(material.Material): def applyInputParams( self, B10_wt_frac=None, theoretical_density=None, *args, **kwargs ): - if B10_wt_frac: + if B10_wt_frac is not None: # we can't just use the generic enrichment adjustment here because the # carbon has to change with enrich. self.adjustMassEnrichment(B10_wt_frac) diff --git a/armi/materials/mox.py b/armi/materials/mox.py index 86cf3551b..ab97f339d 100644 --- a/armi/materials/mox.py +++ b/armi/materials/mox.py @@ -46,16 +46,29 @@ class MOX(UraniumOxide): def applyInputParams( self, U235_wt_frac=None, TD_frac=None, mass_frac_PU02=None, *args, **kwargs ): - if U235_wt_frac: + if U235_wt_frac is not None: self.adjustMassEnrichment(U235_wt_frac) td = TD_frac - if td: + if td is not None: + if td > 1.0: + runLog.warning( + "Theoretical density frac for {0} is {1}, which is >1" + "".format(self, td), + single=True, + label="Large theoretical density", + ) + elif td == 0: + runLog.warning( + "Theoretical density frac for {self} is zero!", + single=True, + label="Zero theoretical density", + ) self.adjustTD(td) else: self.adjustTD(1.00) # default to fully dense. - if mass_frac_PU02: + if mass_frac_PU02 is not None: self.setMassFracPuO2(mass_frac_PU02) material.FuelMaterial.applyInputParams(self, *args, **kwargs) diff --git a/armi/materials/sulfur.py b/armi/materials/sulfur.py index 93317f793..f5c69497d 100644 --- a/armi/materials/sulfur.py +++ b/armi/materials/sulfur.py @@ -25,7 +25,7 @@ class Sulfur(material.Fluid): name = "Sulfur" def applyInputParams(self, sulfur_density_frac=None): - if sulfur_density_frac: + if sulfur_density_frac is not None: self.fullDensFrac = float(sulfur_density_frac) def setDefaultMassFracs(self): diff --git a/armi/materials/thU.py b/armi/materials/thU.py index f7d88b12e..5d88935f2 100644 --- a/armi/materials/thU.py +++ b/armi/materials/thU.py @@ -38,7 +38,7 @@ def getEnrichment(self): def applyInputParams(self, U233_wt_frac=None, *args, **kwargs): runLog.warning("Material {} has not yet been tested for accuracy".format("ThU")) - if U233_wt_frac: + if U233_wt_frac is not None: self.adjustMassEnrichment(U233_wt_frac) material.FuelMaterial.applyInputParams(self, *args, **kwargs) diff --git a/armi/materials/uraniumOxide.py b/armi/materials/uraniumOxide.py index 912bebfdc..c20ef8295 100644 --- a/armi/materials/uraniumOxide.py +++ b/armi/materials/uraniumOxide.py @@ -95,11 +95,11 @@ def getTD(self): return self.theoreticalDensityFrac def applyInputParams(self, U235_wt_frac=None, TD_frac=None, *args, **kwargs): - if U235_wt_frac: + if U235_wt_frac is not None: self.adjustMassEnrichment(U235_wt_frac) td = TD_frac - if td: + if td is not None: if td > 1.0: runLog.warning( "Theoretical density frac for {0} is {1}, which is >1" @@ -107,6 +107,12 @@ def applyInputParams(self, U235_wt_frac=None, TD_frac=None, *args, **kwargs): single=True, label="Large theoretical density", ) + elif td == 0: + runLog.warning( + "Theoretical density frac for {self} is zero!", + single=True, + label="Zero theoretical density", + ) self.adjustTD(td) else: self.adjustTD(1.00) # default to fully dense.