https://github.com/AMReX-Astro/Castro
Tip revision: 76322740c437b37e08d959a0946ea2f2d82402eb authored by guadabsb15 on 20 September 2018, 16:31:11 UTC
compiles with USE_ROTATION=FALSE both in cpu and gpu. Runs for cpu
compiles with USE_ROTATION=FALSE both in cpu and gpu. Runs for cpu
Tip revision: 7632274
CHANGES
# changes since last release
# 18.09
-- we now only trace under sources that are non-zero, to save
computational expense. (#381)
-- we now update T for consistency when we reset a small internal
energy, e (#384)
-- The parameter dual_energy_update_E_from_e has been removed,
and the default behavior is now that the total energy (E)
will not be changed when we reset the internal energy (e).
This will cause changes in simulation output. (#368)
-- The probin parameter eos_input_is_constant is now true by
default. This means that when calling the EOS in the mode
eos_input_re, the energy will not be updated after the EOS
call (e.g. by the Newton iteration scheme in Helmholtz).
This will cause changes in simulation output. (#368)
-- the problem-specific runtime parameters (probin) are now
written to the job_info file (#380)
-- we now skip the initial EOS call prior to the burn -- this
was redundant because we already did a clean_state (#377)
-- we now support recent versions of hypre (#373)
# 18.08
-- the old use_mlmg_solver parameters were removed -- this
has been the only multigrid solver in Castro for some time,
so the parameters had no effect.
-- The parameter dual_energy_eta3 was removed. This had been
introduced mostly for testing purposes and ended up being
unnecessary. Also, the EOS call at the beginning of the burn was
removed; this should provide a modest computational gain. Answers
may change at the level of the EOS tolerance (#377).
-- The functionality that checks for a regrid at the end of
the timestep will now apply all tagging criteria, not
just the t_sound / t_enuc criterion.
-- A bug was fixed that occurred when a retry was triggered in
the middle of a group of subcycles, rather than at the
beginning of the advance (#358).
-- A bug with the logic of refluxing when using retries was
fixed (#357).
-- Tagging can now be done on relative gradients, in addition
to the existing capability for absolute gradients (#354).
For example, tempgrad_rel is a relative gradient criterion
that will tag a zone with temperature T if any adjacent zone
has a temperature that is different by more than tempgrad_rel * T.
The tagging is enabled up to a given level with the parameter
max_tempgrad_rel_lev. The corresponding new tagging criteria
for other fields are named similarly.
-- Retries can now be done in a dynamic fashion (#179). An
advance is itself a subcycled advance always, and we keep
subcycling until we are done with the step. By default we
still do only a single timestep when use_retry is not
enabled, but this helps in cases where we have to reject
the timestep for (say) a CFL violation, and then during
the retry the CFL criterion is violated again. In the past,
we would simply have to abort the run if this happened. Now
we can cut the timestep again and keep going. Additionally,
if you set abort_on_false to F in your probin file's extern
parameters, then a burn in Microphysics will not cause an
abort of the run, and Castro now knows how to deal with that
by doing a retry and taking a shorter timestep (under the
logic that most burn failures come from taking too large of
a hydrodynamic timestep for the burner to be able to keep up).
# 18.07
-- A new GPU (CUDA) hydrodynamics solver (based on the
method-of-lines solver) has been added, based on the work
initially done in StarLord. This is a work in progress, and
requires the "gpu" branch of AMReX.
-- We removed all dependencies on the AMReX F_BoxLib source, in
preparation for this source being removed in the future.
-- we now set the number of variables at compile time, by parsing
the _variables file and interpreting which options are set in the
preprocessor. Note that a side effect of this change is that the
number of radiation groups is now set at compile time instead of
at runtime. This change is needed for the GPU port.
To set the number of radiation groups, set NGROUPS=4, e.g. for
4 groups, in your problem's GNUmakefile. Similar options exist
for neutrinos.
A related change is that it is now possible to set the number
of advected quantities (that are not species or EOS auxillary
fields) via NUMADV in your GNUmakefile.
# 18.06
-- The new multilevel multigrid solvers (MLMG) in the AMReX
framework are now the default for self-gravity and constructing
the operator for explicit diffusion.
-- A new test problem, the classic double Mach reflection, was
added.
-- fix an issue in the retry logic that could sometimes result in
an overflow of the estimated number of subcycle steps.
-- Improved the behavior of retries when they hit CFL violations
(#334, #335).
# 18.05
-- Gamma_1 is now a derived variable
-- a new diffusion solver is implemented that uses the new muligrid
framework in AMReX to compute the diffusive operator. This can be
enabled with diffusion.use_mlmg_solver = 1.
# 18.04
-- The job_info file now indicates which runtime parameters were
changed from their default value (#314)
-- Improvements made to the 4th order hydro solver for single-level
# 18.03
-- The option ppm_trace_sources has been removed -- we now
always trace on source terms with ppm. Additionally, all
sources are now traced, not just momentum sources.
-- The method-of-lines integrator has been rewritten. It now works
properly with sources. Note: it is not intended for multilevel
yet. (#288, #287, #286, #164, #291, #137)
# 18.02
-- The approximate state Riemann solvers have been split into two
parts: the computation of the interface state and the evaluation
of the fluxes from this interface state. This gives additional
flexibililty in using these solvers in other methods.
# 18.01
-- The parameter dtnuc_mode has been removed. This was initially used
for testing various forms of the burning timestep limiter before a
final form was settled on.
-- Minor inconsistencies in how the external and diffusion source terms
were constructed when simultaneously using reactions (#268, #269)
have been fixed (#271).
-- The deprecated parameter castro.use_colglaz is removed. It was
deprecated in June 2016 because it was obsoleted by the parameter
castro.riemann_solver, which can be set to 1 to use the Colella
and Glaz Riemann solver.
-- The state variable indicies in Fortran are now all defined in a
single file, Source/driver/_variables. This makes it much
clearer and consistent and will allow for autodocumentation and
clean-ups for GPU acceleration in the future.
# 17.12
-- The sponge can now operate based on pressure. The new parameters
belong in the sponge namelist, and are named
sponge_lower_pressure and sponge_upper_pressure. It works on the
same principle as the density sponge.
-- The sponge can now drive the system to a particular velocity (the
default is still zero velocity). The new parameters belong in the
sponge namelist in your probin file, and are named
sponge_target_{x,y,z}_velocity.
-- The SDC_Source_Type StateData was removed, as its purpose is now
supplanted by the change to always keep the source terms in
StateData (see below), and it was thus redundant. This does not
change code output but does mean that old checkpoints generated
while using SDC are no longer compatible with the current
code. Normally we strive to maintain forward compatibility of
checkpoints, but this change was considered justified because SDC
is still considered an experimental feature under development and
to our knowledge no production science runs have yet been done
using SDC.
-- The parameter gravity.max_solve_level was removed. This was added
to work around convergence issues in the multigrid solve, but
those convergence issues have since been fixed, so the parameter
is no longer used.
-- The Source_Type StateData now holds the actual old- and new-time
sources (previously it held the source term predictor). This
StateData is used to fill the sources_for_hydro MultiFab which
provides the source terms used in the hydrodynamic update. Since
it is StateData, this operation is done with a
FillPatch. Consequently the sources_for_hydro data has meaningful
data in both physical domain ghost zones and ghost zones at a
coarse-fine interface (previously it only had meaningful data on
fully interior ghost zones). Checkpoints will now have both old
and new data. This change does result in a difference in the
simulation output for simulations with source terms, as the
answer will be different at the boundaries and at coarse-fine
interfaces. (#116, #253) A related bug when using SDC was fixed
too. (#56)
-- The parameter castro.keep_sources_until_end has been removed.
-- Source terms (gravity, rotation, etc.) have now been all
coalesced into a single MultiFab. This reduces the memory
footprint of the code. This negates the need for the code
parameters update_state_between_sources and
coalesce_update_diagnostics, so they have been removed. This will
cause a change in results: the previous code behavior was to
update the state with each successive source term as it was
applied at the new time. Now every source term will be calculated
using the same new-time state (the one coming out of the hydro)
and the source terms are all applied to the state in one shot at
the end. Note that both this and the old approach are
second-order accurate in time. For problems that combine multiple
source terms, this will cause changes that are larger than
roundoff. In particular, if rotation is used in conjunction with
other source terms, changes will be relatively large, because the
Coriolis force depends on the velocity, so the source term is a
bit different now that it is seeing a different velocity. (#165,
#249)
-- As of 17.10, there is a new option castro.plot_per_is_exact. If
this is set to 1, timesteps will be shortened to exactly hit the
time interval specified by amr.plot_per. An issue with this
(#242) was fixed (#243) where an incorrect timestep would be
taken after a restart if the previous step had been shortened.
-- We can now use the new multigrid solver from AMReX (implemented
in C++) instead of the older Fortran solver (#241). This is
enabled with gravity.use_mlmg_solver=1. Note, this only works in
3-d currently. This has several options:
gravity.mlmg_max_fmg_iter = 0 : This integer parameter determines
how many FMG cycles will be performed before switching to
V-cycle.
gravity.mlmg_agglomeration = 0 : This boolean flag determines if
AMR level 0 grids will be agglomerated as the grids are coarsen
in the multi-grid hierarchy.
gravity.mlmg_consolidation = 0 : This boolean flag determines if
grids on an AMR fine level that is in a single-level solve or the
lowest AMR level of a multi-level composite solve will be
consolidated as the grids are coarsen in the multi-grid
hierarchy. Here, consolidation means the grids will be moved to
fewer MPI processes.
Numerical experiments have show this scales better than the old
solver.
-- Apply the sources to the state's ghost zones (#255). This fixes
#213 -- it ensures the advances give a valid update for the ghost
zones in the State_Type.
# 17.11.1
-- Minor bug fixes from the 17.11 release. There is a corresponding
17.11.1 release of AMReX.
# 17.11
-- A bug was fixed in non-Cartesian simulations with AMR
(1D spherical and 2D cylindrical). The bug was introduced
around version 17.02 and resulted in incorrect synchronization
of the pressure term in the momentum equations. The effect
would have manifested as non-conservation of momentum or
strange effects at coarse-fine interfaces.
-- The sponge is now always time centered. The option to
do otherwise was introduced in 17.02, and has now been
removed. Additionally, the form of the energy source
term has been corrected for the time centered case,
and brought into line with how we do the energy source
term for other sources. (Issue #7, Issue #57)
-- Fixed a bug in the fix for #188.
-- Conductivity_dir has been renamed CONDUCTIVITY_DIR to be consistent
with EOS_DIR and NETWORK_DIR
-- we no longer get the compositional derivatives as part of the EOS
call. If you need this functionality, you need to set the
preprocessor variable (in Fortran), EXTRA_THERMO
-- you can now use a system's BLAS routines, instead of compiling
the versions from Microphysics by setting USE_SYSTEM_BLAS=TRUE.
This then looks at BLAS_LIBRARY for the link line.
# 17.10
-- It is sometimes useful to be able to do some sort of initialization
phase in your simulation, stop with a checkpoint, and then restart
(possibly with different options) to do the main phase of the run.
In this case, you may want to reset the simulation time to zero for
analysis purposes. The new option castro.reset_checkpoint_time allows
you to do this: by setting it to the time you want, the checkpoint you
generate will have this new time. Similarly, castro.reset_checkpoint_step
allows you to reset the timestep number (for example, to 0). Both options
only work when you're using amr.checkpoint_on_restart=1, which itself
requires amr.regrid_on_restart=1. This option is only intended to be used
for the case where you're generating this checkpoint, so you also need
to temporarily set max_step and stop_time to the target values you're
resetting them to, to prevent further steps after the restart. After you
have the new checkpoint, then you can undo those temporary variables
and continue your run as usual.
-- A minor error in the gravity source terms was fixed (#109).
This error should not normally have been observable.
-- fixed a bug in the artifical viscosity in 1-d in
non-Cartesian geometries (issue #175)
-- the README.md now describes the process to become a
"core developer" of Castro, and what this means.
-- Network_dir has been renamed NETWORK_DIR and EOS_dir has been
renamed EOS_DIR. All of the problem GNUmakefiles have been
updated. The old names will continue to work in the near future,
but users are encouraged to change any of their problems to use
the new all-caps names (PR #184)
-- the density flux limiting functionality now has a small tolerance
(#185). It has also been documented (#193).
-- the timestep retry is now conservative -- this was accomplished
by saving the density fluxes to use in the conservative gravity
update (#178). Also, a bug in the timestep retry for Poisson
gravity was fixed (#188).
# 17.09
-- the Source/ directory structure has been reorganized,
putting the source files into directories by physics and
eliminating the Src_1d, Src_2d, ... subdirectories
-- the Riemann solvers have been merged into a single
dimensional-agnostic version in Src_nd. In 2-d there was an
issue with how the Godunov state for the CG solver was stored on
interfaces, which would affect the internal enery evolution.
-- the PLM and PPM reconstruction routines were merged into
a single dimensional-agnostic version in hydro/
-- the characteristic tracing routines were merged into
dimensional-agnostic versions in hydro/ and radiation/. This
change fixed and outstanding issue -- the PLM reconstruction in
1-d now uses a reference state. (issue #11)
# 17.08
-- the option castro.limit_fluxes_on_small_dens now only limits
on density as the name suggests. It originally also limited
fluxes if the internal energy would go negative, but this
caused problems in runs with MPI, so it was removed. It was
not strictly needed anyway, as the normal logic for handling
negative internal energies is reliable.
-- two errors were fixed in the implementation of the triggered
regrid at the end of a timestep. The method now correctly conserves
fluid variables at coarse-fine boundaries.
-- the XGRAPH stuff that output xmgr-compatible 1-d ASCII profiles
-- fixed a bug where the gravity runtime parameters were not
being properly initialized in the Fortran side of the code.
-- the viscosity routine is now separate from conductivity
in Microphysics/. Also, Castro can now use the stellar
conductivity that is part of StarKiller.
-- the StarKiller-astro Microphysics repo now uses a denser table
for the Helmholtz EOS (thanks to Frank Timmes). If you are using
this EOS, the new table will be soft-linked to your build
directory automatically. If you have an old copy laying around,
it might fail to run, with an I/O error.
# 17.07
-- start of some code cleaning for eventual GPU offload support
merging from StarLord
-- added a framework for method-of-lines integration of the
hydrodynamics. This does not do characteristic tracing, but
instead does reconstruction through multiple stages of an ODE
integrator. At the moment, radiation is not supported.
# 17.06
-- we now require the AMReX library instead of the BoxLib library
-- the Microphysics repository that we rely on for the EOS and
reaction networks is now part of the starkiller-astro github.
You can change your clone to refer to this via:
git remote set-url origin ssh://git@github.com/starkiller-astro/Microphysics
-- a new mechanism for using a stability criterion to trigger
a regrid at the end of a timestep was added (PR #122)
-- some cleaning of the logic for momentum fluxes and
limit_hydro_fluxes_on_small_dens (issues #130, #131)
# 17.05
-- some protections added in the retry code
# 17.04
-- rewrote the conservative gravity formulation to work off of the
potential. This gives the best conservation with AMR. This is
equivalent to the description in Appendix B from Katz et
al. (2016).
# 17.03
-- the new refluxing method introduced in 16.11 has been removed,
as it was determined to not provide any benefit in accuracy.
-- new derived plot variables are available when using thermal
diffusion, including the conductivity, diffusion coefficient, and
the entire diffusion term to the energy equation. (issue #104)
-- when all derived variables were stored in the plotfile, we were
storing the mass fractions twice. E.g. for he4, we were saving
"he4" and "X(he4)". Now only the latter is stored.
-- created a post_simulation() function that is called at the end of
a simulation. An example is provided by test_diffusion where we
output the norm of the error against the analytic solution.
(issue #107, 108)
# 17.02
-- diagnostic information about how source terms update the state
has been overhauled and made uniform. All source terms, including
hydro and resets, print their changes to the state in the same
format. The parameter print_energy_diagnostics has been renamed
print_update_diagnostics, and a new parameter
coalesce_update_diagnostics has been added so that you can
combine all of the old-time and new-time updates into one print.
(issue #58)
-- to support both single and double precision, all of the floating
point declarations use the amrex_real type defined in the
amrex_fort_module -- this is set to single or double precision at
compile time. All constants also now use this type. For
brevity, we rename it to 'rt' in the use statement. (issue #34)
-- the sponge is now time-centered by default (issue #7)
-- the ppm_temp_fix stuff has been documented and made
consistent across dimensions (issue #25)
-- the job info git information is now the output of git describe,
this gives more information, including the last tag, how far we
are from the tag, and an abbreviated hash. It also indicates if
your working directory is dirty
* 17.01
-- the radiation-specific version of computeTemp has been removed
and instead everything goes through the main Castro computeTemp.
This affects, in particular, how we treated small internal
energies in radiation. (issue #64)
-- the radiation-specific versions of umeth and consup have been
merged with the pure hydro routines. This gives round-off level
differences. This also now uses all velocity components in the
kinetic energy correction for radiation. (issues #66, 70)
-- a minor bug was fixed in the 3-d radiation characteristic tracing,
regarding which gamma_1 (gamc) is used.
* 16.12a
-- fix a restart bug with radiation that was introduced after 16.10
(this was cherry-picked from development) (issues #76, 78)
* 16.12
-- BoxLib now requires a C++ 11 compiler by default. As part of
this transition, PArrays are replaced by C++ Arrays.
Additionally, changes to the BoxLib build system mean that we
only need to supple COMP for the compiler. FCOMP is now
ignored.
-- The User's Guide has been updated to reflect the current flow of
the algorithm.
* 16.11
-- we now distinguish between gravity (which can include a
constant gravitational acceleration) and self-gravity,
with the GRAVITY and SELF_GRAVITY preprocessor directives
-- some work on the sync between levels was done -- this will
be described in a forthcoming paper. The main change by default
is that after a reflux, we recompute the value of the source terms
on the affected levels so that the new-time source term knows about
the updated state due to the flux. For gravity, this resembles
what the original Castro paper described for a sync source, but this
is now done in a consistent way for all source terms. This should be fairly
cheap which is why it is enabled by default, but you can disable it
(see castro.update_sources_after_reflux). An additional optional
change is a new strategy for refluxing (see castro.reflux_strategy).
In the existing standard method, we only reflux after all fine timesteps
over a coarse timestep have completed. In the new method, we do a
partial reflux at the end of each fine timestep. This means that
the coarse state used in time interpolation for the fine level
is slightly more accurate as we go for later fine timesteps. It
should also be needed for self-consistently conserving energy for gravity.
At present it is more expensive than the standard method when there
are gravity sync solves because there are more of them, but the tradeoff
is that the simulation is more accurate.
-- the order of computing the temperature and reseting internal
energy was changed in a few spots. This will change results by default.
-- the radiation-specific source was moved into the Radiation/
subdirectory
* 16.10
-- the parameter first_order_hydro has been moved from the
radiation namespace to the castro namespace
-- the problem setups have been moved into sub-directory
categories to make it easier to read (issue #32)
-- the way we we use tolerances in the multigrid solve for Poisson
gravity has changed. The old behavior is that you would pass in
gravity.ml_tol as the relative tolerance on each grid level, and
absolute tolerances would not be used. This suffered from some
defects, notably that on fine grids you often had to loosen the
relative tolerance on each higher level to achieve convergence,
and in certain cases the scheme would fail completely, for
example if the fine grids were not covering the mass on the
grid. We now use an input parameter gravity.abs_tol which
controls the absolute scale of the tolerance. This can either be
an array of values, one for each level, or a single scalar
value. If it is the latter, then the absolute tolerance passed
into the multigrid scheme is the tolerance multiplied by the
maximum value of the RHS over the entire domain. On the coarse
grid, then, the absolute tolerance is 4*pi*G*rho_max*abs_tol, and
on fine grids this is multiplied by ref_ratio**2. If you do not
specify gravity.abs_tol, then a reasonable value is selected for
the coarse level, and the same scheme is used to give it
reasonable values on the fine levels as well. The parameter
gravity.ml_tol has been renamed gravity.rel_tol, and has the same
meaning as before, but it now defaults to zero. gravity.ml_tol is
now deprecated, and will be removed in a future release. Note
that the tolerance used in determining convergence is always the
less restrictive of the relative and absolute tolerance
requirements. gravity.delta_tol has been removed. (issue #43)
-- the radiation hydro solver, that used to live in
CastroRadiation.git has now been completely integrated into the
main Castro git repo. The history was preserved in the
transition It has also been cleaned up a little (issues #24, #31,
#33, #48)
The radiation build variable Network_inputs was renamed
to NETWORK_INPUTS for consistency.
The EOSes that used to come with CastroRadiation are available
in Microphysics.git
-- the gravity and diffusion runtime parameters have been moved
to the master _cpp_parameters file (issue #42)
-- enthalpy, species, and temperature diffusion are now properly
time-centered (issue #22), and a bug in the hi boundary
inflow boundary conditions for diffusion was fixed (issue #41)
-- a flux limiter has been added that limits the size of the hydro
fluxes if they would cause rho or (rho e) to go negative. This
can be used with castro.limit_hydro_fluxes_on_small_dens = 1.
-- a bug for single-level problems with Poisson gravity has been
fixed where the multi-grid tolerance was being set to an
uninitialized value
-- a flaw in the source terms for the primitive variables in the
hydro update has been fixed, so that source terms like gravity
should no longer affect the pressure and (rho e) interface states
(issue #19)
-- the prediction of source terms to the half-time used in the
hydrodynamics reconstruction was not being done properly.
This has been fixed (issue #18)
-- the radiation hydro ppm now implements the ppm_predict_gammae
option
-- we no longer ship VODE or BLAS with Castro -- these are provided
by the separate Microphysics git repo
-- the documentation of the architecture of Castro has been
significantly improved (issues #20, #23, #29, #31)
* 16.09:
-- the PPM tracing routine for radiation was synced up with the pure
hydro version. In particular, it now supports ppm_trace_sources,
implements the reference states and fixes an issue with the
flattening.
-- The 1-d PPM routine was also updated to support tracing,
predicting gamma_e instead of (rho e), and an inconsistency in
the flattening was fixed.
-- the parameters ppm_reference and ppm_reference_edge_limit
have been removed -- there was no reason to use anything other
than the defaults
-- the parameter ppm_tau_in_tracing has been removed. The useful
part of this is preserved in the ppm_predict_gammae = 1
functionality, which uses a different set of primitive variables
(tau, u, p, gamma_e) in the prediction of the interface states.
-- the flux correction for axisymmetric and 1-d spherical coords
has been fixed. In particular, there is now a separate flux
register for the pressure term that enters as a gradient in the
momentum equation.
-- The sign on the gravitational potential has been flipped to be
consistent with the usual convention in the physics literature,
i.e. the potential is negative and we solve del**2 phi = 4 * pi *
G * rho.
-- Castro_advance.cpp has been significantly cleaned up. Each source
term (gravity, rotation, diffusion, etc.) has a MultiFab
associated with it through which it affects the state data. This
has changed results slightly (typically a relative change no
larger than the 1e-4 level) due to updates in the order of
operations and consistency in usage on ghost zones.
-- An iterative solver for coupling between reactions and
hydrodynamics has been introduced, which you can enable with
USE_SDC = TRUE in the makefile. The number of iterations done for
each timestep is controlled with castro.sdc_max_iters.
-- We changed the defaults for the gravity and rotation sources.
now we do grav_source_type and rot_source_type = 4 by default.
This is a conservative formulation for the energy equation that
incorporates the source as a flux in the energy equation. See
Katz et al. 2016 for details.
We also do implicit_rotation_update = 1 by default -- this does a
slightly better coupling of the Coriolis force in the momentum
equation by doing an implicit velocity update
We also make ppm_trace_sources = 1 the default -- this does
parabolic reconstruction of the momentum sources and traces
under them when constructing the interface states
-- we now set castro.cg_blend = 2 by default. This has no effect for
the default CGF Riemann solver, but for the Colella & Glaz solver
(castro.riemann_solver = 1), this will augment the secant iteration
for the pstar find with bisection if we fail to converge. This
makes the root find for the star state more robust.
-- a new "fake" setup, riemann_test_zone can be use to send a left /
right hydro state to the CG Riemann solver for testing -- this acts
as a unit test for that solver.
-- the default for castro.allow_negative_energy is now 0 -- this is
the safer choice.
-- the default for castro.point_mass_fix_solution was changed to 0
-- this is a more expected behavior for new users.
* 16.08
-- A new parameter gravity.max_multipole_moment_level was added.
This comes into play when using the multipole solver to compute
the boundary conditions on the domain for isolated mass
distributions. The default behavior in Castro when constructing
boundary conditions for the gravity solve is to do a multipole
expansion sum over the density on the coarse grid only. If you
increase the value of that new parameter from its default of 0 to
some higher number, it will use the data from those more refined
levels in constructing the boundary condition values.
-- The file sponge_nd.f90 in Source/Src_nd/ has been renamed to
sponge_nd.F90, the file extension change indicating that it can
now be run through the preprocessor. Please update your local
name for this file if you're overriding it in your problem setup.
-- The sponge update is usually done in an implicit fashion,
but you can now instead do an explicit update with
castro.sponge_implicit == 0.
-- the shock variable is now output if we are running with shock
detection enabled
-- Microphysics/eos is now Microphysics/EOS
-- a number of changes were done in the Microphysics repo -- see
Microphysics/CHANGES for a log of those
* 16.07
-- For consistency across the BoxLib suite of astro codes, we've
renamed the main environment variables. CASTRO_HOME now replaces
CASTRO_DIR; MICROPHYSICS_HOME now replaces MICROPHYSICS_DIR.
-- The EOS, network, and conductivity routines have been moved to
sub-directories or Castro/Microphysics/. This reflects the way
the layout in the standalone Microphysics repo as well as that in
Maestro.
-- Some of the routines in Source/Src_nd/ have been renamed from
.f90 files to .F90 files so that we can use the preprocessor. If
you were using any of them (Prob_nd.f90, problem_tagging_nd.f90,
Rotation_frequency.f90, or ext_src_nd.f90) by having local copies
in your problem directory that overwrote them, please be sure to
update the file extension so that Castro will recognize them.
-- If you were using allow_negative_energy == 0, the case where
(rho*E), the total gas energy of the zone, was negative was
indirectly covered and it would be reset in this case due to the
way the logic worked for resetting the internal energy and then
updating the total energy to be consistent with it. However at
one point we added an option castro.dual_energy_update_E_from_e
which disabled that second update and also meant that negative
(rho*E) was again possible. This possibility has now been
precluded directly, by resetting (rho*E) the same way if we
detect that it is negative. This should not change results unless
you were using castro.dual_energy_update_E_from_e = 1. This is
also a good time to plug the newer option
castro.allow_small_energy, which if set to 1 will reset when you
hit a (rho*e) that is less than the smallest possible energy for
the (rho, small_temp, X) in that zone. Note that it requires an
extra EOS call.
-- The default interpolation for coarse zones into fine zones is
piecewise linear. There is now an option to use piecewise
constant instead -- set castro.state_interp_order to 0. Note that
if you use piecewise linear you can set
castro.lin_limit_state_interp to 1 if you want to preserve linear
combinations and therefore guarantee that, say, sum(X) = 1.
-- If you set the new option castro.limit_fluxes_on_small_dens = 1,
the fluxes will be explicitly limited such that a negative
density is never created.
-- Along similar lines, there are also new options for how to reset
a negative density if one should arise. Set
castro.density_reset_method = 2 to use the average of all
adjacent zones instead of the default, which is the
characteristics of the adjacent zone with the highest
density. Set it to 3 if you want to reset it to the original zone
state before the hydro update.
-- We have fixed an issue where diffusion did not work correctly if
add_ext_src = 0. The diffusion source term is now independent of
whether you have user-defined source terms.
-- ConvertCheckpoint/ now lives under Util/
-- UsersGuide/ is now Docs/ -- this is consistent with the other
BoxLib codes
-- Burning is no longer done in ghost cells for boundaries with
neighbors on the same level of refinement. Instead a ghost cell
fill is done to fill the like-level neighbor cells. As a
consequence of this change, if reset_internal_energy() is invoked
in a cell, to reset the internal energy to E - K, this reset is
now reflected in the ghost cells (this is a more consistent
behavior). Previously, the energy was never reset in the ghost
cells.