Skip to content

Commit

Permalink
Merge branch 'develop' into jmm/make-get-parent-pointer-consistent
Browse files Browse the repository at this point in the history
  • Loading branch information
Yurlungur authored Nov 21, 2023
2 parents fcf897d + 998f282 commit 0e498ee
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 25 deletions.
4 changes: 4 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ detail. Why is this change required? What problem does it solve?-->
- [ ] Adds a test for any bugs fixed. Adds tests for new features.
- [ ] Code is formatted
- [ ] Changes are summarized in CHANGELOG.md
- [ ] Change is breaking (API, behavior, ...)
- [ ] Change is *additionally* added to CHANGELOG.md in the breaking section
- [ ] PR is marked as breaking
- [ ] Short summary API changes at the top of the PR (plus optionally with an automated update/fix script)
- [ ] CI has been triggered on [Darwin](https://re-git.lanl.gov/eap-oss/parthenon/-/pipelines) for performance regression tests.
- [ ] Docs build
- [ ] (@lanl.gov employees) Update copyright on changed files
22 changes: 20 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,23 @@

## Current develop

### Added (new features/APIs/variables/...)

### Changed (changing behavior/API/variables/...)

### Fixed (not changing behavior/API/variables/...)

### Infrastructure (changes irrelevant to downstream codes)

### Removed (removing behavior/API/varaibles/...)

### Incompatibilities (i.e. breaking changes)
- [[PR 974]](https://github.com/parthenon-hpc-lab/parthenon/pull/974) Change GetParentPointer to always return T*


## Release 23.11
Date: 2023-11-16

### Added (new features/APIs/variables/...)
- [[PR 962]](https://github.com/parthenon-hpc-lab/parthenon/pull/962) Add support for in-situ histograms/profiles
- [[PR 911]](https://github.com/parthenon-hpc-lab/parthenon/pull/911) Add infrastructure for geometric multi-grid
Expand All @@ -21,8 +38,9 @@
- [[PR 868]](https://github.com/parthenon-hpc-lab/parthenon/pull/868) Add block-local face, edge, and nodal fields and allow for packing

### Changed (changing behavior/API/variables/...)
- [[PR 974]](https://github.com/parthenon-hpc-lab/parthenon/pull/974) Change GetParentPointer to always return T*
- [[PR 976]](https://github.com/parthenon-hpc-lab/parthenon/pull/976) Move UserWorkBeforeLoop to be after first o
- [[PR 977]](https://github.com/parthenon-hpc-lab/parthenon/pull/977) Change to CalVer from SemVer
- [[PR 975]](https://github.com/parthenon-hpc-lab/parthenon/pull/975) Construct staged integrators via arbitrary name
- [[PR 976]](https://github.com/parthenon-hpc-lab/parthenon/pull/976) Move UserWorkBeforeLoop to be after first output
- [[PR 965]](https://github.com/parthenon-hpc-lab/parthenon/pull/965) Allow leading whitespace in input parameters
- [[PR 926]](https://github.com/parthenon-hpc-lab/parthenon/pull/926) Internal refinement op registration
- [[PR 897]](https://github.com/parthenon-hpc-lab/parthenon/pull/897) Deflate compression filter is not called any more if compression is soft disabled
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ cmake_minimum_required(VERSION 3.16)
# Imports machine-specific configuration
include(cmake/MachineCfg.cmake)

project(parthenon VERSION 0.8.0 LANGUAGES C CXX)
project(parthenon VERSION 23.11 LANGUAGES C CXX)

if (${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.19.0)
cmake_policy(SET CMP0110 NEW)
Expand Down
30 changes: 12 additions & 18 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,26 +39,20 @@ Use GitHub labels as appropriate and feel free to directly add/tag people to the

### Summary of Branching Model and Versioning

Two main branches exist:
- `stable` contains the latest "stable" release
- `develop` contains all approved changes since the previous release
Only a single main branch called `develop` exists and all PRs should be merged
into that branch.
Individual versions/releases are tracked by tags.

We aim at creating a new release everyone 4 to 6 weeks.
We aim at creating a new release every 6 months.
The decision on creating a new release is made during the bi-weekly calls.
A release consists of of merging `develop` into `stable` and create a new tag for that version
using a modified [semantic versioning](https://semver.org/) scheme.
Releases will be tagged `v0.MAJOR.MINOR` given the current rapid development.

- MAJOR is incremented for API incompatible changes
- MINOR is incremented for backwards compatible changes and bug fixes

This scheme will be reevaluated once a future version is considered to be the first official stable release.

The main idea behind separating `stable` from `develop` is to allow for more in-depth nightly testing
on the latter.
This specifically applies to downstream codes so that incompatibilities (e.g., due to to an
updated API) are discovered early.

Following steps need to be done for a new release:

- Create a new tag for that version using a modified [calender versioning](https://calver.org/) scheme.
Releases will be tagged `vYY.0M` i.e., short years and zero-padded months.
- Update the version in the main `CMakeLists.txt`.
- Update the `CHANGELOG.md` (i.e., add a release header and create new empty
categories for the "Current develop" section.
- Sent a mail to the mailing list announcing the new release.

### Contributing Code

Expand Down
19 changes: 17 additions & 2 deletions src/time_integration/butcher_integrator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,12 @@ namespace parthenon {
* alpha_k = c_k
* c_k = b_k
*/
ButcherIntegrator::ButcherIntegrator(ParameterInput *pin)
: StagedIntegrator(pin->GetOrAddString("parthenon/time", "integrator", "rk2")) {

//----------------------------------------------------------------------------------------
//! \class ButcherIntegrator::ButcherIntegrator(const std::string &name)
//! \brief Constructs a ButcherIntegrator instance given a string (e.g., rk2, rk3..)

ButcherIntegrator::ButcherIntegrator(const std::string &name) : StagedIntegrator(name) {
if (name_ == "rk1") {
nstages = nbuffers = 1;
Resize_(nstages);
Expand Down Expand Up @@ -219,6 +223,17 @@ ButcherIntegrator::ButcherIntegrator(ParameterInput *pin)
}
}

//----------------------------------------------------------------------------------------
//! \class ButcherIntegrator::ButcherIntegrator(ParameterInput *pin)
//! \brief Constructs a ButcherIntegrator instance given ParameterInput *pin

ButcherIntegrator::ButcherIntegrator(ParameterInput *pin)
: ButcherIntegrator(pin->GetOrAddString("parthenon/time", "integrator", "rk2")) {}

//----------------------------------------------------------------------------------------
//! \fn void ButcherIntegrator::Resize_(int nstages)
//! \brief Resizes ButcherIntegrator registers given a supplied integer nstages

void ButcherIntegrator::Resize_(int nstages) {
a.resize(nstages);
for (int i = 0; i < a.size(); ++i) {
Expand Down
16 changes: 14 additions & 2 deletions src/time_integration/low_storage_integrator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,13 @@ namespace parthenon {
* Stone et al., ApJS (2020) 249:4
* See equations 11 through 15.
*/
LowStorageIntegrator::LowStorageIntegrator(ParameterInput *pin)
: StagedIntegrator(pin->GetOrAddString("parthenon/time", "integrator", "rk2")) {

//----------------------------------------------------------------------------------------
//! \class LowStorageIntegrator::LowStorageIntegrator(const std::string &name)
//! \brief Constructs a LowStorageIntegrator instance given a string (e.g., rk2, rk3..)

LowStorageIntegrator::LowStorageIntegrator(const std::string &name)
: StagedIntegrator(name) {
if (name_ == "rk1") {
nstages = 1;
nbuffers = 1;
Expand Down Expand Up @@ -155,4 +160,11 @@ LowStorageIntegrator::LowStorageIntegrator(ParameterInput *pin)
MakePeriodicNames_(stage_name, nstages);
}

//----------------------------------------------------------------------------------------
//! \class LowStorageIntegrator::LowStorageIntegrator(ParameterInput *pin)
//! \brief Constructs a LowStorageIntegrator instance given ParameterInput *pin

LowStorageIntegrator::LowStorageIntegrator(ParameterInput *pin)
: LowStorageIntegrator(pin->GetOrAddString("parthenon/time", "integrator", "rk2")) {}

} // namespace parthenon
2 changes: 2 additions & 0 deletions src/time_integration/staged_integrator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class StagedIntegrator {
class LowStorageIntegrator : public StagedIntegrator {
public:
LowStorageIntegrator() = default;
explicit LowStorageIntegrator(const std::string &name);
explicit LowStorageIntegrator(ParameterInput *pin);
std::vector<Real> delta;
std::vector<Real> beta;
Expand All @@ -60,6 +61,7 @@ class LowStorageIntegrator : public StagedIntegrator {
class ButcherIntegrator : public StagedIntegrator {
public:
ButcherIntegrator() = default;
explicit ButcherIntegrator(const std::string &name);
explicit ButcherIntegrator(ParameterInput *pin);
// TODO(JMM): Should I do a flat array with indexing instead?
std::vector<std::vector<Real>> a;
Expand Down

0 comments on commit 0e498ee

Please sign in to comment.