当前位置:服务支持 >  软件文章 >  Kratos基于现代C++的开源有限元框架特点介绍

Kratos基于现代C++的开源有限元框架特点介绍

阅读数 11
点赞 0
article_banner

文章来源  

公众号  有限元术

二维码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++模板技术,使得代码足够抽象化和良好的扩展性。

template<class TSparseSpace, class TDenseSpace, class TLinearSolver>class ImplicitSolvingStrategy : public SolvingStrategy<TSparseSpace, TDenseSpace>{public:///@name Type Definitions///@{

typedef SolvingStrategy<TSparseSpace, TDenseSpace>                              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<TSparseSpace, TDenseSpace>                                    TSchemeType;

typedef BuilderAndSolver<TSparseSpace, TDenseSpace, TLinearSolver> TBuilderAndSolverType;

typedef ImplicitSolvingStrategy<TSparseSpace, TDenseSpace, TLinearSolver>      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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空