Skip to content

Commit

Permalink
Merge pull request #1005 from mhscott/responseSpectrum
Browse files Browse the repository at this point in the history
Error handling with responseSpectrum command
  • Loading branch information
fmckenna committed Oct 1, 2022
2 parents 2d59388 + 8be0548 commit c0a01bc
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 12 deletions.
39 changes: 32 additions & 7 deletions SRC/analysis/analysis/ResponseSpectrumAnalysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,12 @@ OPS_ResponseSpectrumAnalysis(void)
double scale = 1.0;

// make sure eigenvalue and modal properties have been called before
const auto& modal_props = theAnalysisModel->getDomainPtr()->getModalProperties();
//const auto& modal_props = theAnalysisModel->getDomainPtr()->getModalProperties();
DomainModalProperties modal_props;
if (theAnalysisModel->getDomainPtr()->getModalProperties(modal_props) < 0) {
opserr << "OPS_ResponseSpectrumAnalysis - eigen and modalProperties have not been called" << endln;
return -1;
}
int ndf = modal_props.totalMass().Size();

// parse
Expand Down Expand Up @@ -190,7 +195,12 @@ void ResponseSpectrumAnalysis::analyze()
Domain* domain = m_model->getDomainPtr();

// get the modal properties
const DomainModalProperties& mp = domain->getModalProperties();
//const DomainModalProperties& mp = domain->getModalProperties();
DomainModalProperties mp;
if (domain->getModalProperties(mp) < 0) {
opserr << "ResponseSpectrumAnalysis::analyze() - failed to get modal properties" << endln;
return;
}

// size info
int num_eigen = domain->getEigenvalues().Size();
Expand Down Expand Up @@ -227,7 +237,12 @@ void ResponseSpectrumAnalysis::analyze(int mode_id)
Domain* domain = m_model->getDomainPtr();

// get the modal properties
const DomainModalProperties& mp = domain->getModalProperties();
//const DomainModalProperties& mp = domain->getModalProperties();
DomainModalProperties mp;
if (domain->getModalProperties(mp) < 0) {
opserr << "ResponseSpectrumAnalysis::analyze(mode_id) - failed to get modal properties" << endln;
return;
}

// size info
int num_eigen = domain->getEigenvalues().Size();
Expand Down Expand Up @@ -257,8 +272,13 @@ void ResponseSpectrumAnalysis::check()
Domain* domain = m_model->getDomainPtr();

// get the modal properties
const DomainModalProperties& mp = domain->getModalProperties();

//const DomainModalProperties& mp = domain->getModalProperties();
DomainModalProperties mp;
if (domain->getModalProperties(mp) < 0) {
opserr << "ResponseSpectrumAnalysis::check() - failed to get modal properties" << endln;
return;
}

// number of eigen-modes
int num_eigen = domain->getEigenvalues().Size();
if (num_eigen < 1)
Expand Down Expand Up @@ -320,8 +340,13 @@ void ResponseSpectrumAnalysis::solveMode()
Domain* domain = m_model->getDomainPtr();

// get the modal properties
const DomainModalProperties& mp = domain->getModalProperties();

//const DomainModalProperties& mp = domain->getModalProperties();
DomainModalProperties mp;
if (domain->getModalProperties(mp) < 0) {
opserr << "ResponseSpectrumAnalysis::solveMode() - failed to get modal properties" << endln;
return;
}

// size info
int ndf = mp.totalMass().Size();

Expand Down
11 changes: 7 additions & 4 deletions SRC/domain/domain/Domain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2225,13 +2225,16 @@ void Domain::unsetModalProperties(void)
}
}

const DomainModalProperties& Domain::getModalProperties(void) const
int Domain::getModalProperties(DomainModalProperties &dmp) const
{
if (theModalProperties == 0) {
opserr << "Domain::getModalProperties - DomainModalProperties were never set\n";
exit(-1);
opserr << "Domain::getModalProperties - DomainModalProperties were never set" << endln;
return -1;
}
else {
dmp = *theModalProperties;
return 0;
}
return *theModalProperties;
}

int
Expand Down
2 changes: 1 addition & 1 deletion SRC/domain/domain/Domain.h
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ class Domain
virtual double getTimeEigenvaluesSet(void);
void setModalProperties(const DomainModalProperties& dmp);
void unsetModalProperties(void);
const DomainModalProperties& getModalProperties(void) const;
int getModalProperties(DomainModalProperties & dmp) const;
int setModalDampingFactors(Vector *, bool inclModalMatrix = false);
const Vector *getModalDampingFactors(void);
bool inclModalDampingMatrix(void);
Expand Down

0 comments on commit c0a01bc

Please sign in to comment.