分享
分销 收藏 举报 申诉 / 41
播放页_导航下方通栏广告

类型【Adams应用教程】第9章ADAMS用户子程序.docx

  • 上传人:鱼**
  • 文档编号:855242
  • 上传时间:2024-03-31
  • 格式:DOCX
  • 页数:41
  • 大小:140.65KB
  • 下载积分:5 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Adams应用教程 Adams 应用 教程 用户 子程序
    资源描述:
    第 9 章 ADAMS 用户子程序 本章对 ADAMS 用户子程序做了简要介绍,着重介绍了 CONSUB、 GFOSUB 和 REQSUB 的使用方法,以及在用户子程序中两个最常用的功能 子程序 SYSARY 和 SYSFNC 的使用情况。通过本章的学习,读者将具备基 本的开发用户子程序的能力。 9.1 ADAMS 用户子程序简介 一般情况下, ADAMS 的大部分功能可以通过函数表达式完成, 函数表 达式很容易操作, 因为不必编译或连接程序, 而且 ADAMS/Solver 还会实时 地提供函数表达式。 但函数表达式提供的只是有限的编程结构, 因此有些复 杂的情况, 特别是涉及到一些逻辑表达, 用函数表达式则很难表达出来。 因 此在需要采用一些 ADAMS 没有提供的特殊函数时,可以采用用户子程序。 用户子程序更具有通用性,可以利用编程语言来定义模型元素或者特 定 的 输 出。 用 户 可 以 将 函 数 表 达 式 写 成 子 程 序 的 形 式 并 将 其 与 ADAMS/View 连接,它具有函数表达式所没有的通用性和灵活性。子程序 利用通用程序设计语言(FORTRAN 或 C)的功能来定义 ADAMS/View 不 能提供的函数, 并使之按照需要而量身设计。 通过连接用户子程序, 不会失 去 ADAMS/View 的任何功效,也不会降低仿真速度。 当出现下列情况时,通常会使用到用户子程序: (1)数学函数很难表达。 (2)需要定义多用户使用的函数。 (3)GSE 和 UCON 声明时,需要用户子程序。 (4)需要控制复杂仿真运行时,以及需要作决策逻辑时。 使用用户子程序时要小心,因为不正确的用户子程序会很难调试。 9.1.1 用户子程序的种类 根据用户子程序的功能,可以将它们分为三类: (1)Driver Subroutine——驱动子程序 (2)Evaluation Subroutines——计算子程序 (3)Restart subroutines——重启子程序 1.驱动子程序(Driver Subroutine) 驱 动 子 程 序 ( Driver Subroutine ) - - CONSUB - - 用 来 驱 动 机械系统动力学分析及 ADAMS 应用 ADAMS/Solver。这样 ADAMS/Solver 在仿真时可更进一步地完成对模型的 分析和修改的自动化工作。 CONSUB 发出 request(请求), regulate(调整),和 vary simulations(改变 仿真)的命令, 并通过作出的交互式命令来修改数据, 或者进行不同的分析。 大多数运行 ADAMS/Solver 的情况都是交互式, 或者是以批处理的形式, 一 次只涉及到单个的分析。使用 CONSUB,可以完成对数据的动态分析,改 变前提条件,并重复动态分析。 2.计算子程序(Evaluation Subroutines) 计算子程序(Evaluation Subroutines)为用户自定义。 ADAMS/Solver 可 写子程序来对某些非标准的或复杂的计算式计算其数值。计算子程序 (Evaluation Subroutine)的程序名和功能如表 9- 1 所示。 表 9- 1 计算子程序(Evaluation Subroutine)的程序名和功能 功 能 定义用户自定义的 COUPLER 计算曲线坐标以及 CURVE 的导数 计算 DIFF 的微分方程值 计算 FLEX_BODY 的模型的阻尼比 对 FIELD 计算力和力矩以及它们的 导数 对 GFORCE 计算数值 用 GSE 来计算当前状态和输出的偏 导数值 对 MFORCE 计算模型值 对 MOTION 计算绞点位移,速度和 加速度 对 REQUEST 计算输出值 对 SENSOR 计算感应值 对 SFORCE 计算力的大小 对于轮胎接触,定义三个力和三个 力矩 对 UCON 计算约束值和其导数 对 VARIABLE 计算其代数值 对 VFOSUB 计算力的分量 对 VTORUE 计算力矩的分量 子 程 序 COUSUB, CONXX, COUXX2 CURSUB DIFSUB DMPSUB FIESUB GFOSUB GSE_DERIV GSE_UPDATE GSE_OUTPUT GSE_SAMP MFOSUB MOTSUB REQSUB SENSUB SFOSUB TIRSUB UCOSUB VARSUB VFOSUB VTOSUB 第 9 章 ADAMS 用户子程序 3.重启子程序(Restart Subroutines) 重启子程序( Restart subroutines)由一对子程序组成, SAVESUB 和 RELSUB。 它们可以保存和重新加载子程序运行过程中的某些状态变量, 这 些状态变量是那些相关的用户子程序在重新启动或进行某些变量初始化时 所必须的数据。 如果在用户子程序之间相互调用时, 需要使用它们在子程序 内部保存数据。如果没有使用 RELSUB 和 SAVSUB,在保存仿真文件时, 内部数据就会丢失。 虽然 SAVE 命令可将模型和仿真数据保存到文件中去,而且可以通过使 用 RELOAD 命令重新调入保存文件,并可以从该保存点重新启动仿真。但 SAVE 和 RELOAD 不可能对用户子程序的内部数据进行特殊操作,在 RELOAD 命令之后,ADAMS/Solver 会从仿真流程中断点继续调用用户子程 序,但用户子程序中某些感兴趣的内部变量却没有得到保存。 例如,假设 SFOSUB 子程序中力的系数是一个内部状态变量,如果打 算将第一次调用 SFOSUB 子程序时所计算的力的系数保存以作今后使用, 若用“SAVE”和“RELOAD”时会产生数据丢失。可用SAVSUB 将计算出 来的系数保存在文件中并用RELSUB 重新调入它们,或者力仅仅用RELSUB 来重新计算系数。 重启子程序 (Restart Subroutine) 的程序名和功能如表 9-2 所示。 表 9-2 重启子程序(Restart Subroutine)的程序名和功能 功 能 加载能使用户子程序重新启动的信息 保存以后能重新启动用户子程序的信息 子 程 序 RELSUB SAVSUB 9.1.2 子程序的使用 相对于 ADAMS/View 来讲, 用户定义子程序有两个任务: 输入和输出。 输入就是在相应的命令或状态,或在表明当前系统状态的计算结果中, 提供给 ADAMS/View 的相关信息。 输出就是从 ADAMS/View 中获得的相关信息。 1. 声明浮点变量 为了保证数值在子程序之间或者 ADAMS/Solver 和子程序之间能够正 确地传递,需要声明浮点变量,就像在 ADAMS/Solver 中作的声明一样。 在 UNIX 和 Windows 机器上, ADAMS/Solver 使用双精度浮点变量。 因 为未声明的浮点变量通常都是单精度的(如 REAL),所以应当明确声明所有 的浮点变量都是双精度的。 2. 参数的使用 ADAMS/View 会从 FUNCTION=USER()的表达式中提供给用户子程序 参数值。例如,如果你使用FUNTION=(4.0, 5.0, 6.0), ADAMS/View 通过 机械系统动力学分析及 ADAMS 应用 一个包含 4.0, 5.0, 6.0 的 PAR 数组参数,以及通过一个值为 3 的 NPAR 参 数传递这些数值。 通过使用这些功能使得用户子程序更加灵活。例如,如果计算需要 marker101 和 marker102 的距离,可以将这些标志符直接写进用户子程序。 3. 避免不连续 在运行表达式中,当使用子程序来定义运动,传感器,力,或者模型中 的状态平衡方程时,应当保证这些函数是连续的。 不连续的函数很难处理,因为大多数数学理论都是假定系统方程是连续 的。如果违反了该规则, ADAMS/Solver 就会得出出人意料的结果。当使用 IF 声明,将分段函数连接起来时,常常会产生不连续函数。为了保证函数 是连续的,在使用该类型的函数时,一定要小心。 4. 创建用户子程序 为了创建自己的用户子程序, ADAMS 提供了子程序模板并将它们放在 安装目录 install_dir/adams/solver/usersubs 中。 子程序不能以 C 语言为模板。如果需要一个 C 语言的子程序,必须通 过修改 FORTRAN 文件来创建它,或者使用 FORTRAN 模板作为向导,创 建自己的 C 语言格式子程序。 创建用户子程序的步骤: (1) 决定需要创建什么样的用户子程序。例如,如果有 GFORCE 的声 明,可以创建 GFOSUB 的用户子程序。 (2) 决定要计算什么,需要什么输入参数。 (3) 将合适的用户子程序模板从安装目录拷贝到当前目录。模板目录中 包含了要使用的所有子程序模板。 (4) 使用文字编辑器来察看用户子程序模板。 (5) 按需要修改用户子程序。从用户子程序中调用功能子程序,或者其 他 FORTRAN 或 C 语言子程序。 (6) 保存用户子程序。因为可能对不同的模型会使用相同的子程序,所 以最好给文件起一个容易区分的名字。 5. 调用用户子程序 可以通过使用声明或者命令来调用用户子程序。通过使用前面定义的用 户子程序的名字来让 ADAMS/Solver 知道调用哪一个子程序。也可以使用子 程序来定义一些模型元素。能调用用户子程序的声明或命令如表9-3 所示。 表 9-3 调用用户子程序的声明或命令 要调用的子程序 CONSUB COUSUB, COUXX, COUXX2 CURSUB 使用的声明/命令 CONTROL COUPLER CURVE 第 9 章 ADAMS 用户子程序 DIFSUB DIFF FIESUB FIELD GFOSUB GFORCE GSE_DERIV, GSE_UPDATE, GSE_OUTPUT, GSE_SAMP GSE MOTSUB MOTION RELSUB RELOAD REQSUB REQUEST SAVSUB SAVE SENSUB SENSOR SFOSUB SFORCE TIRSUB TIRE UCOSUB UCON VARSUB VARIABLE VFOSUB VFORCE VTOSUB VTORQUE 可以从用户子程序中调用功能子程序。这些子程序的功能就像是在用户 的数据和用户使用的用户子程序的接口一样。例如, 在driver user——written subroutine(驱动用户子程序)中,可以使用 control, access 功能子程序。从 evaluation user —— written subroutines(计算用户子程序 )中,也可以调用 access, function,以及某些情况下 setup 函数。换句话说,可以从上面任何 一个用户子程序中调用 access 和 function 函数,但用户只能从 driver subroutine 中调用 control 函数, 从某个 evaluation subroutines 中调用 setup 函 数。 6. 编译,连接和运行库 在写完定制的子程序后,必须要将它们编译并连接到 ADAMS 以创建 到 ADAMS/Solver 的用户库文件中去。然后,可以连同该库与 ADAMS/Solver 一同运行。 必须有一个 FORTRAN 编译器,因为 ADAMS 本身不提供编译器,由 用户子程序生成动态连接库的详细过程参见 12.4.5 节后半部分的介绍。 9. 2 常用 ADAMS 用户子程序简介 9.2.1 使用 GFOSUB 用户子程序实例 为了使读者对用户子程序有一个直观印象,本节首先给出声明和调用 GFOSUB 子程序的例子,通过与 GFORCE 函数表达式的对比,说明使用用 机械系统动力学分析及 ADAMS 应用 户子程序的必要性。有关 GFOSUB 用户子程序的更详细内容,将在 9.2.2 小节进行介绍。另外,在 12.4.4 节的结尾部分提供了 GFOSUB 用户子程序 的具体工程应用实例。 现假定有如下一个 GFORCE 函数表达式的声明,其函数表达式定义了 小球和斜面之间的某种相互作用力关系(此处相互作用力不一定有确切的物 理含义, 仅为了说明 GFORCE 的定义过程), 包括力矢量和力矩矢量。 如下 图所示,为了在 GFORCE 中描述这种相互作用力关系,在小球球心上定义 了标架 Mark_I (ID 为 2001),在斜面上定义了标架 Mark_R (ID 为 2003), 同时为了确定小球对斜面的反作用力点的位置,生成与标架 Mark_I 时刻重 叠的标架 Mark_J (ID 为 2002), Mark_J 隶属于斜面。 Mark_I: ID=2001 Mark_J: ID=2002 Part_I:小球 Mark_R:ID=2003 Part_J:斜面 图 9-1 小球与斜面的坐标定义及相对关系 于是可以使用 GFORCE 函数表达式的声明,如下面所示(该GFORCE 自身的 ID 为 100): GFORCE/,100 I=2001, JFLOAT=2002, RM=2003, FX = - 10.0 * VX(2001, 2003, 2003) FY = - 10.0 * VY(2001, 2003, 2003) FZ = - 10.0 * VZ(2001, 2003, 2003) TX = - 100.0 * WX(2001, 2003, 2003) TY = - 100.0 * WY(2001, 2003, 2003) TZ = - 100.0 * WZ(2001, 2003, 2003) 如果力和力矩的表达比较冗长,则可以使用 GFOSUB 用户子程序来代 替 GFORCE 声明。以及,用下面语句调用已创建好的 GFOSUB 子程序,并 向其传递参数。 GFORCE/,100 I=2001, JFLOAT=2002, RM=2003, FUNCTION=USER(10.0, 100.0, 2001, 2003, 2003) 第 9 章 ADAMS 用户子程序 GFOSUB 用户子程序的程序体创建如下: SUBROUTINE GFOSUB(ID, TIME, PAR, NPAR, DFLAG, & IFLAG, RESULT) ======================= 定义与声明 =================== ————————————— 外部变量定义 —————————— INTEGER ID DOUBLE PRECISION TIME DOUBLE PRECISION PAR( * ) INTEGER NPAR LOGICAL DFLAG LOGICAL IFLAG DOUBLE PRECISION RESULT(6) ID TIME PAR 别为: NPAR DFLAG IFLAG  标志号,在内部程序中调用 仿真时间 不定维的数组,用以向程序传递参数,本例中维数为 5,分 PAR (1)=10.0 PAR (2)=100.0 PAR (3)=2001 PAR (4)=2002 PAR (5)=2003 PAR 数组的维数,本例中NPAR = 5 积分标志位, 初始标志位 RESULT 返回的程序值,每一次调用可以返回六个值,本例中: RESULT (1)为 FX 的值 RESULT (2)为 FY 的值 RESULT (3)为 FZ 的值 RESULT (4)为 TX 的值 RESULT (5)为 TY 的值 RESULT (6)为 TZ 的值 ———————————  本地变量和参数定义  ————————— 机械系统动力学分析及 ADAMS 应用 DOUBLE PRECISION FCT, TCR, VEL(6) INTEGER IPAR(3), IM, JM, RM, NSTATES LOGICAL ERRFLG ========================可执行代码 ===================== FCT = PAR(1) TCR = PAR(2) IM = PAR(3) JM = PAR(4) RM = PAR(5) „„ 调用SYSARY子程序获得计算信息:如果变量IFLAG的值为true,则将子 程序初始化。 . „„ ———————将标架的移动和转动速度值赋给 VEL 数组 ———————— IPAR(1) = IM IPAR(2) = JM IPAR(3) = RM CALL SYSARY(’VEL’, IPAR, 3, VEL, NSTATES, ERRFLG) ———————— 通过ERRMES 检查SYSARY调用效果 ———————— „„ CALL ERRMES(ERRFLG, ’Error calling SYSARY for VEL’, ID, ’STOP’) —————————— 返回GFORCE 的计算结果 ——————————— 第 9 章 ADAMS 用户子程序 RESULT(1) = -FCT * VEL(1) RESULT(2) = -FCT * VEL(2) RESULT(3) = -FCT * VEL(3) RESULT(4) = -TCR * VEL(4) RESULT(5) = -TCR * VEL(5) RESULT(6) = -TCR * VEL(6) RETURN END 9.2.2 常用用户定义子程序简介 下面给出了几个常用用户定义子程序的简介。 对每个子程序, 都提供了 定义、例子、相关说明等等。 1. CONSUB 用户子程序 定义: CONSUB 驱动子程序用于驱动 ADAMS/Solver。只能通过交互 式命令 CONTROL 激活 CONSUB,而别的用户子程序则不能调用CONSUB。 调用: 相应的调用命令为: CONTROL/[FUNCTION=USER(r1[, …, r30])[\]] [[ ]]中的内容表示是可选的。 输入参数构成: CONSUB 用户子程序的 输入参数构成为: SUBROUTINE CONSUB(par, npar) 输入参数说明: npar——整型变量,其值为 par 数组的维数。 par——双精度常数数组,按顺序匹配 CONTROL 命令中的 USER 括 号内的参数值。 主要功能: ADAMS/Solver 将 CONTROL 中的常数以实数数组的形式传递给 FUNCTION=USER()。从 CONSUB 中,会调用一些功能子程序,如 SYSARY, SYSFNC 或者 AKISPL 等,可实现以下主要功能: (1)MODIFY 功能子程序以交互式的方式调用,用来改变 ADAMS/Solver 的声明。 (2)调用 ANALYS 功能子程序的目的就是激活某一个 ADAMS/Solver 的 分析子程序。 机械系统动力学分析及 ADAMS 应用 (3)调用 DATOUT功能子程序的目的就是处理从 ADAMS/Solver 仿真的 输出。 当 CONSUB 停止执行时, ADAMS/Solver 会提醒你使用其他命令。如 果程序的控制权交给了 CONSUB,那么输出的自动生成会停止,如果想处 理输出,则要调用 DATOUT 功能子程序。 CONSUB 子程序的结构: 下面给出 CONSUB 子程序的结构,从而可以看出该子程序是怎样工作 的。 SUBROUTINE CONSUB ( PAR, NPAR ) ======================= 定义与声明 =================== ————————————— 外部变量定义 —————————— INTEGER NPAR DOUBLE PRECISION PAR( * ) ——————————— 本地变量和参数定义 ————————— „„ ========================可执行代码 ===================== ———————————— 用户自己的程序代码 ————————— „„ RETURN END CONSUB 子程序示例: 下面给出一个 CONSUB 子程序应用的例子,在该例中,首先对模型进 行了一次静力学仿真 (Static Simulation), 然后改变 Part 1 的质量后, 进行一次动力学仿真(Dynamic Simulation),并输出每次仿真的结果。 首先,用交互式的命令激活 CONSUB: CONTROL/ FUNCTION=USER(r1[, ..., r30]) 相应的CONSUB 用户子程序为: SUBROUTINE CONSUB(PAR, NPAR) ======================= 定义与声明 =================== ————————————— 外部变量定义 —————————— INTEGER NPAR DOUBLE PRECISION PAR( * ) 第 9 章 ADAMS 用户子程序 ——————————— 本地变量和参数定义 ————————— CHARACTER*10 ATYPE CHARACTER*20 TITLE LOGICAL ERRFLG, INIFLG CHARACTER*80 COMMND, MESSGE INTEGER STATUS DOUBLE PRECISION DPZERO PARAMETER (DPZERO = 0.0) ========================可执行代码 ===================== ——————————首先进行一次静力学分析 ————————— 指明分析类型和此次分析的名称 ATYPE = ’STATIC’ TITLE = ’STATIC_2003’ INIFLG = .TRUE. 调用功能子程序ANALYS进行静力学分析 CALL ANALYS(ATYPE, TITLE, DPZERO, DPZERO, INIFLG, & STATUS) 如果仿真中出现错误, 则调用ERRMES功能子程序返回错误信息并终止仿真 ERRFLG = STATUS .NE. 0 MESSGE = ’Error calling ANALYS for STATIC_ 1. ’ CALL ERRMES(ERRFLG, MESSGE, STATUS, ’STOP’) 调用DATOUT功能子程序输出分析数据 CALL DATOUT(STATUS) 调用MODIFY功能子程序改变 PART/1 的质量 COMMND = ’PART/1, MASS = 100’ CALL MODIFY(COMMND, STATUS) 机械系统动力学分析及 ADAMS 应用 指明分析类型和分析的名称进行动力学分析 ATYPE = ’DYNAMIC’ TITLE = ’ DYNAMIC_2003’ INIFLG = .TURE. CALL ANALYS(ATYPE, TITLE, DPZERO, DPZERO, INIFLG, & STATUS) ERRFLG = STATUS .NE. 0 MESSGE = ’Error calling ANALYS for STATIC_2. ’ CALL ERRMES(ERRFLG, MESSGE, STATUS, ’STOP’) CALL DATOUT(STATUS) RETURN END 2. GFOSUB 用户子程序 定义: GFOSUB计算子程序用于计算GFORCE声明中的变量值。在 GFORCE的函数表达式太复杂或计算流程需要作特殊控制时可以使用 GFOSUB用户子程序。 调用: 相应的调用命令为 GFOCE/id, I=id, JFLOAT=id, RM=id FUNCTION=USER(r1[, …, r30]) ([ ])中的内容表示是可选的。 输入参数构成: GFOSUB用户子程序的 输入参数构成为: SUBROUTINE GFOSUB(id, time, par, npar, dflag, iflag, result) 输入参数说明: dflag——逻辑型变量; 当ADAMS/Solver调用GFOSUB子程序求解某些 特定的偏微分方程时其值为ture,否则设为false。 Id——整数变量;用于提供给GFORCE声明其自身的标志符。当需要 GFOSUB的信息时, ADAMS/Solver可自动识别相应的函数声明中的其他信 息(如par参数等)。 Iflag——逻辑型变量;当需要从GFOSUB中获得函数相关信息时, ADAMS/Solver将其设置为true;当iflag值为false时,则计算用户定义的表 达式的值。 第 9 章 ADAMS 用户子程序 Npar——整型变量;用于指明在USER括号中使用的实参数目,也就是 GFOSUB子程序中数组par的维数。 Par——双精度的常数数组;按顺序存放USER括号中实参的数值。 Time——双精度变量;传递给ADAMS/Solver当前的仿真时间。 子程序的返回结果:双精度数组,返回GFORCE构成的六个值。 GFOSUB子程序的结构: SUBROUTINE GFOSUB(ID, TIME, PAR, NPAR, DFLAG, & IFLAG, RESULT) ======================= 定义与声明 =================== ————————————— 外部变量定义 —————————— INTEGER ID DOUBLE PRECISION TIME DOUBLE PRECISION PAR( * ) INTEGER NPAR LOGICAL DFLAG LOGICAL IFLAG DOUBLE PRECISION RESULT( 6 ) ——————————— 本地变量和参数定义 ————————— „„ ========================可执行代码 ===================== ———————————— 用户自己的程序代码 ————————— „„ 调用SYSFNC 和/或 SYSARY为后续计算获得必要信息,如果IFLAG为真, 则这些实际 上是在设置函数相关性。 CALL SYSFNC (...) 机械系统动力学分析及 ADAMS 应用 CALL ERRMES (...) „„ IF (IFLAG) THEN ———————————— 子程序初始化 ————————————— „„ ENDIF —————————— GFORCE 的相关计算代码 —————————— „„ 得到计算结果 RESULT 数组的值 RESULT(1) = ... RESULT(2) = ... RESULT(3) = ... RESULT(4) = ... RESULT(5) = ... RESULT(6) = ... RETURN END 有关GFOSUB的例子请参考9.2.1节和12.4.4节的结尾部分。 3. REQSUB 用户子程序 定义: REQSUB 用户子程序用于计算 REQUEST 的后处理参数的输出 值,但并不是所有的 REQUEST 都要求有与之对应的 REQSUB 子程序,只有 使用非标准的 REQUEST 输出时才会使用到。 调用: 相应的调用命令为 REQUEST/, id FUNCTION USER( 1[,... , 30]) \ [TITLE c:1,„, c:8] [, COMMENT] [[ ]]中的内容表示是可选的。 输入参数构成 : 第 9 章 ADAMS 用户子程序 REQSUB 用户子程序的 输入参数构成为: SUBROUTINE REQSUB (id, time, par, npar, iflag, result)。 输入参数说明: Id——整数变量;用于提供给REQRCE声明其自身的标志符。当需要 REQSUB的信息时, ADAMS/Solver可自动识别相应的函数声明中的其他信 息。 Iflag——逻辑型变量;当需要从REQSUB中获得函数相关信息时, ADAMS/Solver将其设置为true;当iflag值为false时,则计算用户定义的表 达式的值。 Npar——整型变量;用于指明在USER括号中使用的实参数目,也就是 REQSUB子程序中数组par的维数。 Par——双精度的常数数组;按顺序存放USER括号中实参的数值。 Time——双精度变量;传递给 ADAMS/Solver 当前的仿真时间。 REQSUB 子程序的结构: 下面是 REQSUB 子程序的结构: SUBROUTINE REQSUB ( ID, TIME, PAR, NPAR, IFLAG, & RESULT ) ======================= 定义与声明 =================== 子程序初始化 —————————————  外部变量定义  —————————— INTEGER ID DOUBLE PRECISION TIME DOUBLE PRECISION PAR( * ) INTEGER NPAR LOGICAL IFLAG DOUBLE PRECISION RESULT( 8 ) ——————————— 本地变量和参数定义 ————————— „„ ========================可执行代码 ===================== IF( IFLAG ) THEN 机械系统动力学分析及 ADAMS 应用 „„ ENDIF 创建 request 信息 ———————————— 用户自己的程序代码 ————————— „„ 将计算结果写入到 result 数组中 RESULT(1) = ... „„ RESULT(8) = ... RETURN END REQSUB 子程序的示例 下面是一个REQSUB用户子程序的例子。该例仍以图9- 1所示的小球与斜 面为例,其功能是计算小球相对于斜面的速度矢量在xoy平面的投影和小球 相对于斜面的角速度矢量在yoz平面的投影,参考标架为斜面上的Mark_R, 其ID=2003。 为了比较REQSUB用户子程序和REQUEST函数表达式的区别,本例首 先给出可以实现上述功能的函数表达式形式: REQUEST/8, & F2= SQRT(VX (2001, 2003, 2003) ** 2 + VY(2001, 2003, 2003)) & \ F3= SQRT(WY (2001, 2003, 2003) ** 2 + WZ(2001, 2003, 2003)) & \ COMMENT=SHOCK ENERGY 下面给出如何通过创建REQSUB用户子程序实现上述功能。 REQSUB用户子程序的调用语句为: REQUEST/8, FUNCTION=USER(2001, 2002, 2003)\ COMMENT=SHOCK ENERGY 所创建的REQSUB用户子程序为: : 第
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:【Adams应用教程】第9章ADAMS用户子程序.docx
    链接地址:https://www.zixin.com.cn/doc/855242.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork