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
ArrayKernel and ArrayBoundaryCondition #6881
Comments
Action can give a solution for this issue, if native moose support would be better. #3719 |
I'm not sure if I fully understood what you were after for #3719. You mentioned in your original description about duplicate code but that was never an issue. Now it is true that without the Action system, you could have a lot of repetition in your input file. This particular PR is for creating a single MooseObject that works on a whole array of different variables. This situation shows up in neutronics a lot and chemical reaction networks. |
I am here talking about kernels more than 100k. If your number of kernels is less than that and bigger than the number with which your input becomes too tedious and error prone with moose simple input syntax, action is the way to go. |
I implemented something like this for my recent MOC work. My It's all insanely fast... and I would love to get something like it into MOOSE for normal Kernels (and enable things like VectorKernels). Getting the interface correct is the hard part. This is the perfect thing to work on during the tiger team. I can show you what I've done and we can hammer out an API and get this implemented. |
When will be our next tiger team? I cannot wait to have this done. Once this is ready, I will need some time to convert my SN kernels and try to run problems otherwise with million kernels. |
@YaqiWang I still don't understand "millions" of Kernels. You should only have like 100 groups times 128 angles times maybe 5 or so... Which is like 60,000. How many angles / groups are you trying to run? |
Could be 300 hundred of groups, each with 300 angles, with 10 kernels on average for each variable, so the total is close to 1M. Here the numbers of groups and angles could be a little conservative. |
@friedmud I'd like to work on this because we want demonstrate the capability of solving problems with large number of groups. Can you point to me where I can look at to start this? |
@jwpeterson is planning on working this. Let's chat about it tomorrow.
|
That is fantastic! Feel free to grab me for the chat. |
I want to table this work until the tiger team. This needs to be I would like to show you guys what I'm currently doing and have some Maybe we need a label for issues we want to work on during the tiger team?
|
Let me note something here: this capability is quite distinct from supporting "vector valued" finite-elements. You would think they're similar... but they're really not. vector valued finite-elements are quite a lot more complicated. The capability I'm envisioning here is for applying to many variables of the same type at the same time. |
Here's the way it works in my
I think that with some tweaking this model could work well for |
…tended to array variable idaholab#6881
…tended to array variable idaholab#6881
…tended to array variable idaholab#6881
…tended to array variable idaholab#6881
…tended to array variable idaholab#6881
…tended to array variable idaholab#6881
…tended to array variable idaholab#6881
…m computing diagonal jacobian idaholab#6881
Description of the enhancement or error report
Currently Kernel or BoundaryCondition are designed for an individual variable which is indicated by their
variable
parameter. In radiation transport, the extra independent variables of energy and streaming direction can make the number of variables quite large (potentially above 100K), which will results into too many kernels and boundary conditions being added. These kernels and bcs could contribute a huge overhead of memory consumption. If we can make a kernel and a bc operate on a vector of variables simultaneously, we can reduce the number of them substantially.Rationale for the enhancement or information for reproducing the error
This is needed for simulations with huge number of variables.
Identified impact
(i.e. Internal object changes, limited interface changes, public API change, or a list of specific applications impacted)
Radiation transport can benefit from this capability. Few questions I have in mind at this moment:
VectorKernel
be an independent system or derived from Kernel? Similarly forVectorBoundaryCondition
.The text was updated successfully, but these errors were encountered: