Skip to content

Releases: sxs-collaboration/spectre

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

Release 2024.08.03

04 Aug 01:09

Choose a tag to compare

Upgrade instructions

From #6090 (Bump pybind11 version, include in Py dependencies, support pathlib.Path):

Pybind11 version 2.7+ is required now. To upgrade, run pip install -r support/Python/requirements.txt in your Python environment.

From #6118 (Control BBH masses and spins in initial data):

If calling generate_id or id_parameters from InitialData.py, you now need to specify the masses mass_a and mass_b separately instead of the previous mass_ratio. Note that generate_id_command still takes in mass_ratio as an argument.

From #5999 (Redesign step/slab size changing):

When changing slab sizes, including step size with global time-stepping, some effects now only change the size for a single step, after which the step will revert to the previous value. These include the StepChoosers documented as limiting the step (as opposed to setting a goal) and the GTS control-system step limit.

The "Increase" StepChooser has been renamed to "LimitIncrease" to reflect this change, and "Constant" has been split into "Constant", which sets a goal, and "Maximum", which does not. Check the documentation or help text to see which type of change other StepChoosers now apply.

From #6120 (Fix unit conversions between SpECTRE and RotNS for non-polytropic EoS):

If you use RotatingStar with polytropic EoSs, nothing changes for you, the input file works the same.

If you use some other EoS, instead of using the PolytropicConstant input option, you should use EquationOfState followed by the equation of state with which you would like to initialize the data.

From #6164 (Remove IWYU):

Removed include-what-you-use (IWYU) as a dependency.

Merged pull-requests (89)

CLI & Python bindings (17):

  • Remove defaults from TransformVolumeData.py (#6071)
  • Automate choice of some params in BBH pipeline (#5957)
  • Optionally specify path to Horizons.h5 in Inspiral CLI (#6112)
  • Control BBH masses and spins in initial data (#6118)
  • Minor updates to PlotTrajectories (#6131)
  • Set shape of initial BBH inspiral excisions to ID excisions (#6127)
  • InitialData.py: allow to disable param control (#6148)
  • Add experimental dashboard to monitor simulations (#6137)
  • Add some pybindings (#6149)
  • Maintain initial data resolution in control loop. (#6162)
  • Ignore matplotlib font manager debug logging info (#6165)
  • Add 3D BBH visualization script (#4656)
  • Add python bindings for Index and parts of subcell code, add missing action to NewtEuler (#6185)
  • Add python bindings for Hydro lib (#6186)
  • Add some defaults to eccentricity control CLI (#6190)
  • Add bindings for 1d h projection matrix functions (#6194)
  • Factor plotting functions out of CLI (#6196)

General changes (47):

  • Simplify MortarData (#6061)
  • Move MortarSizeHash to Spectral and add several tests for DirectionalId (#6099)
  • Use mc high ka corr in time step (#6069)
  • Add is_equilibrium and is_barotropic tests to EOSes (#6104)
  • Fix Test_DgSubcell for GCC 13.2 (#6119)
  • Add Iago Mendes to Authors.Contributors. (#6130)
  • Set initial temperature lower bound from EOS (#6121)
  • Update CaltechHPC submit script (#6133)
  • Add constraint preserving boundary condition product for ScalarTensor (#6122)
  • Add support for 3d EOSes for Spec initial data (#6134)
  • Add boost to KerrSchild (#5610)
  • Add stress-energy tensor to FConstraint in ScalarTensor (#6136)
  • Add script to compute eccentricity removal updates for SpECTRE ID (#5895)
  • Stop storing volume time-stepper errors (#6123)
  • Compute total ADM linear momentum integrands. (#6140)
  • Add FromVolumeFile time dependent option (#6109)
  • Add BnsInitialData System (#6054)
  • Add ObserveTimeStepVolume event (#6139)
  • Add 3D EoS test helper and fix bug in 2d random generators (#6030)
  • Enable nodegroups with LTS and compute correct hash for boundary data (#6143)
  • Redesign step/slab size changing (#5999)
  • Add TaggedVariant, parsable similarly to a factory (#6096)
  • Increase epsilon in MultiLinearSpanInterpolation test (#6153)
  • Make MortarData a simple struct (#6147)
  • Fix unit conversions between SpECTRE and RotNS for non-polytropic EoS (#6120)
  • Add environment for Oscar (cluster at Brown) (#6152)
  • Add DgElement collection component and CreateElementCollection action (#6083)
  • Add PerformAlgorithOnElement action for nodegroup, disable slab size adjust for nodegroup (#6144)
  • Communicate integration order of time-stepper (#6157)
  • Add helper functions to DgElementArrayMember(Base) (#6159)
  • Print ElementId in DataTooBig error (#6160)
  • Add actions GetItemFromDistributedObject, SimpleActionOnElement, and PrintDgElementArray (nodegroup support) (#6161)
  • Allow compiling nodegroup elements and with numerical data (errors for now) (#6158)
  • Support complex numbers in serial linear solvers, add BLAS zdot (#6117)
  • Exporter: allow extrapolation into excisions (#6056)
  • Observe GR variables in EvolveValenciaDivClean volume data (#6163)
  • Remove some old clusters (#6170)
  • Observe ADM linear momentum in SolveXcts executable. (#6151)
  • Measure total ADM mass in XCTS system. (#6176)
  • Switch backwards input file test from 3D to 2D (#6175)
  • Move registration to before import initial data in GhValenciaDivClean. (#6173)
  • Update Ocean submit script (#6094)
  • Test ADM integrals with a boosted Schwarzschild solution. (#6177)
  • Add parallelization tutorial executable PiMonteCarlo (#6189)
  • Enforce cascadelake arch on Oscar (#6193)
  • Measure center of mass in XCTS system. (#6192)
  • Enable ParaView on Oscar (#6195)

Documentation (7):

Read more

Release 2024.06.18

18 Jun 14:55

Choose a tag to compare

Upgrade instructions

From #6024 (FindHorizon.py: also compute horizon quantities):

The FindHorizons3D executable was removed. You can find horizons in 3D volume data in Python like this:

from spectre.Pipelines.Bbh.FindHorizon import find_horizon
from spectre.SphericalHarmonics import Strahlkorper

horizon, quantities = find_horizon(
    h5_files, subfile_name, obs_id, obs_time,
    initial_guess=Strahlkorper(l_max, m_max, radius, center)
)

mass = quantities["ChristodoulouMass"]
spin = quantities["DimensionlessSpinMagnitude"]

Merged pull-requests (29)

CLI & Python bindings (3):

  • CLI for plotting trajectories of binaries (#5976)
  • FindHorizon.py: also compute horizon quantities (#6024)
  • Clarify PlotCce modes option (#6087)

General changes (19):

  • Add more updates to CCE tutorial (#6059)
  • Add fixed object radius and increase run speed (#6049)
  • Added Vittoria Tommasini to Spectre Authors.Contributors list (#6068)
  • Add IntegratedFunctionOfTime (#5996)
  • ElementID: assert max refinement level (#6074)
  • Add ComovingCharSpeedDerivative (#5516)
  • Add LTS CMake Option in GenHarmBase Executables (#6057)
  • Docker ubuntu 18.04 support and static execs (#6060)
  • Restructure ApplyBoundaryCorrections and support AtomicBoundaryInbox (#6044)
  • Add code to get common horizon coefs in ringdown distorted frame (#6065)
  • Add LTS support to Adams-Moulton time steppers (#6043)
  • Clarify error in InitializeJ (#6048)
  • Set up ghost zones for MC (#6037)
  • Improve some CLI errors and docs (#6088)
  • Add threaded callbacks for functions of times (#6084)
  • Mc high ka corrections (#5977)
  • BBH pipeline: find horizons in initial data, write masses & spins to file (#6082)
  • Support ComplexDataVector in observations (#6075)
  • Add computation of light crossing time of a cell. (#6093)

Documentation (1):

  • Add dev guide for AMR (#6078)

Bugfixes (2):

  • Fix test failure Worldtube.Tags (#6079)
  • BBH pipeline: fix default resolution parameters (#6067)

Continuous integration & deployment (4):

  • Fix notification for new contributors (#6066)
  • Avoid name conflicts between Dat and Cce tests (#6081)
  • Increase a test timeout (#6089)
  • Support numpy 2.0.0 (#6095)

Contributors (11): @knelli2, @vtommasini, @nilsvu, @nikwit, @markscheel, @AlexCarpenter46, @nilsdeppe, @geoffrey4444, @wthrowe, @ffoucart, @kidder

Release 2024.06.05

05 Jun 21:16

Choose a tag to compare

Upgrade instructions

From #5978 (Add CLI to plot basic control system quantities):

To use, build the CLI then run

spectre plot control-system -h

From #5985 (Write an H5::Cce file from the CharacteristicExtract execs):

The output from CCE in the reductions file should only be a Cce.cce subfile. It won't have a bunch of .dat files anymore.

From #6019 (Split time-stepper-history cleaning from update):

Evolution executables now need to include the Actions::CleanHistory action after each variable update. See the modifications to the executables in this PR for suggested exact changes.

From #6038 (Update Apple Silicon docs):

The instructions for building spectre on Apple Silicon have been updated, including enabling python bindings and building with shared libraries instead of static libraries.

From #6058 (AMR: do not enforce 2:1 balance in normal direction):

In input files that use AMR, you will need to add EnforceTwoToOneBalanceInNormalDirection: true to the list of Policies

Merged pull-requests (54)

CLI & Python bindings (7):

  • Add CLI to plot basic control system quantities (#5978)
  • Plot zero crossing time on log scale in PlotSize CLI (#5987)
  • Plot along line log scale options (#6007)
  • Add CLI for plotting CCE output data (#6011)
  • Add python bindings for ModalVector (#6017)
  • Status CLI: remove some backwards compatibility (#6022)
  • Support SpEC initial data in BBH pipeline (#6031)

General changes (30):

  • Observe walltime in elliptic solver (#5941)
  • BBH Inspiral.yaml: trigger checkpoint and AH observations more often (#5979)
  • Add BondiSachs output to BBH pipeline (#5990)
  • Write an H5::Cce file from the *CharacteristicExtract execs (#5985)
  • Decrease sizes of Time and TimeStepId (#5988)
  • Expand list of TciStatus (#6005)
  • Reduce the size of Mesh, Basis & Quadrature, Direction & Size, ElementId, FixedHashMap, and combine ElementId and DirectionalId (#6000)
  • Enable filtering in GH LTS evolutions (#6013)
  • More helper code for nodegroups, eg AtomicInboxBoundaryData, number_of_block_boundaries for an ElementId (#5997)
  • Add ErrorIfDataTooBig to BBH pipeline (#6014)
  • Implement reader for NuLib interaction tables (#5902)
  • Update packet list on absorption in MC (#5995)
  • Add increasing_substep_time_steppers list (#6021)
  • BBH pipeline: load subcommands lazily (#6025)
  • Add pup and move constructor to AtomicInboxBoundaryData (#6026)
  • Move element distribution code from DgElementArray to free function (#6028)
  • More minor code for nodegroup elements (#6027)
  • Split time-stepper-history cleaning from update (#6019)
  • Compress ElementId more (#6046)
  • Cleanup element map and decrease size of ChildSize/MortarSize enums (#6032)
  • Update how often constraints are observed in BBH inspiral pipeline (#6039)
  • Improve time step too small error. (#6035)
  • Add ElementLocationsReference tag, and TransformPdalForNodegroup metafunction (#6040)
  • Add SendDataToElement action for nodegroup elements (#6041)
  • Add DgElementArrayMember (#6042)
  • Use DirectionalIdMaps for data on mortars (#6051)
  • Add support for Charm 7.0.1, switch container to it, and add Charm++ license+copyright (#6050)
  • Draft function to take full MC step (#5907)
  • Add limit to time step of packet in high opacity region (#5998)
  • AMR: do not enforce 2:1 balance in normal direction (#6058)

Documentation (6):

  • Document the CCE example input file (#6015)
  • Update tutorial to match generate-xdmf arguments (#6047)
  • Update CCE tutorial (#6029)
  • Update Apple Silicon docs (#6038)
  • Rename 3-metric as gamma in help for Kerr solution (#6055)
  • Change to documentation for CaltechHPC cluster. (#6064)

Bugfixes (5):

  • Fix overflow FPE in TimescaleTuner test (#5989)
  • Remove extraneous factor of 2 in coord of MC packets (#5992)
  • Fix Psi4 Test (#6033)
  • Fix missing includes for no-PCH builds (#6034)
  • Change subfile for constraint energy observation (#6062)

Build system (1):

  • Fix linker errors when building with shared libs on macOS Apple Silicon (#6036)

Continuous integration & deployment (5):

  • Fix broken codecov links in Readme (#5984)
  • Disable code cov (#5991)
  • Bump macOS GitHub CI runner version (#6006)
  • Update docker github actions (#6045)
  • Switch to using 4 cores in CI since GitHub supports that now (#6052)

Contributors (12): @nilsvu, @knelli2, @kidder, @wthrowe, @ffoucart, @shabibti, @ncorsobh, @nilsdeppe, @geoffrey4444, @AlexCarpenter46, @farhannaqib, @estherroselopez