📄 baseelement.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 + -