声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1658|回复: 8

[共享资源] 广义相对论度规计算专用!

[复制链接]
发表于 2007-3-13 14:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
http://pickup.mofile.com/9709689597429336
以上是我编的程序函数打包,解压放到matlab目录下就可以。
说明一下每个函数的用途:
Dgqd(a)-------对度规a(当然是矩阵形式给出来的)求导得到的3指标函数
Sdgd(a)-------利用Dgqd所得的三指标重新排列,以便后用。
以上两个函数实际都不怎么会用到,只是为了以下3个函数所编。
Ksf(a)--------------给一个度规a,求出对应的克氏符号
Liman(a)-------求度规a所对应的4指标黎曼张量
Liqi(a)-----------求度规a对应的2指标里奇张量
Rmql(a)---------求度规a所对应的曲率标量

补充:4维以下都适用。请把坐标都换成t,x,y,z形式。算出来,再换回去就可以了.
(一)function a=Dgqd(b)
u=length(b);
v=['t','x','y','z'];
for u1=1:u
    for v1=1:u
        for w1=1:u
            w(u1,v1,w1)=diff(b(u1,v1),v(1,w1),1);
        end
    end
end
a=simplify(w);
(二)function x1=Sdgd(y1)
a=length(y1);
for b=1:a
    for c=1:a
        for d=1:a
            e(b,c,d)=y1(b,c,d)+y1(d,b,c)-y1(c,d,b);
        end
    end
end
x1=simplify(e);
(三)function x1=Ksf(y1)
a=length(y1);
b=inv(y1);
c=Dgqd(y1);
d=Sdgd(c);
for m=1:a
    for n=1:a
        for q=1:a
            e=0;
            for m1=1:a
                e=e+1/2*b(m,m1)*d(m1,n,q);
            end
            f(m,n,q)=e;
        end
    end
end
x1=simplify(f);
(四)function x1=Liman(y1)
v=['t','x','y','z'];
a=length(y1);
c=Ksf(y1);
for m1=1:a
    for m2=1:a
        for m3=1:a
            for m4=1:a
                d1(m1,m2,m3,m4)=diff(c(m4,m1,m3),v(1,m2),1)-diff(c(m4,m2,m3),v(1,m1),1);
            end
        end
    end
end
for n1=1:a
    for n2=1:a
        for n3=1:a
            for n4=1:a
                e=0;
                for n5=1:a
                    e=e+c(n5,n3,n1)*c(n4,n2,n5)-c(n5,n3,n2)*c(n4,n1,n5);
                end
                d2(n1,n2,n3,n4)=e;
            end
        end
    end
end
x1=simplify(d1+d2);
(五)function x1=Liqi(y1)
a=length(y1);
b=Liman(y1);
for m1=1:a
    for m2=1:a
        e=0;
        for n1=1:a
            e=e+b(m1,n1,m2,n1);
        end
        d(m1,m2)=e;
    end
end
x1=simplify(d);
(六)function x1=Rmql(y1)
a=length(y1);
b=inv(y1);
c=Liqi(y1);
for c1=1:a
    for d1=1:a
        e=0;
        for c2=1:a
            e=e+b(c1,c2)*c(d1,c2);
        end
        d(c1,d1)=e;
    end
end
f=0;
for e1=1:a
    f=f+d(e1,e1) ;
end
x1=simplify(f);

[ 本帖最后由 donkeyxu 于 2007-3-15 18:19 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2007-3-13 15:22 | 显示全部楼层

回复

请将你的资料直接贴出来或者上传,否则有打广告的嫌疑.
另:这种资料好象在Mathworks的网页上已经有人贴过.
  当然,我本人没有看到你的代码,所以也没有否认的意思.

[ 本帖最后由 xjzuo 于 2007-3-13 15:24 编辑 ]
 楼主| 发表于 2007-3-14 13:12 | 显示全部楼层
上传rar 文件,可以?
发表于 2007-3-14 17:02 | 显示全部楼层

回复

不是很大的话,可以用附件试试.
再不行,麻烦先解压,再分别贴上来.
如果是原创,更好;
不是的话,"资料应助"我们也会鼓励,并加分的.
 楼主| 发表于 2007-3-15 18:20 | 显示全部楼层
源代码贴出来了
发表于 2007-3-15 20:08 | 显示全部楼层
原帖由 donkeyxu 于 2007-3-15 18:20 发表
源代码贴出来了



最好改进一下,这么多循环看到就害怕了
发表于 2007-3-15 23:03 | 显示全部楼层

回复

能否举几个例子怎么用你给出的函数?
程序待仔细看看,不过的确循环多了一些.
另: 问个题外话:你本身搞 广义相对论的研究吗?
     我以前对这方面也稍微研究过一下,微分几何也专门学过一阵子.

[ 本帖最后由 xjzuo 于 2007-3-15 23:09 编辑 ]
 楼主| 发表于 2007-3-16 18:01 | 显示全部楼层
原帖由 eight 于 2007-3-15 20:08 发表



最好改进一下,这么多循环看到就害怕了

梁的微分几何,我也看了。我做的东西和宇宙学有关联。
循环多,是因为求和多啊,所以麻烦,才编出来的用机器算。
发表于 2007-3-16 22:48 | 显示全部楼层
原帖由 donkeyxu 于 2007-3-16 18:01 发表

梁的微分几何,我也看了。我做的东西和宇宙学有关联。
循环多,是因为求和多啊,所以麻烦,才编出来的用机器算。


建议举几个例子说明一下几个函数的应用.
如果你研究宇宙学,能否讲讲爱因斯坦场方程的一些数值解法.

我们知道,几种特解已经被人研究过了(解析解).
例如:
1.真空爱因斯坦方程的 史瓦西 球对称解;
2.夫里德曼的非静态宇宙解.
3. 克尔-纽曼解 等等.

其它诸如:
体球的爱因斯坦场方程内部严格解研究,爱因斯坦场方程的严格双孤立波解,...
不知donkeyxu是否研究过,如果是, 我很想交流一下.
我本人一直对这方面有兴趣,也常常会关注一下这方面的研究进展,虽然我本身已经不专门研究这个方向了.

[ 本帖最后由 xjzuo 于 2007-3-16 22:53 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 05:57 , Processed in 0.067348 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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