在 ANSYS APDL 中,数组元素本身不直接存储“行号”信息,但可以通过编程方式获取某个元素在数组中的行索引(即行号)。以下是几种常见场景下的实现方法:1. 遍历数组时自动获得行号
在使用 *DO 循环遍历数组时,循环变量即为当前元素的行号(或行索引)。
apdl
*DIM, MyArray, ARRAY, 5, 3 ! 定义 5 行 3 列的数值型数组
*DO, i, 1, 5 ! i 即为行号(1 到 5)
*DO, j, 1, 3 ! j 为列号
MyArray(i,j) = i * 10 + j ! 示例赋值
*ENDDO
*ENDDO
此时,i 就是第 i 行的行号,可直接用于后续逻辑判断或输出。
2. 查找满足条件的元素所在行号
若需找出满足特定条件(如最大值、非零值等)的元素所在的行号,可结合条件判断实现:apdl
*GET, max_val, ARRAY, MyArray, MAX ! 获取数组最大值
*DIM, row_nums, ARRAY, 100 ! 假设最多100个满足条件的行
n_found = 0 ! 记录找到的行数
*DO, i, 1,
*DO, j, 1,
*IF, MyArray(i,j), EQ, max_val, THEN
n_found = n_found +
row_nums(n_found) = i ! 存储行号
*ENDIF
*ENDDO
*ENDDO
*STATUS, row_nums ! 显示所有满足条件的行号
3. 使用 *VGET 提取节点/单元编号后关联行号
当通过 *VGET 提取如节点编号、坐标等数据时,返回的数组顺序与选择集一致,数组下标即隐含“序号”,可视为逻辑行号:apdl
NSEL, S, LOC, X, 0 ! 选择 X=0 的节点
*GET, ncount, NODE, 0, COUNT ! 获取选中节点数
*DIM, node_ids, ARRAY, ncount ! 定义数组存储节点编号
*VGET, node_ids, NODE, , NLIST ! 提取节点编号到数组
! 此时 node_ids(1) 对应第一个选中的节点,其“行号”为
! node_ids(2) 对应第二个,行号为 2,依此类推
⚠️ 注意:此“行号”是数组存储顺序,并非原始节点编号,但可用于后续批量操作。
关键说明
ANSYS APDL 数组下标从 1 开始,且必须为连续整数
数组按列优先(column-major)顺序存储数据,但行号仍按行索引 i 访问
若需将行号作为数据输出,可直接在循环中使用 *SET 或数组存储循环变量。
如需进一步操作(如导出带行号的数组),可参考使用 *VWRITE 或矩阵工具箱导出为 CSV
武汉格发信息技术有限公司 | 许可分析,许可优化,许可管理,许可授权,软件授权