Я с любопытством пытаюсь использовать подпрограмму Fortran для тяжелой техники вычислений с Simulink. Эта подпрограмма Fortran представляет собой сложный расчет, который включает в себя открытие и редактирование .txt файлов. Мне удалось написать процедуру Fortran Gateway (на основе шаблона, предоставленного Matlab). Компиляция и соединение были успешными; Я мог передать матрицы, и мой Фортран подтвердил их, и их можно увидеть в одном из файлов .txt.
Это выдержка из кода Фортрана,
if (co%flg_resume) then
!! Resume
call readcp( cp, RESUME )
call rand_load( SAVEMT )
open( FID, file=OUTPUT, access='append', status='old' )
if (co%flg_visualization) then
open( VFID, file=OUTVIS, access='append', status='old' )
endif
if ( (co%maxiter .le. cp%iter) .or. (co%maxeval .le. cp%neval) ) then
co%maxiter = co%maxiter + cp%iter
co%maxeval = co%maxeval + cp%neval
end if
cp%iter = cp%iter + 1
cp%neval = cp%neval + 1
else
!! New Run
call setseed( co%seed )
popsize = co%initpopsize
call initialize( cp, co%dim, co%lb, co%ub, init_mean, init_std, co%stairwidth, &
co%flag_diagonal, popsize, co%flag_active, co%sigma_correction_factor )
!! Open log files
open( FID, file=OUTPUT, status='replace' )
!write( FID, * ) '#Dim:', co%dim, 'lambda:', popsize, 'ub:', co%ub, 'lb:', co%lb
write( FID, '(A100)' ) '#iter, minval(arffeas), minval(arf), df, dx, cp%sigma, cp%vecD, cp%xmean, cp%diagSqrtC'
if (co%flg_visualization) then
open( VFID, file=OUTVIS, status='replace' )
write( VFID, '(A100)' ) '#arf, arffeas, arx, arxfeas, sigma, xmean, matC'
endif
end if
К сожалению, я получил Ошибка "forrtl Серьезный (104) неверный STATUS = значение спецификатора для подключенного файла" в этой конкретной строке.
open( FID, file=OUTPUT, access='append', status='old' )
Однако подпрограмма Fortran создала выходные файлы .txt, но вернула ошибку, когда "else" вызывается, т. е. «Новый прогон». Это выдержка из обсуждаемого файла .txt. Это остановилось на 200 итер, когда это должно было продолжаться. Остановлено на 200
Это то, что я хотел, чтобы .txt был (работает в Visual Studio, отлично) Из Visual Studio
Когда Я удалил спецификаторы для ACCESS и STATUS, ошибка исчезла, но файл .txt не был тем, что я хотел сделать. Это то, что произошло (2 временных шага). Повторяется, когда предполагается продолжение