Control/ctrl file - nezbytné informace o úloze
Informace jsou členěny do bloků v libovolném pořadí (pořadí má drobné výjimky, na které budete eventuelně upozorněni při běhu programu). Každý blok je identifikován klíčovým slovem, které určuje jaká informace se v bloku nachází. Blok s daným klíčovým slovem se může vyskytovat pouze jednou nebo vůbec.
Informace v bloku jsou strukturovány do řádků. Počet řádků (pokud je jich víc než jeden) je třeba uvést na začátku bloku.
Informace mohou být umístěny buď v samostatném textovém souboru (argument -IN_ctrl file) v prostém (tzv. legacy) formátu nebo v XML formátu (rozdíl legacy/XML se rozpozná automaticky podle prvního znaku souboru, '#' - legacy, '<' - XML). Nebo jsou informace vloženy do souboru s geometrií - podporováno pouze geometrií s formátem VTKXML, data jsou taktéž v XML.
Struktura dat v XML formátu
<KEY> ----+
<item> xxx </item> | blok s jedním řádkem
</KEY> ----+
<KEY Number="N"> ----+
<item> xxx </item> | blok s více řádky
... |
</KEY> ----+
...
Struktura dat v legacy formátu
Každý blok začíná hlavičkovým řádkem s klíčovým slovem a sahá až po hlavičkový řádek následujíciho bloku. Soubor musí být ukončen "ukončovacím blokem", který má klíčové slovo "END". Vše za znakem # je považováno za komentář.
### KEY com ----+ blok s jedním řádkem
xxx ----+
### KEY com ----+
N |
xxx | blok s více řádky
xxx # com |
... ----+
### ...
...
### END com ----+ ukončovací blok
### | sekvence na začátku řádku indikuje hlavičkový řádek |
KEY | klíčové slovo (HEAD, NODES, ELEMENS, ..., END) |
com | volitelný komentář |
N | počet řádků v bloku |
xxx | vlastní data daného bloku |
Struktura dat ve vlastních blocích je obecně různá. Můžeme je rozdělit na následující typy bloků.
Bloky PROBLEM_*
Bloky obsahují obecná data vztahujíci se k celé úloze.
Bloky PROBLEM_COMMENT, PROBLEM_OUTPUT_FILE_NAME, PROBLEM_ANALYSIS, PROBLEM_TYPE_DOF, PROBLEM_OUTPUT.
Bloky LIST_*
Bloky obsahují seznamy vlastností. V bloku/seznamu s danou vlastností jsou jednotlivé položky zapsány na novém řádku a uvedené identifikačním číslem, tzv. ID. Pomocí ID a názvu vlastnosti lze konkrétní instanci vlastnosti přiřadit vybraným komponentům (uzlům, elementům). Jedná se o nepřímé přiřazení.
Identifikační čísla ID v jednom bloku začínaji od jedničky, jsou řazeny vzestupně a nejsou podporovány mezery v číslování.
Bloky LIST_CROSS-SECTIONS, LIST_MATERIALS, LIST_BOUNDARY_CONDITIONS, LIST_SETS_IDS_PRESCRIBED_VALUES.
Bloky ASSIGN_* - vlastnosti ke komponentům
Vlastnosti jsou zde přiřazovány komponentům, tj. uzlů nebo elementům. Vlastnosti mohou být definované přímo nebo jsou definované pomocí svého ID a vlastní definice je v některém bloku LIST_**. Komponenty jsou definované pomocí property nebo ID čísla.
Property bloky - komponenty jsou definovány pomocí property.
Bloky ASSIGN_ATTRIBUTES_TO_NODE_PROP, ASSIGN_ATTRIBUTES_TO_ELEMENT_PROP.
ID bloky - komponenty jsou definovány pomocí ID.
Bloky ASSIGN_ATTRIBUTES_TO_NODE_ID, ASSIGN_ATTRIBUTES_TO_ELEMENT_ID.
Bloky ASSIGN_* - komponenty k vlastnostem
V daném bloku je každém řádku nejdříve uvedeno ID vlastnsti, viz Bloky LIST_*. Následuje identifikace komponentů, které mají mít danou vlastnost přiřazenou.
Bloky ASSIGN_NODAL_LOAD, ASSIGN_CONST_EDGE_LOAD, ASSIGN_CONST_SURFACE_LOAD, ASSIGN_CONST_BODY_LOAD.
Příklad - legacy formát
### PROBLEM_COMMENT ###
example - simple frame rectangle
### LIST_CROSS-SECTIONS ###
2
1 Rectangle width 0.1 height 0.2 refNode y -2
2 Rectangle width 0.1 height 0.3 refNode y -2
### LIST_MATERIALS ###
1
1 IsoLinEl density 0.0000025 E 40000.0 nu 0.18 tAlpha 0.000012
### LIST_BOUNDARY_CONDITIONS ###
1
1 DeadWeight components 6 0.0 0.0 -1.0 0.0 0.0 0.0
### END ###
Příklad - XML formát
<PROBLEM_COMMENT>
<item> example - simple frame rectangle </item>
</PROBLEM_COMMENT>
<LIST_CROSS-SECTIONS Number="2">
<item> 1 Rectangle width 0.1 height 0.2 refNode y -2 </item>
<item> 2 Rectangle width 0.1 height 0.3 refNode y -2 </item>
</LIST_CROSS-SECTIONS>
<LIST_MATERIALS Number="1">
<item> 1 IsoLinEl density 0.0000025 E 40000.0 nu 0.18 tAlpha 0.000012 </item>
</LIST_MATERIALS>
<LIST_BOUNDARY_CONDITIONS Number="1">
<item> 1 DeadWeight components 6 0.0 0.0 -1.0 0.0 0.0 0.0 </item>
</LIST_BOUNDARY_CONDITIONS>