opensees 笔记(一)坐标转换

时间:2024-05-21 13:13:57

以陈学伟博士的书结构弹塑性分析程序OpenSees原理与实例中第二个实例为基础,记录以下自己对坐标转换的理解。

第二个实例用到坐标转换的命令有两个

(1)elementelasticBeamColumn $eleTag $iNode $jNode $A $E $G $J $Iy $Iz $transfTag

(2)geomTransf Linear$transfTag $vecxzX $vecxzY $vecxzZ

 

先看一个截面的局部坐标轴,x y z ,是怎么被定义的:

OpenSees 的wiki

http://opensees.berkeley.edu/wiki/index.php/Linear_Transformation

介绍是这样的:

Theelement coordinate system is specified as follows:

Thex-axis is a vector given by the two element nodes; The vector vecxz is a vectorthe user specifies that must not be parallel to the x-axis. The x-axis alongwith the vecxz Vector define the xz plane. The local y-axis is defined bytaking the cross product of the x-axis vector and the vecxz vector (Vy = Vxz X Vx). Thelocal z-axis is then found simply by taking the cross product of the y-axis andx-axis vectors (Vz = Vx X Vy). The section is attached to the element such that the y-zcoordinate system used to specify the section corresponds to the y-z axes ofthe element.

可见,element命令里 iNode- jNode 定义了x轴及其方向(注:这里i j 不一定要按节点大小排列),然后vecxz 是用户自己选择的,只要不和x轴平行的任意都可以,然后x轴和vecxz向量形成了xz平面,这两个向量叉乘(注意是vecxz叉乘x)得到y轴,x轴和y轴再叉乘得到z轴(注意叉乘的先后顺序),这就是局部坐标。由此可知(1 element命令里已经定义了x轴,只需要再给出vecxz在整体坐标系下的坐标,就可以知道局部坐标系的所有方向了,因此2geom 命令里$vecxzX $vecxzY$vecxzZ 这三个分量就是向量vecxz在整体坐标系下的坐标。

也就是逻辑是: element 里定了x geom里定了vecxz 这两个向量定了局部坐标系。

几个注意的地方 

1.$transfTag代表局部坐标轴矢量(vecxz)的编号,所以element 里的$transfTag geom 里的$transfTag 要对应起来。为了方便明白,一般每一个element 都选一个单独的编号。

2.为了方便清楚,一般选择vecxz的时候,选与其中一个整体坐标轴(X,Y,Z)平行的比较好,而且在比较规则的结构中,最好把构件分类,一类构件可以用同样的vecxz(只是编号不同而已)

举例:书中第二个实例。图中红笔是整体坐标系

柱子可归为一类,用同一个vecxz,此时如果在element里定义iNode和jNode时都遵从从下到上(eg:27-21 21-15),那么所有柱子的局部坐标都相同,(比如vecxz选19-20这个方向),那么所有柱子的x轴是25-19方向,y轴是19-21方向,z轴是19-20方向。所以这些柱子的geom里都是$transfTag 0 1 0

类似梁分别归为两类,vecxz也有两个

3.由此局部坐标就都有了,element里$Iy $Iz 要和这个局部坐标吻合。 

具体可以结合OpenSees的官方介绍和陈学伟博士的书来看,

http://opensees.berkeley.edu/wiki/index.php/Linear_Transformation

http://www.dinochen.com/article.asp?id=151

 


opensees 笔记(一)坐标转换