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

Refactoring Parameter Retrieval #383

Open
5 of 22 tasks
mabruzzo opened this issue Apr 18, 2024 · 0 comments
Open
5 of 22 tasks

Refactoring Parameter Retrieval #383

mabruzzo opened this issue Apr 18, 2024 · 0 comments
Labels
good first issue Good for newcomers

Comments

@mabruzzo
Copy link
Contributor

mabruzzo commented Apr 18, 2024

Beginning with PR #341, Enzo-E is in the process of refactoring the way that parameters from the parameters file are retrieved and used to configure various classes of objects throughout the Cello and Enzo layers.

The new approach for configuring instances of subclasses of Method and Initial  is described here in more detail.

We need help with this process. This would be an excellent way for first time contributors to contribute to Enzo-E.

What Needs to Be Done:

Time permitting, I would love to add more details about the specifics of completing this process. But for now the following 2 links show examples of what needs to be done.

2 Existing Pull Requests exist that demonstrate how this is done.

Guidelines: please have each pull request perform this refactoring on just a single class (that way this is easy to review). A number of classes have already been refactored. Please pick from the list down below (and maybe leave a comment down below so we can make sure nobody duplicates your efforts).

Quick tip: if you encounter an initializer that expects gamma (adiabatic index), you should access it with double gamma = enzo::fluid_props()->gamma();

Cases that need to be addressed:

At the moment, this is a somewhat incomplete list (but I plan to update it -- I definitely need to add Method classes). I've tried to sort in terms of which will be easier/more straightforward and which will be more difficult (but, I only took a quick glance so my sorting may be wrong).

More straight-forward cases:

  • EnzoInitialAccretionTest -- reserved by @jakereinheimer
  • EnzoInitialBBTest -- reserved by @jakereinheimer
  • EnzoInitialCollapse
  • EnzoInitialImplosion2 (especially easy: just make ParameterGroup* an argument of the constructor; it doesn't need to access any parameter) -- reserved by @jakereinheimer
  • EnzoInitialPpmlTest (especially easy: just replace the EnzoConfig* constructor argument with ParameterGroup. It doesn't actually need to access any parameters) -- reserved by @jakereinheimer

Relatively more difficult cases:

  • EnzoInitialBCenter -- reserved by @mabruzzo
  • EnzoInitialBurkertBodenheimer (need to remove internal usage of EnzoConfig)
  • EnzoInitialCosmology
  • EnzoInitialMergeSinksTest
  • EnzoInitialPm (this is marked as difficult just because of the use std::shared_ptr and the Mask class which may be a little tricky if you haven't done much C++ in the past)
  • EnzoInitialIsolatedGalaxy
  • EnzoInitialSedovArray2, EnzoInitialSedovArray3, EnzoInitialSedovRandom (I vaguely recall that the parameter access code is currently very interrelated between these objects)
  • EnzoInitialTurbulence (I think a pending PR might make this a little more complicated)

Cases from the Cello Layer: (these don't perfectly follow the above template)

  • InitialTrace (should actually be fairly easy to address)
  • InitialValue -- reserved by @mabruzzo (happy to let someone else tackle this, but it's very tricky)

Addressed cases awaiting review:

Completed Cases:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

1 participant