Fortran Coder

查看: 1311|回复: 1
打印 上一主题 下一主题

[数学库] dgetrs函数的使用

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
12 元
贡献
3 点
跳转到指定楼层
楼主
发表于 2023-9-1 01:29:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        c1 = 1.0/bta/dt/dt
        c2 = 1.0/bta/dt
        c3 = gma/bta/dt
        c4 = 1.0 - gma/bta
        c5 = 1.0 - 0.5*gma/bta
        c6 = 0.5/bta - 1.0

        c7 = c1*M_m + c3*M_c
        c8 = c2*M_m - c4*M_c
        c9 = c6*M_m - dt*c5*M_c
do i=1,length-1,1
            ph = -ME*ag(i+1) + matmul(c7,M_u(i,:)) + matmul(c8,M_v(i,:)) + matmul(c9,M_a(i,:))
            temp=M_kh
            temp1=ph
            call dgetrf(ndof,ndof,temp,ndof,ipiv,info)
            call dgetrs("N",ndof,ndof,temp,ndof,ipiv,ph,ndof,info)

            M_u(i+1,:)=ph
            M_v(i+1,:) = c3*(M_u(i+1,:)-M_u(i,:)) + c4*M_v(i,:) + dt*c5*M_a(i,:)
            M_a(i+1,:) = c1*(M_u(i+1,:)-M_u(i,:)) - c2*M_v(i,:) - c6*M_a(i,:)
end do
在编写newmark方法中,执行MKL的dgetrs后,发现c9的数值发生了变化。如将dgetrs函数中的ph改为temp1,则一切正常。请大家帮忙分析下是何原因,感谢!!

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
沙发
发表于 2023-9-1 12:42:38 | 只看该作者
你应该给出能够运行、非常简洁、重现错误的代码。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-24 20:47

Powered by Tencent X3.4

© 2013-2024 Tencent

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