24小时热门版块排行榜    

查看: 438  |  回复: 1

KuF1803

新虫 (正式写手)

[交流] 如何输出符合条件的坐标的最大最小值

已经筛选出符合条件的单元的形心坐标数组
请问如何从中筛选出每个时间步最大最小值
用do循环

发自小木虫IOS客户端
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shgao20

专家顾问 (职业作家)


小木虫: 金币+0.5, 给个红包,谢谢回帖
你的要求很难实现。因为单元重心坐标有三个值 (x,y,z),你是要哪个坐标值最大或最小,不明确。不可能三个坐标都是最大或最小值吧
  明确要求后,可以使用 APDL 编写一个简单的程序实现你的要求。
  基本思路可以参考如下:
    allsel,all       !  选择所有实体
    *get, emin,      !  获取最小单元编号
    *get, emax,      !  获取最大单元编号
    en=emax-emin+1   !  单元个数 (如果单元编号不连续,实际个数会少一些)
    *dim, e_data, ARRAY, en,2    !  定义一个数组,用来存放单元编号和坐标值
    cmin = 1.0e30         !  最小坐标值
    eimin=0          !  最小坐标值的单元编号        
    cmax = -1.0e30         !  最大坐标值
    eimax=0          !  最大坐标值的单元编号

    *do, i, emin, emax
      *if,esel(i),gt,0,then     !  如果单元 i 在当前选择集中
        e_data(i,1) = i         !  单元 i 的编号
        ei_data = 单元 i 重心的坐标值,自己填写
        e_data(i,2) =
      *else
        e_data(i,1) = 0         !  0 表示单元 i 不在当前选择集中
        e_data(i,2) = 0
        ei_data = 单元 i 重心的坐标值,自己填写
      *endif
      *if, ei_data,lt,cmin,then
        cmin=ei_data
        eimin = i
      *endif
      *if, ei_data,gt,cmax,then
        cmax=ei_data
        eimax = i
      *endif
   *enddo

  后面自己补充输出最小和最大坐标值以及相应单元编号。
  没有验证过,自己试试,修改完善一下。
2楼2019-08-05 08:39:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 KuF1803 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见