Skip to main content
https://cdn.rawgit.com/gpkc/ELLIPTIc/master/logo.png

https://img.shields.io/pypi/v/elliptic.svg https://travis-ci.org/padmec-reservoir/ELLIPTIc.svg?branch=master https://readthedocs.org/projects/elliptic/badge/?version=latest https://coveralls.io/repos/github/padmec-reservoir/ELLIPTIc/badge.svg?branch=master https://api.codacy.com/project/badge/Grade/025660097e6a41fa9fa6fa590ef28148 https://img.shields.io/badge/license-MIT-blue.svg

https://cdn.rawgit.com/gpkc/ELLIPTIc/master/pic.png

Description

ELLIPTIc, The ExtensibLe LIbrary for Physical simulaTIons, is a library / framework for creating reusable and extensible Domain Specific Languages (DSL) for scientific purposes.

ELLIPTIc’s workflow is as follows:

  • An ELLIPTIc DSL contract is created to define how the DSL syntax looks like. This DSL contract defines the operations that will be available when using the DSL.

  • A DSL implementation is built based on the DSL contract. The DSL implementation tells ELLIPTIc how to generate the corresponding Cython code.

  • When using ELLIPTIc-based DSLs, a tree-like intermediate representation is built.

  • This intermediate representation is used together with the DSL implementation to generate Cython code.

DSL Syntax

ELLIPTIc-based DSLs use a Fluent Interface syntax. This allows for elegant development of algorithms.

Below is an example of how using an ELLIPTIc-based DSL to iterate in a unstructured mesh would look like:

dsl = DSL(...)  # Instatiating a DSL object


with dsl.root() as root:
    all_ents = root.Entities(dim=3).Adjacencies(bridge_dim=2, to_dim=3)  # Operation chaining
    internal_ents = all_ents.Where(boundary=False)  # Continuing an operation chain
    boundary_ents = all_ents.Where(boundary=True)  # Operation branching

    perm_ents = internal_ents.GetField(name="permeability")
    dirichlet = boundary_ents.GetField(name="dirichlet")
    neumann = boundary_ents.GetField(name="neumann")

dsl.get_built_module().run()  # Run the generated Cython code

It is also possible to export the intermediate representation to a image file, allowing for visual debugging:

https://cdn.rawgit.com/gpkc/ELLIPTIc/master/tree_example.png

Documentation

Please refer to the documentation page.

Testing

Run python setup.py test.

Building and installing

Run python setup.py build and python setup.py install.

Metadata

Release files for ELLIPTIc 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 ELLIPTIc 1.0.1
File Size Uploaded
ELLIPTIc-1.0.1.tar.gz 9.4 kB Details

Built distribution (wheel)

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

Total release size: 21.5 kB

Release files / ELLIPTIc-1.0.1.tar.gz

Download URL ELLIPTIc-1.0.1.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
558146659eb7f7b355bc75fefc6365c2f63b2b98e69e2c7a9a916139dd40e22e
BLAKE2b-256 checksum
How to use checksums
fa79400348f3ca271d16edb284e8f951d5b8d9ab0b26f3a139dfee31f9a8473f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

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

Download URL ELLIPTIc-1.0.1-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d55dc2999357f8adf59443adff7dd1dbee98e282458eb7ce01fc553e43a7cbfd
BLAKE2b-256 checksum
How to use checksums
f665e3f540f50e15075d85a2c807dd48e8b7978848c93431b080980ade049d06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

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