Есть ли у кого-нибудь удобный способ для печати данных, зависящих от времени? Скажем, у вас есть программа, которая выводит траекторию в течение определенного периода времени, поэтому файл txt размером 3 столбца (t, x, y). Я хотел бы создать видеофайл (mp4 avi gif и т. Д.), Который покажет эволюцию последних двух столбцов во времени. Я написал программу, которая выводит данные, вызывает gnuplot, выводит png, повторяется, хотя и долго нужен, а затем использует ffmpeg, чтобы смять все png в mp4. Это занимает очень много времени, чтобы произвести каждый png (где-то около 0,2 секунды для каждого), и 2 минуты 30 кадров в секунду займет около 12 минут, чтобы выполнить из-за этого. Кроме того, я создаю каталог с 3600 png, а затем удаляю каталог. Я не могу не почувствовать, что был более простой способ сделать это, разработанный кем-то за последние несколько десятилетий. Должен быть более элегантный способ сделать что-то подобное. Я также запускаю Windows 10.Модуль для анимированных построений из кода Fortran
ответ
Это, вероятно, избыточна для вашего приложения, но вы можете посмотреть в письменном виде (или преобразование) данных в формате ВТК (см http://www.cacr.caltech.edu/~slombey/asci/vtk/vtk_formats.simple.html), то обработка результата через ParaView (http://www.paraview.org/) или ВИЗИТ (https://wci.llnl.gov/simulation/computer-codes/visit). Устаревший формат VTK относительно легко писать из Fortran; самая сложная часть - это понимание формата файла so-flexible-nobody-can-explain-how-to-do-simple-things-with-it. Вторая сложнейшая часть - найти, где нужные параметры скрыты в пользовательском интерфейсе VisIt. Существуют существующие библиотеки F90 для написания VTK (см. https://people.sc.fsu.edu/~jburkardt/f_src/vtk_io/vtk_io.html), которые могут дать вам начало.
Светящаяся похвала, я знаю, но как только вы отсортировали фрагменты, легко создать анимированные графики с помощью VisIT, и это должно быть намного быстрее, чем gnuplot. Я использовал этот метод для создания анимированных 2D-карт температуры, тепла и т. Д. На основе данных, написанных непосредственно из кода Fortran.
Другая тактика - искать более простые форматы данных, поддерживаемые VisIt, и использовать их. Я выбрал VTK, потому что он был (несколько) документирован и поддерживается несколькими зрителями, но может быть более подходящий формат для ваших нужд.
Или любой другой тип данных, который можно открыть из Paraview. Есть множество из них, некоторые из них имеют привязки Fortran. –
Невозможно ли написать один файл данных, содержащий все кадры, и преобразовать его сразу в gnuplot? (используя «set terminal gif animate ...», «reeread», «plot ... index ...» и т. д.?) – roygvib