Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
OPS_Export void
localInit() 
{
  OPS_Error("SkylineSPD - Written by fmk UC Berkeley Copyright 2009\n", 1);
}
Exemplo n.º 4
0
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;
  }
}
Exemplo n.º 5
0
OPS_Export void
localInit() 
{
  OPS_Error("trussC element - Written by fmk UC Berkeley Copyright 2008 - Use at your Own Peril\n", 1);
}
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
0
OPS_Export void
localInit() 
{
  OPS_Error("elasticPPC uniaxial material - Written by fmk UC Berkeley Copyright 2008 - Use at your Own Peril\n", 1);
}
Exemplo n.º 8
0
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;
}
Exemplo n.º 9
0
OPS_Export void
localInit()
{
  OPS_Error("ratchet unaxial material \nWritten by Mark D. Denavit, University of Illinois at Urbana-Champaign\n", 1);
}