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