Releases: AMReX-Astro/Castro
Release 21.02
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
-
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
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
andproblem_restart
are moved to C++ from Fortran. See
Exec/science/wdmerger for an example of the new scheme.Problem.f90
andProblem_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 theMake.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
-
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
JOSS_paper JOSS paper
Release 20.10
-
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 aremax_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), andfield_name
(name of the string defining the field in the code). If a refinement indicator
is added, eithervalue_greater
,value_less
, orgradient
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
-
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
-
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
-
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, dogit checkout master
if you're not already on the
old master branch. Then dogit pull
. This will gather the updates
to the repo, but will fail with the messageYour configuration specifies to merge with the ref 'refs/heads/master' from the remote, but no such ref was fetched.
Then you can simply dogit 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 withgit 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
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)