2016-08-06 3 views
1

В настоящее время я работаю с программным обеспечением с конечным элементом, которое называется DIANA. Я всегда умею запускать «простые» модели с MATLAB, исполняющим командный файл. Тем не менее, теперь я начинаю использовать более «сложные» модели (просто более надежные, с большим количеством элементов), но процедура точно такая же, как и в той, которую я использовал раньше. Проблема в том, что теперь я не могу запустить модель из MATLAB, она, похоже, начинает ее запускать, но внезапно останавливается. Я использую следующие команды:Запуск командного файла MATLAB - DIANA TNO

dos('path\filename.bat') 

или

system(fullfile(path,'filename.bat')) 

Обе строки запустите файл .bat. Я думал, что у меня что-то не так с файлами, поэтому я просмотрел их, но, видимо, с ними ничего не случилось. Затем я просто дважды щелкнул файл .bat, и процедура выполняется без проблем. Тогда я понял, что проблема не в файлах, а в исполнении MATLAB. Теперь, когда вы знаете контекст проблемы, можете ли вы дать мне несколько советов, чтобы избежать того, что MATLAB «убивает» процесс внутри?

Трассировка выполнения показал в MATLAB:

diana: working directory is *CURRENT DIRECTORY NAME* 
diana: input file is *FILENAME*.dat 
diana: command file is *FILENAME*.dcf 
diana: output file is *FILENAME*.out 
diana: filos file is diana.ff 
DIANA JOB 8028 finished 

Выполнение трассировки делает непосредственно двойной щелчок в пакетном файле выглядит следующим образом:

enter image description here

В Заметил файлов показал на предыдущем рисунке содержатся выходные данные модели, а при непосредственном выполнении из MATLAB они не отображаются, потому что MATLAB завершает процесс раньше.

Заранее благодарим за любой ответ!

Pd: Я использую компьютер со следующими характеристиками: Windows7, оперативная память 12 ГБ, 64-разрядная ОС, процессор Intel Xeon 2,53 ГГц.

ответ

1

То, что вы используете, строго не эквивалентно двойному щелчку на .bat-файле, особенно потому, что текущий каталог отличается, и если пакетный файл должен иметь доступ к вспомогательным файлам (относительный путь), то файлы, t.

Попробуйте добавить это в пакетном файле в качестве первой команды (или сразу после того, как эхо от)

Cd /d %~dp0 
+0

Спасибо! Жан-Франсуа Фабре за ответ! Ну, я понимаю, что вы имеете в виду, но на самом деле я меняю текущий каталог с MATLAB, чтобы избежать того, что вы упомянули.Однако я попробовал то, что вы предлагаете, включая строку в пакетном файле, например: [rem === Diana Environment Setup === // вызов «C: \ Program Files \ Diana 10.0 \ dialogin.bat» // Cd/d% ~ dp0 // diana FILENAME]. Но, к сожалению, такая же проблема продолжается. – lisandrojim

+0

Хорошо, тогда, возможно, добавьте оператор 'pause' в конце вашего командного файла. Если это не удастся из Matlab, по крайней мере, вы поймете, почему. –

+0

Это то, что я получаю в командных окнах MATLAB: diana: рабочий каталог CURRENTDIRECTORY // diana: входной файл FILENAME.dat // diana: командный файл FILENAME.dcf // diana: выходной файл FILENAME .out // Диана: файл filos - diana.ff // DIANA JOB 8028 завершено // Не сообщалось о проблемах. – lisandrojim

0

Вот решение, предоставляемое Дианой службой поддержки:

Кажется, что MATLAB наборы некоторые символы среды, которые ограничивают использование памяти в потоке.

Когда вы запускаете Диану из Matlab через пакетный файл, который сбрасывает символы , все работает нормально.

Такой пакетный файл может выглядеть следующим образом:

rem === Diana Environment Setup === 
    call "C:\Program Files\Diana 10.0\dialogin.bat" 

rem Unset the symbols added by MATLAB 
    set KMP_STACKSIZE= 
    set KMP_HANDLE_SIGNALS= 
    set KMP_BLOCKTIME= 

rem start the diana job 
    diana test2 
Смежные вопросы