复杂形态钢结构设计培训班

首页 结构乌托邦-公众号 【编程】基于C#绘制反应谱曲线——SRP第一课

【编程】基于C#绘制反应谱曲线——SRP第一课

“基于C#实现窗体开发
本学期与郑振光博士带大二本科生参与SRP项目。为保证项目能顺利推进,组员们需具备一定的编程能力,并掌握机器学习的相关基础知识点。恰逢组员们在“荷载课”首次邂逅加速度反应谱曲线【广东省性能设计规程】与国家高规对比浅谈反应谱的修正与完善),因此围绕加速度反应谱给组员们安排了如下两个学习任务,分别培养组员的编程及机器学习基础能力。
  • 通过C#完成窗体开发,掌握定义类及常用控件(CheckListbox、Listbox、Chart、DataGridView)的使用及数据绑定。

  • 基于Python人工神经网络(ANN)建立加速度反应谱曲线预测模型,通过输入影响系数最大值、特征周期及阻尼比预测规范反应谱曲线。

SRP第一课的学习任务为尝试开发如图1所示的winForm窗体。本模板实例已开源,对C#编程感兴趣的朋友可点击阅读原文查看。在结构专业领域,AutoCAD、Revit、Etabs、SAP2000等主流软件均提供了C#的接口,因此掌握C#将会是你结构生涯中的一大利器!

图1 学习任务一:C#窗体示例
  • 关键知识点

  • 类的定义

  1. /// <summary>

  2. /// 国家反应谱

  3. /// </summary>

  4. public class GBCodeSpectrum

  5. {

  6. /// <summary>

  7. /// 阻尼比

  8. /// </summary>

  9. private double DampingRatio {set; get;}


  10. /// <summary>

  11. /// 特征周期值

  12. /// </summary>

  13. private double ModelTg {set; get;}


  14. /// <summary>

  15. /// 地震影响系数最大值

  16. /// </summary>

  17. private double ModelAfaMax {set; get;}


  18. /// <summary>

  19. /// 6s后是否拉平处理

  20. /// </summary>

  21. private bool is6Horizontal {set; get;}


  22. /// <summary>

  23. /// 反应谱曲线

  24. /// </summary>

  25. private List<SpectrumParam> SpectrumValues {set; get;}

  26. }

  • 函数指针Func及Action

  1. //5Tg到6.0规范公式

  2. Func<double,double> getAfa = subPeriod =>

  3. {

  4. return (this.Factor2 * Math.Pow(0.2,this.Gamma) - this.Factor1 * (subPeriod - 5 * this.ModelTg)) * this.ModelAfaMax;

  5. };

  6. ……………

  7. /*省略*/

  8. ………………

  9. //Tg到5Tg

  10. else if(period <=5*this.ModelTg)

  11. return Math.Pow(this.ModelTg / period, this.Gamma) * this.Factor2 * this.ModelAfaMax;

  12. //6s内

  13. else if(period <=6) return getAfa(period);

  14. //6s外

  15. else return this.is6Horizontal ? getAfa(6): getAfa(period);

  • 简单LINQ:form,where,select

  1. /// <summary>

  2. /// 反应谱列表

  3. /// </summary>

  4. publicList<GBCodeSpectrum>SpectrumList

  5. {

  6. get

  7. {

  8. return(from spectrum in this.spectrumList

  9. select spectrum).ToList();

  10. }

  11. }

  • 反射的使用

  1. /// <summary>

  2. /// 获得反应谱结果

  3. /// </summary>

  4. /// <param name="propertyName">属性名称</param>

  5. /// <returns>属性值列表</returns>

  6. public List<double> GetValueList(string propertyName)

  7. {

  8. return this.SpectrumValues.GetPropertyList(propertyName).ConvertAll(d =>(double)d);

  9. }

  • 控件的数据绑定

  1. //获得勾选的对象

  2. var spectrumObjs =this.SpectrumCheckListbox.GetObjects().ConvertAll(s =>(GBCodeSpectrum)s);

  3. //获得数据

  4. var data = this.Spectrums.GetData(spectrumObjs);

  5. //修改表格

  6. this.SpectrumDataGridView.AddDatas(data);

  7. //绘图

  8. this.Spectrums.ToChart(this.SpecturmChart, spectrumObjs);


点击阅读原文可查看本模板实例代码!

精彩回顾:

【会议总结】OpenSEES Days Eurasia 2019 in PolyU

【PBSD】【OpenSEES】2019年精选推送集锦

【编程】Python效率测试与调用.Net的基本方法

【编程】分段解析法及多软件反应谱求解结果对比探究[开源]

【YJK】弹性时程分析如何考虑周期折减系数

【YTO】YJK to OpenSees:框架结构算例验证

【YTO】YJK to OpenSees:剪力墙结构算例验证
  • PBSD

【PBSD】2019年更新历史——结构抗震性能设计软件PBSD

【PBSD】超限工程好助手:结构抗震性能设计软件PBSD功能简介

【PBSD】V1.0.5.0版正式发布:免费地震动工具箱之教学视频

【PBSD】弹性时程分析的实现与功能测试

【PBSD】【PERFORM-3D】YTP导模工具使用手册

【PBSD】【OpenSEES】【YTO】智能化的结构弹塑性分析全套解决方案

【PBSD】人工波生成功能测试 [开源]

【广东省性能设计规程】与国家高规对比浅谈反应谱的修正与完善

【广东省性能设计规程】性能设计基本方法与PBSD的实现
  • OpenSees

【OpenSEES】OpenSEES历史版本下载:v1.7.2-v3.1.0

【OpenSees】浅析两类纤维单元:位移元与应力元

【OpenSEES】24类纤维截面剖分TCL函数

【OpenSees】浅析纤维单元的数值积分方法

【OpenSees】浅析分布塑性铰单元的数值积分方法

【OpenSees】应力元纤维单元的Localization Issues

【OpenSees】宏观梁柱单元的强度软化模拟

【OpenSees】浅析剪力墙宏观单元:MVLEM

【OpenSees】浅析剪力墙宏观单元:SFI-MVLEM

【OpenSees】浅析剪力墙宏观单元:分层壳单元

【OpenSEES】浅析迭代(一)

【OpenSEES】浅析迭代(二):基于LineSearch优化迭代算法

【OpenSEES】浅析迭代(三):基于Krylov优化迭代算法

【OpenSees】SecAggregator为DispBC赋予剪切刚度乃无用功

【OpenSEES】PM截面分析实例

【OpenSees】如何利用应变控制截面分析的进程

【OpenSEES】低周往复加载实例:荷载位移双控

【OpenSees】SDOF非线性动力时程分析的实现与算例

  • 工具

【工具】PC端文字识别小工具2.0[Mini_OCR]

【工具】OSRun [OpenSees运行辅助工具][开源]

【工具】FSV [OpenSees纤维截面可视化工具][开源]



本文来自网络,不代表钢构人的立场,转载请注明出处。搜索工程类文章,就用钢构人网站。 https://www.ganggouren.com/2020/05/4e01797352/

钢结构地图

上一篇
下一篇

作者: ganggouren

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

17717621528

在线咨询: QQ交谈

邮箱: 1356745727@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部