All Projects → padmec-reservoir → ELLIPTIc

padmec-reservoir / ELLIPTIc

Licence: MIT license
ELLIPTIc: The Extensible LIbrary for Physical simulaTIons

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to ELLIPTIc

SciCompforChemists
Scientific Computing for Chemists text for teaching basic computing skills to chemistry students using Python, Jupyter notebooks, and the SciPy stack. This text makes use of a variety of packages including NumPy, SciPy, matplotlib, pandas, seaborn, NMRglue, SymPy, scikit-image, and scikit-learn.
Stars: ✭ 65 (+364.29%)
Mutual labels:  scientific-computing, scientific
Nd4j
Fast, Scientific and Numerical Computing for the JVM (NDArrays)
Stars: ✭ 1,742 (+12342.86%)
Mutual labels:  scientific-computing, scientific
Spirit
Atomistic Spin Simulation Framework
Stars: ✭ 67 (+378.57%)
Mutual labels:  scientific-computing, scientific
Stdlib
✨ Standard library for JavaScript and Node.js. ✨
Stars: ✭ 2,749 (+19535.71%)
Mutual labels:  scientific-computing, scientific
Meteoinfo
MeteoInfo: GIS and scientific computation environment for meteorological community.
Stars: ✭ 136 (+871.43%)
Mutual labels:  scientific-computing, scientific
steep
⤴️ Steep Workflow Management System – Run scientific workflows in the Cloud
Stars: ✭ 30 (+114.29%)
Mutual labels:  scientific-computing, scientific
OOMMFTools
OOMMFTools is a set of utilities designed to assist OOMMF postprocessing
Stars: ✭ 15 (+7.14%)
Mutual labels:  scientific-computing
AutoPas
Autopas is a node-level auto-tuned particle simulation library developed in the context of the TaLPas project.
Stars: ✭ 19 (+35.71%)
Mutual labels:  scientific-computing
PyCORN
A script to extract data from ÄKTA/UNICORN result-files (.res)
Stars: ✭ 30 (+114.29%)
Mutual labels:  scientific-computing
AutoWIG
Automatic Wrapper and Interface Generator
Stars: ✭ 107 (+664.29%)
Mutual labels:  scientific-computing
glimmer-dsl-tk
Glimmer DSL for Tk (Ruby Tk Desktop Development GUI Library)
Stars: ✭ 26 (+85.71%)
Mutual labels:  dsl-syntax
Geoweaver
a web system to allow users to automatically record history and manage complicated scientific workflows in web browsers involving the online spatial data facilities, high-performance computation platforms, and open-source libraries.
Stars: ✭ 32 (+128.57%)
Mutual labels:  scientific-computing
datajoint-python
Relational data pipelines for the science lab
Stars: ✭ 140 (+900%)
Mutual labels:  scientific-computing
scilab
Open source, cross-platform numerical computational package and a high-level, numerically oriented programming language.
Stars: ✭ 52 (+271.43%)
Mutual labels:  scientific-computing
jigsaw-python
Python bindings for JIGSAW: a Delaunay-based unstructured mesh generator.
Stars: ✭ 24 (+71.43%)
Mutual labels:  scientific-computing
Tensor
A library and extension that provides objects for scientific computing in PHP.
Stars: ✭ 146 (+942.86%)
Mutual labels:  scientific-computing
flambeau
Nim bindings to libtorch
Stars: ✭ 60 (+328.57%)
Mutual labels:  scientific-computing
rsc
A handwritten scientific calculator for interpreting equations.
Stars: ✭ 32 (+128.57%)
Mutual labels:  scientific
boxtree
Quad/octree building for FMMs in Python and OpenCL
Stars: ✭ 52 (+271.43%)
Mutual labels:  scientific-computing
ITKSphinxExamples
Cookbook examples for the Insight Toolkit documented with Sphinx
Stars: ✭ 48 (+242.86%)
Mutual labels:  scientific-computing

This project is no longer maintained


Build Status Documentation Status Coverage Status Codacy Badge GitHub license

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].