Как читать файл данных временных рядов в Modelica

Мне необходимо читать данные временных рядов (например, csv) в Modelica, в частности, используя компилятор open modelica (omc). Я поискал в Интернете и нашел в сети библиотеку ncReader. Он работает на dymola, но не с открытым компилятором modelica. Мой тестовый код выглядит так:

  der(x) = t;  
  t = NcDataReader2.ncEasyGet1D("datafile.nc", "temperature", time);  
  der(y) = q;  
  q = NcDataReader2.ncEasyGet1D("datafile.nc", "flow", time); 

Когда я пытаюсь запустить его на открытой модели, я получаю следующую ошибку:

Перевод 09:21:41 0: 0-0: 0 Ошибка симулятора строительства. Журнал сборки: gcc -falign-functions -msse2 -mfpmath = sse -I "C: /OpenModelica1.9.0//include/omc" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o TimeSeries.NcTest.o TimeSeries.NcTest.c TimeSeries.NcTest.c: 19: 28: ошибка: ncDataReaderEA.h: нет такого файла или каталога mingw32-make: *** [TimeSeries.Nc ] Ошибка 1

Я думаю, что причина, по которой он работает на dymola, заключается в том, что dymola использует компилятор C и, возможно, компилирует файл c библиотеки на лету. К сожалению, мне приходится пользоваться открытой моделикой.

Может ли кто-нибудь помочь, если эту ошибку можно исправить для использования с открытым компилятором modelica ИЛИ, если есть какая-либо другая альтернатива файлу данных временных рядов для чтения в modelica (открытый компилятор modelica)?

заранее спасибо


person codelearner    schedule 19.07.2015    source источник
comment
В настоящее время существует две версии программы чтения netCDF: оригинальная версия Йорга Редлера на bitbucket и форк Томаса Бейтлиха на github, какой из них вы используете? Пожалуйста, добавьте информацию к вашему вопросу (например, в виде ссылки).   -  person matth    schedule 19.07.2015
comment
Существует по крайней мере одна альтернатива, программа чтения HDF5 от Modelon: bitbucket.org/modelon/simdevtools   -  person matth    schedule 19.07.2015
comment
Куда вы положили файлы библиотеки .c и .h, такие как ncDataReaderEA.h? Вам необходимо передать эту информацию компилятору OpenModelica, иначе он их не найдет. Вы можете поместить их в C: /OpenModelica1.9.0//include/omc или в текущий каталог, в котором находится ваша модель. Либо это, либо установите переменную среды MODELICAUSERCFLAGS = -Idirectory / с / h / files   -  person Adrian Pop    schedule 19.07.2015
comment
Файлы .c и .h находятся в том же каталоге, что и файл .mo. Я не пробовал помещать их в каталог omc, но, по моему мнению, это не делает переносимый файл .mo. Я бы хотел, чтобы это было проще. Мне было интересно, почему такая важная функция не привлекла столько внимания.   -  person codelearner    schedule 21.07.2015
comment
он не работает даже после добавления файла .h в omc. Ошибка сохраняется с отсутствующим ncDataReaderEA.h   -  person codelearner    schedule 21.07.2015
comment
Куда вы положили файл .h и как вы вызываете компилятор?   -  person Adrian Pop    schedule 27.07.2015
comment
Поскольку размещение файла h в местоположении компилятора omc не работает, я помещаю его обратно в ту же папку, что и файл .mo, где находятся все остальные библиотеки DLL ncReader. С Димолой это действительно так. Однако я не пробовал, может ли он работать с файлом .mos (и как?) ...   -  person codelearner    schedule 01.08.2015


Ответы (1)


Опаздываю на два года, но выход есть. Используйте блок Modelica / BlocksTimeources / Sources.
Ваш текстовый файл должен соответствовать этому формату.

# 1
double tableName (строки, столбцы)

0 0,1 32
1 0,2 35
2 0,3 38

где в первом столбце должно быть указано время в порядке возрастания, а в других столбцах - соответствующие данные.

person Pavan Padubidri    schedule 04.03.2018
comment
Вы также можете использовать библиотеку ModelicaTableAdditions из github.com/modelica-3rdparty/ModelicaTableAdditions, если хотите придерживаться файлов CSV. - person tbeu; 20.03.2021