⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 baseelement.h

📁 三维框架梁单元C++版本的源程序 可以使结构力学的概念更上升一个层次
💻 H
字号:
// BaseElement.h: interface for the CBaseElement class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BASEELEMENT_H__C0B58E03_8860_4869_B87E_95BEB1D8DF85__INCLUDED_)
#define AFX_BASEELEMENT_H__C0B58E03_8860_4869_B87E_95BEB1D8DF85__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//*
#include "Matrix.h"
#include "SparseMatrix.h"
//*
#include "Node.h"
#include "BaseMaterial.h"
#include "BaseRealConstant.h"
#include "load.h"

class CBaseElement  
{
public:
	CBaseElement();
	virtual ~CBaseElement();

public: 
	int m_nElementNum;                                   //单元数量	
	CString m_cFilePath;                                 //读取文件的路径	
	CUIntArray m_aGKBandWith;                            //带宽数组	
	unsigned long *aiGKDiagAdd;                          //对角地址数组	
	CSparseMatrix m_smatGK;                              //总刚度矩阵

public:
	struct BeamElemProValue                              //单元属性大列表
	{
		int m_nElementNo;                                //单元序号

		int m_nElemNode1;                                //节点一
		double m_dX1;
		double m_dY1;
		double m_dZ1;
		int m_nElemNode2;                                //节点二
		double m_dX2;
		double m_dY2;
		double m_dZ2;
		int m_nElemNode3;                                //节点三
		double m_dX3;
		double m_dY3;
		double m_dZ3;

		int m_nEleRelease_I1;                           //自由度释放 i:ux
		int m_nEleRelease_I2;                           //自由度释放 i:uy
		int m_nEleRelease_I3;                           //自由度释放 i:uz
		int m_nEleRelease_I4;                           //自由度释放 i:rotx
		int m_nEleRelease_I5;                           //自由度释放 i:rotx
		int m_nEleRelease_I6;                           //自由度释放 i:rotx		
		//*
		int m_nEleRelease_J1;                           //自由度释放 j:ux
		int m_nEleRelease_J2;                           //自由度释放 j:uy
		int m_nEleRelease_J3;                           //自由度释放 j:uz
		int m_nEleRelease_J4;                           //自由度释放 j:rotx
		int m_nEleRelease_J5;                           //自由度释放 j:rotx
		int m_nEleRelease_J6;                           //自由度释放 j:rotx				                       

		int m_nElementMat;                              //单元对应的材料序号
		double m_E;
		double m_G;
		double m_Miu;

		int m_nElementRC;                               //单元对应的实常数序号		
		double m_L;
		double m_A;
		double m_Ix;
		double m_Iy;
		double m_Iz;
		double m_Faiy;
		double m_Faiz;
	}; 
	CArray<BeamElemProValue, BeamElemProValue&> m_aBeamElemProValue;//单元特性具体的数值

	struct ElemInForce                                              //单元内力即位移
	{
		int m_nElemNo;
		double m_dElemFX[13];
		double m_dElemShearY[13];
		double m_dElemShearZ[13];
		//
		double m_dElemT[13];
		double m_dElemMY[13];
		double m_dElemMZ[13];		
	};
	CArray<ElemInForce,ElemInForce&> m_aElemInForceDef , m_aElemInForceDef_N;

	struct Deflection            //单元的挠度
	{
		int m_nElemNo;
		double m_dDelf_X[13];
		double m_dDelf_Y[13];
		double m_dDelf_Z[13];
	};
	CArray<Deflection,Deflection&> m_aElemDeflection , m_aElemDeflection_N;

	struct SR                 //支座反力
	{
		int m_nNodeNo;
		double m_dSR_X;
		double m_dSR_Y;
		double m_dSR_Z;
		double m_dSR_RX;
		double m_dSR_RY;
		double m_dSR_RZ;
	};
	CArray<SR,SR&> m_nSupportReaction;

public:		
	CArray<CMatrix,CMatrix&> m_CaElemOrigMatrix;                   //单元刚度矩阵数组	
	CArray<CMatrix,CMatrix&> m_CaElemTranFactorMatrix;             //单元转换矩阵因子
	CArray<CMatrix,CMatrix&> m_CaElemTranFactorMatrixT;            //单元转换矩阵因子转置
	CArray<CMatrix,CMatrix&> m_CaElemResultMatrix;                 //单元刚度矩阵(座标转换过)

public:   //虚函数1
	virtual void ReadFile(CString) = 0;                            //读文件
	virtual void GetStiffness() = 0;                               //获取单元刚度矩阵
	virtual void StiffAssemble() = 0;                              //刚度矩阵生成总的函数
private: 
	virtual void FillElementData() = 0;                            //形成单元参数表格
	virtual void OutputParameter() = 0;                            //输出单元参数
	//*
	virtual void FormElemMatrix() = 0;                             //形成局部座标系下的单刚矩阵
	virtual void TranElemMatrix() = 0;                             //单刚矩阵由局部座标向整体座标转化
	//*
	virtual void CalcuGKBandWidth() = 0;                           //计算带宽数组
	virtual void CalcuGKDiagAddress() = 0;                         //计算对角地址数组  
	virtual void SparseMatrixStiffAssemble() = 0;                  //具体组装总刚矩阵
	//*
	virtual void InternalForceInitial() = 0;                       //单元内力初始化

public:
	static CNode *m_pNode;
	static CTypedPtrArray <CPtrArray,CBaseMaterial*> *m_papMaterial;
	static CTypedPtrArray <CPtrArray,CBaseRealConstant*> *m_papBaseRealConstant;
	static CLoad *m_pLoad;
};

#endif // !defined(AFX_BASEELEMENT_H__C0B58E03_8860_4869_B87E_95BEB1D8DF85__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -