Giter Club home page Giter Club logo

openoasis's Introduction


linuxwindowsmacoscodecov

什么是绿洲?

简体中文 | English

OpenOasis ,绿洲,作为一个真实世界物理模型的数值模拟项目,希望能帮助提高对于理论概念、
数值方法和现实数据的理解;同时,提供一个标准化的平台来尝试新想法和新方案。

绿洲 项目基于OpenMI v2.0接口规范,实现一套通用的数值模型开发以及集成框架,
不局限于特定领域。就当前来说,项目主要应用于区域内流体流动热量流动等过程。除此之外,
我们也积极探索深度学习和强化学习等新思路在快速预报、智能决策等方面的应用。

绿洲 项目采用 C++17 开发数值算法模型内核,同时采用 Python3.x开发智能引擎包和数据工具,
积极尝试蓬勃发展的人工智能技术。


如何使用?


现在加入!


更多


openoasis's People

Contributors

qinzhaoyu avatar

openoasis's Issues

一套通用的、提供智能指针接口的内存池方案

由于openoasis基于接口设计,为了实现通用性和兼容性,使得接口中充满智能指针。在实际使用中,经常需要深度拷贝对象副本,由于使用智能指针接口,导致一些功能会频繁New小对象。

test project manage

There is a function feature required, spliting it to several small part as:

  • part1: to do something (small enough as a developing feature, the same below)
  • part2: to do something
  • part3: to do something
  • part4: to do something
  • part5: to do something

重构launcher

重构launcher,实现模型任务task和耦合任务link的自由加载和调度。

项目拆分编译

目前openoasis项目中主要存在三块相对独立的内容:数值计算引擎和模型集成框架,数据分析组件,深度强化学习组件。

其中,数值计算引擎和模型集成框架现耦合在一起,但是否考虑拆分:

  • 数值计算引擎开发sdk(dll or lib);
  • 模型集成开发环境sdk(dll or lib);
  • openoasis内置模型集(dll or lib);

更新linkablecomponent接口和solver流程

  1. linkablecomponent的接口,实现基于文件和基于参数的两种配置方式;
  2. solver的工作流程,基于fvm逻辑,打散各个计算步骤,实现自由配置。

梳理和耦合不同框架和接口

梳理openmi框架和openfoam框架,包括空间数据的定义、对象状态和数据的控制,对象参数的配置。
尽可能避免重复定义、转换,实现无缝耦合。

激活日志

确定项目中日志配置方式,在开发中激活日志功能(包括输出日志和基于日志调试)。

修复openmi接口测试bug

testFramework中loop-mode和pull-mode无法保证跨平台运行成功。

  • loop-mode 测试;
  • pull-mode 测试;

第一阶段优化

在初步形成功能后,为模型配置性能和内存分析工具,并针对瓶颈函数实现性能优化。

求解器注册器

将OpenOasis中的对象划分为组件(模型)component和求解器(算法)solver,前者可以是对物理对象、物理现象或物理概念建立的数字孪生映射(如雨量站、流域、河网、地下水系/热扩散、热对流/湍流),后者可以是前者的属性、行为及状态的数学描述(如产流过程、一二三维水体流动及流速、流量、压强等相关状态、热量流动过程及温度等状态,流体中高度非线性或混沌运动)。

组件和求解器的概念没有明晰的界限,有时界定归属时可能会产生疑惑。一个更具有操作性的说明:
组件具有输入input和输出output接口,可以和其他组件耦合;组件对象通常具有空间描述,并直接面对用户的交互操作;求解器依附于组件,依赖组件提供时空数据,同时负责组件的状态更新。

组件和求解器之间具有松散的耦合关系,例如一维河网组件,可能会采用圣伟南方程求解器计算,也可能采用伯格斯方程、运动波方程、惯性波方程求解器计算,甚至马斯京根方程求解器计算;而这些求解器可能也会用于一维管网组件的计算。但是你不可能使用二维浅水方程求解器计算一维河网组件。

基于这种松散的耦合关系,需要设计求解器注册机制,使用户可以通过配置文件自由组合想要的模拟方案,同时不会导致代码膨胀。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.