Я относительно новичок в том, чтобы разные языки программирования обменивались данными друг с другом и оценил бы какую-то помощь. В основном у меня есть код Fortran и код Matlab. Оба кода сначала инициализируются, а затем запускаются последовательно. Каждый код требует ввода от другого. Когда этот процесс повторяется достаточно часто, достигаются некоторые критерии конвергенции, и итерация прекращается. Чтобы усложнить ситуацию, Fortran-код требует не только ввода от Matlab, но и его собственной предыдущей итерации. То же самое справедливо и для Matlab. Поэтому, насколько я вижу, лучше всего обе программы открывать в процессе итерации, поскольку у меня много переменных, и поэтому я могу просто написать их в текстовом файле, чтобы передать их другой программе и сохранить их для следующая итерация.Связь между Fortran и Matlab
Поэтому в основном я пытаюсь сделать что-то вроде этого:
переменная Initialise устанавливает A, B, C и D
Fortran:
Input: A and B
Calculations …
Output: A (variables have now new values) and D
Matlab:
Input: C and D
Calculations …
Output: C (variables have now new values) and B
Повторить Fortran и Matlab до тех пор, пока не будут достигнуты критерии конвергенции.
Итак, мои вопросы: Как заставить Matlab и Fortran взаимодействовать друг с другом и передавать переменные в одно и то же? И как каждый код запускает другой, а затем ждет, пока другой код завершит свой расчет первым, прежде чем продолжить?
Я не знаю, насколько сложны вычисления, выполненные в среде Fortran или Matlab, но существуют и языки, ориентированные на вычисления (не столько для взаимодействия), поэтому может быть гораздо меньше хлопот, чтобы «переписать» меньше сложную часть кода с одного языка на другой и использовать только один язык (возможно, быстрее выполнить тоже). – Hoki
Что вы подразумеваете под кодом Matlab? Функции MEX Level-2? – Peter
@Hoki, к сожалению, переписывание m-файлов или среды Fortran не является вариантом, так как они оба очень сложны. Файл верхнего уровня .f вызывает множество подпрограмм, аналогично, файл .m-файла верхнего уровня вызывает много других m-файлов. – Dorit