OpenSees二次开发实例01

本文详细介绍了如何在OpenSees中进行单轴材料ElasticPPcpp的二次开发,包括添加h和cpp文件,修改类标签,更新FEM_ObjectBrokerAllclasses.cpp,集成到TCL建模工具,以及解决编译错误,最终成功运行示例并验证材料功能。
摘要由CSDN通过智能技术生成

一个单轴材料的二次开发过程

前言

之前介绍了使用VS2019对OpenSees 3.0.0源代码进行编译的方法,在此基础上,我对源代码中提供的material二次开发实例(源代码目录–DEVELOPER–material–cpp)进行了试验,由于源代码中已经提供了该材料的h文件和cpp文件,因此本文主要介绍的是将自定义的材料嵌入到源代码的过程。

过程

  1. 本材料是单轴材料,材料名字为ElasticPPcpp
  2. 在material–uniaxial下添加h文件和cpp文件
  3. 在classTag.h类中添加新材料类编号,使其能被识别,格式如下: #define MAT_TAG_ElasticPPcpp 7777
  4. 修改actor项目中的FEM_ObjectBrokerAllclasses.cpp:首先包含新单轴材料的头文件,格式为:#include "ElasticPPcpp.h"(PS:这时可能会出现错误提示–“无法打开源文件 ElasticPPcpp.h”,这是因为ElasticPPcpp.h文件所在的目录没有在actor项目的包含目录中,因此在actor项目的包含目录中添加h文件的所在目录即可,同样问题解决方法相同),然后修改其中的getNewUniaxialMaterial()函数,在其中添加该材料的选项,格式如下:
case MAT_TAG_ElasticPPcpp:
return new ElasticPPcpp;
  1. 新增加的单轴材料需添加到TCL建模工具中,才能在分析中通过TCL命令进行定义,修改material–uniaxial–TclModelBuilderUniaxialMaterialCommand.cpp,先添加包含新材料的头文件:#include “ElasticPPcpp.h”,然后修改 TclModelBuilderUniaxialMaterialCommand函数,添加如下代码:
else if (strcmp(argv[1],"ElasticPPcpp") == 0) {
      void *theMat = OPS_ElasticPPcpp();
      if (theMat != 0) 
	theMaterial = (UniaxialMaterial *)theMat;
      else 
	return TCL_ERROR; 
	}

这时可能会出现错误–未定义标识符“OPS_ElasticPPcpp”,解决方法是在该文件中包含材料的cpp文件,格式为#include <ElasticPPcpp.cpp>
6. 然后生成可执行文件,并且运行example1.tcl文件,运行结果如下所示,到此为止,一个简单的单轴材料二次开发完成。
运行结果

结语

这是一个比较简单的二次开发实例,二次开发的难点是自定义材料的过程,希望本文能帮助到学习OpenSees二次开发同志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值