Skip to content

generate_force_convergence_fn default include_cell_forces to True (matching ASE)#209

Merged
janosh merged 7 commits intomainfrom
default-to-true-include_cell_forces
Jun 10, 2025
Merged

generate_force_convergence_fn default include_cell_forces to True (matching ASE)#209
janosh merged 7 commits intomainfrom
default-to-true-include_cell_forces

Conversation

@janosh
Copy link
Copy Markdown
Collaborator

@janosh janosh commented Jun 10, 2025

closes #208

motivation: principle of least surprise. users likely expect torch-sim relaxations to match ASE. any changing of defaults needed to achieve this causes needless surprise.

parameterized tests for generate_force_convergence_fn covering different tolerance levels and cell forces

also add test coverage for symmetric strain tensor calculation (u + u.mT)/2 in torch_sim/elastic.py:815 with tests for zero, pure shear, and hydrostatic strain cases.

Summary by CodeRabbit

  • New Features
    • Expanded test coverage for strain calculations and force convergence logic, including tests for various deformation scenarios and convergence behaviors.
  • Bug Fixes
    • Corrected parameter naming in existing tests for improved clarity.
  • Chores
    • Updated build system configuration for the project.
    • Changed the default behavior to include cell forces in force convergence checks.
    • Updated README image URL to a new asset.

janosh added 3 commits June 10, 2025 09:56
Addresses missing test coverage for the symmetric strain tensor calculation
in torch_sim/elastic.py:815 with tests for zero, pure shear, and hydrostatic
strain cases. Verify consistency of strains produced by elementary deformations.
… convergence check (matching ASE) + test coverage

- parameterized tests for `generate_force_convergence_fn` covering different tolerance levels and cell forces
@cla-bot cla-bot Bot added the cla-signed label Jun 10, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 10, 2025

Walkthrough

The changes update the build backend in pyproject.toml from Hatchling to uv_build and adjust related configuration. In torch_sim.runners, the default for include_cell_forces in generate_force_convergence_fn is set to True. Extensive new and updated tests are added for elastic and runner functionalities, especially for force convergence logic.

Changes

File(s) Change Summary
pyproject.toml Switched build backend from Hatchling to uv_build; updated build config sections accordingly.
torch_sim/runners.py Changed generate_force_convergence_fn default for include_cell_forces from False to True; updated return type annotations and docstrings.
tests/test_elastic.py Added new tests for get_strain and deformation utilities; minor fixture docstring and signature edits.
tests/test_runners.py Added comprehensive tests for generate_force_convergence_fn, including new fixture and logic.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant generate_force_convergence_fn
    participant SimState

    User->>generate_force_convergence_fn: Call (force_tol, include_cell_forces=True)
    generate_force_convergence_fn->>SimState: Access forces and cell_forces
    alt include_cell_forces is True and cell_forces missing
        generate_force_convergence_fn-->>User: Raise ValueError
    else
        generate_force_convergence_fn-->>User: Return convergence boolean tensor
    end
Loading

Assessment against linked issues

Objective Addressed Explanation
Default generate_force_convergence_fn(include_cell_forces: bool) to True (#208)

Poem

A rabbit hopped through code so bright,
Flipping defaults with all its might.
Now cell forces join the fun,
As convergence checks are finely spun.
With tests in tow and configs new,
This fluffy coder says, "Thank you!"
🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 77c4e69 and ccaa06c.

📒 Files selected for processing (4)
  • README.md (1 hunks)
  • tests/test_elastic.py (4 hunks)
  • tests/test_runners.py (2 hunks)
  • torch_sim/runners.py (3 hunks)
✅ Files skipped from review due to trivial changes (1)
  • README.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • torch_sim/runners.py
🧰 Additional context used
🧬 Code Graph Analysis (2)
tests/test_runners.py (4)
tests/conftest.py (4)
  • device (24-25)
  • dtype (29-30)
  • ar_supercell_sim_state (306-310)
  • lj_model (34-45)
torch_sim/state.py (4)
  • device (137-139)
  • dtype (142-144)
  • n_batches (161-163)
  • SimState (26-312)
torch_sim/runners.py (3)
  • convergence_fn (303-322)
  • convergence_fn (339-349)
  • generate_force_convergence_fn (287-324)
tests/test_autobatching.py (1)
  • convergence_fn (448-456)
tests/test_elastic.py (4)
torch_sim/elastic.py (3)
  • get_cart_deformed_cell (624-678)
  • get_elementary_deformations (681-764)
  • get_strain (767-829)
tests/conftest.py (3)
  • cu_sim_state (148-151)
  • device (24-25)
  • dtype (29-30)
torch_sim/state.py (5)
  • SimState (26-312)
  • device (137-139)
  • dtype (142-144)
  • row_vector_cell (185-187)
  • row_vector_cell (190-196)
torch_sim/typing.py (1)
  • BravaisType (23-40)
🪛 Pylint (3.3.7)
tests/test_runners.py

[refactor] 812-812: Too few public methods (0/2)

(R0903)


[refactor] 839-839: Too many arguments (7/5)

(R0913)


[refactor] 931-931: Too few public methods (0/2)

(R0903)

tests/test_elastic.py

[refactor] 345-345: Too many local variables (17/15)

(R0914)

⏰ Context from checks skipped due to timeout of 90000ms (40)
  • GitHub Check: test-examples (examples/scripts/2_Structural_optimization/2.6_MACE_UnitCellFilter_FIRE.py)
  • GitHub Check: test-examples (examples/scripts/2_Structural_optimization/2.7_MACE_FrechetCellFilter_FIRE.py)
  • GitHub Check: test-examples (examples/tutorials/using_graphpes_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/reporting_tutorial.py)
  • GitHub Check: test-examples (examples/scripts/3_Dynamics/3.2_MACE_NVE.py)
  • GitHub Check: test-examples (examples/scripts/3_Dynamics/3.8_MACE_NPT_Nose_Hoover.py)
  • GitHub Check: test-examples (examples/tutorials/low_level_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/autobatching_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/high_level_tutorial.py)
  • GitHub Check: test-examples (examples/scripts/6_Phonons/6.2_QuasiHarmonic_MACE.py)
  • GitHub Check: test-examples (examples/scripts/2_Structural_optimization/2.4_MACE_FIRE.py)
  • GitHub Check: test-examples (examples/scripts/3_Dynamics/3.13_MACE_NVE_non_pbc.py)
  • GitHub Check: test-examples (examples/scripts/6_Phonons/6.1_Phonons_MACE.py)
  • GitHub Check: test-examples (examples/scripts/5_Workflow/5.1_a2c_silicon_batched.py)
  • GitHub Check: test-examples (examples/scripts/3_Dynamics/3.5_MACE_NVT_Nose_Hoover.py)
  • GitHub Check: test-examples (examples/scripts/7_Others/7.6_Compare_ASE_to_VV_FIRE.py)
  • GitHub Check: test-examples (examples/scripts/7_Others/7.1_Soft_sphere_autograd.py)
  • GitHub Check: test-examples (examples/scripts/4_High_level_api/4.1_high_level_api.py)
  • GitHub Check: test-examples (examples/scripts/7_Others/7.4_Velocity_AutoCorrelation.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, orb, tests/models/test_orb.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, mace, tests/test_elastic.py)
  • GitHub Check: test-model (macos-14, 3.11, highest, mace, tests/test_optimizers_vs_ase.py)
  • GitHub Check: test-model (macos-14, 3.11, highest, mace, tests/models/test_mace.py)
  • GitHub Check: test-model (macos-14, 3.11, highest, orb, tests/models/test_orb.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, sevenn, tests/models/test_sevennet.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, mace, tests/test_elastic.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, sevenn, tests/models/test_sevennet.py)
  • GitHub Check: test-model (macos-14, 3.11, highest, mace, tests/test_elastic.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, metatomic, tests/models/test_metatomic.py)
  • GitHub Check: test-model (macos-14, 3.11, highest, graphpes, tests/models/test_graphpes.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, graphpes, tests/models/test_graphpes.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, mattersim, tests/models/test_mattersim.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, orb, tests/models/test_orb.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, mace, tests/test_optimizers_vs_ase.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, graphpes, tests/models/test_graphpes.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, fairchem, tests/models/test_fairchem.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, mace, tests/test_optimizers_vs_ase.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, fairchem, tests/models/test_fairchem.py)
  • GitHub Check: build-docs
  • GitHub Check: test-core (ubuntu-latest, 3.12, lowest-direct)
🔇 Additional comments (15)
tests/test_runners.py (6)

804-827: LGTM! Well-designed mock fixture for controlled testing.

The mock_state fixture provides excellent control over test conditions by allowing configurable cell forces. The deterministic random seed ensures reproducible tests, and the structure mimics the real SimState interface effectively.

🧰 Tools
🪛 Pylint (3.3.7)

[refactor] 812-812: Too few public methods (0/2)

(R0903)


829-881: LGTM! Comprehensive parameterized test covering key scenarios.

The test effectively covers the main use cases including:

  • Standard cases with/without cell forces
  • High/low tolerance edge cases
  • Error condition when cell forces are required but missing

The test logic correctly handles both mock and real states depending on the scenario.

🧰 Tools
🪛 Pylint (3.3.7)

[refactor] 839-839: Too many arguments (7/5)

(R0913)


883-910: LGTM! Proper implementation of logical implication for tolerance ordering.

The test correctly implements the logical implication using torch.logical_or(torch.logical_not(results[idx]), results[idx + 1]) instead of the problematic >= operator on boolean tensors. This addresses the past review comment and ensures compatibility across PyTorch versions.


912-957: LGTM! Excellent controlled test of convergence logic.

The ControlledMockState class provides precise control over force magnitudes per batch, enabling deterministic verification of the convergence logic. The test cases cover all combinations of atomic and cell force convergence states.

🧰 Tools
🪛 Pylint (3.3.7)

[refactor] 931-931: Too few public methods (0/2)

(R0903)


959-979: LGTM! Proper verification that last_energy parameter is ignored.

The test correctly verifies that the last_energy parameter doesn't affect convergence results, which aligns with the function signature and implementation where this parameter is marked with # noqa: ARG001.


981-1001: LGTM! Validates the default behavior change from the PR.

This test confirms that the default behavior of generate_force_convergence_fn now includes cell forces (include_cell_forces=True), which aligns with the PR objective to match ASE's behavior.

tests/test_elastic.py (9)

26-33: LGTM! Clean baseline test for zero deformation.

The test correctly verifies that identical states produce zero strain, establishing a solid baseline for strain calculations.


35-69: LGTM! Thorough testing of normal strain components.

The test systematically verifies each normal strain component (εxx, εyy, εzz) using get_cart_deformed_cell and confirms that only the expected component is non-zero with the correct magnitude.


71-107: LGTM! Excellent verification of symmetric strain tensor calculation.

This test directly addresses the PR objective by testing the symmetric strain tensor expression (u + u.mT)/2 from line 815 in torch_sim/elastic.py. The comments clearly explain why shear strain components are halved due to symmetrization, demonstrating thorough understanding of the underlying mechanics.


109-142: LGTM! Well-implemented hydrostatic strain test.

The test manually creates a hydrostatic deformation and correctly verifies that all normal strain components are equal while shear components remain zero. The implementation properly handles fractional coordinate transformations.


144-206: LGTM! Comprehensive test of strain tensor symmetry property.

This test creates an asymmetric deformation and verifies that the strain calculation properly enforces symmetry through the (u + u.mT)/2 formula. The manual verification of the expected strain components provides excellent coverage of the symmetrization logic.


208-253: LGTM! Thorough integration test with elementary deformations.

The test correctly verifies that deformations generated by get_elementary_deformations produce expected strain patterns. The logic for calculating the expected number of states and verifying dominant strain components is sound. The use of torch.isclose with appropriate tolerances properly addresses floating-point comparison concerns from the past review.


257-257: LGTM! Added helpful documentation.

The docstring clarifies the purpose of the mace_model fixture.


291-291: LGTM! Corrected parameter name.

The parameter name has been properly corrected from model_fixture_name to mace_model to match the actual fixture.


345-347: LGTM! Improved function signature formatting.

The multi-line formatting improves readability for the function parameters.

🧰 Tools
🪛 Pylint (3.3.7)

[refactor] 345-345: Too many local variables (17/15)

(R0914)

✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@janosh janosh added tests Test all the things ux User experience ecosystem Comp-chem ecosystem related labels Jun 10, 2025
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (2)
tests/test_runners.py (1)

804-826: Seed RNG to eliminate test flakiness

MockState draws random forces/cell‐forces. Rarely, those magnitudes may fall below very small force_tol values (e.g. 1e-6), causing unexpected convergence and sporadic failures. Add a local seed to keep the distribution stable:

 def mock_state() -> Callable:
@@
     device = torch.device("cpu")
     dtype = torch.float64
+    torch.manual_seed(0)  # deterministic forces
🧰 Tools
🪛 Pylint (3.3.7)

[refactor] 812-812: Too few public methods (0/2)

(R0903)

tests/test_elastic.py (1)

85-88: Minor: clarify shear expectation comment

The comment mixes engineering shear strain (γ) and tensor shear ε = γ / 2.
For complete clarity to future readers, consider adding the explicit relation:

-# So εyz = (u[1,2] + u[2,1])/2 = (shear_magnitude + 0)/2 = shear_magnitude/2
+# Engineering shear γyz = shear_magnitude; the symmetric strain tensor stores
+# εyz = γyz / 2 = shear_magnitude / 2
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6c7bc81 and 77c4e69.

📒 Files selected for processing (4)
  • pyproject.toml (1 hunks)
  • tests/test_elastic.py (4 hunks)
  • tests/test_runners.py (2 hunks)
  • torch_sim/runners.py (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
tests/test_runners.py (4)
tests/conftest.py (4)
  • device (24-25)
  • dtype (29-30)
  • ar_supercell_sim_state (306-310)
  • lj_model (34-45)
torch_sim/state.py (4)
  • device (137-139)
  • dtype (142-144)
  • n_batches (161-163)
  • SimState (26-312)
torch_sim/runners.py (3)
  • convergence_fn (303-317)
  • convergence_fn (334-339)
  • generate_force_convergence_fn (287-319)
tests/test_autobatching.py (1)
  • convergence_fn (448-456)
🪛 Pylint (3.3.7)
tests/test_elastic.py

[refactor] 343-343: Too many local variables (17/15)

(R0914)

tests/test_runners.py

[refactor] 812-812: Too few public methods (0/2)

(R0903)


[refactor] 839-839: Too many arguments (7/5)

(R0913)


[refactor] 928-928: Too few public methods (0/2)

(R0903)

⏰ Context from checks skipped due to timeout of 90000ms (38)
  • GitHub Check: test-examples (examples/tutorials/metatomic_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/using_graphpes_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/state_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/reporting_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/high_level_tutorial.py)
  • GitHub Check: test-examples (examples/tutorials/autobatching_tutorial.py)
  • GitHub Check: test-examples (examples/scripts/5_Workflow/5.1_a2c_silicon_batched.py)
  • GitHub Check: test-examples (examples/tutorials/low_level_tutorial.py)
  • GitHub Check: test-examples (examples/scripts/5_Workflow/5.3_Elastic.py)
  • GitHub Check: test-examples (examples/scripts/2_Structural_optimization/2.5_MACE_UnitCellFilter_Gradient_Descen...
  • GitHub Check: test-examples (examples/scripts/2_Structural_optimization/2.6_MACE_UnitCellFilter_FIRE.py)
  • GitHub Check: test-examples (examples/scripts/2_Structural_optimization/2.1_Lennard_Jones_FIRE.py)
  • GitHub Check: test-examples (examples/scripts/6_Phonons/6.1_Phonons_MACE.py)
  • GitHub Check: test-examples (examples/scripts/6_Phonons/6.3_Conductivity_MACE.py)
  • GitHub Check: test-examples (examples/scripts/6_Phonons/6.2_QuasiHarmonic_MACE.py)
  • GitHub Check: test-examples (examples/scripts/3_Dynamics/3.6_MACE_NVT_Nose_Hoover_temp_profile.py)
  • GitHub Check: test-examples (examples/scripts/3_Dynamics/3.8_MACE_NPT_Nose_Hoover.py)
  • GitHub Check: test-examples (examples/scripts/3_Dynamics/3.12_MACE_NPT_Langevin.py)
  • GitHub Check: test-examples (examples/scripts/4_High_level_api/4.1_high_level_api.py)
  • GitHub Check: test-examples (examples/scripts/7_Others/7.6_Compare_ASE_to_VV_FIRE.py)
  • GitHub Check: test-examples (examples/scripts/7_Others/7.4_Velocity_AutoCorrelation.py)
  • GitHub Check: test-model (macos-14, 3.12, lowest-direct, mace, tests/test_optimizers_vs_ase.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, mace, tests/test_optimizers_vs_ase.py)
  • GitHub Check: test-model (macos-14, 3.11, highest, fairchem, tests/models/test_fairchem.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, orb, tests/models/test_orb.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, sevenn, tests/models/test_sevennet.py)
  • GitHub Check: test-model (macos-14, 3.11, highest, mace, tests/test_elastic.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, sevenn, tests/models/test_sevennet.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, fairchem, tests/models/test_fairchem.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, mace, tests/test_optimizers_vs_ase.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, orb, tests/models/test_orb.py)
  • GitHub Check: test-model (ubuntu-latest, 3.12, lowest-direct, mace, tests/test_elastic.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, mace, tests/test_elastic.py)
  • GitHub Check: test-model (ubuntu-latest, 3.11, highest, fairchem, tests/models/test_fairchem.py)
  • GitHub Check: test-core (macos-14, 3.11, highest)
  • GitHub Check: test-core (ubuntu-latest, 3.12, lowest-direct)
  • GitHub Check: test-core (macos-14, 3.12, lowest-direct)
  • GitHub Check: build-docs
🔇 Additional comments (2)
torch_sim/runners.py (1)

288-289: Potential backward-compat break – default changed to include_cell_forces=True

Changing the default alters behaviour for any caller that relied on the
previous False default and did not pass the argument explicitly.
Those calls will now raise a ValueError unless the state already carries
cell_forces.

Please double-check:

  1. Internal call-sites inside torch_sim (grep for generate_force_convergence_fn().
  2. External examples / docs.

If silent breakage is a concern, a deprecation cycle or a prominent changelog
entry might be warranted.

pyproject.toml (1)

74-79: Build-backend switch to uv_build – ensure CI & packaging images have it

uv_build (≥ 0.7.12) is now a hard requirement at build time.
Many CI images and downstream environments still ship only hatchling +
setuptools. Please verify:

  • The project’s wheels are built in an environment with uv 0.7.12+.
  • pip install . in a clean venv succeeds (PEP 517 path).

Otherwise the package will fail to build from source for users.

Comment thread torch_sim/runners.py
Comment thread tests/test_runners.py Outdated
Comment thread tests/test_elastic.py Outdated
@janosh janosh enabled auto-merge (squash) June 10, 2025 15:23
@janosh janosh merged commit db4782d into main Jun 10, 2025
92 checks passed
@janosh janosh deleted the default-to-true-include_cell_forces branch June 10, 2025 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ecosystem Comp-chem ecosystem related tests Test all the things ux User experience

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Default generate_force_convergence_fn(include_cell_forces: bool) to True to match ASE

1 participant