用于为科学目的构建dsl的工具。
ELLIPTIc的Python项目详细描述
说明
椭圆,物理模拟的可扩展库,是一个用于创建可重用和可扩展的Domain Specific Languages (DSL)用于科学目的的库/框架。
椭圆的工作流程如下:
- 创建一个椭圆dsl契约来定义dsl语法的外观。这个dsl契约定义了使用dsl时可用的操作。
- dsl实现是基于dsl契约构建的。dsl实现告诉椭圆机如何生成相应的cython代码。
- 在使用基于椭圆的dsls时,建立了一个树状的中间表示。
- 这个中间表示与dsl实现一起用于生成cython代码。
DSL语法
基于椭圆的dsl使用Fluent Interface语法。这允许 为算法的优雅发展。
下面是使用基于椭圆的dsl在非结构化网格中迭代的示例:
dsl=DSL(...)# Instatiating a DSL objectwithdsl.root()asroot:all_ents=root.Entities(dim=3).Adjacencies(bridge_dim=2,to_dim=3)# Operation chaininginternal_ents=all_ents.Where(boundary=False)# Continuing an operation chainboundary_ents=all_ents.Where(boundary=True)# Operation branchingperm_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
还可以将中间表示导出到图像文件,以便进行可视化调试:
文档
测试
运行python setup.py test。
建造和安装
运行python setup.py build和python setup.py install。