Skip to content

Commit

Permalink
Removing exit call and checking for null material pointer
Browse files Browse the repository at this point in the history
  • Loading branch information
mhscott committed Oct 23, 2021
1 parent 8905f5b commit 142689f
Showing 1 changed file with 77 additions and 17 deletions.
94 changes: 77 additions & 17 deletions SRC/material/uniaxial/MultiplierMaterial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ MultiplierMaterial::MultiplierMaterial(int tag, UniaxialMaterial &material, doub

if (theMaterial == 0) {
opserr << "MultiplierMaterial::MultiplierMaterial -- failed to get copy of material\n";
exit(-1);
//exit(-1);
}
}

Expand All @@ -118,79 +118,115 @@ MultiplierMaterial::~MultiplierMaterial()
int
MultiplierMaterial::setTrialStrain(double strain, double strainRate)
{
return theMaterial->setTrialStrain(strain, strainRate);
if (theMaterial)
return theMaterial->setTrialStrain(strain, strainRate);
else
return -1;
}


int
MultiplierMaterial::setTrialStrain(double strain, double temp, double strainRate)
{
return theMaterial->setTrialStrain(strain, temp, strainRate);
if (theMaterial)
return theMaterial->setTrialStrain(strain, temp, strainRate);
else
return -1;
}


double
MultiplierMaterial::getStress(void)
{
return multiplier*theMaterial->getStress();
if (theMaterial)
return multiplier*theMaterial->getStress();
else
return 0.0;
}

double
MultiplierMaterial::getTangent(void)
{
return multiplier*theMaterial->getTangent();
if (theMaterial)
return multiplier*theMaterial->getTangent();
else
return 0.0;
}

double
MultiplierMaterial::getDampTangent(void)
{
return multiplier*theMaterial->getDampTangent();
if (theMaterial)
return multiplier*theMaterial->getDampTangent();
else
return 0.0;
}



double
MultiplierMaterial::getStrain(void)
{
return theMaterial->getStrain();
if (theMaterial)
return theMaterial->getStrain();
else
return 0.0;
}

double
MultiplierMaterial::getStrainRate(void)
{
return theMaterial->getStrainRate();
if (theMaterial)
return theMaterial->getStrainRate();
else
return 0.0;
}

int
MultiplierMaterial::commitState(void)
{
return theMaterial->commitState();
{
if (theMaterial)
return theMaterial->commitState();
else
return -1;
}

int
MultiplierMaterial::revertToLastCommit(void)
{
return theMaterial->revertToLastCommit();
if (theMaterial)
return theMaterial->revertToLastCommit();
else
return -1;
}

int
MultiplierMaterial::revertToStart(void)
{
return theMaterial->revertToStart();
if (theMaterial)
return theMaterial->revertToStart();
else
return -1;
}

UniaxialMaterial *
MultiplierMaterial::getCopy(void)
{
MultiplierMaterial *theCopy =
new MultiplierMaterial(this->getTag(), *theMaterial, multiplier);
MultiplierMaterial *theCopy = 0;
if (theMaterial)
theCopy = new MultiplierMaterial(this->getTag(), *theMaterial, multiplier);

return theCopy;
}

int
MultiplierMaterial::sendSelf(int cTag, Channel &theChannel)
{
if (theMaterial == 0) {
opserr << "MultiplierMaterial::sendSelf() - theMaterial is null, nothing to send\n";
return -1;
}

int dbTag = this->getDbTag();

static ID dataID(3);
Expand Down Expand Up @@ -267,7 +303,10 @@ void
MultiplierMaterial::Print(OPS_Stream &s, int flag)
{
s << "MultiplierMaterial tag: " << this->getTag() << endln;
s << "\tMaterial: " << theMaterial->getTag() << endln;
if (theMaterial)
s << "\tMaterial: " << theMaterial->getTag() << endln;
else
s << "\tMaterial is NULL" << endln;
s << "\tMultiplier: " << multiplier << endln;
}

Expand All @@ -278,7 +317,10 @@ MultiplierMaterial::setParameter(const char **argv, int argc, Parameter &param)
param.setValue(multiplier);
return param.addObject(1,this);
}
return theMaterial->setParameter(argv, argc, param);
if (theMaterial)
return theMaterial->setParameter(argv, argc, param);
else
return -1;
}

int
Expand Down Expand Up @@ -306,6 +348,9 @@ MultiplierMaterial::activateParameter(int paramID)
double
MultiplierMaterial::getStressSensitivity(int gradIndex, bool conditional)
{
if (theMaterial == 0)
return 0.0;

// dsig = dF*sigma + F*dsigma
if (parameterID == 1)
return theMaterial->getStress(); // dF*sigma where dF=1
Expand All @@ -316,12 +361,18 @@ MultiplierMaterial::getStressSensitivity(int gradIndex, bool conditional)
double
MultiplierMaterial::getStrainSensitivity(int gradIndex)
{
return theMaterial->getStrainSensitivity(gradIndex);
if (theMaterial)
return theMaterial->getStrainSensitivity(gradIndex);
else
return 0.0;
}

double
MultiplierMaterial::getInitialTangentSensitivity(int gradIndex)
{
if (theMaterial == 0)
return 0.0;

if (parameterID == 1)
return theMaterial->getInitialTangent();
else
Expand All @@ -331,6 +382,9 @@ MultiplierMaterial::getInitialTangentSensitivity(int gradIndex)
double
MultiplierMaterial::getDampTangentSensitivity(int gradIndex)
{
if (theMaterial == 0)
return 0.0;

if (parameterID == 1)
return theMaterial->getDampTangent();
else
Expand All @@ -340,11 +394,17 @@ MultiplierMaterial::getDampTangentSensitivity(int gradIndex)
double
MultiplierMaterial::getRhoSensitivity(int gradIndex)
{
if (theMaterial == 0)
return 0.0;

return theMaterial->getRhoSensitivity(gradIndex);
}

int
MultiplierMaterial::commitSensitivity(double strainGradient, int gradIndex, int numGrads)
{
if (theMaterial == 0)
return -1;

return theMaterial->commitSensitivity(strainGradient, gradIndex, numGrads);
}

0 comments on commit 142689f

Please sign in to comment.