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

📄 oopfedoc.cpp

📁 一个计算悬臂梁的有限元vc源码
💻 CPP
字号:
// OOPFEDoc.cpp : implementation of the COOPFEDoc class
//

#include "stdafx.h"
#include "OOPFE.h"
#include "GlobalElement.h"
#include "DlgModeAnalysisOptions.h"
#include "DlgDynamicLoadOptions.h"
#include "OOPFEDoc.h"

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

#define DISPLAY_DATA 1
#define DISPLAY_ELEMENT 2
#define DISPLAY_MOMENT 3
#define DISPLAY_SHEAR 4
#define DISPLAY_DEFORMATION 5
#define DISPLAY_TSTRESS 6
#define DISPLAY_CSTRESS 7
#define DISPLAY_MODE 8

#define CONSISTENT_MASS 0
#define LUMP_MASS 1

#define DYNAMIC_INSTANT_LOAD 0
#define DYNAMIC_SEISMIC_LOAD 1

/////////////////////////////////////////////////////////////////////////////
// COOPFEDoc

IMPLEMENT_DYNCREATE(COOPFEDoc, CDocument)

BEGIN_MESSAGE_MAP(COOPFEDoc, CDocument)
	//{{AFX_MSG_MAP(COOPFEDoc)
	ON_COMMAND(ID_ANALYSIS_LOADING, OnAnalysisLoading)
	ON_COMMAND(ID_OUTPUT_DATA, OnOutputData)
	ON_COMMAND(ID_ANALYSIS_MODE, OnAnalysisMode)
	ON_COMMAND(ID_ANALYSIS_MODE_SUPERPOSITION, OnAnalysisModeSuperposition)
	ON_COMMAND(ID_ANALYSIS_NEWMARK, OnAnalysisNewmark)
	ON_COMMAND(ID_ANALYSIS_WILSON, OnAnalysisWilson)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COOPFEDoc construction/destruction

COOPFEDoc::COOPFEDoc()
{
	// TODO: add one-time construction code here
	m_iDisplay=0;
	m_iCurMode=0;
}

COOPFEDoc::~COOPFEDoc()
{
}

BOOL COOPFEDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// COOPFEDoc serialization

void COOPFEDoc::Serialize(CArchive& ar)
{
	char cBuf;
	int nChar,loop;
	
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
		CFile* pfin = ar.GetFile();
		nChar=pfin->GetLength();
		m_sData.GetBufferSetLength(nChar);
		for(loop=0;loop<nChar;loop++){
			ar>>cBuf;
			m_sData.SetAt(loop,cBuf);
		}
		m_glEle.DataInput(m_sData);
		m_bNew=true;
		m_iDisplay=DISPLAY_ELEMENT;
	}
}

/////////////////////////////////////////////////////////////////////////////
// COOPFEDoc diagnostics

#ifdef _DEBUG
void COOPFEDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void COOPFEDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// COOPFEDoc commands

void COOPFEDoc::OnAnalysisLoading() 
{
	// TODO: Add your command handler code here
	m_sData.Empty();
	m_glEle.Loading();
	m_iDisplay=DISPLAY_DEFORMATION;
	UpdateAllViews(NULL);
}

void COOPFEDoc::OnOutputData() 
{
	// TODO: Add your command handler code here
	CString sFileName;
	ofstream fout;
	CFileDialog dlg(FALSE);
	char sFilter[]="All file(*.*)\0*.*\0\0";
	dlg.m_ofn.lpstrFilter=sFilter;

	if(dlg.DoModal()==IDOK){
		sFileName=dlg.GetPathName();
		if(sFileName.GetLength()==0) return;
		fout.open(sFileName);
	}
	m_glEle.OutputData(fout);
	fout.close();
}

void COOPFEDoc::OnAnalysisMode() 
{
	// TODO: Add your command handler code here
	CDlgModeAnalysisOptions dlgModeAnalysisOptions;
	dlgModeAnalysisOptions.m_iRadioMassMatrixType=m_glEle.m_iMassMatrixType;
	dlgModeAnalysisOptions.m_nEditMode=m_glEle.m_nMode;

	if(dlgModeAnalysisOptions.DoModal()!=IDOK) return;
	m_glEle.m_iMassMatrixType=dlgModeAnalysisOptions.m_iRadioMassMatrixType;
	m_glEle.m_nMode=dlgModeAnalysisOptions.m_nEditMode;
	m_sData.Empty();
	m_glEle.ModeAnalysis();
	m_iCurMode=0;
	m_iDisplay=DISPLAY_MODE;
	UpdateAllViews(NULL);
}

void COOPFEDoc::OnAnalysisModeSuperposition() 
{
	// TODO: Add your command handler code here
	CDlgDynamicLoadOptions dlgDynamicLoadOptions;
	dlgDynamicLoadOptions.m_iRadioDynamicLoadType=m_glEle.m_iDynamicLoadType;
	dlgDynamicLoadOptions.m_dEditDampRatio=m_glEle.m_adDampRatio[0];
	dlgDynamicLoadOptions.m_dEditDampRatio1=m_glEle.m_adDampRatio[1];
	dlgDynamicLoadOptions.m_dEditTimeStep=m_glEle.m_dTimeStep;
	dlgDynamicLoadOptions.m_dEditResponseDuration=m_glEle.m_dResponseDuration;
	dlgDynamicLoadOptions.m_sEditGroundAccFile=m_glEle.m_sGroundAccFile;
	dlgDynamicLoadOptions.m_dEditPeakAcc=m_glEle.m_dPeakAcc;
	dlgDynamicLoadOptions.m_dEditLoadDuration=m_glEle.m_dLoadDuration;
	if(dlgDynamicLoadOptions.DoModal()!=IDOK) return;
	m_glEle.m_adDampRatio[0]=dlgDynamicLoadOptions.m_dEditDampRatio;
	m_glEle.m_adDampRatio[1]=dlgDynamicLoadOptions.m_dEditDampRatio1;
	m_glEle.m_dTimeStep=dlgDynamicLoadOptions.m_dEditTimeStep;
	m_glEle.m_dResponseDuration=dlgDynamicLoadOptions.m_dEditResponseDuration;
	m_glEle.m_iDynamicLoadType=dlgDynamicLoadOptions.m_iRadioDynamicLoadType;
	m_glEle.m_sGroundAccFile=dlgDynamicLoadOptions.m_sEditGroundAccFile;
	m_glEle.m_dPeakAcc=dlgDynamicLoadOptions.m_dEditPeakAcc;
	m_glEle.m_dLoadDuration=dlgDynamicLoadOptions.m_dEditLoadDuration;
	m_glEle.m_iDynamicLoadType=dlgDynamicLoadOptions.m_iRadioDynamicLoadType;
	m_sData.Empty();
	if(!m_glEle.m_bFlagModeAnalyzed){
		m_glEle.ModeAnalysis();
	}
	m_glEle.ModeSuperposition();
}


void COOPFEDoc::OnAnalysisNewmark() 
{
	// TODO: Add your command handler code here
	CDlgDynamicLoadOptions dlgDynamicLoadOptions;
	dlgDynamicLoadOptions.m_iRadioDynamicLoadType=m_glEle.m_iDynamicLoadType;
	dlgDynamicLoadOptions.m_dEditDampRatio=m_glEle.m_adDampRatio[0];
	dlgDynamicLoadOptions.m_dEditDampRatio1=m_glEle.m_adDampRatio[1];
	dlgDynamicLoadOptions.m_dEditTimeStep=m_glEle.m_dTimeStep;
	dlgDynamicLoadOptions.m_dEditResponseDuration=m_glEle.m_dResponseDuration;
	dlgDynamicLoadOptions.m_sEditGroundAccFile=m_glEle.m_sGroundAccFile;
	dlgDynamicLoadOptions.m_dEditPeakAcc=m_glEle.m_dPeakAcc;
	dlgDynamicLoadOptions.m_dEditLoadDuration=m_glEle.m_dLoadDuration;
	dlgDynamicLoadOptions.m_dEditNewmarkGama=m_glEle.m_dNewmarkGama;
	dlgDynamicLoadOptions.m_dEditNewmarkBeta=m_glEle.m_dNewmarkBeta;
	if(dlgDynamicLoadOptions.DoModal()!=IDOK) return;
	m_glEle.m_adDampRatio[0]=dlgDynamicLoadOptions.m_dEditDampRatio;
	m_glEle.m_adDampRatio[1]=dlgDynamicLoadOptions.m_dEditDampRatio1;
	m_glEle.m_dTimeStep=dlgDynamicLoadOptions.m_dEditTimeStep;
	m_glEle.m_dResponseDuration=dlgDynamicLoadOptions.m_dEditResponseDuration;
	m_glEle.m_sGroundAccFile=dlgDynamicLoadOptions.m_sEditGroundAccFile;
	m_glEle.m_dPeakAcc=dlgDynamicLoadOptions.m_dEditPeakAcc;
	m_glEle.m_dLoadDuration=dlgDynamicLoadOptions.m_dEditLoadDuration;
	m_glEle.m_iDynamicLoadType=dlgDynamicLoadOptions.m_iRadioDynamicLoadType;
	m_glEle.m_dNewmarkGama=dlgDynamicLoadOptions.m_dEditNewmarkGama;
	m_glEle.m_dNewmarkBeta=dlgDynamicLoadOptions.m_dEditNewmarkBeta;
	m_sData.Empty();
	if(!m_glEle.m_bFlagModeAnalyzed){
		m_glEle.ModeAnalysis();
	}
	m_glEle.NewmarkMethod();	
}

void COOPFEDoc::OnAnalysisWilson() 
{
	// TODO: Add your command handler code here
	CDlgDynamicLoadOptions dlgDynamicLoadOptions;
	dlgDynamicLoadOptions.m_iRadioDynamicLoadType=m_glEle.m_iDynamicLoadType;
	dlgDynamicLoadOptions.m_dEditDampRatio=m_glEle.m_adDampRatio[0];
	dlgDynamicLoadOptions.m_dEditDampRatio1=m_glEle.m_adDampRatio[1];
	dlgDynamicLoadOptions.m_dEditTimeStep=m_glEle.m_dTimeStep;
	dlgDynamicLoadOptions.m_dEditResponseDuration=m_glEle.m_dResponseDuration;
	dlgDynamicLoadOptions.m_sEditGroundAccFile=m_glEle.m_sGroundAccFile;
	dlgDynamicLoadOptions.m_dEditPeakAcc=m_glEle.m_dPeakAcc;
	dlgDynamicLoadOptions.m_dEditLoadDuration=m_glEle.m_dLoadDuration;
	dlgDynamicLoadOptions.m_dEditWilsonXita=m_glEle.m_dWilsonXita;
	if(dlgDynamicLoadOptions.DoModal()!=IDOK) return;
	m_glEle.m_adDampRatio[0]=dlgDynamicLoadOptions.m_dEditDampRatio;
	m_glEle.m_adDampRatio[1]=dlgDynamicLoadOptions.m_dEditDampRatio1;
	m_glEle.m_dTimeStep=dlgDynamicLoadOptions.m_dEditTimeStep;
	m_glEle.m_dResponseDuration=dlgDynamicLoadOptions.m_dEditResponseDuration;
	m_glEle.m_sGroundAccFile=dlgDynamicLoadOptions.m_sEditGroundAccFile;
	m_glEle.m_dPeakAcc=dlgDynamicLoadOptions.m_dEditPeakAcc;
	m_glEle.m_dLoadDuration=dlgDynamicLoadOptions.m_dEditLoadDuration;
	m_glEle.m_iDynamicLoadType=dlgDynamicLoadOptions.m_iRadioDynamicLoadType;
	m_glEle.m_dWilsonXita=dlgDynamicLoadOptions.m_dEditWilsonXita;
	m_sData.Empty();
	if(!m_glEle.m_bFlagModeAnalyzed){
		m_glEle.ModeAnalysis();
	}
	m_glEle.WilsonMethod();		
}

⌨️ 快捷键说明

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