Add a framework level component leveraging Actions
refs #24103 A few things to figure out
to try:
- virtual inheritance from mooseobject & action to see if that fixes the auto-complete
Requirements
- [ ] what characteristics of THM should be kept?
- [ ] inter-component dependency resolution. Either use multiple tasks, or ?
Names & syntax
- [x] find a good name for the base class. ComponentAction? ActionComponent? MooseComponent?
- [x] find a good name for the syntax. Can't be
[Components]! - [x] Current syntax is good right? Components/name/type=component_type
Workflow items
- [x] register additional tasks when registering new components that have them (instead of registering everything in Components/). This is because we are using meta actions
- [x] proper input auto-complete works?: nope, not working
Code organization
- [ ] how to do different types of components. THM did by dimension: 1D/2D/file meshes. This would be kind of limiting since a lot of the things I m trying to do are dimension-agnostic. Maybe the solution is to not use inheritance?
- [ ] make a list of all the components we could want, and write down an inheritance tree for that
Types of components
- [ ] physics-components (components that define their own physics for convenience, for example SAM & THM ones)
- [x] components that spawn their own mesh
- [x] components from whole meshes output of mesh-generators (using saved mesh, we would have to be careful for duplicates if we do that)
- [ ] components on a block of a mesh
Junctions
- [ ] how to make them modify the mesh for physics that require contiguous treatment
- [ ] then add the various UOs for THM-like junction?
- [ ] or no mesh-stitiching and just add sidesets for things like heat radiation?
imo as long as there are no component ordering issues in creation / setup, then this is enough. If there are, then I had a commit (removed for now) to introduce tasks and dependencies on-the-fly during construction
Job Documentation on f7f78c9 wanted to post the following:
View the site here
This comment will be updated on new commits.
This should be ready for review now. If it's too big I can remove the new multi-species diffusion physics. It's for TMAP but it fits fine in the scalar transport module imo. In the process of making it I found a lot of improvements for working with the single-species one
EDIT: I will add a test for the new physics in the coming days
Job Coverage on f7f78c9 wanted to post the following:
Framework coverage
| 04c90e | #27593 f7f78c | ||||
|---|---|---|---|---|---|
| Total | Total | +/- | New | ||
| Rate | 85.03% | 85.02% | -0.01% | 77.18% | |
| Hits | 105273 | 105569 | +296 | 301 | |
| Misses | 18532 | 18606 | +74 | 89 | |
Modules coverage
Navier stokes
| 04c90e | #27593 f7f78c | ||||
|---|---|---|---|---|---|
| Total | Total | +/- | New | ||
| Rate | 84.57% | 84.57% | - | 100.00% | |
| Hits | 16350 | 16350 | - | 2 | |
| Misses | 2984 | 2984 | - | 0 | |
Scalar transport
| 04c90e | #27593 f7f78c | ||||
|---|---|---|---|---|---|
| Total | Total | +/- | New | ||
| Rate | 85.49% | 81.31% | -4.18% | 77.34% | |
| Hits | 165 | 322 | +157 | 157 | |
| Misses | 28 | 74 | +46 | 46 | |
Full coverage reports
Reports
-
framework -
chemical_reactions -
combined -
contact -
electromagnetics -
external_petsc_solver -
fluid_properties -
fsi -
functional_expansion_tools -
geochemistry -
heat_transfer -
level_set -
misc -
navier_stokes -
optimization -
peridynamics -
phase_field -
porous_flow -
ray_tracing -
rdg -
reactor -
richards -
scalar_transport -
solid_mechanics -
solid_properties -
stochastic_tools -
thermal_hydraulics -
xfem
Warnings
-
frameworknew line coverage rate 77.18% is less than the suggested 90.0% -
scalar_transportnew line coverage rate 77.34% is less than the suggested 90.0%
This comment will be updated on new commits.
I can't remember, but I thought we were going with "ComponentAction" rather than "ActionComponent". The former indicates it's a type of Action, where the latter suggests it's a type of Component.
We want those to serve as components. The Action part of the name is just to differentiate them for now. I used Component as the suffix as this is what I'd like to use as the suffix for the derived classes
Ok, and to recap, is the plan to eventually convert the existing Component system to this, and then drop the old Component system and rename "ActionComponent" to "Component"?
in the theoretical world where we have funding to this next year, yes
Reviews should be addressed @joshuahansel @pbehne Sorry I missed a couple comments on Patrick's first round but I should have addressed everything now
Job Coverage on f7f78c9 wanted to post the following:
The following coverage requirement(s) failed:
-
scalar_transportcoverage rate 81.31% is less than the required 85.0%
thank you both for the reviews!