Skip to content

Commit

Permalink
Merge pull request OpenSees#1430 from mhscott/oohysteretic
Browse files Browse the repository at this point in the history
Adding object broker functions for hysteretic components
  • Loading branch information
mhscott authored May 19, 2024
2 parents 205b5c9 + 039dd7e commit 279db20
Show file tree
Hide file tree
Showing 5 changed files with 520 additions and 4 deletions.
18 changes: 18 additions & 0 deletions SRC/actor/objectBroker/FEM_ObjectBroker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,24 @@ FEM_ObjectBroker::getNewHystereticBackbone(int classTag)
return 0;
}

UnloadingRule *
FEM_ObjectBroker::getNewUnloadingRule(int classTag)
{
return 0;
}

StiffnessDegradation *
FEM_ObjectBroker::getNewStiffnessDegradation(int classTag)
{
return 0;
}

StrengthDegradation *
FEM_ObjectBroker::getNewStrengthDegradation(int classTag)
{
return 0;
}

UniaxialMaterial *
FEM_ObjectBroker::getNewUniaxialMaterial(int classTag)
{
Expand Down
7 changes: 7 additions & 0 deletions SRC/actor/objectBroker/FEM_ObjectBroker.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ class SectionForceDeformation;
class NDMaterial;
class Fiber;
class FrictionModel;

class HystereticBackbone;
class UnloadingRule;
class StiffnessDegradation;
class StrengthDegradation;

class ConvergenceTest;
class GroundMotion;
Expand Down Expand Up @@ -128,6 +132,9 @@ class FEM_ObjectBroker
virtual FrictionModel *getNewFrictionModel(int classTag);

virtual HystereticBackbone *getNewHystereticBackbone(int classTag);
virtual UnloadingRule *getNewUnloadingRule(int classTag);
virtual StiffnessDegradation *getNewStiffnessDegradation(int classTag);
virtual StrengthDegradation *getNewStrengthDegradation(int classTag);

virtual ConvergenceTest *getNewConvergenceTest(int classTag);
virtual LoadPattern *getNewLoadPattern(int classTag);
Expand Down
166 changes: 165 additions & 1 deletion SRC/actor/objectBroker/FEM_ObjectBrokerAllClasses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@
#include "HardeningMaterial.h"
#include "HystereticMaterial.h"
#include "HystereticSMMaterial.h"
#include "OOHystereticMaterial.h"
#include "EPPGapMaterial.h"
#include "ViscousMaterial.h"
#include "ViscousDamper.h"
Expand Down Expand Up @@ -300,7 +301,41 @@
#include "frictionBearing/frictionModel/VelDepMultiLinear.h"
#include "frictionBearing/frictionModel/VelNormalFrcDep.h"

#include "CappedBackbone.h"
#include "LinearCappedBackbone.h"
#include "MaterialBackbone.h"
#include "ArctangentBackbone.h"
#include "TrilinearBackbone.h"
#include "MultilinearBackbone.h"
#include "ManderBackbone.h"
//#include "KentParkBackbone.h"
#include "RaynorBackbone.h"
#include "ReeseStiffClayBelowWS.h"
#include "ReeseStiffClayAboveWS.h"
#include "ReeseSoftClayBackbone.h"
#include "ReeseSandBackbone.h"
#include "VuggyLimestone.h"
#include "CementedSoil.h"
#include "WeakRock.h"
#include "LiquefiedSand.h"

#include "ConstantUnloadingRule.h"
#include "TakedaUnloadingRule.h"
#include "EnergyUnloadingRule.h"
#include "KarsanUnloadingRule.h"

#include "ConstantStiffnessDegradation.h"
#include "DuctilityStiffnessDegradation.h"
#include "EnergyStiffnessDegradation.h"
#include "PincheiraStiffnessDegradation.h"

#include "ConstantStrengthDegradation.h"
#include "ACIStrengthDegradation.h"
#include "DuctilityStrengthDegradation.h"
#include "PetrangeliStrengthDegradation.h"
#include "EnergyStrengthDegradation.h"
#include "SectionStrengthDegradation.h"


// element header files
#include "Element.h"
Expand Down Expand Up @@ -1454,17 +1489,143 @@ HystereticBackbone *
FEM_ObjectBrokerAllClasses::getNewHystereticBackbone(int classTag)
{
switch (classTag) {
case BACKBONE_TAG_Capped:
return new CappedBackbone();

case BACKBONE_TAG_LinearCapped:
return new LinearCappedBackbone();

case BACKBONE_TAG_Material:
return new MaterialBackbone();

case BACKBONE_TAG_Arctangent:
return new ArctangentBackbone();

case BACKBONE_TAG_Trilinear:
return new TrilinearBackbone();

case BACKBONE_TAG_Multilinear:
return new MultilinearBackbone();

case BACKBONE_TAG_Mander:
return new ManderBackbone();

// case BACKBONE_TAG_KentPark:
//return new KentParkBackbone();

case BACKBONE_TAG_Raynor:
return new RaynorBackbone();

case BACKBONE_TAG_ReeseStiffClayBelowWS:
return new ReeseStiffClayBelowWS();

case BACKBONE_TAG_ReeseStiffClayAboveWS:
return new ReeseStiffClayAboveWS();

case BACKBONE_TAG_ReeseSoftClay:
return new ReeseSoftClayBackbone();

case BACKBONE_TAG_ReeseSand:
return new ReeseSandBackbone();

case BACKBONE_TAG_VuggyLimestone:
return new VuggyLimestone();

case BACKBONE_TAG_CementedSoil:
return new CementedSoil();

case BACKBONE_TAG_WeakRock:
return new WeakRock();

case BACKBONE_TAG_LiquefiedSand:
return new LiquefiedSand();

default:
opserr << "FEM_ObjectBrokerAllClasses::getHystereticBackbone - ";
opserr << "FEM_ObjectBrokerAllClasses::getNewHystereticBackbone - ";
opserr << " - no HystereticBackbone type exists for class tag ";
opserr << classTag << endln;
return 0;
}
}

UnloadingRule *
FEM_ObjectBrokerAllClasses::getNewUnloadingRule(int classTag)
{
switch (classTag) {
case DEG_TAG_UNLOAD_Constant:
return new ConstantUnloadingRule();

case DEG_TAG_UNLOAD_Takeda:
return new TakedaUnloadingRule();

case DEG_TAG_UNLOAD_Energy:
return new EnergyUnloadingRule();

case DEG_TAG_UNLOAD_Karsan:
return new KarsanUnloadingRule();

default:
opserr << "FEM_ObjectBrokerAllClasses::getNewUnloadingRule - ";
opserr << " - no UnloadingRule type exists for class tag ";
opserr << classTag << endln;
return 0;
}
}

StiffnessDegradation *
FEM_ObjectBrokerAllClasses::getNewStiffnessDegradation(int classTag)
{
switch (classTag) {
case DEG_TAG_STIFF_Constant:
return new ConstantStiffnessDegradation();

case DEG_TAG_STIFF_Ductility:
return new DuctilityStiffnessDegradation();

case DEG_TAG_STIFF_Energy:
return new EnergyStiffnessDegradation();

case DEG_TAG_STIFF_Pincheira:
return new PincheiraStiffnessDegradation();

default:
opserr << "FEM_ObjectBrokerAllClasses::getStiffnessDegradation - ";
opserr << " - no StiffnessDegradation type exists for class tag ";
opserr << classTag << endln;
return 0;
}
}

StrengthDegradation *
FEM_ObjectBrokerAllClasses::getNewStrengthDegradation(int classTag)
{
switch (classTag) {
case DEG_TAG_STRENGTH_Constant:
return new ConstantStrengthDegradation();

case DEG_TAG_STRENGTH_Ductility:
return new DuctilityStrengthDegradation();

case DEG_TAG_STRENGTH_Petrangeli:
return new PetrangeliStrengthDegradation();

case DEG_TAG_STRENGTH_Energy:
return new EnergyStrengthDegradation();

case DEG_TAG_STRENGTH_Section:
return new SectionStrengthDegradation();

case DEG_TAG_STRENGTH_ACI:
return new ACIStrengthDegradation();

default:
opserr << "FEM_ObjectBrokerAllClasses::getStrengthDegradation - ";
opserr << " - no StrengthDegradation type exists for class tag ";
opserr << classTag << endln;
return 0;
}
}

UniaxialMaterial *
FEM_ObjectBrokerAllClasses::getNewUniaxialMaterial(int classTag)
{
Expand Down Expand Up @@ -1632,6 +1793,9 @@ FEM_ObjectBrokerAllClasses::getNewUniaxialMaterial(int classTag)
case MAT_TAG_HystereticSM:
return new HystereticSMMaterial();

case MAT_TAG_OOHysteretic:
return new OOHystereticMaterial();

case MAT_TAG_ModIMKPeakOriented:
return new ModIMKPeakOriented();

Expand Down
3 changes: 3 additions & 0 deletions SRC/actor/objectBroker/FEM_ObjectBrokerAllClasses.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ class FEM_ObjectBrokerAllClasses : public FEM_ObjectBroker
FrictionModel *getNewFrictionModel(int classTag);

HystereticBackbone *getNewHystereticBackbone(int classTag);
UnloadingRule *getNewUnloadingRule(int classTag);
StiffnessDegradation *getNewStiffnessDegradation(int classTag);
StrengthDegradation *getNewStrengthDegradation(int classTag);

ConvergenceTest *getNewConvergenceTest(int classTag);
LoadPattern *getNewLoadPattern(int classTag);
Expand Down
Loading

0 comments on commit 279db20

Please sign in to comment.