2013-07-13 3 views
1

Я пытаюсь записать в двух разных файлах (основной программе и подпрограмме) неформатированные файлы в моем коде Fortran. Проблема в том, что когда я это делаю, результаты меняются, и я подозреваю, что это связано с тем, что назначение памяти переписывает данные, которые я использую для моделирования в CFD-коде. Я спрашиваю: возможно ли, что можно просто использовать неформатированный файл (для записи) один раз в коде? Я имею в виду, я должен использовать тот же файл для сохранения всех моих данных, а не с разными файлами.Запись в двух разных местах неформатированных файлов в Fortran

скопировать и мимо двух частей кода, чтобы показать то, что я хочу, чтобы описать:

В основной программе, петля:

  call numcar (isave,suffix) 
     longueur=index(nchamp,' ')-1 
     nfichier=nchamp(1:longueur)//suffix 
     longueur=index(nfichier,' ')-1 
     open(10,file=nfichier(1:longueur),form='unformatted') 
     write(10) real(uxn,4),real(uyn,4),real(wzn,4),real(ppo,4) 
     close(10) 
!  *****************************************  
     isave=isave+1 

и в подпрограмме, цикл является:

  call numcar (isavediv,suffix1) 
     longueur1=index(ndiv,' ')-1 
     nfichier1=ndiv(1:longueur1)//suffix1 
     longueur1=index(nfichier1,' ')-1 
     open(20,file=nfichier1(1:longueur1),form='unformatted') 
     write(20) real(ppm,4) 
     close(20) 
!  *****************************************  
     isavediv=isavediv+1 

всего переменными объявлено в IMPLICIT NONE как в основной программе и подпрограмме.

+0

Во-первых: какие результаты меняются? Значения в файле, значения ваших переменных во время выполнения? Во-вторых: переменные кажутся разными при двух разных вызовах, поэтому, если вы устраните один вызов, вам нужно добавить переменные из этого в другое. –

+0

Первое: значения моих переменных во время изменения времени выполнения. Второе: переменные разные. Как вы сказали, я мог бы добавить переменные от этого к другому, но я хотел бы делать вызовы в каждой подпрограмме. Дело в том, что: когда я не использую второй вызов, результаты моего моделирования работают хорошо, но когда я хочу сохранить данные с помощью неформатированного оператора во втором вызове, результаты моего моделирования меняются. Моя симуляция становится нестабильной, и я не понимаю, почему они меняются (данные времени выполнения моделирования), если я просто сохраняю данные в файлах. – flaviusaetius

ответ

1

Я решил свою проблему. Проблема заключалась в том, что я использовал канал номер 20, а мой коллега сказал мне, что этот канал используется компьютером или некоторыми устройствами для обработки данных. Я изменил его для канала номер 10, и он снова работал хорошо. Спасибо за ваши комментарии. Теперь это выглядит так:

 open(10,file=nfichier1(1:longueur1),form='unformatted') 
    write(10) real(ppm,4) 
    close(10) 
Смежные вопросы