Skip to content

Releases: sxs-collaboration/spectre

Release 2026.06.09.01

09 Jun 20:28

Choose a tag to compare

Merged pull-requests (1)

General changes (1):

  • Update ubuntu 18.04 (#7292)

Contributors (1): @nilsdeppe

Release 2026.06.09

09 Jun 14:04

Choose a tag to compare

Upgrade instructions

From #7138 (Allow injecting gravitational wave through outer boundary):

For systems that use the ConstraintPreservingBjorhus boundary conditions, the wave profile has to be added to the intput file, e.g:

    OuterBoundaryCondition:
      ConstraintPreservingBjorhus:
        Type: ConstraintPreservingPhysical
        IncomingWaveProfile: None

From #7177 (Rename StepChoosers tags to LtsStepChoosers):

The StepChoosers option in the Evolution section of the input file for evolutions with local time stepping has been renamed to LtsStepChoosers.

From #7135 (Create PunctureField class):

When using the CurvedScalarWave worldtube executable, the PunctureField type now needs to be specified

Merged pull-requests (106)

General changes (99):

  • ZernikeB2 interpolants (#7140)
  • Run make py-docs in parallel in CI (#7160)
  • Fix compiler error on urania (#7162)
  • Move serialize_and_deserialize into src (#7158)
  • Add a Claude/Codex skills for working on issues & fixing PR comments (#7157)
  • Add Claude review skill (#7154)
  • Allow injecting gravitational wave through outer boundary (#7138)
  • Add function to determine parity for use with cartoon method (#7148)
  • Add coding agent as co-author to review checklist (#7168)
  • Switch Burgers executable to LTS (#7169)
  • AH rewrite: Remove Interpolator (#6805)
  • Store boundary data messages in a small_vector (#7161)
  • Fix compilation of EvolveGhValenciaDivCleanBns with FukaInitialData (#7170)
  • Moved TaggedTuple to DataStructures (#7166)
  • Add support for ZernikeB2 logical derivatives (#7139)
  • Fix journal macro expansion in docs (#7167)
  • Add L1 norm and L1 integral norm to ObserveNorms (#7150)
  • Rework connectivity and XDMF to support spherical shell connectivity, add Block&Element ID (#7136)
  • Remove test_copy_semantics extra construction Args (#7174)
  • Stop partially processing boundary message times (#7176)
  • Remove non-subcell limiting from executables (#7175)
  • Add ZernikeB1 partial derivatives (#7171)
  • Add cartoon cartesian flux divergence (#7165)
  • Rename StepChoosers tags to LtsStepChoosers (#7177)
  • Add post-tool hook for formatting and use Rule for C++ and CMake file edits. (#7172)
  • Claude skill that can fetch a GitHub action job output and fix the issue. Use it to fix develop (#7183)
  • Update IrregularInterpolant to handle FD + Cartoon (#7180)
  • Handle cartoon basis with FD filtering (#7181)
  • Minor fixes to Claude Code skills and hooks (#7189)
  • Use -Og in debug (#7182)
  • Add translation to transition to ringdown script (#6808)
  • Update inertial coord tag for observing norms with cartoon basis (#7187)
  • Find different git-clang-format versions in formatting hook (#7194)
  • Update blaze & catch2 in container (#7197)
  • Soft cancel jobs at 5:45 so that the ccache can be saved (#7196)
  • Clarify random failure skill and have review look for potentially problematic floating behavior (#7192)
  • Process earliest needed message instead of latest (#7201)
  • Update container and build ARM container natively inCI (#7199)
  • Fix floating-point trouble in Wedge shape map (#7191)
  • Update actions versions and use x86-64 arch with Kokkos (#7210)
  • Work around coverxygen bug (#7209)
  • Increase tolerance in np.einsum test (#7193)
  • Add publisher to multigrid books (#7204)
  • Update remaining GitHub actions to newest versions (#7212)
  • Add hessian to SecondPartialDerivatives (#7072)
  • Add perturbative gravitational-wave GR analytic solution for testing wave extraction (#7146)
  • Update another action version (#7215)
  • Add time dependence to RotatedBricks/Rectangles (#7218)
  • Disable -Og by default (#7216)
  • Add single tensor derivative compute item for Cartoon (#7188)
  • Remove/hide some ApplyBoundaryCorrections template parameters (#7217)
  • Perform SWSH transforms of all required weights (#7220)
  • Add mask to secant_interpolate in TOMS748 (#7223)
  • Call CAPTURE_FOR_ERROR from MAKE_GENERATOR (#7224)
  • Fix SWSH filtering of only low modes (#7222)
  • Fix bug in Tags::DerivTensorCompute (#7231)
  • Create exponential filter function for ZernikeB2 (#7195)
  • More descriptive error message for BBH headon (#7226)
  • Add equation of state calls for specific entropy and compute tag for observing it (#7032)
  • Add distributions and singularity positions to rectilinear domains (#7123)
  • Fix DataBox bugs related to Tag::base aliases (#7228)
  • Create PunctureField class (#7135)
  • Add name() function to evolution systems (#7236)
  • Add GridToInertialJacobian compute tag (#7237)
  • Fix continue with ringdown (#6984)
  • Add ZernikeB1 topology (#7206)
  • Update Evolution/DgSubcell to handle cartoon bases (#7179)
  • Add vtu slicing to self-force executables (#7122)
  • Add Filters::Filter base class and Hypercube implementation (#7238)
  • Fix check for observation value in GenerateTetrahedralConnectivity (#7252)
  • Fix environment with old version of brigand (#7250)
  • Move restarting phase logic to Main (#7248)
  • Add ZernikeB1 filtering (only for cartoon bases) (#7211)
  • Modify GH to allow Cartoon bases (#7251)
  • Update div mesh velocity for use with cartoon (#7247)
  • FD cartoon partial derivatives (#6871)
  • Skip adding ID attributes with tetrahedral connectivity (#7253)
  • Add function to return array of parity (for cartoon evolution) (#7243)
  • Ad...
Read more

Release 2026.04.01

01 Apr 18:50

Choose a tag to compare

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.

From #6968 (AMR: allow to enable only specific blocks):

Add the option Amr.EnableInBlocks: All to keep the current behavior.

From #7019 (Add CleanFunctionsOfTime event):

This PR enables discarding of old function-of-time data in the BBH pipeline. If you are using the global_functions_of_time data and the pipeline input files, you will need to remove the CleanFunctionsOfTime event. The global_functions_of_time data is typically used for things like "replaying" evolutions and spacetime interpolation in postprocessing. It is not used by normal volume visualization.

From #6986 (Enable adaptive ah with shape):

Adaptive horizon finding should now work in binary-black-hole evolutions, but it is still experimental. If you turn on adaptivity by adding criteria to the horizon finders, ensure that the excision resolution is never smaller than the apparent horizon resolutions. You can do this, e.g., by setting the maximum allowed resolution LMax for the apparent horizons to the same L as LMax in ControlSystemCharSpeedExcisions in the evolution input file.

From #7051 (Add ProjectToMesh option for ObserveFields):

Input files that create an ObserveFields event need to add the ProjectToMesh option. Specify None if you do not want to project or you want to interpolate instead.

From #7080 (Move/refactor ApplyTensorYlmFilter.):

Anyone including ApplyTensorYlmFilter.hpp needs to include it from a different directory.

From #7087 (Enable BBH completion based on constraints, common horizon finds):

Binary-black-hole inspiral termination critera are now controlled with a now options block in the inspiral YAML file. You should add this block if you are writing your own YAML file (rather than using the BBH pipeline). Here is an example of these options:

BbhCompletionCriteria:
  MinCommonHorizonSuccessesBeforeChecks: 8
  MaxCommonHorizonSuccesses: 100
  GaugeConstraintLinfThreshold: 1.0
  ThreeIndexConstraintLinfThreshold: 1.0
  CommonHorizonLMaxThreshold: 8
  ConstraintCheckInterval: 0.1
  ConstraintCheckVerbose: false

From #7112 (TensorYlm: Allow for Spherepack coefficients.):

Need to pass in the new enum to ylm::TensorYlm::fill* functions.

Merged pull-requests (263)

CLI & Python bindings (12):

  • 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)
  • Status CLI: handle unavailable Slurm fields (#7036)
  • Status CLI: fix Dashboard.py error (#7044)

General changes (227):

  • 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 smoothst...
Read more

Release 2025.08.19

19 Aug 21:50

Choose a tag to compare

Upgrade instructions

From #6610 (Generalize neighbors for nonconforming blocks):

You must pass the ID of the Block or Neighbor to the orientation member function of BlockNeighbors or Neighbors.

From #6611 (Only interpolate for horizon finds from certain blocks):

Each entry under the ApparentHorizons: block of the input file gets a new option BlocksForInterpolation:. This could either be a list of block groups or All to indicate all blocks in the doman.

From #6613 (Add MortarInfo):

A mortar size will need to be obtained from the MortarInfo returned by Tags::MortarInfo instead of directly from Tags::MortarSize.

From #6467 (Check SpEC version when importing):

To use eccentricity control, make sure you're pointing to a recent enough SpEC version (Aug 2024).

From #6589 (Add states DeltaRDriftInward, DeltaRNoDrift):

Add this option to your input file to have the DetalRDriftInward state disabled by default.

ControlSystems:
  Size:
    ...
    DeltaRDriftInwardOptions: None

From #6622 (Add combined event for AhC):

In BBH input files, the part of the events and triggers at slabs block which had the ringdown events goes from this

      - ObservationAhC
      - ObserveFields:
          SubfileName: ForContinuation
          VariablesToObserve:
            - SpacetimeMetric
            - Pi
            - Phi
          InterpolateToMesh: None
          # This volume data is for ringdown, so double precision is needed.
          CoordinatesFloatingPointType: Double
          FloatingPointTypes: [Double]
          BlocksToObserve: All

to this

      - ObservationAhC:
          SubfileName: ForContinuation
          VariablesToObserve:
            - SpacetimeMetric
            - Pi
            - Phi
          InterpolateToMesh: None
          # This volume data is for ringdown, so double precision is needed.
          CoordinatesFloatingPointType: Double
          FloatingPointTypes: [Double]
          BlocksToObserve: All

From #6631 (AMR: add AllowCoarsening policy):

In input files, add the following line to Amr.Policies to keep the current behavior unchanged:

AllowCoarsening: True

From #6670 (Factor Spectral.hpp and Spectral.cpp into multiple files):

If you included Spectral.hpp you will now need to include the appropriate new header(s).

From #6630 (AMR: add keep_coarse_grids option):

In new executables, add the following line to Metavariables::amr to keep the standard AMR behavior:

    static constexpr bool keep_coarse_grids = false;

From #6767 (Move KerrHorizon.xpp to GeneralRelativity lib):

Change the include directory for KerrHorizon.xpp files to PointwiseFunctions/GeneralRelativity/KerrHorizon.xpp.

From #6788 (Remove base tags and use simple tags when possible):

In calls to db::get or in the typelists for argument_tags of mutators, use the simple tag instead of a compute/reference tag

From #6771 (Finish variable-order time-stepper support):

  • Input files using local time-stepping can now specify Auto for the order of the TimeStepper to enable variable-order time-stepping. They must also specify the new VariableOrderAlgorithm option, for example as shown below. See the option help for possible values. The choice has no effect if the time-stepper order is not Auto.
Evolution:
  VariableOrderAlgorithm:
    GoalOrder: 4
  • Executables using local time-stepping must now include the ChangeTimeStepperOrder mutator in their action lists. See the existing executables for details.

From #6793 (AH rewrite: Switch AH execs to use new AH infrastructure):

In the KerrSchildSphericalHarmonic.yaml input file, rename instances of Ah to ApparentHorizon.

The following upgrades are for execs with horizon finders:

  • Remove the DumpVolumeDataOnFailure: option under the Interpolator: group.
  • Under the ApparentHorizons: block, rename MaxInterpolationRetries: to MaxComputeCoordsRetries: and BlocksForInterpolation: to BlocksForHorizonFind.

From #6759 (Recommend charm version 8):

Charm version 8 is now recommended over version 7, but 7 is still supported for applications not using dynamic h-refinement or similar post-startup element creation.

From #6797 (Separate h and p refinement criteria so they can be applied separately in evolution executables):

  • New amr::Criterion have to overload the function type based on whether it returns h or p refinement flags
  • The amr struct in the metavariables must define a static constexpr bool p_refine_in_events_only; the recommendation is to set it to true for evolution executables and false for elliptic executables.
  • If you were previously doing p-refinement via phase changes, you will need to add something like the following to the list of EventsAndTriggers in the input file:
 - Trigger:
       Slabs:
       EvenlySpaced:
           Interval: 1
           Offset: 0
    Events:
        RefineMesh

where you should change the trigger to what you desire. If you only want to do p-refinement, then you should omit PhaseChanges related to AMR in the list of PhaseChangeAndTriggers.

Merged pull-requests (190)

CLI & Python bindings (1):

  • Add Urania machine and validate flag to scheduler (#6184)

General changes (167):

  • Clean up SurfaceFinder code (#6594)
  • Ghost zone comm mc sum fluid coupling (#6564)
  • Fix error in frustum, use ZeroMhd for BNS, not not-BNS.... (#6588)
  • Add evolution and parameter tags for the CCZ4 system (#6596)
  • Retry AH interpolation with new surface after failure (#6595)
  • Add more docs and fix typo in TimeDerivative.hpp/cpp in the CCZ4 system (#6597)
  • Generalize DerivLapse in the CCZ4 system to allow more tensor symmetry (#6598)
  • Remove template parameters from TimeDerivativeTerms (#6555)
  • Factor out enum ChildSize and rename it SegmentSize (#6607)
  • Add enum InterfaceDataPolicy (#6606)
  • Add variable-order support to TimeStepper base class (#6602)
  • Improve documentation and fix Lorentz factor–velocity inconsistency in PrimitiveRecovery.cpp (#6609)
  • Generalize DerivChristoffel in the CCZ4 system to allow more tensor symmetry types (#6600)
  • Generalize spatial_ricci_tensor() for second-order CCZ4 (#6603)
  • Enable BNS Translation control, plot control systems with different line styles (#6601)
  • Add domain creator for S2 spherical shells (#6573)
  • Add variable-order support to the Adams time steppers (#6612)
  • Template ghgrmhd on neutrino transport stub (#6582)
  • Generalize neighbors for nonconforming blocks (#6610)
  • Remove pointless O(N^2) string processing (#6619)
  • Only interpolate for horizon finds from certain blocks (#6611)
  • Add MortarInfo (#6613)
  • Check SpEC version when importing (#6467)
  • Add states DeltaRDriftInward, DeltaRNoDrift (#6589)
  • Add combined event for AhC (#6622)
  • Add ElementSearchTree, use to speed up PointwiseInterpolator (#6571)
  • Simplify volume actions, add dependency to interp framework (#6623)
  • Fix bugs in AMR TruncationError criterion (#6615)
  • Add a Restart phase and regenerate registration data on restart (#6551)
  • Implement h-refinement projectors for volume data (#6621)
  • Prevent writing volume data when AhC fails ([#6624](https://githu...
Read more

Release 2025.04.21

22 Apr 03:51

Choose a tag to compare

Upgrade instructions

From #6530 (Add radial partitioning to BCO outer shells):

When using the BCO domain creator, whenever you specify the "OuterShell" block name, now you must specify "OuterShell0", along with any more shells that are added to the RadialPartitioning:.

From #6540 (Support tracking ObjectCenters in TimeDependentTripleGaussian):

The time dependent triple gaussian input file now needs:

        MovementMethod: ExpansionFactor

to preserve the same behavior.

Merged pull-requests (58)

CLI & Python bindings (3):

  • PySphericalHarmonics: bind Strahlkorper in grid frame (#6552)
  • BBH pipeline: set time bounds in ecc control (#6490)
  • PySphericalHarmonics: instantiate another transform function (#6580)

General changes (51):

  • Correctly identify external Block boundaries for Topologies other than I1 (#6521)
  • Always redo step if size change is desired (#6486)
  • Properly extend shape map into interior region (#6477)
  • Update python on ocean to 3.12.9, with dependencies bootstrapped (#6523)
  • Reset target char speed when going to state DeltaR (#6526)
  • Send inertial centers to control system and add control system for grid centers (#6501)
  • Observe Psi0 in Cce volume (#6529)
  • Add radial partitioning to BCO outer shells (#6530)
  • Refactor Adams-method error estimation (#6512)
  • Replace LinearLeastSquares with free functions (#6532)
  • Correctly treat external boundaries in Elements with new topologies (#6531)
  • Add Ocean2 Environment and Machine (#6525)
  • Allow CCE ObserveFields to write volume data synchronously (#6534)
  • Improve some parsing error messages (#6533)
  • Increase tolerance in skew map test (#6545)
  • Support GridCenters BNS tracking in SeparationLessThan (#6541)
  • Add GridCenters control system support to BCO for tracking NS centers (#6537)
  • Support tracking ObjectCenters in TimeDependentTripleGaussian (#6540)
  • Send more quantities to size control for state 3 (#6518)
  • BlockLogicalCoordinates: factor out search over blocks, support priority order (#6547)
  • Support disabling control systems in UpdateFunctionOfTime (#6539)
  • Disable black formatting in external python files (#6536)
  • Exporter: split functions for reuse (#6546)
  • Add calculation of $\Psi_1$ in the CCE volume (#5480)
  • Refactor TimeDerivativeTerms for GhGrMHD (#6549)
  • Exporter: add PointwiseInterpolator, interpolation in grid frame (#6557)
  • Use topology to create initial mesh (#6560)
  • Fix reported link time (#6559)
  • Communication of coupling terms in MC (#6550)
  • Add a minimum temperature option in Ideal Fluid (#6554)
  • Catch integer overflow in choose_lts_step_size (#6570)
  • Update create_initial_element for a Domain with non-conforming Blocks (#6553)
  • Add disabling rotation control system to BNS (#6548)
  • Add deadlock analysis to Worldtube CurvedScalarWave (#6543)
  • Add check for negative expansion boundary condition. (#6561)
  • Correct size of coupling tensors in MC initialization (#6572)
  • Implement 3D 4-th order finite difference second partial derivatives (#6495)
  • Support some empty volume files in GenerateXdmf (#6575)
  • Add test for Initializationa action in MonteCarlo (#6579)
  • Add print code in test to get FD points and grid spacing (#6574)
  • Add ZeroMhdTimeDerivatives mutator (#6576)
  • Small fixes to enable new topologies (#6583)
  • Update copyright to 2025 (#6584)
  • Change observed CCE volume data format. (#6568)
  • Remove combined GH/CCE executables (#6590)
  • Add pybinding for find_observation_id (#6593)
  • Whitespace deprecated after operator"" (#6592)
  • Add Henry Huang to SpECTRE contributor list (#6591)
  • Add conformal christoffel factor to Preprocess CCE ADM vars (#6586)
  • Modify the initial setup of Fishbone-Moncrief Disk (#6556)
  • Add coefficient calculations for variable-order Adams LTS (#6565)

Documentation (1):

  • Put ADM time derivs in CCE dox (#6524)

Bugfixes (2):

  • Fix bug in UpdateU (#6535)
  • Sort files before concatenating for eccentricity control (#6578)

Continuous integration & deployment (1):

  • Fix macOS build on CI (#6587)

Contributors (14): @kidder, @wthrowe, @knelli2, @geoffrey4444, @nilsdeppe, @AlexCarpenter46, @nilsvu, @duetosymmetry, @pajkosmi, @ffoucart, @jyoo1042, @iago-mendes, @guilara, @hen-w

Release 2025.03.17

17 Mar 14:51

Choose a tag to compare

Upgrade instructions

From #6447 (Add Skew map to BCO):

When using the BinaryCompactObject domain creator, you must add the following option to the time depndent options:

  TimeDependentOptions:
    SkewMap:
      InitialValuesY: [0.0, 0.01, 0.0]
      InitialValuesZ: [0.0, 0.01, 0.0]

It has the same capabilities to be None or from a volume file as the other time dependent map options.

From #6482 (Allow specifying 'None' for control sys in input file):

To turn a control system off in the input file, use

ControlSystems:
  Expansion: None

When keeping a control system active, keep all the same previous options, except remove the IsActive: option. I.e.

ControlSystems:
  Expansion:
    Averager:
      AverageTimescaleFraction: 0.25
      Average0thDeriv: false
    Controller:
      UpdateFraction: 0.03
    TimescaleTuner:
      InitialTimescales: [0.2]
      MinTimescale: 1.0e-2
      MaxTimescale: 10.0
      IncreaseThreshold: 2.5e-4
      DecreaseThreshold: 1.0e-3
      IncreaseFactor: 1.01
      DecreaseFactor: 0.98
    ControlError:

From #5519 (Add debug prints to interpolation framework):

If your executable has the Interpolator or InterpolationTarget parallel component, you need the following in your input file

Interpolator:
  Verbosity: Silent

From #6491 (Allow prolongation/restriction for shape FoT from vol file):

If you are reading the shape function of time from a volume H5 file, add LMax: Auto to the options. Auto here will choose the LMax from the volume H5 file, or if a number is specified, that number will be the new LMax and a prolongation/restriction of the volume H5 shape FoT will happen.

From #6487 (Add Skew control system to BBH):

Any input file for the BBH executable must now also have a Skew: block under the ControlSystems: group with all the same options as the other control systems.

From #6503 (Begin adding support for domains with non-conforming blocks):

  • replace BlockNeighbor<Dim> with Neighbors<Dim, size_t>
  • when constructing block neighbors, it now needs a std::unordered_set<size_t> instead of a size_t for the Id
  • if the neighboring Blocks/Elements are conforming and aligned, you need only construct the Neighbors with the set of Ids
  • if the neighboring Blocks/Elements are conforming, but not aligned, you need to construct the Neighbors with the set of Ids, domain::InterfaceDataPolicy::OrientCopyProject, and the OrientationMap
  • if you call Neighbors::orientation() it now returns a std::optional so you instead to call Neighbors::orientation().value_or(OrientationMap<VolumeDim>::create_aligned()) to get the previous behavior. (In the future, the code calling this will need to be modified in order to support domains with non-conforming Blocks.)

Merged pull-requests (50)

New features (1):

  • Add m1 analytic data & couple GreyM1 to fixed hydro (#6453)

CLI & Python bindings (5):

  • Status CLI / dashboard: handle pending jobs better, plot simulation time over calendar time (#6463)
  • Add glob pattern to eccentricity control (#6465)
  • BBH pipeline: store target params, continue from evolution data for PBJ (#6445)
  • BBH pipeline: write eccentricity params to file, add CLI to compute params & plot (#6468)
  • Use match time as initial time in Ringdown pipeline (#6488)

General changes (37):

  • Skip dat files when plotting control systems (#6458)
  • Avoid assumptions about history in dense output (#6466)
  • Ignore projectile and CMakeUserPreset.json (#6470)
  • Add Skew map (#6446)
  • Allow MessageQueue to update 2+ tags at once (#6476)
  • Remove dependence on timing for checkpoint-restart (#6478)
  • Add Skew map to BCO (#6447)
  • Add puncture field as initial data for worldtube simulations (#6436)
  • Fix compiling ParallelInfo (#6474)
  • Add phase for disable rotation in BNS (#6475)
  • Merge stepping actions in CCE (#6480)
  • Remove some unnecessary tpp includes from headers (#6483)
  • Error if overlay removes restart phase change, add ASSERT to power_monitors, increase SW2D test timeout. (#6484)
  • Add mbot installation shell script (#5750)
  • Add StressEnergyTensor free function (#6457)
  • Allow specifying 'None' for control sys in input file (#6482)
  • Use blaze in largest_stepper_error (#6494)
  • Compute ADM momenta as volume integrals (#6433)
  • Add OrbitRadius trigger (#6500)
  • Use predictor-corrector difference as error in AM (#6504)
  • Enable self force evolution of worldtube (#6506)
  • Print worldtube status (#6507)
  • Add new Basis and Quadrature for cylindrical shells and filled cylinders (#6508)
  • Enable interpolation for shells using spherical harmonics (#6479)
  • Add debug prints to interpolation framework (#5519)
  • Allow prolongation/restriction for shape FoT from vol file (#6491)
  • Store the DG Basis in the Block. (#6510)
  • Adjust approx on a test in TestStressEnergy to prevent a random failure (#6511)
  • Elliptic solver: allow to observe fixed sources, support optional direct solve (#6513)
  • Control ADM energy and angular momentum in BBH ID (#6505)
  • Add Skew control system to BBH (#6487)
  • Increase timeout of BentBeam input file test (#6519)
  • Replace Basis with Topology in Block (#6517)
  • Mc optically thick sphere (#6403)
  • Begin adding support for domains with non-conforming blocks (#6503)
  • Elliptic DG: support modifying boundary data (#6514)
  • Add ability to preprocess non-GH evolution data (#6502)

Bugfixes (4):

  • BBH pipeline: small ecc control fixes (#6461)
  • Fix some BNS ID docs (#6489)
  • Fix rendering of movies with render-1d CLI (#6515)
  • Fix bugs in Skew map (#6493)

Build system (2):

  • Add ability to list files to copy in input file tests (#6473)
  • Link jemalloc only into executables (#6496)

Continuous integration & deployment (1):

  • Update broken libxsmm URL, pin a docker version (#6498)

Contributors (11): @nilsvu, @nilsdeppe, @wthrowe, @pajkosmi, @vtommasini, @knelli2, @nikwit, @jyoo1042, @iago-mendes, @kidder, @ffoucart

Release 2025.01.30

30 Jan 18:47

Choose a tag to compare

Upgrade instructions

From #6407 (Drop modifications to libsharp):

GNU Make is now a required dependency. Using Ninja to build SpECTRE will continue to work, but it will internally use make to build the bundled libsharp libraries.

From #6115 (Use new common time dependent options in Sphere and BCO domains):

The options for the Expansion and Rotation map in the BinaryCompactObject and Sphere domains have changed slightly. In the BinaryCompactObject, they are now

    TimeDependentMaps:
      ...
      ExpansionMap:
        InitialValues: [1.0, -4.6148457646200002e-05, 0.0] # <-- Must specify all derivs
        AsymptoticVelocityOuterBoundary: -1.0e-6 # <-- Same as before
        DecayTimescaleOuterBoundary: 50.0 # <-- Different name, same value as before

In the Sphere domain, you can optionally specify the same options as the BinaryCompactObject like above to use functions of time that expire. Additionally, you can specify options to use SettleToConstant functions of time in the Sphere domain with the options below

    TimeDependentMaps:
      ...
      ExpansionMap:
        InitialValues: [1.0, -4.6148457646200002e-05, 0.0] # <-- Must specify all derivs
        InitialValuesOuterBoundary: [1.0, 0.0, 0.0] # <-- Must specify all derivs
        DecayTimescale: 52.0 # <-- Different name
        DecayTimescaleOuterBoundary: 50.0 # <-- Different name
      RotationMap:
        InitialQuaternions: [[1.0, 0.0, 0.0, 0.0]] # <-- Need quat. Can optionally specify derivs
        DecayTimescale: 50 # <-- Different name

Additionally, for any of the time dependent map options, you can choose the function of time from a volume H5 file by specifying the following options (not just for Expansion, but for Rotation and Translation as well and shape is slightly different)

    TimeDependentMaps:
      ...
      ExpansionMap:
        H5Filename: BbhVolume0.h5
        SubfileName: VolumeData
      ShapeMapA:
        H5Filename: BbhVolume0.h5
        SubfileName: VolumeData
        TransitionEndsAtCube: true

From #6437 (Revamp some deadlock analysis for GH):

For BBH and SingleBH executables, must add a block to the input file

EventsRunAtCleanup:
  ObservationValue: -1000.0
  Events:
    - Event1
    - Event2

From #6444 (Remove CCE ability to read metric worldtube data):

The CCE and KleinGordon CCE executables can no longer read worldtube data written in the "metric" form (i.e. spatial metric, lapse, shift, and their time and radial derivatives). They can only now read worldtube data written in the bondi form, made up of modal coefficients. The preferred method for converting worldtube data is to use the PreprocessCceWorldtube executable.

The input file options H5IsBondiData and FixSpecNormalization are removed from the CCE and KleinGordon CCE input files.

Merged pull-requests (38)

CLI & Python bindings (4):

  • Eccentricity Reduction Automation (#6406)
  • Use SpEC's eccentricity control (#6333)
  • Clean up ringdown script (#6431)
  • Status CLI: fix speed measurement (#6442)

General changes (25):

  • Adjust CCE time stepper tolerances (#6419)
  • Allow CellCenteredFlux to work for mixed systems (#6418)
  • Spherical definite integral (#6420)
  • Add test for partial_derivatives with spherical harmonics (#6421)
  • Compute ADM angular momentum integral in BBH ID (#6399)
  • Add test to evolve packet on Kerr background (#6297)
  • Drop modifications to libsharp (#6407)
  • Speed up list_observation_ids() (#6432)
  • Allow choice of reading Pi and Phi from numeric ID (#6430)
  • Reduce StaticCache compile time (#6426)
  • Use new common time dependent options in Sphere and BCO domains (#6115)
  • Overlay options on restart (#5585)
  • Better domain errors, atmosphere density in ID, and velocity limiting in atmosphere. (#6429)
  • Maximal Isotropic (Horizon Penetrating) Schwarzschild coordinates for XCTS (#6427)
  • Add some nodegroup debugging extras (#6438)
  • Revamp some deadlock analysis for GH (#6437)
  • Add kappa limiting to FixToAtmosphere (#6439)
  • Allow atmosphere on reconstructed state, remove RelEuler system (#6440)
  • Remove CCE ability to read metric worldtube data (#6444)
  • Allow observing names of tags in DataBox (#6448)
  • Remove GH dependence on ScalarTensor and Hydro (#6449)
  • Add functionality needed to have empty vars for MC system (#6424)
  • Add EffectiveSource code (#6400)
  • Allow skipping GRMHD RHS computation in atmosphere/wavezone (#6455)
  • Executable for MC: initialize background (#6355)

Bugfixes (4):

  • Couple quick fixes to allow static execs to build after Release (#6417)
  • Fix compiling StaticCache with nvcc (#6441)
  • Fix running on CaltechHPC: disable ParaView env vars (#6452)
  • Fix bug in PreprocessCceWorldtube (#6459)

Build system (3):

  • Fix yaml-cpp git tag (#6423)
  • Use git-clang-format corresponding to clang-format (#6415)
  • Fix clang-tidy on things including libsharp (#6462)

Continuous integration & deployment (2):

  • Improve NVCC & Kokkos support, test on CI (#6425)
  • Fix CI for Python 3.9 (#6443)

Contributors (12): @knelli2, @kidder, @nilsvu, @iago-mendes, @SamanthaRath, @wthrowe, @nikwit, @vtommasini, @nilsdeppe, @joaorebelo-megum, @AlexCarpenter46, @ffoucart

Release 2024.12.16

16 Dec 21:36

Choose a tag to compare

Upgrade instructions

From #6287 (Change ReduceCceWorldtube to use options):

ReduceCceWorldtube executable no longer accepts command-line arguments. They must now be specified in a YAML file. See src/Executables/ReduceCceWorldtube/ReduceCceWorldtube.yaml for an example. You can then run the executable similar to our charm executables as

ReduceCceWorldtube --input-file ReduceCceWorldtube.yaml

From #6343 (Disable PI step size controller for LTS steps):

If using ErrorControl to choose a step size for local time stepping, you may have to tighten the error tolerances specified in the input file. The code previously often kept the actual error estimate significantly lower than the specified tolerance.

From #6358 (Fix bugs in RefineMesh Event):

Must add a new option ErrorBeyondLimits: False to the AMR limits section, i.e.

Amr:
  ...
  Policies:
    ...
    Limits:
      ...
      ErrorBeyondLimits: False

From #6360 (Add ability to RunEventsAndTriggers at steps within a slab for local time-stepping):

  • In elliptic input files, rename EventsAndTriggers to EventsAndTriggersAtIterations
  • In evolution input files, rename EventsAndTriggers to EventsAndTriggersAtSlabs
  • In evolution input files using local time stepping, add a new option EventsAndTriggersAtSteps

From #6365 (Write out BNS inertial centers for control system):

The grid centers of the BNS are now located in the /ControlSystems/BnsGridCenters subfile of the reductions H5 file, and the inertial centers are in the /ControlSystems/BnsInertialCenters subfile.

From #6373 (Convert M1Grey to use runtime initial data):

  • New AnalyticSolutions for M1Grey should be added to RadiationTransport::M1Grey::Solutions::all_solutions
  • Executable was renamed to EvolveM1Grey
  • Input file needs updating (see tests/InputFiles/RadiationTransport/M1Grey/ConstantM1.yaml)

From #6364 (Support filled sphere domain with shape map):

When constructing a Sphere domain with time-dependent maps, add the new option TransitionRotScaleTrans (boolean). Set it to True to keep the old behavior of transitioning the rotation, scaling, and translation maps to zero at the outer boundary (see second image in the PR description, used e.g. to impose boundary conditions in the BBH ringdown domain). Set it to False to disable the transition, e.g. to rigidly translate the sphere.

From #6398 (Update ReduceCceWorldtube with new features):

There are two new options for the ReduceCceWorldtube executable. They are InputDataFormat: and ExtractionRadius:. Also the InputH5File option can now be either a single filename or a list of filenames to combine temporally.

Merged pull-requests (84)

CLI & Python bindings (11):

  • Update Inspiral.yaml (#6291)
  • Add support for tetrahedral connectivity and use scipy to generate it (#6303)
  • Render Domain.py: specify background color (#6317)
  • Add PiecewisePolynomial, QuaternionFunctionofTime, and Serialize Pybindings (#6336)
  • Single iteration of eccentricity control reduction (#6295)
  • TransformVolumeData.py: support instance methods as kernels (#6357)
  • Bind PN BinaryTrajectories in Python (#6366)
  • Update directory structure of ID parameter control (#6379)
  • TransformVol.py: add start, stop, stride (#6380)
  • Damp initial iterations of Broyden's method used in ID parameter control (#6378)
  • Add pybindings for Spherepack (#6412)

General changes (63):

  • Enable BBH ID control of CoM and Padm. (#6315)
  • Accelerate exporter with block priority order (#6314)
  • Change non-monotonic AM predictor coefficients (#6283)
  • Remove StepChooserUse from most StepChoosers (#6310)
  • Add Sonic HPC (#6311)
  • Add function to combine H5 dat files (#6298)
  • Remove zeros after LtsCoefficients arithmetic (#6308)
  • Update Metadata, add ICTS to Affiliations (#6322)
  • Add ability to take a consistent LTS step in a region (#6319)
  • Fix some dependency tracking (#6321)
  • Change ReduceCceWorldtube to use options (#6287)
  • Conform BNS ID domain to star surfaces (#6329)
  • Enable p-refinement via an Event (#6320)
  • Add instantiation to strahlkorper in diff frame (#6337)
  • Add smoothly broken power law to adjust worldtube radius (#6261)
  • Correctly set timeouts for various python tests (#6348)
  • Disable PI step size controller for LTS steps (#6343)
  • Support linearised fluxes. (#6349)
  • Update Inspiral.yaml (#6346)
  • Add Transition to Ringdown Script (#6316)
  • Support sources fetching from const_global_cache. (#6352)
  • Adjust apparent horizon BC's. (#6353)
  • Numeric ID importer: support p-refinement (#6339)
  • Allow three extra refinement levels for an ElementId (#6347)
  • Add trigger StepsWithinSlab (#6361)
  • Add ability to RunEventsAndTriggers at steps within a slab for local time-stepping (#6360)
  • Support clang 19 & CMake 3.30, allow to toggle executable size optimization on Apple Silicon (#6356)
  • Increase default l_max for the horizon finder. (#6367)
  • Add number of grid points to ADM observer. (#6368)
  • Write out BNS inertial centers for control system (#6365)
  • Organizational changes to shared CCE code (#6354)
  • Add some missing namespace documentation (#6370)
  • Add event to observe AMR criteria (#6369)
  • Fixes to nodegroup elements (#6375)
  • Extend sphere and wedge transition (#6359)
  • Convert M1Grey to use runtime initial data (#6373)
  • Error in generate-xdmf for 1d datasets (#6374)
  • Improve accuracy of CoM integral (#6377)
  • Add UpdateFunctionsOfTime action (#6264)
  • Support filled sphere domain with shape map (#6364)
  • Fix FPEs occurring when density is zero in MC (#6383)
  • Add white noise in pressure in the disk and normalize the density (#6342)
  • Use hydro speeds in GRMHD HLL where magnetic field is zero (#5788)
  • Add self force turn on function (#6385)
  • Support equiangular grid points for BNS domain (#6324)
  • Add python code to compute BNS trajectories from mass integrals (#6362)
  • Fix documentation with recent versions of doxygen (#6384)
  • Change the error condition for bounds on TOMS748 (#6387)
  • Add an input file for KG CCE ([#6388](https://github.c...
Read more

Release 2024.09.29

30 Sep 03:22

Choose a tag to compare

Upgrade instructions

From #6296 (Add epsilon when reading NumericInitialData):

Any executable that reads in numeric initial data must add the following option to the NumericInitialData: block

NumericInitialData:
  ...
  ObservationValueEpsilon: Auto # <-- This defaults to 1e-12

Merged pull-requests (21)

CLI & Python bindings (1):

  • TransformVolumeData.py: support ElementId in kernels (#6289)

General changes (15):

  • Observe worldtube position, velocity and acceleration (#6272)
  • Add several common time dependent options (#6113)
  • Add volume integrands for XCTS asymptotic quantities. (#6276)
  • Observe min delta x in ObserveTimeStepVolume (#6301)
  • Add FindRadialSurface.py (#6300)
  • Add epsilon when reading NumericInitialData (#6296)
  • Deprecate the Metric worldtube format in CCE (#6299)
  • Add block_names function to domain and allow non-isotropic mesh where we force DG (#6302)
  • Add tags used to smoothly turn on the self force (#6273)
  • Add jacobian for hydro coupling source term (#6132)
  • Communicate volume mesh in boundary data (#6293)
  • Support time range and only combining some blocks in combine_h5 (#6306)
  • Mark formaline objects noexecstack (#6309)
  • Allow observing only some blocks in ObserveFields (#6305)
  • Fix two Python tests (#6307)

Documentation (2):

  • Add documentation and function to make debugging multiple MPI ranks easier (#6288)
  • Hitchhiker’s Guide Update (#6304)

Bugfixes (1):

  • Fix output for eccentricity params (#6290)

Continuous integration & deployment (2):

  • Fix release notes for empty PR description (#6294)
  • Avoid running out of disk space on CI (#6313)

Contributors (10): @nikwit, @nilsvu, @guilara, @knelli2, @iago-mendes, @nilsdeppe, @pajkosmi, @kidder, @wthrowe, @SunPeike

Release 2024.09.16

17 Sep 06:26

Choose a tag to compare

Upgrade instructions

From #6212 (Control center of mass and linear momentum in initial data.):

This PR changes BinaryCompactObject, which is used in multiple parts of the code. Now, the constructor expects the argument std::array<double, 2> center_of_mass_offset.

From #6254 (Error if the time step becomes too small):

Input files for evolution executables now require a new MinimumTimeStep option in the Evolution section.

From #6247 (Add single BH control system):

Must now specify a Translation: control system in EvolveGhSingleBlackHole input files.

Merged pull-requests (82)

CLI & Python bindings (3):

  • Add zoom to BBH rendering script (#6197)
  • PlotPowerMonitors: skip filtered modes (#6206)
  • Update Inspiral.yaml (#6259)

General changes (58):

  • Add FromEos Option to ElectronFraction in Spec Initial Data (#6174)
  • Use continued fraction semiconvergent on overflow (#6180)
  • Start adding support for Kokkos and the Nvidia compiler (#6203)
  • Compress OrientationMap and add create_aligned to catch default construction (#6166)
  • Clarify error messages in H5 Cce constructor (#6211)
  • Add more Kokkos and nvcc support (#6213)
  • Update Asserts in MultiLinearSpanInterpolation (#6217)
  • Fetch Kokkos if requested (#6219)
  • Fix PCH issue (#6220)
  • Add option for higher dimension EOSes to Spec initial data (#6218)
  • Observe DimensionfulSpinVector on horizons (#6204)
  • Control center of mass and linear momentum in initial data. (#6212)
  • Fix clang-tidy errors in PiMonteCarlo example (#6229)
  • Fix iterations test failure (#6225)
  • Add nodegroup support to control system and interpolation framework (#6172)
  • Numerically invert Jacobian in combined call (#6223)
  • Support complex numbers in IrregularInterpolant (#6228)
  • Increase timeout in ReadBoundaryDataH5 test (#6235)
  • Add DevGuide for connectivity in SpECTRE (#5825)
  • Project mortar data (#6230)
  • Blaze: restore support for padding (#3825)
  • Construct DataVector from STL containers (#5587)
  • Merge implementations of Interval, Rectangle, and Brick (#5898)
  • Enable ParaView on CaltechHPC (#6135)
  • Support complex numbers in PartialDerivatives (#6107)
  • Allow offset in Wedge transition function (#6234)
  • AlignedLattice: boundary condition per direction (#6241)
  • Add more support for nvcc (#6248)
  • Add ScalarGaussBonnet system and functions. (#6244)
  • Add a lower bound of zero for TildeTau in FixConservative for zero B (#6242)
  • Add tags for ghost zone communication in MC (#6138)
  • Add logical_divergence function, elliptic StrongLogical DG formulation (#6245)
  • Upgrade to Apple Silicon on CI, simplify Apple Silicon installation instructions (#5973)
  • Enable Wedges to have a focal offset (#6214)
  • Monte Carlo time stepping action (#6198)
  • Support complex numbers in DG routines (#6252)
  • Fix FPEs in tests (#6265)
  • Fix printing tensors in GDB on mbot (#6262)
  • Add equatorial compression option for spherical torus map (#6263)
  • Add nodegroup support to SW and GH execs (#6251)
  • nvcc support for almost entire code base (#6249)
  • Adds worldtube functions of time to BinaryCompactObject (#6255)
  • Error if the time step becomes too small (#6254)
  • Add Wedge Offset Option to BCO (#6243)
  • Add YlmsFromSpEC to shape time dependent options (#6114)
  • Test complex elliptic DG operator (#6269)
  • Add Perlmutter machine (#6267)
  • Add Christoffel symbol and trace to BackgroundQuantities (#6270)
  • Add protection against negative pressure in HybridEos (#6221)
  • Add single BH control system (#6247)
  • Add template for InboxTags to switch to nodegroup (#6275)
  • Fix interpolation stencil misalignment in RotatingStar (#6260)
  • Limit ADM integrals observer to the finest grid. (#6286)
  • Add executable to write CCE worldtube coords to a file (#6284)
  • Fixes for nodegroups running on multiple nodes (#6285)
  • Add serial numeric initial data loading (#6279)
  • Combine Shape map calls (#6227)
  • Increase a test timeout (#6292)

Documentation (5):

  • Add favicon with spectre logo (#6205)
  • Add link to logos (#6201)
  • Document Exporter namespace (#6222)
  • Add tutorial for visualizing volume data with Python, update docs (#5535)
  • Document CCE grid point locations for Ylms (#6271)

Bugfixes (11):

  • Fix typo in BC test. (#6215)
  • Fix compatibility with Numpy 2.1 (#6232)
  • Fix infinite loop time step rejection (#6250)
  • Fix COM offset when starting from SpEC ID (#6257)
  • Fix race condition in exporter (#6258)
  • Fix CaltechHPC submit script (#6268)
  • Fix colorbar in PlotSlice (#6266)
  • Fix size_t underflow in geodesic worldtube evolution (#6277)
  • Prevent worldtube observing during substeps (#6274)
  • Fix communication race bug in interpolation framework (#6253)
  • Fix clang-tidy quirk (#6282)

Build system (1):

  • Download dependencies on demand (#5956)

Continuous integration & deployment (4):

  • Fix clang-tidy exit codes on CI (#6209)
  • Fix macOS CI (#6216)
  • Disable LB test in Burgers yaml (#6210)
  • Fix clang-tidy on CI (#6226)

Contributors (17): @ctrandrsn, @nilsvu, @duetosymmetry, @wthrowe, @nilsdepp...

Read more