logo desc

В данной статье рассмотрим, из чего состоит проект FlowVision. Узнаем, как делать вещи, которые лучше не делать (вручную сохранять копию проекта, прореживать историю сохранения данных). Узнаем о возможности восстановления поврежденных проектов.

Структура хранения данных

Проект во FlowVision всегда состоит из нескольких файлов. При этом проект бывает двух видов – серверная часть и клиентская. Подробнее см. руководство пользователя  (https://flowvision.ru/webhelp/fvru_30904/interaction_server_and_client.htm )

Серверная часть проекта содержит в себе всю клиентскую часть проекта, плюс несколько файлов:

  • Solverpart – пустой файл, указывающий клиентским модулям на то, что это Серверная часть и ее лучше не открывать с помощью клиентских модулей.
  • Файлы *.fvdata, *.fvgrid – файлы, в которых содержатся результаты расчета, данные в каждой ячейке и описание сетки
  • Файлы *.log, *.err, *.sta – файлы протоколов работы Солвера с проектом.

Файлы проекта бывают трех типов:

  • Текстовые
  • Текстовые в xml формате
  • Бинарные

Данные, которые имеют большой объем (сетка, результаты расчета, описание геометрических поверхностей), хранятся в бинарном виде. Остальные данные можно просмотреть в текстовом редакторе.

Файл *.fvproj – это XML файл, который содержит общее описание структуры проекта.


Вот пример fvproj файла:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<FVPROJECT>
  <ProjID>3BBC6FD9-3E1B-482E-B9A9-007832DA2276</ProjID>
  <VersionID>AD9356BC-9D40-4414-AC36-02FABA39D507</VersionID>
  <SceneID>EB8E50E6-B8AF-492C-8781-9AE15A07476A</SceneID>
  <CtrlID>1AA8A498-F547-4BB4-8D7E-F14FFD32C75B</CtrlID>
  <FormatVer>3</FormatVer>
  <Steps>
    <ITEM>
      <Number>0</Number>
      <Iteration>0</Iteration>
      <Time>0</Time>
      <Contents>HGBOS</Contents>
    </ITEM>
    <ITEM>
      <Number>1</Number>
      <Iteration>500</Iteration>
      <Time>0.016438364594882314</Time>
      <Contents>SMV</Contents>
    </ITEM>
  </Steps>
</FVPROJECT>

Ручное сохранение проекта

Обратите внимание на тег <VersionID>

<ProjID>3BBC6FD9-3E1B-482E-B9A9-007832DA2276</ProjID>

Здесь указывается уникальный идентификатор проекта. По этому идентификатору Солвер-Агент производит сравнение Клиентской части проекта и Серверной. Если какая-то из частей сохранялась без связи с другой, то идентификатор меняется. Значит, проекты уже отличаются и их нельзя напрямую связывать.

Если сделать копию папки с Серверным проектом, то будет нарушена нормальная работа Солвер-Агента. Т.к. с его точки зрения два одинаковых проекта (с одинаковым идентификатором) будут находиться в одной папке. Поэтому сохранять копии проектов необходимо с помощью Пре-постпроцессора.

В случае острой необходимости сделать копию проекта вручную (например в условиях работы с кластером без прямого доступа) , необходимо в копии проекта поменять несколько символов в номере версии, окруженном тегами  <ProjID> … </ProjID>

Ручное прореживание истории сохранений результатов расчета

С помощью Пре-Постпроцессора и опции «Сохранить выборочно» можно выполнить частичное удаление истории сохранений данных.

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

В тег <Step> вложены блоки <ITEM> .. </ITEM>

Каждый <ITEM> блок – это запись о сохранении данных. В случае, если сохранение данных происходит с историей, в файле будет несколько <ITEM> блоков.

Подробно рассмотрим <ITEM> блок:

<ITEM>
      <Number>11</Number>
      <Iteration>550</Iteration>
      <Time>0.015654564</Time>
      <Contents>HGBOS</Contents>
</ITEM>

В тегах <Iteration>  и <Time> указываются номер шага по времени и время физического процесса, которые соответствуют моменту сохранения.

В теге <Number> указывается порядковый номер сохранения. Этот же номер указывается в названии файлов, которые относятся именно к этому сохранению, вот пример:

flist fvdata

На рисунке выше показаны файлы, которые относятся к сохранениям номер 0, 1 и 2. У файлов *.fvgrid и *.fvdata после номера сохранения также указывается номер процессора, в данном случае номер 000 (сохранение производилось только на одном процессоре).


В теге <Contents> зашифровано, какие именно данные сохранялись на данном сохранении. Ниже привожу расшифровку:


H -*.fvinp
G - *.fvgeom
B - *.fvbcs
O - *.fvgobj
S - *.fvstat
M - *.fvgrid
V - *.fvdata и *.fvmind


Процесс прореживания вручную состоит из нескольких этапов:

  1. Сделать резервную копию всего проекта в папку, которая находится за пределами Серверной директории проектов.
  2. Удалить ненужные записи <ITEM> из файла *.fvproj , при этом нужно помнить о следующем: нельзя удалять блоки ITEM, в которых в теге <Contents> упоминаются буквы HGBOM , если после этих записей еще останутся другие ITEM блоки, не содержащие этих букв, то эти сохранения не удастся прочитать. Поясню иными словами: при загрузке проекта FlowVision читает последний блок ITEM, если он в нем не находит какую-то из букв в теге <Contents>, он ищет эту букву в предыдущем блоге ITEM, и далее вверх по списку, пока не найдет. Если Вы удалите блок ITEM с какой-то буквой, которая ниже по списку ни разу больше не встречается, то проект невозможно будет восстановить. ( В случае сохранения сетки на каждом шаге преимущественно будут сохраняться записи ITEM с таким тегом Contents: <Contents>SMV</Contents> на каждом сохранении. В этом случае блок ITEM можно удалять спокойно, т.к. на следующем сохранении тоже будет сохранена буква M). Старайтесь вообще не удалять записи, содержащие редкие буквы H,G,B,O в теге Contents. Исключение может составлять разве только задача FSI, где буква O будет сохранена каждый раз.
  3. Удалить все файлы, содержащие номера удаленных блоков ITEM
  4. Загрузить проект на солвер и с помощью Модуля просмотра результатов или Пре-постпроцессора убедиться, что проект успешно загружен и можно просмотреть результаты сохранения на  оставшихся шагах по времени
  5. Убедившись, что все хорошо, удалите бэкап.

Восстановление поврежденных данных

Иногда, из-за сбоев оборудования или стороннего программного обеспечения, в момент сохранения данных прекращается работ FlowVision. В этой ситуации могут быть повреждены те или иные файлы проекта.

При попытке загрузить проект на солвер в *.err файле можно узнать, какие именно файлы отсутствуют или повреждены.

Ниже я коротко перечислю основные действия по восстановлению данных:
0.  Прежде всего сделайте резервную копию проекта
1.    Убедитесь, что fvproj  файл содержит типичные для него данные, не является пустым. Если файл пустой, попробуйте восстановить его из файла *.fvproj.backup или из Клиентской части проекта
2.    Удалите в *.fvproj файле блок ITEM, содержащую тег <Intermediate>  (если таковой имеется) следующего вида:

    <ITEM>
      <Number>16</Number>
      <Iteration>7598</Iteration>
      <Time>0.20775437958965703</Time>
      <Intermediate>1</Intermediate>
    </ITEM>


3.   Если проект по-прежнему не загружается, но при этом расчет велся с сохранением с историей (нестационарная запись, т.е. без перезаписывания), тогда попробуйте удалить последний блок ITEM, возможно именно он поврежден и попробуйте загрузить проект снова.
4.   Если проект не загружается и при этом сохранение было без истории, т.е. файлы данных перезаписывались, то попробуйте восстановить предыдущее сохранение, все файлы этого сохранения находятся в файлах *.backup  .

Удалите соответствующие файлы , а у backup файлов удалите расширение backup

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

И вообще, старайтесь без острой необходимости не делать этого :)