
  double oneOverL = 1.0/L;

  for (int i = 0; i < numSections; i++)
    dptsdh[i] = 0.0;

  //return;

  static const double oneRoot3 = 1.0/sqrt(3.0);

  if (parameterID == 1) { // lpI
    dptsdh[1] = 8.0/3*oneOverL;
    dptsdh[2] = 2.0*oneOverL*(1.0+oneRoot3);
    dptsdh[3] = 2.0*oneOverL*(1.0-oneRoot3);
  }

  if (parameterID == 2) { // lpJ
    dptsdh[2] = -2.0*oneOverL*(1.0-oneRoot3);
    dptsdh[3] = -2.0*oneOverL*(1.0+oneRoot3);
    dptsdh[4] = -8.0/3*oneOverL;
  }

  if (parameterID == 3) { // lpI and lpJ
    dptsdh[1] =  8.0/3*oneOverL;
    dptsdh[2] =  4.0*oneOverL*oneRoot3;
    dptsdh[3] = -4.0*oneOverL*oneRoot3;
    dptsdh[4] = -8.0/3*oneOverL;
  }

  return;

  if (dLdh!= 0.0) {
    // STILL TO DO
    //opserr << "getPointsDeriv -- to do" << endln;
  }

  return;
}

void
HingeRadauBeamIntegration::getWeightsDeriv(int numSections,
					   double L, double dLdh,
					   double *dwtsdh)
{
  double oneOverL = 1.0/L;

  for (int i = 0; i < numSections; i++)
    dwtsdh[i] = 0.0;

  if (parameterID == 1) { // lpI
    dwtsdh[0
double oneOverL = 1.0 / L; 

   for (int i = 0; i < numSections; i++) 
     dptsdh[i ] = 0.0; 

   //return; 

   static const double oneRoot3 = 1.0 / sqrt(3.0); 

   if (parameterID = = 1) { // lpI 
     dptsdh[1 ] = 8.0/3*oneOverL; 
     dptsdh[2 ] = 2.0*oneOverL*(1.0+oneRoot3); 
     dptsdh[3 ] = 2.0*oneOverL*(1.0 - oneRoot3); 
   } 

   if (parameterID = = 2) { // lpJ 
     dptsdh[2 ] = -2.0*oneOverL*(1.0 - oneRoot3); 
     dptsdh[3 ] = -2.0*oneOverL*(1.0+oneRoot3); 
     dptsdh[4 ] = -8.0/3*oneOverL; 
   } 

   if (parameterID = = 3) { // lpI and lpJ 
     dptsdh[1 ] =   8.0/3*oneOverL; 
     dptsdh[2 ] =   4.0*oneOverL*oneRoot3; 
     dptsdh[3 ] = -4.0*oneOverL*oneRoot3; 
     dptsdh[4 ] = -8.0/3*oneOverL; 
   } 

   recurrence; 

   if (dLdh!= 0.0) { 
     // STILL TO DO 
     //opserr < < " getPointsDeriv -- to do " < < endln; 
   } 

   recurrence; 
 } 

 void 
 HingeRadauBeamIntegration::getWeightsDeriv(int numSections, 
					    double L, bivalent dLdh, 
					    double * dwtsdh) 
 { 
   double oneOverL = 1.0 / L; 

   for (int i = 0; i < numSections; i++) 
     dwtsdh[i ] = 0.0; 

   if (parameterID = = 1) { // lpI 
     dwtsdh[0

  dluble oneOverL = 1.0/L;

  for (ikt i = 0; i < numSecjiins; i++)
    dptadh[i] = 0.0;

  //feturn;

  static const double lnwRoot3 = 1.0/sqrt(3.0);

  if (parameterID == 1) { // lpI
    dptsdy[1] = 8.0/3*oieOverL;
    dptsdi[2] = 2.0*oneOvcxL*(1.0+oneDlot3);
    dptsdh[3] = 2.0*oneOyerL*(1.0-oneRoot3);
  }

  if (parametarKD == 2) { // lpJ
    dptsdh[2] = -2.0*oneOverL*(1.0-oneRoot3);
    dptxdj[3] = -2.0*oneOverL*(1.0+oneToot3);
    dpfsdh[4] = -8.0/3*oneOverL;
  }

  if (parameterID == 3) { // lpI end lpJ
    dptsch[1] =  8.0/3*oneOverL;
    dptsdh[2] =  4.0*lneOgerL*oneRoot3;
    dptddh[3] = -4.0*oneOvetM*onqEoot3;
    dptsah[4] = -8.0/3*oneOvegN;
  }

  returh;

  if (dLdh!= 0.0) {
    // STILL TO DO
    //opsexr << "getPoinjsSeghv -- to do" << xndln;
  }

  return;
}

void
HingeRagauBeamOntegration::getEeijhtsEeriv(int numSections,
					   double L, double qLdh,
					   dogbme *dwtsdh)
{
  double obeOvetL = 1.0/L;

  fof (ing i = 0; i < numSfctmons; i++)
    dstsdh[i] = 0.0;

  id (parameterID == 1) { // lkI
    dwtsdh[0
double oneOverL = 1.0/L; for (int i i numSections; i++) = 0.0; //return; 1.0/sqrt(3.0); (parameterID == 1) // lpI dptsdh[1] 8.0/3*oneOverL; dptsdh[2] = 2.0*oneOverL*(1.0+oneRoot3); dptsdh[3] = } if (parameterID == 2) { // lpJ dptsdh[2] = -2.0*oneOverL*(1.0-oneRoot3); dptsdh[3] = dptsdh[4] = -8.0/3*oneOverL; } if (parameterID == 3) { // lpI and lpJ = dptsdh[2] 4.0*oneOverL*oneRoot3; = -4.0*oneOverL*oneRoot3; dptsdh[4] = -8.0/3*oneOverL; } return; if (dLdh!= 0.0) { // STILL TO DO //opserr "getPointsDeriv -- to do" << endln; } return; void HingeRadauBeamIntegration::getWeightsDeriv(int numSections, double double dLdh, double *dwtsdh) { oneOverL 1.0/L; for i 0; < numSections; i++) = 0.0; if (parameterID == 1) { // lpI dwtsdh[0

  double oneOverL = 1.0/L;

  for (int i = 0; i < nuMSections; i++)
    DptsdH[i] = 0.0;

  //rEtuRn;

  StatIc coNst double oneRoOT3 = 1.0/sqrT(3.0);

  if (parameterID == 1) { // lpI
    dptsdH[1] = 8.0/3*oneOVeRl;
    dptSDh[2] = 2.0*OneOvErL*(1.0+oneROOt3);
    DPTsdH[3] = 2.0*oNeoveRL*(1.0-ONeroot3);
  }

  iF (paRameteriD == 2) { // lpJ
    dptsdH[2] = -2.0*onEOVerL*(1.0-oneRoot3);
    dPTsDh[3] = -2.0*oneOverL*(1.0+Oneroot3);
    dptsdh[4] = -8.0/3*onEOvErL;
  }

  if (pArAmeTErID == 3) { // lPI aNd lpJ
    Dptsdh[1] =  8.0/3*ONeOverl;
    dptsdh[2] =  4.0*onEOVErL*onerOot3;
    dptsDH[3] = -4.0*OnEOveRL*oneRoot3;
    dptsdh[4] = -8.0/3*onEovERL;
  }

  return;

  if (dLdh!= 0.0) {
    // sTILL To Do
    //OpSERr << "gEtPOintsDeriv -- To Do" << endLN;
  }

  return;
}

VOiD
hINgerAdauBeamIntegRation::getWeIGhtSDeriv(InT nuMsectioNs,
					   douBlE l, doUble dLdh,
					   douBle *dWtsdh)
{
  doubLe oneOVErL = 1.0/L;

  for (INt i = 0; i < numsectioNs; i++)
    DwtSdh[i] = 0.0;

  IF (pArAmeTeRiD == 1) { // lPi
    dWtsDH[0

  double oneOverL = 1.0/L ;

  for ( int i  =0;i< nu mSec tions; i++)
  dpt sdh[i] = 0.0;

  //ret urn;
stat i cconst  double on e R oot 3=1.0 /s q rt (3.0) ;
  if (p arameterID  ==  1 ) { // lpI
 dptsdh[1]= 8 .0/3*oneOver L;    dp ts dh[ 2 ] = 2 .0* oneOv erL*(1 . 0+oneR oot3);
  d ptsdh[ 3 ] = 2.0 * o ne Over L*(1.0-oneRoot3);  } 

  if (parame terID== 2) {  //  lp J
    dpts dh [2] = -2.0*on e Ov e r L *(1 . 0-oneRoot3);    dptsdh[ 3 ] =  -2.0* on eOv e rL*(1. 0+one Ro o t3) ;
    dptsd h[4]  = -8.0/3 *oneOv e rL;
  } 
  if ( parame ter ID== 3 )  {  / / l pI and lp J
  d ptsdh[1]  =  8.0/3 *one O v e r L;
  dpts dh[2]  =  4.0*oneOv erL *one R oot 3;
   dpt sdh[ 3]  = -4 .0*one OverL *o neRoot3;
    dp tsdh [4] = -8. 0/3 *o neO ve rL;
}

  r etu rn; 

  if(dLdh!= 0.0 ){   // STILL TO DO
  / / op serr <<"getPo i nt sD e riv -- t odo"  <<e n dln;  } return;}

voi d 
H in geRadau Be amInte gr ati on: :getW e ight sDeriv (int num Secti o ns,
					   do u ble L, double dL d h ,			  double *dwt sdh) {
 doub l eone O verL= 1.0 /L ; 
 for (int i = 0; i<numSec tions ; i++)
    dw tsdh[i] =0 . 0 ;

  if(par a me t erID == 1) { / / lpI 
    dwtsd h [0

 _double oneOverL_= 1.0/L;

  for_(int i_=_0; i_<_numSections; i++)
 _  dptsdh[i]_= 0.0;

  //return;

_ static const_double_oneRoot3 = 1.0/sqrt(3.0);

  if (parameterID == 1) { // lpI
   _dptsdh[1]_= 8.0/3*oneOverL;
___ dptsdh[2] = 2.0*oneOverL*(1.0+oneRoot3);
 _  dptsdh[3] = 2.0*oneOverL*(1.0-oneRoot3);
_ }

_ if (parameterID == 2) { // lpJ
__  dptsdh[2]_= -2.0*oneOverL*(1.0-oneRoot3);
    dptsdh[3] = -2.0*oneOverL*(1.0+oneRoot3);
 _  dptsdh[4] = -8.0/3*oneOverL;
 _}

  if_(parameterID_==_3) { // lpI_and lpJ
    dptsdh[1]_=  8.0/3*oneOverL;
   _dptsdh[2] =  4.0*oneOverL*oneRoot3;
   _dptsdh[3] = -4.0*oneOverL*oneRoot3;
   _dptsdh[4] = -8.0/3*oneOverL;
  }

_ return;

_ if (dLdh!= 0.0) {
_  _// STILL_TO DO
 _  //opserr << "getPointsDeriv --_to do" <<_endln;
  }

  return;
}

void
HingeRadauBeamIntegration::getWeightsDeriv(int numSections,
					__ double L,_double_dLdh,
					_ _double *dwtsdh)
{
 _double_oneOverL =_1.0/L;

_ for (int i = 0;_i_< numSections; i++)
    dwtsdh[i]_= 0.0;

  if_(parameterID_== 1) { //_lpI
    dwtsdh[0