Kratos |
您所在的位置:网站首页 › 寒江雪123 › Kratos |
文章来源 公众号 有限元术 ![]() Kratos是一个基于现代C++的多物理场开源有限元框架,其可以完成固体,流体,热,DEM等各个方面的单场计算和耦合计算。在线性方程组求解方面,其支持常见的多种直接法和迭代法求解;在并行方面,其支持MPI和Openmp的进程和线程并行,是一个先进的多物理场开源有限元框架。 Kratos的开发团队是CIMNE。众所周知,这是一个位于巴塞罗那的国际知名数值模拟科研组织,在知名的O. C. Zienkiewicz, R. L. Taylor的经典著作《The finite element method》中就特别感谢了这一组织提供的GID这一前后处理工具。 实际上,该机构开发的GID是一个非常好用的前后处理工具,其提供了基本的几何建模,网格划分,后处理等功能,界面美观,云图精美。国内元计算公司的先进国产有限元软件PFEPG在很长一段时间就采用了该软件作为前后处理。 GID另一特色时其具备良好的定制功能,其不仅原生支持多种商业和开源有限元软件的前后处理,而且可以通过修改problemtype下的.cnd,.mat和.tcl等文件轻松实现自己对GID界面的定制。 以GID中的abaqus类型的problemtype为例: 打开GID目录下的problemtypes下的abaqus.gid文件夹下的abaqus.mat,其内容如下: GID中对应的界面: 如果需要修改界面,只需要将abaqus.mat的内容稍加修改: 对应界面就变为: 因此在GID中,实现界面定制是很轻松的。在实现了界面定制以后,再通过.bas文件,实际上就实现了对应的导出inp的修改。因此实际上GID是一个方便有限元程序开发者的前后处理利器。 继续讲Kratos,在GID中,实际上也集成了对Kratos的前后处理: 在加载Kratos的problemtype后,通过树形菜单,既可以完成Kratos模型的前处理: 当然,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++技术上看,这都是一个值得深入了解的工具。最后,以一个Kratos计算的流固耦合计算压力云图结尾:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |