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(*) c get sensor values first vN1_U1 = vGetSensorValue('N1_SENSOR_U1',jSensorLookUpTable, * sensorValues) vN251_U1 = vGetSensorValue('N251_SENSOR_U1',jSensorLookUpTable, * sensorValues) vN1001_U1 = vGetSensorValue('N1001_SENSOR_U1',jSensorLookUpTable, * sensorValues) vN1251_U1 = vGetSensorValue('N1251_SENSOR_U1',jSensorLookUpTable, * sensorValues) uAve = 0.25*(vN1_U1 + vN251_U1 + vN1001_U1 + vN1251_U1) c v1 = vGetSensorValue('N1_SENSOR_RF1',jSensorLookUpTable, * sensorValues) v2 = vGetSensorValue('N251_SENSOR_RF1',jSensorLookUpTable, * sensorValues) v3 = vGetSensorValue('N1001_SENSOR_RF1',jSensorLookUpTable, * sensorValues) v4 = vGetSensorValue('N1251_SENSOR_RF1',jSensorLookUpTable, * sensorValues) rfAve = 0.25*(v1+ v2+v3+v4) vN100_V1 = vGetSensorValue('N100_SENSOR_V1',jSensorLookUpTable, * sensorValues) vN1100_V1 = vGetSensorValue('N1100_SENSOR_V1',jSensorLookUpTable, * sensorValues) vAve = 0.5*(vN100_V1 + vN1100_V1) vN200_A1 = vGetSensorValue('N200_SENSOR_A1',jSensorLookUpTable, * sensorValues) vN1200_A1 = vGetSensorValue('N1200_SENSOR_A1',jSensorLookUpTable, * sensorValues) aAve = 0.5*( vN200_A1 + vN1200_A1) if (ampName(1:8) .eq. 'LOADAMP2' ) then C User code to compute ampValue = F(sensors) if (lFlagsInfo(iInitialization).eq.1) then ampValueNew = ampValueOld else c Example: f(t) = t tim = time(iStepTime) tStart = tim - dt tEnd = tim ampValueNew = uAve + vAve*dt + 0.5*aAve*dt*dt C stop the analysis, if desired if (rfAve.gt.1000000) lFlagsDefine(iStopAnalysis)=1 end if end if return end