gpt4 book ai didi

c++ - 将代码从 FORTRAN 转换为 C

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:22 24 4
gpt4 key购买 nike

我有以下 FORTRAN 代码,我需要将其转换为 C 或 C++。我已经尝试使用 f2c,但没有成功。它与从 Lambert Conformal 风 vector 到真北方向 vector 的转换有关。有没有 FORTRAN 经验丰富的人可以提供帮助?

PARAMETER ( ROTCON_P   =  0.422618      )
PARAMETER ( LON_XX_P = -95.0 )
PARAMETER ( LAT_TAN_P = 25.0 )

do j=1,ny_p
do i=1,nx_p
angle2 = rotcon_p*(olon(i,j)-lon_xx_p)*0.017453
sinx2 = sin(angle2)
cosx2 = cos(angle2)
do k=1,nzp_p
ut = u(i,j,k)
vt = v(i,j,k)
un(i,j,k) = cosx2*ut+sinx2*vt
vn(i,j,k) =-sinx2*ut+cosx2*vt
end if
end do
end do

非常感谢您的帮助或提示。

最佳答案

这会让您入门 - 我没有尝试编译它,但它接近您将需要的东西。我假定数组 olon、u、v、un 和 vn 作为指针传递给您的函数。

const double rotcon_p   =  0.422618;
const double lon_xx_p = -95.0;
const double lat_tan_p = 25.0;

for (j=0;j<ny_p;++j)
{
for (i=0,i<nx_p;++i)
{
double angle2 = rotcon_p*(olon[i][j]-lon_xx_p)*0.017453;
double sinx2 = sin(angle2);
double cosx2 = cos(angle2);
for (k=0;k<nsp_p;++k)
{
double ut = u[i][j][k]
double vt = v[i][j][k]
un[i][j][k] = cosx2*ut+sinx2*vt
vn[i][j][k] =-sinx2*ut+cosx2*vt
}
}
}

如果您完全使用 c/c++,这会很好,如果您混合使用 FORTRAN 和 c/c++,您需要知道 FORTRAN 和 c/c++ 索引它们的数组向后,所以您可能需要交换你的索引让它工作

const double rotcon_p   =  0.422618;
const double lon_xx_p = -95.0;
const double lat_tan_p = 25.0;

for (j=0;j<ny_p;++j)
{
for (i=0,i<nx_p;++i)
{
double angle2 = rotcon_p*(olon[j][i]-lon_xx_p)*0.017453;
double sinx2 = sin(angle2);
double cosx2 = cos(angle2);
for (k=0;k<nsp_p;++k)
{
double ut = u[k][j][i]
double vt = v[k][j][i]
un[k][j][i] = cosx2*ut+sinx2*vt
vn[k][j][i] =-sinx2*ut+cosx2*vt
}
}
}

但是我没有足够的上下文来说明你的问题需要做什么。

关于c++ - 将代码从 FORTRAN 转换为 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com