Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ignoring Fluid density warning for Component Fluids #2075

Merged
merged 6 commits into from
Feb 6, 2025

Conversation

drewj-tp
Copy link
Contributor

@drewj-tp drewj-tp commented Feb 4, 2025

What is the change?

Calling Component.material.density does not log a warning with a traceback if the material is a subclass of Fluid

Why is the change being made?

TH applications need fluid densities and the traceback invocation is kind of a bottleneck.

#1852 introduced a warning when Component.material.density(...) was invoked. The rationale is the Component is the source of truth for volume, density, mass, etc. And components are the things that are thermally expanded.

However, fluids are not thermally expanded and so the density of a fluid material is appropriate.

This change undoes the density wrapper applied by the base Material when creating a Fluid subclass.

A test is added to show that any non-Fluid subclass still logs the warning, but a Fluid subclass does not.

I attempted to use a "real" material like Sodium but lots of other warnings can be logged depending on appropriate bounds of temperatures. So a fake Fluid is used to have more control over what warnings are logged.

I contend that the stack trace should still be used in this message. This is a message meant for application developers to root out problematic parts of their codebase. And it helped us pinpoint very specific call locations with ease.


Checklist

  • The release notes have been updated if necessary.
  • The documentation is still up-to-date in the doc folder.
  • The dependencies are still up-to-date in pyproject.toml.

#1852 introduced a warning
when `Component.material.density(...)` was invoked. The rationale is
the `Component` is the source of truth for volume, density, mass, etc.
And components are the things that are thermally expanded.

However, fluids are not thermally expanded and so the density of a fluid
material is appropriate.

This change undoes the density wrapper applied by the base `Material`
when creating a `Fluid` subclass.

A test is added to show that any non-`Fluid` subclass still logs the
warning, but a `Fluid` subclass does not.

I attempted to use a "real" material like `Sodium` but lots of other
warnings can be logged depending on appropriate bounds of temperatures.
So a fake Fluid is used to have more control over what warnings are
logged.
@drewj-tp drewj-tp self-assigned this Feb 4, 2025
@john-science john-science added the feature request Smaller user request label Feb 4, 2025
@john-science john-science changed the title Ignore Fluid density warning for fluids attached to components Ignoring Fluid density warning for Component Fluids Feb 6, 2025
@john-science john-science self-requested a review February 6, 2025 16:32
Copy link
Member

@john-science john-science left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great!

armi/materials/material.py Outdated Show resolved Hide resolved
@opotowsky opotowsky merged commit 31dc3b0 into main Feb 6, 2025
22 checks passed
@opotowsky opotowsky deleted the drewj/mat-density-traceback-slow branch February 6, 2025 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Smaller user request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants