adina中静水压力施加的一个思路
本帖最后由 zhou7230 于 2011-7-23 09:42 编辑在adina中,一般都是通过空间函数来控制静水压力的非均匀分布,然后直接施加到几何面上。但是当模型较大,需要施加荷载的几何面较多时,处理工作将极为繁琐而且容易出错。如果是由body转化过来的volume,几何面的方向也极不规律,给空间函数的计算带来很大麻烦。
这里给出一个直接将荷载施加到单元面上来简化前处理工作的思路。其实也可以将荷载施加到节点上的,但是要麻烦一些,需要计算各个单元面上所受到的合力,然后再向各个节点分配,而且施加后荷载的显示也不够直观,不便于检查。所以这里主要介绍施加到单元面上的一个思路——类似于给每个单元面写一个“空间函数”,具体施加位置在这里:
model——loading——apply on nodes/elements——pressure
以三维实体单元为例,每个单元面上都有weight1、weight2、weight3、weight4四个值,对应单元面四个角点的荷载大小,并由这四个值控制单元面上的荷载分布(类似于空间函数)。所以只需要计算单元面四个角点(也就是节点)的水头大小,写入即可。最终效果和施加到几何面上是一样的,非常直观,方便检查。
剩下的工作就是建立单元面和单元节点的关系。 以八节点单元为例,在adina中,三维实体单元的六个面分别按“-3,-2,-1,1,2,3”编号(可以在element face set中获得),而且每个单元面和单元的节点都具有固定的对应关系,例如“-3”的weight1、weight2、weight3、weight4分别对应node5、node8、node7、node6。其它各面的对应关系也很容易找出,这里就不列了。
这样,只要知道施加的单元、单元面,便可以知道这个单元面上的四个节点,然后查询节点坐标,就可以计算出这个节点的水头大小,写入相应的weight便可完成水压力的施加。
程序的具体思路如下:
1、由element face set获得需施加荷载的单元面信息,包含单元面编号、单元编号、单元组编号。
2、由element nodes获得各个单元组的节点组成信息。然后由单元面编号号、单元编号、单元组编号查得各个单元面的四个节点编号。
3、由节点编号查得节点坐标信息,即可计算出节点的水头大小。将节点水头大小写入对应的weight中。命令流示例:
*
LOADS-ELEMEN SUBSTRUC=0 REUSE=1 GROUP=9 THERMOST=0
@CLEAR
8555 -2 0 0 0 0 2
8556 -2 0 0 0 0 2
8557 -2 0 0 0 0 2
8558 -1 0 0 0 0 2
8559 -1 0 0 0 0 2
8560 -1 0 0 0 0 2
8561 -2 341373413417505175082
8562 -2 17508175058768792
8563 -2 879876002
8564 -1 341361750817505341342
8565 -1 17508879876175052
8566 -1 879008762
@
附加质量、温度荷载可以按照同一思路操作。
具体程序我就不给了。。。
最后给一个小例子的截图,当然,实际建模肯定不能这样手写,必须靠程序计算然后写入命令流
————————————————
其实最初我是想通过几何面的角点直接计算空间函数的,但当时不知道该如何导出几何信息。后来发现可以通过list命令流导出几何信息(包括体编号、组成体的点线面编号),但是仍无法确定几何面的方向。如果能够确定几何面的方向的话,计算将更为方便。 楼主,我想请教一下,那最后还是涉及到把不同的载荷值施加在不同的节点上啊,这一点是怎么处理的,楼主可否仔细说一下
第三点:由节点编号查得节点坐标信息,即可计算出节点的水头大小。将节点水头大小写入对应的weight中
这个是怎么理解的,O(∩_∩)O谢谢 2# wry618
第一点我不太明白你的意思。。
关于第三点,因为水荷载是坐标的函数,所以只要在程序中给定水面线的高度,就可以计算出水面距每个节点的高差,然后就可以计算出这个节点上的水头大小。但这个值不能直接施加在节点上的,而是需要施加在单元面的角点上,最终反映就是weight1、weight2、weight3、weight4,类似于单元面的空间函数 我明白了,谢谢( ⊙ o ⊙ )啊! 3# zhou7230 "后来发现可以通过list命令流导出几何信息(包括体编号、组成体的点线面编号)?"可不可以具体说明下此条list命令,谢谢,没有搜到哦 谢谢,找到了,谢谢给我的提示. 是list volume all 具体参见list命令list command
页:
[1]