The complete changelog for released versions of the code is available on GitHub:
Changes since the last release are printed below.
Upgrade instructions
From #6634 (Multigrid: add direct bottom solver):
In elliptic input files, add the option LinearSolver.Multigrid.UseBottomSolver: False. You can also set it to True to try the direct bottom solver. Also add the BuildMatrix section:
BuildMatrix:
MatrixSubfileName: None
Verbosity: Quiet
EnableDirectSolve: True
SkipResets: False
From #6405 (Add volume data output to Schwarz solver):
In elliptic input files, add the option LinearSolver.SchwarzSmoother.OutputVolumeData: False.
From #6702 (Use AMR grids in multigrid solver):
In elliptic input files, rename the option LinearSolver.Multigrid.MaxLevels: Auto to InitialCoarseLevels: Auto. Also add the option Amr.MaxCoarseLevels: Auto. Add the AMR phase UpdateSections like this:
PhaseChangeAndTriggers:
- Trigger:
EveryNIterations:
N: 1
Offset: 1
PhaseChanges:
- VisitAndReturn(EvaluateAmrCriteria)
- VisitAndReturn(AdjustDomain)
- VisitAndReturn(UpdateSections) # < add this line
- VisitAndReturn(CheckDomain)
From #6818 (Ah adaptivity: improve criteria):
Apparent horizon finder criteria now support operator==() and are properly registered with charm. The criteria are not yet usable for adaptive horizon finding.
From #6825 (Ah adaptivity: Compute time derivatives of Strahlkorpers of different resolutions):
Computing time derivatives of Strahlkorpers now works if the Strahlkorpers at different times have different resolutions. The resolution of each Strahlkorper is prolonged or restricted as needed.
From #6854 (Split IMEX CleanHistory out of main CleanHistory):
If you are writing an IMEX evolution executable, you must now use imex::CleanHistory. See the IMEX tutorial for details.
From #6847 (Add adaptive apparent horizon finder):
The adaptive horizon finder is still experimental and is not enabled by default in any of the input files for testing or for the BBH pipeline. To experiment with the adaptive horizon finder, add criteria to the Criteria: option.
From #6910 (Turn on xsimd by default):
XSIMD is now enabled by default. You can set -D SPECTRE_FETCH_MISSING_DEPS=ON in your CMake config to fetch it automatically when configuring a build directory, or install it yourself (e.g. brew install xsimd on macos). See https://github.com/xtensor-stack/xsimd for details.
From #6930 (Add support for autodiff):
Autodiff can be enabled with the option SPECTRE_AUTODIFF=ON.
From #6909 (Enable adaptive L AH finder in single black hole evolutions):
To use the adaptive horizon finder in an evolution (currently one without shape control), add criteria to the horizon finder's criteria, and set the new option MaxOutputL in the ApparentHorizons option block to the maximum L permitted in any horizon finder.
From #6926 (Move H5 Python tools to H5 lib, simplify some Py code):
In Python, if you imported from spectre.Visualization.ReadH5 or OpenVolfiles, import from spectre.IO.H5 instead.
From #6952 (Add option to remove delay in FoT update):
Executables with control systems have a new input file option:
ControlSystems:
DelayUpdate: true
Use "true" for the old behavior.
From #6998 (Select l_max automatically in the Shape map according to a truncation limit):
All InputFiles that use the Shape map need to add the CoefficientTruncationLimit option. For Spec, the choice is 1e-20 for the inspiral and 1e-12 for the ringdown
From #6990 (Modify handling of CCE prefix tag and move CCE objects to the global cache):
When running a CCE evolution, the input file options MinimumTimeStep and VariableOrderAlgorithm have moved from the top-level Evolution section to the Evolution section under Cce.
Merged pull-requests (144)
CLI & Python bindings (10):
- Add BCO Python Binding (#6815)
- Define resolution levels and use in inspiral command (#6722)
- Allow adding grid/distorted coords in post-processing (#6821)
- Handle missing volume subfiles when opening h5 files (#6878)
- BBH pipeline: support running old ID, only a short inspiral (#6895)
- Move H5 Python tools to H5 lib, simplify some Py code (#6926)
- BBH pipeline: by default run on fixed number of cores (not nodes) (#6945)
- RenderDomain: add optional time annotation (#6922)
- Add –num_slurm_tasks option to Scheduler (#6873)
- Support profiling in submit scripts (#6885)
General changes (120):
- Implement DG cartoon divergence (#6780)
- Xcts: allow superposed lapse as horizon boundary condition (#6711)
- Multigrid: add direct bottom solver (#6634)
- Add volume data output to Schwarz solver (#6405)
- Add support for Chebyshev and B3 topology in create_initial_mesh (#6822)
- Use AMR grids in multigrid solver (#6702)
- Enable AMR for BBH and scalar wave simulation (#6826)
- Add GR self-force equations (#6723)
- Some inititialization for domains with non-conforming blocks (#6819)
- Add SparseMatrixFiller. (#6832)
- SpherepackIterator: Allow for complex m=0 coef. (#6827)
- Add smoothstep_deriv function (#6679)
- Add CartoonSphere domain creator (#6812)
- Add helper function to fill fluxes from primitive data (#6769)
- Fix macos-14 arm build on CI (#6835)
- Add more cartoon partial derivative features (#6828)
- Ah adaptivity: improve criteria (#6818)
- Move CoordsToDifferentFrame and Add Error Tol to Recenter (#6820)
- Use correct temporal id for each char speed sub measurement (#6841)
- Update Ringdown Yaml (#6803)
- Ah adaptivity: Compute time derivatives of Strahlkorpers of different resolutions (#6825)
- Add domain::creator::CartoonCylinder (#6834)
- Allow executables to use Cartoon bases (#6829)
- Update H5 writing to handle cartoon simulations (#6833)
- Allow ScalarWave system to use Cartoon Domain (#6831)
- Prepare ah::set_current_iteration_coords for AH adaptivity (#6830)
- Schwarz solver: allow full-element overlaps (#6844)
- Move system instantiations into subdirectories (#6851)
- ScalarSelfForce: add hyperboloidal slicing (#6845)
- Fix deadlock output file path (#6853)
- GrSelfForce: add boundary conditions (#6848)
- Add domain::creator::CartoonSphere2D (#6846)
- Don't hide tmpl::list in docs (#6855)
- Add more cartoon divergence features (#6852)
- Split IMEX CleanHistory out of main CleanHistory (#6854)
- Add SimpleSparseMatrix. (#6858)
- MinusLaplacian preconditioner: support complex numbers (#6859)
- ExplicitInverse linear solver: support complex shift (#6860)
- Update Ocean2 to Intel MPI (#6850)
- Ecc control: branch levs when complete (PBJ) (#6840)
- Fix CartoonSphere2D collocation mismatch (#6864)
- Remove PI controller for step size adjustment (#6862)
- LTS-GTS unification - simple things (#6863)
- Revert "Merge pull request #6862 from wthrowe/remove_error_pi" (#6865)
- Add Cartoon bases to filter cache (#6867)
- Simplify logic of tensor of cartoon derivatives (#6866)
- Don't recompute vol data to interp to AH each iteration (#6870)
- Increase the LinearOperators.PartialDerivs test timeout (#6872)
- Add ylm::TensorYlm::FillFilter function. (#6861)
- Tensorylm cart to sphere (#6876)
- Fix a CMake 4.1 warning, relax a test tolerance (#6875)
- Add adaptive apparent horizon finder (#6847)
- Add the BoundaryCondition base class to Ccz4 (#6869)
- Add DirichletAnalytic boundary condition for SoCcz4 (#6856)
- Improve FPE handling on aarch64 (#6886)
- Optimizations in TensorYlmFilter. (#6883)
- Add helper functions for a Fourier basis (#6887)
- Add Pybindings for BCO TimeDependentOptions (#6884)
- Use std::fabs in Test_SlabRoundingError (#6889)
- Parallelize computing vars to interpolate to AH (#6879)
- Ignore AI markdown files in repo root (#6891)
- Speed up time derivative calculation in CurvedScalarWave (#6881)
- Add TensorYlmSphereToCart. (#6880)
- Compile old slatec code in legacy mode (#6893)
- Add Ocean2 Orca-1 Environment and Machine (#6902)
- AH finder: speed up by caching block/element search order (#6882)
- Added myself to list of Authors.Contributors (#6904)
- Convert boundary correction to new-style factory (#6903)
- Fix generic boundary correction docs (#6908)
- Fix Test_GridCenters.py in Docker (#6898)
- More tests in TensorYlm filters (#6901)
- Stop serializing FoT update backlogs (#6911)
- Add xsimd to ocean2 (#6916)
- Add multi-reader spinlock (#6913)
- Add options to create Strahlkorper by reading from a coefficients dat file (#6900)
- Turn on xsimd by default (#6910)
- Update transition to ringdown pipeline (#6923)
- Fix BBH restart from volume data, update CaltechHPC env (#6919)
- Run events at checkpoints (#6918)
- Add support for autodiff (#6930)
- AMR: add ObserveAmrStats event (#6824)
- Add and enable GH AveragedUpwindPenalty BoundaryCorrection (#6907)
- Move time step out of LTS ComputeTimeDerivative (#6917)
- Disallow AMR when not time aligned with neighbors (#6914)
- AH finder: send only intersecting element data (#6906)
- Enable adaptive L AH finder in single black hole evolutions (#6909)
- Update ScalarWave input file filter values (#6929)
- Choose initial data at runtime for CSW system (#6899)
- Explicitly instantiate UpdateU and RecordTimeStepperData (#6950)
- Add ringdown levs (#6953)
- Wrap Kreiss-Oliger filter for Ccz4 (#6897)
- Add TensorYlmFilter for scalar. (#6954)
- Fix Chebyshev quadrature weights (#6934)
- Add option to remove delay in FoT update (#6952)
- Convert AdvanceTime to a mutator (#6955)
- Worldtube: add BH spin tag (#6966)
- PlotPowerMonitors: warn if not double precision (#6964)
- Save functions of time and domain only once per volume subfile (#6951)
- Move some CCE code to cpp files (#6972)
- Fix db::Access error messages (#6967)
- Add ApplyFilter mutator to SoCcz4 (#6960)
- Dashboard: add extra run directories, display first error message from run (#6920)
- Dashboard: plot AMR stats (#6947)
- Split mortar history from CleanHistory action, convert to mutators (#6965)
- Simplify atomic vs. standard boundary communication (#6962)
- Remove std::ref call in brigand (#6976)
- Explicitly instantiate ChangeTimeStepperOrder (#6980)
- Rename Bjorhus corrections (#6932)
- Fix DefaultProcsPerTask on Ocean2 (#6987)
- Add Clemens Dittmer to contributors list (#6992)
- Make lower bound below upper in trumpet test (#6988)
- Split TensorYlmFilter test (#6989)
- Wrap boost::geometry classes (#6978)
- Avoid observing FoT values when time is invalid (#6991)
- Add custom launch command for machines in login node. (#6996)
- Split NaN initialization from SPECTRE_DEBUG (#6993)
- Add EnforceConstrainedEvolution mutator to SoCcz4 (#6997)
- SimpleSparseMatrix: add stride. (#7000)
- Select l_max automatically in the Shape map according to a truncation limit (#6998)
- Modify handling of CCE prefix tag and move CCE objects to the global cache (#6990)
Documentation (4):
- Use no-schedule in BeginnersTutorial (#6836)
- Fix CartoonSphere1D typo (#6843)
- Fix GH char speed expression in documentation (#6892)
- Fix broken hyperlinks in code review guide docs (#6921)
Bugfixes (8):
- Ensure blas dgemm with zero size is no-op (#6874)
- Importer: fix false-positive check of coords (#6933)
- EccentricityControl: fix subfile names (#6927)
- EccControl: fix continuation after ecc-control is complete (#6944)
- BBH: fix deadlock analysis of horizon finders (#6949)
- Fix symmetric tensor multi-index reordering in canonicalization (#6959)
- Schedule CLI: fix num nodes in resubmissions (#6961)
- Observe worldtube data before updating values (#6994)
Build system (1):
Continuous integration & deployment (1):
- Fix some test timeouts, Schwarzschild test (#6948)
Contributors (17): @michaeldmurphy1, @nilsvu, @kidder, @AlexCarpenter46, @hroettgen03, @markscheel, @ncorsobh, @nilsdeppe, @geoffrey4444, @iago-mendes, @guilara, @wthrowe, @hen-w, @nikwit, @JosePineda684, @macedo22, @clemensdittmer