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

📄 load.cpp

📁 三维框架梁单元C++版本的源程序 可以使结构力学的概念更上升一个层次
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
//#include "FORCE.h"
#include "Load.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CLoad::CLoad()
{
	//作用荷载的节点数量
	m_nNodeLoadNum_Case1 = 0;
	m_nNodeLoadNum_Case2 = 0;
	//作用荷载的单元数量 
	m_nElemLoadNum_Case1_Dis = 0;
	m_nElemLoadNum_Case2_Dis = 0;
	m_nElemLoadNum_Case1_Cen = 0;
	m_nElemLoadNum_Case2_Cen = 0;

	//预先开设
	m_adJointLoadValue_Case1.SetSize(1);
	m_adJointLoadValue_Case2.SetSize(1);
	m_adElemLoadValue_Case1_Dis.SetSize(1);
	m_adElemLoadValue_Case1_Cen.SetSize(1);
	m_adElemLoadValue_Case2_Dis.SetSize(1);
	m_adElemLoadValue_Case2_Cen.SetSize(1);
}

CLoad::~CLoad()
{}

void CLoad::ReadFile(CString chr)
{
	m_cFilepath = chr;

	//临时变量,读取参数用  
	char str[100]; 
	bool m_bGroup = 0;	
	bool m_bJointLoad = 0;
	bool m_bMemberLoad = 0;
	bool m_bRUN = 0;
	int m_nTemp;
	double m_dTemp;	
	ifstream fin;

	//**********************************荷载组1---节点荷载的读取********************************	
	fin.open(m_cFilepath,ios::in);
	while(!fin.eof())
	{
		fin>>str;
		if(!strcmp(str,"LOAD_CASE_1_START"))
			m_bGroup = 1;	

		//开始读数		
		while(m_bGroup)
		{
			fin>>str;
			if(!strcmp(str,"LOAD_CASE_1_END"))
			{
				m_bGroup = 0;	
				break;
			}
			if(!strcmp(str,"LOAD_CASE_2_START"))
			{
				m_bGroup = 0;	
				break;
			}
			if(!strcmp(str,"NODE_LOAD"))	
				m_bJointLoad = 1;
			while(m_bJointLoad)
			{	
				fin>>str;				
				if(!strcmp(str,"LOAD_CASE_1_END"))
				{
					m_bGroup = 0;
					m_bJointLoad = 0;
					break;
				}
				if(!strcmp(str,"MEMBER_LOAD_CEN"))
				{
					m_bJointLoad = 0;
					break;
				}
				if(!strcmp(str,"MEMBER_LOAD_DIS"))
				{
					m_bJointLoad = 0;
					break;
				}
				if(!strcmp(str,"NODE_LOAD"))
				{
					m_bJointLoad = 0;
					break;
				}
				m_nTemp = atoi(str);
				//试探是否重复编号
				for(int loop1=0;loop1<m_nNodeLoadNum_Case1;loop1++)
				{
					//有同号
					if(m_nTemp == m_adJointLoadValue_Case1[loop1].m_nNodeNO)
					{
						m_nTemp = loop1;
						m_bRUN = 1;
					}
				}
				//是重复编号
				if(m_bRUN)
				{									
					fin>>str;
					if(!strcmp(str,"FX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nTemp].m_dFX += m_dTemp;
					}
					if(!strcmp(str,"FY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nTemp].m_dFY += m_dTemp;
					}
					if(!strcmp(str,"FZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nTemp].m_dFZ += m_dTemp;
					}
					if(!strcmp(str,"MX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nTemp].m_dMX += m_dTemp;
					}
					if(!strcmp(str,"MY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nTemp].m_dMY += m_dTemp;
					}
					if(!strcmp(str,"MZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nTemp].m_dMZ += m_dTemp;
					}
					m_bRUN = 0;
				}
					
				//不是重复编号
				else
				{
					m_nNodeLoadNum_Case1++;		
					m_adJointLoadValue_Case1.SetSize(m_nNodeLoadNum_Case1);					
					m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_nNodeNO = m_nTemp;
					m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dFX = 0;
					m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dFY = 0;
					m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dFZ = 0;
					m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dMX = 0;
					m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dMY = 0;
					m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dMZ = 0;
					fin>>str;
					if(!strcmp(str,"FX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dFX = m_dTemp;
					}
					if(!strcmp(str,"FY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dFY = m_dTemp;
					}
					if(!strcmp(str,"FZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dFZ = m_dTemp;
					}
					if(!strcmp(str,"MX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dMX = m_dTemp;
					}
					if(!strcmp(str,"MY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dMY = m_dTemp;
					}
					if(!strcmp(str,"MZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case1[m_nNodeLoadNum_Case1 - 1].m_dMZ = m_dTemp;
					}
				}
			}				
		}			
	}
	fin.close();

	m_bGroup = 0;	
	m_bJointLoad = 0;
	m_bMemberLoad = 0;
	m_bRUN = 0;

	//**********************************荷载组2---节点荷载的读取********************************
	fin.open(m_cFilepath,ios::in);
	while(!fin.eof())
	{
		fin>>str;
		if(!strcmp(str,"LOAD_CASE_2_START"))
			m_bGroup = 1;	

		//开始读数		
		while(m_bGroup)
		{
			fin>>str;
			if(!strcmp(str,"LOAD_CASE_2_END"))
			{
				m_bGroup = 0;	
				break;
			}			
			if(!strcmp(str,"NODE_LOAD"))	
				m_bJointLoad = 1;
			while(m_bJointLoad)
			{	
				fin>>str;				
				if(!strcmp(str,"LOAD_CASE_2_END"))
				{
					m_bGroup = 0;
					m_bJointLoad = 0;
					break;
				}
				if(!strcmp(str,"MEMBER_LOAD_DIS"))
				{
					m_bGroup = 0;
					m_bJointLoad = 0;
					break;
				}	
				if(!strcmp(str,"MEMBER_LOAD_CEN"))
				{
					m_bJointLoad = 0;
					break;
				}
				if(!strcmp(str,"NODE_LOAD"))
				{
					m_bJointLoad = 0;
					break;
				}
				m_nTemp = atoi(str);
				//试探是否重复编号
				for(int loop1=0;loop1<m_nNodeLoadNum_Case2;loop1++)
				{
					//有同号
					if(m_nTemp == m_adJointLoadValue_Case2[loop1].m_nNodeNO)
					{
						m_nTemp = loop1;
						m_bRUN = 1;
					}
				}
				//是重复编号
				if(m_bRUN)
				{									
					fin>>str;
					if(!strcmp(str,"FX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nTemp].m_dFX += m_dTemp;
					}
					if(!strcmp(str,"FY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nTemp].m_dFY += m_dTemp;
					}
					if(!strcmp(str,"FZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nTemp].m_dFZ += m_dTemp;
					}
					if(!strcmp(str,"MX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nTemp].m_dMX += m_dTemp;
					}
					if(!strcmp(str,"MY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nTemp].m_dMY += m_dTemp;
					}
					if(!strcmp(str,"MZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nTemp].m_dMZ += m_dTemp;
					}
					m_bRUN = 0;
				}
					
				//不是重复编号
				else
				{
					m_nNodeLoadNum_Case2++;		
					m_adJointLoadValue_Case2.SetSize(m_nNodeLoadNum_Case2);					
					m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_nNodeNO = m_nTemp;
					m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dFX = 0;
					m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dFY = 0;
					m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dFZ = 0;
					m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dMX = 0;
					m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dMY = 0;
					m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dMZ = 0;
					fin>>str;
					if(!strcmp(str,"FX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dFX = m_dTemp;
					}
					if(!strcmp(str,"FY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dFY = m_dTemp;
					}
					if(!strcmp(str,"FZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dFZ = m_dTemp;
					}
					if(!strcmp(str,"MX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dMX = m_dTemp;
					}
					if(!strcmp(str,"MY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dMY = m_dTemp;
					}
					if(!strcmp(str,"MZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adJointLoadValue_Case2[m_nNodeLoadNum_Case2 - 1].m_dMZ = m_dTemp;
					}
				}
			}				
		}			
	}
	fin.close();

	m_bGroup = 0;	
	m_bJointLoad = 0;
	m_bMemberLoad = 0;
	m_bRUN = 0;

	//**********************************荷载组1---单元荷载1的读取********************************
	fin.open(m_cFilepath,ios::in);
	while(!fin.eof())
	{
		fin>>str;
		if(!strcmp(str,"LOAD_CASE_1_START"))
			m_bGroup = 1;	

		//开始读数		
		while(m_bGroup)
		{
			fin>>str;
			if(!strcmp(str,"LOAD_CASE_1_END"))
			{
				m_bGroup = 0;
				m_bMemberLoad = 0;
				break;
			}
			if(!strcmp(str,"LOAD_CASE_2_START"))
			{
				m_bGroup = 0;	
				m_bMemberLoad = 0;
				break;
			}
			if(!strcmp(str,"MEMBER_LOAD_DIS"))	
				m_bMemberLoad = 1;
			while(m_bMemberLoad)
			{	
				fin>>str;
				if(!strcmp(str,"NODE_LOAD"))
				{
					m_bMemberLoad = 0;
					m_bGroup = 0;	
					break;
				}
				if(!strcmp(str,"MEMBER_LOAD_CEN"))
				{
					m_bMemberLoad = 0;
					m_bGroup = 0;	
					break;
				}
				if(!strcmp(str,"LOAD_CASE_1_END"))
				{
					m_bGroup = 0;
					m_bMemberLoad = 0;
					break;
				}
				if(!strcmp(str,"MEMBER_LOAD_DIS"))
				{
					m_bGroup = 0;
					m_bJointLoad = 0;
					break;
				}	
				m_nTemp = atoi(str);
				//试探是否重复编号
				for(int loop1=0;loop1<m_nElemLoadNum_Case1_Dis;loop1++)
				{
					//有同号
					if(m_nTemp == m_adElemLoadValue_Case1_Dis[loop1].m_nElementNO)
					{
						m_nTemp = loop1;
						m_bRUN = 1;
					}
				}
				//是重复编号
				if(m_bRUN)
				{									
					fin>>str;
					if(!strcmp(str,"DX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adElemLoadValue_Case1_Dis[m_nTemp].m_dElemForceX += m_dTemp;
					}
					if(!strcmp(str,"DY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adElemLoadValue_Case1_Dis[m_nTemp].m_dElemForceY += m_dTemp;
					}
					if(!strcmp(str,"DZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adElemLoadValue_Case1_Dis[m_nTemp].m_dElemForceZ += m_dTemp;
					}
					m_bRUN = 0;
				}
					
				//不是重复编号
				else
				{
					m_nElemLoadNum_Case1_Dis++;		
					m_adElemLoadValue_Case1_Dis.SetSize(m_nElemLoadNum_Case1_Dis);					
					m_adElemLoadValue_Case1_Dis[m_nElemLoadNum_Case1_Dis - 1].m_nElementNO = m_nTemp;
					m_adElemLoadValue_Case1_Dis[m_nElemLoadNum_Case1_Dis - 1].m_dElemForceX = 0;
					m_adElemLoadValue_Case1_Dis[m_nElemLoadNum_Case1_Dis - 1].m_dElemForceY = 0;
					m_adElemLoadValue_Case1_Dis[m_nElemLoadNum_Case1_Dis - 1].m_dElemForceZ = 0;
					fin>>str;
					if(!strcmp(str,"DX"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adElemLoadValue_Case1_Dis[m_nElemLoadNum_Case1_Dis - 1].m_dElemForceX = m_dTemp;
					}
					if(!strcmp(str,"DY"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adElemLoadValue_Case1_Dis[m_nElemLoadNum_Case1_Dis - 1].m_dElemForceY = m_dTemp;
					}
					if(!strcmp(str,"DZ"))
					{
						fin>>str;
						m_dTemp = atof(str);
						m_adElemLoadValue_Case1_Dis[m_nElemLoadNum_Case1_Dis - 1].m_dElemForceZ = m_dTemp;
					}
				}
			}				
		}			
	}
	fin.close();

	m_bGroup = 0;	
	m_bJointLoad = 0;
	m_bMemberLoad = 0;
	m_bRUN = 0;

//**********************************荷载组1---单元荷载2的读取********************************
	fin.open(m_cFilepath,ios::in);

⌨️ 快捷键说明

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