Skip to content

Brand new version using pyvista as backend#27

Merged
Steriva merged 51 commits into
ERMETE-Lab:mainfrom
Steriva:development
Mar 31, 2026
Merged

Brand new version using pyvista as backend#27
Steriva merged 51 commits into
ERMETE-Lab:mainfrom
Steriva:development

Conversation

@Steriva
Copy link
Copy Markdown
Contributor

@Steriva Steriva commented Mar 31, 2026

This pull request significantly updates the project documentation and metadata to reflect the major new release of pyforce (v1.0.0+), which introduces a new backend, improved installation instructions, and updated citation information. The changes modernize the README.md with clearer descriptions, enhanced citation guidelines, improved badges, and a detailed demo section, while also adding a new CITATION.cff file for standardized citation support.

Documentation and Citation Updates:

  • Added a new CITATION.cff file providing structured citation metadata, including the JOSS paper as the primary citation and references to key application papers.
  • Updated the "How to cite" section in README.md to reference the JOSS paper as the main citation, clarify the relationship between old and new versions, and provide BibTeX entries.

Project Description and Features:

  • Revised the project description in README.md to highlight the new architecture based on pyvista and numpy, removing the strict dependency on dolfinx and enabling compatibility with any solver exporting VTK/H5 files.
  • Expanded and clarified the list of implemented techniques, now including SVD, POD, (G)EIM, PBDW, SGreedy, and indirect reconstruction, with references to their respective modules.

Installation and Tutorials:

  • Improved installation instructions to recommend pip as the primary method, clarify the use of conda environments, and provide step-by-step commands for both standard and development installations.
  • Updated and expanded the tutorials section, including a "Basic Demo" with code snippets and images to illustrate typical usage of pyforce.

Badges and Visuals:

  • Refreshed project badges in README.md to include a JOSS badge, improved reference paper badges, and updated links for documentation, datasets, and CI status.

Authors and Community:

  • Updated the authorship and contribution section to reflect current maintainers and supervisors, and streamlined community guidelines for reporting issues and seeking support.

Steriva added 30 commits October 8, 2025 11:19
Steriva and others added 20 commits January 30, 2026 09:57
For this update, three functions have been added to select candidate points for sensor placement:

1. get_candidate_regions: Retrieves candidate points within specified region(s). Only these regions will be considered for sensor placement.

2. get_candidate_probes: Retrieves explicitly specified points. Only these points will be used for sensor placement.

3. get_candidate_channel_all_points: Retrieves a set of points (along vertical channel(s)) based on the input (x,y) positions. Only these points will be used for sensor placement.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates pyforce to a solver-agnostic v1.0.0+ layout centered on pyvista + numpy, updates packaging/metadata, and refreshes documentation and citation guidance to match the new backend and release.

Changes:

  • Replaced the legacy dolfinx-centric code/tests with a new rose-pyforce/ Python package (PEP 621 pyproject.toml) and updated pyforce internals (tools, offline/online bases, POD online implementation).
  • Added/updated documentation for the v1.0+ architecture (installation, migration guide, new tutorial index structure) and added standardized citation metadata (CITATION.cff).
  • Introduced a new test suite under rose-pyforce/tests/ focusing on the new backend utilities (PyVista/OpenFOAM import, scalers, integral calculator, timer/progress utilities).

Reviewed changes

Copilot reviewed 71 out of 143 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
tests/toy_data.py Removed legacy dolfinx-based toy dataset generator.
tests/test_timer.py Removed legacy timer test (dolfinx-era layout).
tests/test_sgreedy.py Removed legacy SGREEDY test tied to dolfinx objects.
tests/test_plotting.py Removed legacy dolfinx plotting-grid test.
tests/test_online_trgeim.py Removed legacy TR-GEIM online tests tied to dolfinx.
tests/test_online_PODproject.py Removed legacy POD projection online tests.
tests/test_online_PODinterp.py Removed legacy POD interpolation online tests.
tests/test_online_pbdw.py Removed legacy online PBDW tests tied to dolfinx.
tests/test_online_geim.py Removed legacy online GEIM tests tied to dolfinx.
tests/test_offline_weakgreedy.py Removed legacy WeakGreedy offline tests (dolfinx).
tests/test_offline_pod.py Removed legacy POD/DiscretePOD offline tests (dolfinx).
tests/test_offline_pbdw.py Removed legacy offline PBDW tests (dolfinx).
tests/test_offline_geim.py Removed legacy offline GEIM tests (dolfinx).
tests/test_norm.py Removed legacy dolfinx norm tests.
tests/test_IO.py Removed legacy I/O tests relying on dolfinx mesh/functions.
tests/test_gaussian_sensors.py Removed legacy GaussianSensors tests tied to dolfinx.
tests/test_fun_lists.py Removed legacy FunctionsList tests tied to dolfinx.
rose-pyforce/tests/init.py Added test package init for new test suite.
rose-pyforce/tests/test_tools_write_read.py Added tests for OpenFOAM import via PyVista reader + FunctionsList behavior.
rose-pyforce/tests/test_tools_scalers.py Added tests for new StandardScaler/MinMaxScaler wrappers on FunctionsList.
rose-pyforce/tests/test_tools_backends.py Added tests for IntegralCalculator, LoopProgress, and Timer utilities.
rose-pyforce/tests/test_offline_eim.py Added tests for offline EIM and DEIM behaviors on PyVista grids.
rose-pyforce/requirements.txt Added v1.0 dependency list for the new package layout.
rose-pyforce/README.md Added package README describing the pyvista/numpy backend rewrite.
rose-pyforce/pyproject.toml Added PEP 621 project metadata and dependencies for rose-pyforce.
rose-pyforce/pyforce/tools/scalers.py Added scaling utilities (StandardScaler/MinMaxScaler) for FunctionsList data.
rose-pyforce/pyforce/tools/plotting.py Added minimal PyVista plotting helper for numpy snapshots.
rose-pyforce/pyforce/tools/backends.py Added IntegralCalculator + LoopProgress + Timer utilities for PyVista grids.
rose-pyforce/pyforce/tools/init.py Added tools package init docstring.
rose-pyforce/pyforce/online/pod.py Added online POD implementation using IntegralCalculator and numpy snapshots.
rose-pyforce/pyforce/online/online_base.py Added online base abstractions and sensor-action helper.
rose-pyforce/pyforce/online/init.py Added online package init docstring.
rose-pyforce/pyforce/offline/offline_base.py Added offline base abstractions for new architecture.
rose-pyforce/pyforce/offline/init.py Added offline package init docstring.
rose-pyforce/pyforce/init.py Bumped version to 1.0.0.
rose-pyforce/environment.yml Updated conda environment to align with pyvista backend and lighter deps.
pyforce/setup.py Removed legacy setuptools-based packaging.
pyforce/requirements.txt Removed legacy requirements pinning dolfinx/mpi/petsc stack.
pyforce/pyforce/tools/timer.py Removed legacy timer module (replaced by tools/backends Timer).
pyforce/pyforce/tools/plotting.py Removed legacy dolfinx-based plotting utilities.
pyforce/pyforce/tools/functions_list.py Removed legacy dolfinx-aware FunctionsList implementation.
pyforce/pyforce/online/pod_projection.py Removed legacy dolfinx-based POD projection online class.
pyforce/pyforce/online/pod_interpolation.py Removed legacy dolfinx-based POD interpolation online class.
pyforce/pyforce/online/indirect_recon.py Removed legacy indirect reconstruction implementation (dolfinx-era).
pyforce/pyforce/offline/weak_greedy.py Removed legacy WeakGreedy offline implementation (dolfinx-era).
pyforce/pyforce/offline/pbdw.py Removed legacy offline PBDW implementation (dolfinx-era).
pyforce/pyforce/offline/eim.py Removed legacy offline EIM implementation (dolfinx-era).
docs/Tutorials/04_flow_cyl.rst Removed old tutorial page (legacy structure).
docs/Tutorials/03_BuoyantCavity_OF6/contour_plotting.py Removed old dolfinx-based tutorial plotting helper.
docs/Tutorials/03_BuoyantCavity_OF6/cavity.geo Removed old gmsh geometry file from tutorial bundle.
docs/Tutorials/03_buoyant_cavity.rst Removed old tutorial page (legacy structure).
docs/Tutorials/02_MGDiffusion/contour_plotting.py Removed old dolfinx-based tutorial plotting helper.
docs/Tutorials/02_MGDiffusion/ANL11A2_octave.geo Removed old gmsh geometry file from tutorial bundle.
docs/Tutorials/02_MGDiffusion/02c_offline_SGREEDY.ipynb Removed old tutorial notebook (legacy structure).
docs/Tutorials/02_ANL11-A2_stationary.rst Removed old tutorial page (legacy structure).
docs/Tutorials/01_LaminarNS/cyl_dfg2D.geo Removed old gmsh geometry file from tutorial bundle.
docs/Tutorials/01_LaminarNS/contour_plotting.py Removed old dolfinx-based tutorial plotting helper.
docs/Tutorials/01_DFG2_benchmark.rst Removed old tutorial page (legacy structure).
docs/tutorials.rst Replaced legacy tutorial listing with new “Basic Tutorials” notebook index.
docs/theory.md Added acronym table and updated package-structure wording for new backend.
docs/migration.md Added migration guide from v0.1.3 (dolfinx) to v1.0+ (pyvista/numpy).
docs/intro.md Updated intro, version note, citation guidance, and BibTeX entries.
docs/installation.md Updated install instructions to use rose-pyforce/ and new deps list.
docs/index.rst Restructured Sphinx toctrees into Getting Started / User Guide / Reference.
docs/contributing.md Added community guidelines page.
docs/conf.py Updated Sphinx config exclusions and mock imports for new backend.
docs/changelog.md Added changelog for v1.0.0 and v0.1.3 reference.
docs/bibliography.rst Adjusted bibliography style configuration.
docs/api/pyforce.tools.rst Updated API docs to include pyforce.tools.scalers (replacing timer).
docs/api/pyforce.online.rst Updated online API module listing to match refactored module names.
docs/api/pyforce.offline.rst Updated offline API module listing to match refactored module names.
docs/adv_tutorials.rst Added an “Advanced Tutorials” index page.
CITATION.cff Added standardized citation metadata with preferred JOSS citation + references.
.gitignore Updated ignored dataset/result paths for new tutorial/test layouts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread rose-pyforce/pyforce/tools/scalers.py
Comment thread rose-pyforce/pyforce/tools/scalers.py
Comment thread rose-pyforce/pyforce/tools/backends.py
Comment thread rose-pyforce/pyforce/online/pod.py
Comment thread rose-pyforce/pyforce/online/pod.py
Comment thread rose-pyforce/tests/test_tools_scalers.py
Comment thread rose-pyforce/tests/test_tools_write_read.py
Comment thread docs/installation.md
@Steriva Steriva closed this Mar 31, 2026
@Steriva Steriva reopened this Mar 31, 2026
@Steriva Steriva merged commit 3025d25 into ERMETE-Lab:main Mar 31, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants