编程语言应用

首页 » 常识 » 常识 » 编程基于C绘制反应谱曲线SRP第一
TUhjnbcbe - 2021/1/31 4:31:00
“基于C#实现窗体开发”本学期与郑振光博士带大二本科生参与SRP项目。为保证项目能顺利推进,组员们需具备一定的编程能力,并掌握机器学习的相关基础知识点。恰逢组员们在“荷载课”上首次邂逅加速度反应谱曲线(与国家高规对比浅谈反应谱的修正与完善),因此围绕加速度反应谱给组员们安排了如下两个学习任务,分别培养组员的编程及机器学习基础能力。

通过C#完成窗体开发,掌握定义类及常用控件(CheckListbox、Listbox、Chart、DataGridView)的使用及数据绑定。

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

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

图1学习任务一:C#窗体示例

关键知识点

类的定义

///summary

///国家反应谱

////summary

publicclassGBCodeSpectrum

{

///summary

///阻尼比

////summary

privatedoubleDampingRatio{set;get;}

///summary

///特征周期值

////summary

privatedoubleModelTg{set;get;}

///summary

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

////summary

privatedoubleModelAfaMax{set;get;}

///summary

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

////summary

privateboolis6Horizontal{set;get;}

///summary

///反应谱曲线

////summary

privateListSpectrumParamSpectrumValues{set;get;}

}

函数指针Func及Action

//5Tg到6.0规范公式

Funcdouble,doublegetAfa=subPeriod=

{

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

};

……………

/*省略*/

………………

//Tg到5Tg

elseif(period=5*this.ModelTg)

returnMath.Pow(this.ModelTg/period,this.Gamma)*this.Factor2*this.ModelAfaMax;

//6s内

elseif(period=6)returngetAfa(period);

//6s外

elsereturnthis.is6Horizontal?getAfa(6):getAfa(period);

简单LINQ:form,where,select

///summary

///反应谱列表

////summary

publicListGBCodeSpectrumSpectrumList

{

get

{

return(fromspectruminthis.spectrumList

selectspectrum).ToList();

}

}

反射的使用

///summary

///获得反应谱结果

////summary

///paramname="propertyName"属性名称/param

///returns属性值列表/returns

publicListdoubleGetValueList(stringpropertyName)

{

returnthis.SpectrumValues.GetPropertyList(propertyName).ConvertAll(d=(double)d);

}

控件的数据绑定

//获得勾选的对象

varspectrumObjs=this.SpectrumCheckListbox.GetObjects().ConvertAll(s=(GBCodeSpectrum)s);

//获得数据

vardata=this.Spectrums.GetData(spectrumObjs);

//修改表格

this.SpectrumDataGridView.AddDatas(data);

//绘图

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

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

精彩回顾:

OpenSEESDaysEurasiainPolyU

年精选推送集锦

Python效率测试与调用.Net的基本方法

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

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

YJKtoOpenSees:框架结构算例验证

YJKtoOpenSees:剪力墙结构算例验证PBSD

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

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

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

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

YTP导模工具使用手册

智能化的结构弹塑性分析全套解决方案

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

与国家高规对比浅谈反应谱的修正与完善

性能设计基本方法与PBSD的实现

OpenSees

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

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

24类纤维截面剖分TCL函数

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

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

应力元纤维单元的LocalizationIssues

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

浅析剪力墙宏观单元:MVLEM

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

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

浅析迭代(一)

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

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

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

PM截面分析实例

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

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

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

工具

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

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

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

WilsonWu

1
查看完整版本: 编程基于C绘制反应谱曲线SRP第一