diff --git a/SRC/actor/objectBroker/FEM_ObjectBrokerAllClasses.cpp b/SRC/actor/objectBroker/FEM_ObjectBrokerAllClasses.cpp index cc55bfac50..880bb673c4 100644 --- a/SRC/actor/objectBroker/FEM_ObjectBrokerAllClasses.cpp +++ b/SRC/actor/objectBroker/FEM_ObjectBrokerAllClasses.cpp @@ -57,7 +57,8 @@ // uniaxial material model header files #include "ElasticBilin.h" -#include "BoucWenMaterial.h" //SAJalali +#include "BoucWenMaterial.h" +#include "BoucWenInfill.h" #include "SPSW02.h" //SAJalali #include "ElasticMaterial.h" #include "ElasticMultiLinear.h" @@ -71,6 +72,7 @@ #include "TensionOnlyMaterial.h" #include "ASD_SMA_3K.h" #include "Concrete01.h" +#include "Concrete01WithSITC.h" #include "Concrete02.h" #include "Concrete02IS.h" #include "Concrete04.h" @@ -1394,7 +1396,9 @@ FEM_ObjectBrokerAllClasses::getNewUniaxialMaterial(int classTag) case MAT_TAG_SPSW02: return new SPSW02(); // SAJalali case MAT_TAG_BoucWen: - return new BoucWenMaterial(); // SAJalali + return new BoucWenMaterial(); + case MAT_TAG_BoucWenInfill: + return new BoucWenInfill(); case MAT_TAG_ElasticMaterial: return new ElasticMaterial(); @@ -1431,6 +1435,9 @@ FEM_ObjectBrokerAllClasses::getNewUniaxialMaterial(int classTag) case MAT_TAG_Concrete01: return new Concrete01(); + case MAT_TAG_Concrete01WithSITC: + return new Concrete01WithSITC(); + case MAT_TAG_Concrete02: return new Concrete02(); diff --git a/SRC/material/uniaxial/BoucWenInfill.cpp b/SRC/material/uniaxial/BoucWenInfill.cpp index aa5471b250..1cbcc5f79f 100644 --- a/SRC/material/uniaxial/BoucWenInfill.cpp +++ b/SRC/material/uniaxial/BoucWenInfill.cpp @@ -113,7 +113,7 @@ BoucWenInfill::BoucWenInfill(int tag, double p_epsp, double ptolerance, int pMaxNumIter) - :UniaxialMaterial(tag, 0), + :UniaxialMaterial(tag, MAT_TAG_BoucWenInfill), xmax(0.0), xmaxp(0.0), mass(p_mass), alpha(p_alpha), beta0(p_beta0), eta0(p_eta0), n(p_n), k(p_k), xy(p_xy), deltak(p_deltak), deltaf(p_deltaf), psi(p_psi), Zs(p_Zs), As(p_As), epsp(p_epsp), tolerance(ptolerance), maxNumIter(pMaxNumIter) @@ -122,6 +122,15 @@ BoucWenInfill::BoucWenInfill(int tag, this->revertToStart(); } +BoucWenInfill::BoucWenInfill() + :UniaxialMaterial(0, MAT_TAG_BoucWenInfill), + xmax(0.0), xmaxp(0.0), mass(0.0), alpha(0.0), beta0(0.0), eta0(0.0), n(0.0), + k(0.0), xy(0.0), deltak(0.0), deltaf(0.0), psi(0.0), + Zs(0.0), As(0.0), epsp(0.0), tolerance(0.0), maxNumIter(0) +{ + +} + BoucWenInfill::~BoucWenInfill() { @@ -397,13 +406,34 @@ BoucWenInfill::getCopy(void) int BoucWenInfill::sendSelf(int cTag, Channel &theChannel) { - int res = 0; - static Vector data(2); + int res = 0; + static Vector data(1+15+4); data(0) = this->getTag(); - data(1) = xmaxp; + + data(1) = mass; + data(2) = alpha; + data(3) = beta0; + data(4) = eta0; + data(5) = n; + data(6) = k; + data(7) = xy; + data(8) = deltak; + data(9) = deltaf; + data(10) = psi; + data(11) = Zs; + data(12) = As; + data(13) = epsp; + data(14) = tolerance; + data(15) = maxNumIter; + + data(16) = xmaxp; + data(17) = Cstrain; + data(18) = Cz; + data(19) = Ce; + res = theChannel.sendVector(this->getDbTag(), cTag, data); if (res < 0) - opserr << "BoucWenInfill::sendSelf() - failed to send data\n"; + opserr << "BoucWenInfill::sendSelf() - failed to send data" << endln; return res; } @@ -411,11 +441,43 @@ BoucWenInfill::sendSelf(int cTag, Channel &theChannel) int BoucWenInfill::recvSelf(int cTag, Channel &theChannel, FEM_ObjectBroker &theBroker) { - int res = 0; - static Vector data(2); + int res = 0; + static Vector data(20); + res = theChannel.recvVector(this->getDbTag(), cTag, data); + if (res < 0) { + opserr << "BoucWenInfill::recvSelf() - failed to receive Vector" << endln; + return res; + } + this->setTag(int(data(0))); - xmaxp = data(1); + + mass = data(1); + alpha = data(2); + beta0 = data(3); + eta0 = data(4); + n = data(5); + k = data(6); + xy = data(7); + deltak = data(8); + deltaf = data(9); + psi = data(10); + Zs = data(11); + As = data(12); + epsp = data(13); + tolerance = data(14); + maxNumIter = (int)data(15); + + xmaxp = data(16); + Cstrain = data(17); + Cz = data(18); + Ce = data(19); + + xmax = xmaxp; + Tstrain = Cstrain; + Tz = Cz; + Te = Ce; + this->revertToLastCommit(); return res; diff --git a/SRC/material/uniaxial/BoucWenInfill.h b/SRC/material/uniaxial/BoucWenInfill.h index d5c5b9ed6f..54010c0107 100644 --- a/SRC/material/uniaxial/BoucWenInfill.h +++ b/SRC/material/uniaxial/BoucWenInfill.h @@ -63,7 +63,8 @@ class BoucWenInfill : public UniaxialMaterial double tolerance, int maxNumIter); - ~BoucWenInfill(); + BoucWenInfill(); + ~BoucWenInfill(); const char *getClassType(void) const {return "BoucWenMaterial";}; diff --git a/SRC/material/uniaxial/Concrete01WithSITC.cpp b/SRC/material/uniaxial/Concrete01WithSITC.cpp index a623a4b7d5..ec82eb0cc4 100644 --- a/SRC/material/uniaxial/Concrete01WithSITC.cpp +++ b/SRC/material/uniaxial/Concrete01WithSITC.cpp @@ -715,12 +715,12 @@ int Concrete01WithSITC::recvSelf (int commitTag, Channel& theChannel, Cstress = data(9); Ctangent = data(10); - // variables added by WL - data(11) = CmaxStrain; - data(12) = CslopeSITC; - data(13) = CendStrainSITC; - data(14) = Cindex; - data(15) = CsmallStrainIndex; + // variables added by WL + CmaxStrain = data(11); + CslopeSITC = data(12); + CendStrainSITC = data(13); + Cindex = data(14); + CsmallStrainIndex = data(15); // Set trial state variables