TransientIntegrator * OPS_NewGeneralizedAlpha(void) { // Pointer to a uniaxial material that will be returned TransientIntegrator *theIntegrator = 0; int argc = OPS_GetNumRemainingInputArgs(); if (argc != 2 && argc != 4) { opserr << "WARNING - incorrect number of args want GeneralizedAlpha $alphaM $alphaF <$gamma $beta>\n"; return 0; } double dData[4]; if (OPS_GetDouble(&argc, dData) != 0) { opserr << "WARNING - invalid args want GeneralizedAlpha $alphaM $alphaF <$gamma $beta>\n"; return 0; } if (argc == 2) theIntegrator = new GeneralizedAlpha(dData[0], dData[1]); else theIntegrator = new GeneralizedAlpha(dData[0], dData[1], dData[2], dData[3]); if (theIntegrator == 0) opserr << "WARNING - out of memory creating GeneralizedAlpha integrator\n"; return theIntegrator; }
TransientIntegrator * OPS_NewHHTGeneralized_TP(void) { // pointer to an integrator that will be returned TransientIntegrator *theIntegrator = 0; int argc = OPS_GetNumRemainingInputArgs(); if (argc != 1 && argc != 4) { opserr << "WARNING - incorrect number of args want HHTGeneralized_TP $rhoInf\n"; opserr << " or HHTGeneralized_TP $alphaI $alphaF $beta $gamma\n"; return 0; } double dData[4]; if (OPS_GetDouble(&argc, dData) != 0) { opserr << "WARNING - invalid args want HHTGeneralized_TP $rhoInf\n"; opserr << " or HHTGeneralized_TP $alphaI $alphaF $beta $gamma\n"; return 0; } if (argc == 1) theIntegrator = new HHTGeneralized_TP(dData[0]); else theIntegrator = new HHTGeneralized_TP(dData[0], dData[1], dData[2], dData[3]); if (theIntegrator == 0) opserr << "WARNING - out of memory creating HHTGeneralized_TP integrator\n"; return theIntegrator; }
void * OPS_HHT(void) { // pointer to an integrator that will be returned TransientIntegrator *theIntegrator = 0; int argc = OPS_GetNumRemainingInputArgs(); if (argc != 1 && argc != 3) { opserr << "WARNING - incorrect number of args want HHT $alpha <$gamma $beta>\n"; return 0; } double dData[3]; if (OPS_GetDouble(&argc, dData) != 0) { opserr << "WARNING - invalid args want HHT $alpha <$gamma $beta>\n"; return 0; } if (argc == 1) theIntegrator = new HHT(dData[0]); else theIntegrator = new HHT(dData[0], dData[1], dData[2]); if (theIntegrator == 0) opserr << "WARNING - out of memory creating HHT integrator\n"; return theIntegrator; }
OPS_Export void * OPS_NewDruckerPragerMaterial(void) { if (numDruckerPragerMaterials == 0) { numDruckerPragerMaterials++; //opserr << "DruckerPrager nDmaterial - Written: K.Petek, P.Mackenzie-Helnwein, P.Arduino, U.Washington\n"; } // Pointer to a uniaxial material that will be returned NDMaterial *theMaterial = 0; int numArgs = OPS_GetNumRemainingInputArgs(); if (numArgs < 12) { opserr << "Want: nDMaterial DruckerPrager tag? K? G? sigma_y? rho? rho_bar? Kinf? Ko? delta1? delta2? H? theta? <massDensity? atm?>" << endln; return 0; } int tag; double dData[14]; int numData = 1; if (OPS_GetInt(&numData, &tag) != 0) { opserr << "WARNING invalid nDMaterial DruckerPrager material tag" << endln; return 0; } if (numArgs == 12) { numData = 11; } else if (numArgs == 13) { numData = 12; } else { numData = 13; } if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid material data for nDMaterial DruckerPrager material with tag: " << tag << endln; return 0; } if (numArgs == 12) { theMaterial = new DruckerPrager(tag, 0, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8], dData[9], dData[10]); } else if (numArgs == 13) { theMaterial = new DruckerPrager(tag, 0, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8], dData[9], dData[10], dData[11]); } else { theMaterial = new DruckerPrager(tag, 0, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8], dData[9], dData[10], dData[11], dData[12]); } if (theMaterial == 0) { opserr << "WARNING ran out of memory for nDMaterial DruckerPrager material with tag: " << tag << endln; } return theMaterial; }
OPS_Export void * OPS_StressDensityMaterial(void) { static int numStressDensity = 0; if(numStressDensity == 0) { opserr << "stressDensity nDMaterial - Written: Saumyasuchi Das, U.Canterbury\n" << endln; numStressDensity++; } NDMaterial *theMaterial = 0; int numArgs = OPS_GetNumRemainingInputArgs(); if (numArgs < 18) { opserr << "ERROR stressDensity nDMaterial: Insufficient mandatory input arguments" << endln; opserr << "WANT: nDmaterial stressDensity tag mDen eNot A n nu a1 b1 a2 b2 a3 b3 fd muNot muCyc sc M patm" endln; return 0; } else if (numArgs > 18 && numArgs < 27) { opserr << "ERROR: stressDensity nDMaterial: Insufficient optional SSL void ratio arguments" << endln; opserr << "ssl1-ssl7, hsl, and pmin must all be specified if defaults are not used" << endln; return 0; } int tag; double dData[26]; int numData = 1; if (OPS_GetInt(&numData, &tag) != 0) { opserr << "WARNING: invalied nDMaterial stressDensity material tag" << endln; return 0; } numData = numArgs-1; if (OPS_GetDouble(&numData, dData) !=0) { opserr << "WARNING: invalid material data for nDMaterial stressDensity with tag: " << tag << endln; return 0; } if (numArgs == 18) { theMaterial = new stressDensity(tag, 0, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8], dData[9], dData[10], dData[11], dData[12], dData[13], dData[14], dData[15], dData[16]); } else if (numArgs == 27) { theMaterial = new stressDensity(tag, 0, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8], dData[9], dData[10], dData[11], dData[12], dData[13], dData[14], dData[15], dData[16], dData[17], dData[18], dData[19], dData[20], dData[21], dData[22], dData[23], dData[24], dData[25]); } if (theMaterial == 0) { opserr << "WARNING: ran out of memory for nDMaterial stressDensity with tag: " << tag << endln; } return theMaterial; }
OPS_Export void * OPS_NewLinearSeries(void) { // Pointer to a uniaxial material that will be returned TimeSeries *theSeries = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); int tag = 0; double cFactor = 1.0; int numData = 0; if (numRemainingArgs != 0) { if (numRemainingArgs == 1 || numRemainingArgs == 3) { numData = 1; if (OPS_GetIntInput(&numData, &tag) != 0) { opserr << "WARNING invalid series tag in LinearSeries tag? <-factor factor?>" << endln; return 0; } numRemainingArgs--; } if (numRemainingArgs > 1) { char argvS[10]; if (OPS_GetString(argvS, 10) != 0) { opserr << "WARNING invalid string in LinearSeries with tag: " << tag << endln; return 0; } numData = 1; if (OPS_GetDouble(&numData, &cFactor) != 0) { opserr << "WARNING invalid factor in LinearSeries with tag: " << tag << endln; return 0; } } } theSeries = new LinearSeries(tag, cFactor); if (theSeries == 0) { opserr << "WARNING ran out of memory creating ConstantTimeSeries with tag: " << tag << "\n"; return 0; } return theSeries; }
TransientIntegrator * OPS_NewAlphaOSGeneralized(void) { // pointer to an integrator that will be returned TransientIntegrator *theIntegrator = 0; int argc = OPS_GetNumRemainingInputArgs(); if (argc != 1 && argc != 2 && argc != 4 && argc != 5) { opserr << "WARNING - incorrect number of args want AlphaOSGeneralized $rhoInf <-updateDomain>\n"; opserr << " or integrator AlphaOSGeneralized $alphaI $alphaF $beta $gamma <-updateDomain>\n"; return 0; } bool updDomFlag = false; double dData[4]; int numData; if (argc < 3) numData = 1; else numData = 4; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING - invalid args want AlphaOSGeneralized $alpha <-updateDomain>\n"; return 0; } if (argc == 2 || argc == 5) { const char *argvLoc = OPS_GetString(); if (strcmp(argvLoc, "-updateDomain") == 0) updDomFlag = true; } if (argc < 3) theIntegrator = new AlphaOSGeneralized(dData[0], updDomFlag); else theIntegrator = new AlphaOSGeneralized(dData[0], dData[1], dData[2], dData[3], updDomFlag); if (theIntegrator == 0) opserr << "WARNING - out of memory creating AlphaOSGeneralized integrator\n"; return theIntegrator; }
void * OPS_AlphaOS(void) { // pointer to an integrator that will be returned TransientIntegrator *theIntegrator = 0; int argc = OPS_GetNumRemainingInputArgs(); if (argc < 1 || argc > 4) { opserr << "WARNING - incorrect number of args want AlphaOS $alpha <-updateElemDisp>\n"; opserr << " or AlphaOS $alpha $beta $gamma <-updateElemDisp>\n"; return 0; } bool updElemDisp = false; double dData[3]; int numData; if (argc < 3) numData = 1; else numData = 3; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING - invalid args want AlphaOS $alpha <-updateElemDisp>\n"; opserr << " or AlphaOS $alpha $beta $gamma <-updateElemDisp>\n"; return 0; } if (argc == 2 || argc == 4) { const char *argvLoc = OPS_GetString(); if (strcmp(argvLoc, "-updateElemDisp") == 0) updElemDisp = true; } if (argc < 3) theIntegrator = new AlphaOS(dData[0], updElemDisp); else theIntegrator = new AlphaOS(dData[0], dData[1], dData[2], updElemDisp); if (theIntegrator == 0) opserr << "WARNING - out of memory creating AlphaOS integrator\n"; return theIntegrator; }
TransientIntegrator * OPS_NewNewmark(void) { // Pointer to a uniaxial material that will be returned TransientIntegrator *theIntegrator = 0; int argc = OPS_GetNumRemainingInputArgs(); if (argc != 2 && argc != 4) { opserr << "WARNING - incorrect number of args want Newmark $gamma $beta <-form $typeUnknown>\n"; return 0; } bool dispFlag = true; double dData[2]; int numData = 2; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING - invalid args want Newmark $gamma $beta <-form $typeUnknown>\n"; return 0; } if (argc == 2) theIntegrator = new Newmark(dData[0], dData[1]); else { char nextString[10]; OPS_GetString(nextString, 10); if (strcmp(nextString,"-form") == 0) { OPS_GetString(nextString, 10); if ((nextString[0] == 'D') || (nextString[0] == 'd')) dispFlag = true; else if ((nextString[0] == 'A') || (nextString[0] == 'a')) dispFlag = false; } theIntegrator = new Newmark(dData[0], dData[1], dispFlag); } if (theIntegrator == 0) opserr << "WARNING - out of memory creating Newmark integrator\n"; return theIntegrator; }
void * OPS_ContactMaterial2DMaterial(void) { if (numContactMaterial2DMaterials == 0) { numContactMaterial2DMaterials++; opserr << "ContactMaterial2D nDmaterial - Written: K.Petek, P.Mackenzie-Helnwein, P.Arduino, U.Washington\n"; } // Pointer to a nDmaterial that will be returned NDMaterial *theMaterial = 0; int numArgs = OPS_GetNumRemainingInputArgs(); if (numArgs < 5) { opserr << "Want: nDMaterial ContactMaterial2D tag? mu? G? c? t?\n"; return 0; } int tag; double dData[4]; int numData = 1; if (OPS_GetInt(&numData, &tag) != 0) { opserr << "WARNING invalid tag for ContactMaterial2D material" << endln; return 0; } numData = 4; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid material data for nDMaterial ContactMaterial2D material with tag: " << tag << endln; return 0; } theMaterial = new ContactMaterial2D(tag, dData[0], dData[1], dData[2], dData[3]); if (theMaterial == 0) { opserr << "WARNING ran out of memory for nDMaterial ContactMaterial2D material with tag: " << tag << endln; } return theMaterial; }
void * OPS_ElasticOrthotropicMaterial(void) { NDMaterial *theMaterial = 0; int numArgs = OPS_GetNumRemainingInputArgs(); if (numArgs < 10) { opserr << "Want: nDMaterial ElasticOrthotropic $tag $Ex $Ey $Ez $vxy $vyz $vzx $Gxy $Gyz $Gzx <$rho>" << endln; return 0; } int iData[1]; double dData[10]; dData[9] = 0.0; int numData = 1; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer tag: nDMaterial ElasticOrthotropic \n"; return 0; } if (numArgs > 10) numData = 10; else numData = 9; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid data: nDMaterial EasticIsotropic : " << iData[0] <<"\n"; return 0; } theMaterial = new ElasticOrthotropicMaterial(iData[0], dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8], dData[9]); return theMaterial; }
void * OPS_J2BeamFiber2dMaterial(void) { NDMaterial *theMaterial = 0; int numArgs = OPS_GetNumRemainingInputArgs(); if (numArgs < 6) { opserr << "Want: nDMaterial J2BeamFiber $tag $E $v $sigmaY $Hiso $Hkin <$rho>" << endln; return 0; } int iData[1]; double dData[6]; dData[5] = 0.0; int numData = 1; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer tag: nDMaterial J2BeamFiber \n"; return 0; } if (numArgs > 6) numData = 6; else numData = 5; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid data: nDMaterial J2BeamFiber : " << iData[0] <<"\n"; return 0; } theMaterial = new J2BeamFiber2d(iData[0], dData[0], dData[1], dData[2], dData[3], dData[4]); return theMaterial; }
void* OPS_NewmarkExplicit(void) { // pointer to an integrator that will be returned TransientIntegrator *theIntegrator = 0; int argc = OPS_GetNumRemainingInputArgs(); if (argc != 1) { opserr << "WARNING - incorrect number of args want NewmarkExplicit $gamma\n"; return 0; } double gamma; if (OPS_GetDouble(&argc, &gamma) != 0) { opserr << "WARNING - invalid args want NewmarkExplicit $gamma\n"; return 0; } theIntegrator = new NewmarkExplicit(gamma); if (theIntegrator == 0) opserr << "WARNING - out of memory creating NewmarkExplicit integrator\n"; return theIntegrator; }
void * OPS_NewElasticIsotropicMaterial(void) { NDMaterial *theMaterial = 0; int numArgs = OPS_GetNumRemainingInputArgs(); if (numArgs < 3) { opserr << "Want: nDMaterial ElasticIsotropic $tag $E $V <$rho>" << endln; return 0; } int iData[1]; double dData[3]; dData[2] = 0.0; int numData = 1; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer tag: nDMaterial EasticIsotropic \n"; return 0; } if (numArgs > 3) numData = 3; else numData = 2; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid data: nDMaterial EasticIsotropic : " << iData[0] <<"\n"; return 0; } theMaterial = new ElasticIsotropicMaterial(iData[0], dData[0], dData[1], dData[2]); return theMaterial; }
OPS_Export void * OPS_NewMinMaxMaterial(void) { // Pointer to a uniaxial material that will be returned UniaxialMaterial *theMaterial = 0; UniaxialMaterial *theOtherMaterial = 0; double minStrain = -1.0e16; double maxStrain = 1.0e16; int iData[2]; int argc = OPS_GetNumRemainingInputArgs(); if (argc < 2) { opserr << "WARNING invalid uniaxialMaterial MinMaxMaterial $tag $otherTag <-min $minStrain> <-max $maxStrain>" << endln; return 0; } int numData = 2; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid uniaxialMaterial MinMaxMaterial $tag $otherTag" << endln; return 0; } theOtherMaterial = OPS_GetUniaxialMaterial(iData[1]); if (theOtherMaterial == 0) { opserr << "WARNING invalid otherTag uniaxialMaterial MinMax tag: " << iData[0] << endln; return 0; } argc = OPS_GetNumRemainingInputArgs(); while (argc > 1) { char argvLoc[10]; if (OPS_GetString(argvLoc, 10) != 0) { opserr << "WARNING invalid string option uniaxialMaterial MinMax tag: " << iData[0] << endln; return 0; } numData = 1; if ((strcmp(argvLoc, "-min") == 0) || (strcmp(argvLoc, "-Min") == 0) || (strcmp(argvLoc, "-MIN") == 0)) { if (OPS_GetDouble(&numData, &minStrain) != 0) { opserr << "WARNING invalid min value uniaxialMaterial MinMax tag: " << iData[0] << endln; return 0; } } else if ((strcmp(argvLoc, "-max") == 0) || (strcmp(argvLoc, "-Max") == 0) || (strcmp(argvLoc, "-MAX") == 0)) { if (OPS_GetDouble(&numData, &maxStrain) != 0) { opserr << "WARNING invalid min value uniaxialMaterial MinMax tag: " << iData[0] << endln; return 0; } } else { opserr << "WARNING invalid option:" << argvLoc << " uniaxialMaterial MinMax tag: " << iData[0] << endln; return 0; } argc = OPS_GetNumRemainingInputArgs(); } // Parsing was successful, allocate the material theMaterial = new MinMaxMaterial(iData[0], *theOtherMaterial, minStrain, maxStrain); if (theMaterial == 0) { opserr << "WARNING could not create uniaxialMaterial of type MinMaxMaterial\n"; return 0; } return theMaterial; }
OPS_Export void * OPS_NewTrussSectionElement() { Element *theElement = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 4) { opserr << "Invalid Args want: element TrussSection $tag $iNode $jNode $sectTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } int iData[4]; double rho = 0.0; int ndm = OPS_GetNDM(); int doRayleigh = 0; // by default rayleigh not done int cMass = 0; // by default use lumped mass matrix int numData = 4; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer (tag, iNode, jNode, sectTag) in element TrussSection " << endln; return 0; } SectionForceDeformation *theSection = OPS_GetSectionForceDeformation(iData[3]); if (theSection == 0) { opserr << "WARNING: Invalid section not found element TrussSection " << iData[0] << " $iNode $jNode " << iData[3] << " <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } numRemainingArgs -= 4; while (numRemainingArgs > 1) { char argvS[15]; if (OPS_GetString(argvS, 15) != 0) { opserr << "WARNING: Invalid optional string element TrussSection " << iData[0] << " $iNode $jNode $sectTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } if (strcmp(argvS,"-rho") == 0) { numData = 1; if (OPS_GetDouble(&numData, &rho) != 0) { opserr << "WARNING Invalid rho in element TrussSection " << iData[0] << " $iNode $jNode $secTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } } else if (strcmp(argvS,"-cMass") == 0) { numData = 1; if (OPS_GetInt(&numData, &cMass) != 0) { opserr << "WARNING: Invalid cMass in element TrussSection " << iData[0] << " $iNode $jNode $sectTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } } else if (strcmp(argvS,"-doRayleigh") == 0) { numData = 1; if (OPS_GetInt(&numData, &doRayleigh) != 0) { opserr << "WARNING: Invalid doRayleigh in element TrussSection " << iData[0] << " $iNode $jNode $sectTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } } else { opserr << "WARNING: Invalid option " << argvS << " in: element TrussSection " << iData[0] << " $iNode $jNode $secTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } numRemainingArgs -= 2; } // now create the TrussSection theElement = new TrussSection(iData[0], ndm, iData[1], iData[2], *theSection, rho, doRayleigh, cMass); if (theElement == 0) { opserr << "WARNING: out of memory: element TrussSection " << iData[0] << " $iNode $jNode $secTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; } return theElement; }
void * OPS_N4BiaxialTruss(void) { Element *theElement = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 7) { opserr << "Invalid Args want: element N4BiaxialTruss $tag $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; return 0; } int iData[5]; //tag, iNode, jNode, iGNode, jGNode double A = 0.0; double rho = 0.0; int matTag1 = 0; int matTag2 = 0; int doRayleigh = 0; int ndm = OPS_GetNDM(); int numData = 5; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer (tag, iNode, jNode, iGNode, jGNode) in element N4BiaxialTruss " << endln; return 0; } numData = 1; if (OPS_GetDouble(&numData, &A) != 0) { opserr << "WARNING: Invalid A: element N4BiaxialTruss " << iData[0] << " $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; return 0; } numData = 1; if (OPS_GetInt(&numData, &matTag1) != 0) { opserr << "WARNING: Invalid matTag1: element N4BiaxialTruss " << iData[0] << " $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; return 0; } UniaxialMaterial *theUniaxialMaterial_1 = OPS_GetUniaxialMaterial(matTag1); if (theUniaxialMaterial_1 == 0) { opserr << "WARNING: Invalid material not found element N4BiaxialTruss " << iData[0] << " $mattag1: " << matTag1 << " \n"; return 0; } numRemainingArgs -= 6; while (numRemainingArgs > 1) { char argvS[15]; if (OPS_GetString(argvS, 15) != 0) { opserr << "WARNING: Invalid optional string element N4BiaxialTruss " << iData[0] << " $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; return 0; } if (strcmp(argvS,"-rho") == 0) { numData = 1; if (OPS_GetDouble(&numData, &rho) != 0) { opserr << "WARNING Invalid rho in element N4BiaxialTruss " << iData[0] << " $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; return 0; } } else if (strcmp(argvS,"-doRayleigh") == 0) { numData = 1; if (OPS_GetInt(&numData, &doRayleigh) != 0) { opserr << "WARNING: Invalid doRayleigh in element N4BiaxialTruss " << iData[0] << " $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; return 0; } } else { opserr << "WARNING: Invalid option " << argvS << " in: element N4BiaxialTruss " << iData[0] << " $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; return 0; } numRemainingArgs -= 2; } //now create the ReinforcedConcretePlaneStress theElement = new N4BiaxialTruss(iData[0], ndm, iData[1], iData[2], iData[3], iData[4], *theUniaxialMaterial_1, A, rho, doRayleigh); if (theElement == 0) { opserr << "WARNING: out of memory: element N4BiaxialTruss " << iData[0] << " $i1Node $j1Node $iG2Node $j2Node $A $matTag1 <-rho $rho> <-doRayleigh $flag>\n"; } return theElement; }
OPS_Export void *OPS_NewPulseSeries() { // Pointer to a uniaxial material that will be returned TimeSeries *theSeries = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 3) { opserr << " Pulse <tag?> tStart tFinish period <-width pulseWidth> <-phaseShift shift> <-factor cFactor>\n"; return 0; } int tag = 0; // default tag = 0 double dData[6]; dData[3] = 0.5; // default width = 0.5 dData[4] = 0.0; // default phaseShift = 0.0 dData[5] = 1.0; // default factor = 1.0 int numData = 0; // get tag if provided if (numRemainingArgs == 4 || numRemainingArgs == 6 || numRemainingArgs == 8 || numRemainingArgs == 10) { numData = 1; if (OPS_GetIntInput(&numData, &tag) != 0) { opserr << "WARNING invalid series tag in Pulse tag?" << endln; return 0; } numRemainingArgs -= 1; } numData = 3; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid double data in Pulse Series with tag: " << tag << endln; return 0; } numRemainingArgs -= 2; // parse the optional args while (numRemainingArgs > 1) { char argvS[12]; if (OPS_GetString(argvS, 12) != 0) { opserr << "WARNING invalid string in Pulse <tag?> <-factor cFactor?>" << endln; return 0; } if (strcmp(argvS,"-width") == 0) { numData = 1; if (OPS_GetDouble(&numData, &dData[3]) != 0) { opserr << "WARNING invalid width in Pulse Series with tag?" << tag << endln; return 0; } } else if (strcmp(argvS,"-shift") == 0 || strcmp(argvS,"-phaseShift") == 0) { numData = 1; if (OPS_GetDouble(&numData, &dData[4]) != 0) { opserr << "WARNING invalid phase shift in Pulse Series with tag?" << tag << endln; return 0; } } else if (strcmp(argvS,"-factor") == 0) { numData = 1; if (OPS_GetDouble(&numData, &dData[5]) != 0) { opserr << "WARNING invalid factor in Pulse Series with tag?" << tag << endln; return 0; } } else { opserr << "WARNING unknown option: " << argvS << " in Pulse Series with tag?" << tag << endln; return 0; } numRemainingArgs -= 2; } // create the object theSeries = new PulseSeries(tag, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5]); if (theSeries == 0) { opserr << "WARNING ran out of memory creating Pulse Series with tag: " << tag << "\n"; return 0; } return theSeries; }
OPS_Export void * OPS_NewCorotTrussElement() { Element *theElement = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 4) { opserr << "Invalid Args want: element CorotTruss $tag $iNode $jNode $sectTag <-rho $rho>"; opserr << " or: element CorotTruss $tag $iNode $jNode $A $matTag <-rho $rho>\n"; return 0; } if (numRemainingArgs == 4 || numRemainingArgs == 6) return 0; // it's a CorotTrussSection int iData[3]; double A = 0.0; double rho = 0.0; int matTag = 0; int ndm = OPS_GetNDM(); int numData = 3; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer (tag, iNode, jNode) in element CorotTruss " << endln; return 0; } numData = 1; if (OPS_GetDouble(&numData, &A) != 0) { opserr << "WARNING: Invalid A: element CorotTruss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-rayleig $flagh>\n"; return 0; } numData = 1; if (OPS_GetInt(&numData, &matTag) != 0) { opserr << "WARNING: Invalid matTag: element CorotTruss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-rayleig $flagh>\n"; return 0; } UniaxialMaterial *theUniaxialMaterial = OPS_GetUniaxialMaterial(matTag); if (theUniaxialMaterial == 0) { opserr << "WARNING: Invalid material not found element CorotTruss " << iData[0] << " $iNode $jNode $A " << matTag << " <-rho $rho> <-rayleigh $flagh>\n"; return 0; } numRemainingArgs -= 5; while (numRemainingArgs > 1) { char argvS[10]; if (OPS_GetString(argvS, 10) != 0) { opserr << "WARNING: Invalid optional string element CorotTruss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-rayleigh $flagh>\n"; return 0; } if (strcmp(argvS,"-rho") == 0) { numData = 1; if (OPS_GetDouble(&numData, &rho) != 0) { opserr << "WARNING Invalid rho in element CorotTruss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-rayleigh $flagh>\n"; return 0; } } else { opserr << "WARNING: Invalid option " << argvS << " in: element CorotTruss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-rayleigh $flagh>\n"; return 0; } numRemainingArgs -= 2; } //now create the ReinforcedConcretePlaneStress theElement = new CorotTruss(iData[0], ndm, iData[1], iData[2], *theUniaxialMaterial, A, rho); if (theElement == 0) { opserr << "WARNING: out of memory: element CorotTruss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> \n"; } return theElement; }
OPS_Export void * OPS_NewPrestressedConcretePlaneStressMaterial() { if (numPrestressedConcretePlaneStressMaterials == 0) { numPrestressedConcretePlaneStressMaterials++; //OPS_Error("PrestressedConcretePlaneStress unaxial material - Written by A.Laskar, Thomas T.C. Hsu and Y.L. Mo - Copyright@2009\n", 1); } // Pointer to a uniaxial material that will be returned NDMaterial *theMaterial = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 16) { opserr << "Want: nDMaterial PrestressedConcretePlaneStress matTag? rho? UniaxiaMatTag1? UniaxiaMatTag2? UniaxiaMatTag3? UniaxiaMatTag4? angle1? angle2? rou1? rou2? pstrain? fpc? fy1? fy2? E0? epsc0?\n"; return 0; } int tag; double rho; int iData[6]; double dData[10]; int numData = 0; numData = 1; if (OPS_GetInt(&numData, &tag) != 0) { opserr << "WARNING invalid uniaxialMaterial PrestressedConcretePlaneStress tag" << endln; return 0; } numData = 1; if (OPS_GetDouble(&numData, &rho) != 0) { opserr << "Invalid Arg rho: uniaxialMaterial PrestressedConcretePlaneStress tag " << tag << endln; return 0; } numData = 6; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid uniaxialMaterial PrestressedConcretePlaneStress tag" << tag << endln; return 0; } numData = 10; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid data PrestressedConcretePlaneStress tag" << tag << endln; return 0; } UniaxialMaterial *theUniaxialMaterial1 = OPS_GetUniaxialMaterial(iData[0]); if (theUniaxialMaterial1 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[0]; opserr << "\nPrestressedConcretePlaneStress: " << tag << endln; return 0; } UniaxialMaterial *theUniaxialMaterial2 = OPS_GetUniaxialMaterial(iData[1]); if (theUniaxialMaterial2 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[1]; opserr << "\nPrestressedConcretePlaneStress: " << tag << endln; return 0; } UniaxialMaterial *theUniaxialMaterial3 = OPS_GetUniaxialMaterial(iData[2]); if (theUniaxialMaterial3 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[2]; opserr << "\nPrestressedConcretePlaneStress: " << tag << endln; return 0; } UniaxialMaterial *theUniaxialMaterial4 = OPS_GetUniaxialMaterial(iData[3]); if (theUniaxialMaterial4 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[3]; opserr << "\nPrestressedConcretePlaneStress: " << tag << endln; return 0; } //now create the PrestressedConcretePlaneStress theMaterial = new PrestressConcretePlaneStress (tag, rho, theUniaxialMaterial1, theUniaxialMaterial2, theUniaxialMaterial3, theUniaxialMaterial4, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8], dData[9]); if (theMaterial == 0) { opserr << "WARNING ran out of memory creating material\n"; opserr << "PrestressedConcretePlaneStress: " << tag << endln; return 0; } return theMaterial; }
void * OPS_Truss2(void) { Element *theElement = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 7) { opserr << "Invalid Args want: element Truss2 $tag $iNode $jNode $auxN1 $auxN2 $A $matTag <-rho $rho> <-rayleigh $flag>\n"; return 0; } int iData[5]; double A = 0.0; double rho = 0.0; int matTag = 0; int doRayleigh = 0; int ndm = OPS_GetNDM(); int numData = 5; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer (tag, iNode, jNode, auxN1, auxN2) in element Truss2 " << endln; return 0; } numData = 1; if (OPS_GetDouble(&numData, &A) != 0) { opserr << "WARNING: Invalid A: element Truss2 " << iData[0] << " $iNode $jNode $auxN1 $auxN2 $A $matTag <-rho $rho> <-rayleig $flagh>\n"; return 0; } numData = 1; if (OPS_GetInt(&numData, &matTag) != 0) { opserr << "WARNING: Invalid matTag: element Truss2 " << iData[0] << " $iNode $jNode $auxN1 $auxN2 $A $matTag <-rho $rho> <-rayleig $flagh>\n"; return 0; } UniaxialMaterial *theUniaxialMaterial = OPS_GetUniaxialMaterial(matTag); if (theUniaxialMaterial == 0) { opserr << "WARNING: Invalid material not found element Truss2 " << iData[0] << " $iNode $jNode $auxN1 $auxN2 $A " << matTag << " <-rho $rho> <-rayleig $flagh>\n"; return 0; } numRemainingArgs -= 7; while (numRemainingArgs > 1) { const char *argvS = OPS_GetString(); if (strcmp(argvS,"-rho") == 0) { numData = 1; if (OPS_GetDouble(&numData, &rho) != 0) { opserr << "WARNING Invalid rho in element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-doRayleigh $flagh>\n"; return 0; } } else if (strcmp(argvS,"-doRayleigh") == 0) { numData = 1; if (OPS_GetInt(&numData, &doRayleigh) != 0) { opserr << "WARNING: Invalid doRayleigh in element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-doRayleigh $flagh>\n"; return 0; } } else { opserr << "WARNING: Invalid option " << argvS << " in: element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-doRayleigh $flagh>\n"; return 0; } numRemainingArgs -= 2; } //now create the ReinforcedConcretePlaneStress theElement = new Truss2(iData[0], ndm, iData[1], iData[2], iData[3], iData[4], *theUniaxialMaterial, A, rho, doRayleigh); if (theElement == 0) { opserr << "WARNING: out of memory: element Truss2 " << iData[0] << " $iNode $jNode $auxN1 $auxN2 $A $matTag <-rho $rho>\n"; } return theElement; }
OPS_Export void * OPS_NewRAReinforcedConcretePlateFiberMaterial() { if (numRAReinforcedConcretePlateFiberMaterials == 0) { numRAReinforcedConcretePlateFiberMaterials++; //opserr << "ReinforcedConcretePlateFiber unaxial material - Written by J.Zhong, Thomas T.C. Hsu and Y.L. Mo - Copyright@2009\n"; } // Pointer to a uniaxial material that will be returned NDMaterial *theMaterial = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 14) { opserr << "Invalid Args want: NDMaterial RAReinforcedConcretePlateFiber matTag? rho? UniaxiaMatTag1? UniaxiaMatTag2? UniaxiaMatTag3? UniaxiaMatTag4? angle1? angle2? rou1? rou2? fpc? fy? E0? epsc0?>\n"; return 0; } int tag; double rho; int iData[4]; double dData[8]; int numData = 0; numData = 1; if (OPS_GetInt(&numData, &tag) != 0) { opserr << "WARNING invalid uniaxialMaterial RAReinforcedConcretePlateFiber tag" << endln; return 0; } numData = 1; if (OPS_GetDouble(&numData, &rho) != 0) { opserr << "Invalid Arg rho: uniaxialMaterial RAReinforcedConcretePlateFiber tag? fy? E0? fpc? rou? <ac?> <rc?>" << endln; return 0; } numData = 4; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid uniaxialMaterial RAReinforcedConcretePlateFiber tag" << endln; return 0; } numData = 8; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "WARNING invalid uniaxialMaterial RAReinforcedConcretePlateFiber tag" << endln; return 0; } UniaxialMaterial *theUniaxialMaterial1 = OPS_GetUniaxialMaterial(iData[0]); if (theUniaxialMaterial1 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[0]; opserr << "\nRAReinforcedConcretePlateFiber: " << tag << endln; return 0; } UniaxialMaterial *theUniaxialMaterial2 = OPS_GetUniaxialMaterial(iData[1]); if (theUniaxialMaterial2 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[1]; opserr << "\nRAReinforcedConcretePlateFiber: " << tag << endln; return 0; } UniaxialMaterial *theUniaxialMaterial3 = OPS_GetUniaxialMaterial(iData[2]); if (theUniaxialMaterial3 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[2]; opserr << "\nRAReinforcedConcretePlateFiber: " << tag << endln; return 0; } UniaxialMaterial *theUniaxialMaterial4 = OPS_GetUniaxialMaterial(iData[3]); if (theUniaxialMaterial4 == 0) { opserr << "WARNING material not found\n"; opserr << "Material: " << iData[3]; opserr << "\nRAReinforcedConcretePlateFiber: " << tag << endln; return 0; } //now create the RAReinforcedConcretePlateFiber theMaterial = new RAReinforcedConcretePlateFiber (tag, rho, theUniaxialMaterial1, theUniaxialMaterial2, theUniaxialMaterial3, theUniaxialMaterial4, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7]); if (theMaterial == 0) { opserr << "WARNING ran out of memory creating material\n"; opserr << "RAReinforcedConcretePlateFiber: " << tag << endln; return 0; } return theMaterial; }
void * OPS_ZeroLengthInterface2D(void) { if (numZeroLengthInterface2D == 0) { numZeroLengthInterface2D++; opserr << "ZeroLengthContactNTS2d - Written by Roozbeh G. Mikola and N.Sitar, UC Berkeley\n"; } Element *theEle = 0; int numData = 0; // get the ele tag int eleTag, sNdNum, mNdNum, sDOF, mDOF; numData = 1; if (OPS_GetInt(&numData, &eleTag) != 0) { opserr << "ZeroLengthInterface2D::WARNING invalid eleTag \n"; return 0; } const char *nextString = OPS_GetString(); if (strcmp(nextString,"-sNdNum") != 0) { opserr << "ZeroLengthInterface2D:: expecting -sNdNum \n"; return 0; } // get the number of slave nodes numData = 1; if (OPS_GetInt(&numData, &sNdNum) != 0) { opserr << "ZeroLengthInterface2D::WARNING invalied sNdNum \n"; return 0; } numData = 10; nextString = OPS_GetString(); if (strcmp(nextString,"-mNdNum") != 0) { opserr << "ZeroLengthInterface2D:: expecting -mNdNum\n"; return 0; } numData = 1; if (OPS_GetInt(&numData, &mNdNum) != 0) { opserr << "ZeroLengthInterface2D::WARNING invalied sNdNum \n"; return 0; } numData = 10; nextString = OPS_GetString(); if (strcmp(nextString,"-dof") != 0) { opserr << "ZeroLengthInterface2D:: expecting -sdof in "<< "element zeroLengthInterface2D eleTag? -sNdNum sNdNum? -mNdNum mNdNum? -dof sdof? mdof? -Nodes Nodes? Kn? Kt? phi? \n" ; return 0; } numData = 1; if (OPS_GetInt(&numData, &sDOF) != 0) { opserr << "ZeroLengthInterface2D::WARNING invalied sDOF\n"; return 0; } numData = 1; if (OPS_GetInt(&numData, &mDOF) != 0) { opserr << "ZeroLengthInterface2D::WARNING invalied mDOF\n"; return 0; } // a quick check on number of args int argc = OPS_GetNumRemainingInputArgs(); if (argc < 3 + sNdNum + mNdNum) { opserr << "ZeroLengthInterface2D::WARNING too few arguments " << "element zeroLengthInterface2D eleTag? -sNdNum sNdNum? -mNdNum mNdNum? -dof sdof? mdof? -Nodes Nodes? Kn? Kt? phi? \n" ; return 0; } numData = 10; nextString = OPS_GetString(); if (strcmp(nextString,"-Nodes") != 0) { opserr << "ZeroLengthInterface2D:: expecting -Nodes\n"; return 0; } // read the Nodes values numData = sNdNum+mNdNum; int *theNodeData = new int[numData]; ID Nodes(theNodeData, numData); if (OPS_GetInt(&numData, theNodeData) != 0) { opserr << "ZeroLengthInterface2D:: not enough node tags provided for ele: "; opserr << eleTag << "\n"; return 0; } // read the material properties numData = 3; double dData[3]; if (OPS_GetDouble(&numData, dData) != 0) { opserr << "ZeroLengthInterface2D::WARNING invalid Kn,Kt or phi\n" ; return 0; } // // now we create the element and add it to the domain // theEle = new ZeroLengthInterface2D(eleTag, sNdNum, mNdNum, sDOF, mDOF, Nodes, dData[0], dData[1], dData[2]); return theEle; }
OPS_Export void * OPS_NewTrussElement() { Element *theElement = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs < 4) { opserr << "Invalid Args want: element Truss $tag $iNode $jNode $sectTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; opserr << " or: element Truss $tag $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } if (numRemainingArgs == 4 || numRemainingArgs == 6 || numRemainingArgs == 8 || numRemainingArgs == 10) return 0; // it's a TrussSection int iData[3]; double A = 0.0; double rho = 0.0; int matTag = 0; int doRayleigh = 0; // by default rayleigh not done int cMass = 0; // by default use lumped mass matrix int ndm = OPS_GetNDM(); int numData = 3; if (OPS_GetInt(&numData, iData) != 0) { opserr << "WARNING invalid integer (tag, iNode, jNode) in element Truss " << endln; return 0; } numData = 1; if (OPS_GetDouble(&numData, &A) != 0) { opserr << "WARNING: Invalid A: element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } numData = 1; if (OPS_GetInt(&numData, &matTag) != 0) { opserr << "WARNING: Invalid matTag: element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } UniaxialMaterial *theUniaxialMaterial = OPS_GetUniaxialMaterial(matTag); if (theUniaxialMaterial == 0) { opserr << "WARNING: Invalid material not found element Truss " << iData[0] << " $iNode $jNode $A " << matTag << " <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } numRemainingArgs -= 5; while (numRemainingArgs > 1) { char argvS[15]; if (OPS_GetString(argvS, 15) != 0) { opserr << "WARNING: Invalid optional string element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } if (strcmp(argvS,"-rho") == 0) { numData = 1; if (OPS_GetDouble(&numData, &rho) != 0) { opserr << "WARNING Invalid rho in element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } } else if (strcmp(argvS,"-cMass") == 0) { numData = 1; if (OPS_GetInt(&numData, &cMass) != 0) { opserr << "WARNING: Invalid cMass in element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } } else if (strcmp(argvS,"-doRayleigh") == 0) { numData = 1; if (OPS_GetInt(&numData, &doRayleigh) != 0) { opserr << "WARNING: Invalid doRayleigh in element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } } else { opserr << "WARNING: Invalid option " << argvS << " in: element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; return 0; } numRemainingArgs -= 2; } // now create the Truss theElement = new Truss(iData[0], ndm, iData[1], iData[2], *theUniaxialMaterial, A, rho, doRayleigh, cMass); if (theElement == 0) { opserr << "WARNING: out of memory: element Truss " << iData[0] << " $iNode $jNode $A $matTag <-rho $rho> <-cMass $flag> <-doRayleigh $flag>\n"; } return theElement; }