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:
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)
| File | Size | Uploaded | |
|---|---|---|---|
| ELLIPTIc-1.0.1.tar.gz | 9.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 |