Kratos

您所在的位置:网站首页 寒江雪123 Kratos

Kratos

2024-07-10 20:36| 来源: 网络整理| 查看: 265

文章来源  

公众号  有限元术

二维码1.png

Kratos是一个基于现代C++的多物理场开源有限元框架,其可以完成固体,流体,热,DEM等各个方面的单场计算和耦合计算。在线性方程组求解方面,其支持常见的多种直接法和迭代法求解;在并行方面,其支持MPI和Openmp的进程和线程并行,是一个先进的多物理场开源有限元框架。

Kratos的开发团队是CIMNE。众所周知,这是一个位于巴塞罗那的国际知名数值模拟科研组织,在知名的O. C. Zienkiewicz, R. L. Taylor的经典著作《The finite element method》中就特别感谢了这一组织提供的GID这一前后处理工具。

Kratos-一个先进的基于现代C++的开源有限元框架的图2

Kratos-一个先进的基于现代C++的开源有限元框架的图3

实际上,该机构开发的GID是一个非常好用的前后处理工具,其提供了基本的几何建模,网格划分,后处理等功能,界面美观,云图精美。国内元计算公司的先进国产有限元软件PFEPG在很长一段时间就采用了该软件作为前后处理。

Kratos-一个先进的基于现代C++的开源有限元框架的图4

Kratos-一个先进的基于现代C++的开源有限元框架的图5

GID另一特色时其具备良好的定制功能,其不仅原生支持多种商业和开源有限元软件的前后处理,而且可以通过修改problemtype下的.cnd,.mat和.tcl等文件轻松实现自己对GID界面的定制。

以GID中的abaqus类型的problemtype为例:

Kratos-一个先进的基于现代C++的开源有限元框架的图6

打开GID目录下的problemtypes下的abaqus.gid文件夹下的abaqus.mat,其内容如下:

Kratos-一个先进的基于现代C++的开源有限元框架的图7

GID中对应的界面:

Kratos-一个先进的基于现代C++的开源有限元框架的图8

如果需要修改界面,只需要将abaqus.mat的内容稍加修改:

Kratos-一个先进的基于现代C++的开源有限元框架的图9

对应界面就变为:

Kratos-一个先进的基于现代C++的开源有限元框架的图10

因此在GID中,实现界面定制是很轻松的。在实现了界面定制以后,再通过.bas文件,实际上就实现了对应的导出inp的修改。因此实际上GID是一个方便有限元程序开发者的前后处理利器。

继续讲Kratos,在GID中,实际上也集成了对Kratos的前后处理:

Kratos-一个先进的基于现代C++的开源有限元框架的图11

在加载Kratos的problemtype后,通过树形菜单,既可以完成Kratos模型的前处理:

Kratos-一个先进的基于现代C++的开源有限元框架的图12

当然,Kratos作为一个开源有限元框架,也可以通过编译源代码获得其运行文件。其GITHUB的链接如下:

https://github.com/KratosMultiphysics/Kratos

同时,Kratos更先进的是其广泛采用的现代C++模板技术,使得代码足够抽象化和良好的扩展性。

templateclass ImplicitSolvingStrategy : public SolvingStrategy{public:///@name Type Definitions///@{ typedef SolvingStrategy                              BaseType; typedef typename BaseType::TDataType                                           TDataType; typedef typename BaseType::TSystemMatrixType                           TSystemMatrixType; typedef typename BaseType::TSystemVectorType                           TSystemVectorType; typedef typename BaseType::TSystemMatrixPointerType             TSystemMatrixPointerType; typedef typename BaseType::TSystemVectorPointerType             TSystemVectorPointerType; typedef typename BaseType::LocalSystemMatrixType                   LocalSystemMatrixType; typedef typename BaseType::LocalSystemVectorType                   LocalSystemVectorType; typedef Scheme                                    TSchemeType; typedef BuilderAndSolver TBuilderAndSolverType; typedef ImplicitSolvingStrategy      ClassType; typedef typename BaseType::TDofType                                             TDofType; typedef typename BaseType::DofsArrayType                                   DofsArrayType; typedef typename BaseType::NodesArrayType                                 NodesArrayType; typedef typename BaseType::ElementsArrayType                           ElementsArrayType; typedef typename BaseType::ConditionsArrayType                       ConditionsArrayType; /** Counted pointer of ClassName */KRATOS_CLASS_POINTER_DEFINITION(ImplicitSolvingStrategy);

  另一个更广为人知地使用现代C++技术的开源有限元框架是Deal.II。但是实际上,由于在Deal.II中其采用的triangulation结构的网格,不采用偏工程的节点单元信息,因此实际上可能并不太适合作为基于实际工程计算的工具,而更像是一个偏学术的数学研究工具。而Kratos采用的是和abaqus,ansys这些通用有限元软件一样的节点和单元信息,对Kratos的扩展,则可能使得Kratos成为工程CAE软件开发的利器。

并且,开发团队还编写了一本关于Kratos的著作,对Kratos中采用的具体C++技术和架构技术进行了较为详细的描述:

Kratos-一个先进的基于现代C++的开源有限元框架的图13

以上,是对开源有限元框架Kratos的一点简单介绍,对于这个框架笔者本身了解也不多,总体上,无论是从整体软件架构上还是从其具体采用的C++技术上看,这都是一个值得深入了解的工具。最后,以一个Kratos计算的流固耦合计算压力云图结尾:

Kratos-一个先进的基于现代C++的开源有限元框架的图14



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3