# WSAPDemo **Repository Path**: timegis/WSAPDemo ## Basic Information - **Project Name**: WSAPDemo - **Description**: 基于C++开发力学求解器,开放CLR接口,方便测试及入门者使用。 - **Primary Language**: C# - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2022-09-04 - **Last Updated**: 2022-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WSAP结构力学求解器 ### 依赖关系 1. 生成目录需包含以下链接库,WSAPNet.dll及WSAPModelVisible.dll为关键引用项; 2. [WSAP_Release](https://gitee.com/civilwilson/WSAPDemo/tree/master/WSAP_Release)含有稳定版本的依赖项链接库 3. [WSAP_Bin/WSAP_Debug](https://gitee.com/civilwilson/WSAPDemo/tree/master/WSAP_Bin/WSAP_Debug)为生成路径 4. 程序运行需依赖VC运行库环境(2015-2019):[vc_redist.x64.exe(点击跳转)](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 依赖 | 简介 | :-------------: | :-------------: | WSAP.dll | 力学求解器核心 | WSAPCLR.dll | 力学求解器核心 | WSAPNet.dll | clr对外接口,关键引用项 | WSAPModelVisible.dll | 拓展方法,关键引用项 | PGMHelper.dll | 编程辅助 | Login.dll | 广州市微望建筑科技有限公司 | Newtonsoft.Json.dll | 序列化与反序列化 | Chart3D.dll | .NET简易三维绘图 | #### 目录 实例 | 简介 | :-------------:| :------------- | [WSAPCantileverColumn](https://gitee.com/civilwilson/WSAPDemo/tree/master/WSAPCantileverColumn) | 悬臂杆模型:P-Delta | [WSAPDemo](https://gitee.com/civilwilson/WSAPDemo/tree/master/WSAPDemo) | 框架结构实例:P-Delta、Eigen、RigidEnd | [BeamLoad](https://gitee.com/civilwilson/WSAPDemo/tree/master/BeamLoad) | 梁荷载测试:LoadType、RigidEnd、Release、MonitorPrt | [MDOF](https://gitee.com/civilwilson/WSAPDemo/tree/master/MDOF) | 多质点模型:AddDOF、Eigen | [LagrangeBeam](https://gitee.com/civilwilson/WSAPDemo/tree/master/LagrangeBeam) | 大变形问题测试 | [SAPRecSlab](https://gitee.com/civilwilson/WSAPDemo/tree/master/SAPRecSlab) | 壳单元测试 | #### 相关推送 1. [【WSAP】结构力学求解器(一):二阶效应分析[开源]](https://mp.weixin.qq.com/s/djyqpL6CKUb5qWhkXz7yQQ) #### 关键接口示意 ```C# //模型初始化 //量纲:N、mm、t var model = new WModelNet(); /// /// WModelNet:添加节点 /// /// 节点编号 /// 节点X坐标 /// 节点Y坐标 /// 节点Z坐标 /// 节点是否约束 /// 节点对象 WNodeNet node = model.AddNode(int tag, double x, double y, double z, bool isFix); /// /// WModelNet:添加单质点 /// 本命令仅适用于多质点模型 /// /// 质量 /// 刚度 /// 是否添加成功 bool isSuccess = model.AddDOF(double mass, double stiffness); /// /// WModelNet:添加节点荷载 /// /// 节点编号 /// 荷载自由度方向 /// 荷载(mm、N) /// 是否添加成功 bool isSuccess = model.AddNodeLoad(int nodeTag, int dof, double load); /// /// WModelNet:添加节点质量 /// /// 节点编号 /// 平动质量 /// 扭转质量 /// 是否添加成功 bool isSuccess = model.SetNodeMass(int nodeTag, double transfMass, double inertiaMass); /// /// WModelNet:添加坐标为Z的所有节点 /// /// Z坐标 /// void model.FixZ(double z); /// /// WModelNet:添加矩形柱单元,默认考虑P-Delta /// 截面局部向量默认高度方向指向全局Y向 /// 默认不考虑刚域 /// /// I端节点编号 /// J端节点编号 /// 截面宽度 /// 截面高度 /// 单元对象 WElementNet column = model.AddRectConcreteColumn(int iNodeTag, int jNodeTag, double width, double height); /// /// WModelNet:添加矩形梁单元,默认不考虑P-Delta /// 截面局部向量默认高度方向指向全局Z向 /// 默认不考虑刚域 /// /// I端节点编号 /// J端节点编号 /// 截面宽度 /// 截面高度 /// 单元对象 WElementNet beam = model.AddRectConcreteBeam(int iNodeTag, int jNodeTag, double width, double height); /// /// WElementNet:修改单元是否考虑P-Delta /// /// 是否考虑P-Delta /// 是否修改成功 bool isSuccess = column.SetPDelta(bool isPDelta); /// /// WElementNet:设定单元杆端弯矩释放类型 /// FrameReleaseEnum.NoRelease:不释放弯矩(默认) /// IRelease:释放i端弯矩 /// JRelease:释放j端弯矩 /// IJRelease:释放ij端弯矩 /// /// 杆端弯矩释放类型 /// 是否修改成功 bool isSuccess = beam.SetReleaseType(FrameReleaseEnum releaseType); /// /// WElementNet:设定单元刚域长度 /// /// i端刚域长度 /// j端刚域长度 /// 是否修改成功 bool isSuccess = beam.SetRigidEndLength(double iLength, double jLength); /// /// WModelNet:对框架单元施加均布荷载(-Z方向) /// 荷载分布形式:---- /// /// 单元编号 /// 均布荷载 /// 是否施加成功 bool isSuccess = model.AddBeamUniformLoad(int elementTag, double gravityUniformLoad); /// /// WModelNet:对框架单元施加点荷载(-Z方向) /// 荷载分布形式:* /// /// 单元编号 /// 点荷载 /// 点荷载施加位置:距I端长度系数 /// 是否施加成功 bool isSuccess = model.AddBeamPointLoad(int elementTag, double gravityLoad, double loadLengthFacotr); /// /// WModelNet:对框架单元施加三角形荷载(-Z方向) /// 荷载分布形式:/\ /// /// 单元编号 /// 三角形荷载峰值 /// 三角形荷载峰值位置:距I端长度系数 /// 是否施加成功 bool isSuccess = model.AddBeamTriangularLoad(int elementTag, double gravityMaxLoad, double maxLoadLengthFacotr); /// /// WModelNet:对框架单元施加梯形荷载(-Z方向) /// 荷载分布形式:/---\ /// /// 单元编号 /// 梯形荷载峰值 /// 梯形荷载峰值峰值起始位置:距I端长度系数 /// 梯形荷载峰值峰值终点位置:距I端长度系数 /// 是否施加成功 bool isSuccess = model.AddBeamTrapezoidLoad(int elementTag, double gravityMaxLoad, double maxLoadLengthFacotrI, double maxLoadLengthFacotrJ); /// /// WModelNet:创建有限元模型 /// /// 是否清空荷载 /// 是否创建成功 bool isSuccess = model.CreateFEModel(bool clearLoadCases); /// /// WModelNet:基于荷载的线性求解器 /// /// 是否求解成功 bool isSuccess = model.DoLinearStaticAnalyze(); /// /// WModelNet:基于荷载的非线性求解器 /// /// 分析步数 /// 是否求解成功 bool isSuccess = model.DoGeneralStaticAnalyze(int stepNumber); /// /// WModelNet:模态分析 /// /// 模态数量 /// 周期列表 List periodList = model.DoEigen(int modeNumber); /// /// WElementNet:获得监测截面的截面力 /// 默认有11个监测截面,当施加有集中荷载时自动扩充监测截面 /// forceType:N Vy Vz My Mz T /// /// 截面力类型 /// 监测截面的截面力列表 List sectionForceList = element.GetSectionForces(FrameLocalForceEnum forceType); /// /// WElementNet:获得监测截面距I端相对位置 /// 默认有11个监测截面,当施加有集中荷载时自动扩充监测截面 /// /// 监测截面的位置列表 List posList = element.GetSectionPosList(); ```