void * OPS_Quad4FiberOverlay(void) { if (num_Quad4FiberOverlay == 0) { num_Quad4FiberOverlay++; OPS_Error("Quad4FiberOverlay element - Written: M.Chiaramonte, P.Arduino, P.Mackenzie-Helnwein, U.Washington\n", 1); } Element *theElement = 0; if (OPS_GetNumRemainingInputArgs() != 9) { opserr << "Want: Quad4FiberOverlay ?tag ?nd1 ?nd2 ?nd3 ?nd4 ?matTag ?AreaFiber B1 B2 \n"; return 0; } int iData[6]; double dData[3]; int matTag = 0; int eleTag = 0; int numData = 0; numData = 5; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid integer data: element Quad4FiberOverlay" << endln; return 0; } eleTag = iData[0]; numData = 1; if (OPS_GetIntInput(&numData, &matTag) != 0) { opserr << "WARNING element Quad4FiberOverlay: invalid matTag for element: " << eleTag << "\n"; return 0; } numData = 3; if (OPS_GetDoubleInput(&numData, dData) != 0) { opserr << "WARNING invalid data: element Quad4FiberOverlay " << eleTag << endln; return 0; } UniaxialMaterial *theMaterial = OPS_GetUniaxialMaterial(matTag); if (theMaterial == 0) { opserr << "WARNING material with tag " << matTag << "not found for element " << eleTag << endln; return 0; } // Parsing was successful, allocate the material theElement = new Quad4FiberOverlay(iData[0], iData[1], iData[2], iData[3], iData[4], *theMaterial, dData[0], dData[1], dData[2]); if (theElement == 0) { opserr << "WARNING could not create element of type Quad4FiberOverlay\n"; return 0; } return theElement; opserr << "Element Passed First Inspection" << endln; }
OPS_Export void * OPS_BeamEndContact3Dp(void) { if (num_BeamEndContact3Dp == 0) { num_BeamEndContact3Dp++; OPS_Error("BeamEndContact3Dp element - Written: C.McGann, P.Arduino, P.Mackenzie-Helnwein, U.Washington\n", 1); } // Pointer to an element that will be returned Element *theElement = 0; int numRemainingInputArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingInputArgs < 6) { opserr << "Invalid #args, want: element BeamEndContact3Dp eleTag? iNode? jNode? sNode? radius? penalty? <cFlag>?\n"; return 0; } int iData[4]; double dData[2]; int icSwitch = 0; int numData = 4; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid integer data: element BeamEndContact3Dp " << iData[0] << endln; return 0; } numData = 2; if (OPS_GetDoubleInput(&numData, dData) !=0) { opserr << "WARNING invalid double data: element BeamEndContact3Dp " << iData[0] << endln; return 0; } numRemainingInputArgs -= 6; while (numRemainingInputArgs >= 1) { numData = 1; if (OPS_GetIntInput(&numData, &icSwitch) != 0) { opserr << "WARNING invalid initial contact flag: element BeamEndContact3Dp " << iData[0] << endln; return 0; } numRemainingInputArgs -= 1; } // Parsing was successful, allocate the element theElement = new BeamEndContact3Dp(iData[0], iData[1], iData[2], iData[3], dData[0], dData[1], icSwitch); if (theElement == 0) { opserr << "WARNING could not create element of type BeamEndContact3DpElement\n"; return 0; } return theElement; }
OPS_Export void localInit() { OPS_Error("SkylineSPD - Written by fmk UC Berkeley Copyright 2009\n", 1); }
OPS_Export void trussC (eleObj *thisObj, modelState *model, double *tang, double *resid, int *isw, int *errFlag) { double matStrain[1]; double matTang[1]; double matStress[1]; double A, L, K, rho, cs, sn; int i,j; double dx, dy, dLength; double d1[2]; double d2[2]; int nd1, nd2, numDOF, numCrd; int *matData, matTag, matType, n1, n2; double nd1Crd[2]; double nd2Crd[2]; double tran[4]; matObj *theMat; if (*isw == ISW_INIT) { double dData[1]; int iData[4]; /* get the input data - tag? nd1? nd2? A? matTag? */ int numData = 3; OPS_GetIntInput(&numData, iData); numData = 1; OPS_GetDoubleInput(&numData, dData); OPS_GetIntInput(&numData, &iData[3]); /* Allocate the element state */ thisObj->tag = iData[0]; n1 = iData[1]; n2 = iData[2]; matTag = iData[3]; thisObj->nNode = 2; thisObj->nParam = 4; thisObj->nDOF = 4; thisObj->nState = 0; thisObj->nMat = 1; iData[0] = matTag; matData = iData; matType = OPS_UNIAXIAL_MATERIAL_TYPE; OPS_AllocateElement(thisObj, matData, &matType); /* fill in the element state */ thisObj->node[0] = n1; thisObj->node[1] = n2; numCrd = 2; thisObj->param[0] = dData[0]; OPS_GetNodeCrd(&n1, &numCrd, nd1Crd); OPS_GetNodeCrd(&n2, &numCrd, nd2Crd); dx = nd2Crd[0]-nd1Crd[0]; dy = nd2Crd[1]-nd1Crd[1]; L = sqrt(dx*dx + dy*dy); thisObj->param[1] = L; if (L == 0.0) { OPS_Error("Warning - truss element has zero length\n", 1); return; } cs = dx/L; sn = dy/L; thisObj->param[2] = cs; thisObj->param[3] = sn; /* ****************************** placed in AllocateElement matObj *theMat = OPS_GetMaterial(&(iData[3])); if (theMat == 0) { // OPS_Error("Warning - truss element could not find material\n",1); return; } thisObj->mats[0] = theMat; ********************************************** */ *errFlag = 0; } else if (*isw == ISW_COMMIT) { matObj *theMat = thisObj->mats[0]; theMat->matFunctPtr(theMat, model, matStrain, matTang, matStress, isw, errFlag); } else if (*isw == ISW_REVERT) { matObj *theMat = thisObj->mats[0]; theMat->matFunctPtr(theMat, model, matStrain, matTang, matStress, isw, errFlag); } else if (*isw == ISW_REVERT_TO_START) { matObj *theMat = thisObj->mats[0]; theMat->matFunctPtr(theMat, model, matStrain, matTang, matStress, isw, errFlag); } else if (*isw == ISW_FORM_TANG_AND_RESID) { double L = thisObj->param[1]; if (L == 0.0) { // OPS_Error("Warning - truss element has zero length\n", 1); return; } nd1 = thisObj->node[0]; nd2 = thisObj->node[1]; numDOF = 2; OPS_GetNodeDisp(&nd1, &numDOF, d1); OPS_GetNodeDisp(&nd2, &numDOF, d2); A = thisObj->param[0]; cs = thisObj->param[2]; sn = thisObj->param[3]; tran[0] = -cs; tran[1] = -sn; tran[2] = cs; tran[3] = sn; dLength = 0.0; for (i=0; i<2; i++){ dLength -= (d2[i]-d1[i]) * tran[i]; } matStrain[0] = dLength/L; theMat = thisObj->mats[0]; theMat->matFunctPtr(theMat, model, matStrain, matTang, matStress, isw, errFlag); /* ******************* instead of call material funtion int matNum = 0; *errFlag = OPS_InvokeMaterial(thisObj, &matNum, model, matStrain, matStress, matTang, isw); fprintf(stderr,"strain, tang, stress: %e %e %e\n",matStrain[0], matTang[0], matStress[0]); *errFlag = OPS_InvokeMaterialDirectly(theMat, model, matStrain, matStress, matTang, isw); ******************************************************** */ if (*errFlag == 0) { double force = A*matStress[0]; for (i=0; i<4; i++) resid[i] = tran[i]*force; K = A*matTang[0]/L; // tang(j,i) for (i = 0; i<4; i++) for (j=0; j < 4; j++) tang[i+j*4] = K * tran[i]*tran[j]; } } else if (*isw == ISW_FORM_MASS) { L = thisObj->param[1]; if (L == 0.0) { // OPS_Error("Warning - truss element has zero length\n", 1); return; } A = thisObj->param[0]; rho = thisObj->param[4]; for (i=0; i<16; i++) tang[i] = 0.0; if (rho != 0.0) { double massV = rho * A * L/2; tang[0] = massV; tang[1+1*4] = massV; tang[2+2*4] = massV; tang[3+3*4] = massV; } *errFlag = 0; } }
OPS_Export void localInit() { OPS_Error("trussC element - Written by fmk UC Berkeley Copyright 2008 - Use at your Own Peril\n", 1); }
OPS_Export void * OPS_BeamContact2Dp(void) { if (num_BeamContact2Dp == 0) { num_BeamContact2Dp++; OPS_Error("BeamContact2Dp element - Written: C.McGann, P.Arduino, P.Mackenzie-Helnwein, U.Washington\n", 1); } // Pointer to an element that will be returned Element *theElement = 0; int numRemainingInputArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingInputArgs < 7) { opserr << "Invalid #args, want: element BeamContact2Dp eleTag? iNode? jNode? slaveNode? matTag? width? penalty? <cSwitch>?\n"; return 0; } int iData[5]; double dData[2]; int icSwitch = 0; int numData = 5; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid integer data: element BeamContact2Dp " << iData[0] << endln; return 0; } numData = 2; if (OPS_GetDoubleInput(&numData, dData) !=0) { opserr << "WARNING invalid data: element BeamContact2Dp " << iData[0] << endln; return 0; } int matID = iData[4]; NDMaterial *theMaterial = OPS_GetNDMaterial(matID); if (theMaterial == 0) { opserr << "WARNING element BeamContact2Dp " << iData[0] << endln; opserr << " Material: " << matID << "not found\n"; return 0; } numRemainingInputArgs -= 7; while (numRemainingInputArgs >= 1) { numData = 1; if (OPS_GetIntInput(&numData, &icSwitch) != 0) { opserr << "WARNING invalid initial contact flag: element BeamContact2Dp " << iData[0] << endln; return 0; } numRemainingInputArgs -= 1; } // Parsing was successful, allocate the element theElement = new BeamContact2Dp(iData[0], iData[1], iData[2], iData[3], *theMaterial, dData[0], dData[1], icSwitch); if (theElement == 0) { opserr << "WARNING could not create element of type BeamContact2Dp\n"; return 0; } return theElement; }
OPS_Export void localInit() { OPS_Error("elasticPPC uniaxial material - Written by fmk UC Berkeley Copyright 2008 - Use at your Own Peril\n", 1); }
OPS_Export void * OPS_SSPquadUP(void) { if (num_SSPquadUP == 0) { num_SSPquadUP++; OPS_Error("SSPquadUP element - Written: C.McGann, P.Arduino, P.Mackenzie-Helnwein, U.Washington\n", 1); } // Pointer to an element that will be returned Element *theElement = 0; int numRemainingInputArgs = OPS_GetNumRemainingInputArgs(); if (numRemainingInputArgs < 13) { opserr << "Invalid #args, want: element SSPquadUP eleTag? iNode? jNode? kNode? lNode? matTag? t? fBulk? fDen? k1? k2? e? alpha? <b1? b2?>?\n"; return 0; } int iData[6]; double dData[9]; dData[7] = 0.0; dData[8] = 0.0; int numData = 6; if (OPS_GetIntInput(&numData, iData) != 0) { opserr << "WARNING invalid integer data: element SSPquadUP " << iData[0] << endln; return 0; } numData = 7; if (OPS_GetDoubleInput(&numData, dData) != 0) { opserr << "WARNING invalid double data: element SSPquadUP " << iData[0] << endln; return 0; } int matID = iData[5]; NDMaterial *theMaterial = OPS_GetNDMaterial(matID); if (theMaterial == 0) { opserr << "WARNING element SSPquadUP " << iData[0] << endln; opserr << " Material: " << matID << "not found\n"; return 0; } if (numRemainingInputArgs == 15) { numData = 2; if (OPS_GetDoubleInput(&numData, &dData[7]) != 0) { opserr << "WARNING invalid optional data: element SSPquadUP " << iData[0] << endln; return 0; } } // parsing was successful, allocate the element theElement = new SSPquadUP(iData[0], iData[1], iData[2], iData[3], iData[4], *theMaterial, dData[0], dData[1], dData[2], dData[3], dData[4], dData[5], dData[6], dData[7], dData[8]); if (theElement == 0) { opserr << "WARNING could not create element of type SSPquadUP\n"; return 0; } return theElement; }
OPS_Export void localInit() { OPS_Error("ratchet unaxial material \nWritten by Mark D. Denavit, University of Illinois at Urbana-Champaign\n", 1); }