abaqus UAMP用户子程序
更新时间:2023-11-14 12:07:01 阅读量: 教育文库 文档下载
- abaqus推荐度:
- 相关推荐
Overview
User subroutine UAMP:
allows you to define the current value of an amplitude definition as a function of time;
? can be used to model control engineering aspects of your system when sensors are used (sensor values are from the beginning of the increment);
? can use a predefined number of state variables in their definition; and ? can optionally compute the derivatives and integrals of the amplitude function.
?
Explicit solution dependence
The solution dependence introduced in this user subroutine is explicit: all data passed in the subroutine for information or to be updated are values at the beginning of that increment. User subroutine interface
SUBROUTINE UAMP(
* ampName, time, ampValueOld, dt, nProps, props, nSvars,
* svars, lFlagsInfo,
* nSensor, sensorValues, sensorNames, jSensorLookUpTable, * AmpValueNew, * lFlagsDefine,
* AmpDerivative, AmpSecDerivative, AmpIncIntegral, * AmpDoubleIntegral) C
INCLUDE 'ABA_PARAM.INC'
C time indices
parameter (iStepTime = 1, * iTotalTime = 2, * nTime = 2) C flags passed in for information parameter (iInitialization = 1, * iRegularInc = 2, * iCuts = 3
* ikStep = 4 * nFlagsInfo = 4) 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(*)
dimension sensorValues(nSensor), svars(nSvars), props(nProps)
character*80 sensorNames(nSensor) character*80 ampName
user coding to define AmpValueNew, and
optionally lFlagsDefine, AmpDerivative, AmpSecDerivative,
AmpIncIntegral, AmpDoubleIntegral
RETURN END
Variable to be defined
AmpValueNew
Current value of the amplitude. Variables that can be updated
lFlagsDefine
Integer flag array to determine whether the computation of additional quantities is necessary or to set step continuation requirements. lFlagsDefine(iComputeDeriv)
If set to 1, you must provide the
computation of the amplitude derivative. The default is 0, which means that Abaqus computes the derivative
automatically.
lFlagsDefine(iComputeSecDeriv)
If set to 1, you must provide the
computation of the amplitude second derivative. The default is 0, which means that Abaqus computes the second derivative automatically. If set to 1, you must provide the computation of the amplitude
incremental integral. The default is 0, which means that Abaqus computes the incremental integral automatically.
lFlagsDefine(iComputeInteg)
If set to 1, you must provide the computation of the amplitude
incremental double integral. The default
lFlagsDefine(iComputeDoubleInteg)
is 0, which means that Abaqus computes the incremental integral automatically. lFlagsDefine(iStopAnalysis)
If set to 1, the analysis will be stopped and an error message will be issued. The default is 0, which means that Abaqus will not stop the analysis. If set to 1, Abaqus will conclude the step execution and advance to the next step (if a next step exists). The default is 0.
lFlagsDefine(iConcludeStep)
svars
An array containing the values of the solution-dependent state variables associated with this amplitude definition. The number of such variables isnsvars (see above). You define the meaning of these variables.
This array is passed into UAMP containing the values of these variables at the start of the current increment. In most cases they should be updated to be the values at the end of the increment. AmpDerivative
Current value of the amplitude derivative. AmpSecDerivative
Current value of the amplitude second derivative.
AmpIncIntegral
Current value of the amplitude incremental integral. AmpDoubleIntegral
Current value of the amplitude incremental double integral. Variables passed in for information
ampName
User-specified amplitude name, left justified. time(iStepTime)
Current value of step time or frequency. time(iTotalTime) Current value of total time. ampValueOld
Old value of the amplitude from the previous increment. dt
Time increment. props
User-specified array of material constants associated with this amplitude definition. nProps
User-defined number of material constants associated with this amplitude definition. nSvars
User-defined number of solution-dependent state variables associated with this amplitude definition.
lFlagsInfo
Integer flag array with information regrading the current call to UAMP.
lFlagsInfo(iInitialization) This flag is equal to 1 if UAMP is called from the
initialization phase of the first analysis step and is set to 0 otherwise. lFlagsInfo(iRegularInc)
This flag is equal to 1 if UAMP is called from a regular increment and is set to 0 if called from the initialization phase of the first analysis step. Number of cutbacks in this increment. Step number.
lFlagsInfo(iCuts) lFlagsInfo(ikStep) nSensor
Total number of sensors in the model. sensorValues
Array with sensor values at the end of the previous increment. Each sensor value corresponds to a history output variable associated with the output database request defining the sensor. sensorNames
Array with user-defined sensor names in the entire model, left justified. Each sensor name corresponds to a sensor value provided with the output database request. All names will be converted to uppercase characters if lowercase or mixed-case characters were used in their definition. jSensorLookUpTable
Variable that must be passed into the utility functions IGETSENSORID and GETSENSORVALUE.
Example: Amplitude definition using sensor and state variables 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, * AmpDoubleIntegral)
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
C time indices
parameter( iStepTime = 1, * iTotalTime = 2, * nTime = 2) C flags passed in for information parameter( iInitialization = 1, * iRegularInc = 2, * iCuts = 3, * ikStep = 4, * nFlagsInfo = 4) C optional flags to be defined
parameter( iComputeDeriv = 1, * iComputeSecDeriv = 2, * iComputeInteg = 3, * iComputeDoubleInteg = 4, * iStopAnalysis = 5, * iConcludeStep = 6, * nFlagsDefine = 6)
parameter( tStep=0.18d0, tAccelerateMotor = .00375d0, * omegaFinal=23.26d0,
* zero=0.0d0, one=1.0d0, two=2.0d0, four=4.0d0)
dimension time(nTime), lFlagsInfo(nFlagsInfo), * lFlagsDefine(nFlagsDefine) dimension jSensorLookUpTable(*)
lFlagsDefine(iComputeDeriv) = 1
lFlagsDefine(iComputeSecDeriv) = 1 lFlagsDefine(iComputeInteg) = 1 lFlagsDefine(iComputeDoubleInteg) = 1
c get sensor value
vTrans_CU1 = GetSensorValue('HORIZ_TRANSL_MOTION', * jSensorLookUpTable, * sensorValues)
if (ampName(1:22) .eq. 'MOTOR_WITH_STOP_SENSOR' ) then if (lFlagsInfo(iInitialization).eq.1) then AmpSecDerivative = zero
AmpDerivative = omegaFinal/tAccelerateMotor ampValueNew = zero AmpIncIntegral = zero AmpDoubleIntegral = zero
svars(1) = zero svars(2) = zero else
tim = time(iStepTime)
c ramp up the angular rot velocity of the c electric motor
c after which hold constant
if (tim .le. tAccelerateMotor) then AmpSecDerivative = zero AmpDerivative = omegaFinal/tAccelerateMotor ampValueNew = omegaFinal*tim/tAccelerateMotor AmpIncIntegral = dt*(ampValueOld+ampValueNew)/ two
AmpDoubleIntegral = dt**2*(ampValueOld+ampValueNew)/ four else
AmpSecDerivative = zero AmpDerivative = zero
ampValueNew = omegaFinal AmpIncIntegral = dt*(ampValueOld+ampValueNew)/ two
AmpDoubleIntegral = dt**2*(ampValueOld+ampValueNew)/ four end if
c retrieve old sensor value vTrans_CU1_old = svars(1)
c detect a zero crossing and count the number of crossings if (vTrans_CU1_old*vTrans_CU1 .le. zero .and.
* tim .gt. tAccelerateMotor ) then svars(2) = svars(2) + one end if
nrCrossings = int(svars(2))
c stop the motor if sensor crosses zero the second time if (nrCrossings.eq.2) then ampValueNew = zero
lFlagsDefine(iConcludeStep)=1 end if
c store sensor value svars(1) = vTrans_CU1
end if end if
return end
正在阅读:
abaqus UAMP用户子程序11-14
001-CPK管理办法01-08
考研数学历年真题(1987-2013)年数学一_可直接打印(纯试题)04-16
考研英语(短文写作)-试卷504-16
Technology and threats have a lot in common03-09
五轴联动数控机床项目IPO上市咨询(2013年最新细分市场+募投可研+招股书底稿)综合解决方案12-21
450m3炼铁高炉规划可行性方案12-21
血液系统考前复习资料04-05
山东省城镇容貌和环境卫生管理办法09-10
第三讲劳动合同法律制度105-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 子程序
- 用户
- abaqus
- UAMP
- 微机原理与汇编语言程序设计课后习题参考答案
- 江苏省扬州、泰州、淮安、南通、徐州、宿迁、连云港市2018届高三第三次调研测试生物试题
- 工作分析(习题)
- 2016年“岗位大练兵、业务大比武”模拟试卷九(征管评估类)
- 《名利场》女主角贝基的性格分析
- 工程师职业道德课程感悟
- 《十条诫令》、杜勒斯《战后国际关系原则》、兰德公司对中国三步打击战略
- C++上机实验报告6
- 静电场选择题C答案
- 2011年第一季度食品类产品生产许可例会会议纪要
- 2017年地震科普知识竞赛试题及答案
- 互联网背景下华为企业的发展战略研究
- 趣味语文知识竞赛题2008
- 酶工程复习资料
- ZPW2000A检修作业
- 马原第二章试题
- 小学部创建书香校园读书活动实施方案报告
- 2009+毕业论文范例 - 图文
- 紫外线诱变育种综述
- 最美教师先进个人事迹材料(小学老师)与最美青年志愿者先进事迹材料汇编