Open ragusa opened 12 months ago
This is a big can of worms that does need to be addressed sooner rather than later. The current code design is that a_lbs_solver
is the broad and encompassing data structure that defines a transport or diffusion problem. All of the b
, c
, and d
variants are specializations. The LBSSolver
gets attached to an executor which then solves the problem.
There are several issues with the current design in my view:
a_lbs_solver
is meant to be inherited by transport and diffusion specific data structures. There is a lot of data in LBSSolver
and other classes within a_lbs_solver
, however, that is transport specific. For example, DSA is tied to transport and not diffusion, yet a_lbs_solver
contains all of the DSA related routines and not b_discrete_ordinates_solver
. There are numerous other examples in this regard.This will ultimately require a meeting where we go through the linear_boltzmann_solvers
directory in great detail and decide on a new strategy that makes more sense.
There are many different paths we can take on this topic... I'll propose a number of thoughts we should discuss:
DiscreteOrdinatesSolver
for DSA, or should LBSSolver
define diffusion solvers for DSA that then get used by standalone modules?I think if we can really nail down on these questions (and potentially others that I am not considering) it will really clear up what needs to be done for this issue.
there are diffusion solvers in
can this be harmonized?