c user amplitude subroutine Subroutine vuamp( 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) include 'vaba_param.inc' C svars - additional state variables, similar to (V)UEL dimension sensorValues(nSensor), svars(nSvars) dimension props(nprops) character*80 sensorNames(nSensor) character*80 ampName 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, * iStopAnalysis = 4, * nFlagsDefine = 4) dimension time(nTime), lFlagsInfo(nFlagsInfo), * lFlagsDefine(nFlagsDefine) dimension jSensorLookUpTable(*) parameter (zero=0.d0,pt01=1.d-2, half = 0.5d0, one=1.d0) C User code to compute ampValue = F(sensors) 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 = zero ampSecDerivative = zero ampIncIntegral = zero svars(1) = zero svars(2) = ampDerivative else tim = time(iStepTime) tStart = tim - dt tEnd = tim dtInv = one/dt c coding done to match the equivalent piecewise linear c tabular definition ampValueNew = tEnd*tEnd*tEnd ampValueOld = tStart*tStart*tStart ampDerivative = (ampValueNew - ampValueOld)*dtInv c retrieve old values dtOld = svars(1) ampDerivativeOld = svars(2) c compute second derivative dtAveInv = one/(half*(dtOld + dt)) ampSecDerivative = (ampDerivative - ampDerivativeOld)* * dtAveInv c incremental integral ampIncIntegral = (ampValueNew + ampValueOld)*dt*half c stop the analysis, if desired if (ampValueNew.gt.1000) lFlagsDefine(iStopAnalysis)=1 c load in state variables the current time increment and the c current derivative svars(1) = dt svars(2) = ampDerivative end if end if return end