Skip to main content

Xcompact3d Toolbox

Build Status Documentation Status PyPI version Code style: black

It is a Python package designed to handle the pre and postprocessing of the high-order Navier-Stokes solver XCompact3d. It aims to help users and code developers to build case-specific solutions with a set of tools and automated processes.

The physical and computational parameters are built on top of traitlets, a framework that lets Python classes have attributes with type checking, dynamically calculated default values, and ‘on change’ callbacks. In addition to ipywidgets for an user friendly interface.

Data structure is provided by xarray (see Why xarray?), that introduces labels in the form of dimensions, coordinates and attributes on top of raw NumPy-like arrays, which allows for a more intuitive, more concise, and less error-prone developer experience. It integrates tightly with dask for parallel computing and hvplot for interactive data visualization.

Finally, Xcompact3d-toolbox is fully integrated with the new Sandbox Flow Configuration. The idea is to easily provide everything that XCompact3d needs from a Jupyter Notebook, like initial conditions, solid geometry, boundary conditions, and the parameters (see examples). It makes life easier for beginners, that can run any new flow configuration without worrying about Fortran and 2decomp. For developers, it works as a rapid prototyping tool, to test concepts and then compare results to validate any future Fortran implementation.

Installation

It is possible to install using pip:

pip install xcompact3d-toolbox

There are other dependency sets for extra functionality:

pip install xcompact3d-toolbox[visu] # interactive visualization with hvplot and others
pip install xcompact3d-toolbox[doc]  # dependencies to build the documentation
pip install xcompact3d-toolbox[dev]  # tools for development
pip install xcompact3d-toolbox[test] # tools for testing
pip install xcompact3d-toolbox[all]  # all the above

To install from source, clone de repository:

git clone https://github.com/fschuch/xcompact3d_toolbox.git

And then install it interactively with pip:

cd xcompact3d_toolbox
pip install -e .

You can install all dependencies as well:

pip install -e .[all]

Now, any change you make at the source code will be available at your local installation, with no need to reinstall the package every time.

Try it Online

badge badge

Click on any link above to launch Binder and interact with our notebooks in a live environment!

Examples

  • Importing the package:

    import xcompact3d_toolbox as x3d
    
  • Loading the parameters file (both .i3d and .prm are supported, see #7) from the disc:

    prm = x3d.Parameters(loadfile="input.i3d")
    prm = x3d.Parameters(loadfile="incompact3d.prm")
    
  • Specifying how the binary fields from your simulations are named, for instance:

    • If the simulated fields are named like ux-000.bin:

      prm.dataset.filename_properties.set(
         separator = "-",
         file_extension = ".bin",
         number_of_digits = 3
      )
      
    • If the simulated fields are named like ux0000:

      prm.dataset.filename_properties.set(
         separator = "",
         file_extension = "",
         number_of_digits = 4
      )
      
  • There are many ways to load the arrays produced by your numerical simulation, so you can choose what best suits your post-processing application. All arrays are wrapped into xarray objects, with many useful methods for indexing, comparisons, reshaping and reorganizing, computations and plotting. See the examples:

    • Load one array from the disc:

      ux = prm.dataset.load_array("ux-0000.bin")
      
    • Load the entire time series for a given variable:

      ux = prm.dataset["ux"]
      
    • Load all variables from a given snapshot:

      snapshot = prm.dataset[10]
      
    • Loop through all snapshots, loading them one by one:

      for ds in prm.dataset:
         # compute something
         vort = ds.uy.x3d.first_derivative("x") - ds.ux.x3d.first_derivative("y")
         # write the results to the disc
         prm.dataset.write(data = vort, file_prefix = "w3")
      
    • Or simply load all snapshots at once (if you have enough memory):

      ds = prm.dataset[:]
      
    • It is possible to produce a new xdmf file, so all data can be visualized on any external tool:

      prm.dataset.write_xdmf()
      
  • User interface for the parameters with IPywidgets:

    prm = x3d.ParametersGui()
    prm
    

    An animation showing the graphical user interface in action

All content is under GPL-3.0 License.

Metadata

Release files for xcompact3d-toolbox 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xcompact3d-toolbox 1.0.1
File Size Uploaded
xcompact3d_toolbox-1.0.1.tar.gz 83.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for xcompact3d-toolbox 1.0.1
File Interpreter ABI Platform
xcompact3d_toolbox-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 151.5 kB

Release files / xcompact3d_toolbox-1.0.1.tar.gz

Download URL xcompact3d_toolbox-1.0.1.tar.gz
Size 83.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3b836faf45bb1fe438e81ca8ec8b01b7dc90c3b5a89ce516c5ec5e6444cff168
BLAKE2b-256 checksum
How to use checksums
99c426d6212f4c220a6104140dae8a950899503bec12d684471fb78648f53bca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release files / xcompact3d_toolbox-1.0.1-py3-none-any.whl

Download URL xcompact3d_toolbox-1.0.1-py3-none-any.whl
Size 67.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
99bc248f69cfe9142478a1f0a1bc1fd0adfe1ee17a20f33c58cd6b714f2f666f
BLAKE2b-256 checksum
How to use checksums
354b5c397da9bfdfa308b7e8921575565c2d18c2e983522a36cef6001ba3b1ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page