The Optimization module's exodus output has the ability to show the optimization procedure (e.g., displacements) as it is updated during the optimization process.
However, this currently works for specific executioners (e.g., Steady). An executioner with the Eigenvalue type will not have this capability available.
Design
1- Modify the Eigenvalue class and the OptimizeSolve class to get the current iteration value of PETSc's optimization iteration in case of an eigenvalue executioner. A dedicated exodus class (ExodusOptimizationEigenvalue) is to be constructed to have the capability called from the output system.
2- Add a test example to show the capability is working.
Previous implementation #25011 was for the Steady executioner only.
If possible, modify the previous implementation (not possible since dynamic_cast is used to get the executioner type). Otherwise, new code for the Eigenvalue executioner.
The provided example is for a 2D pin-cell singlephysics simulation and can be tested using Moltres's opensource neutronics solver. This was also tested using Griffin and MOOSE's heat conduction module for a multiphysics example.
Related to and supports #25416 as well.
Impact
The exodus can now not only have the initial and the final states, but also the interstates of the optimization process when the problem is an eigenvalue problem.
Motivation
The Optimization module's exodus output has the ability to show the optimization procedure (e.g., displacements) as it is updated during the optimization process. However, this currently works for specific executioners (e.g.,
Steady
). An executioner with theEigenvalue
type will not have this capability available.Design
1- Modify the
Eigenvalue
class and theOptimizeSolve
class to get the current iteration value of PETSc's optimization iteration in case of an eigenvalue executioner. A dedicated exodus class (ExodusOptimizationEigenvalue
) is to be constructed to have the capability called from the output system. 2- Add a test example to show the capability is working.Steady
executioner only.dynamic_cast
is used to get the executioner type). Otherwise, new code for theEigenvalue
executioner.The provided example is for a 2D pin-cell singlephysics simulation and can be tested using Moltres's opensource neutronics solver. This was also tested using Griffin and MOOSE's heat conduction module for a multiphysics example.
Related to and supports #25416 as well.
Impact
The exodus can now not only have the initial and the final states, but also the interstates of the optimization process when the problem is an eigenvalue problem.