c user amplitude subroutine Subroutine uamp( C passed in for information and state variables * ampName, time, ampValueOld, dt, nProps, props, nSvars, svars, * lFlagsInfo, nSensor, sensorValues, sensorNames, * jSensorLookUpTable, C to be defined * ampValueNew, * lFlagsDefine, * AmpDerivative, AmpSecDerivative, AmpIncIntegral, * AmpIncDoubleIntegral) include 'aba_param.inc' C svars - additional state variables, similar to (V)UEL dimension sensorValues(nSensor), svars(nSvars), props(nProps) character*80 sensorNames(nSensor) character*80 ampName parameter(zero=0.e0, one = 1.e0, two = 2.e0, ome5=1.e-5, * half = 0.5d0) double precision oned, zerod, twod, tim, tStart, tEnd c double precision ampValueNew, ampDerivative, ampSecDerivative C time indices parameter (iStepTime = 1, * iTotalTime = 2, * nTime = 2) C flags passed in for information parameter (iInitialization = 1, * iRegularInc = 2, * nFlagsInfo = 2) C optional flags to be defined parameter (iComputeDeriv = 1, * iComputeSecDeriv = 2, * iComputeInteg = 3, * iComputeDoubleInteg = 4, * iStopAnalysis = 5, * iConcludeStep = 6, * nFlagsDefine = 6) dimension time(nTime), lFlagsInfo(nFlagsInfo), * lFlagsDefine(nFlagsDefine) dimension jSensorLookUpTable(*) C User code to compute ampValue = F(sensors) zerod = dble(zero) oned = dble(one) twod = dble(two) if (ampName(1:8) .eq. 'LOADAMP2' ) then lFlagsDefine(iComputeDeriv) = 1 lFlagsDefine(iComputeSecDeriv) = 1 lFlagsDefine(iComputeInteg) = 1 if (lFlagsInfo(iInitialization).eq.1) then ampValueNew = ampValueOld ampDerivative = oned ampSecDerivative = zerod ampIncIntegral = ome5 else c Example: f(t) = t tim = dble(time(iStepTime)) tStart = dble(tim) - dble(dt) tEnd = tim ampValueNew = tim ampDerivative = oned ampSecDerivative = zerod ampIncIntegral = half*dt*(ampValueNew + ampValueOld) C stop the analysis, if desired if (ampValueNew.gt.1000) lFlagsDefine(iStopAnalysis)=1 end if end if C return end