Releases: sxs-collaboration/spectre
Release 2021.03.09
Upgrade instructions
From #2797 (Basic build optimizations):
SetupDataBox now applies to the full phase-dependent action list, rather than just the phase in which it is used. Therefore it should now appear only once for an entire PDAL, and in most cases should appear at the start of the Initialization phase.
From #2815 (Add Parallel::Callback for use in MutableGlobalCache.):
The return type of GlobalCache::mutable_cache_item_is_ready is now std::unique_ptr<Parallel::Callback> instead of std::optional<CkCallback>.
From #2853 (Enable use of reference items in the DataBox):
- Compute tags must return by reference (i.e. have a void
functiontaking theirreturn_typebygsl::not_null). - Anything referring to the old names of the type aliases in DataBox will need to use the new name.
From #2886 (Add H5 checking to input file tests):
PyYaml is now a dependency
From #2877 (Change python interface for opening h5 files in modes like readonly or readwrite):
When opening h5 files with python bindings, you now have to specify the opening mode, see https://docs.h5py.org/en/stable/high/file.html
The old version is equivalent to opening with a (append) mode.
From #2793 (Replace MockRuntimeSystem cache() function.):
ActionTesting::cache() now has a template parameter and an argument.
From #2693 (Time dependent triple gaussian):
This PR only modifies the generalized harmonic DampingFunction infrastructure. When using the test helper to test a DampingFunction, there is now a new required argument to the helper's check() function: a string naming which FunctionOfTime in the FunctionsOfTime passed to the call operator should be used. For time-independent DampingFunctions, this string can be anything, because time-independent damping functions should ignore the passed-in FunctionsOfTime entirely.
From #2899 (Rewrite DataBox implementation):
None, unless you were changing implementation details of DataBox, in which case you'll likely need to start over...
From #2794 (Rewrite ActionTesting::invoke_random_queued_action):
Usage of invoke_random_queued_action is slightly different, as it now uses the new function array_indices_with_queued_actions.
From #2904 (Add lock-retrieval 'local sync action', use to lock h5 access in CCE):
No need for thread-safe hdf5 for CCE runs anymore.
From #2937 (Add time and slab comparison triggers):
The PastTime trigger has been removed. It was equivalent to the new TimeCompares trigger with a Comparison of GreaterThan (or LessThan for backward-in-time evolutions).
Merged pull-requests
General changes:
- Use system without boundary condition in 3d domain creator tests (#2840)
- Various small time-related test improvements (#2790)
- Upgrade cache action on CI (#2854)
- Update Ocean to blaze 3.8 (#2835)
- Make preconditioners the identity when skipped (#2788)
- Add boundary condition support to RotatedIntervals (#2845)
- Add boundary condition support to Rectangle domain creator (#2846)
- Give the Schwarz subdomain operator the full power of the DataBox (#2832)
- CylindricalEndcap Map (general version) (#2373)
- Basic build optimizations (#2797)
- Add Parallel::Callback for use in MutableGlobalCache. (#2815)
- Add MaxRicciScalarTag to Tags.hpp (#2791)
- Add elliptic AnalyticSolution boundary condition (#2843)
- Add boundary conditions support to Shell domain creator (#2858)
- Boundary conditions rotated rectangle and disk (#2847)
- Enable use of reference items in the DataBox (#2853)
- Add boundary condition support to Brick domain creator (#2864)
- Add boundary condition support to RotatedBricks domain creator (#2865)
- Add boundary condition support to FrustalCloak and an image of FrustalCloak to the dox (#2863)
- Add boundary condition support to Sphere domain creator (#2859)
- Add compute tag for elastic strain (#2833)
- Add boundary condition support to Cylinder domain creator (#2861)
- Add boundary condition support to AlignedLattice domain creator (#2866)
- Creates new write path unit_test_build_path pointing to tests/unit in build directory (#2542)
- Support multiplication of doubles and TensorExpressions (#2831)
- Fix the function used to calculate the largest char speed for curved SWs (#2600)
- Add H5 checking to input file tests (#2886)
- Mock cores/nodes cleanup (#2872)
- Add Shu-Osher shock tube and Sod explosion analytic data (#2839)
- Convert from multi-index to storage index without canonicalization (#2855)
- Support addition and subtraction of doubles with TensorExpressions (#2881)
- Simplify periodic boundary conditions, and add None boundary condition (#2884)
- Update Adams-Bashforth history at the start of steps (#2894)
- Have elliptic systems specify their supported boundary conditions (#2885)
- Generalize WENO limiters to handle Gauss points (#2857)
- Remove Doxygen from TensorExpression Product cpp test file (#2895)
- Make the elastic constitutive relation a reference tag (#2891)
- Test_CylindricalEndcap: relax conditions of test. (#2882)
- Support division of TensorExpressions by doubles (#2898)
- Factory-create the elliptic background and initial guess, reduce number of elliptic executables (#2603)
- Add longitudinal operator for XCTS equations (#2878)
- Support printing messages on reductions (#2849)
- Infrastructure tweaks to support error-measure based stepping (#2841)
- Support square root of rank 0 TensorExpressions (#2900)
- Change python interface for opening h5 files in modes like
readonlyorreadwrite(#2877) - Add python bindings for get_dimension of VolumeData and pickling support for mesh (#2870)
- Replace MockRuntimeSystem cache() function. (#2793)
- Time dependent triple gaussian (#2693)
- Factor ObserveFields work into a static member function (#2901)
- Add local sync action (#2902)
- Add MinRicciScalarTag to Tags.hpp (#2911)
- Clean up Adams-Bashforth code (#2906)
- Have elliptic systems specify tags for their fluxes (#2875)
- Support Pypp random-tests for functions that mutate their result buffer (#2876)
- Make XCTS Schwarzschild solution factory-creatable (#2880)
- Fix CCE initialization for...
Release 2021.02.08
Upgrade instructions
From #2687 (Observe analytic solutions if available):
- If you retrieved analytic solutions from the DataBox as
::Tags::Analytic<Tag>, update your code to retrieve::Tags::AnalyticSolutionsBaseinstead. It currently always holds aVariablesfrom which you can retrieve the analytic solution fields as::Tags::Analytic<Tag>the same way you did before. In the future it may hold astd::optional<Variables>in cases where it is not clear at compile-time that analytic solutions are available.
From #2574 (Use Blaze 3.8 (exclusively) (again), and test architectures):
Upgrade the Blaze library to version 3.8.
From #2792 (Add mocked cores and nodes to ActionTesting):
- In ActionTesting, if you are mocking a Group, Nodegroup, or Singleton component, these should now have
chare_typeset toMockGroupChare,MockNodeGroupChare, orMockSingletonChareinstead ofMockArrayChare. Note thatMockArrayCharewill sometimes work for these components for some tests, but not ifckLocalorckLocalBranchis ever called on those components. - In ActionTesting, the new functions
emplace_singleton_component,emplace_group_component,emplace_array_component, andemplace_nodegroup_componentshould be used instead ofemplace_component. Note thatemplace_componentstill works but will be removed in the future. - The functions in Utilities/System/ParallelInfo now have two versions: the low-level charm++ version (in the
sysnamespace) and a new version templated on theDistributedObject. Thesysversion should be used only for low-level things likeAbortWithErrorMessageor theParallelInfoexecutable where you know they will never be mocked; the templated version should be used everywhere else.
Merged pull-requests
General changes:
- Add evolution boundary condition type and domain boundary condition base class (#2750)
- Check that det(Jacobian) is positive in coordinate maps using discrete rotations (#2751)
- Add quadrature to Mortars & DgDomain init, support Gauss pts and weak form in ComputeTimeDerivative (#2721)
- Add elliptic utility to work with tags containing maps (#2733)
- Fix slow vector tests gcc10 (#2730)
- Re-arrange Blaze template expressions (#2728)
- Add ApplyBoundaryCorrections action to go with ComputeTimeDerivative (#2722)
- Print back trace from ERROR and ASSERT macros, add ERROR_NO_TRACE macro (#2766)
- Finish removing uses of boost::optional (#2753)
- Make TensorExpression abstract (#2771)
- Add support for GR/non-flat metrics to ComputeTimeDerivative (#2772)
- Add ChristodoulouMass compute tag (#2752)
- Add test helper for elliptic first-order systems (#2675)
- Observe analytic solutions if available (#2687)
- Implement TensorExpression Product (#2716)
- Remove TensorExpression multi-index get overloads (#2775)
- Use unsorted generic indices in AddSub (#2776)
- Add error measures to steppers (#2630)
- Add TensorExpression test with multiple operations (#2777)
- Cce analytic test exe prep, add option parsing for std::complex, add integer static cache range (#2608)
- Upgrade docs deployment, enable on forks (#2739)
- Generalize Minmod limiter to handle Gauss points (#2783)
- Add boundary conditions to Block and Domain classes (#2770)
- Add curved background support to boundary corrections test helpers (#2765)
- Support factory-creating the Schwarz subdomain solver and add ExplicitInverse solver (#2664)
- Add Boundary conditions test helpers (#2798)
- Add Boundary corrections for Burgers (#2767)
- Add Rusanov boundary correction to Newtonian Euler (#2768)
- Derive elliptic solutions from base classes (#2698)
- Orient std::vector on slices (#2800)
- Add upwind penalty boundary correction for scalar wave (#2769)
- Add time dependence to evolution observer input file test (#2789)
- Prepare curved Poisson and Elasticity systems for use in XCTS equations (#2674)
- Refactor ComputeTimeDerivative (#2799)
- Add struct for marking DataBox tags for a reference item (#2807)
- Clarify contributing guide: PRs don't need everyone's re-approval before merging (#2811)
- Add python bindings for mesh and regular grid interpolant (#2734)
- Improve action of Minmod limiter and TCI at external boundaries (#2795)
- Update Blaze version requirements to 3.7 (#2816)
- Documentation: threaded_action is an entry method. (#2802)
- Prohibit serializing a non-owning vector (#2804)
- Add Rusanov boundary correction for GRMHD, make lapse, shift, inv spatial metric temp tags (#2814)
- Add trivial solution to Poisson and Elasticity systems (#2812)
- Make TensorExpression member variables non-const (#2810)
- Use Gauss points in test for ApplyMatrices (#2808)
- Add tag traits for a reference tag (#2817)
- Use Blaze 3.8 (exclusively) (again), and test architectures (#2574)
- Compute elliptic sources in two steps (#2818)
- Pypp: better error msg, better string support, factor normal vector boundary correction helper code (#2827)
- Rename elliptic fluxes and sources computer type aliases (#2819)
- Evolution: remove InterfaceTags, support unaligned meshes, stop copying fluxes (#2824)
- Add variables for Neumann boundary conditions to elliptic solutions (#2828)
- Add tags for elliptic DG (#2826)
- Add getter for remote mortar data (#2823)
- Add boundary condition support to Creators::Interval (#2803)
- Handle reference tags in db::tag_name (#2836)
- Add upwind penalty boundary correction to GH (#2813)
- Add mocked cores and nodes to ActionTesting (#2792)
- Add base class for elliptic boundary conditions (#2732)
- Move penalty function for elliptic DG to its own file (#2821)
- Loosen restrictions on divergence return buffer tags (#2822)
Bugfixes:
Release 2021.01.11
Upgrade instructions
From #2672 (Make finding Python in build system more robust, update Docker container):
-
To specify a Python executable when configuring CMake, use the variable
Python_EXECUTABLEinstead of the oldPYTHON_EXECUTABLE, e.g.:cmake -D Python_EXECUTABLE=/usr/bin/python3 $SPECTRE_HOMEMore information on configuring CMake with Python: https://cmake.org/cmake/help/latest/module/FindPython.html
-
If you use the Python bindings at all, install Pybind11 via
pip:pip install pybind11More information on installing Pybind11: https://pybind11.readthedocs.io/en/stable/installing.html
CMake should find the installation automatically. If you run into trouble, make sure you use the Python executable from the environment that you have installed pybind11 in, then file an issue. More information on finding Pybind11 in CMake: https://pybind11.readthedocs.io/en/stable/cmake/index.html
From #2737 (Require LIBXSMM 1.16.1):
Upgrade your local LIBXSMM installation to 1.16.1 or newer, or update to the latest container
From #2691 (Create low-level SystemUtilities lib to resolve cyclic dependency between ErrorHandling and Parallel):
- If you are looking for
ErrorHandling/headers, you'll find them inUtilities/ErrorHandling/now. - If you are looking for low-level headers like
Parallel/Info.hpp, see if you find what you need inUtilities/System/.
Merged pull-requests
Major new features:
- Add code development quick-start guide (#2465)
- Add parallel Newton-Raphson nonlinear solver with line-search (#2564)
- Add 1D data visualization tool (#1578)
- Add interpolation option for ObserveFields (#2658)
General changes:
- Improve/fix FixedHashMap & std::optional serialization (#2622)
- Provide the (reconstructed) input from the parser (#2624)
- Factor NewtonianEuler/ComputeItems.?pp into several files (#2617)
- Support 'None' label for Options::Auto (#2626)
- Add Schwarzschild solution to XCTS system in isotropic coords (#2490)
- Move algorithms to src (#2616)
- Add function to check conservation for new boundary corrections (#2589)
- Functions and tags for computing normal vectors in general spacetimes (#2596)
- Require catch 2.8, print more digits in catch output (#2638)
- Allow running clang-tidy in parallel (#2493)
- Remove TensorIndex type aliases (#2640)
- Make mesh option-parsable (#2642)
- Make DampingFunctions depend on FunctionsOfTime (#2643)
- Update catch2 on ocean (#2651)
- Add NumIterations convergence reason (#2627)
- Optimize serial linear solvers and support factory-creation (#2629)
- Refactor action testing (#2634)
- Add script to compile release notes, update PR template and add tests (#2637)
- Global cache serialization functions (#2613)
- Pypp revamp (#2557)
- Redesign spec FunctionOfTime importer to only read the H5 file once (#2559)
- Add CMake options to make profiling easier (#2633)
- Update Singularity Website links (#2657)
- Remove suggested values from ObserveFields (#2661)
- Distinguish option parser output from other output (#2662)
- Allow disabling git hooks (#2663)
- Make DampingFunctions return by not_null (#2665)
- Python visualization scripts cleanup (#2671)
- Add unit-tests target (#2670)
- Add SpinFunctionTags to Tags.hpp (#2635)
- Compute internal boundaries/faces in new DG dt action (#2621)
- Support shared libs with python bindings, switch CI to mostly use shared libs (#2669)
- Drop support for clang 6 and 7 (#2659)
- Update ocean to cmake 3.18.5 (#2688)
- Update wheeler environments (#2660)
- Add automatic versioning (#2598)
- Make finding Python in build system more robust, update Docker container (#2672)
- Replace boost::optional -> std::optional in CoordinateMaps (#2685)
- Add note for necessary jemalloc pre-load in documentation (#2704)
- Add CMake option to remove unit-tests from test-executables (#2723)
- Allow undefined symbols on Darwin for InfoAtLink (#2689)
- Remove unneeded TensorExpression storage index maps (#2715)
- Add documentation for how to run basic CCE (#2498)
- Serialize algorithm (#2374)
- Find newer versions of LIBXSMM and add clang-11 to CI (#2706)
- Make std::variant option-parsable (#2656)
- Add option alternatives (#2625)
- Add sending new boundary corrections to ComputeTimeDerivative (#2702)
- Require LIBXSMM 1.16.1 (#2737)
- Remove boost::optional in moving mesh code (#2736)
- Create low-level SystemUtilities lib to resolve cyclic dependency between ErrorHandling and Parallel (#2691)
- Add DimensionfulSpinMagnitudeTag to Tags.hpp (#2713)
- Fix move constructor and move assignment for NodeLock (#2699)
- Add enum for elliptic boundary condition types (#2725)
- Add logical partial derivative function for individual tensors (#2682)
- Add computation of Jacobian, inverse Jacobian, and determinant of the Jacobian that satisfy the metric identities (#2683)
- Prevent newer clang from producing FPEs (#2741)
- Convert FunctionsOfTime to cache tag (#2614)
- Update libxsmm on ocean to 1.16.1 (#2747)
- Fix automatic versioning on protected branch, enable reviewing releases before they are dispatched (#2738)
- Small code cleanups in coord maps (#2740)
- Add python test function for boundary corrections (#2700)
Bugfixes:
Release 2020.12.07
Initial release