コード例 #1
0
void *
OPS_NewManzariDafaliasMaterialRO(void)
{
  if (numManzariDafaliasMaterials == 0) {
    numManzariDafaliasMaterials++;
    opserr << "ManzariDafaliasRO nDmaterial - Written: A.Ghofrani, P.Arduino, U.Washington\n";
  }

  NDMaterial *theMaterial = 0;

  int numArgs = OPS_GetNumRemainingInputArgs();

  if (numArgs < 22) {
    opserr << "Want: nDMaterial ManzariDafaliasRO tag? G0? nu? B? a1? gamma1? e_init? Mc? c? lambda_c? e0? ksi?" <<
		" P_atm? m? h0? Ch? nb? A0? nd? z_max? cz? Rho? <kappa? IntScheme? TanType? JacoType? TolF? TolR?>" << endln;
    return 0;	
  }
  
  int tag;
  double dData[21];
  double oData[6];

  oData[0] = 2.0;		// kappa (Ramberg Osgood)
  oData[1] = 2;			// IntScheme
  oData[2] = 2;			// TanType
  oData[3] = 1;			// JacoType
  oData[4] = 1.0e-7;	// TolF
  oData[5] = 1.0e-7;	// TolR

  int numData = 1;
  if (OPS_GetInt(&numData, &tag) != 0) {
    opserr << "WARNING invalid nDMaterial ManzariDafaliasRO material tag" << endln;
    return 0;
  }

  numData = 21;
  if (OPS_GetDouble(&numData, dData) != 0) {
    opserr << "WARNING invalid material data for nDMaterial ManzariDafaliasRO material  with tag: " << tag << endln;
    return 0;
  }

  numData = numArgs - 22;
  if (numData != 0)
	if (OPS_GetDouble(&numData, oData) != 0) {
		opserr << "WARNING invalid material data for nDMaterial ManzariDafaliasRO material  with tag: " << tag << endln;
		return 0;
	}

	theMaterial = new ManzariDafaliasRO(tag, ND_TAG_ManzariDafaliasRO , 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], 
					     oData[0],(int)oData[1], (int)oData[2], (int)oData[3], oData[4], oData[5]);

  
  if (theMaterial == 0) {
    opserr << "WARNING ran out of memory for nDMaterial ManzariDafaliasRO material with tag: " << tag << endln;
  }

  return theMaterial;
}
コード例 #2
0
ファイル: MaterialCMM.cpp プロジェクト: fmckenna/OpenSees
void *
OPS_MaterialCMM(void)
{
  NDMaterial *theMaterial = 0;
  
  int numArgs = OPS_GetNumRemainingInputArgs();
  
  if (numArgs < 2 + MaterialCMM_NumParameters) {
    opserr << "Want: insufficient args: nDMaterial MaterialCMMc $tag $layer 71 parameters!" << endln;
    return 0;	
  }
  
  int iData[2];
  double dData[MaterialCMM_NumParameters];
  
  int numData = 2;
  if (OPS_GetInt(&numData, iData) != 0) {
    opserr << "WARNING invalid integer tag: nDMaterial ElasticOrthotropic \n";
    return 0;
  }
  
  numData = MaterialCMM_NumParameters;
  
  if (OPS_GetDouble(&numData, dData) != 0) {
    opserr << "WARNING invalid data: nDMaterial EasticIsotropic : " << iData[0] <<"\n";
    return 0;
  }  
  
  theMaterial = new MaterialCMM(iData[0], iData[1], dData);
	
  return theMaterial;
}
コード例 #3
0
ファイル: DruckerPrager.cpp プロジェクト: aceskpark/osfeo
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;
}
コード例 #4
0
ファイル: stressDensity.cpp プロジェクト: fmckenna/OpenSees
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;
}
コード例 #5
0
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;
}
コード例 #6
0
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;
}
コード例 #7
0
ファイル: ShellMITC9.cpp プロジェクト: DBorello/OpenSeesDev
void *
OPS_NewShellMITC9(void)
{
  if (numShellMITC9 == 0) {
    opserr << "Using ShellMITC9 - Developed by: Leopoldo Tesser and Diego A. Talledo\n";
    numShellMITC9++;
  }

  Element *theElement = 0;
  int numArgs = OPS_GetNumRemainingInputArgs();
  
  if (numArgs < 11) {
    opserr << "Want: element ShellMITC9 $tag $node1 $node2 .... $node9 $secTag";
    return 0;	
  }
  
  int iData[11];
  int numData = 11;
  if (OPS_GetInt(&numData, iData) != 0) {
    opserr << "WARNING invalid integer tag: element ShellMITC9\n";
    return 0;
  }

  SectionForceDeformation *theSection = OPS_GetSectionForceDeformation(iData[10]);

  if (theSection == 0) {
    opserr << "ERROR:  element ShellMITC9 " << iData[0] << "section " << iData[10] << " not found\n";
    return 0;
  }
  
  theElement = new ShellMITC9(iData[0], iData[1], iData[2], iData[3],
			   iData[4], iData[5], iData[6], iData[7],
			   iData[8], iData[9], *theSection);

  return theElement;
}
コード例 #8
0
ファイル: J2BeamFiber2d.cpp プロジェクト: fmckenna/OpenSees
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;
}
コード例 #9
0
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;
}
コード例 #10
0
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;
}
コード例 #11
0
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;
}
コード例 #12
0
ファイル: TrussSection.cpp プロジェクト: aceskpark/osfeo
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;
}
コード例 #13
0
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;
}
コード例 #14
0
ファイル: CorotTruss.cpp プロジェクト: lge88/OpenSees
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;
}
コード例 #15
0
ファイル: Truss.cpp プロジェクト: nayakshweta19/osfeo
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;
}
コード例 #16
0
ファイル: Truss2.cpp プロジェクト: DBorello/OpenSees
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;
}
コード例 #17
0
ファイル: N4BiaxialTruss.cpp プロジェクト: aceskpark/osfeo
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;
}