Skip to content

Releases: AMReX-Astro/Castro

Release 21.02

01 Feb 16:43
Compare
Choose a tag to compare

21.02

  • In axisymmetric geometry, there are additional forces that arise
    due to the changing direction of the unit vectors in the div{rho
    U U} term. The paper by Bernand-Champmartin discusses this. See
    issue #913. This adds those forces. Note that the Coriolis force
    in 2-d axisymmetry is already consistent with a right-handed
    system despite our internal ordering of the state was r, z,
    theta. (#923)

  • We can now set any of the Microphysics runtime parameters in the
    inputs file instead of probin. Each group of parameters has a
    namesapce for the inputs file when set this way
    (e.g. eos.use_coulomb = 1), and the C++ inputs value will take
    precedence over the value set in probin if it is set in both
    places. (#1527)

Release 21.01

02 Jan 19:39
Compare
Choose a tag to compare
  • The minimum C++ standard supported by Castro is now C++17. Most modern compilers
    support C++17; the notable exception is RHEL 7 and its derivatives like CentOS 7,
    where the default compiler is gcc 4.8. In that case a newer compiler must be loaded,
    particularly a version of gcc >= 7.0, for example by installing devtoolset-7 or (if
    running on an HPC cluster that provides modules) using a more recent gcc module. (#1506)

  • There can now be multiple _prob_params files throughout the source
    tree. We read the problem's file last and that takes precedence over
    any other _prob_params files found. (#1500)

  • The timestep limiter dtnuc_T has been removed. dtnuc_e and dtnuc_X
    are still available for controlling the burning timestep. (#1501)

  • A bug was fixed in the 2nd order true SDC (with reactions) that
    was giving the wrong solution and convergence (#1494). A second
    bug was fixed in defining the weights for the Radau quadrature
    when using true SDC (#1493)

  • Compiling with the PGI compiler is no longer a requirement for the CUDA build of Castro.
    We recommend using COMP=gnu with a version of gcc that is C++17 compliant (gcc >= 7).

Release 20.12

01 Dec 18:47
39874b1
Compare
Choose a tag to compare

20.12

  • An issue with incorrect application of HSE boundary conditions on derived quantities
    is now resolved (#1356). Also, at this point the old Fortran implementations hypfill,
    denfill, ext_hypfill, and ext_denfill have been removed; problem-specific boundary
    conditions should be implemented using the new C++ interface in this release from #1289.

  • The minimum supported Hypre version is now 2.19.0. (#1333)

  • We have switched from a Fortran to a C++ implementation of VODE in Microphysics.
    As a result we have also switched the Strang and simplified SDC burners in Castro
    to use this C++ implementation. Most networks used in Castro have already been
    ported to C++. While networks are not required to have a C++ implementation,
    networks implemented only in Fortran will not be useable on GPUs, and eventually
    we will use C++ only. (#1313)

  • problem_checkpoint and problem_restart are moved to C++ from Fortran. See
    Exec/science/wdmerger for an example of the new scheme. Problem.f90 and Problem_F.H
    are now deleted from the code; if you were using these to implement problem-specific
    functionality, you can still manually add these files to the Make.package for your
    problem setup. (#1311)

  • For setups using Poisson gravity, tagging is now turned off in locations where
    the fine levels would have been adjacent to a physical boundary. (This previously
    led to an abort.) (#1302)

  • An interface for doing problem tagging in C++ has been added. (#1289)

  • Simplified SDC now only supports the C++ integrators (#1294)

  • MHD problems can now do the magnetic field initialization in C++
    (#1298)

Release 20.11

02 Nov 21:36
Compare
Choose a tag to compare
  • The minimum C++ standard supported by Castro is now C++14. Most modern compilers
    support C++14; the notable exception is RHEL 7 and its derivatives like CentOS 7,
    where the default compiler is gcc 4.8. In that case a newer compiler must be loaded,
    particularly a version of gcc >= 5.0, for example by installing devtoolset-7 or (if
    running on an HPC cluster that provides modules) using a more recent gcc module. (#1284)

  • A new option, castro.retry_small_density_cutoff, has been added. In some
    cases a small or negative density retry may be triggered on an update that
    moves a zone already close to small_dens just below it. This is not uncommon
    for "ambient"/"fluff" material outside a star. Since these zones are not
    dynamically important anyway, triggering a retry is unnecessary (and possibly
    counterproductive, since it may require a very small timestep to avoid). By
    setting this cutoff value appropriately, the retry will be skipped if the
    density of the zone prior to the update was below the cutoff. (#1273)

Castro JOSS paper

13 Oct 16:14
Compare
Choose a tag to compare
JOSS_paper

JOSS paper

Release 20.10

01 Oct 16:10
Compare
Choose a tag to compare
  • A new refinement scheme using the inputs file rather than the Fortran
    tagging namelist has been added. (#1243, #1246) As an example, consider:

    amr.refinement_indicators = dens temp
    
    amr.refine.dens.max_level = 1
    amr.refine.dens.value_greater = 2.0
    amr.refine.dens.field_name = density
    
    amr.refine.temp.max_level = 2
    amr.refine.temp.value_less = 1.0
    amr.refine.temp.field_name = Temp
    

    amr.refinement_indicators is a list of user-defined names for refinement
    schemes. For each defined name, amr.refine. accepts predefined fields
    describing when to tag. In the current implementation, these are max_level
    (maximum level to refine to), start_time (when to start tagging), end_time
    (when to stop tagging), value_greater (value above which we refine),
    value_less (value below which to refine), gradient (absolute value of the
    difference between adjacent cells above which we refine), and field_name
    (name of the string defining the field in the code). If a refinement indicator
    is added, either value_greater, value_less, or gradient must be provided.

  • Automatic problem parameter configuration is now available to every
    problem by placing a _prob_params file in your problem directory.
    Examples can be found in most of the problems in Castro/Exec, and you
    can look at the "Setting Up Your Own Problem" section of the documentation
    for more information. This functionality is optional, however note that
    a file containing a Fortran module named "probdata_module" is now
    automatically generated, so if you have a legacy probdata.F90 file
    containing a module with that name it should be renamed. (#1210)

  • The variable "center" (in the problem namespace) is now part of this
    automatically generated probdata module; at the present time, the only
    valid way to change the problem center to a value other than zero is in
    amrex_probinit(). (#1222)

  • Initialization of these problem parameters is now done automatically for
    you, so a call to probdata_init() is no longer required in amrex_probinit(). (#1226)

  • Problems may now be initialized in C++ instead of Fortran. Instead of implementing
    amrex_probinit() and ca_initdata(), the problem should implement the analogous
    functions initialize_problem() and initialize_problem_state_data(). If you switch to
    the new C++ initialization, be sure to delete your Prob_nd.F90 file. By default both
    implementations do nothing, so you can pick either one but do not pick both. (#1227)

  • The external heat source term routines have been ported to C++
    (#1191). Any problem using an external heat source should look
    convert the code over to C++.

  • The interpolate_nd.F90 file has been moved to Util/interpolate and
    is only compiled into Castro if you set USE_INTERPOLATE=TRUE

Release 20.09

03 Sep 18:23
Compare
Choose a tag to compare
  • Reactions now work with MHD (#1179)

  • MHD now uses the main slope routine (#1058) The order of the
    slope is now controlled by plm_iorder, just as with hydro. There
    is an additional option, mhd_limit_characteristic, that
    determines if the limiting is done on the primitive or
    characteristic variables (the default).

Release 20.08

02 Aug 16:37
974af00
Compare
Choose a tag to compare
  • Rotation_Type has been removed from StateData. (#1128)

  • castro.use_post_step_regrid now unconditionally regrids after
    every timestep on every level. (#898)

  • An issue with gravity.max_solve_level resulting in accesses to invalid data
    (#469, #1118) has been resolved. (#1123)

  • If castro.speed_limit is set to a number greater than zero, this
    will now be strictly enforced on the magnitude of the velocity. (#1115)

  • When using AMR and gravity or rotation, the source terms applied after
    a reflux would have been incorrect if the previous timestep had a retry
    (#1020). This has now been fixed. (#1112)

  • We now have the ability to access the problem-specific runtime
    parameters in C++ (#1093)

Release 20.07

02 Jul 12:22
4d30cba
Compare
Choose a tag to compare
  • The master branch has been renamed the main branch. If you have an
    existing clone of Castro, then do the following to update for this
    change. First, do git checkout master if you're not already on the
    old master branch. Then do git pull. This will gather the updates
    to the repo, but will fail with the message Your configuration specifies to merge with the ref 'refs/heads/master' from the remote, but no such ref was fetched. Then you can simply do git checkout main and your local
    repo should automatically switch to that branch and track updates from
    the upstream repo on GitHub. If you like, you can then delete the old
    master branch with git branch -D master.

  • The CUDA build no longer has a requirement that amr.blocking_factor
    be a multiple of 8. Though this is recommended for performance reasons,
    it was previously required due to correctness reasons because of the
    use of an AMReX Fortran function, amrex_filccn. As noted in #1048, this
    function is no longer required due to recent changes in Castro (problems
    overriding bc_fill_nd.F90 or bc_ext_fill_nd.F90 do not need to provide an
    initial fill of the ghost zone data before implementing their specific
    boundary conditions; this is now done for you). Calling this function
    may now result in race conditions and correctness issues in the CUDA
    build, so it should be removed from any problem setups. (#1049)

  • The functionality that permitted the rotation rate to change as a
    function of time, castro.rotation_include_domegadt and
    castro.rotational_dPdt, has been removed. (#1045)

  • A CUDA illegal memory access error in Poisson gravity and diffusion
    has been fixed (#1039).

  • The parameter castro.track_grid_losses has been removed. (#1035)

  • The parameter castro.print_fortran_warnings, which no longer had any
    effect, has been removed. (#1036)

  • PPM reconstruction has been added to the MHD solver (#1002)

  • The Reactions_Type StateData has been reworked so that its first
    NumSpec components are rho * omegadot rather than omegadot; then,
    the NumAux auxiliary components are stored, if the network has any
    auxiliary variables; then, rho * enuc is stored (enuc itself is
    removed), and finally the burn weights are stored. The checkpoint
    version has been incremented, so this version of the code cannot
    restart from checkpoints generated with earlier versions of the
    code. (#927)

  • A bug where refluxing between AMR levels resulted in incorrect results
    when a retry occurred in the previous timestep has been fixed. (#1018)

Castro 20.06

01 Jun 12:32
Compare
Choose a tag to compare

20.06

  • The parameter castro.density_reset_method has been removed. A density
    reset now unconditionally sets the density to small_dens, the temperature
    to small_temp, and zeros out the velocities. (#989)

  • A constrained-transport corner transport upwind MHD solver has been
    added. This can be used by compiling with USE_MPI = TRUE. Presently
    it only works for a single level (no AMR). (#307)

  • A burning timestep limiter dtnuc_T has been added which restricts the
    burning from updating the temperature by more than the factor
    dtnuc_T * T / dT/dt. (#972)

  • The reaction weights metric implemented in version 20.05 (#863) has been
    added to the simplified SDC reactions driver. (#930)

  • When using the simplified SDC integration scheme, we now save new-time
    Reactions_Type data to plotfiles. (#929)