首页/文章/ 详情

FEM之在求解器中使用设计模式(2)---Abstract Factory模式和Builder模式

3年前浏览1543

Abstract Factory模式和Builder模式是使用最广泛的两种创建型设计模式。之所以把两者放到一起,是因为两者有共同的地方,利用这两种模式可以优化对象创建的流程。


本文利用设计模式解决两个创建流程问题:

1. 单物理场网格生成有限元模型的创建 

2. 多物理场网格生成后有限元模型的创建


Abstract Factory模式的意图是 是为创建一组(有多类)相关或依赖的对象提供创建接口。


以稳态温度场为例,假设荷载,约束可以加载到任意几何上,即可以加载点,线,面,体上。那么数据结构可以定义如下:

图片


创建过程使用Abstract Factory模式,如下:

图片


使用Abstract Factory(抽象工厂)模式有如下好处:

1.封装了产品的创建,使得不需要知道具体是哪种产品,只需要知道是哪个工厂就行了。

2.可以支持不同类型的产品,使得模式灵活性更强。

3.可以非常方便的使用一组中间的不同类型的产品。

在上例中,用户可以根据分析类型,材料类型,几何映射边界约束和荷载构建不同的创建流程。


2. 多物理场网格生成有限元模型的创建,以稳态温度场为例

任意一个单物理场有限元模型创建流程如下:

void Create_FEM_Model()

{

         //创建单元数据,网格已经生产成

createElement_x_2_Material();   


//创建边界约束.

BuildGeometry2Load();      

           

//创建荷载.

BuildGeometry2Constrain();

            

//设置分析类型.       

SetAnalysisType();         

}


理论上附属在几何上的属性在划分网格后都映射到结点(Vertex)和单元(Element)上。对于多物理场的创建也一样。


Builder模式的意图是 将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

利用Builder模式创建多物理场:

图片

使用Builder模式的优点:

1、建造者模式的“加工工艺”是暴露的,这样使得建造者模式更加灵活。

2、解耦了组装过程和创建具体部件,使得我们不用去关心每个部件是如何组装的。

上例中对于多物理场,每种物理场的边界荷载都是不一样的,通过Builder模式可以不用关心单个物理场的实现,将创建过程具体的创建解耦。增加了结构的灵活性和可扩展性

声明:原创文章,欢迎留言与我讨论,如需转载留言

理论科普求解技术网格处理其他耦合其他软件
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-05-02
最近编辑:3年前
多物理场仿真技术
www.cae-sim.com
获赞 126粉丝 317文章 220课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈