What’s New#

The format is based on Keep a Changelog, and this project adheres to Intended Effort Versioning (EffVer for short). Release notes are automatically recovered from GitHub by sphinx-github-changelog.

v1.3.0#

Released on 2024-12-17 - GitHub - PyPI

Removed

Fixed

  • Fixed Dataset.load_snapshot to use the specified number of scalar digits instead of just the last one by @fschuch in #75

Internals

  • Bumped all dependencies in the project by @fschuch in #74

Full Changelog: v1.2.1...v1.3.0

v1.2.1#

Released on 2024-09-13 - GitHub - PyPI

Added

  • Added iforces parameter to ibmstuff by @fschuch in #65

Full Changelog: v1.2.0...v1.2.1

v1.2.0#

Released on 2024-06-21 - GitHub - PyPI

Deprecated

  • The integration methods cumtrapz and simps on xcompact3d_toolbox.array have been deprecated in favor of cumulative_trapezoid and simpson respectively, following the same changes applied upstream on SciPy 1.12.0

Added

  • Added loguru to enhance logging in the project

Changed

  • Dropped support for Python 3.7 and added support for Python 3.10, 3.11, and 3.12
  • Boolean arguments in all functions and methods changed to keyword-only
  • Changed all arguments on xcompact3d_toolbox.sandbox.Geometry to keyword-only
  • Changed the project versioning schema to Intended Effort Versioning
  • Function xcompact3d_toolbox.gene_epsi_3D was renamed to xcompact3d_toolbox.gene_epsi_3d

Fixed

  • Corrected typos, typing annotating, and formatting issues in the codebase and documentation
  • Fixed a bug on xcompact3d_toolbox.gui._divisor_generator affecting the coupling between p_row, p_col, and ncores on ParametersGui._observe_2decomp method
  • Fixed bug on xcompact3d_toolbox.sandbox.Geometry.from_stl on some platforms that resolve np.longdouble to np.float128, which is not compatible with Numba
  • Fixed compatibility issue on xcompact3d_toolbox.io.Dataset.load_snapshot when testing if field is_scalar on Python 3.8
  • Fixed issue on xcompact3d_toolbox.sandbox.Geometry.square that was resulting in a TypeError because set object is not subscriptable

Documentation

  • Replaced documentation framework by Jupyter Books to enhance interactive tutorials
  • Migrated documentation hosting from readthedocs to GitHub Pages by @fschuch in #41
  • Added a changelog page auto generated from GitHub release notes by @fschuch in #60

Internals

  • Configured sonarcloud to power code quality analysis and coverage tracking on the project
  • Modified the way of working on the project by applying the Wizard-Template by @fschuch in #14:
    • Hatch now manages Python installations, virtual environments, dependencies, maintenance scripts, and builds
    • mypy for static type checking
    • ruff as the linter and code formatter
    • codespell to check spelling
    • pytest as the test engine
    • Git hooks to guarantee consistency and leverage the aforementioned tools
    • GitHub workflows and dependabot were reviewed to address the previous points

Full Changelog: v1.1.1...v1.2.0

v1.1.1#

Released on 2023-08-10 - GitHub - PyPI

Fixed

  • Specified the version for netcdf4, to avoid a issues with the latest version (#13), by @fschuch.

Modified

  • Support for parallel computing with dask was extended at genepsi.gene_epsi_3D, by @fschuch.

v1.1.0#

Released on 2021-10-07 - GitHub - PyPI

Added

  • Add sandbox.Geometry.from_stl. It reads an stl file and is able to compute what mesh points are inside or outside the geometry, so we can specify the geometry for a very customized immersed boundary method. By @fschuch and @nbeb.
  • Add xcompact3d_toolbox.tutorial, making it easier to get datasets for documentation and tutorials, by @fschuch.
  • Add xcompact3d_toolbox.Parameters.from_string, an useful method to get the parameters from the datasets at the tutorials, by @fschuch.
  • Add tutorial Computing and Plotting, by @fschuch.
  • Add tutorial Reading and writing files, by @fschuch.

Modified

  • io.Dataset.data_path is now obtained automatically from parameters.Parameter.filename at initialization (i.g., if filename = "./example/input.i3d" then data_path = "./example/data/"). Of course, data_path can be changed to any value after that. By @fschuch.
  • io.Dataset.load_wind_turbine_data now have a default location for file_pattern. Atributes were included for the coordinate time. By @fschuch.
  • io.Dataset.set now accepts keyword arguments to send to io.FilenameProperties.set, for a more concise sintaxe. By @fschuch.
  • The default return from xcompact3d.param.boundary_condition now takes in consideration if the domain is periodic or not, by @fschuch.

Fixed

  • fix_bug at gene_epsi_3D was not working properly (#3), by @fschuch.
  • xcompact3d.io.Dataset.load_array was not working for files that do not change in time, like ./data/geometry/epsilon.bin, by @fschuch.

v1.0.1#

Released on 2021-09-23 - GitHub - PyPI

Modified

  • Rename the default branch to main, by @fschuch.

Added

  • Add load_wind_turbine_data that reads the files from the disc and wraps the data into a xarray.Dataset, by @fschuch.

Fixed

  • Black version was not working properly at setup.py, by @fschuch.

v1.0.0#

Released on 2021-09-14 - GitHub - PyPI

Xcompact3d-toolbox has evolved considerably in the last year. The pre-release version has been employed in CFD research projects, and the feedback from the users helped to improve its interfaces and functionalities. The integration between this Python package and the numerical solver XCompact3d was experimental, and many of the functionalities were only available in a forked repository for a test of concept (fschuch/Xcompact3d). These features are now part of the main repository XCompact3d (see PR #51). With this, Xcompact3d-toolbox is ready for its first stable release.

Added

  • Support for stretched mesh at the xdmf writer and automatized tests for it, by @fschuch.
  • A class to handle the binary filenames and their tests. Now all methods support different filenames, like the classic ux000, or the new ux-0000.bin, besides some combinations between them. By @fschuch.
  • Classes to handle the coordinates and their tests, so they can be moved out of the parameters class, by @fschuch.
  • New class for the 3D coordinate system, with useful methods and its testes, by @fschuch.
  • Add class Dataset to read the binary files from XCompact3d on-demand, it is possible to loop through the snapshots, select any of them or read the entire time-series for a given variable. It returns them in a proper xarray.Dataset, by @fschuch.
  • Sets of dependencies for extra functionalities, like docs, tests, and visu, by @fschuch.
  • More parameters are now covered in the Parameters class, by @fschuch.
  • Add type hints to many functions and class methods, for a better development experience using modern IDEs, by @fschuch.

Modified

  • Writing methods for the binary files were moved from the xarray accessors to the Dataset class, by @fschuch.
  • The new sandbox flow configuration is now set with itype = 12, following its addition the XCompact3d's main repository (see #51), by @fschuch.
  • The documentation was improved, by @fschuch.

Fixed

  • Not installing all dependencies with pip install, by @fschuch.
  • Suppressed warning from tqdm, by @fschuch.
  • The output format from gene_epsi_3D has changed, fixing some compatibility issues with XCompact3d as well (see #51), by @fschuch.

v0.1.11#

Released on 2021-02-12 - GitHub - PyPI

Fixed

  • Fix #8, a little incompatibility problem with xcompact3d was fixed, by @fschuch.

v0.1.10#

Released on 2021-02-11 - GitHub - PyPI

Added

  • Add support for the previous parameters format .prm (#7), by @fschuch.
  • Class ParametersGui, a subclass from Parameters, but with widgets, by @fschuch.
  • Argument loadfile added to class Parameters, so it is possible to initialize and load form the disc with just one line of code prm = x3d.Parameters(loadfile='example.i3d'), by @fschuch.

Changed

  • Changed from method __call__ to __repr__ at parameters.py as the procedure to show the parameters on screen, by @fschuch.
  • Functions to read binary fields were moved from io.py to methods at parameters.py, so the syntax is simplified from x3d.read_field('filename', prm) to just prm.read_field('filename'). by @fschuch.

Fixed

  • Scale factor for Ahmed Body at the sandbox, by @fschuch.
  • Fix #2, widgets are now working in a new class ParametersGui, by @fschuch.
  • Fix #5, Bug at Ahmed body when using double-precision, by @fschuch.
  • Fix #6, The files describing the geometry are incompatible when running on Linux, by @fschuch.

v0.1.9#

Released on 2020-10-09 - GitHub - PyPI

Added

  • get_boundary_condition at class Parameters. It returns the appropriate boundary parameters that are
    expected by the derivative functions. by @fschuch.
  • First and second derivatives for stretched mesh in y, by @fschuch.

Changed

  • Syntax for <da,ds>.x3d.simps and <da,ds>.x3d.pencil_decomp. It is now possible to use them over multiple dimensions with just one call (for instance ds.x3d.simps('x', 'y', 'z')), by @fschuch.

Fixed

  • First derivative was incorrect when ncl1=1 and ncln=2. by @fschuch.

v0.1.8#

Released on 2020-09-29 - GitHub - PyPI

Fixed

  • param.mytype was not updating properly #4, by @fschuch.

v0.1.7#

Released on 2020-08-28 - GitHub - PyPI

Fixed

v0.1.6#

Released on 2020-08-28 - GitHub - PyPI

Fixed

v0.1.5#

Released on 2020-08-28 - GitHub - PyPI

Added

  • Support for stretched mesh in y, by @fschuch.

Fixed

v0.1.4#

Released on 2020-08-20 - GitHub - PyPI

Fixed

  • Fixed bug producing potential KeyError on the cylinder geometry

Changed

Documentation

Internals

  • python-versioneer removed the tedious and error-prone "update the embedded version string" step from our release process, by @fschuch.

v0.1.3#

Released on 2020-08-17 - GitHub - PyPI

The kickoff for the project, the first release to PyPi.

Added

  • CHANGELOG.md by @fschuch.
  • class Parameters built on top of traitlets, for type checking, dynamically calculated default values, and "on change" callbacks, by @fschuch.
  • ipywidgets for all relevant parameters and two-ways linking with traitlets variables, by @fschuch.
  • Accessors for xarray's Dataset and DataArray, making possible high-order derivatives (with appropriated boundary conditions), I/O, parallel execution with pencil decomposition (powered by dask) and integration with scipy.integrate.simps and scipy.integrate.cumtrapz. By @fschuch.
  • Ported genepsi.f90 to genepsi.py (powered by Numba), generating all the files necessary for our customized Immersed Boundary Method, by @fschuch.
  • Support to Sandbox Flow Configuration (see fschuch/Xcompact3d), by @fschuch.
  • Ahmed body as benchmark geometry, mirror and plotting tools, by @momba98.