void* OPS_ElasticBeam2d() { if(OPS_GetNumRemainingInputArgs() < 7) { opserr<<"insufficient arguments:eleTag,iNode,jNode,A,E,Iz,transfTag\n"; return 0; } int ndm = OPS_GetNDM(); int ndf = OPS_GetNDF(); if(ndm != 2 || ndf != 3) { opserr<<"ndm must be 2 and ndf must be 3\n"; return 0; } // inputs: int iData[3]; int numData = 3; if(OPS_GetIntInput(&numData,&iData[0]) < 0) return 0; double data[3]; if(OPS_GetDoubleInput(&numData,&data[0]) < 0) return 0; numData = 1; int transfTag; if(OPS_GetIntInput(&numData,&transfTag) < 0) return 0; // options double mass = 0.0, alpha=0.0, depth=0.0; int cMass = 0; while(OPS_GetNumRemainingInputArgs() > 0) { std::string type = OPS_GetString(); if(type == "-alpha") { if(OPS_GetNumRemainingInputArgs() > 0) { if(OPS_GetDoubleInput(&numData,&alpha) < 0) return 0; } } else if(type == "-depth") { if(OPS_GetNumRemainingInputArgs() > 0) { if(OPS_GetDoubleInput(&numData,&depth) < 0) return 0; } } else if(type == "-mass") { if(OPS_GetNumRemainingInputArgs() > 0) { if(OPS_GetDoubleInput(&numData,&mass) < 0) return 0; } } else if(type == "-cMass") { cMass = 1; } } // check transf CrdTransf* theTransf = OPS_GetCrdTransf(transfTag); if(theTransf == 0) { opserr<<"coord transfomration not found\n"; return 0; } return new ElasticBeam2d(iData[0],data[0],data[1],data[2],iData[1],iData[2], *theTransf,alpha,depth,mass,cMass); }
int TclModelBuilder_addDispBeamColumnInt(ClientData clientData, Tcl_Interp *interp, int argc, TCL_Char **argv, Domain*theTclDomain, TclModelBuilder *theTclBuilder) { // ensure the destructor has not been called - if (theTclBuilder == 0) { opserr << "WARNING builder has been destroyed\n"; return TCL_ERROR; } int ndm = theTclBuilder->getNDM(); int ndf = theTclBuilder->getNDF(); int ok = 0; if (ndm == 2 && ndf == 3) ok = 1; if (ok == 0) { opserr << "WARNING -- NDM = " << ndm << " and NDF = " << ndf << " not compatible with dispBeamColumn element" << endln; return TCL_ERROR; } if (argc < 9) { //8 opserr << "WARNING insufficient arguments\n"; printCommand(argc, argv); opserr << "Want: element dispBeamColumn eleTag? iNode? jNode? nIP? secTag? transfTag? C1? t1? NStrip1? t2? NStrip2? t3? NStrip3?\n"; return TCL_ERROR; } // get the id and end nodes int eleTag, iNode, jNode, nIP, transfTag; double C1; int secTag[10]; // Max size of integration rule ... can change if needed int argi = 2; if (Tcl_GetInt(interp, argv[argi++], &eleTag) != TCL_OK) { opserr << "WARNING invalid dispBeamColumn eleTag" << endln; return TCL_ERROR; } if (Tcl_GetInt(interp, argv[argi++], &iNode) != TCL_OK) { opserr << "WARNING invalid iNode "; opserr << "dispBeamColumn element: " << eleTag << endln; return TCL_ERROR; } if (Tcl_GetInt(interp, argv[argi++], &jNode) != TCL_OK) { opserr << "WARNING invalid jNode "; opserr << "dispBeamColumn element: " << eleTag << endln; return TCL_ERROR; } if (Tcl_GetInt(interp, argv[argi++], &nIP) != TCL_OK) { opserr << "WARNING invalid nIP "; opserr << "dispBeamColumn element: " << eleTag << endln; return TCL_ERROR; } if (strcmp(argv[argi], "-sections") == 0) { argi++; if (argi+nIP > argc) { opserr << "WARNING insufficient number of section tags - element dispBeamColumn eleTag? iNode? jNode? nIP? secTag? transfTag?\n"; return TCL_ERROR; } int section; for (int i = 0; i < nIP; i++) { if (Tcl_GetInt(interp, argv[argi+i], §ion) != TCL_OK) { opserr << "WARNING invalid secTag - element dispBeamColumn eleTag? iNode? jNode? nIP? secTag? transfTag?\n"; return TCL_ERROR; } secTag[i] = section; } argi += nIP; } else { int section; if (Tcl_GetInt(interp, argv[argi++], §ion) != TCL_OK) { opserr << "WARNING invalid secTag - element dispBeamColumn eleTag? iNode? jNode? nIP? secTag? transfTag?\n"; return TCL_ERROR; } for (int i = 0; i < nIP; i++) secTag[i] = section; } if (argi >= argc || Tcl_GetInt(interp, argv[argi++], &transfTag) != TCL_OK) { opserr << "WARNING invalid transfTag? - element dispBeamColumn eleTag? iNode? jNode? nIP? secTag? transfTag?\n"; return TCL_ERROR; } if (Tcl_GetDouble(interp, argv[argi++], &C1) != TCL_OK) { opserr << "WARNING invalid dispBeamColumn C1" << endln; return TCL_ERROR; } double massDens = 0.0; while (argi != argc) { if (strcmp(argv[argi++],"-mass") == 0 && argi < argc) { if (Tcl_GetDouble(interp, argv[argi++], &massDens) != TCL_OK) { opserr << "WARNING invalid massDens - element dispBeamColumn eleTag? iNode? jNode? nIP? secTag? transfTag? C1? t? NStrip?\n"; return TCL_ERROR; } } } SectionForceDeformation **sections = new SectionForceDeformation* [nIP]; if (!sections) { opserr << "WARNING TclElmtBuilder - addFrameElement - Insufficient memory to create sections\n"; return TCL_ERROR; } for (int j=0; j<nIP; j++) { SectionForceDeformation *theSection = theTclBuilder->getSection(secTag[j]); if (theSection == 0) { opserr << "WARNING TclElmtBuilder - frameElement - no Section found with tag "; opserr << secTag[j] << endln; delete [] sections; return TCL_ERROR; } sections[j] = theSection; } Element *theElement = 0; if (ndm == 2) { CrdTransf *theTransf = OPS_GetCrdTransf(transfTag); if (theTransf == 0) { opserr << "WARNING transformation not found\n"; opserr << "transformation: " << transfTag; opserr << "\ndispBeamColumn element: " << eleTag << endln; return TCL_ERROR; } // now create the DispBeamColumn and add it to the Domain theElement = new DispBeamColumn2dInt(eleTag,iNode,jNode,nIP,sections,*theTransf,C1,massDens); delete [] sections; } if (theElement == 0) { opserr << "WARNING ran out of memory creating element\n"; opserr << "dispBeamColumn element: " << eleTag << endln; return TCL_ERROR; } if (theTclDomain->addElement(theElement) == false) { opserr << "WARNING could not add element to the domain\n"; opserr << "dispBeamColumn element: " << eleTag << endln; delete theElement; return TCL_ERROR; } // if get here we have sucessfully created the element and added it to the domain return TCL_OK; }
CrdTransf *OPS_GetCrdTransfPtr(int tag) { return OPS_GetCrdTransf(tag); }
OPS_Export void * OPS_PileToe3D(void) { if (num_PileToe3D == 0) { num_PileToe3D++; //OPS_Error("PileToe3D element - Written: P.Arduino, P.Mackenzie-Helnwein, U.Washington\n", 1); opserr <<"PileToe3D element - Written: P.Arduino, P.Mackenzie-Helnwein, U.Washington\n"; } // Pointer to a uniaxial material that will be returned Element *theElement = 0; int numRemainingInputArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingInputArgs < 7) { opserr << "Invalid #args, want: element PileToe3D eleTag? iNode? BiNode? BjNode? radius? k? crdTransf?\n"; return 0; } int iData[5]; double dData[2]; int numData = 4; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid integer data: element PileToe3D" << endln; return 0; } numData = 1; if (OPS_GetDoubleInput(&numData, dData) != 0) { opserr << "WARNING invalid radius data: element PileToe3D " << iData[0] << endln; return 0; } numData = 1; if (OPS_GetDoubleInput(&numData, &dData[1]) != 0) { opserr << "WARNING invalid k data: element PileToe3D " << iData[0] << endln; return 0; } numData = 1; if (OPS_GetIntInput(&numData, &iData[4]) != 0) { opserr << "WARNING invalid integer crdTransf data: element PileToe3D" << iData[0] << endln; return 0; } int transfTag = iData[4]; CrdTransf *theTransf = OPS_GetCrdTransf(transfTag); if (theTransf == 0) { opserr << "WARNING element PileToe3D " << iData[0] << endln; opserr << " coordTransf: " << transfTag << "not found\n"; return 0; } // Parsing was successful, allocate the element theElement = new PileToe3D(iData[0], iData[1], iData[2], iData[3], dData[0], dData[1], *theTransf); if (theElement == 0) { opserr << "WARNING could not create element of type PileToe3D\n"; return 0; } return theElement; }
void * OPS_ModElasticBeam2d() { // print out a message about who wrote this element & any copyright info wanted if (numModElasticBeam2d == 0) { opserr << "ModElasticBeam2d element -> for Stiffness Modification Factors by D.Lignos"; numModElasticBeam2d++; } Element *theEle = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs == 0) { // parallel processing theEle = new ModElasticBeam2d(); return theEle; } if (numRemainingArgs < 10) { opserr << "ERROR not enough args provided, want: element ModElasticBeam2d tag? iNode? jNode? A? E? I? K11? K33? K44? transfType? <-alpha $alpha> <-d $d> <-rho $rho> <-cMass>\n"; return 0; } int numData; int iData[5]; //tag, iNode, jNode, transfTag, cMass double dData[9]; // A, E, I, K11, K33, K44, alpha, d, rho iData[4] = 0; // cMass dData[6] = 0.0; dData[7] = 0.0; // alpha and d dData[8] = 0.0; // rho numData = 3; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid element data (tag, iNode, jNode) element ElasticBeamColumn2d\n"; return 0; } int eleTag = iData[0]; numData = 3; if (OPS_GetDoubleInput(&numData, dData) != 0) { opserr << "WARNING error reading element data (A, E, I) element ElasticBeamColumn2d " << eleTag << endln; return 0; } numData = 3; if (OPS_GetDoubleInput(&numData, &dData[3]) != 0) { opserr << "WARNING error reading element data (K11, K33, K44) element ElasticBeamColumn2d " << eleTag << endln; return 0; } numData = 1; if (OPS_GetIntInput(&numData, &iData[3]) != 0) { opserr << "WARNING error reading data (transfTag) element ElasticBeamColumn2d " << eleTag << endln; return 0; } numRemainingArgs = OPS_GetNumRemainingInputArgs(); while (numRemainingArgs > 1) { const char *argvLoc = OPS_GetString();; numData = 1; if ((strcmp(argvLoc, "-alpha") == 0) || (strcmp(argvLoc, "-Alpha") == 0) || (strcmp(argvLoc, "-ALPHA") == 0)) { if (OPS_GetDoubleInput(&numData, &dData[6]) != 0) { opserr << "WARNING error reading element data (alpha) element ElasticBeamColumn2d " << eleTag << endln; return 0; } } else if ((strcmp(argvLoc, "-d") == 0) || (strcmp(argvLoc, "-D") == 0)) { if (OPS_GetDoubleInput(&numData, &dData[7]) != 0) { opserr << "WARNING error reading element data (D) element ElasticBeamColumn2d " << eleTag << endln; return 0; } } else if ((strcmp(argvLoc, "-rho") == 0) || (strcmp(argvLoc, "Rho") == 0) || (strcmp(argvLoc, "-RHO") == 0)) { if (OPS_GetDoubleInput(&numData, &dData[8]) != 0) { opserr << "WARNING error reading element data (rho) element ElasticBeamColumn2d " << eleTag << endln; return 0; } } else if ((strcmp(argvLoc, "-lMass") == 0) || (strcmp(argvLoc, "lMass") == 0)) { iData[4] = 0; // lumped mass matrix (default) } else if ((strcmp(argvLoc, "-cMass") == 0) || (strcmp(argvLoc, "cMass") == 0)) { iData[4] = 1; // consistent mass matrix } numRemainingArgs = OPS_GetNumRemainingInputArgs(); } CrdTransf *theTransf = OPS_GetCrdTransf(iData[3]); if (theTransf == 0) { opserr << "WARNING error could not find a transformation with tag: " << iData[3] << "element ElasticBeamColumn2d " << eleTag << endln; return 0; } theEle = new ModElasticBeam2d(iData[0], dData[0], dData[1], dData[2], iData[1], iData[2], dData[3], dData[4], dData[5], *theTransf, dData[6], dData[7], dData[8], iData[4]); // delete theTransf; return theEle; }
void *OPS_ElasticTimoshenkoBeam2d() { Element *theElement = 0; int numRemainingArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingArgs == 0) { // parallel processing theElement = new ElasticTimoshenkoBeam2d(); return theElement; } if (numRemainingArgs < 9) { opserr << "ERROR not enough args provided, want: element ElasticTimoshenkoBeam2d $tag $iNode $jNode $E $G $A $Iz $Avy $transTag <-mass $m> <-cMass> \n"; return 0; } int numData; int iData[5]; // tag, iNode, jNode, transTag, cMass double dData[6]; // E, G, A, Iz, Avy, mass iData[4] = 0; // cMass dData[5] = 0.0; // mass per unit length numData = 3; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid element data (tag, iNode, jNode) element ElasticTimoshenkoBeam2d.\n"; return 0; } numData = 5; if (OPS_GetDoubleInput(&numData, dData) != 0) { opserr << "WARNING error reading element data (E, G, A, Iz, Avy) element ElasticTimoshenkoBeam2d " << iData[0] << endln; return 0; } numData = 1; if (OPS_GetIntInput(&numData, &iData[3]) != 0) { opserr << "WARNING invalid element data (transTag) element ElasticTimoshenkoBeam2d " << iData[0] << endln; return 0; } CrdTransf *theTrans = OPS_GetCrdTransf(iData[3]); if (theTrans == 0) { opserr << "WARNING transformation object not found for ElasticTimoshenkoBeam2d " << iData[0] << endln; return 0; } numRemainingArgs = OPS_GetNumRemainingInputArgs(); while (numRemainingArgs > 0) { const char *argvLoc = OPS_GetString(); numData = 1; if ((strcmp(argvLoc, "-mass") == 0) || (strcmp(argvLoc, "mass") == 0)) { if (OPS_GetDoubleInput(&numData, &dData[5]) != 0) { opserr << "WARNING error reading element data (mass) element ElasticTimoshenkoBeam2d " << iData[0] << endln; return 0; } } if ((strcmp(argvLoc, "-lMass") == 0) || (strcmp(argvLoc, "lMass") == 0)) { iData[4] = 0; // lumped mass matrix (default) } if ((strcmp(argvLoc, "-cMass") == 0) || (strcmp(argvLoc, "cMass") == 0)) { iData[4] = 1; // consistent mass matrix } numRemainingArgs = OPS_GetNumRemainingInputArgs(); } theElement = new ElasticTimoshenkoBeam2d(iData[0], iData[1], iData[2], dData[0], dData[1], dData[2], dData[3], dData[4], *theTrans, dData[5], iData[4]); return theElement; }