2017-02-07 9 views
1

Есть ли у кого-нибудь удобный способ для печати данных, зависящих от времени? Скажем, у вас есть программа, которая выводит траекторию в течение определенного периода времени, поэтому файл txt размером 3 столбца (t, x, y). Я хотел бы создать видеофайл (mp4 avi gif и т. Д.), Который покажет эволюцию последних двух столбцов во времени. Я написал программу, которая выводит данные, вызывает gnuplot, выводит png, повторяется, хотя и долго нужен, а затем использует ffmpeg, чтобы смять все png в mp4. Это занимает очень много времени, чтобы произвести каждый png (где-то около 0,2 секунды для каждого), и 2 минуты 30 кадров в секунду займет около 12 минут, чтобы выполнить из-за этого. Кроме того, я создаю каталог с 3600 png, а затем удаляю каталог. Я не могу не почувствовать, что был более простой способ сделать это, разработанный кем-то за последние несколько десятилетий. Должен быть более элегантный способ сделать что-то подобное. Я также запускаю Windows 10.Модуль для анимированных построений из кода Fortran

+0

Невозможно ли написать один файл данных, содержащий все кадры, и преобразовать его сразу в gnuplot? (используя «set terminal gif animate ...», «reeread», «plot ... index ...» и т. д.?) – roygvib

ответ

1

Это, вероятно, избыточна для вашего приложения, но вы можете посмотреть в письменном виде (или преобразование) данных в формате ВТК (см 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, потому что он был (несколько) документирован и поддерживается несколькими зрителями, но может быть более подходящий формат для ваших нужд.

+0

Или любой другой тип данных, который можно открыть из Paraview. Есть множество из них, некоторые из них имеют привязки Fortran. –