Recent Releases of CASTRO
CASTRO - Release 25.08
25.08
hse_convergence: theREADME.mdnow has details on the convergence rate (#3113, #3115)fix some compiler warnings when building in 1D without gravity or reactions (#3114)
fix the true SDC compilation (#3112)
flame_wave: update the enuc plot scripts to deal with negative values well. (#3108)flame: update the analysis scripts (#3106) and the H/He inputs file (#3102, #3107)doc cleanings (#3101)
fix bounds issue in 1D cylindrical (#3105)
have gitignore ignore diag files (#3103)
introduce a new initial model format with a simpler header (#3100)
subchandra: the initial model is now generated by the problem initialization (#3093)update
Detonation andnse_test` for the NSE solver changes (#3088)flame_wave: some C++ fixes (#3098)clang-tidy script changes (#2795)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] 12 months ago
CASTRO - Release 25.07
25.07
display warnings about unused parameters more prominently (#3094)
update the comment on
castro.use_pslopeto note it works with PPM (#3091)fix doc building (#3083, #3090)
update
xrb_layeredanalysis scripts (#2980)for
subchandra, disable burning in shocks + add a new 3D inputs (#3078), and fix the colormaps in the plot scripts (#3082)for
Detonation, disable burning in shocks (#3076)docs improvements (#3085)
update
flame_wavewith the inputs files used for the recent H/He flame paper (#3087)CI updates to sync with Microphysics (#3081, #3089)
update deprecated call in MLMG (#3084)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 1 year ago
CASTRO - Release 25.06
25.06
update
subch_planarREADME.md(#3075)update
diffusion_testwith improved documentation for the 2D spherical test (#3072)add protection to the build system that checks to make sure that a
make cleanis done before we try to build with a different network. (#3073)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 1 year ago
CASTRO - Release 25.05
25.05
update nova inputs are README (#3066)
clang-tidy clean-ups (#3064, #3069)
fix some loop initialization and shadowing issues in the diffusion test (#3068, #3070)
update Sod analysis scripts for NumPy 2.x (#3065)
update
xrb_sphericalanalysis scripts (#3013)update scaling numbers for
flame_wave(#3058)update
massive_starREADME file (#3059)add a new analysis script to
Detonationthat shows the structure at a single time, including composition (#3061)fix shadowing in
timestep.cpp(#3063)update
subch_planarinputs and README (#3062)have the
job_infofile capture theEXTRACXXFLAGSin the build system (#3057)clean up the
flameproblem and make the inputs files clearer + add one for carbon flames. Also update the analysis scripts (#3056)fix CI test branch issues (#3060)
add Bessel-Legendre initial conditions for the 2D diffusion test in spherical geometry (#3054)
update the
flame_waveanalysis script to allow for parallel runs, interactivity, and performance (#3030)fix the
divu,magvort, anddifftermplot variables for 2D spherical geometry (#3055)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 1 year ago
CASTRO - Release 25.04
25.04
for spherical geometry, allow the inner BC to not be at zero for diffusion test problem (#3047) and improve the plotting script (#3041)
allow Castro to create the div{k grad{T}} diffusion term instead of using the MLMG routines from AMReX (#3048)
fix the spherical boundary check at initialization (#3046)
make
NUM_GROWandNUM_GROW_SRCconstexprfix a NaN in
transverse_use_eoswhen running in 3Dset
USE_SHOCK_VAR=TRUEby default for theDetonationproblem.
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 1 year ago
CASTRO - Castro 25.03
25.03
nova problem: update the inputs to match Smith Clark & Zingale (2025) and support 3D (#3031, #3040)
docs updates (#3039)
update the network names for the subchandra and subch_base problems (#3033)
update the HIP CI action to support a later runner (#3034)
add support for printing from
check_for_namefrom GPUs (#3036)remove some old sparse Jacobian stuff from the build system (#3035)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 1 year ago
CASTRO - Release 25.02
25.02
docs updates (#3027)
add the
simple_convectionproblem (#3016)codespell CI updates (#3025)
only print mid-timestep
estTimeStepoutputs if relevant (#3023)CI updates to match Microphysics changes (#3021, #3024)
remove some old comments related to Fortran (#3022)
fix a tiling issue with shock detection on CPUs (#3019)
remove unneeded files from problem setups (#3018) and fix comments in problem setup
GNUmakefiles
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 1 year ago
CASTRO - Release 25.01
25.01
address rotation source in spherical 2d coordinate (#2967)
update scripts and input files for diffusion test (#3012)
update pressure via eos when transverseuseeos=1 (#3004)
update thermal diffusion documentation (#3011)
rename
Opacity_dir->OPACITY_DIR(#3006)sync GPU CI dependencies with AMReX (#3010)
wdmerger: update inputs for He mergers to include burn retry and adjust I/O (#3008)
fix area/vol factors for spherical when theta is close to 0 or pi (#3007)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 1 year ago
CASTRO - Release 24.12
24.12
update clang-tidy CI (#2992, #3002)
fix
problo!= 0 in non-Cartesian coords (#3001)fix
apply_avin spherical (#3000)update
xrb_sphericalanalysis (#2999)add spherical support to plm (#2996, #2997)
fix coverity issue (#2998)
fix geometric source term in ppm tracing for spherical (#2995)
fix dloga for non-radial direction in tracing (#2994)
fix
scale_fluxin 1d for Cartesian (#2991)add the
xrb_sphericalproblem setup (#2972)add a new distance function that works for all geometries (#2990)
fix confusing geom name in derive (#2989)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 1 year ago
CASTRO - Release 24.11
24.11
a new well-balanced method was added to the CTU PPM solver. This does the characteristic projection only on the perturbed pressure and then adds back in the hydrostatic pressure. It can be enabled via
castro.ppm_well_balanced(#2945)fixed a bug in the div{U} calculation for artificial viscosity on symmetry boundaries (#2983)
more development on 2D spherical geometry (#2973, #2975, #2981)
updates to the massive star plotting scripts (#2979)
add some new checks to prevent running unsupported combinations of solvers (#2978)
documentation updates (#2977)
flame_wavecan now be run in 1D (#2976)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 1 year ago
CASTRO - Release 24.10
24.10
update initial model for
subchandrawhen doing ASE NSE (#2970)massive_starplot tweaks (#2968)start of work on 2D spherical geometry (#2953, #2954, #2955,
2957, #2958, #2959, #2961, #2962, #2964, #2965)
the gresho problem now takes Mach number instead of p0 as input (#2951, #2963)
the PPM geometric source terms in the normal predictor are now traced to the interfaces (#2473)
subch_planarnow works in 1D (#2952)remove old
get_const_grav()function (#2956)clang-tidy fixes to radiation (#2950)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 2 years ago
CASTRO - Release 24.09
24.09
Code clean-ups / clang-tidy (#2942, #2949)
update the
hse_convergencereadme to reflect current convergence (#2946)update the
bubble_convergenceplotting script (#2947)new Frontier scaling numbers (#2948)
more GPU error printing (@3944)
science problem updates:
flame_wave(#2943)documentation updates (#2939)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 2 years ago
CASTRO - Release 24.08
24.08
lazy QueueReduction has been enabled for the timing diagnostics (#2926)
The
job_infofile output now correctly labels the compute time as GPU-hours instead of CPU-hours when running on GPUs (#2930)We can now output warnings when running on GPUs if you build with
USE_GPU_PRINTF=TRUE(#2923, #2928)Code clean-ups / sync with Microphysics (#2900, #2901, #2905,
2906, #2909, #2912, #2919, #2922, #2932, #2933, #2936, #2938,
2940)
The area weighting in the diagnostics in
subch_planarwas fixed (#2885)A script to produce a resolution study for the
circular_detproblem was added (#2857)science problem updates:
xrb_layered(#2917),nova(#2913),wdmerger(#2907, #2918, #2931),Detonation(#2902)updated scaling results on Frontier (#2904, #2914, #2915)
more exact Riemann solver clean-up (#2896, #2897, #2898) and clean-ups to the two shock solvers (#2895)
fix issues with eigenvectors and clang-tidy in the MHD solver (#2880)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 2 years ago
CASTRO - Release 24.07
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 2 years ago
CASTRO - Release 24.06
24.06
Doc updates (#2839, #2842, #2846, #2851, #2854, #2860)
Sync problem and Castro runtime parameters to recent Microphysics changes (#2838, #2845, #2861)
fix parsing in the
check_params.pyscript (#2850)code cleaning (#2840, #2842, #2843)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 2 years ago
CASTRO - Release 24.05
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 2 years ago
CASTRO - Release 24.04
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 2 years ago
CASTRO - Release 24.03
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 2 years ago
CASTRO - Release 24.02
24.02
Lot's of code fixes from coverity and clang-tidy (#2736, #2734,
2735, #2731, #2732, #2733)
Fix the boundary condition logic at a wall for Detonation (#2722)
Reimplement the shock detection algorithm to account for sources and do a better job in multidimensions (#2711, #2710, #2709, #2704)
Start the process of moving the runtime parameters to structs (#2688)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 2 years ago
CASTRO - Release 24.01
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 2 years ago
CASTRO - Release 23.12
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 2 years ago
CASTRO - Castro 23.11
23.11
Problem GNUmakefiles have been standardized and now allow for the problem to be compiled elsewhere (#2640, #2641, #2642, #2643)
The true-SDC Newton solver has been made more robust and faster (#2586, #2602, #2605, #2606)
Several problems that required the initial model grid spacing to be specified in the inputs file now automatically compute it as needed, including
flame_wave(#2610),convective_flame,bubble_convergence, andhse_convergence(#2624),double_bubble,gamma_law_bubble, andhse_convergence_general(#2612)Outflow boundary conditions for the 4th order solver have been changed to no longer use the one-sided stencil (#2607)
The caradsource hook in Fortran has been removed. The existing problemradsource() hook in C++ can be used instead. (#2626)
The compile option USEAUXUPDATE has been removed. If you want to manually update the auxiliary parameters, you can use an external source term or you can use the problem post-timestep hook. (#2614)
The pressure is now always included in the x-momentum flux in 1-d Cartesian, and this fixes an issue at jumps in refinement with the pressure gradient (#2468)
A bug was fixed in the 4th order diffusion operator that was introduced when it was originally converted to C++ (#2592)
The 2nd order Radau integrator had the wrong quadrature weights (#2594)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 2 years ago
CASTRO - Release 23.10
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 3 years ago
CASTRO - Release 23.09
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 3 years ago
CASTRO - Release 23.08
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 3 years ago
CASTRO - Release 23.07
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 3 years ago
CASTRO - Release 23.06
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 3 years ago
CASTRO - Release 23.05
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 3 years ago
CASTRO - Release 23.04
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 3 years ago
CASTRO - Release 23.03
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 3 years ago
CASTRO - Release 23.02
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 3 years ago
CASTRO - Release 23.01
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 3 years ago
CASTRO - Release 22.12
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 3 years ago
CASTRO - Release 22.11
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 3 years ago
CASTRO - Release 22.10
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 4 years ago
CASTRO - Release 22.09
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 4 years ago
CASTRO - Release 22.08
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 4 years ago
CASTRO - Release 22.07
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 4 years ago
CASTRO - Release 22.06
22.06
castro.stoppingcriterionfield and castro.stoppingcriterionvalue have been added; these allow you to stop the simulation once a certain threshold has been exceeded (for example, if the temperature gets too hot). (#2209)
The option castro.showcenterofmass has been removed. If castro.v = 1 and castro.suminterval > 0, then the center of mass will automatically be included with the other diagnostic sums that are displayed. (#2176)
The option castro.stateinrotating_frame has been removed. The default behavior continues to be that when rotation is being used, fluid variables are measured with respect to the rotating frame. (#2172)
The default for usepslope has been changed to 0 -- disabling this. usepslope enables reconstruction that knows about HSE for the PLM (castro.ppm_type = 0) implementation. Since that method is not the default, it is unlikely that this has been used. This change is being done to allow for a PPM implementation to be added without changing the default behavior of that method. (#2205)
The
castro.use_pslopefunctionality to well-balance HSE has been extended to PPM (#2202)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 4 years ago
CASTRO - Release 22.05
A new option castro.hydromemoryfootprint_ratio has been added which can help limit the amount of memory used in GPU builds. (#2153)
In #1379, for the 21.04 release, Castro added a check that issued an abort if any species mass fraction was found to be invalid (defined by being less than -0.01 or greater than 1.01). This helps us catch unintended code errors that do not properly normalize updates to the species. (This was originally only enabled for CPU builds, but in the 22.04 release was extended for GPU builds, as noted below.) However, as observed in #2096, this issue can legitimately be triggered in regions of sharp composition and density gradients as an unavoidable consequence of how the multi-dimensional CTU solver is designed. An example would be a helium shell around a C/O white dwarf at low to moderate spatial resolution. This was causing the code to abort in a couple of science problems, so several improvements were added to the code in this release to address it. In #2121, we turned this situation into a retry after a hydro update rather than an abort, so that the code has more chances to recover by doing an advance with a smaller timestep. However, this will not always allow you to recover, particularly if you are in an area where density resets are occurring and/or you are using castro.limitfluxesonsmalldens, so we also added a new option castro.abundancefailurerhocutoff in #2124, which allows you to set a density threshold below which invalid mass fractions will be silently ignored (and reset to valid values between 0 and 1). We also turned the invalid mass fraction threshold into a runtime parameter castro.abundancefailure_tolerance (#2131), so that you can optionally loosen or tighten the strictness of this check.
Since this scenario was sometimes occurring during the reflux step in AMR simulations, we also improved the reflux code to avoid doing the flux correction locally in zones where it would cause an invalid mass fraction (#2123).
While doing these changes we noticed also that the option castro.limitfluxesonsmalldens was sometimes inadvertently aggravating this problem by creating physically implausible fluxes of the species, so we simplified the algorithm to avoid that. (#2134)
The option castro.limitfluxesonlargevel has been removed. (#2132)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 4 years ago
CASTRO - Release 22.04
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 4 years ago
CASTRO - Release 22.03
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 4 years ago
CASTRO - Release 22.02
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 4 years ago
CASTRO - Release 22.01
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 4 years ago
CASTRO - Release 21.12
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 4 years ago
CASTRO - Release 21.11
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 4 years ago
CASTRO - Release 21.10
21.10
A new option,
castro.drive_initial_convectionwas added that uses the temperature interpolated from the initial model instead of the value on the grid to call the reactions. This helps prevent a reactive zone from burning in place before a convective velocity field is established to carry off the energy.The
burn_weightsare no longer stored by default in the plotfile. Instead, they are now enabled by setting castro.storeburnweights=1. Additionally, they now give a better estimate of the cost for the numerical Jacobian (#1946, #1949)castro.change_maxis now required to be greater than 1.0. To enforce a timestep cap but still allow the timestep to decrease, use castro.max_dt. (#1976)Gravity was modified to introduce parallel plane gravity with a point mass by setting the radius of the star by
castro.point_mass_location_offsetand the integercastro.point_mass_offset_is_true== 1. By default, both parameters are 0.0 and 0, respectively.
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 5 years ago
CASTRO - Release 21.09
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 5 years ago
CASTRO - Release 21.08
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 5 years ago
CASTRO - Release 21.07
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 5 years ago
CASTRO - Release 21.06
21.06
Starting with this release, problem setups written in Fortran are no longer supported and will no longer work. Please consult the code documentation and example problem setups in Exec/ to understand the new problem setup format. If you need help converting a Fortran setup to C++, please file an issue. (#1728, #1732)
Sponge parameters are now only accepted through the inputs file; the &sponge namelist in the probin file is no longer read. (#1731)
Ambient parameters are now only accepted through the inputs file; the &ambient namelist in the probin file is no longer read. (#1742)
The updatespongeparams hook has been removed. (#1716)
The Fortran problem-specific source file, extsrcnd.F90, has been removed. Problem-specific sources should be implemented in C++ in problem_source.H. (#1856)
Support for the legacy tagging scheme based on probin parameters (denerr, tempgrad, etc.) has been removed. These can be replaced with equivalent tagging criteria constructed in the inputs file; see the docs or examples in Exec/ to see how to use
amr.refinement_indicators. (#1834)The Fortran setproblemtags hook has been removed. The C++ replacement is
problem_tagging()inproblem_tagging.H. (#1828)The PrescribedGrav functionality has been removed (not replaced with a C++ implementation). If you want to obtain the same functionality, you can use a problem-defined source term (look for problem_source in the documentation) and make the appropriate modification for applying it directly to the state (e.g. the momentum source term is rho * g). (#1854)
The custom radiation boundary using lobcflag and hibcflag coupled with an implementation of rbndry has been removed. (#1743)
We no longer store Reactions_Type in checkpoint files. This means that newer versions of Castro will not restart from old version.
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 5 years ago
CASTRO - Release 21.05
The parameter useeosin_riemann was removed -- we found no instances of it being used (#1623)
The option castro.applysourcesconsecutively was removed (#1636)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 5 years ago
CASTRO - Release 21.04
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 5 years ago
CASTRO - Release 21.03
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 5 years ago
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)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 5 years ago
CASTRO - 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 probparams files throughout the source tree. We read the problem's file last and that takes precedence over any other probparams files found. (#1500)
The timestep limiter dtnucT has been removed. dtnuce 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).
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 5 years ago
CASTRO - 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, exthypfill, and extdenfill 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_checkpointandproblem_restartare moved to C++ from Fortran. See Exec/science/wdmerger for an example of the new scheme.Problem.f90andProblem_F.Hare now deleted from the code; if you were using these to implement problem-specific functionality, you can still manually add these files to theMake.packagefor 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)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 5 years ago
CASTRO - 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)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] over 5 years ago
CASTRO - Castro JOSS paper
Scientific Software - Peer-reviewed
- C++
Published by zingale almost 6 years ago
CASTRO - 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.maxlevel = 1 amr.refine.dens.valuegreater = 2.0 amr.refine.dens.field_name = density
amr.refine.temp.maxlevel = 2 amr.refine.temp.valueless = 1.0 amr.refine.temp.field_name = Temp ```
amr.refinement_indicatorsis 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), andfield_name(name of the string defining the field in the code). If a refinement indicator is added, eithervalue_greater,value_less, orgradientmust be provided.Automatic problem parameter configuration is now available to every problem by placing a probparams 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
problemnamespace) 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 probdatainit() is no longer required in amrexprobinit(). (#1226)
Problems may now be initialized in C++ instead of Fortran. Instead of implementing amrexprobinit() and cainitdata(), the problem should implement the analogous functions initializeproblem() and initializeproblemstatedata(). 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 interpolatend.F90 file has been moved to Util/interpolate and is only compiled into Castro if you set USEINTERPOLATE=TRUE
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 6 years ago
CASTRO - 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 plmiorder, just as with hydro. There is an additional option, mhdlimit_characteristic, that determines if the limiting is done on the primitive or characteristic variables (the default).
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 6 years ago
CASTRO - Release 20.08
Rotation_Type has been removed from StateData. (#1128)
castro.usepoststep_regrid now unconditionally regrids after every timestep on every level. (#898)
An issue with gravity.maxsolvelevel 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)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] almost 6 years ago
CASTRO - 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, do
git checkout masterif 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 mainand 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.blockingfactor 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, amrexfilccn. As noted in #1048, this function is no longer required due to recent changes in Castro (problems overriding bcfillnd.F90 or bcextfill_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.rotationincludedomegadt 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.trackgridlosses has been removed. (#1035)
The parameter castro.printfortranwarnings, 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)
Scientific Software - Peer-reviewed
- C++
Published by github-actions[bot] about 6 years ago
CASTRO - Castro 20.04.1
Scientific Software - Peer-reviewed
- C++
Published by maxpkatz about 6 years ago
CASTRO - Castro 20.06
20.06
The parameter castro.densityresetmethod has been removed. A density reset now unconditionally sets the density to smalldens, the temperature to smalltemp, 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 dtnucT has been added which restricts the burning from updating the temperature by more than the factor dtnucT * 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)
Scientific Software - Peer-reviewed
- C++
Published by zingale about 6 years ago
CASTRO - Castro 20.05
20.05
The parameter usecustomknapsack_weights and its associated functionality have been removed. (#877)
We've changed how the runtime parameters are stored. Previously they were static members of their respective class, but this prevented their use in lambda-capture functions on GPUs. Now the runtime parameters are grouped into namespaces as extern managed data. (#873)
We currently have a scheme for storing reactions weightings, which are a measure of the number of RHS evaluations during the burn and therefore a proxy for the difficulty of the burn. These weights were added as separate StateData depending on the runtime option usecustomknapsackweights. Now, instead we place the weights directly in the ReactionsType StateData as a new component.
The number of ghost zones in Reactions_Type is increased to 4.
The checkpoint version has now been incremented; this version of the code will not be able to restart from a checkpoint generated by earlier versions of the code. (#863)
The meaning of dt_cutoff has changed: it is now the fraction of the current simulation time which dt may be no smaller than, instead of being an absolute measure. We now have set a non-zero default (1.e-12) as well. (#865)
Backwards compatibility in restarting from a checkpoint is no longer supported. Checkpoints from older versions of the code (as determined by the checkpoint version in the CastroHeader file in the checkpoint directory) cannot be restarted from. (#860)
Added an option to do CTU reactions in C++. A compile flag USECXXREACTIONS is added which switches to the C++ integrator in Microphysics. Since we will be doing a phased implementation of the networks in Microphysics, this is opt-in for now. (#836)
More of the core routines have been ported to C++, including the hydro and diffusion timestep estimators (#853) and the sponge (#857)
AMReX provides CpuBndryFuncFab and GpuBndryFuncFab which are very similar to what genericfill and hypfill did. The AMReX implementations are now used. We still have a hypfill and denfill function, so that existing problems are not broken, but the main one in Source/ no longer calls amrexfilcc (it only has the ambient code now). The problems that do override bcfillnd.F90 are thus no longer required to call amrex_filcc. (#837)
We now always issue a timestep retry if the density after an advance is negative (or less than smalldens). The parameter castro.retrynegdensfactor is removed. The parameter castro.retry_tolerance is also removed as it no longer has any effect. (#796)
The timestep control parameter castro.changemax now also will prevent the timestep by shrinking too much in one timestep (previously it would only prevent it from growing too much). If changemax is violated in a timestep we will do a retry to take more graceful steps. (#844)
We now check if the problem setup initialized the density or temperature to a value near smalldens or smalltemp and abort. If this happens, the recourse is to adjust smalldens and smalltemp to a meaningful value for your problem. (#822)
The src_q multifab was removed and instead we convert the conserved state sources to primitive state sources FAB by FAB. This saves a lot of memory at the expense of an EOS call. (#829)
The plmwellbalanced option was removed. It was essentially the same as usepslope except it was lower order and only worked with constant gravity. usepslope now works with both CTU+PLM and SDC2+PLM. A new test problem, hse_convergence, was added to look at the behavior of the different reconstruction methods with HSE.
Scientific Software - Peer-reviewed
- C++
Published by zingale about 6 years ago
CASTRO - Castro 20.04
20.04
A potential undefined flux from the HLL solver when using hybrid_riemann has been fixed (#823)
The parameter castro.allowsmallenergy has been removed. The code behavior is now similar to what it would have been with allowsmallenergy == 0 (the internal energy can never be smaller than that allowed by small_temp). (#817)
The BC interfaces have been merged and converted to a new FAB interface as part of the port to C++. (#819)
All boundary fill interfaces other than hypfill and denfill have been removed. So, we no longer support overriding the boundary conditions for data other than State_Type. Radiation still has its own set of custom boundary conditions that can be accessed through the inputs file, as described in the docs. (#815)
The conversion of the CTU hydrodynamics code to C++ continues. The Riemann solvers were converted to C++ (#801) and the hybrid momentum routines (#805), the PLM reconstruction (#814), the conversion of primitive to conserved variables (#804)
We've changed how the backup for retries is done. Presently if use_retry is enabled we make a pre-emptive copy of the StateData right at the beginning of the timestep. Now we only backup when we detect that a retry is needed (#812)
Scientific Software - Peer-reviewed
- C++
Published by zingale over 6 years ago
CASTRO - Castro 20.03
20.03
We now depend on the fundamental constants from Microphysics instead of keep our own copy in Castro (#787)
We removed the ppmpredictgammae option for the CTU hydro solver. This was not used frequently and did not show much difference with the default (rho e) reconstruction. (#780)
The Microphysics "extern" parameters are now available in C++
We've started converting the CTU hydro solver from Fortran to C++ (#731). The PPM reconstruction is now done in C++ (#784).
The option ppmtempfix = 3 was removed. This used a temperature-based eigensystem for characteristic tracing but was never used for production science.
If a derived variable has multiple components, all components are now added to plotfiles. Previously only the first component was used. (#758)
We have updated our workflow when it comes to Castro's dependencies.
Previously Castro shipped with it a minimal set of microphysics that allowed basic problem setups like Sedov to compile, and more advanced setups (like ones that include nuclear burning) required downloading the starkiller-astro Microphysics repository as an additional step. Now, that Microphysics repository is a requirement for using Castro. If you are a current user of the Microphysics repository and prefer the current workflow where you maintain Microphysics as a separate installation from Castro, no change in your workflow is necessary: if MICROPHYSICS_HOME is set as an environment variable, Castro will use the Microphysics installation in that directory. However we have also added Microphysics as a git submodule to Castro, which is now the required path if you previously were not using the more advanced microphysics (but is also a possibility for those previously using a standalone Microphysics installation). To obtain this, you can use git submodule update --init --recursive from the top-level directory of Castro. The developer team ensures that the version of Microphysics that you obtain this way is consistent with the current version of Castro. Then, you can keep up to date with the code mostly as normal, except now using git pull --recurse-submodules instead of git pull.
Similarly, AMReX is now maintained as a git submodule rather than as an external standalone installation. If you use the same git submodule command as above, you'll obtain AMReX. As with Microphysics, you may opt to rely on your own installation of AMReX by setting the AMREX_HOME environment variable. However you are then responsible for keeping it in sync with Castro; if you use the submodule, then you'll get the version of AMReX that we have tested to ensure compatibility with the current version of Castro. (#651, #760, #762, #765)
The names of the conserved state variables in C++ (Density, Xmom, etc.) have been changed to match the names in Fortran (URHO, UMX, etc.). For user code, this will only affect problem-specific setup code like Prob.cpp that references specific state variables. For compatibility, we have kept a copy of the old names around that redirect to the new names, but the old names are now considered deprecated and will be removed
Scientific Software - Peer-reviewed
- C++
Published by zingale over 6 years ago
CASTRO - Castro 20.02
20.02
Fixed a bug in the nuclear burning timestep estimator when on GPUs (#745)
rewrote the 4th order SDC hydro driver in C++ to allow code reuse with other solvers (#742), and simplified the 2nd order SDC code to do dimensional sweeps to reduce memory (#749)
The option radiation.integrate_planck has been removed; it was only used by one test. By default we always do the full integral of the Planck function. (#740)
Most of the radiation test problems have been moved over to a new opacity directory, radpowerlaw, and all of the parameters that controlled the behavior of the power law opacity have been moved to the extern probin module. We now always expect you to pick a specific opacity implementation, so the parameter radiation.useopacitytablemodule has been removed. The "null" opacity implementation has been previously moved, and the code will fail to compile if you attempt to use it; you will need to update to radpower_law. (See the documentation for information about how to use this new implementation.)
Additionally, the code for the multigroup solver was effectively previously setting the Rosseland opacity, kappar, equal to the Planck opacity, kappap, if the latter was set but the former was not. There was similar unintuitive behavior for the behavior of the scattering parameter. Now you will get exactly what you ask for in the probin file, given the defaults in the parameters file for the radpowerlaw opacity. By default the constant coefficients for both are negative, which is invalid, so both must be set to a non-negative value for the code to work. Problems that were previously setting constkappap but not constkappar should set the latter equal to the former to maintain the same code behavior. The analogous thing should be done for the exponents (kappapexpm, kappapexpn, and kappapexpp). (#725)
The parameter radiation.dorealeos = 0 has been removed, and its functionality is now enabled with a new equation of state called radpowerlaw. This new EOS is only compatible with the pure radiation-diffusion tests, not with castro.do_hydro = 1. (#722)
We now default to useretry = 1, instructing Castro to retry a step with a smaller dt if there is a CFL violation, burning failure, or negative timestep. For the burning failure, we have Castro set the Microphysics parameter aborton_failure to .false. at a high priority (so it overrides the Microphysics default). We also check to make sure the combination of parameters makes sense at runtime. (#724)
The parameter castro.hardcfllimit has been removed. (#723)
Some unnecessary clean_state calls were removed (#721)
Support for neutrino radiation diffusion has been removed.
A bug was fixed in the hydro CFL timestep estimator for simplified-SDC. The timestep was more restrictive than it needed to be. (#727)
A bug was fixed in the simplified-SDC nuclear burning timestep estimator (#733)
Scientific Software - Peer-reviewed
- C++
Published by zingale over 6 years ago
CASTRO - Castro 20.01
20.01
A new option castro.limitfluxesonlargevel has been added. It is similar to the existing option limitfluxesonsmalldens -- fluxes are limited to prevent the velocity in any zone from getting too high. The largest legal speed is set by castro.speedlimit. (#712) This is more general than the previous solution proposed by castro.riemannspeed_limit, so that parameter has been removed. (#714)
The AMR parameter amr.computenewdtonregrid is now on by default. This avoids crashes that result from the CFL number being too large after regridding, because we update the timestep after seeing that larger velocity. You can still opt to set this off if you want to in your inputs file. (#720)
We have added calls into Hypre that only exist as of version 2.15.0, so that is the new minimum requirement for Castro radiation. Note that Hypre is now hosted on GitHub at https://github.com/hypre-space/hypre.
A new option castro.limitfluxesonlargevel has been added. It is similar to the existing option limitfluxesonsmalldens -- fluxes are limited to prevent the velocity in any zone from getting too high. The largest legal speed is set by castro.riemannspeedlimit. (#712)
A new option castro.applysourcesconsecutively has been added. By default we add all source terms together at once. This option, if enabled, adds the sources one at a time, so that each source sees the effect of the previously added sources. This can matter, as an example, for the sponge source term, which may be more effective if it is added after source terms such as gravity that update the velocity. (#710)
A new option castro.extsrcimplicit has been added. The external source terms were previously only implemented as an explicit predictor-corrector scheme. The new option, if turned on, changes the handling of the external source terms to allow an implicit solve. This is done by subtracting the full old-time source and adding the full new-time source in the corrector, rather than -0.5 and +0.5 of each, respectively. It is still up to the individual problem to make sure it is consistent with this scheme if the option is turned on. (#709)
Add option for using monopole BCs in 3D. By setting gravity.maxmultipoleorder to a negative number, you can use monopole gravity to fill the boundary conditions, rather than the multiple BCs. This is useful for debugging purposes. To make the behavior consistent, we now use multipole BCs by default in 2D as well. (#716)
Scientific Software - Peer-reviewed
- C++
Published by zingale over 6 years ago
CASTRO - Castro 19.12
The use_retry mechanism has been enabled for the simplified SDC time integration method. (#695)
A case where use_retry could result in a very small last subcycle has been avoided. (#701)
We no longer allocate memory for sources for the species in the conserved state unless PRIMSPECIESHAVE_SOURCES is set (#699)
A subroutine eosonhost has been added to the EOS module. This is a wrapper for the EOS that must be used for CUDA builds if the EOS is being called in probinit or other places that don't run on the GPU. (#693)
We now use VODE90 instead of VODE by default. (#677)
A new unit test was added, model_burner, which reads in a 1-d initial model and calls the reaction network on it. This can be used to test tolerances, etc.
Scientific Software - Peer-reviewed
- C++
Published by zingale over 6 years ago
CASTRO - Castro 19.11
The density flux limiter was simplified and fixes a race condition (#646)
The SDC algorithm can now use Radau quadrature instead of Gauss-Lobatto quadrature. (#666)
The option castro.ppmreferenceeigenvectors has been removed. This is now used by default with the CTU PPM solver.
Scientific Software - Peer-reviewed
- C++
Published by zingale over 6 years ago
CASTRO - Castro 19.10
-- The SDC algorithm now implements the burning conditionals depending on rho and T (reactrhomin, reactrhomax, reactTmin, reactTmax) (#598, #654)
-- The SDC/MOL PLM reconstruction now implements reflecting BCs on the interface states (#652, #654)
-- A well-balanced scheme has been added to the piecewise linear SDC method, enabled with castro.plmwellbalanaced=1. At the moment it only supports constant gravity. (#294, $654))
-- The weighting of the time-node fluxes stored in the flux registers for SDC has been fixed (#654, #658)
-- As before, we can choose the reconstruction with PLM using the castro.plmiorder flag: 1 = piecewise constant, 2 = piecewise linear slopes. Now we added a way to specify the limiter used with the linear slopes. castro.plmlimiter = 1 will use the 2nd order MC limiter and castro.plm_limiter = 2 will use the default 4th order MC limiter (previously there was no way to select the 2nd order limiter). (#654)
-- The Runge-Kutta based method-of-lines integration method has been removed in favor of the SDC integration. (#657)
-- A new way of specifying the problem runtime parameters has been introduced. They can now be specified in a plain text file, probparams, and at compile time, the probdatamodule is automatically created. This automates the creation of the probdata variables, the namelist for reading them, setting them as managed for CUDA, and adds the ability to output the values to a file (like jobinfo). This feature is opt-in. You need to set USEPROBPARAMS in your GNUmakefile and then define the problem parameters in a file probparams in the problem directory. (#234, #619, #673)
-- The time to output is now stored in the job_info file (#365)
-- The SDC time advancement method has been documented
-- The job_info file now reports the number of GPUs being used.
Scientific Software - Peer-reviewed
- C++
Published by zingale almost 7 years ago
CASTRO - Castro 19.09
-- You can now type ./Castro.gnu.ex --describe to see the list of modules / compilers the code was built with (#660)
-- The reaction quantities are now computed as proper 4th order averages for the plotfile, when using sdc_order = 4 (#647)
-- The velerr tagging now takes the abs() of the velocity component to ensure we tag large positive and negative velocities.
Scientific Software - Peer-reviewed
- C++
Published by zingale almost 7 years ago
CASTRO - Castro 19.08.1
-- Fix CUDA compilation
-- Remove special treatment of 4th order outflow BCs (see #648)
Scientific Software - Peer-reviewed
- C++
Published by zingale almost 7 years ago
CASTRO - Castro 19.08
Scientific Software - Peer-reviewed
- C++
Published by zingale almost 7 years ago
CASTRO - Castro 19.07
Scientific Software - Peer-reviewed
- C++
Published by zingale about 7 years ago
CASTRO - Castro 19.06
Scientific Software - Peer-reviewed
- C++
Published by zingale about 7 years ago
CASTRO - Castro 19.05
Scientific Software - Peer-reviewed
- C++
Published by zingale about 7 years ago
CASTRO - Castro 19.04
Scientific Software - Peer-reviewed
- C++
Published by zingale over 7 years ago
CASTRO - Castro 19.03
Scientific Software - Peer-reviewed
- C++
Published by zingale over 7 years ago
CASTRO - Castro 19.02
Scientific Software - Peer-reviewed
- C++
Published by zingale over 7 years ago
CASTRO - Castro 19.01.1
Castro version 19.01.1
Scientific Software - Peer-reviewed
- C++
Published by zingale over 7 years ago
CASTRO - Castro 18.12
Castro is an adaptive, compressible astrophysical hydrodynamics code.
Scientific Software - Peer-reviewed
- C++
Published by zingale over 7 years ago