This adds the AGORA isolated galaxy problem, a new star particle that John Forbes and I have developed suitable for use with this problem type, and a Type II SN metallicity field used by this new particle type.
Full details about the problem type and star formation and feedback prescriptions are going to be in two forthcoming papers. Very briefly, the idea is to stochastically form star particles wherever the density is higher than some overdensity threshold. The probability to form a star in any given cell is such that we, on average reproduce the local Kennicutt-Schmidt law.
John is primarily responsible for the feedback prescription, and it's still undergoing testing. Rather than ripping out the feedback machinery I'm including it here to make it easier to integrate in the future. The idea behind the feedback prescription is to run a parsec scale simulation and follow individual massive stars as they eject winds, photoionize their surroundings, and then explode as Type I and Type II SN.
See the notes.txt for the caveats related to the availability of the star and dark matter initial conditions. Unfortunately the code that generates these initial conditions is not public, but anyone who is involved with AGORA can get access if you contact Chris Hayward.
The main reason for pull requesting this now is that I'd like to make sure all the code necessary for the paper I'm working on is integrated into the main enzo repository.
Please let me know if you'd like me to add documentation for the problem type beyond the new test problem and the notes file.
EDIT: Updated to address comments.
Overall this looks pretty good to me, modulo my one comment. A question: does it work when compiled with mixed-precision floats (FLOAT/float) and ints? I haven't verified it myself, but that's typically where big new chunks of code seem to freak out. Running with a mixture of 32 and 64-bit precision will make this clear very quickly.
I'm able to successfully compile the tip of this PR on my linux workstation using every permutation of 32 bit and 64 bit float, int, and particle precision. Thanks for the suggestion.
This looks good to me (though I didn't test Brian's question). I ran with grackle and used the files downloaded via the shell script Nathan added (that made things a lot easier). Tested in serial and parallel. Parallel run works baring the error I mentioned to Nathan about the static subgrid level needing to start from 0:
StaticRefineRegionLevel = 0
Nathan, can you correct this in the included AgoraRestart.enzo file?
Thanks for the catch! Should be fixed now.
All tests pass. Good job!
Can we get one more accept on this PR from you, @samskillman ?
Following up: need one more accept on this PR, from either @samskillman or @dcollins4096
Looks good to me. I haven't tested it yet myself, but the code looks fine.