Ниже приведен код Fortran, который я выполняю, и я хочу сохранить значения Qr
в файл.Эта подпрограмма вызывается и выполняется в python.
subroutine thrustTorque(n, Np, Tp, r, precurve, presweep, precone, &
Rhub, Rtip, precurveTip, presweepTip, T, Q)
implicit none
integer, parameter :: dp = kind(0.d0)
! in
integer, intent(in) :: n
real(dp), dimension(n), intent(in) :: Np, Tp, r, precurve, presweep
real(dp), intent(in) :: precone, Rhub, Rtip, precurveTip, presweepTip
! out
real(dp), intent(out) :: T, Q
! local
real(dp) :: ds
real(dp), dimension(n+2) :: rfull, curvefull, sweepfull, Npfull, Tpfull
real(dp), dimension(n+2) :: thrust, torque, x_az, y_az, z_az, cone, s
integer :: i
Здесь есть длинный список других переменных и их определений, которые я пропускаю.
cone =0.0_dp
z_az = 0.0_dp
! integrate Thrust and Torque (trapezoidal)
thrust = Npfull*cos(cone)
torque = Tpfull*z_az
Теперь здесь Qr(i)
значений, которые я хочу сохранить в файле.
T = 0.0_dp
do i = 1, n+1
ds = s(i+1) - s(i)
T = T + 0.5_dp*(thrust(i) + thrust(i+1))*ds
Q = Q + 0.5_dp*(torque(i) + torque(i+1))*ds
Qr(i) = Q
end do
end subroutine thrustTorque
Я пробовал это:
T = 0.0_dp
open (1, file = 'data1.dat', status ='new')
do i = 1, n+1
ds = s(i+1) - s(i)
T = T + 0.5_dp*(thrust(i) + thrust(i+1))*ds
Q = Q + 0.5_dp*(torque(i) + torque(i+1))*ds
Qr(i) = Q
write(1, *) Qr(i)
end do
close(1)
end subroutine thrustTorque
Эта подпрограмма вызывается в python с использованием:
T, Q = _oxi.thrustTorque(Np, Tp, *args)
Я не могу вернуть значения Qr
, так как это также связано с другими областями кода и потребует многих изменений.Вместо этого я бы предпочел распечатать вывод в терминале или сохранить его в файле.
Хотя программа выполняется, я не вижу результатов, сохраняемых в файле или даже в создаваемом файле.