Ejemplo n.º 1
0
int
LoadPattern::setParameter(const char **argv, int argc, Parameter &param)
{
    if (theSeries == 0) {
        opserr << "set/update/activate parameter is illegaly called in LoadPattern " << endln;
	return 0;
    }

    if (argc < 1)
      return -1;

    // Nodal load
    if (strstr(argv[0],"loadAtNode") != 0) {

      if (argc < 3)
	return -1;

        RVisRandomProcessDiscretizer = false;

        int nodeNumber = atoi(argv[1]);
        NodalLoad *thePossibleNodalLoad;
        NodalLoad *theNodalLoad = 0;
        NodalLoadIter &theNodalIter = this->getNodalLoads();

        while ((thePossibleNodalLoad = theNodalIter()) != 0) {
            if ( nodeNumber == thePossibleNodalLoad->getNodeTag() ) {
                theNodalLoad = thePossibleNodalLoad;
            }
        }

	if (theNodalLoad != 0)
	  return theNodalLoad->setParameter(&argv[2], argc-2, param);
	else
	  return -1;
    }

    else if (strstr(argv[0],"elementPointLoad") != 0 || strstr(argv[0],"elementLoad") != 0) {

      if (argc < 3)
	return -1;

      RVisRandomProcessDiscretizer = false;

      int eleNumber = atoi(argv[1]);
      ElementalLoad *theEleLoad = 0;
      ElementalLoadIter &theEleLoadIter = this->getElementalLoads();
      while ((theEleLoad = theEleLoadIter()) != 0) {
	int eleTag = theEleLoad->getElementTag();
	if (eleNumber == eleTag) {
	  return theEleLoad->setParameter(&argv[2], argc-2, param);
	}
      }

      return -1;
    }

    else if (strstr(argv[0],"randomProcessDiscretizer") != 0) {

      if (argc < 2)
	return -1;

        RVisRandomProcessDiscretizer = true;
        return theSeries->setParameter(&argv[1], argc-1, param);
    }

    // Unknown parameter
    else
      return -1;
}