(U7.05.21) Процедура IMPR RESU (FORMAT “MED”)

Материал из ru.wiki.laduga.ru
Перейти к: навигация, поиск


1 Цель

Записывать результат вычисления в файле с форматом MED. Описываются все ключевые слова команды IMPR_RESU (U4.91.01)относительно этого формата вывода.

В файл с форматом MED возможна запись с выбором:

  • ячейка;
  • поля в узлах;
  • поля в элементах.

Во время записи полей с элементами в точках Гаусса также записывается локализация справочных элементов (координаты и вес точек Гаусса).

MED (Моделирование и обмен данными) это нейтральный формат данных, разработанный EDF R & D и французским агентством по атомной энергии, для обменов данными между машинными кодами. Данные, которыми можно обмениваться согласно этому формату это ячейки и поля результатов в узлах и элементах. Файлы MED это двоичные и переносимые файлы (основанные на библиотеке HDF5, Иерархический Формат данных). Запись результатов в MED файл дает возможность другому машинному коду, сопряженному с MED, прочесть результаты с помощью Code_Aster через команду IMPR_RESU.

2 Код

 IMPR_RESU (
 #Syntaxe of procedure IMPR_RESU to format “MED”
 ◊UNITE=unit ,
 ◊FORMAT= / “MED”,
 ◊IMPR_NOM_VARI= / “NON”, [DEFECT]
                 / “OUI”,
 /RESU =_F (
   ♦ | MAILLAGE= my, [mesh]
     | / RESULTAT= resu, [sd_resultat]
          ◊ / NOM_CHAM=l_nomsymb , [l_K16]
          ◊ / NUMERIQUE_ORDRE=lordre , [l_I]
            /NUME_MODE =lmode , [l_I]
            /NOEUD_CMP =lnoecmp , [l_K16]
            /NOM_CAS =ncas , [l_K16]
            /ANGL =langl , [l_K16]
            //FREQ =lfreq , [l_R]
              /INST =linst , [l_R]
              ◊ | PRECISION= / prec, [R]
                             /1.0D-3 , [DEFAUT]
                | CRITERE= / “RELATIF”, [DEFECT]
                           / “ABSOLU”,
       /CHAM_GD =chgd , [cham_gd]
       ◊ / NOM_ CHAM_MED=l_nomcham , [l_K64]
         / NOM_RESU_MED=l_nomresu , [K8]
       ◊ CARA_ELEM = carele, [cara_elem]
       ◊PARTIE= / “REEL',
                / “IMAG',
   ◊INFO_MAILLAGE = /“OUI'
                    /“NON' [DEFAUT]
         ),
 # Pour to print some fields of “data”:
 /CONCEPT =_F (
    /CHAM_MATER = chmat, [cham_mater]
    /CARA_ELEM = carele, [cara_elem]
       ◊ REPERE_LOCAL = / “OUI” ,
                        / “NON”, [DEFAUT]
       # if REPERE_LOCAL = “OUI”,
              ♦MODELE= Mo [model]
   /CHARGE = charg, [load]
             )
 # Restriction of the results (if RESU=_F (RESULTAT=…))
 ◊RESTREINT=_F (
     ♦ / MAILLE=l_maille , [l_maille]
       /GROUP_MA =l_grma , [l_gr_maille]
     ◊ | TOUT_GROUP_MA= /“OUI”,
                        /“NON”, [DEFECT]
       ◊ | GROUP_NO=l_grno , [l_gr_noeud]
         | TOUT_GROUP_NO= /“OUI”,
                          /“NON”, [DEFAUT]
       ),



3 Операнды FORMAT и UNITE

3.1 Операнд FORMAT

Операнд FORMAT позволяет указать формат файла, в который нужно записать результат.

Формат “MED” в процедуре IMPR_RESU означает, что результат должен быть записан в файле с форматом MED.

3.2 Операнд UNITE

Определяет в какой модуль записывается MED файл. По умолчанию, UNITE = 80 и соответствует модулю по умолчанию типа rmed в astk.



4 Ключевое слово IMPR_NOM_VARI

Это ключевое слово полезно в случае использования внутренних переменных. Когда оно используется, необходим вывод поля VARI_*, это - фактически поле VARI_ * _ NOMME, которое будет выводиться. Это поле будет состоять из нескольких компонент, имя которых будет основываться на списке базовых законов, используемых в вычислении. Если два базовых закона будут иметь общие внутренние переменные, то они будут объединены в единственную компоненту.



5 Ключевое слово RESU

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

5.1 Операнд MESH

Если результатом является сетка (операнд MESH (U4.91.01)), тогда эти данные, были перенесены в результирующий файл в формате MED:

 список узлов     число, имя, координата;
 список ячеек     число, имя, тип, имя узлов;
 список чисел     группы узлов, имя, несколько узлов, имена узлов;
 список чисел     группы ячеек, имя, число петель, имена ячеек.

Примечание:

В файле MED существует раздел узлов и ячеек согласно группам. Раздел соответствует семейству MED. В файле MED группы распределены в семействах: следовательно, там находятся семейства узлов и семейства элементов.

5.2 Операнд RESULTAT

Операнд RESULTAT позволяет вывести в файл MED, поля содержащее понятие result. В формате MED можно вывести только поля в узлах, обозначенных ключевым словом NOM_CHAM.

В файл “MESSAGE” записывается следующая информация:

  • операнд “RESULTAT”;
  • операнд “NOM_CHAM;
  • операнд “NUME_ORDRE”;
  • имя поля, сохраненного в файле MED: связь трех предыдущих операндов.

Если INFO_MAILLAGE = “OUI“, тогда более подробная информация выведена в файл “MESSAGE' во время записи ячейки MED. Появится возможность, например, получить типы выведенных ячеек, имена созданных семейств MED и т.д.

5.3 Операнд CARA_ELEM

Операнд CARA_ELEM служит для вывода полей для подточек. Операнд CARA_ELEM предоставляет оценку, поля в подточках, выведенных путем добавления информации в файле MED, позволяющий расположить подточки Гаусса, принимая во внимание информацию, содержащуюся в sd_cara_elem (толщина оболочки, угол буравчика, луча мультиволокна, …).

Таким образом, эта функциональность позволяет во время визуализации файла MED увидеть подпункты, правильно расположенные в пространстве.

5.4 Операнд CHAM_GD

Операнд CHAM_GD позволяет вывести в файл структуру данных типа champ_gd. Следовательно, с этим ключевым словом можно вывести карту, поле с элементами или поле с узлами.

5.5 Операнд NOM_CHAM_MED

Операнд NOM_CHAM_MED позволяет определить имя поля MED. Это – цепочка из 64 символов. Она может быть полезна в частности, когда необходимо вывести определенные компоненты поля как несколько полей в том же файле MED (например, для визуализации SIRO_ELEM).

5.6 Операнд NOM_RESU_MED

Операнд NOM_RESU_MED является альтернативой NOM_CHAM_MED относительно терминологии полей MED. Его использование позволит явно не называть поля MED, что означает, что будут выведены все поля, содержавшиеся в результате. Каждое имя полей MED будет создано строится исходя из:

  • символьная строка, предоставленная NOM_RESU_MED (цепочка из более 8 символов) ;
  • символьное имя поля Aster.

Например:

 IMPR_RESU = (
    FORMAT = 'MED',
    RESU = _F ( RESULTAT = U,
                NOM_RESU_MED = 'U_HAUT',
                GROUP_MA = 'HAUT',
                NUME_ORDRE = 1, )
             )

Если результат U содержит поля DEPL и SIEF_ELGA, то вышеупомянутая команда произведет эти поля MED:

  • “U_HAUT __ DEPL”;
  • “U_HAUT __ SIEF_ELGA”;

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

5.7 Операнд PARTIE

Невозможно записать комплексные поля, поэтому необходимо выбрать между действительной частью (PARTIE ='REEL”) и комплексной частью (PARTIE ='IMAG”).



6 Ключевое слово CONCEPT

Этот ключевое слово позволяет вывести на экран величины, на которые влияет пользователь командами AFFE_MATERIAU, AFFE_CARA_ELEM и AFFE_CHAR_MECA.

Это ключевое слово предоставляет доступ к 3 асимметричным словам, выделенным в 3 команды:

  CHAM_MATER, CARA_ELEM и LOAD.

Каждый будет в состоянии записать, например:

  IMPR_RESU (ФОРМАТИРУЮТ ='MED”,

Идея этого вывода состоит в том, чтобы преобразовать каждое количество, на которое влияют на ячейки сетки в целочисленное значение: 1,2,3, …
связь между величинами, на которые влияют ячейки, и целыми числами дана в файле .mess. Например, для материального поля:

 PRINTING OF A FIELD OF CONCEPT: Material field 
 NOM OF the FIELD: CHAMPMAT_CHAMP_MAT 
 CORRESPONDENCE VALEUR <-> CONTENU:
 VALEUR =         1.
     X1      = MAT_1 
 VALEUR =         2.
     X1      = MAT_2 
 VALEUR =         3.
     X1      = MAT_3 

В файле MED, всегда найдется поле (CHAMPMAT_CHAMP_MAT), которое будет содержать численные значения 0., 1., 2., … и будет в состоянии вывести на экран проверку правильного присвоения материалов. Примечание: Значение 0. соответствует величинам, на которые не влияют ячейки.

В файле MED также найдется поле (CHAMPMAT#CHAMP_MAT), которое будет содержать значения компонент. В настоящее время это доступно только для оболочек и сеток.

6.1.1 Операнды REPERE_LOCAL

Если REPERE_LOCAL имеет значение “OUI”, то 3 вектора, составляющие локальную систему координат каждого элемента, записываются в файл.

6.2 Поля, отображенные на экране

  CHAM_MATER:
     поле MATERIAUX.

  CARA_ELEM:
     Общие характеристики сетки;
     Геометрические Характеристики сетки;
     Общие характеристики балок;
     Геометрические Характеристики балок;
     Характеристики проводов;
     Характеристики кривых балок;
     Характеристики "текучих" балок;
     Характеристики дискретных элементов K_*;
     Характеристики дискретных элементов M_*;
     Характеристики дискретных элементов A_*;
     Геометрические Характеристики оболочек;
     Ориентация элементов 2D и 3D;
     Ориентация оболочек и балок.

  CHARGES :
     Загрузка PESANTEUR;
     Загрузка ROTATION;
     Загрузка PRES_REP;
     Загрузка объёмных сил в 3D;
     Загрузка отнесённых к единице поверхности сил в 3D;
     Загрузка отнесённых к единице длины сил в 3D;
     Загрузка отнесённых к единице поверхности сил в 2D;
     Загрузка отнесённых к единице длины сил в 2D;
     Загрузка распределённых сил для оболочек;
     Загрузка PRE_EPSI;
     Загрузка FORCE_ELEC;
     Загрузка FLUX_THM_REP;
     Загрузка IMPE_FACE;
     Загрузка ONDE_FLUI.



7 Ключевое слово RESTREINT

Ключевое слово RESTREINT позволяет уменьшить ячейку, которая будет выведена. Поля, очевидно, также уменьшены, и они основаны на уменьшенной ячейке.

Когда используется RESTREINT:

  • необходимо обязательно информировать GROUP_MA или MESH для указания на ячейки, которую хотим сохранить;
  • можем использовать ключевые слова GROUP_NO, TOUT_GROUP_MA, TOUT_GROUP_NO, чтобы сохранять некоторые группы в уменьшенной ячейке (см. CREA_MAILLAGE/RESTREINT);
  • в RESU, ключевые слова INST, NUME_ORDRE, …, NOM_CHAM позволяют выбрать момент времени и поля.

Полезные точки для повторного чтения файла:

  • результат, который сокращен изменяется. Он закодирован в 8 символах “&RESURii”: ограниченный результат n° ii с ii ∈ [1, 99]. Номер 1 соответствует 1-ому сохраненному результату, и т.д. … Поток ii ∈ [1, 9] “_ “добавлен к концу имени;
  • имя поля MED строится с имени поля Aster в результате. Это закодировано в 64 символах. Первые 8 символов соответствуют имени сокращенного результата, к которому присоединено имя поля Aster, дополненное пробелами для получения цепочки из 64 символов;
  • прежде чем прочесть сокращенный результат, необходимо считать сокращенную сетку и изменить модель и при необходимости определить материал ограниченной сетки.

Пример получается из тестирования zzzz240a: Сохранение в формате MED теплового результата RTEMP и нелинейного результата RSTNL.

Сохранение:

 IMPR_RESU (
   FORMAT= “MED” ,
   RESTREINT= _F ( GROUP_MA= ( “CARRE1” , “G1” ) , MAILLE= ( “M1” ,
 “M16” ) ) ,
   RESU= (
         _F ( RESULTAT= RTEMP, NOM_CHAM= ( “TEMP” , “FLUX_ELGA” ) ,
              NUME_ORDRE= (0 , 3) ) ,
         _F ( RESULTAT= RSTNL, NUME_ORDRE= (1 , 2) , ) ,
         ) ,
      )

Чтение размера ячеек и назначение термической модели:

 LMAIL =LIRE_MAILLAGE ( FORMAT= “MED” )
 LMOTH =AFFE_MODELE (
    MAILLAGE= LMAIL,
    AFFE= _F ( TOUT= “OUI” , “ THERMAL” PHENOMENE= , “ PLANE”
 MODELISATION= )
 )

Чтение термического результата ограничивает:

  • EVOL_THER;
  • 1-ое сохранение, он называется &RESUR1_ (8 симолов) ;
  • поле с названием TEMP, NOM_CHAM_MED поэтому '&RESUR1_TEMP ' .
 LTEMP =LIRE_RESU (
   TYPE_RESU= “EVOL_THER” , FORMAT= “MED” ,
   MODELE= LMOTH, TOUT_ORDRE= “OUI” ,
   FORMAT_MED= _F ( NOM_CHAM_MED= “&RESUR1_TEMP” ,
                    NOM_CHAM= “TEMP” ) ,
 )

Чтение размера ячей и назначение механической модели:

 LMAIL =LIRE_MAILLAGE ( FORMAT= “MED” )
 LMOME =AFFE_MODELE (
    MAILLAGE= LMAIL,
    AFFE= _F ( TOUT= “OUI” , PHENOMENE= “MECANIQUE” , MODELISATION=
 “D_PLAN” )
 )

Чтение термического результата ограничивает:

  • EVOL_NOLI;
  • 2-ое сохранение, он называется &RESUR2;
  • поля, которые хотим прочитать - DEPL, SIEF_ELGA, VARI_ELGA, SIEF_ELNO;
  • NOM_CHAM_MED - логическая связь &RESUR2_ (8 букв) и имени поля Aster;
  • необходимо определить материал для полей внутренних переменных.
 LSTNL =LIRE_RESU (
    TYPE_RESU= “EVOL_NOLI” , FORMAT= “MED” ,
    MODELE= LMOME, CHAM_MATER= CMME2, TOUT_ORDRE= “OUI” ,
    FORMAT_MED= (
       _F ( NOM_CHAM_MED= “&RESUR2_DEPL” ,
            NOM_CHAM= “DEPL” ) ,
       _F ( NOM_CHAM_MED= “&RESUR2_SIEF_ELGA” ,
            NOM_CHAM= “SIEF_ELGA” ) ,
       _F ( NOM_CHAM_MED= “&RESUR2_VARI_ELGA” ,
            NOM_CHAM= “VARI_ELGA” ,
            NOM_CMP= ( “V1” , ) , NOM_CMP_MED= ( “V1” , ) , ) ,
       _F ( NOM_CHAM_MED= “&RESUR2_SIEF_ELNO” ,
            NOM_CHAM= “SIEF_ELNO” ) ,
    ) ,
 )



8 Пример

 IMPR_RESU = (
     FORMAT= “MED”,
     RESU= _F ( RESULTAT= REMEZERO,
                NOM_CHAM= “ERME_ELEM”,
                NUME_ORDRE= 3,)
 )

Выполнение команды IMPR_RESU вызовет вывод на экран в файле “MESSAGE”:

 RESULTAT          :  REMEZERO
 FIELD             :  ERME_ELEM
 NUME_ORDRE        :  3
     ==> NOM MED   :  REMEZEROERME_ELEM

Пример использования NOM_CHAM_MED для вывода SIRO_ELEM:

 IMPR_RESU (FORMAT='MED”,
            RESU= (
                   _F (RESULTAT=RESUNL,
                       NOM_CHAM= (“SIRO_ELEM”,),
                       NOM_CHAM_MED= (“RESUNL__SIRO_ELEM_NORMAL”),
                       NOM_CMP= (“SIG_NX”, “SIG_NY”, “SIG_NZ”, “SIG_N”,),
                       GROUP_MA='PRES”,),
                   _F (RESULTAT=RESUNL,
                       NOM_CHAM= (“SIRO_ELEM”,),
                       NOM_CHAM_MED= (“RESUNL__SIRO_ELEM_TANGENT”),
                       NOM_CMP= (“SIG_TX”, “SIG_TY”, “SIG_TZ”,),
                       GROUP_MA='PRES”,),
                   _F (RESULTAT=RESUNL,
                       NOM_CHAM= (“SIRO_ELEM”,),
                       NOM_CHAM_MED= (“RESUNL__SIRO_ELEM_T1”),
                       NOM_CMP=(“SIG_T1X”,“SIG_T1Y”,“SIG_T1Z”,“SIG_T1”,),
                       GROUP_MA='PRES”,),
                   _F (RESULTAT=RESUNL,
                       NOM_CHAM= (“SIRO_ELEM”,),
                       NOM_CHAM_MED= (“RESUNL__SIRO_ELEM_T2”),
                       NOM_CMP=(“SIG_T2X”,“SIG_T2Y”,“SIG_T2Z”,“SIG_T2”,),
                       GROUP_MA='PRES”,),
                       ),);



9 Выгода записи результата в файле с форматом MED

MED это формат файла для обмена данными между кодами. Любой машинный код, имеющий интерфейс MED, в состоянии обмениваться информацией с любым другим кодом, имеющим этот тот же интерфейс. Фактически, результат (ячейка или поле) записанный в файле с форматом MED командой IMPR_RESU может быть считан любым машинным кодом, имеющим интерфейс чтения MED и в частности постобработанный в Сэлоум.