Fortran Coder

坐标变换程序运行得不到结果

查看数: 11338 | 评论数: 14 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-11-12 10:10

正文摘要:

Fortran菜鸟一枚,写了一个坐标变换的Fortran程序,大致的过程就是随便给出一个整体坐标系下的一个点(x,y),通过计算得到该点在新的局部坐标系下的对应点(m,n),局部坐标系就是四边形等参变换的局部坐标系,各 ...

回复

kerb 发表于 2015-11-18 15:50:07
你手头有maple,直接解析求出(\xi,\eta)的表达式,然后稍加判断就行了
pasuka 发表于 2015-11-15 16:50:46
hipeilei 发表于 2015-11-13 23:37
这样解出来可能会有两个根,取舍问题不好判断,有可能两个点都在规则单元里。 ...

碰上二义性吧?一般四边形处理云图或等值线会遇到,解决办法有很多
最直观的办法就是:四边形加条对角线切成2个三角形,假定点q不在四条边上,个么q要么在两个三角形内部,要么在对角线上,等参变换后亦如此
至于如何判断q是否在三角形内部,有个帖子已经介绍过了
hipeilei 发表于 2015-11-13 23:37:45
kerb 发表于 2015-11-12 23:42
好像可以解出两个坐标系变换,稍微麻烦一点

这样解出来可能会有两个根,取舍问题不好判断,有可能两个点都在规则单元里。
kerb 发表于 2015-11-13 00:16:35
本帖最后由 kerb 于 2015-11-13 00:22 编辑

另外用迭代法求解非线性方程组应该是这样
F(\xi,\eta)=\left\{\begin{array}{c}f_1(\xi,\eta)=a_x+b_x\xi+c_x\eta+d_x\xi\eta-x\\f_2(\xi,\eta)=a_y+b_y\xi+c_y\eta+d_y\xi\eta-y\end{array}\right.

F(0+\delta)=F(0)+\nabla F\cdot\delta+O(\delta^2),\delta=(\Delta\xi,\Delta\eta)所以那个雅克比矩阵是对\xi,\eta求导

也就是:
J=\left(\begin{array}{cc}b_x+d_x\eta & c_x+d_x\xi\\b_y+d_y\eta & c_y+d_y\xi\end{array}\right)

你检查一下是否搞混了

kerb 发表于 2015-11-12 23:42:49
本帖最后由 kerb 于 2015-11-12 23:46 编辑

好像可以解出两个坐标系变换,稍微麻烦一点
x=a_x+b_x\xi+c_x\eta+d_x\xi\eta

y=a_y+b_y\xi+c_y\eta+d_y\xi\eta
其中根据对应关系可以求出a_x ,a_y \cdots\cdots d_x, d_y

先消去\xi\eta这一项,然后代换,就可以化成一个关于\xi或者\eta的一元二次方程


kerb 发表于 2015-11-12 18:48:43
好像是有限元等参变换,似乎你搞反了,实际上是P_i(x_i,y_y)(i=1,2,3,4)变换到\Omega_i(\xi_i,\eta_i)空间,应该是(\xi_i,\eta_i)=(\pm1,\pm1)四种组合,但是你写成x1=,y1=...x4=,y4=...,按照你的程序,应该是m,n=-1,+1...你看看下图有助于理解吗

360截图20151112183841171.jpg (24.32 KB, 下载次数: 433)

360截图20151112183841171.jpg

评分

参与人数 1F 币 +5 贡献 +5 收起 理由
fcode + 5 + 5

查看全部评分

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-18 04:35

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表