Skip to main content

A structured cartesian mesh field representation for scientific computing

Project description

numfield

A structured cartesian mesh field representation for scientific computing.

Overview

numfield provides an intuitive framework for working with scalar fields defined on structured N-dimensional Cartesian meshes. It offers seamless integration with NumPy, allowing you to perform numerical operations while preserving mesh information.

Features

  • N-dimensional Cartesian meshes: Support for structured grids
  • NumPy integration: Full compatibility with NumPy ufuncs and array operations
  • Intensive/extensive quantities: Proper handling of different field types
  • HDF5 I/O: Save and load fields and mesh data to/from HDF5 files
  • Visualization: Built-in plotting methods for 1D, 2D, and 3D fields with interactive slicing
  • Field operations: Projection, rotation, transposition, and merging of fields
  • Multi-field containers: Manage multiple fields on a common mesh

Installation

From PyPI (recommended)

pip install numfield[all]

This installs the package with all optional dependencies including matplotlib for visualization features.

Basic installation

pip install numfield

This installs the core package without plotting dependencies. Visualization methods will be unavailable.

From source

git clone https://github.com/louis-drouard/numfield.git
cd numfield
pip install ".[all]"

Development installation

pip install ".[dev]"

Quick Start

import numpy as np
from numfield import CartesianMesh, CartesianField, Fields

# Create a 2D mesh
mesh = CartesianMesh([1., 1.], [2., 2.], [5., 1., 4.])  # deltas (here x, y and z)

# Create a field on the mesh
values = np.random.rand(*mesh.shape)
field = CartesianField("temperature", mesh, values, intensive=True)

# Perform operations (preserves mesh information)
mean_temp = field.mean()
normalized = field.normalize()

# Plot the field
field.plot()

# Save to HDF5
field.to_hdf("output.h5")

# Load from HDF5
loaded_field = CartesianField.from_hdf("output.h5")

Usage Examples

Working with multiple fields

from numfield import Fields

# Create a container for multiple fields
fields = Fields(mesh)
fields.add_values("temperature", np.random.rand(*mesh.shape))
fields.add_values("pressure", np.random.rand(*mesh.shape))

# Access individual fields
temp_field = fields["temperature"]

Field projection and merging

# Project a field onto a different mesh
target_mesh = CartesianMesh.from_linspace([0, 0], [2, 2], [20, 20])
projected_field = temp_field.project_on(target_mesh)

# Merge multiple fields from different regions
from numfield import merge_fields
combined_field = merge_fields("combined", field1, field2, field3)

Interactive visualization

# For 3D fields, use interactive slicing
field_3d.plot(axis=2, dynamic_colorbar=True, display_edges=False)

API Reference

Core Classes

  • CartesianMesh: N-dimensional structured Cartesian mesh
  • CartesianField: Scalar field defined on a Cartesian mesh
  • Fields: Container for multiple fields sharing a mesh

Key Operations

  • Arithmetic: All NumPy operations (+, -, *, /, etc.)
  • Statistical: mean(), sum(), std(), min(), max(), describe()
  • Transformation: project_on(), rot90(), transpose(), normalize()
  • I/O: to_hdf(), from_hdf(), to_hdf_group(), from_hdf_group()

Requirements

Core dependencies

  • Python >= 3.10
  • NumPy >= 1.26.4
  • h5py

Optional dependencies

  • matplotlib (for visualization features, included in [all] extra)

Development

Running tests

pytest --mpl

The --mpl flag enables matplotlib baseline image comparison for visual regression testing.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

This package was developed at the French Alternative Energies and Atomic Energy Commission (CEA).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numfield-0.1.3.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

numfield-0.1.3-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file numfield-0.1.3.tar.gz.

File metadata

  • Download URL: numfield-0.1.3.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for numfield-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0e42aabaa55469ee2d3b86b0f10ef1bad1b8066181481a83caedefdb795abe72
MD5 e8d0c8b5e20023286d3fbd577c3f5949
BLAKE2b-256 54caad632cb081728ea996f5ebc7b3ea41d54f21d2e5c2a31af97adc268f2c5b

See more details on using hashes here.

File details

Details for the file numfield-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: numfield-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 34.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for numfield-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8090bd1391cd93e19e2fcca194d5d4c3b28f9de74d7a26cfc29d10a30aa8fae5
MD5 ac9a2816ef4d11796e45e904d51391a1
BLAKE2b-256 734e48eb584b52200d11a5f9b136c4e3aca7f7f70422612734e43faf369b61da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page