11 个版本

0.1.7 2019年6月24日
0.1.6 2019年3月20日
0.1.5 2019年2月14日
0.0.3 2019年2月7日

科学 中排名第 328

每月下载量 32

MIT 许可证 MIT

125KB
2K SLoC

Build Status License: MIT

这是一个进行中的项目 该项目已暂停

Civil

此包旨在解决常见的民用工程问题。目前一切都在进行中。理想情况下,当这个库成熟时,它应该支持对创建帮助确定街道几何设计、水沟尺寸和建筑项目基本经济分析的应用程序感兴趣的开发者。最终目标是提供一个简单的 API,用于常见的民用工程设计方程,以便应用程序开发者可以更多地关注特定于应用程序的实现,而不是研究方法。

一个很好的例子是,如果网页开发者能够使用这个 API 编写一个简短的功能,比如使用 Rust 计算给定渠道尺寸和粗糙度的明渠水流,然后将它编译成 WASM,并通过 JS 调用该函数,使用户输入产生渠道的图形表示,那么这将是一个很好的用例。另一个好的用例是,这个库中的函数被用于支持 CAD 套件中的模块或扩展。

Civil 的目标是足够全面以有用,但足够简单以灵活。因此,像读取数字高程模型、绘制流域和将几何对象转换为写入特定供应商文件类型(比如 .DWG)这样的复杂任务不在这个项目的范围之内。

为什么?

为什么是这个库?

  1. 没有类似的 Rust FOSS 库可以填补这个角色。

为什么要创建库?

  1. 工程师和设计师解决重要的、具体的问题。现代基础设施,如水和卫生设施,使人们的生活质量得到了改善,这在几代人之前是不可思议的。降低为更多人提供这些好处所带来的障碍,可以使世界变得更美好。健壮的、免费的可获得软件降低了这些障碍,而且目前可用的工具不多,比如游戏等领域的问题域。

为什么选择 Rust?

  1. Rust 具有与 C++ 相似的特性,具有编译器强制执行的内存安全措施,这使得它在某种程度上优于 C++。不过,这个库主要是用 Rust 编写的,因为我 1) 不懂 Fortran 2) 对 GNAT 的构建系统感到沮丧 3) 用 Go 或 Python 编写库并用作其他语言似乎有点奇怪。

通往 0.1.0 的道路

检查清单

  • 完成程序的脚手架几乎完成。模块布局合理,主要的逻辑分组也已完成。
  • 模块文件正确引用了其他壳模块文件
  • 至少有一个有用的功能被暴露出来
  • 在适当的位置列出合理的待办事项以供参考

通往1.0.0的道路

检查清单

  • 所有基本模块和功能都已编写
  • 100%的功能文档
  • 90%或更好的代码覆盖率
  • 对函数进行部分基准测试以支持实现风格

超越!

检查清单

  • 使用示例:作为简单CLI工具、WASM目标等的API
  • Markdown书籍以阐明用法
  • 优化
  • 新特性

贡献

基本上,这个项目的任何方面都欢迎贡献。如果您在代码中看到差距,请发起一个pull请求。我不是专业的开发者,所以如果您看到一些明显的元编程错误,请提出。

本项目所需事项

  • 核心库实现
  • 测试
  • 基准测试
  • 文档

如果我一点也不知道土木工程怎么办?

有一些优秀的书籍详细列出了适合此库的大部分函数。只要您能够将方程翻译成Rust,有合理的输入和输出,您不需要完全理解它们的上下文和使用。

应该做的事情

  1. 文件层次结构应该清晰,并基于任务的逻辑分组进行直观的组织。
  2. 每个函数或结构体都应该提供清晰的文档。
  3. 清晰的文档应包括引用。
  4. 编写测试。
  5. 尽可能使公式与单位系统无关,并适当处理不同的单位系统(英制或公制)。当需要区分时,将按照传递 'imperial' 或 'metric' 作为最终参数的约定。

不应该做的事情

  1. 不要引入实际上不必要的依赖。
  2. 不要在顶级模块之间创建相互依赖。您的岩土工程函数不应该破坏您的流体力学函数。

无运行时依赖