*V系列的命令 k循环项的控制 是从指定的编号开始 以1为单位递增 通常取出来的某一部分单元 编号并不是连续的 有种说法是把想取结果的部分先画网格以图编号连续 但我觉这是治标不治本
我曾经以为 这一限制 使得*v命令的过程 只能通过do循环+*get来解决 而*get所需要的单元编号 可以选完单元之后定义一个单元编号数组 这个数组纬度是所选择的全部单元数目(比如100,但并不代表所选单元编号也是1~100)
直到在网上看到了*vmask这个命令 它的作用是定义一个标识数组 里面标识出对于编号为1~n的单元 哪些被选上了 哪些没被选 这样后面的*vput、*vget命令 即可从最小编号开始做 没被选上的会跳过(实际不是跳过去 而是赋0值) 这样的话 可以任何数组读入到单元表里 与单元表结果做各种运算 或者更灵活的 是将单元表结果取出 外处理后再读进去
dnsol、desol也可以改节点结果、单元结果,但无奈都是直接结果或导出结果 并不如单元表结果那样完整
ps.借此提个问题:单元表如果list的话 会看到是按所选单元编号由小到大顺序排序的 假设b列是我定义的结果列 可用esort对该列排序 我的问题是 排好序之后 第一个数据就是最大或最小值了 怎么在程序里把这个数取出来?因为*get和*vget都需要告诉命令单元号 但排序结束后的单元号是不知道的 我目前的方法是不用esort 直接把编号列和b列导出数组 用循环和判断来排序 但既然有esort了 再写程序就可臃肿了