Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
aa7b066
Break out test function from header into source file, rename.
trisyoungs Jun 23, 2026
e0033dc
Bring checks in from testData.h.
trisyoungs Jun 26, 2026
6ca733f
More.
trisyoungs Jun 26, 2026
eae45e5
Remove explicit gtest include from tests that don't need it.
trisyoungs Jun 26, 2026
c1b83d8
TestGraph is its own thing.
trisyoungs Jun 26, 2026
16e6143
Tests, not checks.
trisyoungs Jun 26, 2026
903ba78
Revert to simple arg passing.
trisyoungs Jun 26, 2026
b0ff1ea
Formatting.
trisyoungs Jun 30, 2026
d54d8e0
Missed reference data usages.
trisyoungs Jun 29, 2026
6a4d48c
Update tests/testing.cpp
trisyoungs Jun 30, 2026
14187aa
DataND tests are now assertive routines.
Jun 30, 2026
97bad0f
Vector3.
Jun 30, 2026
cb97ba5
Species AtomType.
Jun 30, 2026
34baef6
Redo intramolecular term testing.
Jul 2, 2026
a1d3067
Don't forget to copy the parent pointer in SpeciesIntra.
Jul 2, 2026
c8ba80d
Impropers.
Jul 2, 2026
acfd5e6
DoubleKeyedMap / PartialSet.
Jul 3, 2026
d789f6f
Test energy consistency.
Jul 3, 2026
d784d87
Formatting.
Jul 3, 2026
3487347
Force testing.
Jul 3, 2026
0ef5261
Threshold not tolerance or deviation.
Jul 3, 2026
9a297a0
Vector3 not Vec3.
Jul 3, 2026
cd680bc
Missed EXPECT_TRUE.
Jul 3, 2026
7ada898
Missing EXPECT_TRUE on some force tests.
Jul 6, 2026
0ec14db
Remove forward declarations and old deserialisation declarations (in …
Jul 6, 2026
69b418b
Remove serialisablePointer() and MD::restrictToSpecies_ option in lin…
Jul 6, 2026
355d27d
Remove references to CoreData in comments.
Jul 6, 2026
113321b
Remove empty test.
Jul 6, 2026
6f8ea53
Remove old keyword tests.
Jul 6, 2026
e6b945a
Missing override.
trisyoungs Jul 7, 2026
930dc05
REMOVE Just OSX for now.
Jul 3, 2026
d20b344
Use OSX runner var in cacheConan workflow.
Jul 3, 2026
3ba3a21
Request 26.
Jul 3, 2026
7e4eb62
Bump Qt version to 6.8.7.
Jul 3, 2026
d976f17
List available Qt versions.
Jul 3, 2026
24d5dc1
Try 6.8.3 then.
Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 1 addition & 27 deletions .github/workflows/_build_and_package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ "${{ inputs.osxRunner }}", windows-2022 ]
os: [ "${{ inputs.osxRunner }}" ]
runs-on: ${{ matrix.os }}
steps:
- name: 'Download Source Tarfiles'
Expand All @@ -58,29 +58,3 @@ jobs:
conanHash: ${{ inputs.conanHash }}
osxTargetDeploymentVersion: ${{ inputs.osxTargetDeploymentVersion }}

BuildLinux:
strategy:
fail-fast: false
matrix:
target: [ dissolve, dissolve-gui ]
runs-on: ubuntu-latest
steps:
- name: 'Download Source Tarfiles'
uses: actions/download-artifact@v4
with:
name: source

- name: 'Unpack Source'
shell: bash
run: tar -xvf dissolve-versioned-source.tar

- name: "Build, Test, Package (Linux, ${{ matrix.target }})"
uses: "./.github/workflows/build"
with:
target: ${{ matrix.target }}
currentVersion: ${{ inputs.currentVersion }}
nixHash: ${{ inputs.nixHash }}
benchmark: ${{ inputs.benchmark }}
publishBenchmarks: ${{ inputs.publishBenchmarks }}
osxTargetDeploymentVersion: ${{ inputs.osxTargetDeploymentVersion }}

4 changes: 2 additions & 2 deletions .github/workflows/_checkout.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ on:
inputs:
osxRunner:
type: string
default: macos-latest
default: macos-26
osxTargetDeploymentVersion:
type: string
default: 13.3
qtVersion:
type: string
default: 6.4.2
default: 6.8.3
hugoVersion:
type: string
default: "0.135.0"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/build/osx/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ runs:
shell: bash
run: |
export PATH="$(python3 -m site --user-base)/bin:$PATH"
aqt list-qt mac desktop
aqt install-qt --outputdir ${{ runner.temp }}/qt mac desktop ${{ inputs.qtVersion }} -m all

#
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cacheConan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-2022]
os: [ "${{ inputs.osxRunner }}", windows-2022]
target: [dissolve-gui]
runs-on: ${{ matrix.os }}
steps:
Expand Down
3 changes: 0 additions & 3 deletions src/base/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@

#pragma once

// Forward Declarations
class CoreData;

// Version Counter
class VersionCounter
{
Expand Down
4 changes: 0 additions & 4 deletions src/classes/configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -223,10 +223,6 @@ class Configuration : public Serialisable
* Serialisation
*/
public:
// Write through specified LineParser
bool serialise(LineParser &parser) const;
// Read from specified LineParser
bool deserialise(LineParser &parser, const CoreData &coreData, bool hasPotentials);
// Express as a serialisable value
void serialise(std::string tag, SerialisedValue &target) const override;
// Read values from a serialisable value
Expand Down
1 change: 0 additions & 1 deletion src/classes/isotopologue.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
// Forward Declarations
class AtomType;
class Species;
class CoreData;

/*
* Isotopologue Definition
Expand Down
1 change: 0 additions & 1 deletion src/classes/kVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

// Forward Declarations
class BraggReflection;
class CoreData;

// K-Vector
class KVector
Expand Down
25 changes: 15 additions & 10 deletions src/classes/species.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,29 +109,34 @@ class Species : public Serialisable
// Return vector of SpeciesBond
std::vector<SpeciesBond> &bonds();
const std::vector<SpeciesBond> &bonds() const;
// Return the SpeciesBond between the specified SpeciesAtom indices, if it exists
OptionalReferenceWrapper<SpeciesBond> getBond(const SpeciesAtom *i, const SpeciesAtom *j);
// Return the SpeciesBond between the specified SpeciesAtoms / indices, if it exists
OptionalReferenceWrapper<const SpeciesBond> getBond(const SpeciesAtom *i, const SpeciesAtom *j) const;
OptionalReferenceWrapper<const SpeciesBond> getBond(int i, int j) const;
// Remove bonds crossing periodic boundaries
void removePeriodicBonds();
// Return vector of SpeciesAngle
std::vector<SpeciesAngle> &angles();
const std::vector<SpeciesAngle> &angles() const;
// Return the SpeciesAngle between the specified SpeciesAtom indices, if it exists
OptionalReferenceWrapper<SpeciesAngle> getAngle(const SpeciesAtom *i, const SpeciesAtom *j, const SpeciesAtom *k);
// Return the SpeciesAngle between the specified SpeciesAtoms / indices, if it exists
OptionalReferenceWrapper<const SpeciesAngle> getAngle(const SpeciesAtom *i, const SpeciesAtom *j,
const SpeciesAtom *k) const;
OptionalReferenceWrapper<const SpeciesAngle> getAngle(int i, int j, int k) const;
// Return vector of SpeciesTorsion
std::vector<SpeciesTorsion> &torsions();
const std::vector<SpeciesTorsion> &torsions() const;
// Return the SpeciesTorsion between the specified SpeciesAtom indices, if it exists
OptionalReferenceWrapper<SpeciesTorsion> getTorsion(const SpeciesAtom *i, const SpeciesAtom *j, const SpeciesAtom *k,
const SpeciesAtom *l);
// Return the SpeciesTorsion between the specified SpeciesAtoms / indices, if it exists
OptionalReferenceWrapper<const SpeciesTorsion> getTorsion(const SpeciesAtom *i, const SpeciesAtom *j, const SpeciesAtom *k,
const SpeciesAtom *l) const;
OptionalReferenceWrapper<const SpeciesTorsion> getTorsion(int i, int j, int k, int l) const;
// Return vector of SpeciesImproper
std::vector<SpeciesImproper> &impropers();
const std::vector<SpeciesImproper> &impropers() const;
// Add a new improper term between the specified atoms
SpeciesImproper &addImproper(SpeciesAtom *i, SpeciesAtom *j, SpeciesAtom *k, SpeciesAtom *l);
// Return the SpeciesImproper between the specified SpeciesAtom indices, if it exists
OptionalReferenceWrapper<SpeciesImproper> getImproper(const SpeciesAtom *i, const SpeciesAtom *j, const SpeciesAtom *k,
const SpeciesAtom *l);
// Return the SpeciesImproper between the specified SpeciesAtoms /indices, if it exists
OptionalReferenceWrapper<const SpeciesImproper> getImproper(const SpeciesAtom *i, const SpeciesAtom *j,
const SpeciesAtom *k, const SpeciesAtom *l) const;
OptionalReferenceWrapper<const SpeciesImproper> getImproper(int i, int j, int k, int l) const;
// Clear forcefield data from intramolecular terms
void clearIntramolecularForcefieldTerms();

Expand Down
1 change: 0 additions & 1 deletion src/classes/speciesAtom.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

// Forward Declarations
class AtomType;
class CoreData;
class SpeciesAngle;
class SpeciesBond;
class SpeciesImproper;
Expand Down
1 change: 1 addition & 0 deletions src/classes/speciesIntra.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ template <class Intra, class Functions> class SpeciesIntra : public Serialisable
SpeciesIntra(SpeciesIntra &&source) = delete;
SpeciesIntra &operator=(const SpeciesIntra &source)
{
parent_ = source.parent_;
interactionPotential_ = source.interactionPotential_;
commonTerm_ = source.commonTerm_;
attached_[0] = source.attached_[0];
Expand Down
2 changes: 1 addition & 1 deletion src/classes/speciesSite.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ class SpeciesSite : public Serialisable
// Express as a serialisable value
void serialise(std::string tag, SerialisedValue &target) const override;
// Read values from a serialisable value
void deserialise(const SerialisedValue &node);
void deserialise(const SerialisedValue &node) override;
};

template <> struct Context<const SpeciesSite *>
Expand Down
33 changes: 23 additions & 10 deletions src/classes/species_intra.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,18 @@ std::vector<SpeciesBond> &Species::bonds() { return bonds_; }
const std::vector<SpeciesBond> &Species::bonds() const { return bonds_; }

// Return the SpeciesBond between the specified SpeciesAtoms, if it exists
OptionalReferenceWrapper<SpeciesBond> Species::getBond(const SpeciesAtom *i, const SpeciesAtom *j)
OptionalReferenceWrapper<const SpeciesBond> Species::getBond(const SpeciesAtom *i, const SpeciesAtom *j) const
{
auto it = std::find_if(bonds_.begin(), bonds_.end(), [i, j](auto &bond) { return bond.matches(i, j); });
if (it == bonds_.end())
return {};

return *it;
}
OptionalReferenceWrapper<const SpeciesBond> Species::getBond(int i, int j) const
{
return getBond(&atoms_.at(i), &atoms_.at(j));
}

// Remove bonds crossing periodic boundaries
void Species::removePeriodicBonds()
Expand All @@ -46,23 +50,28 @@ std::vector<SpeciesAngle> &Species::angles() { return angles_; }
const std::vector<SpeciesAngle> &Species::angles() const { return angles_; }

// Return the SpeciesAngle between the specified SpeciesAtoms, if it exists
OptionalReferenceWrapper<SpeciesAngle> Species::getAngle(const SpeciesAtom *i, const SpeciesAtom *j, const SpeciesAtom *k)
OptionalReferenceWrapper<const SpeciesAngle> Species::getAngle(const SpeciesAtom *i, const SpeciesAtom *j,
const SpeciesAtom *k) const
{
auto it = std::find_if(angles_.begin(), angles_.end(), [i, j, k](auto &angle) { return angle.matches(i, j, k); });
if (it == angles_.end())
return {};

return *it;
}
OptionalReferenceWrapper<const SpeciesAngle> Species::getAngle(int i, int j, int k) const
{
return getAngle(&atoms_.at(i), &atoms_.at(j), &atoms_.at(k));
}

// Return vector of SpeciesTorsions
std::vector<SpeciesTorsion> &Species::torsions() { return torsions_; }

const std::vector<SpeciesTorsion> &Species::torsions() const { return torsions_; }

// Return the SpeciesTorsion between the specified SpeciesAtoms, if it exists
OptionalReferenceWrapper<SpeciesTorsion> Species::getTorsion(const SpeciesAtom *i, const SpeciesAtom *j, const SpeciesAtom *k,
const SpeciesAtom *l)
OptionalReferenceWrapper<const SpeciesTorsion> Species::getTorsion(const SpeciesAtom *i, const SpeciesAtom *j,
const SpeciesAtom *k, const SpeciesAtom *l) const
{
auto it =
std::find_if(torsions_.begin(), torsions_.end(), [i, j, k, l](auto &torsion) { return torsion.matches(i, j, k, l); });
Expand All @@ -71,6 +80,10 @@ OptionalReferenceWrapper<SpeciesTorsion> Species::getTorsion(const SpeciesAtom *

return *it;
}
OptionalReferenceWrapper<const SpeciesTorsion> Species::getTorsion(int i, int j, int k, int l) const
{
return getTorsion(&atoms_.at(i), &atoms_.at(j), &atoms_.at(k), &atoms_.at(l));
}

// Return vector of SpeciesImproper
std::vector<SpeciesImproper> &Species::impropers() { return impropers_; }
Expand All @@ -80,10 +93,6 @@ const std::vector<SpeciesImproper> &Species::impropers() const { return improper
// Add a new improper term between the specified atoms
SpeciesImproper &Species::addImproper(SpeciesAtom *i, SpeciesAtom *j, SpeciesAtom *k, SpeciesAtom *l)
{
auto optImproper = getImproper(i, j, k, l);
if (optImproper)
return *optImproper;

auto &improper = impropers_.emplace_back(this, i, j, k, l);

// Must inform the atoms now that they are involved in a new improper
Expand All @@ -96,8 +105,8 @@ SpeciesImproper &Species::addImproper(SpeciesAtom *i, SpeciesAtom *j, SpeciesAto
}

// Return the SpeciesImproper between the specified SpeciesAtoms, if it exists
OptionalReferenceWrapper<SpeciesImproper> Species::getImproper(const SpeciesAtom *i, const SpeciesAtom *j, const SpeciesAtom *k,
const SpeciesAtom *l)
OptionalReferenceWrapper<const SpeciesImproper> Species::getImproper(const SpeciesAtom *i, const SpeciesAtom *j,
const SpeciesAtom *k, const SpeciesAtom *l) const
{
auto it = std::find_if(impropers_.begin(), impropers_.end(),
[i, j, k, l](auto &improper) { return improper.matches(i, j, k, l); });
Expand All @@ -106,6 +115,10 @@ OptionalReferenceWrapper<SpeciesImproper> Species::getImproper(const SpeciesAtom

return *it;
}
OptionalReferenceWrapper<const SpeciesImproper> Species::getImproper(int i, int j, int k, int l) const
{
return getImproper(&atoms_.at(i), &atoms_.at(j), &atoms_.at(k), &atoms_.at(l));
}

// Clear intramolecular forcefield terms
void Species::clearIntramolecularForcefieldTerms()
Expand Down
1 change: 0 additions & 1 deletion src/gui/getConfigurationNameDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <QDialog>

// Forward Declarations
class CoreData;
class Configuration;

// Get Configuration Name Dialog
Expand Down
1 change: 0 additions & 1 deletion src/gui/getModuleLayerNameDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <QDialog>

// Forward Declarations
class CoreData;
class ModuleLayer;

// Get Layer Name Dialog
Expand Down
1 change: 0 additions & 1 deletion src/gui/getSpeciesNameDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <QDialog>

// Forward Declarations
class CoreData;
class Species;

// Get Species Name Dialog
Expand Down
1 change: 0 additions & 1 deletion src/gui/getTabNameDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <QDialog>

// Forward Declarations
class CoreData;
class MainTab;

// Get MainTab Name Dialog
Expand Down
1 change: 0 additions & 1 deletion src/math/sampledDouble.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include "base/serialiser.h"

// Forward Declarations
class CoreData;
class LineParser;
class ProcessPool;

Expand Down
1 change: 0 additions & 1 deletion src/math/sampledVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include <vector>

// Forward Declarations
class CoreData;
class LineParser;

// Vector of double values with sampling
Expand Down
Loading
Loading