1\documentclass{article}
2\usepackage{epsfig}
3\usepackage{color}
4\usepackage{hyperref}
5\usepackage{html}
6\usepackage{/usr/share/texmf/tex/latex/html/html}
7\begin{document}
8\title{CalculiX USER'S MANUAL\\ - CalculiX GraphiX, Version 2.18 -}
9\author{Klaus Wittig}
10\maketitle
11\begin{figure}[h]
12\epsfig{file=jetengine.eps,width=12cm}
13\caption{\label{cover} A complex model made from scratch using second order brick elements }
14\end{figure}
15\newpage
16
17
18\tableofcontents
19
20
21\section{Introduction}
22 This document is the description of CalculiX GraphiX (cgx). This program is designed to generate and display finite elements (FE) and results coming from CalculiX CrunchiX (ccx). If you have any problems using cgx, this document should solve them. If not, you might send an email to the author \cite{cgx}. The Concept and File Format sections give some background on functionality and mesher capabilities. The Getting Started section describes how to run the verification examples you should have obtained along with the code of the program. You might use this section to check whether you installed CalculiX correctly. Then, a detailed overview is given of the menu and all the available keywords in alphabetical order in the Menu and Commands sections respectively. Finally, the User's Manual ends with the appendix and some references used while writing the code.
23
24
25\section{Concept}
26This program uses the openGL library for visualization and the glut library \cite{glut} for window management and event handling. This results in very high speed if a hardware-accelerated openGL-library is available and still high speed for software-rendering (MesaGL,\cite{mesa}).
27
28The cgx has pre- and post-processor capabilities. It is able to generate and display beam, shell and brick elements in its linear and quadratic form (fig. \ref{cover}), tets can be generated from within cgx if either TETGEN \cite{TETGEN} or the program ng\_vol (part of NETGEN \cite{NETGEN}) is accessible (see also ''\htmlref{How to deal with CAD-geometry}{How to deal with CAD-geometry}''). TETGEN comes with cgx.
29
30The built-in mesher creates a structured mesh based on a description of the geometry. For example, it uses lines for beam elements, surfaces for shell elements and volumes (bodies) for brick elements. The program distinguishes between the mesh and the underlying geometry. Elements are made from faces and faces are made from nodes. If you move a node, the corresponding face(s) and element(s) will follow. The geometry behaves according to the mesh:
31Lines are made from points, surfaces are made from lines and bodies are made of surfaces. As a result, if you modify the position of a point, all related geometry will follow. In other words, if the location of geometric entities is changed, it is necessary to move the points on which the entities rely.  It should be noted that faces exist only on free surfaces of the model.
32
33In addition, entities can be grouped together to make sets. Sets are useful to handle parts of a model. For example, sets can be used to manipulate or display a few entities at a time (see also ''\htmlref{How to define a set of entities}{How to define a set of entities}'').
34
35A simple but powerful entity which can store values (character strings) is also available. This values can be derived from previous commands or calculated results by using an internal stack. Simple calculations can be performed. The values can be used to substitute parameters of subsequent commands. The user might measure a distance or calculate a distance and use this value to move a part of the mesh. Together with a 'while' loop, an 'if' case distinguishing command and the possibility to use system calls via the 'sys' command, elaborated batch files can be written.
36
37After a mesh is created in cgx, it needs written to a file for use with the solver. Likewise, several boundary conditions and loads can be written to files (see ''\htmlref{How to connect independent meshes}{How to connect independent meshes}'', ''\htmlref{How to define loads and constraints}{How to define loads and constraints}'' and ''\htmlref{send}{send}''). These files need to be added into the control file for later use in ccx. Additional commands, material description and so on must be added with the help of an external editor. Existing fields like a pressure distribution or temperatures my be mapped from one mesh to another. Please see ''\htmlref{How to map loads}{How to map loads}'' how to do that.
38
39After the analysis is completed, the results can be visualized by calling the cgx program again in an independent session. The program is primary controlled by the keyboard with individual commands for each function. Only a subset of commands which are most important for post-processing is also available through a pop-up menu. Shaded animations of static and dynamic results, the common color plots and time history plots can be created. The outer faces can be switched off to make inner structures like a cavity visible or certain faces may be displayed in a transparent manner. Also, a cut through the model can be done which creates a section and it is possible to zoom through the model.
40
41Skilled users might include their own functions. For example someone may need his own functions to manipulate the result-data or he may need an interface to read or write his own results format (see ''\htmlref{call}{call}'').
42
43Both the pre- and post- processing can be automated in batch-mode (see ''\htmlref{How to run cgx in batch mode}{How to run cgx in batch mode}'').
44
45The program searches the home directoy for a file named ``.cgx''. The commands written there will be executed during startup. The user might store there ''\htmlref{menu}{menu}'' commands which link user written command files to the menu or other personal settings like ``\htmlref{view}{view} cl'' to switch the command line from the konsole to the graphic's window.
46
47\section{\label{File Formats}File Formats}
48It is hoped by the author that common CAD formats will be supported by stand-alone interfaces which translate into fbd-commands. So far vda, step and iges to fbd interfaces are available on the CalculiX home pages. Tet-meshes can be generated based on the resulting fbd-files. The following file-formats are available to write(w) and/or read(r) geometric entities:
49\begin{itemize}
50\item fbd-format(r/w), this format consists of a collection of commands explained in the section ''\htmlref{Commands}{Commands}'' and it is used to store geometrical information like points, lines, surfaces and bodies. All geometry generated by the user is stored in this format. But it can also be used to define a batch job which uses the available commands.
51\item step-format(r), reverse engineered based on some cad files. Only points and certain types of lines are supported currently. Be aware of the more powefull cad2fbd interface program on the CalculiX home page.
52\item stl-format in ascii (r/w), this format describes a shape using only triangles.
53\end{itemize}
54The following file-formats are available to write a mesh and certain boundary-conditions:
55\begin{itemize}
56\item Abaqus, which is used by the CalculiX solver ccx.
57\item Ansys, most boundary conditions available.
58\item Code\_Aster, mesh and sets of nodes and elements are available.
59\item Samcef, mesh and sets of nodes and elements are available.
60\item dolfyn, a free cfd-code \cite{dolfyn}.
61\item duns, a free cfd-code \cite{duns}.
62\item isaac, a free cfd-code \cite{isaac}.
63\item OpenFOAM, a free cfd-code \cite{OpenFOAM}, only 8-noded brick-elements are supported.
64\item Nastran, most boundary conditions available.
65\item tochnog, a free fem-code \cite{tochnog}, only 8-noded brick-elements are supported.
66\end{itemize}
67The following solver-input-file-formats can be read to check the mesh, sets and certain boundary-conditions:
68\begin{itemize}
69\item Abaqus, this is also used by the CalculiX solver ccx.
70\item Netgen, read Netgen native format (.vol)
71\end{itemize}
72The following file-formats are available to read solver results:
73\begin{itemize}
74\item frd-format, files of this format are used to read results of previous calculations like displacements and stresses. This format is described in section ''\htmlref{Result Format}{Result Format}.'' It is used by the CalculiX solver ccx.
75\item duns, a free cfd-code \cite{duns},
76\item isaac, a free cfd-code \cite{isaac},
77\item OpenFOAM, a free cfd-code \cite{OpenFOAM}.
78\item Nastran, the f06-file can be read (sf. only CHEXA, displacements and stresses). Unfortunatelly this format differs from version to version and has to be adapted occasionally.
79\end{itemize}
80For a more detailed description on how to use cgx to read this formats see the ''\htmlref{read}{read}'' command, ''\htmlref{Program Parameters}{Program Parameters}'' and the program specific ''\htmlref{Tips and Hints}{Tips and Hints}'' sections.  See the ''\htmlref{send}{send}'' command for how to write them from cgx.
81
82
83\section{\label{Getting Started}Getting Started}
84For installation help, see .../Calculix/cgx\_X.X/INSTALL. After the program is installed on your machine, you should check the functionality by running the examples included in the distribution. The examples are located in .../Calculix/cgx\_X.X/examples/. Begin with a result file called result.frd. Just type\\\\  ''cgx result.frd''\\\\and some information is echoed in the konsole and a new window called main window appears on the screen. The name conventions used for the different areas in the main-window are explained in figure \ref{mainwindow}. Now you should move the mouse pointer into the menu-area and press the left mouse-button. Keep it pressed and continue over the menu item ``Dataset'' to ``Disp''. There you release the button. Then press the left button again and continue over ``Dataset'' and ``Entity'' to ``D1''. For background informations look into the subsection ''\htmlref{Datasets}{Datasets}'' and ''\htmlref{Entity}{Entity}'' which explains how to display results. After seeing the values you might play around a bit with the ''\htmlref{Menu}{Menu}''. Before going further, you should read the section ''\htmlref{Input Devices}{Input Devices}''. See also the commands ''\htmlref{steps}{steps}'', ''\htmlref{maxr}{maxr}'', ''\htmlref{minr}{minr}'', ''\htmlref{max}{max}'', ''\htmlref{min}{min}'' (or the combination of max and min ''\htmlref{mm}{mm}'') and ''\htmlref{scal}{scal}'' which might be used to modify the colour representation of the displayed values. For example type ``min 0'' to set the lower value of the colour bar to zero. Now you should study the following interactive commands: Use ''\htmlref{qenq}{qenq}'' to enquire values at nodes. Use ''\htmlref{qtxt}{qtxt}'' to generate node attached texts showing their number and value. Use ''\htmlref{qcut}{qcut}'' to generate a section through the model. And use ''\htmlref{graph}{graph}'' to generate a 2D time history plot (for results with several time-steps) or a 2D plot of values along a sequence of nodes (see ''\htmlref{qseq}{qseq}''). In case you want to display just a set of nodes, faces or elements with their results use the ''\htmlref{plot}{plot}'', ''\htmlref{plus}{plus}'' and ''\htmlref{minus}{minus}''. commands (see also ''\htmlref{How to get the sets from a geo- or ccx-inp file for post-processing}{How to get the sets from a geo- or ccx-inp file for post-processing}'').  Watch out when you type a command; the cgx window MUST stay active and not the konsole from which the program was started. It is better to stay with the mouse pointer in the cgx window. Next, ''\htmlref{Quit}{Quit}'' the program and type\\\\  ''cgx -b geometry.fbd''\\\\in the konsole. The program starts again but now you see only a wire-frame of the geometry. Move the mouse-pointer into the new window and type ''\htmlref{mesh}{mesh} all''. The mouse-pointer MUST stay in this window during typing and NOT in the konsole from which the program was started. After you see ''ready'' in the parent konsole, the mesh is created. To actually see it, type ''\htmlref{plus}{plus} ea all''. Now you see the mesh in green color. To see the mesh as a wire-frame, choose in the main menu''\htmlref{Viewing}{Viewing}'' and continue to the entry ''\htmlref{Toggle Element Edges}{Toggle Element Edges}'' and then again in ''\htmlref{Viewing}{Viewing}'' choose ''\htmlref{Dots}{Dots}''. To see the mesh illuminated chose in the main menu ''\htmlref{Viewing}{Viewing}'' and continue to the entry ''\htmlref{Show Elements With Light}{Show Elements With Light}''. To see it filled, choose in the main menu ''\htmlref{Viewing}{Viewing}'' and continue to the entity ''\htmlref{Fill}{Fill}''. Most of the time it is sufficient to see the surface elements only. For this purpose, choose in the main menu ''\htmlref{Viewing}{Viewing}'' and continue to the entry ''\htmlref{Toggle Surfaces/Volumes}{Toggle Surfaces/Volumes}''. If you start cgx in the post processor mode, as you did in the first example (cgx result.frd), the surface mode is automatically set. To see the interior of the structure, choose in the main menu ''\htmlref{Viewing}{Viewing}'' and continue to the entity ''\htmlref{Toggle Culling Back/Front}{Toggle Culling Back/Front}''. To save the mesh in the format used by the solver, type ''send all abq''. To store the mesh in the result format type ''send all frd''.
85
86To create a new model start the cgx by typing\\\\  ''cgx -b file''\\\\where ''file'' will be the name of the new model if you later exit the program with the command ''\htmlref{exit}{exit}''. The way to create a model from scratch is roughly as follows, create
87\begin{itemize}
88\item points with ''\htmlref{qpnt}{qpnt}'' or ''\htmlref{pnt}{pnt}'',
89\item lines with ''\htmlref{qlin}{qlin}'',
90\item surfaces with''\htmlref{qsur}{qsur}'',
91\item Bodies with ''\htmlref{qbod}{qbod}''.
92\end{itemize}
93If possible, create higher geometry by sweeping or copying geometry with ''\htmlref{swep}{swep}'' or ''\htmlref{copy}{copy}''. You might move or scale your model with the command ''\htmlref{move}{move}''. The commands require sets to work with. Sets reference entities like bodies or nodes. They are useful because you can deal with a bunch of entities at once. See the section ''\htmlref{How to define a set of entities}{How to define a set of entities}'' about how to create them.
94You may write a file with basic commands like ''pnt'' to create the basis for your construction and read it with the ''\htmlref{read}{read}'' command. Most commands can be used in batch mode. This allows the user to write a command file for repeated actions.
95
96If you want to start with CAD geometry then please read ''\htmlref{How to deal with CAD-geometry}{How to deal with CAD-geometry}''.
97
98The interactive commands start with the letter 'q'. Please make yourself familiar with all of them before you start to model complex geometry.
99
100After the geometry is created, the divisions of the lines can be changed to control the density of the elements.  Display the lines and their divisions with
101\begin{itemize}
102\item ''\htmlref{plot}{plot} ld all''.
103\end{itemize}
104To change the element division, use
105\begin{itemize}
106\item ''\htmlref{qdiv}{qdiv}''.
107\end{itemize}
108The default division is ''4''. With a division of''4,'' a line will have 6 nodes and will therefore be the edge of two element of the quadratic type. Next, the type of the elements must be defined. This can be done for each of the different sets. A new assignment will replace a previous one. Delete all previous assignments with
109\begin{itemize}
110\item ''\htmlref{elty}{elty} all''
111\end{itemize}
112and assign new types with
113\begin{itemize}
114\item ''\htmlref{elty}{elty} all he20''.
115\end{itemize}
116If a mesh is already defined type
117\begin{itemize}
118\item ''\htmlref{del}{del} mesh''
119\end{itemize}
120and mesh again with
121\begin{itemize}
122\item ''\htmlref{mesh}{mesh} all''.
123\end{itemize}
124Then choose the menu entity ''\htmlref{Viewing}{Viewing} - \htmlref{Show Elements With Light}{Show Elements With Light}'' to see the illuminated mesh. Lastly, export the mesh in the calculix solver format with
125\begin{itemize}
126\item ''\htmlref{send}{send} all abq''.
127\end{itemize}
128With the ''send'' command, it is also possible to write boundary conditions, loads and equations to files. The equations are useful to ''glue'' parts together (see ''\htmlref{How to connect independent meshes}{How to connect independent meshes}''.
129
130It is advisable to save your work from time to time without exiting the program. This is done with the command
131\begin{itemize}
132\item ''\htmlref{save}{save}''.
133\end{itemize}
134You leave the program either with
135\begin{itemize}
136\item ''\htmlref{exit}{exit}''
137\end{itemize}
138or with
139\begin{itemize}
140\item ''\htmlref{quit}{quit}''.
141\end{itemize}
142Exit will write all geometry to an fbd-file and if a file of this name exists already then the extension of this file will be renamed from fbd to fbb. ''quit''  closes the program without saving.
143
144A solver input file can be written with the help of an editor (emacs, nedit etc.). If you write a ccx command file, then include the mesh, the boundary conditions etc. with the ccx command ''*INCLUDE''. After you finished your input-file for the solver (ccx) you might read it by calling the program again with\\\\  ''cgx -c solverfile.inp''\\\\for a final check. All predefined sets are available together with automatically generated sets which store boundaries, equations and more. These sets start with the ''+''-sign. For example the set +bou stores all constrained nodes where the set +bou1, +bou2, +bou3 store the constraints for the individual directions. Further the set +dep and +ind store the dependent and independent nodes involved in equations etc. See which sets are defined with the command
145\begin{itemize}
146\item ''\htmlref{prnt}{prnt} se''.
147\end{itemize}
148Each line starts with the set-index, then the set-name followed by the number of all referenced entities. The sets can be specified by index or name. For example if the index of set ''blade'' is ''5'' the following commands are equivalent:
149\begin{itemize}
150\item ''plot p 5''
151\item ''plot p blade''
152\end{itemize}
153The use of wildcards is possible to search for a certain expression:
154\begin{itemize}
155\item ''\htmlref{prnt}{prnt} se +*''
156\end{itemize}
157Now all sets starting with a ``+'' in their names will be listed.
158
159Predefined loads are stored as ''\htmlref{Datasets}{Datasets}'' to be visualized. Sets with the name of the load-type (CLOAD, DLOAD) store the related nodes, faces or elements. Use the command
160\begin{itemize}
161\item ''\htmlref{plot}{plot}''
162\end{itemize}
163or
164\begin{itemize}
165\item ''\htmlref{plus}{plus}''
166\end{itemize}
167to visualize entities of sets.
168
169Then run the input file with ccx. The result file (.frd) can be visualized with\\\\  ''cgx result.frd solverfile.inp''\\\\were the solver input file ''filename.inp'' is optional. With this file, the sets, boundary conditions and loads used in the calculation are available together with the results.\\\\If you have problems doing the above or if you want to learn more and in more detail about the cgx continue with the tutorial \cite{tutorial} and look in the appendix, section \htmlref{Tips and Hints}{Tips and Hints} and \htmlref{Known Problems}{Known Problems}.
170
171
172\section{\label{Program Parameters}Program Parameters}
173\begin{verbatim}
174 usage:
175 cgx [-a|-b|-bg|-c|-duns2d|-duns3d|-isaac2d|-isaac3d|-foam|-ng|
176      -step|-stl] filename [ccxfile]
177
178  -a        automatic-build-mode, geometry file derived from a
179            cad file is expected
180  -b        build-mode, geometry file in fbd-format is expected
181  -bg       background, suppress creation of graphic output
182            otherwhise as -b, geometry (command) file must be
183            provided
184  -c        read an solver input file (ccx, Abaqus)
185  -duns2d   read duns result files (2D)
186  -duns3d   read duns result files (3D)
187  -duns2dl   read duns result files (2D, long format)
188  -duns3dl   read duns result files (3D, long format)
189  -isaac2d  read isaac result files (2D)
190  -isaac3d  read isaac result files (3D)
191  -foam     read the OpenFOAM result directory structure
192  -f06      read Nastran f06 file.
193  -ng       read Netgen native format (with surface domains)
194  -step     read an ascii-step file (points and lines only)
195  -stepsplit read step and write its parts to the filesystem
196             in separate directories
197  -stl      read an ascii-stl file (triangles)
198  [-v]      (default) read a result file in frd-format and
199            optional a solver input file (ccx) in addition
200            which provides the sets and loads used in the
201            calculation.
202
203 special purpose options:
204  -mksets       make node-sets from *DLOAD-values
205                (setname:''_<value>'')
206  -read         forces the program to read the complete result-
207                file at startup
208\end{verbatim}
209If no option is provided then a result-file (frd) is assumed, see ''\htmlref{Result Format}{Result Format}''.
210
211A file containing commands or geometric informations is assumed if the option -b is specified. Such a file will be created if you use ''\htmlref{exit}{exit}'' or ''\htmlref{save}{save}'' after you have interactively created geometry. Option -a awaits the same format as option -b but merging, defining of line-divisions and the calculation of the interior of the surfaces is done automatically and the illuminated structure is presented after startup. This should be used if the command file was generated by an interface program which convertes cad-data to cgx-format (for example vda2fbd). With option -a and -b the program will start also if no file is specified.
212
213An input file for the solver can be read with option -c. Certain key-words are known and the affected nodes or elements are stored in sets. For example the default set(s) +bou(dof) store nodes which are restricted in the corresponding degree of freedom and the set(s) +dep(dof) and +ind(dof) store dependent and independent nodes used in equations.
214
215A special case is OpenFOAM. The results are organized in a directory structure consisting of a case containing time-directories in which the result-files are stored. The user must call cgx using the case-directory (cgx -foam case). The program will then search the time-directories. The time directories must contain a time-file to be recognized. Or in other words each directory in this level containing a time-file is regarded as a result directory.
216
217\section{\label{Input Devices}Input Devices}
218
219\subsection{\label{Mouse}Mouse}
220The mouse is used to manipulate the view-point and scaling of the object inside the drawing area (figure \ref{mainwindow}). Rotation of the object is controlled by the left mouse button, zoom in and out by the middle mouse button and translation of the object is controlled by the right mouse button. Inside the menu area, the mouse triggers the \htmlref{main menu}{Menu} with the left button.\\\\In addition the mouse controls the \htmlref{animation}{animation} of nodal values. The animation will stop if the mouse pointer is not in the drawing area but will start again if the pointer enters the drawing area. This can be prevented by pressing the middle mouse button while the mouse pointer is in the menu area.  Pressing the right button will release the next frame. A frozen animation can be released by pressing the middle button. The previous frame can be reloaded by pressing the middle mouse button twice and the right button once (while the mouse is in the menu area).
221
222\begin{figure}[h]
223\epsfig{file=mainwindow.eps,width=12cm}
224\caption{\label{mainwindow}structure of the main-window}
225\end{figure}
226
227\subsection{\label{Keyboard}Keyboard}
228The Keyboard is used for command line input and specifying the type of entities when selecting them with the mouse pointer. The command line is preferable in situations where pure mouse operation is not convenient (i.e. to define a certain value) or for batch controlled operations. Therefore most commands are only available over the command line. The stream coming from the keyboard is echoed in the parent-konsole but during typing the mouse pointer must stay inside the main window. Otherwise the commands will not be recognized by the program. The user might use the menu fuction ``Toggle CommandLine'' or the command ``\htmlref{view}{view} cl'' to switch the command line from the konsole to the graphic's window.
229
230The following special keys are used:
231\begin{verbatim}
232Special Keys:
233 ARROW_UP:   previous command
234 ARROW_DOWN: next command
235 PAGE_UP:    entities of previous set (if the last command was
236             plot or plus) or the previous Loadcase
237 PAGE_DOWN:  entities of next set (if the last command was
238             plot or plus) or the next Loadcase
239\end{verbatim}
240
241
242
243\section{\label{Menu}Menu}
244The main menu pops up when pressing the left mouse-button inside the menu-area (figure \ref{mainmenu}). It should be noted that there are equivalent command-line functions for most of the menu-functions. This can be used for batch-controlled post-processing (see command ''\htmlref{view}{view}''. Next the entities inside the main menu will be explained:
245
246\begin{figure}[h]
247\epsfig{file=mainmenu.eps,width=12cm}
248\caption{\label{mainmenu}structure of the main-menu}
249\end{figure}
250
251
252\subsection{\label{Datasets}Datasets}
253Datasets are selected with the menu-item ''Dataset''. A dataset is a block of nodal values. These could be displacements due to a linear analysis or for a specific time-step during a nonlinear analysis. It could also contain other values like stresses, strains, temperatures or something else. To select a dataset, make sure that the mouse-pointer is inside the menu area. Then, press the left mouse button and move the mouse-pointer over the menu entry ''Dataset'', then continue to the right. A sub-menu pops up showing all available datasets. Each dataset entry comprises the step number (NUMSTP: see ''\htmlref{Nodal Results Block}{Nodal Results Block}'') followed by the name (NAME), a dataset-value (VALUE, usually time or frequency) and a dataset-description (TEXT). Move the mouse-pointer over a dataset you are interested in and release the left mouse button. The dataset is now selected. A results ''\htmlref{Entity}{Entity}'' must be chosen to see the values in the drawing-area. This Dataset might also contain automatically calculated values like the v. Mises stress and the maximum principal stress (see \htmlref{Pre-defined Calculations}{Pre-defined Calculations} and \htmlref{Result Format}{Result Format}). See also the command ''\htmlref{ds}{ds}'' to control the functionality with the command-line.
254
255\subsubsection{\label{Entity}Entity}
256To view data from the dataset, its also necessary to specify the entity (i.e. dx for a displacement Dataset). It works in the same way as for selecting the dataset but instead of releasing the left mouse button over a Dataset continue to the sub-menu ''Entity.''  Continue from that item to the right and release the mouse button when the pointer is over the desired entity.  Now the data will be displayed in the drawing-area.
257
258\subsection{\label{Viewing}Viewing}
259In the following sections, changing properties and styles of the displayed structure are explained. See the command ''\htmlref{view}{view}'' to control the functions with the command-line.
260
261\subsubsection{\label{Show Elements With Light}Show Elements With Light}
262This is the default view of the mesh if the program was started in viewing mode. If used, any \htmlref{animation}{animation} will be interrupted and no values are displayed.
263
264\subsubsection{\label{Show Bad Elements}Show Bad Elements}
265This option presents elements which have a negative Jacobian value at least at one integration point. The solver ccx can not deal with those elements. So far, only TET and HEX elements are checked. These elements are stored in the set called -NJBY. See also the command ''\htmlref{eqal}{eqal}''.
266
267\subsubsection{\label{Fill}Fill}
268This is the default mode and forces the element faces to be rendered.
269
270\subsubsection{\label{Lines}Lines}
271The edges of the element faces are displayed. This is especially useful to see into the structure to find hot spots in the displayed field. With ''\htmlref{Toggle Move-Z/Zoom}{Toggle Move-Z/Zoom}'' and ''\htmlref{qcut}{qcut}'', a more detailed analysis can follow. For very dense meshes switch to ''\htmlref{Dots}{Dots}''.
272
273\subsubsection{\label{Dots}Dots}
274The corners of the element faces will be displayed. This is especially useful if values inside the structure need checked.
275
276\subsubsection{\label{Toggle Culling Back/Front}Toggle Culling Back/Front}
277This removes the faces of volume elements for all elements or for the surface of the structure, depending on the state of ''\htmlref{Toggle Surfaces/Volumes}{Toggle Surfaces/Volumes}''. With this option, the user can visualize internal structures like cracks or a core of a hollow structure.
278
279\subsubsection{\label{Toggle Illuminate Backface}Toggle Illuminate Backface}
280Initially only the front faces are illuminated and the back faces are dark. This is helpful to determine the orientation of the elements. If you want to see all faces illuminated regardless of the orientation, then use this option. If you want to change the orientation of elements use the command ''\htmlref{qflp}{qflp}''.
281
282\subsubsection{\label{Toggle Model Edges}Toggle Model Edges}
283Per default, all free element edges are shown. The user can remove/show them with this option.
284
285\subsubsection{\label{Toggle Element Edges}Toggle Element Edges}
286Per default, just the free element edges are shown. The user might add all edges to the structure with that option.
287
288\subsubsection{\label{Toggle Surfaces/Volumes}Toggle Surfaces/Volumes}
289This switches the way each volume elements are displayed. Either all faces of the elements or just the element faces on the surface of the structure are displayed. Depending on the state of ''\htmlref{Toggle Culling Back/Front}{Toggle Culling Back/Front},'' either the faces pointing to the user or the faces pointing away are displayed. The default is just to show the surface pointing to the user. In the lower left corner of the drawing area,(see figure \ref{mainwindow}) a character is printed, indicating the program is in the surface mode ''s'' or in the volume mode ''v''.
290
291\subsubsection{\label{Toggle Move-Z/Zoom}Toggle Move-Z/Zoom}
292Instead of zooming in with the help of the middle mouse button, it is also possible to move a clipping plane through the structure to get a view of the inside. The clipping plane is parallel to the screen and will be moved in the direction to and from the user by pressing the middle mouse button and moving the pointer up and down while inside the drawing area. Usually it needs some mouse movements until the clipping plane has reached the structure. Depending on hardware, this functionality could be slow. After zooming in, consider using the ''\htmlref{plot}{plot}'' and ''\htmlref{plus}{plus}'' commands to customize your view.
293
294\subsubsection{\label{Toggle Background Color}Toggle Background Color}
295With this option, it is possible to switch between a black and a white background.
296
297\subsubsection{\label{Toggle Vector-Plot}Toggle Vector-Plot}
298It is possible to add small ''needles'' to the plot which point with their heads in the direction of the vectors. Only entities which are marked in the database as vectors will be affected. See ''\htmlref{Nodal Results Block}{Nodal Results Block}'' for information on how entities are marked as vectors. Internally calculated vector-results, like the worst principal stress, are marked automatically. If one component or the value of a vector is selected, then the option takes immediate effect.
299
300This option can be used in combination with ''Animate \htmlref{Toggle Dataset Sequence}{Toggle Dataset Sequence}''.\\\\See also the keyboard command ''\htmlref{ds}{ds}'' how to select datasets and entities with the keyboard. In this case, entities which are NOT marked in the dataset as vectors can be displayed with vector-needles. This command line approach with ''ds'' is the only way to display isaac or duns-cfd-results with vector-needles. See also the command ''\htmlref{scal}{scal}'' how to manipulate the length of the vectors.
301
302\subsubsection{\label{Toggle Add-Displacement}Toggle Add-Displacement}
303It is possible to display results on the deformed structure. For example, you can display a stress field on the deformed structure. If you know a suitable amplification factor for your displacements then use the ''\htmlref{scal}{scal}'' command to issue this value but this can also be done later. Of course displacements for the Loadcase must be available.
304
305\subsubsection{\label{Toggle Shaded Result}Toggle Shaded Result}
306It is possible to display results with illumination. For example, you can display a stress field with a shaded appearance to have a better impression of the shape of the structure.
307
308\subsubsection{\label{Toggle Transparency}Toggle Transparency}
309Transparent display in the surface mode is switched on or off.
310
311\subsubsection{\label{Toggle Ruler}Toggle Ruler}
312Triggers the display of a ruler bar.
313
314\subsubsection{\label{Colormap}Colormap}
315Changes the colormap of the color scale. The default is 'classic'. See also ''\htmlref{cmap}{cmap}''.
316
317\subsection{\label{animation}Animate}
318This option allows the animation of displacements. See also ''\htmlref{anim}{anim}'', ''\htmlref{ds}{ds}'' and ''\htmlref{scal}{scal}'' to use this functionality with the command-line.
319
320It is possible to create this sequence from just one Dataset, see ''\htmlref{Start}{Start}''. This is useful for displaying mode-shapes. See also ''\htmlref{Toggle Dataset Sequence}{Toggle Dataset Sequence}'' to create a sequence from multiple Datasets to visualize dynamic responses.
321
322\subsubsection{\label{Start}Start}
323Creates a sequence of display-lists to visualize displacements (for example mode-shapes). The program recognizes displacements just by the name of the dataset. This name must start with the letters ''DISP'', otherwise the animation will not start (see ''\htmlref{Nodal Results Block}{Nodal Results Block}'').
324
325\subsubsection{\label{Tune-Value}Tune-Value}
326Controls the amplitude of the animation. If ''\htmlref{Toggle Real Displacements}{Toggle Real Displacements}'' was chosen before, the tune-value is equivalent to the amplification of the animation.
327
328\subsubsection{\label{Steps per Period}Steps per Period}
329Determines how many display lists for one period of animation will be used. If ''\htmlref{Toggle Dataset Sequence}{Toggle Dataset Sequence}'' was chosen, then these number of display lists will be interpreted as one period (see \htmlref{Time per Period}{Time per Period}).
330
331\subsubsection{\label{Time per Period}Time per Period}
332Determines how many seconds per period.
333
334\subsubsection{\label{Toggle Real Displacements}Toggle Real Displacements}
335To see the correct displacement of each node. The animation can be controlled with the help of the \htmlref{mouse}{Mouse}.
336
337\subsubsection{\label{Toggle Static Model Edges}Toggle Static Model Edges}
338The user can switch on additional undeformed model edges. This is useful for hardcopies were this edges give a reference to the undeformed shape.
339
340\subsubsection{\label{Toggle Static Element Edges}Toggle Static Element Edges}
341The user can switch on additional undeformed element edges. This is useful for hardcopies were this edges give a reference to the undeformed shape.
342
343\subsubsection{\label{Toggle Dataset Sequence}Toggle Dataset Sequence}
344Creates a sequence of display-lists to visualize values of a sequence of Datasets. The Datasets must use the same type, for example only displacements or only stresses. To activate the animation, after you have selected ``Toggle Dataset Sequence'' choose the first Dataset to be displayed, then the second  and then the last one. Finally choose the entity. The first two datasets define the spacing between the requested datasets and the third-one defines the last dataset to be displayed. The last two selections of datasets can be omitted. Then all datasets which use the same name, starting from the selected one, will be used. The command ''\htmlref{ds}{ds}'' provides the same functionality.
345
346\subsection{\label{Frame}Frame}
347Adjusts the drawing box.
348
349\subsection{\label{Zoom}Zoom}
350Use this command to zoom into a rectangular section of the window. After this option is chosen, use the mouse to select the opposite corners of a rectangle.  The display will zoom in on the rectangular area.  Note the rectangle is never shown on the screen (see also ''\htmlref{zoom}{zoom}'').
351
352\subsection{\label{Center}Center}
353Used to choose a new center point for the structure. After this option is chosen, pick either a node, a point or the corner of an entity. To easily find the element corners, the function ''\htmlref{Toggle Element Edges}{Toggle Element Edges}'' is triggered automatically (see also ''\htmlref{qcnt}{qcnt}'').
354
355\subsection{\label{Enquire}Enquire}
356Used to investigate parameters like the value and the position of a certain node of the model. Pick a node after this option is chosen. To easily find the element corners, the function ''\htmlref{Toggle Element Edges}{Toggle Element Edges}'' is triggered automatically (see also ''\htmlref{qenq}{qenq}'').
357
358\subsection{\label{Cut}Cut}
359Used to cut elements and to create a section of new elements and nodes. Either pick three nodes, or, in case a dataset-entity of a vector was already selected, use the menu entry ``vector'' and select just one node. The cutting plane is then determined by the direction of the selected vector (displacements, worstPS etc.). To easily find the element corners, the function ''\htmlref{Toggle Element Edges}{Toggle Element Edges}'' is triggered automatically (see also ''\htmlref{qcut}{qcut}'' and ''\htmlref{cut}{cut}'')
360
361\subsection{\label{Graph}Graph}
362Used to generate a 2D-plot. The option ``Length'' will provide a plot ``value over distance between nodes''. The option ``Datasets'' will provide a plot ``value over Dataset-nr'' and the option ``Time'' will provide ``value over Time''. For the later two options it is necessary to first create an animation with either the command ''\htmlref{ds}{ds}'' or the menu option ''\htmlref{Toggle Dataset Sequence}{Toggle Dataset Sequence}'' (see also ''\htmlref{graph}{graph}'' and ''\htmlref{How to generate a time-history plot}{How to generate a time-history plot}''). To easily find the element corners, the function ''\htmlref{Toggle Element Edges}{Toggle Element Edges}'' is triggered automatically.
363
364\subsection{\label{User}User}
365This menu item does not exist until the first ''\htmlref{menu}{menu}'' command was executed. Each ``menu'' command adds a new user command to the menu. This ``menu'' commands are usually stored in a ``.cgx'' file in the home directory to link them to the menu during startup.
366
367\subsection{\label{Orientation}Orientation}
368\subsubsection{+x View}
369To look along the x-axis.
370\subsubsection{-x View}
371To look against the x-axis.
372\subsubsection{+y View}
373To look along the y-axis.
374\subsubsection{-y View}
375To look against the y-axis.
376\subsubsection{+z View}
377To look along the z-axis.
378\subsubsection{-z View}
379To look against the z-axis.
380
381\subsection{\label{Hardcopy}Hardcopy}
382To create a hard-copy during animation, it is useful to stop the animation first with the middle mouse button while inside the menu area of the main window and then release one picture after the other with the right button until the desired amplitude or step is reached.
383
384\subsubsection{\label{Tga-Hardcopy}Tga-Hardcopy}
385To create a window dump in tga format. You might use the program ''convert'' \cite{ImageMagick} to convert this format to others.
386
387\subsubsection{\label{Ps-Hardcopy}Ps-Hardcopy}
388To create a window dump in postscript format. The program convert must be installed.
389
390\subsubsection{\label{Gif-Hardcopy}Gif-Hardcopy}
391To create a window dump in gif format. The program convert must be installed.
392
393\subsubsection{\label{Png-Hardcopy}Png-Hardcopy}
394To create a window dump in png format. The program convert must be installed.
395
396\subsubsection{\label{Start Recording Gif-Movie}Start Recording Gif-Movie}
397All frames during an animation are stored. The recording ends after the right mouse button is pressed while in the menu area. Finally all frames are combined in the file ''movie.gif'' which can be displayed with various tools (Firefox \cite{Firefox} or realplay). If the animation is stopped with the middle mouse button while in the menu area, then the movie stops until it is released by pressing the middle mouse button again. See ''\htmlref{movi}{movi}'' for the keyboard options. Further remarks in ''\htmlref{How to change the format of the movie file}{How to change the format of the movie file}''.
398
399\subsection{\label{Help}Help}
400Starts the html help and displays this document. It only works if the specified html-viewer is available. The default is Firefox \cite{Firefox} but this can be changed in the ''cgx.h'' file. The search-path for the documentation is also defined in the ''cgx.h'' file. Please make sure that the documentation is in the specified location or change the path in the ''cgx.h'' file and recompile the program after the object-files are deleted.  The default location for the html help is .../CalculiX/cgx\_X.X/doc/cgx and /CalculiX/ccx\_X.X/doc/ccx for cgx and ccx respectively.  The html files must be downloaded directly or compiled from the latex source for this function to work properly. The INSTALL file tells how to compile the latex code to html.  The INSTALL file is located .../CalculiX/cgx\_X.X/ and .../CalculiX/ccx\_X.X/ for cgx and ccx respectively.
401
402\subsection{\label{Toggle CommandLine}Toggle CommandLine}
403Add the command line from the konsole to the graphic's window and back. The user may consider to place the command ``\htmlref{view}{view} cl'' to a file named ``.cgx'' the user's home directoy for an automatic switch at startup.
404
405\subsection{\label{Quit}Quit}
406This terminates the program without a save.
407
408\section{\label{Customization}Customization}
409The file ``.cgx'' located in the \verb_$_HOME directory will be read at program start. The following commands might be useful in this context:
410\begin{itemize}
411\item ''\htmlref{font}{font}''
412\item ''\htmlref{menu}{menu}''
413\item ''\htmlref{rot}{rot}''
414\item ''\htmlref{view}{view} bg''
415\item ''\htmlref{view}{view} sh''
416\item ''\htmlref{wpos}{wpos}''
417\item ''\htmlref{wsize}{wsize}''
418\end{itemize}
419Example content of a ``.cgx'' init file:
420\begin{verbatim}
421valu vinp /home/user/cgx_templates/readinp.fbl
422menu readinp(vinp) read vinp
423\end{verbatim}
424
425
426
427\section{\label{Commands}Commands}
428This section is a reference to all commands and their parameters in alphabetic order. If a command is typed the mouse-pointer must be in the main window (figure \ref{mainwindow}). Only the echo of the input stream is visible in the parent konsole. The keywords are not case sensitive but all command parameters are case sensitive. Each reference starts with a short description of the command. The following syntax is used for these descriptions:
429\begin{verbatim}
430Known commands and syntax:
431 '..':   Keyword (either uppercase or lowercase)
432 <..>:   Parameter (case-sensitive)
433 [..]:   combination of parameters or optional parameter
434 (..):   Remark
435 |   :   OR
436 &   :   AND
437 -   :   from-to
438 ->  :   command continues in the next line
439 RETURN  press the RETURN key
440\end{verbatim}
441Entities---with the exception of nodes and elements---are referenced by names which can contain letters and numbers. Usually one to four characters is recommended. If a new entity uses an existing name, the old definition will be overwritten. To overcome this problem, ''alias'' names can be used. An alias name is defined with the \verb_!_ sign in front. An already defined alias name can be referenced by placing the \verb_%_ sign in front. For example:\\\\
442LINE \verb_!_L1 \verb_%_P1 \verb_%_P2 \verb_%_SET\\\\will create a line with the alias name L1 and will use the alias names P1 and P2 to define the end-points and uses the set SET to define the point sequence between the end-points. The assigned alias name for a given entity can be enquired with a leading question mark using the prnt command.
443
444
445\subsection{\label{anim}anim}
446\begin{verbatim}
447   'anim'  'tune' <value>|'steps' <value>|'time' <value>|->
448           'real' ['on'|'off']|'model' ['on'|'off']| ->
449           'elem' ['on'|'off']| 'start'
450\end{verbatim}
451This keyword is used to manipulate the animation of displacements. See also ''\htmlref{ds}{ds}'' and ''\htmlref{scal}{scal}''. The amplification is controlled with ``tune''. ``steps'' defines the number of frames over one periode. ``time'' controlls the duration of one periode. ``real'' switches of the automatic amplification and the real displacements are used instead. In addition the displacements of the negative part of the periode is set to zero. ``model'' switches the static model (undeformed) edges on or of. ``elem'' does this for the element edges. Start the animation with 'start'. The animation stops when using the 'ds' or the 'view' commands with appropriate parameters.
452
453\subsection{\label{area}area}
454\begin{verbatim}
455   'area' <set>
456\end{verbatim}
457This keyword is used to calculate the area and the center of gravity of a set of shell-elements or surfaces of volume-elements. If a 'dataset' is active then an averaged value is calculated.
458
459It averages the nodal values per element and weight it (multipies it) with the area of that element. The sum of all the weighted element-values is then divided by the total area of all regarded elements. The center of gravity is also weighted with the indvidual areas. This works for faces as well. In case the ''\htmlref{qcut}{qcut}'' command was used to create a section it is necessary to use the ''\htmlref{comp}{comp}'' command to add the related faces to the set '-qcut' which holds the section:\\\\comp -qcut do\\\\Then the 'area' command can be used:\\\\area -qcut\\\\which produces a listing like that:
460\begin{verbatim}
461  AREA:98.437740  CENTER OF GRAVITY: 9.214960 0.663785
462   24.655288 AVERAGE-VALUE:252.453576
463\end{verbatim}
464
465The command writes to the ''\htmlref{stack}{stack}''.
466
467\subsection{\label{asgn}asgn}
468\begin{verbatim}
469   'asgn' 'n'|'e'|'p'|'l'|'c'|'s'|'b'|'S'|'L'|'se'|->
470          'sh'|'alpha'|'beta'|'nadapt' <value>| ->
471          'netgen'|'tetgen'| ->
472          'thrds' <value>|'rbe' [<value>|'mpc']| ->
473          'max'|'maxr'|'maxc' [<col>]|'minc' [<col>] ->
474          'mem' 'free|'keep'| ->
475          'graph' 'on'|'off'|<nr>| ->
476          'usr' <text>
477\end{verbatim}
478This keyword is used to manipulate the behaviour of successive commands or certain values.
479
480It can be used to define the first node or element number which will be used for the next mesh generation. And it is used to redefine the leading character of new entities. The default is D for points p, L for lines l, C for combined lines (lcmb) c, A for surfaces s, B for Bodies b, Q for nurb lines (nurl) L, N for nurb surfaces (nurs) S, A for sets se and H for Shapes sh. For example\\\\asgn p U\\\\will assign the character U as the leading character to all newly created names of points. The automatically created names of geometric entities use 4 characters. If all possible names with the chosen leading letter are in use then the next alphabetical letter is chosen as a leading letter, so after PZZZ follows Q000. After the last letter the amount of characters per name is increased. The maximum number is 8. Each entity has its own name space. Different entities might use the same name. Remark: Currently nurbs-lines are automatically create splines sharing the same name. Nurbs-lines can not be used for other purposes than to be displayed and so far they can not be written to a file.
481
482Meta informations stored in the frd database can be extended:\\\\asgn usr ADDDISP DS:1\\\\will assign or change the User Header Record ``ADDDISP DS:1''. Actually this type of record is automatically generated if the user adds displacements to the node coordinates (see ``\htmlref{Toggle Add-Displacement}{Toggle Add-Displacement})'' and ``\htmlref{User Header Record}{User Header Record})''). The first word in the text is used as a key and the rest is the message. So \\\\asgn usr ADDDISP NONE\\\\will change this User Header Record to the new message ``NONE''.
483
484The node related data will be readed if the user selects a certain dataset. The already stored data are kept by default. With the command\\\\asgn mem free\\\\the current data are freed before the selected data are stored. With \\\\asgn mem keep\\\\the current data are kept.
485
486The method how the the color fringe plot scale is presented can be chosen with either\\\\asgn max\\\\asgn maxr\\\\or\\\\asgn maxc m\\\\and\\\\asgn minc m\\\\were 'm' is the color of the suppressed values, here magenta (see \htmlref{maxc}{maxc}).
487
488The command is also used to control the behaviour of the surface mesh generator for unstructured triangles. This mesher \cite{mesh2d} uses the tree parameters alpha, beta, nadapt for mesh-control. Current default is 0.4 for alpha and beta and 4 for nadapt.
489
490The surface mesh generator is able to use multiple cores (threads). Per default the mesher uses only one thread because only in this case the mesh numbering is reproducable. But since the surface meshing of a CAD geometry can be very time consumable a certain number of threads is used when the model is opened in the auto mode (cgx -a file). The actual number of threads is listed with the command ``\htmlref{prnt}{prnt} info''. This value can be changed in the cgx.h file (NTHREADS). When using\\\\asgn thrds 8\\\\the next mesh generation will use 8 threads and when saving the geometry this command is stored as well. The user might use this command to store his personal number of threads in the ``.cgx'' file in his home directory.
491
492Currently two different tet mesher are available \cite{NETGEN} \cite{TETGEN}. They can be chosen with\\\\asgn tetgen\\\\or\\\\asgn netgen\\\\
493In case Nastran input should be generated it is possible to switch from MPCs to RBEs when using the \htmlref{send}{send} command in combination with the areampc option. The value after ``rbe'' represents the thermal expansion coefficient of this elements:\\\\asgn rbe 0.5e-6\\\\It should be noted that coincident nodes are connected by MPCs either way.
494
495The presentation of the 2D plots generated by 'graph' can be switched of or on and the next running number of the files written with 'graph' can be defined:\\\\asgn graph off\\\\asgn graph on\\\\asgn graph 11\\\\
496
497
498\subsection{\label{bia}bia}
499\begin{verbatim}
500   'bia'  <line>|<set> [ [<bias>] [<factor>]|
501                   ['mult'|'div' <factor>] ]
502\end{verbatim}
503This keyword is used to define the bias of a single line or of a set of lines (see \htmlref{qadd}{qadd}). The bias defines the ratio of the length of the first element to the length of the last element. For example,\\\\
504bia all 4.5\\\\will force a ratio in which the last element is 4.5 times bigger than the first one. Real numbers are permitted since version 1.5 (see also \htmlref{qbia}{qbia}). To convert from pre 1.5 versions, start the program with the -oldbias option. A negative factor permits to invert the direction of the bias: \\\\
505bia all 4.5 -1\\\\
506
507\subsection{\label{body}body}
508\begin{verbatim}
509   'body' <name(char<9)>|'!' [<surf1> <surf2>]|
510                [<surf1> <surf2> <surf3> <surf4> ->
511                <surf5> [<surf6>  <surf6>]]|
512                [<set>]
513\end{verbatim}
514This keyword is used to define or redefine a volume (body). Each body must have five, six or seven surfaces to be mesh-able with hexaeder-elements, otherwise it can only meshed with tets if NETGEN \cite{NETGEN} is installed. However, it is sufficient to specify just the ''top'' and the ''bottom'' surfaces. But if surfaces with 3 or 5 edges are involved then this surfaces have to be the ''top'' and ''bottom'' surfaces. This is also true if surfaces have different line-divisions at opposite edges. The missing surfaces between the ''top'' and ''bottom'' surfaces will be created automatically if they do not already exist (they will always have 4 edges with the same division on opposide edges). But all needed lines must exist. More precisely, only single lines or existing combined lines (\htmlref{lcmb}{lcmb}) can be detected. The user must define the missing surface if just a chain of lines (and no lcmb) is defined between two corner points of the ''top'' and ''bottom'' surfaces before he can successfully use the body command. It is a more convenient way to define a body than the command ``\htmlref{gbod}{gbod}'' but exactly 2 or all surfaces must be specified otherwise the body will not be created (The most convenient way to define bodies is to use the command ``\htmlref{qbod}{qbod}'').
515For example,\\\\body b1 s1 s2\\\\will look for the missing surfaces and if necessary create them if all lines between the corner points of s1 and s2 are defined; the result is the creation of body, b1. Or for example,\\\\body \verb_!_ s1 s2 s3 s4 s5\\\\will create  a body and a new name for it. The new name is triggered by the sign \verb_!_. Here the body is based on 5 surfaces. If the surfaces are not connected, the body is not mesh-able.\\\\In case a body should only be meshable with tets it can be composed of more than 7 surfaces. The definition can be provided by a set of surfaces:\\\\body \verb_!_ surfset\\\\will create  a body based on the surfaces referenced by surfset.
516
517\subsection{\label{break}break}
518\begin{verbatim}
519   'break'
520\end{verbatim}
521This keyword is used to end the interpretation of a command file. The program returns to the interactive mode.
522
523\subsection{\label{call}call}
524\begin{verbatim}
525   'call' <parameters>
526\end{verbatim}
527This keyword is used to allow the user to control his own functionality in the file ''userFunction.c''. The data-structures for the mesh and datasets are available. The default function calculates the hydrodynamic stresses with the command:\\\\call hydro\\\\See ''\htmlref{User-Functions}{User-Functions}'' for  details.
528
529\subsection{\label{capt}capt}
530\begin{verbatim}
531   'capt' <string>
532\end{verbatim}
533This keyword is used to define the caption. This commend will show up in the
534menu area of the main window below the picture. Initially the filename is used
535as caption. A second line can be generated with "\htmlref{ulin}{ulin}".
536
537\subsection{\label{cmap}cmap}
538\begin{verbatim}
539   'cmap' 'classic'|'inferno'|'turbo'|'viridis'|'jet'
540\end{verbatim}
541Changes the colormap of the color scale. The default is 'classic'. The user might use this command to store his personal setting in the ``.cgx'' file in his home directory. See also ''\htmlref{steps}{steps}'' to adjust the nr of boxes.
542
543\subsection{\label{cntr}cntr}
544\begin{verbatim}
545   'cntr' <pnt|nod|set>|[x y z]
546\end{verbatim}
547Defines a new rotation center. See also ''\htmlref{qcnt}{qcnt}'' for the cursor controlled command.
548
549\subsection{\label{col}col}
550\begin{verbatim}
551   'col' <name> <red> <green> <blue>
552\end{verbatim}
553User defined new colors which can be used with plot/plus. The red, green and blue fractions must sum up to 1. See also ''\htmlref{prnt}{prnt}'' how to list the available colors. The user might use this command to store his personal colors in the ``.cgx'' file in his home directory.
554
555\subsection{\label{comp}comp}
556\begin{verbatim}
557   'comp' <set|*chars*> 'c'|'d'|'e'|'u'
558\end{verbatim}
559This keyword is used to add all entities to the specified set (see
560\htmlref{seta}{seta}) which depend on the already included entities (u, up),
561or to include all entities necessary to describe the already included entities
562(d, down).\\For example the set ''lines'' stores lines and should also include
563all dependent points:\\\\comp lines do\\\\Or the set ''lines'' should also
564include all surfs and bodies which depend on the lines:\\\\comp lines up\\\\In
565some cases you will need only the end-points of lines. With the option e (
566edges)\\\\comp lines e\\\\ only end-points are included in the set. Option c (
567combined lines) adds all LCMB's which use the stored lines. One exception to this logic was introduced for convenience:\\\\comp nodes do\\\\will add all faces described by the nodes in set nodes despite the fact that faces are made from nodes.
568
569Wildcards (*) can be used to search for setnames of a certain expression:\\\\comp E* do\\\\will complete all sets starting with ``E''.
570
571\subsection{\label{cont}cont}
572\begin{verbatim}
573   'cont'
574\end{verbatim}
575This keyword is used to re-start reading of command files (see ''\htmlref{stop}{stop}'').
576
577\subsection{\label{copy}copy}
578\begin{verbatim}
579   'copy' <set> <set> ['scal' <fx> <fy> <fz> <pnt> [a] ]|
580                      ['tra' <dx> <dy> <dz> [a]]|
581                      ['rot' <p1> <p2> <alfa> [a] ]|
582                      ['rot' 'x'|'y'|'z' <alfa> [a] ]|
583                      ['rot' <p1> 'x'|'y'|'z' <alfa> [a] ]|
584                      ['rad' <p1> <p2> <dr> [a] ]|
585                      ['rad' 'x'|'y'|'z'|'p'<PNT> <dr> [a] ]|
586                      ['rad' <p1> 'x'|'y'|'z' <dr> [a] ]|
587                      ['nor' <dr> [a] ]|
588                      ['mir' <P1> <P2> [a] ]|
589                      ['mir' 'x'|'y'|'z' [a] ]|
590                      ['mir' <P1> 'x'|'y'|'z' [a] ]
591\end{verbatim}
592This keyword is used to create a copy of a set (see \htmlref{seta}{seta} about sets). Geometry, nodes and elements with their results can be copied. The copy of results is useful to evaluate additional sectors in case of a cyclic symmetric calculation. The copy is included in the new set. Existing sets are extended by the copied entities if the last parameter ``a'' (append) is provided. Several transformations are available. For example scal creates a scaled copy, the scaling factors fx, fy, fz can be chosen independently,\\\\
593Several transformations are available. For example scal creates a scaled copy, the scaling factors fx, fy, fz can be chosen independently,\\\\
594copy part1 part2 scal 2 P0 \\
595copy part1 part2 scal 1 1 2 P0\\\\
596tra will create a copy and will move it away by the vector dx, dy, dz and the optional parameter a will assign the new entities to sets were the mother of each entity is included,\\\\
597copy set1 set2 tra 10 20 30 a\\\\
598rot will create a copy and will move it around the axis defined by the points p1 and p2 by alfa degrees,\\\\
599copy set1 set2 rot p0 px 20.\\\\
600or the axis of rotation is given by specifying one of the basis coordinate axes:
601copy set1 set2 rot x 20.\\\\
602or just one point and a vector of rotation is given by specifying one of the basis coordinate axes:
603copy set1 set2 rot p1 x 20.\\\\
604rad will create a copy and uses the same transformation options as 'rot' or will create a spherical section if just a single point is defined,\\\\
605copy sphere1 sphere2 rad pP0 10.\\\\
606nor will create a copy and will move it away in the direction of averaged normal local vector. This requires information about the normal direction for each entity. Nodes will use associated element faces and geometric entities will use the element faces, surfaces or shapes which are stored with them in the set1,\\\\
607copy set1 set2 nor 1.2 a\\\\
608mir will create a mirrored copy. The mirror-plane is placed normal to the direction running from P1 to P2 and placed at P2,\\\\
609copy section1 section2 mir P1 P2.\\\\
610as with 'rot and 'rad' additional transformation options are available:\\\\
611copy section1 section2 mir P1 x\\\\
612places the mirror at P1 with its normal direction in 'x' direction\\\\
613copy section1 section2 mir x\\\\
614Places the mirror in the origin with its normal direction in 'x' direction.
615
616\subsection{\label{corrad}corrad}
617\begin{verbatim}
618   'corrad' <set>
619\end{verbatim}
620This is a very special command to adjust improperly defined arc-lines, like in fillets. The center points of arc-lines included in the set are moved in a way that each arc-line will run tangentially into a connected straight line. But because the end-points of the arc-lines are not moved only one side of each arc-line will run into a connected line. The other side is not controlled and might end in a sharp corner. Therefore for each arc-line exactly one connected straight line must be included into the set (figure \ref{corradp}).
621
622\begin{figure}[h]
623\epsfig{file=corrad.eps,width=9cm}
624\caption{\label{corradp} Effect of the corrad command }
625\end{figure}
626
627\subsection{\label{csysa}csysa}
628\begin{verbatim}
629   'csysa' <sysNr> <set>
630\end{verbatim}
631Specifies the displacement coordinate system for each node (Nastran only).
632
633\subsection{\label{cut}cut}
634\begin{verbatim}
635   'cut' <pnt|nod> [<pnt|nod> <pnt|nod>]
636\end{verbatim}
637This keyword is used to define a cutting plane through elements to visualize internal results. The plane is either defined by three nodes or points, or, in case a dataset-entity of a vector was already selected, by just one node or point. The cutting plane is then determined by the direction of the vector (displacements, worstPS). The menu option ''\htmlref{Show Elements With Light}{Show Elements With Light}'' or the commands ''\htmlref{ucut}{ucut}'', ''\htmlref{view}{view} surf'' or''\htmlref{view}{view} volu'' will display the whole model again and will delete the plane. This command is intended for batch-mode. See ''\htmlref{qcut}{qcut}'' for the cursor controlled command.
638
639\subsection{\label{del}del}
640\begin{verbatim}
641   'del' ['p'|'l'|'l0'|'c'|'s'|'b'|'t'|'S'|'L'|'se'|'sh' <entity>]|
642         ['se0']|
643         ['mesh']|
644         ['pic']
645\end{verbatim}
646This keyword is used to delete entities, the whole mesh (see also \htmlref{qdel}{qdel}) or a background-picture. For example,\\\\
647del se part\\\\
648will delete the set ``part'' but all included entities are untouched. The following entities are known:\\\\
649Points p, Lines l, Combined Lines c, Surfaces s, Bodies b, Node Texts t, Nurb Surfaces S, Nurb Lines L, Sets se and Shapes sh.\\\\
650When an entity is deleted, all dependent higher entities are deleted as well. Special cases are\\\\del l0 set  (l<zero>)\\\\were all lines with zero length in set ''set'' are deleted and\\\\del se0\\\\will delete all empty sets.
651If a background-picture was loaded with the ''\htmlref{read}{read}'' command it can be deleted with:\\\\
652del pic
653\\\\See also ''\htmlref{zap}{zap}'' on how to delete a set with all its referenced entities.
654
655\subsection{\label{dist}dist}
656\begin{verbatim}
657   'dist' <set> [<target-set>|<shpe>] ->
658              ['tra' <dx> <dy> <dz> <offset>]|
659              ['rot' <p1> <p2> <offset>]|
660              ['rot' 'x'|'y'|'z' <offset>]|
661              ['rad' <p1> <p2> <offset>]|
662              ['rad' 'x'|'y'|'z' <offset>]|
663              ['nor' <offset> <tol>]
664\end{verbatim}
665measures distances between entities of one or of two sets. For example \\\\
666dist set \\\\
667gives the distance range of the points and nodes in the set in x,y and z direction.
668
669If just one point or node is included in both provided sets \\\\
670dist set1 set2 \\\\
671then as with ''\htmlref{qdis}{qdis}'' the cartesian distances, the angular distances and the radial distances are determined.
672
673If just one point or node is included in the first set and several points or nodes in set2 \\\\
674dist set1 set2 \\\\
675then only the extremal cartesian distances from the sole point or node in set1 to all entities in set2 are determined (set1-set2).
676
677Further parameter combinations work analogous to the ''\htmlref{proj}{proj}'' command and calculates distances to shapes or surfaces. Please look there for details, for example:\\\\
678dist set1 set2 rot p0 px \\\\
679The average-, maximum- and minimum distance is determined. The distance is measured normal-, rotational-, radial or translatoric.
680
681The command writes to the ''\htmlref{stack}{stack}''.
682
683\subsection{\label{div}div}
684\begin{verbatim}
685   'div'  |
686          <defdiv>|
687          <line> [<division>]|
688          <set>  [<division>]|
689                 ['mult'|'div' <factor-div> <factor-bias>]|
690                 ['auto' <node-dist> <angle> <elem-ratio>]
691\end{verbatim}
692This keyword can be used to re-define the default division of lines:\\\\div 4\\\\The div keyword works on a line or a set of lines (see \htmlref{qadd}{qadd}). The division controls the number of nodes created when the geometry is meshed (see \htmlref{elty}{elty} and \htmlref{mesh}{mesh}). For example,\\\\
693div all 4\\\\attaches the division of 4 to all lines. With the keyword mult or div in combination with a value, it is possible to multiply or divide already assigned divisions:\\\\
694div all mult 2.\\\\Or in case you need a starting-point for the individual divisions you can use the option auto with the optional parameters node-dist and angle. Node-dist is the maximum allowed distance between nodes and angle is the maximum allowed angle defined by three sequential nodes. If one parameter is not fulfilled then the division is halved until the requirements are fulfilled. Default values are defined in the file cgx.h and can be listed with\\\\div\\\\without parameters\\\\
695div all auto\\\\uses the defaults. The following example sets them expicidly:\\\\div all auto 2. 10. 0.5\\\\will use a maximum element lenght of 2., the angle between successive nodes is less than 10 degree and the minimum element is only half of the maximum-length as long as the length of the line is sufficient. It should be noted that it could make sense to use different values for different sets.
696
697\subsection{\label{ds}ds}
698\begin{verbatim}
699   'ds' [<1.Dataset-Nr> [<2.Dataset-Nr>] [<n.Dataset-Nr>] ->
700            ['a[h]'|'e[h]' [<entity-nr> (up to 4 times)]]|
701            ['o' <value> [<entity-nr>]]|
702            ['p' <power> [<entity-nr>]]|
703            ['s' <value> [<entity-nr>]]|
704            ['r' <key> [<parm1>] [<parm2>] [..<parm5>]]]|
705        ['g' <name> [[<ncomps>|<0>] <value> <text> <type> ->
706          <step> <analysisName>]]|
707        ['e' <name> <comp> <type> <row> <column>]|
708        ['f']
709\end{verbatim}
710This keyword is used to select, modify or generate one or more \htmlref{Datasets}{Datasets} (ds) and one or more \htmlref{Entity}{Entity} (e). In addition it can be used to generate or modify related parameters which might store step specific descriptions. The dataset has to be a positive number which has to match the nr in the Dataset-menu or an 'l' (lower case 'L') which is interpreted as the last available Dataset or a negative number. Then it is interpreted as the last ds minus the specified number. For example\\\\
711ds 1\\\\
712will just select the first Dataset and will write some informations about it to stdout and to the ''\htmlref{stack}{stack}'' if active. It will write ds-nr, lc-name, ds-value, ds-text, ds-name, nr-of-entities \\\\
713ds 1 e 1\\\\
714will display the first entity of the first Dataset and will write some informations about it to stdout or to the ''\htmlref{stack}{stack}'' if active. It will write ds-nr, lc-name, ds-value, ds-text, ds-name, entity-name.\\\\
715ds l e 1\\\\
716will display the last Dataset.
717To start the animation of the second-to-last Dataset right away:\\\\
718ds -1 a\\\\
719Or generate an animated fringe plot by adding the desired entity:\\\\
720ds -1 a 4\\\\
721Sequences can be defined by specifying one to three datasets and by extending the 'e' parameter by an 'h' ('history'):\\\\
722ds 2 eh 1\\\\
723Here all datasets of the same type as ds 2 are selected. The spacing between datasets of the same type is only evaluated for the first step. A unique step-with is therfore needed.\\\\
724ds 2 10 eh 1\\\\
725Here the datasets 2, 10 and all successive ones of the same type with a spacing of 8 are selected.\\\\
726ds 2 4 10 eh 1\\\\
727Here the 1st entity of each second Dataset is selected. The selection starts at the second- and ends at the 10th dataset. If more than one entity is defined then a vector-plot will be displayed. If a 4th entity is defined then this entity will be used for the basic color-plot:\\\\
728ds 2 4 10 eh 12 13 14 15\\\\
729In case the deformed shape should be shown together with the fringe plot in a sequence of datasets then the 'e' parameter has to be replaced by an 'a' character.\\\\
730ds 2 ah 1\\\\ REMARK: So far vector plots can not use the deformed shape. Therefore only one entity is supported.\\\\
731In addition, it is possible to scale or offset the entities of the specified datasets:\\\\
732ds 1 s 1.2\\\\
733will scale all entities of dataset 1 by a factor of 1.2.\\\\
734ds 1 p 1.2 3\\\\
735will use the given exponent to scale entity 3 of dataset 1 by an exponent of 1.2.\\\\
736ds 1 o 200.\\\\
737will add a value of 200 to all entities of dataset 1.\\\\
738ds 1 o 200. 2\\\\
739will add a value of 200 to the entity 2 of dataset 1.
740Each dataset might use related parameters (see \htmlref{Parameter Header Record}{Parameter Header Record} for the format of a parameter record). This parameters can be overwritten or created:\\\\
741ds 2 4 10 r TAMB 1\\\\
742Each second dataset from 2 to 10 gets a related parameter 'TAMB' with the value '1'. If the value is nummeric it can be used by the ``\htmlref{graph}{graph}'' command.
743
744A new dataset in which all values are initiallized to zero is generated with:\\\\
745ds g VELOCITY 3\\\\
746The 'name' VELOCITY will appear in the menu as the dataset name and can be 8 character long. It has 3 components ('ncomps', default is '1'). The other parameters are optional:
747\begin{itemize}
748\item  value: A nummeric value, usually time or frequency (used by ``\htmlref{graph}{graph}'').
749\item  text:  A describing text (used by ``\htmlref{graph}{graph}'').
750\item  type:  Analysis type (static:0,time step:1,frequency:2, etc.).
751\item  step:  Step or increment number
752\item  analysisName: Type of analysis (description).
753\end{itemize}
754The current dataset name is modified if only the name is given:\\\\
755ds g VELOCITY\\\\
756The other parameters of the current dataset can be modified if the number of components is set to zero:
757ds g VELOCITY 0 1e4 test\\\\
758The entities of the current dataset are manipulated with:\\\\
759ds e V 2\\\\
760The 'name' V will appear in the menu as the entity name and can be 8 character long. It is the second entity (component) of the current dataset (default is '1'). The third and following parameters can be omitted for a scalar.
761\begin{itemize}
762\item  name:   entity name
763\item  comp:   entity nr (component)
764\item  type:   Mathematical data type (scalar:1, vector:2, matrix:4, etc.)
765\item  row:    sub-component index or row number
766\item  column: column number if matrix
767\end{itemize}
768The 'row' paramter defines the location of the enitity in the vector or the row of the matrix.
769The dataset is finalized with:\\\\
770ds f\\\\
771The maximum- and minimum value over all nodes for the current dataset will be determined and stored together with the corresponding node numbers. This values are needed for the graphic display.\\\\
772The values at the nodes are manipulated with the ''\htmlref{node}{node}'' command. With that command the new dataset gets its data. See also ``\htmlref{How to generate a new dataset}{How to generate a new dataset}'' for further details.
773
774More details can be found in section ''\htmlref{Nodal Results Block}{Nodal Results Block}''.
775
776\subsection{\label{elem}elem}
777\begin{verbatim}
778   'elem' <nr|!> [set]|
779       [<firstNode> .. <lastNode> 'be2'|'be3'|'tr3'|'tr6'|->
780       'qu4'|'qu8'|'he8'|'he20']
781\end{verbatim}
782This keyword is used to define elements based on nodes and its type (see section \htmlref{Element Types}{Element Types} in the appendix for the correct node-order). For example,\\\\
783elem 1 1 2 3 4 qu4\\\\creates a shell element with four nodes. If the an automatically generated name is desired, then type ''\verb_!_'' instead of a name. Shell elements can be created based on a set of element-faces:\\\\elem ! faceset\\\\This might be useful to create a layer of shell elements on volume elements.
784
785\subsection{\label{else}else}
786\begin{verbatim}
787  'else'
788\end{verbatim}
789See the ``\htmlref{if}{if}'' command.
790
791\subsection{\label{else if}else if}
792\begin{verbatim}
793  'else if' <value> 'eq'|'ne'|'=='|'!='|'<'|'>' <value>
794\end{verbatim}
795See the ``\htmlref{if}{if}'' command.
796
797\subsection{\label{elty}elty}
798\begin{verbatim}
799  'elty' <set> 'be2'|'be2r'|'be2f'|'be2d'|->
800               'be3'|'be3r'|'be3f'|->
801               'tr3'|'tr3u'|'tr3e'|'tr3s'|'tr3c'->
802               'tr6'|'tr6u'|'tr6e'|'tr6s'|'tr6c'|->
803               'qu4'|'qu4e'|'qu4s'|'qu4c'|->
804               'qu4r'|'qu4er'|'qu4sr'|'qu4cr'|->
805               'qu8'|'qu8e'|'qu8s'|'qu8c'|->
806               'qu8r'|'qu8er'|'qu8sr'|'qu8cr'|->
807               'he8'|'he8f'|'he8i'|'he8r'|->
808               'he20'|'he20r'|'pe6'|'pe6f'|'pe15'|->
809               'pe15r'|'te4'|'te4f'|'te10'|'te10m'|->
810               'te10t' [<parameter>]
811\end{verbatim}
812This keyword is used to assign a specific element type to a set of entities
813(see section \htmlref{Element Types}{Element Types} in the appendix). In most
814cases it can be used to specify the element type before the mesh is
815created. In case of unstructured meshes the element attributes have to be
816assigned after the mesh is created (from tr6u to tr6c or te10 to te10t etc.).
817
818The element name is composed of the following parts: The leading two letters
819define the shape (be: beam, tr: triangle, qu: quadrangle, he: hexahedra, pe:
820penta, te:tetraeder), then the number of nodes and at last an attribute
821describing the mathematical formulation or other features (c: axisymmetric, e: plain strain, s: plain
822stress, u: unstructured mesh, r: reduced integration, i: incompatible modes,
823f: fluid element for ccx, t: initial temperatures are interpolated linearly
824within the tet element (ccx:C3D10T)).
825
826If the element type is omitted, the assignment is deleted. If all parameters are
827omitted, the actual assignments are posted:\\\\
828elty\\\\
829will print only the sets with assigned elements. Multiple definitions are possible. For example,\\\\
830elty all\\\\
831deletes all element definitions. If the geometry was already meshed, the mesh will NOT be deleted. If the \htmlref{mesh}{mesh} command is executed again after new assignments has taken place, additional elements will be created.\\\\
832elty all he20\\\\
833assigns 20 node brick-elements to all bodies in the set all.\\\\
834elty part1 he8\\\\
835redefines that definition for all bodies in the set part1.\\\\
836elty part2 tr6u\\\\
837assigns 6 node unstructured triangle elements to all surfaces in set part2.\\\\
838elty part2 tr6u 0.5\\\\
839will do the same but specifies a mesh refinement factor of 0.5 (\verb_>_1: coarser than the average boundary spacing, \verb_<_1: denser ). Be aware that specialized unstructured meshes must be created by using two times the elty command. First time the general unstructured type before the mesh is actually created and afterwards a redefinition into the more specific type:\\\\
840elty part2 tr6u\\
841mesh all\\
842elty part2 tr6c\\\\
843creates an axisymmetric unstructured mesh.\\\\
844elty part3 te10\\\\
845assigns 10 node elements to all bodies in set part3. But this works only if NETGEN \cite{NETGEN} is installed and the program ng\_vol is accessible.\\\\
846elty part3 te10 3.5\\\\
847will do the same but specifies a target size for the elements. In this case the modified program ng\_vol from the cgx-distribution must be available. Replace the original ng\_vol in the NETGEN package and build it again.
848Be aware that specialized unstructured meshes must be created by using two times the elty command. First time the general unstructured type before the mesh is actually created and afterwards a redefinition into the more specific type:\\\\
849elty part2 te10\\
850mesh all\\
851elty part2 te10t\\\\
852
853The penta element types are not supported for meshing but can be used to redefine the attributes (pe6 to pe6f). Penta elements are only created if a mesh of triangles (2D) is sweeped in 3D. This procedure is used to create quasi 2D cfd meshes.
854
855The fluid network element types are be2f and be3f. The be2f has to be used at the begin and the end of a network. This elements will use the special node nr '0' at the entry and exit. This node-nr is automatically assigned to the element definition when written in the ccx format. All other elements in the network must use the be3f type. The detailed element type definition has to be done in the ccx input file based on element-sets.
856
857\subsection{\label{endif}endif}
858\begin{verbatim}
859  'endif'
860\end{verbatim}
861See the ``\htmlref{if}{if}'' command.
862
863\subsection{\label{endwhile}endwhile}
864\begin{verbatim}
865  'endwhile'
866\end{verbatim}
867See the ``\htmlref{while}{while}'' command.
868
869\subsection{\label{enq}enq}
870\begin{verbatim}
871   'enq' <set> <set> ['set' <setname> ]|->
872            ['rec' <x-value>|'_' <y-value>|'_' <z-value>|'_' ]|->
873            ['cx'|'cy'|'cz' <r-value>|'_' <fi-value(deg)>|'_' ->
874              <axis-value>|'_' ] ->
875             <tol> 'i'|'a'|'h'|'l' [<value>]
876\end{verbatim}
877This command is used to locate entities from a certain set (first provided set) and stores them in the second set. The following entities are handled: nodes, points, lines, surfaces. But surfaces can only be identified if the command ``\htmlref{rep}{rep} \verb_<_setname\verb_>_'' was issued before. In case of nodes with related values (results) it will also determine the highes or lowest value in the specified range, or, all nodes above or below a certain value. The coordinates might be taken from one node or point in a given 3rd set or given in cartesian coordinates (option rec) or cylindrical coordinates (option cx, cy, cz). Some coordinates might be omitted to specify an infinite range. The '\_' key has to be used in this case. The mode is defined by the keys 'i' individual, 'a' all, 'h' high, 'l' low, were h and l will search the highest or lowest value in range. This value will also be written to a file for automatic processing purposes. For example\\\\
878enq all newset rec 10. \_ 100. 0.1 i\\\\
879will search for entities in set 'all' at the given location x:10. y:\_(infinite range, triggered by the '\_' key) z:100. with a tolerance of 0.1 and only the closest entity of all kinds of entities are stored in set 'newset', triggered by the 'i' key. With the 'a' key all in range would be stored. The key 'h' or 'l' would trigger a search for the highest or lowest value in the specified range.
880
881In combination with a certain value\\\\
882enq all newset rec 10. \_ 100. 0.1 h 1013.\\\\all nodes with a value above ``1013.'' would be stored in set ``newset''. The command \\\\
883enq domain1 newset cx 100. 180. 10. 0.1 a\\\\
884will search for entities in set 'domain1' at radius:100. around x at fi:180 degree and x:10. with a tolerance of 0.1. All entities in range are stored in set 'newset'.
885
886The following example illustrates the use of ``enq'' to find the highest value close to a location given by a node-number:
887\begin{verbatim}
888# activate dataset 3 with entity 7:
889ds 3 e 7
890# read a file with one node to define a set:
891read pos1.frd pos1
892# search the highest value around a radius of 1:
893enq all t set pos1 1. h
894# move the file with the search result to a meaningfull name:
895sys mv enq_lc3_e7_1.out pos1.out
896\end{verbatim}
897
898One important remark:
899The command will select not only nodes in the selection range but also geometric entities (lines etc.) which in turn reference their related nodes. This behaviour can mix up the desired result when the user expects to find just nodes in the selection range. Therefore it is better to first generate a set only with nodes as a basis for 'enq':\\\\
900seta nodeset n all\\
901enq nodeset new ...\\\\
902The command writes to the ''\htmlref{stack}{stack}''.
903
904
905\subsection{\label{eprop}eprop}
906\begin{verbatim}
907   'eprop' <set>
908\end{verbatim}
909Calculates the maximum element edge length, volume and quality factor. The maximum values are stored at nodes. So far the quality is only calculated for tets. Second order elements are treatened as linear regarding length and quality. The quality measure used is proportional to the ratio of the longest edge divided by the radius of the inscribed sphere. The proportionality constant is such that the quality is 1 for an equilateral tetrahedron. For all other elements it exceeds 1. The bigger this number, the worse the quality.
910
911\subsection{\label{eqal}eqal}
912\begin{verbatim}
913   'eqal' 'jbir'|'aspr'|'mca' <value>
914\end{verbatim}
915The keyword without parameters lists the current element quality thresholds (0==off):
916\begin{itemize}
917\item JBIR: The maximum ratio of jacobian determinants xsj between all gaus-points. Were xsj = Vworldcoordinates \verb_/_ Velementcoordinates and jbir = xsj-max \verb_/_ xsj-min. Supported element types he8, he20, te10.
918\item ASPR: Element aspect ratio between all element sides. Supported element types he8, he20.
919\item MCA: Maximum corner angle between all element sides. Supported element types he8, (he20 not regarding midside nodes).
920\end{itemize}
921Parameter ``value'' sets the value of the threshold. The element-quality is checked with ''\htmlref{plot}{plot} eq all''. The user might use this command to store his personal parameters in the ``.cgx'' file in his home directory.
922
923The command writes to the ''\htmlref{stack}{stack}''.
924
925\subsection{\label{exit}exit}
926\begin{verbatim}
927   'exit'
928\end{verbatim}
929This command terminates the program and saves the geometry (if any) to a file named as the input file but with the extension .fbd. If a file with that name exists already, then this file will be saved with the new file extension .fbb as a backup (see also \htmlref{save}{save}).
930
931\subsection{\label{fil}fil}
932\begin{verbatim}
933   'fil' <line> <line> <radius>
934\end{verbatim}
935This command creates an arc of a given radius between the two specified lines.
936
937\subsection{\label{flip}flip}
938\begin{verbatim}
939   'flip' [<set> <e>|<b>|<s>]|
940          [<s> ['auto']]
941
942\end{verbatim}
943This command changes the orientation of a set of shell-elements, bodies or surfaces. In case of a single surface with the parameter ``auto'' all surfaces will be flipped in a way that they share a common direction (in or out of a volume). The related elements are also flipped. See \htmlref{qflp}{qflp} for the cursor controlled command.
944
945\subsection{\label{flpc}flpc}
946\begin{verbatim}
947   'flpc'
948\end{verbatim}
949This command changes the colour of the scale. Initialy the default is red for high values and blue for low values. The command will invert the current state.
950
951\subsection{\label{font}font}
952\begin{verbatim}
953   'font' 'd'|'l'|'c' <value(1-6)>
954\end{verbatim}
955This command changes the drawing-font. Six fonts of different heigh are available:
956\\\\font d 6\\\\selects the greatest font for the drawing area were\\\\font l 1\\\\selects the smallest one for the legend. The default is selected if no number is specified. The font for the command line is selected with\\\\font c 6
957
958\subsection{\label{frame}frame}
959\begin{verbatim}
960   'frame' [<setname>]
961\end{verbatim}
962This command fits the model or the contents of a given set into the drawing space. This command is usually automatically triggered.
963
964When executing commands which increase the used space then it might happen that geometry is clipped and can not be seen or accessed anymore.
965
966\subsection{\label{gbod}gbod}
967\begin{verbatim}
968   'gbod' <name(char<9)>|'!' 'NORM' '+|-' <surf> '+|-' <surf> ->
969   .. ( 5-7 surfaces )
970\end{verbatim}
971This keyword is used to define or redefine a body in the most basic way (see also ``\htmlref{qbod}{qbod}''). Each body must have five to seven surfaces to be mesh-able. However, the number of recommended surfaces is six. The first two surfaces should be the ''top'' and the ''bottom'' surfaces. For example,\\\\gbod B001 NORM - S001 + S002 - S005 - S004 - S003 - S006\\\\will create a body B001. The keyword ''NORM'' is a necessary placeholder for future functionallity but has no actual meaning. Next, follow the surfaces with a sign ''+'' or ''-'' in front that indicates the orientation of each surface. These signs will be corrected automatically if necessary. If the an automatically generated name is desired, then type ''\verb_!_'' instead of a name.
972
973\subsection{\label{gonly}gonly}
974\begin{verbatim}
975   'gonly' 'on'|'off'
976\end{verbatim}
977This keyword is used to erase the contents of the menu area. Sometimes this is useful for hardcopies.
978
979\subsection{\label{graph}graph}
980\begin{verbatim}
981   'graph'  [<amplitude|*chars*> 'amp']|
982            [<material|*chars*> 'mat']|
983            [<set|seq> 'length' ['+'|'-']]|
984            [<set>|'-p' 'nr'|'time'|'descr'|<parameter-name> ->
985              [<Dataset-name> <entity-name>|<parameter-name> ] ->
986                [<first-Dataset-Nr> <last-Dataset-Nr>]  ]
987\end{verbatim}
988This keyword is used to create time history plots of nodal values. The values of the pre-selected nodes stored in the referenced set will be written to a file called ''graph\_\verb_<_nr\verb_>_.out''. A gnuplot command file will be written called ''graph\_\verb_<_nr\verb_>_.gnu'' and executed. The resulting file ''graph\_\verb_<_nr\verb_>_.ps'' will be automatically displayed with the postscript viewer unless the user has used ``\htmlref{asgn}{asgn}'' to turn the presentation off (and the \verb_<_nr\verb_>_ can be defined). The default viewer is ''ghostview'' but this can be changed in the ''cgx.h'' file before the program is build. See also ``\htmlref{How to generate a time-history plot}{How to generate a time-history plot}'' for further details.
989
990A set with the nodes of interest must be created (usually with ``\htmlref{qadd}{qadd}'') before a graph can be drawn. If the parameter l (length) is used to plot values along the length of a set of nodes then this set should be of the sequence type (usually created with ``\htmlref{qseq}{qseq}''):\\\\graph seq length\\\\The length is calculated as the sum of the distances between successive nodes. Un-ordered sets (as created with ``qadd'') will be ordered in a way that the positive direction points away from the origin of the coordinate system. The direction can be chosen with a '+' or '-' sign following the 'length' parameter ('+' is default).
991
992Instead using existing nodes it is possible to use a line or a combined line ``\htmlref{lcmb}{lcmb}'' as a method to generate new locations for data-points. The current displayed results will be automatically mapped to this locations and shown in a 2D graph over the length of the line:\\\\graph lineset length +\\\\The set lineset stores a line. Since a '+' was given the graph starts at the beginning of the line. With a '-' it would start at the end of the line.
993
994Since version 1.8, there are two ways of operation. One way is to specify the Datasets and the entity as parameters of the command\\\\graph set time DISP D1\\\\which will display the displacement D1 of nodes in ''set'' vs. the dataset-time of all ''DISP'' Datasets. The first and the last dataset can be specified optionally.
995
996For the traditional way, a sequence of datasets must have been selected (see  \htmlref{Toggle Dataset Sequence}{Toggle Dataset Sequence}). After the selection of the datasets, an \htmlref{Entity}{Entity} must be specified. Then, the user could use the graph command to generate the history-plot of this pre-defined sequence. The command\\\\graph set nr\\\\will display the values on the node-positions vs. the dataset-numbers. The command\\\\graph set time\\\\will display the values on the node-positions vs. the dataset-values (usually time or frequency, see \htmlref{Nodal Results Block}{Nodal Results Block}, parameter ``VALUE'')) and the command\\\\graph set descr\\\\will display the values on the node-positions vs. the dataset-description (only makes sense if the description is a numerical value. See \htmlref{Nodal Results Block}{Nodal Results Block}), parameter ``TEXT'', for the location of this data in the frd-file.\\\\In addition, a second data-file is written ''graph.out2'' which stores the node-number and the node-coordinates and all values at this node-position for all datasets. This file can be used to display values over node-positions, etc. It is up to the user to generate a suitable plot out of this data.\\\\The ''graph'' files can be edited and combined. For example to plot one type of value vs. another type of value.\\\\
997
998If an ccx- or Abaqus-input-file was read then it is also possible to create time history plots of the amplitudes (*AMPLITUDE in ccx) or the material-properties can be displayed (*MATERIAL in ccx):\\\\graph amplitude-name amp\\\\graph material-name mat\\\\Wildcards (*) can be used to search for amplitudes or materials of a certain expression.
999
1000The parameters related to datasets can also be displayed with the graph command:\\\\graph -p time DISP HID\\\\This command plots the nodal-diameters used in a cyclic symmetry calculation over the dataset-value. Only few parameters are written from ccx in frd-format. Other applications might define its own parameters in frd-format (see \htmlref{Parameter Header Record}{Parameter Header Record} for the format of a parameter record). If needed cgx can also create this dataset parameters, see the ''\htmlref{ds}{ds}'' command on how to do it.
1001
1002The running number in the name of the written file is stored in the value !graph\_Nr (the leading '!' prevents the value from beeing written by the send or save command). It can be used in a subsequent ''\htmlref{sys}{sys}'' command to change the filename.
1003
1004\subsection{\label{grpa}grpa}
1005\begin{verbatim}
1006   'grpa'
1007\end{verbatim}
1008This command allows to assign elements to a group. The group number is an element attribute used in the frd file. That way the user can read an result file, define groups and store the results together with group-definitions for further use in case no ccx input file is available. One element can only belong to one group. This command assigns a group number to certain elements stored in a given set. See ``\htmlref{Element Definition Block}{Element Definition Block}'' how this applies to the result format (frd).
1009
1010\subsection{\label{grps}grps}
1011\begin{verbatim}
1012   'grps'
1013\end{verbatim}
1014The result format (frd) allows to assign elements to a group. One element can only belong to one group. This command creates sets and stores all elements of a certain group in a certain set called ``+grp[nr]''. See ``\htmlref{Element Definition Block}{Element Definition Block}'' how this applies to the result format (frd).
1015
1016\subsection{\label{gsur}gsur}
1017\begin{verbatim}
1018   'gsur' <name(char<9)>|'!' '+|-' 'BLEND|<nurbs>|<shape>' ->
1019          '+|-' <line|lcmb> '+|-' <line|lcmb> .. (3-5 times)
1020\end{verbatim}
1021This keyword is used to define or redefine a surface in the most basic way (see also \htmlref{qsur}{qsur}). Each surface which is intended for a regular mesh must have three to five edges which might consist of a single line or a combined line (see \htmlref{lcmb}{lcmb}) to be mesh-able. However, the recommend amount of edges is four. For example,\\\\gsur S004 + BLEND  - L002 + L00E + L006 - L00C\\\\will create the surface S004 with a mathematically positive orientation indicated by the ''+'' sign after the surface name. The keyword ''BLEND'' indicates that the interior of the surface will be defined according to Coons \cite{Coons} or a NURBS surface (\htmlref{nurs}{nurs}) or shape (\htmlref{shpe}{shpe}) is referenced. It should be mentioned that only nurbs or shape related surfaces can be meshed with unstructured triangles. Use a  ''+'' or ''-'' in front of the lines or lcmbs to indicate the orientation. These signs will be corrected automatically if necessary. If the surface is intended for an unstructured mesh it is not necessary to care about the correct orientation of the lines and the number of edges is not limmited. If automatic name generation is desired, then use ''\verb_!_'' instead of a name.
1022
1023\subsection{\label{gtol}gtol}
1024\begin{verbatim}
1025   'gtol' [RETURN]|<auto>|<geometric-tol>
1026\end{verbatim}
1027This keyword is used to enquire the default geometric tolerance:\\\\
1028gtol\\\\
1029Or it is used to recalculate the geometric tolerance:\\\\
1030gtol auto\\\\
1031Or it is used to set the geometric tolerance:\\\\
1032gtol 0.1\\\\
1033The \htmlref{merg}{merg} command will recognize points or nodes as equally located when the distance between them is less than gtol.
1034
1035The command writes to the ''\htmlref{stack}{stack}''.
1036
1037\subsection{\label{hcpy}hcpy}
1038\begin{verbatim}
1039   'hcpy' [['gif'|'png'|'ps'|'tga'] ['name']]|
1040          [make [ls]]|[clean]
1041\end{verbatim}
1042This keyword creates a hardcopy in one of the above formats. Default is tga. Use the program ''convert'' to convert to other formats if needed.\\\\hcpy ps\\\\will create a ps file with the default name hcpy\_\verb_<_nr\verb_>_.ps\\\\hcpy ps name\\\\will create name.ps\\\\hcpy make ls\\\\will bundle all ps files created in one file using the landscape (ls) format. The ls parameter may be omitted. A maximum of six pictures is placed on each page.\\\\hcpy clean\\\\will remove all ''hcpy'' files. See also the commands ''\htmlref{ulin}{ulin}'', ''\htmlref{rot}{rot}'', ''\htmlref{ds}{ds}'', ''\htmlref{max}{max}'', and ''\htmlref{min}{min}'' which might be used in hcpy batch files. These commands should be used in the shown order before using the ''hcpy'' command.
1043
1044The command writes the file-name and -nr to the ''\htmlref{stack}{stack}''.
1045
1046\subsection{\label{help}help}
1047\begin{verbatim}
1048   'help'
1049\end{verbatim}
1050This keyword prints a short overview of all commands.
1051
1052\subsection{\label{if}if}
1053\begin{verbatim}
1054   'if' <value>|<const> 'eq'|'ne'|'=='|'!='|'<'|'>' <value>|<const>
1055\end{verbatim}
1056This keyword is used to compare two values (``\htmlref{valu}{valu}'' or constant numbers). If the compare is True the following commands are executed. If the compare is False the code after 'else' is executed. Normal operation continues after 'endif':
1057\\\\if arg1 == arg2\\\\will skip successive commands when the numerical value stored in 'arg1' is not equal to the numerical value stored in value 'arg2'. The values are locally converted to 'float' format for the numerical comparison. The 'eq' and 'ne' compare strings and should not be used for numerical values since no conversion to a common format is done. Two strings are equal if they have the same length and all characters are equal.
1058
1059See also ``\htmlref{while}{while}'', ``\htmlref{valu}{valu}'', ``\htmlref{stack}{stack}'' and ``\htmlref{How to run cgx in batch mode}{How to run cgx in batch mode}''.
1060
1061\subsection{\label{int}int}
1062\begin{verbatim}
1063   'int' <line> <line>
1064\end{verbatim}
1065This command creates the intersection point between the two specified lines. The longer part of the given lines is kept. The shorter part will be erased.
1066
1067\subsection{\label{init}init}
1068\begin{verbatim}
1069   'init' <internal parameters>
1070\end{verbatim}
1071This command defines the window and model size, the model position, rotational center, fonts and others. It is created and written to a file by the
1072``\htmlref{send}{send}'' command. If that command should change the window dimensions and is used in a batch file, it has to be used in the first line. Otherwhise the window dimensions take only effect after the batch file was completely parsed and executed. A batch file could look like that::
1073\begin{verbatim}
1074  read init.fbl
1075  read ccx.frd new
1076  ds 1 e 1
1077  plot fv all
1078  hcpy png
1079  quit
1080\end{verbatim}
1081If the window size is not affected by the command then it is not necessarily the first command in the batch file.
1082
1083\subsection{\label{lcmb}lcmb}
1084\begin{verbatim}
1085   'lcmb' <name(char<9)>|'!' ['+|-' <line> '+|-' <line> '+|-' ->
1086   <line>..(up to 14 lines)]|
1087                          ['ADD' '+|-' <line> '+|-' <line> ->
1088   '+|-' <line>..(up to 14 lines)]
1089\end{verbatim}
1090This keyword is used to define, extend or redefine a combined line (lcmb). Combined lines are necessary if the edge of a surface should be made of more than one line. Usually the user does not create lcmb's directly. They are created automatically during the process of defining a surface with the command \htmlref{qsur}{qsur}. There is no limitation to the number of lines in a combined line. However with one command, not more than 14 lines can be specified at a time. To specify more than that or to extend an existing lcmb a modify command has to follow. For example,\\\\lcmb U260 + U249 - U248 - U247 - U243 - U237 - U236 - U231 - U219 \\\\defines the lcmb U260 with 8 lines and their orientation in the lcmb. The following command\\\\lcmb U260 ADD - U218 - U217\\\\extends the lcmb U260 by two additional lines.
1091
1092It should be noted that an existing lcmb can be converted into a spline with the command \htmlref{seqc}{seqc}.
1093
1094\subsection{\label{length}length}
1095\begin{verbatim}
1096    'length' <set>
1097\end{verbatim}
1098This keyword is used to calculate the length of all lines stored in a set.
1099
1100The command writes to the ''\htmlref{stack}{stack}''.
1101
1102\subsection{\label{line}line}
1103\begin{verbatim}
1104   'line' <name(char<9)>|'!' <p1> <p2> <cp|seq> <div> [<bias>]
1105\end{verbatim}
1106This keyword is used to define or redefine a line. A line depends on points. A line can only be defined if the necessary points are already defined. Attention: The points p1 and p2 must not lie on the same location. There are three different types of lines available. The straight line\\\\
1107line l1 p1 p2 4\\\\
1108is defined by: its name l1 (the name could have up to 8 characters), by the points p1 and p2 and optionally by the division. The arc\\\\
1109line \verb_!_ p1 p2 cp 4\\\\
1110needs a center point cp. The radius changes linear from p1 to p2 if the center-point cp is excentric. The name is chosen automatically (triggered by the character \verb_!_). The spline\\\\
1111line l1 p1 p2 seq 4\\\\
1112needs a so called sequential-set, seq (use the command ``\htmlref{seqa}{seqa}'' or ``\htmlref{qseq}{qseq}'' to define such a set). This set seq stores the spline points between the end-points in the right order. The spline function is described in \cite{spline}. Usually, a line is defined interactively with ``\htmlref{qlin}{qlin}''.
1113
1114\subsection{\label{lnor}lnor}
1115\begin{verbatim}
1116   'lnor' <name|!> <p1> <p2> <p3> <length>
1117\end{verbatim}
1118A new line normal to a plane defined by three points and a length is created. It starts at the last point.
1119
1120\subsection{\label{mata}mata}
1121\begin{verbatim}
1122   'mata' <Material-Nr> <set>
1123\end{verbatim}
1124This keyword is used to assign a material-number to a set of elements. Currently, this feature is only useful if the NASTRAN format is used. The material-number is a numeric attribute assigned to each element of the mesh and will be stored with the mesh in the frd-format or nastran-format (see \htmlref{send}{send}). For example,\\\\
1125mata 7 part\\\\
1126assigns the material-number 7 to all elements in the set part. Elements can have just one material-number. The default number is 1. These numbers will be saved with the mesh if the database is written to the file-system with the command:\\\\send all frd  or  send all nas\\\\If the frd-file is used later, the material-number(s) are available immediately.
1127
1128\subsection{\label{map}map}
1129\begin{verbatim}
1130   'map' <slave-set> <master-set> [ ->
1131           ['surf']|
1132           ['volu']|
1133           [ 'x'|'y'|'z'|'rx'|'ry'|'rz']  ->
1134           ] 'ds'[<nr>]
1135\end{verbatim}
1136This keyword is used to map (or interpolate) values from one mesh to another. For example\\\\map slave master surf ds1\\\\will map the values from Dataset 1 to the nodes of set slave. All available datasets will be mapped if no number follows the ``ds'' parameter. The parameter ``surf'' is used for mapping of values from element faces to element faces and their nodes (2D or 3D). Do not use internal nodes or volume elements! A typical application would be the mapping of pressure. The parameter ``volu'' triggers the mapping from a 3D mesh to another 3D mesh of the same shape (i.e. temperatures). The parameters ``x,y,z'' are used for mapping from 2D to 2D/3D in the indicated direction. The parameters ``rx,ry,rz'' are used for rotational mapping of 2D to 2D/3D around the x,y,z-axis. The ``master'' set must include  the surrounding nodes and their elements. Unconnected nodes are not allowed. Usually the master nodes (on which the values are known) were included from an external result file with the ``\htmlref{read}{read}'' command (with the parameter ``add''). For further details see ``\htmlref{How to map loads}{How to map loads}'' in the appendix. Remark: The 3D mapper uses multi threading. The number of cores is defined in cgx.h (NTHREADS).
1137
1138\subsection{\label{mats}mats}
1139\begin{verbatim}
1140   'mats'
1141\end{verbatim}
1142This keyword is usually used when a mesh with mateial numbers was read. For example a native-netgen file \cite{NETGEN} or an frd file (see ``\htmlref{Element Definition Block}{Element Definition Block}''). It lists the used material numbers and will generate sets for each material. The solver ccx writes the original material names in the frd file after the related material number (see ``\htmlref{User Header Record}{User Header Record}'' and ``\htmlref{prnt}{prnt} usr'').
1143
1144\subsection{\label{max}max}
1145\begin{verbatim}
1146   'max' <value> ['e'|'f'|'i'|'l'] ['l'|'u']
1147\end{verbatim}
1148This keyword is used to define the upper value of the scale in the menu area (see figure \ref{mainwindow}). The number representation can be changed between exp, float, int or log10 for which the scale is restricted to positive values. For example\\\\max 1100 i\\\\will set the upper value to 1100 and the representation to integer. A third parameter "l" (lock) or "u" (unlock) can be provided which locks the scale to certain max or min values. The selection of a different dataset will not change the scale. The specified value defines the highest value of the last box. See also ''\htmlref{maxr}{maxr}'', ''\htmlref{min}{min}''.
1149
1150\subsection{\label{maxc}maxc}
1151\begin{verbatim}
1152   'maxc' <value> ['e'|'f'|'i'|'l'] ['l'|'u']
1153\end{verbatim}
1154The functionallity of ''\htmlref{maxr}{maxr}'' but the color of the last box is 'n' (neutral) unless the user had changed this color by using the \htmlref{asgn}{asgn} command.
1155
1156\subsection{\label{maxr}maxr}
1157\begin{verbatim}
1158   'maxr' <value> ['e'|'f'|'i'|'l'] ['l'|'u']
1159\end{verbatim}
1160The functionallity of ''\htmlref{max}{max}'' but the specified value defines the lowest value of the last box. See also ''\htmlref{maxc}{maxc}''
1161
1162\subsection{\label{menu}menu}
1163\begin{verbatim}
1164   'menu' <name> <command>
1165\end{verbatim}
1166This keyword is used to add a cgx command line to the menu. It will appear in the submenu 'user'. The command is usually a 'read' command which loads and executes a file with cgx commands:\\\\menu checkbou read cb\\\\were 'cb' is a value (''\htmlref{valu}{valu}'') which stores the path to a file to check boundary conditions. The file could have been used diredtly but using a value is convenient since it is then possible to start the same action with a quite short command line (''\htmlref{read}{read} cb'') instead of typing the full file name. This commands are usually stored in a ``.cgx'' file in the home directory to link them to the menu during startup.
1167
1168\subsection{\label{merg}merg}
1169\begin{verbatim}
1170   'merg' 'n'|'e'|'p'|'l'|'c'|'s' <set> <gtol> 'nolock'
1171\end{verbatim}
1172This keyword is used to merge close points and nodes or equally defined entities. The following entities are known: Nodes n, Elements e, Points p, Lines l, Combined Lines c, Surfaces s. For example, to merge points included in the set point-set type\\\\merg p point-set\\\\Only entities included in the set are considered. The value gtol determines the maximum distance between merged nodes and points. The parameter nolock will force merging even if the dependent entities, like lines, are degenerated afterwards. For example, a degenerate line will have two equal points.
1173
1174\subsection{\label{mesh}mesh}
1175\begin{verbatim}
1176   'mesh' <set> ['fast'] ['tet' <size>|'block'|->
1177                 'lonly'|'nolength'|'noangle'|'length'|'angle']
1178\end{verbatim}
1179This keyword is used to start the meshing of the model. before using the mesh command, the element types must be defined with the \htmlref{elty}{elty}\ command.  Existing elements will not be deleted. Therefore, its possible to start cgx in the viewing mode (-v) with a mesh alone, and then create bodies and fill them with additional elements. To delete a mesh use the command \htmlref{del}{del} mesh. See the command ''\htmlref{send}{send}'' to describe areas for boundary-conditions.
1180\\\\In case a blocked grid for cfd-calculations should be generated, use the additional parameter ''block'':
1181\\\\mesh setname block\\\\ see also the section ''\htmlref{Remarks Concerning Duns and Isaac}{Remarks Concerning Duns and Isaac}''.
1182\\\\The mesh optimizer for structured elements is controlled with the additional parameters ''nolength'' and ''noangle''. These parameters switch off length and angle optimizations of elements. The parameter ''fast'' suppresses the Nurbs-based meshing and uses the fast coons-algorithm for surface meshing.
1183\\\\Usually all elements are generated in a structured way. That means that no holes in a surface or volume are permitted. The only exception are the element types ''tr3u'' and ''tr6u''. This types are generated in an unstructured way using the mesher from \cite{mesh2d}. In this case, holes are permitted and a surface coming from a cad system should be meshable. These surfaces MUST reference a given NURBS-surface or a shape to be meshable (if they are plane, a shape will be genrated atomatically). This is usually the case if the data is derived from a cad-system with the interface-program (vda2fbd). If NETGEN \cite{NETGEN} is installed and if the elements form a closed volume they can be used to generate a tet mesh:\\\\mesh set-with-trias tet\\\\or\\\\mesh set-with-trias tet \verb_<_element-target-size\verb_>_\\\\This is a second method to generate tets. The other one is to use ``\htmlref{elty}{elty}'' to asign tet-elements to bodies. Remark: The mesher is able to use multi threading. The number of cores are defined in cgx.h (NTHREADS) and can be changed with ``\htmlref{asgn}{asgn}'' during run time. The actual number can be listed with ``\htmlref{prnt}{prnt} info''
1184
1185\subsection{\label{mids}mids}
1186\begin{verbatim}
1187    'mids' <set> ['lin'|'gen'|'rem']
1188\end{verbatim}
1189This keyword is used correct the midside node-position of higher order elements stored in a set. It is performed automatically if a new mesh is created or if nodes are projected to target surfaces. The correction will use a circular track defined by the corner-nodes and the midside node. With the parameter ''lin,'' the corrected position is halfway between the corner-nodes for all inner nodes. Nodes on the surface are not affected by the lin option. The ''gen'' option will generate midside nodes for linear elements like he8 or te4. The ''rem'' option will remove midside nodes from the element formulation but the nodes are not deleted. The nodes are stored in a new set called ''-delete'' and the user might ''\htmlref{zap}{zap}'' this set.
1190
1191\subsection{\label{min}min}
1192\begin{verbatim}
1193   'min' <value> ['e'|'f'|'i'|'l'] ['l'|'u']
1194\end{verbatim}
1195This keyword is used to define the lower value in the scale in the menu area (see figure \ref{mainwindow}). The number representation can be changed between exp, float, int or log10 for which the scale is restricted to positive values. For example\\\\min 0 i\\\\will set the lower value to 0 and the representation to integer. A third parameter "l" (lock) or "u" (unlock) can be provided which locks the scale to certain max or min values. The selection of a different dataset will not change the scale.
1196
1197\subsection{\label{minc}minc}
1198\begin{verbatim}
1199   'minc' <value> ['e'|'f'|'i'|'l'] ['l'|'u']
1200\end{verbatim}
1201The functionallity of ''\htmlref{minr}{minr}'' but the color of the first box is 'n' (neutral) unless the user had changed this color by using the \htmlref{asgn}{asgn} command.
1202
1203\subsection{\label{minr}minr}
1204\begin{verbatim}
1205   'minr' <value> ['e'|'f'|'i'|'l'] ['l'|'u']
1206\end{verbatim}
1207The functionallity of ''\htmlref{min}{min}'' but the specified value defines the lowest value of the second box.
1208
1209\subsection{\label{minus}minus}
1210\begin{verbatim}
1211   'minus' 'n'|'e'|'p'|'l'|'s'|'b'|'S'|'L'|'sh' <set>
1212\end{verbatim}
1213This keyword is used to remove entities of a set from the screen (see also \htmlref{plus}{plus}). The following entities are known:\\\\
1214Nodes n, Elements e, Points p, Lines l, Surfaces s, Bodies b, Nurb Surfaces S, Nurb Lines L and Shapes sh\\\\Only the set which was used to display the entities can be used to remove them.
1215
1216\subsection{\label{mm}mm}
1217\begin{verbatim}
1218   'mm' <value> ['f'|'i'|'e'] ['l'|'u']
1219\end{verbatim}
1220This keyword combines the functionallity of the commands \htmlref{max}{max} and \htmlref{min}{min} in one command. The minimum value is set to -max.
1221
1222\subsection{\label{move}move}
1223\begin{verbatim}
1224   'move' <set> ['scal' <fx> <fy> <fz> <pnt>]|
1225                ['tra' <dx> <dy> <dz>]|
1226                ['rot' [<p1> [<p2>]|['x'|'y'|'z']] |
1227                       ['x'|'y'|'z'] <alfa> |
1228                       [<alfa1> <ax1> <alfa2> <ax2>]]|
1229                ['rad' [<p1> [<p2>]|['x'|'y'|'z']] |['x'|'y'|'z'] |
1230                     'p'<pnt> <dr>] | [<dr1> <ax1> <dr2> <ax2>]
1231                ['nor' <dr>]|
1232                ['equ' <trgt-set> [<tol>]]|
1233                ['mir' <P1> <P2>]
1234\end{verbatim}
1235This keyword is used to move nodes or points which are stored in a set. Related entities will be moved as well (Warning: results are not affected by this command, they are unchanged). For example to move a line it is necessary to include their points in a set (see \htmlref{comp}{comp}). Several transformations are available:\\\\For example scal will scale the entities of the set, the scaling factors fx, fy, fz can be chosen independently and a reference point can be used,\\\\
1236move part scal 2 \\
1237move part scal 1 1 2\\\\
1238move part scal 2 P0\\
1239move part scal 1 1 2 P0\\\\
1240tra will move it away by the vector dx, dy, dz,\\\\
1241move all tra 10 20 30 \\\\
1242rot will move it around the axis defined by the points p1 and p2 (or the axis x,y,z) by alfa degrees,\\\\
1243move all rot p0 px 20.\\\\
1244rad will move it radially to the x-, y- or z-axis (or two points as above) or to a single point,\\\\
1245move cylinder rad x 20.\\
1246move sphere rad pP0 10.\\\\
1247The axis for the rad or rot commands can also be specified by one point and on main-axis (x|y|z) as shown in the following example:\\\\
1248move all rot P y 20.\\\\
1249The change in length or angle might be interpolated for the rad or rot cases:\\\\
1250move set rad x 1. 120. 2. 140.\\\\
1251The number 1 specifies the radial change around x at 120 length units along the x-axis and 2 is the change at 140 length units,\\\\
1252nor will move nodes away in the direction of averaged normal local vector. Associated element faces must exist. Eventually use the ''\htmlref{mids}{mids}'' command to correct the midside node position of higher order elements,\\\\
1253move set nor 1.2 a\\\\
1254With parameter equ points will be moved to their nearest neighbour in set ``trgt-set'' as long as the neighbour is not more than 0.01 units away:\\\\
1255move slave-set equ trgt-set 0.01\\\\
1256mir will mirror the set. The mirror-plane is placed normal to the direction running from P1 to P2 and placed at P2, or defined by a point and a main-axis (x|y|z) as shown in the following example:\\\\
1257move part mir P y
1258
1259
1260\subsection{\label{movi}movi}
1261\begin{verbatim}
1262   'movi' [loops <nr>]|[delay <sec>]|[start]|[stop]|
1263          [frames ['auto']|[<nr> [<epilogFile>]]]|
1264          [make [<pic-nr> <pic-nr> [<prolog.gif>]]]|
1265          [clean]
1266\end{verbatim}
1267This keyword is used to start or stop the recording of a movie. After ''start'' all frames will be stored in single gif files until the ''stop'' command is issued. Use the option ''make'' to assemble the movie from the individual files. The range consists of the nr of the first and last picture to be used. An existing movie will be copied in front of a range of frames if its name is given. With the option ''delay'' a time-delay (in seconds) between frames can be specified. With the option ''loops'' a certain nr of loops can be chosen before the animation stops. Without giving a certain nr the default is chosen which is infinite loops. With the option ''clean,'' all single gif-files will be erased.\\\\Below is an example command sequence. Do not use this sequence in a file since the start and stop commands will be executed without delay (see option 'frames' for use in a command file). Instead of using the default value of loops here one loop is defined:
1268\begin{verbatim}
1269   movi delay 0.01
1270   movi loops 1
1271   movi start
1272   (let the program run until all frames are recorded)
1273   movi stop
1274   movi make
1275   (or if a certain movie should be extended by the first 500 frames:)
1276   movi make 1 500 prolog.gif
1277   movi clean
1278\end{verbatim}
1279When using the ``frames'' option the recording starts and a given nr of frames will be recorded before the recording stops atomatically. In cases were an animation of a mode shape or a sequence of datasets should be recorded it might be useful to use the argument 'auto' instead of a specific nr of frames. With the 'auto' functionallity the program determines how much frames are needed to cover one period of frames and this period is then recorded. The 'make' and 'clean' functionallity is included in the 'auto' mode. The 'auto' mode requires that the animation or the sequence is defined and started with the next command line (see ''\htmlref{ds}{ds}''):
1280\begin{verbatim}
1281   anim real
1282   movi frames auto
1283   ds 3 eh 7
1284\end{verbatim}
1285There is a second method available when successive commands after the recording of a given number of frames are needed:\\\\
1286movi frames 90 epilogCommandFile.fbl\\\\
1287This command must be the last command in an eventual command file. After 90 frames the given file 'epilogCommandFile.fbl' will be executed (the records are interpreted as cgx commands).\\\\
1288Further remarks in ''\htmlref{How to change the format of the movie file}{How to change the format of the movie file}''. See also the menu options ''\htmlref{Start Recording Gif-Movie}{Start Recording Gif-Movie}''.
1289
1290\subsection{\label{msg}msg}
1291\begin{verbatim}
1292   'msg' 'on|off'
1293\end{verbatim}
1294This keyword is used to enable or disable full printout during runtime. This is useful for debugging purposes. The default is ''off''.
1295
1296\subsection{\label{mshp}mshp}
1297\begin{verbatim}
1298   'mshp' <name> 'l'|'s'|'b' ->
1299      <element-type-nr> <element-attr-nr> ->
1300      <density>|<size>
1301\end{verbatim}
1302This keyword is used to set the mesh parameters for individual surfaces and bodies:\\\\mshp A001 s 8 -1 2.074\\\\sets the lement type to 8 (please see ''\htmlref{Element Types}{Element Types}'' for a key to the element numbers) and the attribute to -1 (tr6u) and the mesh density to 2.074 (mesh refinement). For sets of surfaces or bodies the \htmlref{elty}{elty} command must be used. The attributes are integer values with the following meaning:
1303\begin{itemize}
1304\item  -1: unstructured mesh tr3u (-2 for mesh with libGLu tr3g )
1305\item   0: default
1306\item   1: reduced integration be2r be3r he8r he20r
1307\item   2: incompatible modes he8i
1308\item   3: DASHPOTA be2d
1309\item   4: plane strain (CPE) tr3e tr6e qu4e qu8e
1310\item   5: plane stress (CPS) tr3s
1311\item   6: axisymmetric  (CAX) tr3c
1312\item   7: fluid he8f
1313\item   8: tet10m
1314\item   14: reduced integration, plane strain (CPE)
1315\item   15: reduced integration, plane stress (CPS)
1316\item   16: reduced integration, axisymmetric  (CAX)
1317\end{itemize}
1318
1319\subsection{\label{neigh}neigh}
1320\begin{verbatim}
1321  'neigh' <set> <tol> ['abq'|'ans'|'nas'] ->
1322           ['con' ['tie']|[[<stiffness>] [<mue>]]]|
1323           ['equ' [<dofs('t'|'1-6')..> 'c'|'u'..]|
1324           ['tie' ['yes']]|
1325           ['nsc' ['tie']|[[<stiffness>] [<mue>]]]
1326\end{verbatim}
1327This keyword is used to find neighboring element faces (and nodes) which can be used in a contact formulation. So far *TIE, *CONTACT PAIR, or *EQUATION formulations for abaqus and ccx are availabe but only equations for ansys and nastran. It will search for disjunct meshes and generates sets storing the faces of this meshes with setnames starting with '+CF'. The neighboring element faces are stored in additional sets which reference this meshes. The name of such a set consist of three parts. The first part of the name is just one character indicating if it is to be used at the dependent 'D' or independent 'I' side. The second part references the set containing the dependent faces, the third references the neighbor (the leading '+' of the basic sets are neglected). For example:
1328\begin{verbatim}
1329  DCF2_CF4
1330\end{verbatim}
1331includes the faces and nodes of '+CF2' which are close to '+CF4' were '+CF2' should be the dependent side. All sets for which no partner could be found are stored in set '+UNCON'.
1332
1333The cgx writes equations connecting both sets when using the optional parameter 'equ':\\\\ neigh all 0.1 abq equ\\\\But the recommended method is using 'tie', 'con' or 'nsc' which write the ccx command *TIE;\\\\ neigh all 0.1 abq tie\\\\or *CONTACT:\\\\ neigh all 0.1 abq con 1e6 0.2\\\\In this example the value 1e6 is used as normal contact stiffness (1/100 of that will be used as tangential stiffnes) and 0.2 as friction coefficient. The parameter 'con' defines surface to surface contact and 'nsc' node to surface contact. If the user does not provide values for stiffness and mue the cgx does not write *SURFACE INTERACTION, *SURFACE BEHAVIOR and *FRICTION commands. If instead of a stiffness 'tie' is given then a tied contact is formulated:\\\\ neigh all 0.1 abq con tie\\\\Since ccx regards no gap criterion to exclude faces which are not in contact the surface sets must be defined more restricted for the 'con tie' option. Because of that some close faces might not be included in the contact sets. REMARK: Option TIED with node to surface contact does not work so far, so an alternative method is recomended:
1334
1335Instead of PRESSURE-OVERCLOSURE=TIED the cgx writes PRESSURE-OVERCLOSURE=LINEAR with a normal and tangential stiffness of 1e7. To prevent a sliding contact mue is set to 1e30. The user should run his calculation in the following way:
1336\begin{verbatim}
1337** generate springs
1338*STEP
1339*STATIC
1340*BOUNDARY
1341Nall,1,3
1342*END STEP
1343** use the springs w/o updating them
1344** either:
1345***STEP,NLGEOM,perturbation
1346** or:
1347*STEP,perturbation
1348** either:
1349*STATIC
1350** or:
1351*FREQUENCY
1352*BOUNDARY,OP=NEW
1353\end{verbatim}
1354).
1355
1356The *TIE commands use the parameter ADJUST=NO for robustness (might be overruled when using as a last parameter 'yes'):\\\\ neigh all 0.1 tie yes\\\\The user should check his calculation for unrealistic high stresses at the junctions and eventually change the formulation on such locations to ADJUST=YES. If the calculation does not run anymore he might modify the mesh locally or use the 'equ' option for that location.
1357
1358The necessary ccx contact commands and the set definitions are written when using the parameter 'tie', 'nsc' or 'con'. The single files storing the sets might be bundeled into one file with:\\\\cat CF* \verb_>|_ all.inp\\\\This file and the file with the *TIE or *CONTACT formulations are then referenced in the ccx input file with *INCLUDE commands:
1359\begin{verbatim}
1360*INCLUDE, input=all.inp
1361*INCLUDE, input=neigh.con
1362\end{verbatim}
1363When using the 'equ' option just one file has to be generated and used in ccx:
1364\begin{verbatim}
1365*INCLUDE, input=all.inp
1366\end{verbatim}
1367
1368It should be mentioned that the option 'equ' uses actually the same functionallity as the command ``\htmlref{send}{send}'' with parameter 'areampc'. In consequence all the functionallity of that command is usable. A closer description of the available options can be found in that section. For example the last parameter 'u' prevents the adaption of the position of the dependent nodes.
1369
1370The command writes the setnames of the dependent and independent face pairs to the ''\htmlref{stack}{stack}''.
1371
1372\subsection{\label{node}node}
1373\begin{verbatim}
1374  'node' <nr|!> [<x> <y> <z> ['0'|'1']]|
1375                ['v' <value> [<value> .. ]]|
1376                ['vs' <value> ]
1377\end{verbatim}
1378This keyword is used to define or redefine a node. For example\\\\node 23580 10. 0. 1.\\\\defines a node with the number 23580 at the position x=10, y=0, z=1. With a trailing '0' the update of related entities is skipped:\\\\node 23580 10. 0. 1. 0\\\\This is useful to speed up the execution when a long list of nodes will be defined. Just the last node needs the update which is executed with a trailing '1'. But that is the default anyway and can be omitted.
1379
1380If the an automatically generated name is desired, then type ''\verb_!_'' instead of a name.
1381
1382The values of the selected (current) dataset of a given node can be manipulated by using the option 'v':\\\\
1383node 23580 v 1.1 2.1 3.3\\\\
1384redefine the first three entities to the above values of the selected dataset. The maximum number of entities is determined by the definition of the dataset. See also ''\htmlref{ds}{ds}'' on how to select or generate a new dataset or on how to manipulate entities of the selected dataset.
1385
1386The value of the selected (current) entity and dataset of a given node can be manipulated by using the option 'vs':\\\\
1387node 23580 vs 1.1\\\\
1388
1389
1390\subsection{\label{norm}norm}
1391\begin{verbatim}
1392  'norm' <set>
1393\end{verbatim}
1394This keyword is used to evaluate the normal direction of nodes stored in the given set. Of course the node must be referenced by faces. The command writes the normal direction of nodes to the konsole. The user might store this values on the stack for further use (see also \htmlref{stack}{stack} and \htmlref{valu}{valu}).
1395
1396\subsection{\label{nurl}nurl}
1397\begin{verbatim}
1398  'nurl' <name(char9)>|'!' ['DEFINE' ['COMPACT'] ->
1399                 <pstart> <pend> <deg> <npnt> <nknt> <div>]|
1400                 ['CONTROL' <index> [<pnt>|<x y z>] <weight>]|
1401                 ['KNOT' <index> <value>]|
1402                 ['END']
1403\end{verbatim}
1404This keyword is used to define a nurbs line. So far, this command is only used to read a nurbs-line definition. Nurbs lines are converted automatically into a spline. Nurbs lines can be displayed but not saved. There are two possible ways of definition. Either by using predefined point-names or by specifying the coordinates explicitly. When the coordinates are defined, the parameter ''COMPACT'' must be used as shown above. When the point names are used, then ''COMPACT'' must be omitted. CAD-interfaces might use this functionality.
1405
1406\subsection{\label{nurs}nurs}
1407\begin{verbatim}
1408   'nurs' [<name(char9)>|'!' ['DEFINE' ['COMPACT'] ->
1409              <u.deg> <v.deg> <u.npnt> <v.npnt> <u.nknt> <v.nknt>]|
1410              ['CONTROL' <u.index> <v.index> [<pnt>|<x y z>] ->
1411              <weight>]|
1412              ['KNOT' <U>|<V> <index> <value>]|
1413              ['END']] |
1414          [ <!> <setname(containing surfaces)>]
1415\end{verbatim}
1416This keyword is used to define a nurbs shape. Surfaces might use nurbs to define the interior geometry. There are two possible ways of definition. The first using predefined point names and the second by specifying the coordinates explicitly. When the coordinates are defined, then the parameter ''COMPACT'' must be used as shown above but when point names are used, then ''COMPACT'' must be omitted. CAD-interfaces might use this functionality.\\\\REMARK: The knot-vector has to have a multiplicity of ``degree+1''.\\\\
1417There is also a small nurbs-building capability in cgx. It is possible to use
1418existing surfaces (with 4 edges) which do not already reference a given
1419nurbs or shape. The new nurbs will follow the Coons-algorithm but can be modified by
1420moving the control points. NOTE: The number of control points is controlled by the
1421divisions of the lines defining the surface edges. The surfaces must be stored in a set. For
1422example,\\\\nurs ! surfaceSet\\\\will define nurbs for all surfaces stored in
1423the set surfaceSet. This nurbs can be used to define the interiour of other
1424surfaces. This is necessary if ``tr3u'' elements (unstructured triangles)
1425should be used and if the surface is not related to a given shape. Note:
1426``\htmlref{qsur}{qsur}'' offers another option to create nurbs related
1427surfaces by associating existing surfaces to an overlapping existing
1428NURBS. The interiour of the surface is then defined by the NURBS.
1429
1430Remark: Internally nurbs are always linked by a shape to a surface definition. Such a shape will be automatically generated when a nurbs is finished by the ``END'' parameter using the same name as the nurbs. This shapes will not be written to a file but using the \htmlref{prnt}{prnt} command will list them:\\\\shpe N001 NURS N001
1431
1432\subsection{\label{ori}ori}
1433\begin{verbatim}
1434   'ori' <set>
1435\end{verbatim}
1436This keyword is used to trigger the orientation of the entities. This is done automatically and it should never be necessary to use it manually.
1437
1438\subsection{\label{plot}plot}
1439\begin{verbatim}
1440   'plot' ['n'|'e'|'f'|'p'|'l'|'s'|'b'|'S'|'L'|'sh'|'si']&->
1441          ['a'|'b'|'c'|'d'|'n'|'p'|'q'|'t'|'v'] ->
1442          <set> ['b'|'g'|'k'|'m'|'n'|'r'|'t'|'w'|'y'] [<width>->
1443                |<transparency>]
1444\end{verbatim}
1445This keyword is used to display the entities of a set. Entities already visible will be erased. The following types of entities are known:\\\\
1446Nodes n, Elements e, Faces f, Points p, Lines l, Surfaces s, Bodies b, Nurbs Surfaces S, Nurbs Lines L, Shapes sh and the shaded (illuminated) surfaces si\\\\The entities can be displayed in the following colors:\\\\
1447White w, Black k, Red r, Green g, Blue b, Yellow y, Magenta m, Neutral 'n' (metallic grey) and turquois t\\\\ To display the entities with attributes, use the type in combination with an attribute (second letter). For example\\\\
1448plot la all\\\\will display all lines with their names. The attribute d works only for lines,\\\\plot ld all\\\\ will display all lines with their division and bias (see \htmlref{bia}{bia}). The division is given by the numbers (1-99) following the \verb_#_ sign and the bias by the leading numbers. If there is more than one number in front of the division, the number has to be divided by a factor of ten to get the bias (101\verb_#_30 means a bias of 10.1 and a div of 30). \\\\plot ln all\\\\shows potential node locations. The attribute p works only for lines. In this case the lines with its end-points are drawn:\\\\plot lp all\\\\This is useful to detect the begin and end of all lines. If end-points are deleted, the line is also deleted. Therefore special care with end-points is necessary. The key c combines the line parameters d, p, n:\\\\plot lc all\\\\The lines are drawn with their end-points, potential node positions and divisions.
1449Shaded surfaces\\\\plot si all\\\\ can only be displayed if the interiour was previously calculated, which is done with the command ``\htmlref{rep}{rep}'' or ``\htmlref{mesh}{mesh}''. The attribute t applies only to nodes and will display only the ones which have attached texts:\\\\plot nt all\\\\will display only the nodes which have attached texts out of the set 'all'. They are created with ''\htmlref{qadd}{qadd}'', ''\htmlref{qenq}{qenq}'' or ''\htmlref{qtxt}{qtxt}''. The attribute ``width'' determines the number of pixels used for the thickness of the entity (points, nodes, lines):\\\\plot l all 4\\\\will display all lines with a width of 4 pixels. This works also for 2D faces and beams.
1450The attribute n works for nodes only:\\\\plot nn set1\\\\will display the nodes in set set1 with their numerical values. The attribute v works for nodes, faces ane elements. This attribute is used to display results with colors representing their values:\\\\plot nv set1\\\\plot fv set1\\\\plot ev set1\\\\Actually this is what happens automatically if the user selects an ''\htmlref{Entity}{Entity}'' from ''\htmlref{Datasets}{Datasets}'' in the ''\htmlref{menu}{menu}''. The faces can be displayed in a transparent manner with the attribute b:\\\\plot fb set1 t 33\\\\will display the faces in turquois color with a transparency of 33\verb_%_.\\\\plot fvb set1 33\\\\will display the faces with their colored values with a transparency of 33\verb_%_. A default transparency is used if a number is not given.\\\\
1451The attribute q works only for elements. With this attribute, only elements which do not pass the element-quality check are displayed:\\\\
1452plot eq all\\\\ The threshold for the element-quality is defined with ''\htmlref{eqal}{eqal}''.\\\\
1453To plot additional entities, see \htmlref{plus}{plus}.
1454
1455\subsection{\label{plus}plus}
1456\begin{verbatim}
1457   'plus' ['n'|'e'|'f'|'p'|'l'|'s'|'b'|'S'|'L'|'sh'|'si']& ->
1458          ['a'|'b'|'d'|'n'|'p'|'q'|'t'|'v'] ->
1459          <set> ['b'|'g'|'k'|'m'|'n'|'r'|'t'|'w'|'y'] [<width>->
1460                |<transparency>]
1461\end{verbatim}
1462This keyword is used to display the entities of an additional set after a \htmlref{plot}{plot} command was used (see also \htmlref{minus}{minus}). Further details are explained in section \htmlref{plot}{plot}.
1463
1464\subsection{\label{pnt}pnt}
1465\begin{verbatim}
1466   'pnt' <name(char<9)>|'!' [<x> <y> <z>]|
1467                            [<line> <ratio> <times>]|
1468                            [<P1> <P2> <ratio> <times>]|
1469                            [<setname(containing nodes)>]
1470\end{verbatim}
1471This keyword is used to define or redefine a point. There are four possibilities to define a point. To define a point just with coordinates:\\\\
1472pnt p1 11 1.2 34\\\\or,\\\\
1473pnt \verb_!_ 11 1.2 34\\\\where the name is chosen automatically. It is also possible to create points on a line or in the direction from P1 to P2 by defining a spacing (ratio) and number-of-points:\\\\
1474pnt \verb_!_ L1 0.25 3\\\\or\\\\
1475pnt \verb_!_ P1 P2 0.25 3\\\\will create 3 new points at the positions 0.25, 0.5 and 0.75 times the length of the line or the distance from P1 to P2, and it is also possible to create points on the positions of existing nodes. The command\\\\
1476pnt \verb_!_ set\\\\will create new points on the positions of the nodes included in the specified set. Usually when points are defined interactive the command \htmlref{qpnt}{qpnt} is used.
1477
1478\subsection{\label{prnt}prnt}
1479\begin{verbatim}
1480   'prnt' ['se'|'sq' <RETURN|set|*chars*> ['range']]|
1481          ['n'|'e' <set|*chars*> 'range']|
1482          ['n'|'e'|'f'|'p'|'l'|'s'|'b'|'L'|'S'|'v' <entity>]|
1483          ['col']|
1484          ['amp' <RETURN|amplitude|*chars*>]|
1485          ['mat' <RETURN|material|*chars*>]|
1486          ['par' <RETURN|parameter>]|
1487          ['eq' <set>]|
1488          ['st' ['si']]|
1489          ['in']|
1490          ['usr']
1491\end{verbatim}
1492This keyword is used to print entity-definitions. The following entities are known:\\\\
1493Nodes n, Elements e, Faces f, Points p, Lines l, Surfaces s, Bodies b, Nurb
1494Lines L, Nurb Surfaces S, Values v, Sets se and Sequences sq\\\\To see all
1495known sets, type:\\\\prnt se\\\\Or type\\\\prnt sq\\\\to see all known
1496sequential sets (sequences: Sets which maintain the history of entity selection). Wildcards (*) can be used to search for setnames
1497of a certain expression. In this case all sets matching the expression will be
1498listed:\\\\prnt se N*\\\\lists all sets starting with 'N'. To see the contents
1499of a specific set, type\\\\prnt se setName\\\\In case the
1500``\htmlref{stack}{stack}'' was activated the value and the coordinates of
1501stored nodes are written to the stack. The content of the stack can be listed
1502with:\\\\prnt st\\\\The index and the value are written. The value with the
1503highest index is addressed next. The number of stack entries (the size) can be enquired (and written to the stack) with:\\\\prnt st si\\\\A model summary (info) is listed with:\\\\prnt in\\\\which will list the number of mesh- and geometric entities. In addition it lists the hidden entity 'edge' which are the free element edges. This number has to be zero in case of a closed surface triangulation which is required for tet-meshing.
1504
1505To print the definition of a line, type:\\\\prnt l lineName\\\\An eventually assigned alias name for a given entity can be enquired with a leading question mark:\\\\prnt l ?lineName\\\\For elements and nodes is an additional parameter ``range'' availabe. In this case the range of node- or element-numbers will be displayed (max and min nr) and holes in the numbering are detected:\\\\prnt n setname range\\\\ If an ccx- or abaqus-input-file was read then it is also possible to print the amplitudes (*AMPLITUDE in ccx) or the material-propperties (*MATERIAL in ccx), wildcards (*) can be used:\\\\prnt amp amplitude-name\\\\prnt mat material-name\\\\
1506If an ccx result file was read then the user headers (meta data)\\\\prnt usr\\\\and parameters of each dataset can be listed and written to the stack with either\\\\prnt par\\\\to list all parameters of the active dataset or a single one like for example \\\\prnt par STEP\\\\can be listed and written to the stack (see \htmlref{stack}{stack}). The available colors are listed with\\\\prnt col\\\\See ``\htmlref{col}{col}'' on how to define or redefine colors.
1507
1508The element quality is checked by using\\\\prnt eq setName\\\\The failed elements are stored in set ``-NJBY''. See ``\htmlref{eqal}{eqal}'' on how to set the criterions.
1509
1510Several other but not all parameters of this command writes to the ''\htmlref{stack}{stack}''.
1511
1512
1513\subsection{\label{proj}proj}
1514\begin{verbatim}
1515   'proj' <set> <target-set>|<shpe> ->
1516              ['tra' <dx> <dy> <dz> <offset> [<tol>]]|
1517              ['rot' <p1> <p2> <offset> [<tol>]]|
1518              ['rot' 'x'|'y'|'z' <offset> [<tol>]]|
1519              ['rad' <p1> <p2> <offset> [<tol>]]|
1520              ['rad' 'x'|'y'|'z' <offset> [<tol>]]|
1521              ['nor' <offset> [<tol>] ]
1522\end{verbatim}
1523This keyword is used to project points (with all related geometry) or nodes onto a set containing nurbs, shapes, surfaces or element-faces. Alternatively the name of a shape can be specified as the target.
1524
1525Several transformations are available. For example tra will move points in the direction of the vector dx, dy, dz onto elements or surfaces included in set2. Alternatively an offset could be specified as well,\\\\
1526proj set1 set2 tra 0. 0.5 0.7  \\\\
1527rot will move points around the axis defined by the points p1 and p2 or around the x,y,z axis onto elements or surfaces included in set2,\\\\
1528proj set1 set2 rot p0 px \\\\
1529rad will move points radial to the axis defined by the points p1 and p2 or radial to the x-, y- or z-axis onto elements or surfaces included in set2. Alternatively a set of lines could be used instead of surfaces as the target-set. Then the geometry will be moved onto an imaginary rotational surface defined by these lines,\\\\
1530proj set1 set2 rad x \\\\
1531nor will move points in a direction normal to the target surface onto surfaces included in set2. An offset might be specified:\\\\
1532proj set1 set2 nor 0.7 \\\\
1533If a shape was given instead of a target-set then an offset can not be used:\\\\
1534proj set1 ShapeName nor \\\\
1535If a point does not hit any surface from the target-set, then it will not be moved. A tolerance can be specified for the projections. No projection takes place if the target surface is farther away as this value defines:\\\\
1536proj set1 set2 nor 0.7 10. \\\\
1537
1538Check for set '-NOPRJ'. If it exists it will store the failed nodes or points.
1539
1540\subsection{\label{qadd}qadd}
1541\begin{verbatim}
1542   'qadd' <set|seq> ['t'<value>] RETURN ->
1543          <'w'|'a'|'i'|'r'|'n'|'e'|'f'|'p'|'l'| ->
1544           's'|'b'|'S'|'L'|'h'|'m'|'q'|'s'|'t'|'u'>
1545\end{verbatim}
1546This keyword is used to add entities to a set. See also \htmlref{seta}{seta}. But a set will not keep the sequence in which the entities were selected. Use \htmlref{seqa}{seqa} or the command ``\htmlref{qseq}{qseq}'' if the order of the selected entities has to be kept.
1547
1548After an entitiy was selected you get certain informations about the entity. If the node which belongs to the maximum or minimum value in a certain area has to be stored in a set you might use the same key-strokes as described for the command ''\htmlref{qenq}{qenq}''.
1549
1550To catch more than one entity with one stroke, type ''a'' (all) at first. Then create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the selection-rectangle. To catch only the entity which is closest to the user type ''i'' before.
1551
1552Then move the mouse pointer over the entity(s) and press one of the following keys, for Nodes n, Elements e, Faces f, Points p, Lines l, Surfaces s, Bodies b, Nurb Surfaces S, node attached texts t and for Nurb Lines L.
1553
1554If faces f of a certain area have to be selected, the user might specify a tolerance-value which restricts the deviation of the normal vectors of faces from the selected face. As long as the deviation is below the specified value (in degrees) all adjacent faces will be selected in a loop:\\\\ qadd areaset t25\\\\
1555
1556Press ''q'' to quit the command.
1557
1558It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1559
1560\subsection{\label{qali}qali}
1561\begin{verbatim}
1562   'qali' RETURN 'w'|'p'|'n'|'q'
1563\end{verbatim}
1564This keyword is used to align a plane defined by three points or nodes with the screen (working plane). This is useful if a point or a node should be moved manually along a defined plane (see \htmlref{qpnt}{qpnt}). To define the plane move the mouse pointer over the first entity and press ''n'' if its a node or a ''p'' if its a point. Then define the next two entities in the same way. Press ''q'' to quit the command.
1565
1566It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1567
1568\subsection{\label{qbia}qbia}
1569\begin{verbatim}
1570   'qbia' RETURN 'w'|'a'|'i'|'c'|'1'-'9'|' 10'-' 99'|'q'
1571\end{verbatim}
1572This keyword is used to change the bias of a line. The bias defines a coarsening or refinement of the mesh along a line. The number defines the ratio of the length of the first element to the length of the last element at a given line. It works by pressing a number between 1 and 9 when the mouse pointer is at the position of a line. To define numbers between 10 and 99 press the space bar when the mouse pointer is at the position of a line and then the number (two times the space bar for 100 to 999). To select more than one line with one stroke, type ''a'' before and create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the rectangle. To select only one line type ''i'' before. Press ''c'' to change the direction of the bias. Press ''q'' to quit the command (see alse \htmlref{bia}{bia}). Consider to split a line if you need a bias in both direction (see \htmlref{qspl}{qspl}).
1573
1574\subsection{\label{qbod}qbod}
1575\begin{verbatim}
1576   'qbod' <name>(optional) RETURN 'w'|'b'|'a'|'i'|'r'|'s'|'g'|
1577                                  'q'|'u'
1578\end{verbatim}
1579This keyword is used to create a body (see also \htmlref{gbod}{gbod} and \htmlref{body}{body}). The user might specify a name in the command-line or by picking an existing body with the key ''b''. Otherwise the program chooses an unused name. It is possible to create the body out of five to seven surfaces which are needed to define a body or just of two opposite surfaces, but then these two surfaces must be connected on their corner points by lines. To be more precise only single lines or existing combined lines (\htmlref{lcmb}{lcmb}) will be detected. If a combined line would be necessary but does not exist then the user should define a surface using this lines which will create the necessary combined-line. Other missed surfaces will be created automatically. To catch more than one surface with one stroke, type ''a'' before and create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the rectangle. Type ''s'' to select surfaces. To catch surfaces individually type ''i'' before (its also the default). After selecting exactly six or two opposite surfaces press ''g'' to generate the body. Press ''q'' to quit the command or ''u'' to undo the last action.
1580
1581It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1582
1583\subsection{\label{qcnt}qcnt}
1584\begin{verbatim}
1585   'qcnt' RETURN 'w'|'n'|'p'
1586\end{verbatim}
1587This keyword is used to define a new center-point or -node by pressing ''n'' or ''p'' when the mouse pointer is at the position of a node or a point.
1588
1589It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1590
1591\subsection{\label{qcut}qcut}
1592\begin{verbatim}
1593   'qcut' RETURN 'w'|'q'|'n'|'p'|'u'|'v'
1594\end{verbatim}
1595This keyword is used to define a cutting plane trough elements to visualize internal results (see figure \ref{qcutp}). The plane is defined either by picking three nodes (select with key ``n'') or points (select with key ``p''), or, in case a dataset-entity of a vector was already selected, by just one node (select with key ``v''). The cutting plane is then determined by the direction of the vector (displacements, worstPS ..). Be aware of the key ``u'' (undo) to return to the un-cutted structure. See also ''\htmlref{cut}{cut}'' for the command-line function.
1596
1597It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1598
1599\begin{figure}[h]
1600\epsfig{file=qcut.eps,width=12cm}
1601\caption{\label{qcutp}qcut: A section through a model defined by three nodes together with a transparent view of the outer skin}
1602\end{figure}
1603
1604\subsection{\label{qdel}qdel}
1605\begin{verbatim}
1606   'qdel' RETURN 'w'|'a'|'i'|'r'|'p'|'l'|'s'|'b'|'S'|'L'|'h'|'q'
1607\end{verbatim}
1608This keyword is used to delete entities (see also \htmlref{del}{del}). Higher entities (depending ones) will be deleted to. To delete more than one entity with one stroke, type ''a'' before and create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the rectangle. To delete only one entity type ''i'' before. Press ''q'' to quit the command.
1609
1610It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1611
1612\subsection{\label{qdis}qdis}
1613\begin{verbatim}
1614   'qdis' RETURN 'c'|'f'|'g'|'m'|'n'|'p'|'q'|'s'|'w'
1615\end{verbatim}
1616This keyword is used to measure distances between nodes or points. Move the mouse pointer over one entity and press the following key, for a node 'n', for a point 'p' or for a center point 'c' (has to be the second selection). If the key 'c' was pressed then the distance between the two nodes or points are given in cylindrical coordinates. Here lcir is the length of the arc, da the angle, dr is r2-r1. If no center point was chosen then the distance and its xyz components are given in the Cartesian system. But in addition the cylindrical distances around the origin and around the xyz-axis are also given.
1617
1618In addition the normal distance of a node or point to a plane defined by three nodes or points can be measured. The point or node in question is selected with key 'n' or 'p' and the nodes or points which define the plane are selected with 'm' (mesh nodes) or 'g' (geometry points). Instead of defining a plane the user may select a single surface with 's' or a single element face with 'f' (will be extended by adjacent faces). This selection has to take place before the node or point is selected.
1619
1620Press ''q'' to quit the command.
1621
1622\begin{itemize}
1623\item dist: global distance
1624\item dx, dy,dz: distance in the three Cartesian directions
1625\item da: global angle
1626\item dax, day, daz: angle around x, y, z
1627\item dr: global radius difference
1628\item drx, dry, drz: radius difference around x, y, z
1629\end{itemize}
1630
1631It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1632
1633\subsection{\label{qdiv}qdiv}
1634\begin{verbatim}
1635   'qdiv' RETURN 'w'|'a'|'i'|'1'-'9'|' 10'-' 99'|'q'
1636\end{verbatim}
1637This keyword is used to change the division of a line by pressing a number between 1 and 9 when the mouse pointer is at the position of a line (see also \htmlref{div}{div}). To define numbers between 10 and 99 press the space bar when the mouse pointer is at the position of a line and then the number (two times the space bar for 100 to 999). To select more than one line with one stroke, type ''a'' before and create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the rectangle. To select only one line type ''i'' before. Press ''q'' to quit the command. General rules are described in ''\htmlref{div}{div}''.
1638
1639It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1640
1641\subsection{\label{qenq}qenq}
1642\begin{verbatim}
1643   'qenq' RETURN 'w'|'a'|'i'|'r'|'n'|'e'|'f'|'p'|'l'|'s'|->
1644                 'b'|'S'|'L'|'h'|'m'|'u'|'v'|'t'|'q'
1645\end{verbatim}
1646This keyword is used to gain information about entities. It is especially useful to get the values on particular nodes.
1647
1648If the maximum or minimum value in a certain area has to be searched type first ``m'' to go in the max/min mode and create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the selection-rectangle. Then the key ``h'' (high) to search the node with the maximum value. The minimum is searched with ``l'' (low). The search-result is then shown in the konsole and also attached to the node. With the ``u'' key the last search result can be deleted (``undo''). The 't'-key changes into the ``qtxt''-mode. The ''\htmlref{qtxt}{qtxt}'' functionallity is now available which allows to manipulate the node-attached-string and its position on the screen. Use ''\htmlref{qadd}{qadd}'' instead of ``qenq'' if you need to save the node in a set for further use.
1649
1650To catch more than one entity with one stroke, type ''a'' (all) before and create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the rectangle. To catch only the entity which is closest to the user type ''i'' before.
1651
1652Then move the mouse pointer over the entity(s) and press one of the following keys, for Nodes n, Elements e, Faces f, Points p, Lines l, Surfaces s, Bodies b, Nurb Surfaces S and for Nurb Lines L.
1653
1654The position of nodes or points are given in Cartesian and cylindrical coordinates (see figure \ref{qenqp}, axyz are the 3 angles around x,y and z, rxyz are the 3 radii around x, y and z). In a second row the sets to which the picked entity belongs are listed.
1655
1656Press ''q'' to quit the command.
1657
1658It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1659
1660\begin{figure}[h]
1661\epsfig{file=coords.eps,width=12cm}
1662\caption{\label{qenqp}qenq: Definition of the cylindrical system}
1663\end{figure}
1664
1665\subsection{\label{qfil}qfil}
1666\begin{verbatim}
1667   'qfil' <radius> RETURN 'w'|'l'|'q'
1668\end{verbatim}
1669The command creates a fillet line (a radius) between two lines who intersect. After the command-name the value for the fillet-radius has to be specified. Then for each pair of selected lines a fillet of this value will be created. Select lines with the ''l''-key. Press ''q'' to quit the command. Currently it works only for straight lines. A curved line can be split and the part which should be used for the fillet can be transformed to a straight form with the ''\htmlref{qlin}{qlin}'' command (''s'' and ''x'' key-strokes). Figure \ref{qfilp} shows on the right side the initial situation and on the left side the created fillet. The command has also shifted point P002 to the left. Always the end-point of the first selected line closest to the intersection is moved. The second line gets a new end-point.
1670
1671\begin{figure}[h]
1672\epsfig{file=qfil.eps,width=12cm}
1673\caption{\label{qfilp}qfil: Based on two intersecting lines a fillet is created }
1674\end{figure}
1675
1676\subsection{\label{qflp}qflp}
1677\begin{verbatim}
1678   'qflp' RETURN 'w'|'e'|'s'|'a'|'i'|'q'
1679\end{verbatim}
1680This keyword is used to invert the outer- and inner side (the orientation) of shell-elements and surfaces. The orientation of shell-elements or surfaces can be seen by the interior color. The outer face reflects light, if the face is dark-grey it is the back-side. If ''\htmlref{Toggle Culling Back/Front}{Toggle Culling Back/Front}'' was selected before then both sides are illuminated. To flip the orientation of a surface and all related shell-elements select either a shell-element with the ''e'' key or if the illuminated surfaces are displayed (see ``\htmlref{rep}{rep}'' how to do that) select the surface with the ''s'' key. To see the effect on the elements immediatelly they must have been displayed with the ''\htmlref{plot}{plot}'' command. If only elements are in the database flip them with the ''e'' key. The ''a'' key has a different meaning than usually. If pressed before a selection then a so called auto mode is activated. It makes sense for volumes were a vector pointing in or out can be determined for all surfaces. In this case all related surfaces (and embedded elements) are oriented in the same way as the selected one. It works only in situations were only two surfaces share a common edge. This is the case for volumes without inner surfaces or a 2D model. In case of a volume all surface normals will point either inwards or outwards, depending on the orientation of the selected surface. Press ''q'' to quit the command.
1681
1682It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1683
1684\subsection{\label{qint}qint}
1685\begin{verbatim}
1686   'qint' RETURN 'w'|'l'|'q'
1687\end{verbatim}
1688This keyword is used to extend two lines to their intersecting location. The end-points of the two lines are moved to the intersecting location but they are not merged. Use the ''\htmlref{merg}{merg}'' command to merge duplicate points. Only straight lines are supported. Select lines with the ''l''-key. Press ''q'' to quit the command.
1689
1690\subsection{\label{qlin}qlin}
1691\begin{verbatim}
1692   'qlin' <name>(optional) RETURN 'w'|'b'|'c'|'e'|'g'|'l'|'m'|'p'|->
1693                                  'q'|'s'|'t'|'u'|'x'
1694\end{verbatim}
1695This keyword is used to create a sequence of lines (or just one, see also \htmlref{line}{line}). The user might specify a name in the command-line or by picking an existing line with the key ''l''. In this case an existing line might be redefined without destroying related geometries.
1696
1697To start a sequence of lines move the mouse pointer over a point and press the key ''b'' (begin).
1698
1699To define just a straight line go to the end point and press ''g'' (generate). This point is also the starting point for the next line. So no ''b'' is necessary for the next line.
1700
1701If the line is a sequential line (spline) then the points of the sequence must be defined with the key ''t'' in the correct order, but the last point must be selected with the key ''g''.
1702
1703If the line is an arc then the center point must be selected with the ''c'' key or one point on the line between the end-points must be selected with the ''m'' key, but the last point must be selected with the key ''g''.
1704
1705In case you need to split a line during the process, you can do that by pressing the ''s'' key.
1706
1707When you want to modify the length then pick an existing line with the key ''l'' and then the endpoint you want to move with the key ''p''. The displacement is requested and the point is moved in the direction of the line by the specified displacement.
1708
1709The ''x'' key will transform the line into a straight line.
1710
1711One quite useful function for cad-based surfaces is triggered by the ''e''-key (exchange). This allows to modify an existing surface (\htmlref{gsur}{gsur}). With that command a line or a line sequence in a \htmlref{lcmb}{lcmb} can be exchanged by the previous selected (``l'' key) or generated line. For example one edge of an already existing surface uses a lcmb but the user wants to replace it by a spline (line) then the user defines or selects the new spline and then moves the mouse in an area were one of the old lines (the new one might be present as well) is located and presses the ''e'' key. The definition of the lcmb will be changed without destroying the surface-definition. Alternatively the existing lines can be combined with the ''\htmlref{qseq}{qseq}'' command into a single spline. This command will delete the original lines.
1712
1713Press ''q'' to quit the command or ''u'' to delete the last created line.
1714
1715
1716
1717It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1718
1719
1720\subsection{\label{qmov}qmov}
1721\begin{verbatim}
1722   'qmov' RETURN 'w'|'n'|'p'|'m'|'u'
1723\end{verbatim}
1724This keyword is used to move a set of entities (see also \htmlref{move}{move}). To move a set move the mouse pointer to the desired reference node and press ''n'' or a reference point with ``p''. Then go to the desired position, either a second node, a point or a window location and press either ``n'' (node), ``p'' (point) or ``m'' (move). Press ''q'' to quit the command or ''u'' to undo the last action.
1725
1726It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1727
1728
1729\subsection{\label{qmsh}qmsh}
1730\begin{verbatim}
1731   'qmsh' RETURN 'i'|'a'|'e'|'f'|'v'|'n'|'l'|'c'|'s'|'m'|'d'|'h'|->
1732                 't'|'x'|'q'
1733\end{verbatim}
1734A very useful command to optimize surface meshes as a basis for tet-meshes. Line divisions can be changed by selecting one or more lines with the ``l'' key and then a number as with ``\htmlref{qdiv}{qdiv}''. The mesh will be updated automatically.
1735
1736Based on identified lines ``l'' or surfaces ``s'' meshes can be coarsened 't', refined 'h', deleted ``d'' and generated ``m''. Surfaces can be combined ``c'' to get rid of very small ones and splitted 'b'.\\\\
1737To change the mesh density along a line:
1738\begin{itemize}
1739\item Identify a line or several lines with key ``l''. The related surfaces are selected.
1740\item The line division is changed by pressing the key with the desired number. This function of qmsh works like the ``\htmlref{qdiv}{qdiv}'' command. The related surfaces are automatically re-meshed.
1741\item The line bias is changed if first the key ``b'' is pressed and then the key with the desired number or the key ``c'' to inverse the direction. This function of qmsh works like the ``\htmlref{qbia}{qbia}'' command. The related surfaces are automatically re-meshed.
1742\end{itemize}
1743Example for a surface combination:
1744\begin{itemize}
1745\item Identify a line with key ``l''. The related surfaces are selected.
1746\item Or identify two adjacent surfaces with key ``s'' or by selecting two single elements ``e'' one for each surface. They must use the same lines at the junction.
1747\item To combine the two selected surfaces press key ``c'' (Attention: The surface with the longer perimeter must reference a shape (a nurbs)). In the moment an automatic adaption of the embedded shape or nurbs is not done. The shape of the bigger surface is just used for the combined surface. It might be necessary to use a mapped mesh for the new surface if the embedded shape is too small ( use tr6 instead of tr6u, switching is done with key ``x'').
1748\end{itemize}
1749A surface (only without holes!) can be splitted by a crossing line:
1750\begin{itemize}
1751\item First create the desired splitting line, for example with ``\htmlref{qlin}{qlin}''.
1752\item Type ``qmsh'' and identify the line with key ``l''.
1753\item Identify the surface with key ``s'' or by selecting a single element ``e''.
1754\item Press key ``b'' to break (split) the surface in two. The previously selected line will be converted to a spline with as much control points as the line division. Then the line-points are projeted to the surface.
1755\end{itemize}
1756To change the mesh density in a selected surface:
1757\begin{itemize}
1758\item Select one or more surfaces with key ``s'' or by selecting lines ``l'' or by selecting a single element ``e''.
1759\item Press ``h'' (higher) to increase the mesh density or ``t'' (thinner) to decrease.
1760\item
1761\end{itemize}
1762To change the element type from unstructured to structured or vice versa:
1763\begin{itemize}
1764\item Select one surfaces with key ``x''. Be aware that only certain line division combinations will work for structured meshes. Initially the element type tr6 will be used if no element type was assigned to the selected surface.
1765\end{itemize}
1766
1767This keyword can be used to manually define elements. The key ``n'' selects nodes and the key ``f'' or ``v'' generate a surface or volume element based on the node-selection.
1768
1769To catch more than one entity with one stroke, type ''a'' (all) at first. Then create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the selection-rectangle. To catch only the entity which is closest to the user type ''i'' before.
1770
1771\subsection{\label{qnor}qnor}
1772\begin{verbatim}
1773   'qnor' RETURN 'w'|'p'
1774\end{verbatim}
1775A new line normal to a plane defined by three points and a length is created. It starts at the last point.
1776
1777\subsection{\label{qpnt}qpnt}
1778\begin{verbatim}
1779   'qpnt' <name>(optional)RETURN 'w'|'p'|'g'|'m'|'n'|'s'|'S'|'u'
1780\end{verbatim}
1781This keyword is used to create or move points (see also \htmlref{pnt}{pnt}). The user might specify a name in the command-line if a certain name should be used. To create a point move the mouse pointer to the desired location and press the key ''g'' (generate) or over an existing node and press ''n'' (uses then the node-coordinates). After a point was selected with ''p'' it can be moved in different ways: Either in the screen-plane, for this go to the desired position and press ''m'' (move, see \htmlref{qali}{qali} or the section \htmlref{Orientation}{Orientation} how to rotate the model into a certain position). Or the point can be moved to the position of a second point, for this go to the second point which coordinates should be used and press ''p'' again. If the coordinates of a node should be used press ''n'' instead. Also a normal projection to a nurbs related surface (from cad-systems) is feasible by choosing the target-surface with the ''s'' key or a NURBS-surface with the ''S'' key either before or after the point was marked. Press ''q'' to quit the command or ''u'' to undo the last action.
1782
1783If you picked the wrong point (the one which should be moved), just pick the same again and pick then the correct one.
1784
1785It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1786
1787\subsection{\label{qnod}qnod}
1788\begin{verbatim}
1789   'qnod' RETURN 'w'|'p'|'m'|'u'
1790\end{verbatim}
1791This keyword is used to move nodes (see also \htmlref{node}{node}). To move a node move the mouse pointer to the desired node and press ''p'' (pick) then go to the desired position and press ''m'' (move). See \htmlref{qali}{qali} or the section \htmlref{Orientation}{Orientation} how to rotate the model into a certain position. Press ''q'' to quit the command or ''u'' to undo the last action.
1792
1793It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1794
1795\subsection{\label{qrem}qrem}
1796\begin{verbatim}
1797   'qrem' <set> RETURN 'w'|'a'|'i'|'r'|'n'|'e'|'f'|'p'|'l'|'s'|->
1798                       'b'|'q'
1799\end{verbatim}
1800This keyword is used to erase entities from a set (see also \htmlref{setr}{setr}). To remove entities move the mouse pointer over the entity and press the following keys, for Nodes n, Elements e, Faces f, Points p, Lines l, Surfaces s, Bodies b, Nurb Surfaces S and for Nurb Lines L. To catch more than one entity with one stroke type ''a'' before and create a rectangular picking area by pressing two times the ''r'' key. Both strokes define opposite corners of the rectangle. To catch only one entity type ''i'' before. Press ''q'' to quit the command.
1801
1802It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1803
1804\subsection{\label{qseq}qseq}
1805\begin{verbatim}
1806   'qseq' [[<set>] RETURN 'p']|[ RETURN [<nr>|'l'|'g']]
1807\end{verbatim}
1808This keyword is used to define a sequence of nodes or points or to convert one or more lines into a sequential line (spline). A sequence is nothing else than a set which keeps the selection-order of the entities:\\\\qseq nodeset\\\\will store all selected nodes (selected with the 'n' key) in the order in which they were selected. This set might be used for a subsequent ''\htmlref{graph}{graph}'' command. Point sequences are used to define splines. Sequences can be shown with the ``\htmlref{prnt}{prnt} sq'' command. Node sequences can be written to a file and read again with the commands ``send seqname fbd'' and ``read seqname.fbd''.
1809
1810To change one or more lines into a sequential line type\\\\qseq\\\\without a setname. Then either one existing line has to be selected with a numerical keystroke (or the space-bar followed by two numbers) or several lines with 'l' keystrokes. In both cases the selection has to be finished by a 'g' keystroke. New points will be created on the selected lines which in turn are used to redefine the selected lines as a sequence line. If just one line was selected then as much points are generated as defined with the nummerical keystroke. If more than one line was selected with the 'l' key then the combined line divisions minus one define the number of new points. This command will replace and delete the original lines.
1811
1812\subsection{\label{qshp}qshp}
1813\begin{verbatim}
1814   'qshp' RETURN 'w'|'n'|'p'|'g'|'h'|'s'|'S'|'c'|'q'
1815\end{verbatim}
1816This keyword is used to define a plane shape. A plane shape needs 3 points (or nodes, points at their location will be generated and used) for its definition. The points are selected with the 'p' (nodes 'n') key. After the points are selected it will be generated by a 'g' keystroke. The shape can be assigned to a surface by selecting first either a shape 'h' or a nurbs 'S' and then the surface with the 's' key. The shape will then define the interiour of this surface. The selected shape or nurbs stay selected until cleared with 'c'. See also ``\htmlref{shpe}{shpe}'' for the keyboard controlled definition of shapes.
1817
1818It can also be used for projection purposes (see ''\htmlref{proj}{proj}'') or splitting (see ''\htmlref{split}{split}'').
1819
1820\subsection{\label{qspl}qspl}
1821\begin{verbatim}
1822   'qspl' RETURN 'w'|'s'|'q'
1823\end{verbatim}
1824This keyword is used to split one or more lines at a certain position (can also be done with ''\htmlref{qlin}{qlin}''). A point is created at the splitting position, the original line is deleted and two new lines will appear instead. All lines running through the selected location are splitted at once and the newly created splitting points will be merged to one if they are closer to each other than defined by ''\htmlref{gtol}{gtol}''. To split a line move the mouse pointer over the line and press the ''s'' key. Press ''q'' to quit the command. There is no undo but lines can be combined with the ''\htmlref{qseq}{qseq}'' command.
1825
1826It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1827
1828\subsection{\label{qsur}qsur}
1829\begin{verbatim}
1830   'qsur' <name>(optional) RETURN
1831   'w'|'a'|'b'|'l'|'i'|'r'|'1'-'9'|'g'|'q'|'u'|'s'|'S'|'h'|'c'
1832\end{verbatim}
1833This keyword is used to create or change a surface (see also \htmlref{gsur}{gsur}). The user might specify a name in the command-line or by picking an existing surface with the ''s'' key.
1834
1835If the surface is supposed to be meshed with unstructured triangles (element type tr3u or tr6u) it is sufficient to select all lines with the ``l'' key (lowercase ``L''). This can be done either in the ``all''-mode (press ``a'') or ``individual''-mode (press ``i'') which is default. Then generate the surface by pressing the ''g'' key. Such surfaces allow holes in it. If the surface is not plane it will need to reference an embedded NURBS surface (see ''\htmlref{nurs}{nurs}'') or a shape (see ''\htmlref{shpe}{shpe}''). Despite it is quite an exception it should be noted here that this kind of mesh might be extruded in the 3rd dimension by using the ''\htmlref{swep}{swep}'' command to generate penta elements for the cfd solver.
1836
1837For the definition of a regular meshable surface three to five edges must be
1838defined. To create a surface move the mouse pointer over the first line of the
1839first edge and select it with the ''1'' key (number ``one''). If more than one
1840line is necessary to define the first edge select the following ones one after
1841the other with the ''1'' key. Each marked line is listed in the mother
1842konsole. If all lines of the first edge are selected select the lines of the
1843second edge by pressing the ''2'' key, then the third and eventually the
1844fourth and fifth. The last selected line must match the first. All lines
1845defining an edge will create a combined line (see \htmlref{lcmb}{lcmb}) and
1846this combined line will show up in the definition of the surface. Then
1847generate the surface by pressing the ''g'' key and you might continue with the
1848next surface. By default the interior of the surface is defined according to
1849Coons \cite{Coons} which is a blended function. But it can also follow an
1850embedded NURBS-surface or a shape. To relate a surface to an existing NURBS
1851surface select another surface which already uses the desired NURBS with the
1852''S'' key (uppercase) or to reference the shape with the ``h'' key. Then
1853select the target-surface with ``s''. The target surface is converted to a
1854NURBS surface which is necessary to be meshable with unstructured triangles
1855(tr3u, tr6u) and to be used to generate tet elements. The selected shape or nurbs will stay selected until cleared with 'c'. In case the NURBS or shape in question is not related to a surface it is necessary to use ''\htmlref{qshp}{qshp}'' to select first the NURBS or shape and then the surface which should reference them.
1856
1857An existing surface might be completly redefined without destroying the definition of related bodies or other geometries. After selecting a surface with the ``s'' key the referenced lines might be replaced by selecting new ones. The previous selected lines are not longer referenced.
1858
1859Replace assignments by the blended function with the ''b'' key. To quit the command use the ''q'' key or use ''u'' to undo the last action.
1860
1861It is also possible to measure distances between two pixels on the screen. Just press the key ''w'' on the positions of the two pixels. The distance is calculated in the scale of the displayed geometry.
1862
1863\subsection{\label{qtxt}qtxt}
1864\begin{verbatim}
1865   'qtxt'  RETURN 'g'|'a'|'i'|'b'|'p'|'m'|'n'|'v'|'f'|'d'|'s'|'q'
1866\end{verbatim}
1867This keyword is used to move node-attached texts (showing node-number and value, see figure \ref{qtxtp}) at certain positions in the drawing area or to manipulate them otherwhise. They are created with the key ``g'' while the mouse-pointer is over the node to which it should be attached. Attention: They are only visible after the command ''\htmlref{plus}{plus} nt all'' was used (but they are immediatelly visible when the the commands ''\htmlref{qenq}{qenq}'' or ''\htmlref{qadd}{qadd}'' were used instead of ``qtxt''). To move a text pick it at the lower-left corner with the key 'p' and place it with the key 'm' in the new location. To move it back to its node use 'b'. Delete them with 'd'. The node-nr and the value in the text can be switched on and off with the 'n' and 'v' key. The 'f' key will toggle the format of the value between ``int'', ``float'' and ``exponent''. See the command ''\htmlref{font}{font}'' on how to change the font-size. See ``\htmlref{txt}{txt}'' for the batch mode command. Texts attached with ``txt'' can be switched on and off with the 't' key and placed at a leading or trailing position with the 's' key.
1868
1869To catch more than one entity with one stroke, type 'a' (all) before and create a rectangular picking area by pressing two times the 'r' key. Both strokes define opposite corners of the rectangle. To catch only the entity which is closest to the user type 'i' before.
1870
1871\begin{figure}[h]
1872\epsfig{file=qtxt.eps,width=12cm}
1873\caption{\label{qtxtp}qtxt: Node attached texts at two locations, one with node-nr and value in exp-form and one just with his value in floating point form. The font with gives biggest numbers was used.}
1874\end{figure}
1875
1876\subsection{\label{quit}quit}
1877\begin{verbatim}
1878   'quit'
1879\end{verbatim}
1880This keyword is used to terminate the program without save.
1881
1882\subsection{\label{read}read}
1883\begin{verbatim}
1884   'read' [<geo-file> ['add']]|
1885          [<ccx-file> 'inp' ['add'|'ext'|'nom'|'new']]|
1886          [<openFoam-file> 'foam' ['add'|'ext'|'nom']]|
1887       [<result-file(frd)> ['add'|'ext'|'nom']|[<setname>]]|
1888          [<stl-file> ['add'|'ext'|'nom']]|
1889          [<list-file> '-n'|'-e'<column>]|
1890          [<text-file> 'stack']|
1891          [<edge-file> 'edg']|
1892          [<netgen-file> 'ng' ['add'|'ext'|'nom'|'ndsb']]|
1893          [<pixel-file> [<zoom>]|[<x_zoom> <y_zoom>]]
1894\end{verbatim}
1895This keyword is used to read files or commands from a file. Most commands can be read from a file but not all of them. In general all basic commands to create geometry are understood and up to now this is the only way to read pre defined geometry during run-time. To read commands from a file like \htmlref{pnt}{pnt}, \htmlref{line}{line}, \htmlref{node}{node}, or \htmlref{seta}{seta} and so on, type\\\\read geo-file\\\\this will eventually replace entities if their names were already in use. To prevent this, type\\\\read geo-file add\\\\this forces the program to change the names which are already in use to unused ones. Therefore no existing geometry will be overwritten. It is advisable to name command files which contain more than the basic geometry commands with a different name extention as '.fbd' since a subsequent 'save' would overwrite the command file with a file which contains just the basic geometry commands (it is a common practice to use '.fbl' instead).
1896
1897If an ccx-input-file with loads, boundary-conditions and sets is read with a command like\\\\read ccx-file inp\\\\then the loads and boundary-conditions are stored in automatically created sets which start with a leading '+'. For example the ccx command '*BOUNDARY' will trigger the creation of the set '+bou'. The ccx sets are stored in cgx sets of the same name. The load-values are stored in Datasets.
1898
1899The option ``nom'' (no-mesh) can be used to speed up the reading of frd or inp formatted files like:\\\\read ccx-file inp nom\\\\and/or\\\\read result-file nom\\\\This option suppresses the reading of nodes and elements and makes sense if the mesh exists and only the set-definitions and loads or results should be read.
1900
1901If the parameter ''add'' is used,\\\\read ccx-file inp add\\\\ then existing node- or element-numbers are not overwritten and the program choses new numbers. If the ccx-input-file ends with ``.inp'' the parameter ``inp'' might be omitted.
1902
1903An openFoam file \cite{OpenFOAM} can be read in a similar way\\\\read CaseDirName foam\\\\as an ccx input file. Sets will be created if defined in the openFoam file. Results can be used for mapping purposes. For further details see ``\htmlref{How to map loads}{How to map loads}'' in the appendix.
1904
1905The user might read a result-file in frd format during runtime. If a mesh exists and should not be overwritten just add the parameter ``add''\\\\read result-file add\\\\this forces the program to change the numbers which are already in use to unused ones. Existing datasets will be extended by the new node-numbers and their data. The option ``ext'' \\\\read result-file ext\\\\will also extend the existing datasets but in this case the nodes and elements are updated (modified). If no parameter follows then existing nodes and elements are updated and the new datasets will be appended to existing ones. Since the dependency checks are time consuming the user might scip them by using the 'ne' parameter. Then the existing mesh is deleted before the new one is read:\\\\read result-file new\\\\
1906
1907It is also possible to read files written in the result format (.frd) during runtime only to define sets of nodes or elements without changing the definitions of them. The command\\\\read result-file setname\\\\will create a set of the name setname and all nodes and elements listed in the file mesh.frd will be added to that set. But this will NOT create or modify the nodes and elements. All nodes and elements must exist and will not be changed.
1908
1909In case a file written in an un-common format should be evaluated the user may read the file into the cgx stack memory:\\\\read textfile stack\\\\ Then the user may loop over the stack using ``\htmlref{while}{while}'' and ``\htmlref{valu}{valu}'' to read and evaluate each record. Extracted data can be stored in new datasets (see ``\htmlref{ds}{ds}'' and ``\htmlref{node}{node}''). An example can be found in ``\htmlref{User File Parser}{User File Parser}''.
1910
1911An ascii stl file can be read with \\\\read file.stl\\\\ The file stores just triangles which will be interpreted as unconnected triangle elements. The nodes of this mesh can be merged (``\htmlref{merg}{merg}'') and the resulting connected elements can be used as a basis for a tet mesh (see ``\htmlref{mesh}{mesh}'' and ``\htmlref{mids}{mids}'').
1912
1913If a file with the numbers of nodes or elements is not available in the result format (.frd) then a so called list-file could be read instead. In such a file either numbers of nodes or elements can be defined. The numbers found in a specified column is interpreted as a node- or element-number. If ''-n'' is specified the numbers are interpreted as nodes and if ''-e'' is specified the numbers are interpreted as elements. For example\\\\read list-file -e3\\\\will define a set storing names of elements from the third column of file list-file.txt. The created set-name is always the name of the file.\\\\
1914
1915\textbf{NETGEN Import}\\\\
1916In case NETGEN is used for meshing then the edges which are generated by NETGEN can be included for modifications;\\\\read edge-file edg\\\\will create beam elements based on the defined edges. When the modifications are done, the beam elements can be exported in the NETGEN-edge format with the ''send setname stl'' command and used for meshing in netgen (see also ''\htmlref{How to deal with CAD-geometry}{How to deal with CAD-geometry}''). The netgen mesh can be imported with
1917\begin{verbatim}
1918read netgen-file ng
1919\end{verbatim}
1920If the NETGEN (.vol) file contains solid elements, all shells and beams are only used to define surface sets of nodes and faces (+set\verb_<_nr\verb_>_). The shell elements and beams are deleted by default. If you want to be more selective about the elements imported from netgen, you use the keyword ndsb (NoDeleteShellsAndBeams).
1921\begin{verbatim}
1922read myfile.vol ng ndsb
1923\end{verbatim}
1924This keyword forces all the netgen elements to be imported. Be aware that the imported NETGEN element types (1D, 2D and 3D elements) are distributed in various sets for further operations (as well as being contained in set 'all'). For instance the set '+typ11' will contain all elements of type 11 (2-node beams). Please see ''\htmlref{Element Types}{Element Types}'' for a key to the element numbers.\\\\
1925
1926If a pixel-file in xwd-format is available it can be included as a background-picture. The user can then create geometry based on this picture:\\\\read pixelfile 2 4\\\\here the picture will be scaled by a factor of ``2'' in x- and ``4'' in y-direction. Delete it with ''\htmlref{del}{del} pic''. The picture can not be modified in cgx. Only scaling during reading (with either a global factor or separate scaling in x- and y-direction) is supported. Other modifications have to be made with external software.
1927
1928The command parameters are writen to the ''\htmlref{stack}{stack}''.
1929
1930\subsection{\label{rep}rep}
1931\begin{verbatim}
1932   'rep' <set>
1933\end{verbatim}
1934This keyword is used to refresh entities of a certain set. This is done automatically but with one exception: The rendering of the interior definition of surfaces must be triggered manually with this command. The rendered surfaces can be displayed with ''\htmlref{plot}{plot}'' or  ''\htmlref{plus}{plus}'' using the type ''si''.
1935
1936\subsection{\label{rnam}rnam}
1937\begin{verbatim}
1938   'rnam' <set> <set>
1939\end{verbatim}
1940This keyword is used to rename a set.
1941
1942\subsection{\label{rot}rot}
1943\begin{verbatim}
1944   'rot' ['n' <set>|'nodenr'] |
1945         [['u'|'d'|'r'|'l'|'c' <angle>]|->
1946          ['x'|'-x'|'y'|'-y'|'z'|'-z']]
1947\end{verbatim}
1948This keyword is used to rotate the view-direction to the model. For example\\\\rot u 10\\\\will rotate the view-direction 10 degrees upwards. The meaning of the other letters is down d, right r, left l, clockwise c. The remaining letters will rotate the view into a pre-defined direction. For example the user will look in x direction after the command\\\\rot x\\\\and against the x direction with the command\\\\rot -x\\\\and so on.
1949
1950The parameter 'n' is used to rotate the model in a way that the viewing direction is in normal direction at the location of a given node. Either a node-nr or a set with a node can be given:\\\\rot n nodeset\\\\Nevertheless the node might be obscured by other parts of the model. This can be checked with the ''\htmlref{test}{test}'' command.
1951
1952\subsection{\label{save}save}
1953\begin{verbatim}
1954   'save'
1955\end{verbatim}
1956This keyword is used to save the geometry (if any) to a file named as the input file but with the extension .fbd. If a file with that name exists already, then this file will be saved with the new file extension .fbb as a backup.
1957
1958\subsection{\label{scal}scal}
1959\begin{verbatim}
1960   'scal' ['s'|'v'|'d'] [<value>]
1961\end{verbatim}
1962This keyword is used to scale the graphic presentation of values but no values of entities. The scaling of the value itself can be done with the command ''\htmlref{ds}{ds}''. For example the command\\\\scal s 0.5\\\\will scale the range of values presented in the color plot by a factor of 0.5. The command\\\\scal v 5.\\\\will scale the length of vectors by a factor of 5. The command\\\\scal d 2.\\\\will scale the deformed shape by a factor of 2. Without a value it restores the default value. See also ''\htmlref{Toggle Vector-Plot}{Toggle Vector-Plot}'', ''\htmlref{Toggle Add-Displacement}{Toggle Add-Displacement}'', ''\htmlref{Datasets}{Datasets}''.
1963
1964\subsection{\label{send}send}
1965\begin{verbatim}
1966  'send' 'init'|
1967         <set> 'fbd' ['c','e','f']| ->
1968               'stl'| ->
1969               'abq'|'ans'|'ast'|'dar'|'frd'|'gmp'|->
1970               'lst'|'nas'|'ng'|'pat'|'tcg' <RETURN>|
1971               ['bin']|['dbin']|
1972               ['ds'<nr>[+] [e<nr>[','|'-'<nr>]..]]|
1973               ['tmf']|
1974               ['sta' <refspeed>]|
1975               ['crp' <timefact> <refspeed> <writefreq>]|
1976               ['comp']|
1977               ['mpc' [[<rotation>|'v'<node> <v1> <v2> <v3> ]|
1978                                  ['n'<node>]]]|
1979               ['names']|
1980               ['raw']|
1981               ['spc' <dofs(1-6|t|p)> <value>]| ->
1982                 [<dofs(1-6|t|p)> 'ds'<nr> e<nr>]| ->
1983                 ['nor' <fac1> [<fac2> <fac3>]]| ->
1984                 ['nor' 'ds'<nr> 'e'<nr>]|
1985               ['spcf' <dofs(1-6|t|p)> <value>]| ->
1986                 [<dofs(1-6|t|p)> 'ds'<nr> 'e'<nr>]| ->
1987               ['slide' 'c'|'s'|'rx'| ->
1988                 'ry'|'rz'|'tx'|'ty'|'tz']|
1989               ['pres' [<value>]|['ds'<nr> 'e'<nr>] [+|-] ]|
1990               ['film' [[n<nodnr>][<temp>]|->
1991                     [[['ds'<nr>]|[sq<dsnr>-<dsnr>]] 'e'<nr>]->
1992                 [[<coeff>]|->
1993                 [['ds'<nr>]|[sq<dsnr>-<dsnr>] 'e'<nr>]] [+|-] ]|
1994               ['rad' [[<temp>|[cr<temp>]|['ds'<nr> 'e'<nr>]] ->
1995                 [[<emis>|['ds'<nr> 'e'<nr>]] [+|-] ]|
1996               ['dflux' [[<load>]|['ds'<nr> 'e'<nr>]] [+|-] ]|
1997               ['mflow' [[<load>]|['ds'<nr> 'e'<nr>]] [+|-] ]|
1998               ['cflux' <load>]|
1999               ['force' <f1> <f2> <f3>]|
2000               ['quadlin']|
2001               ['sur' [+|-] ]
2002  'send' <set> 'dolfyn' [<type> <set>]
2003  'send' <set> ['duns'|'isaac'] [[<type>|'periodic'] <set>]
2004  'send' <set> ['foam'] [<type> <set>] | ->
2005               ['cyclic' <set> <set> 'tx'|'ty'|'tz'|'rx'|'ry'|'rz'|
2006               'cx'|'cy'|'cz'|<vx,vy,vz>]
2007  'send' <dep-set> <indep-set> 'nas'|'abq'|'ans' ['cycmpc'|'cycmpcf' ->
2008    'px'|'py'|'pz'|'tx'|'ty'|'tz'| ->
2009    'rx'|'ry'|'rz'|'cx'|'cy'|'cz'<+-segments> 'c'|'u'<NR>]| ->
2010    ['areampc' <dofs('t'|'p'|'1-6')> 'c'|'u'<Nr>]|'f'<value> ->
2011    ['areampc' 'slide']| ->
2012    ['areampc' 'presfit' ['s'<value>]]| ->
2013    ['gap' <vx> <vy> <vz> <tol>]
2014\end{verbatim}
2015This keyword is used to send data to the file-system. In certain cases the written file-name contains given parameters to make them unique which is convenient when the user writes several files of the same type. But on the other hand this makes it sometimes hard to know in advance how the file would be named. Therefore the send command writes the file-name to the stack from which the user can derive the name if the ''\htmlref{stack}{stack}'' was activated.
2016
2017The following formats are known (but not all options for all formats are fully supported so far); The geometry-format (fbd)\\\\send set fbd\\\\or\\\\send set fbd c\\\\will complete the set downwards before writing.
2018
2019Usually the point coordinates are written in exponential format but with option 'f' after 'fbd' the point coordinates will be written in long float (double) format:\\\\send set fbd f\\\\Useful when otherwhise a '0.' is not exactly zero. The command \\\\send set fbd e\\\\will write all model-edges as small lines running from node to node. A special case of a command file is written with\\\\send init\\\\named init.fbl which stores status variables (also written at the end of geometry files). This can be used in a second or later session by reading it with the ''\htmlref{read}{read}'' command:\\\\read init.fbl\\\\The user might use the ''\htmlref{menu}{menu}'' command to define two command lines for the writing and reading of the init file to a certain location. With this approach a certain orientation of the model can be quickly stored and restored.
2020
2021A surface description with triangles (stl)can be written:\\\\send all stl\\\\This triangles are based on elements which were created by meshing surfaces or by automatically triangulated element-faces of all types of supported elements. If be2 elements are included in the mesh (meshed lines) a so called edge file for NETGEN will also be created if stl is written. NETGEN provides also a stand-alone mesher called ng\_vol. The mesher can be found in the netgen sub-directory nglib. As for the stl-format triangles can be written for this mesher with:\\\\send set ng\\\\It has the advantage that the triangles are directly used to define tetras and not as with stl are only used to define the outer shape of the body.
2022
2023The following mesh-related formats are known: Femview and CADfix (frd), Nastran (nas), Abaqus (abq), Ansys (ans), CodeAster (ast), Samcef (sam), Darwin (dar), patran (pat, only sets), gagemap (gmp, only sets) and Tochnog (tcg) but only ccx (Abaqus) is fully supported. Good support is also provided for ansys, darwin and nastran. If no further parameter follows then just the definition of the nodes and elements will be written:\\\\send all abq\\\\will write the mesh in the format used by Abaqus and the CalculiX solver. If the parameter ''ds'' is provided followed by the dataset-nr\\\\send set abq ds1\\\\then the values stored in Dataset 1 are written. For 'frd'-format the 'ds' parameter w/o any further values forces cgx to write all datasets but w/o the internally calculated ones:\\\\send all frd ds\\\\If a ``+'' sign appears at the end of the 'ds' parameter\\\\send all frd ds+\\\\or \\\\send all frd ds1+\\\\then also the internally calculated values like vMises-stress are written. Additionally the entities might be specified with the 'e' parameter followed by the numbers to write. The numbers have to be separated by a ',' sign or in case of a range by a '-' sign:\\\\send all frd ds1 e9,25-30\\\\ The ``bin'' parameter has the same meaning as the ``ds'' parameter but in this case the result is written in the single precision binary form of the frd-format ('dbin' writes formally double precision but the data are single precision). It writes always all datasets. In case data should be written for the crack analysis tool Darwin\\\\send all dar ds\\\\will write all datasets. Since Darwin changed the format from version 7.1 on, it is possible to change the format with the parameter 'v7.1' as the last parameter. If the set is of the ordered type and includes nodes (see ``\htmlref{qseq}{qseq}'') then the data are written in tabular form for use in a 1D crack-prop Darwin-analysis.
2024
2025In certain circumstances the user needs an easy solver independent format to write node- and element numbers. This is provided by the ``lst'' parameter:\\\\send setname lst\\\\will write the node- and element-numbers in lines of seven space separated rows.
2026
2027Missing lower entities (nodes, points, lines etc.)  will be added to the set before the set is written if the parameter ''comp'' follows. For example geometry like bodies\\\\send set fbd comp\\\\will be extended by surfaces, lines and points or\\\\send set frd comp\\\\will include all nodes used by the elements to the set elem and will then write the file.\\\\
2028The parameter ``quadlin'' forces the conversion from second order elements into single order elements were each element is subdivided into 8 single order elements. This takes place during writing and will not change the current state of the mesh in cgx. Up to now it is only available for the abq format:\\\\send all abq quadlin\\\\
2029If the parameter ''tmf'' follows the definition of a solver format\\\\send set abq tmf\\\\then the mesh plus all temperatures with the necessary solver context for tmf calculations is written. If the parameter ''sta'' follows \\\\send set abq sta 2900.\\\\then the mesh plus all temperatures with the necessary solver context for a static calculations is written. Here the value for ''speed'' is a reference value for eventual numerical values in the TEXT-Block of the Datasets in the result file (frd-file, see ''\htmlref{Nodal Results Block}{Nodal Results Block}''). A scaling factor will be determined based on the reference value (here a ref.speed of 2900.) and the individual TEXT-Block values (factor = speed**2 / refspeed**2). This factor is used in *AMPLITUDE commands which will also be written and will be used to scale static loads which are referenced in the *STEP data. If the parameter ''crp'' follows \\\\send set abq crp 1. 2900. 1\\\\then the mesh plus all temperatures with the necessary solver context for creep calculations is written. Here the value for ''timefact'' scales the time-values of the Datasets, ''speed'' is a reference value for scaling static loads (see option ``sta'') and writefreq limits the output to the result-file.\\\\
2030If the parameter ''names'' follows the solver-type then just the element- or node-numbers are written. This is useful for defining sets for the solvers. The command\\\\send steel abq names\\\\will write the node and element numbers included in ''steel''. This file could be used to define a set for material assignments, boundary conditions or loads. If all sets should be written at once, use:\\\\send all abq nam\\\\When using ``abq'' together with ``names'' or ``sur'' a set is defined before the data lines. If this is not desired then the ``raw'' parameter has to be used instead of ``names'' or ``sur'':
2031\\\\send nodeset abq raw\\
2032
2033It is also possible to define and send some constraints to the file system. To constrain degrees of freedom (dof) of selected nodes use the parameter ''spc'' in combination with the numbers of the constrained dofs and optionally a forced deflection. For example:\\\\send hinge abq spc 123\\\\will constrain the translational degrees of freedom of the nodes in set ''hinge''. Or\\\\send hinge abq spc 12356\\\\will leave just one rotational degree of freedom unconstrained. And\\\\send move-nodes abq spc 1 0.1\\\\will move the nodes in set move-nodes by 0.1 in direction 1.\\\\send move-nodes abq spc 1 ds1 e1\\\\will use the values from dataset-nr 1 and the entity-nr 1 for the forced displacement in direction 1 and\\\\send move-nodes abq spc nor 0.1\\\\ will force the nodes included in set move-nodes by 0.1 in the normal direction (normal to the element-faces). The components of the vectors at the node positions can be scaled individually (fac1-3)). The vector length can also be read from an entity of a dataset:\\\\send move-nodes abq spc nor ds1 e4\\\\ A subsequent calculation with ccx will move the mesh accordingly. After solving the deformed mesh can be used as a new mesh for further calculations. With this procedure geometric variations are possible without manipulating the geometry (morphing).
2034
2035For the ccx cfd finite volumen method there is a ``spc'' function available which works on faces instead on nodes (see *BOUNDARYF in the ccx manual).\\\\send Inlet abq spcf 123\\\\The degees of freedom 123 define velocities and not deflections. Its called ``spcf'' and works otherwhise accordingly to the ``spc'' command. For the *INITIAL CONDITIONS keyword of ccx you write the data for example with\\\\send all abq ds123\\\\were ds123 is the dataset-nr shown in front of datasets (not loadcases) in cgx. It can be a vector (velocity) or scalar (pressure, temperature).
2036
2037The parameter ''slide'' in combination with one additional parameter will create equations that force the selected nodes to move only in a plane. If the additional parameter ''s'' is specified then the specified nodes will be attached to their element faces. All nodes of the affected element-faces have to be selected. For example you type:\\\\send sur abq slide s\\\\and this should attach the node with the node-nr. 1 to a plane parallel to the surface of the corresponding element-face. This element uses the node 1, 2, 3, 4, 5, 6, 7 and 8 where 1, 2, 3 and 4 are on the surface of the mesh. The program will detect this element face and constrain the node only then if the nodes 2, 3 and 4 were also included in the set ''sur''! The detected elements or faces of volume-elements will be assigned to the set. So it is possible to check the detected elements. Instead of providing a set with the necessary nodes, you might instead provide a set with shell-elements or/and faces of volume-elements. The nodes will be derived from them. In most cases this is the most convenient way.
2038
2039A special case which works probably only in ccx (abaqus might give wrong results) is triggered by the ``c'' parameter. It behaves as for the ``s'' parameter but works for cycsym calcs:\\\\send cycsur abq slide c\\\\ A new set with new nodes will be created with the name ``\verb_<_set\verb_>_\_COPY'' which has to be used in the cycsym definition in ccx instead of ``\verb_<_set\verb_>_''. In addition equations are specified which connect the new nodes with the original ones in the normal direction of the element faces. In this way two faces used in a cyclic symmetry connection will slide at each other instead of beeing glued in all directions.
2040
2041If nodes should slide radially to the y axis then use ''ry'':\\\\send sur abq slide ry\\\\ or use ''ty'' if the nodes should move only tangential to the y axis. In both cases the axial movement is still permitted.
2042
2043The parameter ''sur'' will write the surfaces of the mesh either in abaqus-format for the *SURFACE command or in frd-format as shell elements. For example\\\\send top abq sur\\\\will write the elements in set top together with the face-nr (Important: Only free surfaces of the mesh are regarded, internal faces are unknown and can not be identified). The front- or rear side of the face (pos or neg) is selected with the '+' or '-' parameter:\\\\send surset abq sur -\\\\will write all surfaces in set surset in abaqus format and all surfaces which have a potentially negative side will be written in that manner.
2044
2045The parameter ''pres'' is used to assign pressure values to element faces. For example\\\\send surf abq pres 0.05\\\\will assign the pressure value 0.05 to all element-faces in set surf. If a dataset with nodal values is available it is also possible to use this values instead of using a uniform value for all faces. For example\\\\send surf abq pres lc1 e1\\\\will specify the dataset-nr 1 and the entity-nr 1 to be used instead of a uniform value. The front- or rear side of the face (pos or neg) is selected with the '+' or '-' parameter (it has to be the last parameter).
2046
2047The parameter ''film'' is used to assign free-stream temperatures and thermal heat coefficients to element faces. It works similar to the ''pres'' option. For example\\\\send surf abq film 1200. 0.5\\\\will assign the film temperature of 1200 and the coefficient 0.5 to all element-faces in set surf. If datasets with nodal values are available it is also possible to use this values instead of using a uniform value for all faces. For example\\\\send surf abq film ds1 e1 0.5\\\\will specify the dataset-nr 1 and the entity-nr 1 to be used for the temperature instead of a uniform value, or \\\\send surf abq film ds1 e1 lc1 e2\\\\will specify also the dataset-nr 1 with the entity-nr 2 to be used for the film-coefficients instead of a uniform value. The front- or rear side of the face (pos or neg) is selected with the '+' or '-' parameter (it has to be the last parameter). Instead of a single dataset-nr a range can be given:\\\\send surf abq film sq1-9 e1 sq1-9 e2\\\\and instead of giving e determined value for the temperature a node of a thermal network can be specified with: \\\\send surf abq film n1277 ds1 e1\\\\
2048
2049The parameter ''rad'' is used to assign a sink temperatures and the emissivity to element faces. It works similar to the ''pres'' option. For example\\\\send surf abq rad 1200. 0.5\\\\will assign the sink temperature of 1200 and the emissivity 0.5 to all element-faces in set surf. If datasets with nodal values are available it is also possible to use this values instead of using a uniform value for all faces. For example\\\\send surf abq rad lc1 e1 1200.\\\\will specify the dataset-nr 1 and the entity-nr 1 to be used for the temperature instead of a uniform value, or \\\\send surf abq rad lc1 e1 lc1 e2\\\\will specify also the dataset-nr 1 with the entity-nr 2 to be used for the emissivity instead of a uniform value. The front- or rear side of the face (pos or neg) is selected with the '+' or '-' parameter (it has to be the last parameter). If cavity radiation should be used then the command has to use the 'cr' attribute:\\\\send surf abq rad cr1000. 0.7\\\\Here 1000. is either the sink temperature, or, if the ccx parameter ENVNODE is active (*RADIATE,ENVNODE), the sink node.
2050
2051The parameters ''dflux'' and ''mflow'' are used to assign an energy stream or a mass-flow to element faces. They work similar to the ''pres'' option. For example\\\\send surf abq dflux 0.5\\\\will assign the flux of 0.5 to all element-faces in set surf. And\\\\send surf abq mflow 0.5\\\\will assign the mass-flow of 0.5 to all element-faces of the given set. If a dataset with nodal values is available it is also possible to use this values instead of using a uniform value for all faces. For example\\\\send surf abq dflux lc1 e1\\\\will specify the dataset-nr 1 and the entity-nr 1 to be used instead of a uniform value. The front- or rear side of the face (pos or neg) is selected with the '+' or '-' parameter (it has to be the last parameter).
2052
2053The parameter ''cflux'' is used to assign an energy stream to nodes. For example\\\\send surf abq cflux 0.5\\\\will assign the flux of 0.5 to all nodes in set surf.
2054
2055The parameter ''force'' is used to assign force values to nodes. For example\\\\send nodes abq force 1. 20. 0.\\\\will assign the specified forces to all nodes of the set nodes.
2056
2057The parameter ''mpc'' is either used to create input for the user-subroutine umpc which forces all nodes from ''set'' to rotate by an average value specified with ''rotation'' around the vector v, or to create a rigid body. In case of a rotation the value has to be in degree were 90 degree is orthogonal. For example\\\\send nodes abq mpc 4. 1. 0. 0.\\\\will assign the nodes of the set ''nodes'' to the user-subroutine umpc and will force them to rotate by 4 degree around the x-axis. Two files are produced. One file with the equation and the reference node has to be included in the model-definition-section and the boundary-file in the step section. The reference node is used to apply the pre-defined rotation but can also be used to apply a moment by using the *CLOAD command. The number of the reference node is always one above the highest node number in the current mesh. You may use ``\htmlref{node}{node}'' to increase the last node number in the model.
2058
2059In case of a rigid-body request there are two other parameters in combination with ``mpc'' available. The rotation value is replaced by a nodenr of an independent node which will be created based on either provided coordinates\\\\send nodes nas mpc v4711 1. 0. 0.\\\\or by averaged coordinates based on the specified set (here ``nodes'') which are interpreted as dependent nodes:\\\\send nodes nas mpc n4711\\\\In both cases an RBE2 (nastran) or *RIGID BODY,REF NODE=nodenr (ccx,abq) element will be created which connect all this nodes. See also ''\htmlref{asgn}{asgn}'' on how to predefine a thermal expansion coefficient ``alfa'' for this element (only nastran).\\\\
2060
2061Another useful method are so called ''cyclic symmetry'' equations. These equations are used when just a section of a rotation-symmetric part like a disk is modeled. These equations force the two cutting planes of such a section to move exactly equal in the cylindrical system. If the coordinate system of the displacements for the solver is rectangular (xyz) then the syntax is:\\\\send dep indep nas cycmpc rx12 c1\\\\Here ''dep'' is the set containing the nodes of the dependent side. These nodes will be replaced by the solver with the independent nodes from the set ''indep''. In this case the equations will be written in the nastran format ''nas'' (in nastran called MPC). The parameter ''rx12'' defines the displacement system as rectangular ''r'', the rotational axis is ''x'' and the ''12'' defines the number of segments in 360 deg, therefore the angle of the segment is 360 deg /12. Attention: The sign of the number-of-segments must be negative if the angle between the independent side and the dependent side is negative. When the nr-of-segments is omitted the value is calculated individual for each node. The ''c'' triggers the correction of the position of the dependent nodes to a position defined by the angle of the segment (highly recommended), ''u'' would prevent the correction. The ''1'' will be the identifier for the equations if the format is nas (nastran). In case the format would be ans (ansys) then the ''1'' would be the number of the first equation. No number is required for abq (abaqus and calculix). If the coordinate system of the displacements is cylindrical (rtz) then the example would be:\\\\send dep indep nas cycmpc cx12 c1\\\\Only the ''r'' from ''rx12'' is changed to ''c''. A thermal connection is created with:\\\\send dep indep nas cycmpc tx c\\\\The thermal connection is triggered by the ''t'', a pressure connection with ``p''. See comments above for the single parameters. In case of the ccx cfd finite volumen method the syntax is similar but only the function name itself differs:\\\\send dep indep abq cycmpcf rx12 c1\\\\The function name for cfd elements is 'cycmpcf' instead of 'cycmpc'.
2062
2063In addition it is possible to ''glue'' independent meshes together. For this purpose the dependent nodes are tied to independent elements by equations. Choose the finer mesh for the dependent side. The equations are based on the shape-functions of the element types. For example\\\\send dep indep nas areampc 123 c1\\\\will connect the nodes in the set dep to element-faces described by nodes included in the set indep. The set dep must contain all nodes which should be ''glued'' and the set indep should contain all nodes of the elements surfaces to which the dep nodes should be glued. The numbers ''123'' are the degrees of freedom which will be connected (''t'' will create a thermal connection, ``p'' a press-fit connection). The ''c'' triggers the correction of the position of the dependent nodes to a position on the surface of the independent elements (highly recommended and default), ''u'' would prevent the correction, ``f'' forces the dependent node away from the independent face. Of course the mesh has to be written after the use of such a command, otherwhise the corrected node positions would not be regarded and the equations would lead to increased stiffness and decreased accuracy. The ''1'' will be the identifier for the equations if the format is nas (nastran). In case the format would be ans (ansys) then the ''1'' would be the number of the first equation. No number is required for abq (abaqus and calculix), see also ''\htmlref{How to connect independent meshes}{How to connect independent meshes}''.
2064
2065There is also the ''slide'' option in combination with the ''areampc'' option: For example if the mesh of a turbine-blade and a disk should be connected with each other in a simpler but realistic way then a sliding condition between this parts can be established. The command:\\\\send dep indep abq areampc slide\\\\will connect the nodes in the set dep to element-faces described by nodes included in the set indep but only in the direction perpendicular to a plane defined by nodes of the dep-set. Therefore all dep-nodes and all indep-nodes must lie in the same plane and will slide in the same plane!\\
2066
2067Another case is considered with the ''presfit'' option in combination with the ''areampc'' option. For example if a cylindrical press fit should be simulated then a forced displacement between the two intersecting surfaces is necessary. This forces the dependent nodes to move to the independent face. Two modes are available:\\\\send dep indep abq areampc presfit f\\\\simulates sticking friction and with the option s\\\\send dep indep abq areampc presfit s\\\\works for sliding conditions. The user might request a certain value for the press fit if the overlapping of the mesh do not represent the necessary distance:\\\\send dep indep abq areampc presfit s0.06\\\\will move the dep-nodes 0.06 in the normal direction of the independent faces (works also with option f). Additional nodes are generated and can be used to request the reaction forces on the dependent nodes. They are stored in a set named N<dep-set-name><ind-set-name>. Two files are produced. The one with the equations has to be included in the model-definition-section and the boundary-file in the step section.
2068
2069To define so called ''gap'' elements and related control-commands: These elements will connect parts if they are closer as a certain distance. For example if the distance is zero (contact). The command:\\\\send dep indep abq gap 1. 0. 0.\\\\will connect the nodes in the set dep and indep with gap-elements but only if they match each other in the direction 1.\\\\
2070
2071Special cases are the cfd-solvers Duns, Isaac and OpenFoam. The boundary patches are an integral part of the mesh. So it is necessary to specify all boundary patches when writing the mesh. Which means that all free surfaces of the mesh must be specified. This is an example for OpenFoam:\\\\send all foam cyclic cyc1 cyc2 cx patch in patch out wall wall\\\\will write the so called polyMesh description to the file-system. After the send command the set (all) with the mesh is specified, then the format (foam), then cyclic boundary conditions (cyclic cyc1 cyc2 cx) between set cyc1 and cyc2 of the axi-symmetric case around x (cx), then boundary conditions of type patch for set ''in'' (patch in), then boundary conditions of type patch for set ''out'' (patch out) and boundary conditions of type wall for set ''wall'' (wall wall).
2072
2073The symmetric boundary-conditions (base-type: cyclic) can be axi-symmetric (c) around x,y,z or rectangular (r) in direction of x,y,z. Only for OpenFoam and in the rectangular (Cartesian) case also a vector pointing in the direction of the symmetry can be specified (ie: 1.,1.,0.)
2074
2075For dolfyn, duns and isaac the same syntax has to be used:\\\\send all duns viscous-wall profil subsonic-inflow in subsonic-outflow out\\\\send all isaac WALL profil FARFIELD far EXTRAPOLATE out\\\\send all dolfyn INLE ingang OUTL uitgang ... etc. The parameters like 'viscous-wall', 'FARFIELD', 'INLE' are specific for the single cfd tools and are described in the documentation of these programs. The cgx knows a certain BC called 'periodic' to glue the left side to the right side of a mesh and so creating a periodic mesh (cascade). One set for each pair of lines or lcmb's (2D) or surfaces (3D) must be used. For example:\\\\send all duns viscous-wall profil subsonic-inflow in subsonic-outflow out periodic cyc1 periodic cyc2 periodic cyc3
2076
2077The cgx is able to write parts of the solver input file when certain values are defined (see ''\htmlref{valu}{valu}''). If they are defined the boundary conditions and gas properties will be written to the ``duns.bou'' or ``isaac.dat'' file. The following values can be provided for that purpose:
2078\begin{verbatim}
2079WallTemperature
2080temperature   // inlet
2081pressure  // outlet
2082stagnation-pressure  // inlet
2083stagnation-temperature  // inlet
2084u-velocity  // inlet
2085v-velocity  // inlet
2086ini-velocity-factor  // scales the initial velocity field
2087\end{verbatim}
2088The user has to add missing commands before he can use the input files.
2089
2090The initial flowfield values 'MACH' and 'ALPHA' for isaac is scaled by 'ini-velocity-factor' for better convergence if a 'JET' boundary condition is specified. In this case the inlet conditions are defined using the 'JET' conditions (the necessary inlet static pressure is calculated by cgx if the stagnation values are present). Further information is available in ''\htmlref{Remarks Concerning Duns and Isaac}{Remarks Concerning Duns and Isaac}''. The velocity of the initial flowfield for duns is also scaled by 'ini-velocity-factor'.
2091
2092Be aware that duns and isaac use block meshes which must be created using the set 'all'. So the use of set 'all' together with the parameter 'block' is mandatory when the block structure is needed! Nevertheless the user might only assign an element type to a sub set so that only a part of the geometry will be meshed (see ''\htmlref{mesh}{mesh}'').
2093
2094
2095\subsection{\label{seqa}seqa}
2096\begin{verbatim}
2097   'seqa' <seq> ['nod'|'pnt' <name> .. <=>]|
2098                ['afte'|'befo' <name> 'nod'|'pnt' <name>.. <=>]|
2099                ['end' 'nod'|'pnt' <name> .. <=>]
2100
2101\end{verbatim}
2102This keyword is used to create or redefine a set marked as a sequential set. This set is used for spline definitions (see \htmlref{line}{line}). With the command \htmlref{qlin}{qlin} such a sequential set is automatically created. To begin such a set type for example:\\\\SEQA  Q003     PNT  P004 P005 P006 P00M P00N\\\\The program will create or overwrite the set Q003. The command will continue in the next line if the sign ''='' is found:\\\\SEQA  Q003     PNT  P004 P005 P006 =\\                    P007 P008 P009\\\\The parameter AFTE will insert additional points after the first specified point in the existing sequence. The parameter BEFO will insert additional points before the first specified point and the parameter END will add additional points to a sequence.
2103
2104\subsection{\label{seqc}seqc}
2105\begin{verbatim}
2106   'seqc' <set>
2107\end{verbatim}
2108Converts an ``\htmlref{lcmb}{lcmb} into a spline. The lcmb will be deleted (not the referenced lines) and keeps the sum of divisions but sets the bias to 1.
2109
2110\subsection{\label{seql}seql}
2111\begin{verbatim}
2112   'seql' <set> <nr>
2113\end{verbatim}
2114Makes splines from all sorts of lines. The nr of new created inner points is defined by the parameter nr. Also existing splines will be redefined.
2115
2116\subsection{\label{seta}seta}
2117\begin{verbatim}
2118   'seta' <set> ['!'|'n'|'e'|'p'|'l'|'c'|'s'|'b'|'L'|'S'|'v'|'se'| ->
2119                'sh'|'ld'<div> <[\]name|*chars* ..>] |
2120                ['n'|'e' <name> '-' <name> <steps>]
2121
2122\end{verbatim}
2123This keyword is used to create or redefine a set (see also \htmlref{qadd}{qadd}). All entities like points or bodies and so on must be stored at least in one set to be reachable. The set ''all'' is created automatically at startup and will be open (see \htmlref{seto}{seto}) all the time unless explicitly closed (see \htmlref{setc}{setc}). To add points to the set ''dummy'' type:\\\\seta dummy p p1 p2\\\\This will add the points p1 and p2 to the set dummy. The following entities are known:
2124
2125Nodes n, Elements e, Faces f, Points p, Lines l, Surfaces s, Bodies b, Nurb Lines L, Nurb Surfaces S, Values v, names of other sets se or shapes sh. If the entity of the specified type does not exits a set of that name is assumed and if existing then all it's entities of the specified type are appended:\\\\seta set1 n set2\\\\will append only the nodes in set2 to set1. If the type 'se' is used then the full content of set2 is appended. Wildcards (*) can be used to search for setnames of a certain expression.
2126
2127The program will automatically determine the type of the entities if not specified, but then the names must be unique. More than one name can be specified. A minus sign between two numbers of nodes or elements specifies a range of entities with steps of ''steps'':\\\\seta set1 n 1001 - 1100 12\\\\
2128
2129If the '!' sign is specified instead of a setname then the program generates automatically sets with system defined setnames and stores entities in it. This can be used is to separate independent meshes and line-loops. The single independent meshes are then referenced by new setnames, for example:\\\\seta ! all\\\\will determine all separate (disjunct) meshes in set ``all'' and store them in sets called +CF\verb_<_nr\verb_>_. Figure \ref{seta}) illustrates this function. Other entities have to be specified as an additional argument after the '!' sign:\\\\seta ! l all\\\\will determine all separate (disjunct) line-loops. Other entieties are not implemented so far.
2130
2131Values ''\htmlref{valu}{valu}'' can be used as arguments. It is necessary to mask a value with a leading '\textbackslash{}' In cases were the value should not be replaces by its content:\\\\seta set v \textbackslash{}val1 \textbackslash{}val2\\\\will not substitute the val1 and val2 but add the values itself to the set.
2132
2133Lines with a division higher than specified with\\\\
2134seta setname ld50\\\\
2135can be stored in a set. Here all lines with a division above 50 are stored in setname.
2136
2137
2138\begin{figure}[h]
2139\epsfig{file=seta.eps,width=12cm}
2140\caption{\label{engine}All disjunct meshes in the jet-engine are successive coloured}
2141\end{figure}
2142
2143\subsection{\label{setc}setc}
2144\begin{verbatim}
2145   'setc' [<set>]
2146\end{verbatim}
2147This keyword is used to close an open set. Without parameter setc will close the at last opened set.
2148
2149\subsection{\label{sete}sete}
2150\begin{verbatim}
2151   'sete' <set> 'n'|'e'|'p'|'l'|'c'|'s'|'b'|'S'|'L'|'se'|'sh' ->
2152                'max'|'min'|'strict'
2153\end{verbatim}
2154This keyword is used to enquire other sets which have entities in common or which have an identical content. Example:\\\\sete blade p min\\\\ searches for sets who store at least the same points as "blade" (always the set "all"). The option ``max'' searches for sets whose entities are completely included in the specified set. The option ``strict'' searches for identical sets regarding the specified type of entity.
2155
2156\subsection{\label{seti}seti}
2157\begin{verbatim}
2158   'seti' <set> 'n'|'e'|'p'|'l'|'c'|'s'|'b'|'S'|'L'|'se'|'sh' ->
2159          <set> <set>..
2160\end{verbatim}
2161This keyword is used to generate an intersection of certain sets (what do the specified sets have in common of the specified entity-type?). Example:\\\\seti intersectSet p set1 set2 set3\\\\generates a set intersectSet with points which are stored in each of the sets set1 set2 set3.
2162
2163\subsection{\label{seto}seto}
2164\begin{verbatim}
2165   'seto' [<set>]
2166\end{verbatim}
2167This keyword is used to enquire open sets:\\\\
2168seto\\\\
2169Or to mark a set as open:\\\\
2170seto set\\\\
2171All newly defined or redefined entities will be members of all open sets. See \htmlref{setc}{setc} how to close an open set.
2172
2173\subsection{\label{setr}setr}
2174\begin{verbatim}
2175   'setr' <set> 'n'|'e'|'p'|'l'|'la'|'ll'|'ls'|'ln'| ->
2176                's'|'b'|'L'|'S'|'v'|'se'|'sh'
2177                <name|*chars*> <name|*chars*> ..
2178\end{verbatim}
2179This keyword is used to remove entities from a set (see also \htmlref{qrem}{qrem}. The entity will not be deleted. It is just not longer a member of that set. To remove entities from the set dummy type:\\\\setr dummy p p1 p2\\\\This will remove the points p1 and p2 from the set. The following entities are known: Nodes n, Elements e, Points p, Lines l, Surfaces s, Bodies b, Nurb Lines L, Nurb Surfaces S, Values v, other sets se and shapes sh. The program will automatically determine the type of the entities if not specified, but then the names must be unique. Wildcards (*) can be used to search for setnames of a certain expression.
2180
2181The type of lines can be given with the second digit:\\\\setr dummy ls
2182all\\\\This will remove only splines from set 'dummy'. Known are 'l' straight
2183lines, 'a' arcs, 'n' nurbs, 's' splines.
2184
2185\subsection{\label{shpe}shpe}
2186\begin{verbatim}
2187   'shpe' <name|!> ['pln' <P1> <P2> <P3>] |
2188                   ['cyl' <P1> <P2> <R1>] |
2189                   ['con' <P1> <P2> <R1> <R2>] |
2190                   ['tor' <P1> <R1> <P2> <R2>] |
2191                   ['sph'] <P1> <R1>]
2192\end{verbatim}
2193This keyword is used to create a shape which can be used to define the interior of surfaces or to be used as a target for projections (see \htmlref{proj}{proj}) or to split entities (see \htmlref{split}{split}). REMARK: So far only the plane shape can be used for all kinds of projections and splitting. The other types can not be used for splitting and only the normal projection is implemented for them.
2194
2195A plane shape is defined with the parameter ``pln'' followed by the names of three points:\\\\shpe H001 pln P1 P2 P3\\\\A cylinder can be defined by\\\\shpe H001 cyl P1 P2 10.5\\\\were 10.5 is the radius. A cone can be defined by\\\\shpe H001 con P1 P2 10.5 2.\\\\were 10.5 is the radius at point P1 and 2. at point P2. A torus can be defined by\\\\shpe H001 tor P1 10.5 P2 2.0\\\\were 10.5 is the radius at point P1. Point P2 lies on the torus axis and 2.0 is the radius of the tube. A sphere can be defined by\\\\shpe H001 sph P1 10.5\\\\were 10.5 is the radius at point P1. If automatic name generation is desired, then use ''\verb_!_'' instead of a name. See also ``\htmlref{qshp}{qshp}'' for the mouse controlled definition of shapes. It should be mentioned that all shapes are actually nurbs and that internally all nurbs which are used by surfaces are actually referenced by a shape as an interface.
2196
2197Remark: A further shape type exists which links a nurbs to a surface definition. Such a shape will be automatically generated when a nurbs is finished by the ``END'' parameter using the same name as the nurbs. This shapes will not be written to a file but using the \htmlref{prnt}{prnt} command will list them:\\\\shpe N001 NURS N001
2198
2199\begin{figure}[h]
2200\epsfig{file=shpe.eps,width=12cm}
2201\caption{\label{The shape types and its symbols together with an illustrating mesh}The shape types and its symbols together with an illustrating mesh}
2202\end{figure}
2203
2204\subsection{\label{split}split}
2205\begin{verbatim}
2206   'split' [<set> <set>] |[<line> <point>]
2207\end{verbatim}
2208This keyword is used to split lines, surfaces and elements stored in a set by surfaces or shapes given in a second set. A single line can be splitted by a given point (see ``\htmlref{pnt}{pnt}'' how to generate a point on a line).
2209
2210The split command will not generate new surfaces but it will create points along the intersection between the surfaces in set1 and the surfaces (or shapes or faces) in set2.
2211
2212So far only tetraeder elements (in set1) can be splitted by surfaces, faces or shapes (in set2). The splitted tetraeder elements will be replaced by new tetraeder- and pentaeder elements. It can be used to cut out parts of the mesh to be either used directly in other models or which can be remeshed with tets based on an stl-file derived from them. Or it can be used to apply damages to a structure. See ``\htmlref{How to map loads}{How to map loads}'' in the appendix on how to map loads to the new created nodes from the original mesh.
2213
2214\subsection{\label{stack}stack}
2215\begin{verbatim}
2216   'stack' on|off|free
2217\end{verbatim}
2218Several functions which return values to the user might now place them also on a software-stack (used by \htmlref{area}{area},\htmlref{dist}{dist},\htmlref{ds}{ds},\htmlref{enq}{enq},\htmlref{gtol}{gtol},\htmlref{length}{length},\htmlref{prnt}{prnt},\htmlref{valu}{valu},\htmlref{volu}{volu} and many more). The ``\htmlref{valu}{valu}'' command is able to read this values from the stack and place them in variables. The 'free' parameter will empty the stack but does not open or close it.
2219
2220See also ``\htmlref{if}{if}'' and ``\htmlref{while}{while}''.
2221
2222\subsection{\label{steps}steps}
2223\begin{verbatim}
2224   'steps' <value>
2225\end{verbatim}
2226This keyword is used to define the number of different colors in the post-processor mode. The default is 21. The user might use this command to store his personal setting in the ``.cgx'' file in his home directory. See also ''\htmlref{max}{max}''.
2227
2228\subsection{\label{stop}stop}
2229\begin{verbatim}
2230   'stop'
2231\end{verbatim}
2232Stops reading of the actual command file and gives the user the opportunity to work interactively until he resumes reading with ``\htmlref{cont}{cont}''. It is possible to update the command file after the stop command.
2233
2234\subsection{\label{surf}surf}
2235\begin{verbatim}
2236   'surf' <name(char<9)>|'!' [<set>]|->
2237               <line|lcmb> <line|lcmb> <line|lcmb> <line|lcmb>
2238\end{verbatim}
2239This keyword is used to define or redefine a surface. It is a more convenient way to define a surface than the command \htmlref{gsur}{gsur}. Either individual lines or a set of lines can be specified. To be meshable with structured elements it requires 3, 4 or 5 edges (lines or lcmbs). To be meshable with tr3u or tr6u it requires either to be plane or to reference a shape or nurbs which can not be provided with this command (see ``\htmlref{gsur}{gsur}'' which allows the assignment of a shape or ``\htmlref{qshp}{qshp}'' which allows the assignment of a shape or nurbs to a surface). The mouse controlled way to define surfaces is to use the command \htmlref{qsur}{qsur}.
2240If the name of the surface should be automatically generated, then just type ''\verb_!_'' instead of a name.
2241
2242\subsection{\label{swep}swep}
2243\begin{verbatim}
2244  'swep' <set> <set> ['scal' <fx> <fy> <fz> <P0>|<div> [a] ]|
2245                     ['tra' <dx> <dy> <dz> <div> [a] ]|
2246                     ['rot' <p1> <p2> <alfa> <div> [a|&n] ]|
2247                     ['rot' 'x'|'y'|'z' <alfa> <div> [a|&n] ]|
2248                     ['rot' <p1> 'x'|'y'|'z' <alfa> <div> [a|&n] ]|
2249                     ['rad' <p1> <p2> <dr> <div> [a] ]|
2250                     ['rad' 'x'|'y'|'z'|'p'<pnt> <dr> <div> [a] ]|
2251                     ['rad' <p1> 'x'|'y'|'z' <dr> <div> [a] ]|
2252                     ['nor' <dr> <div> [a] ]|
2253                     ['mir' <P1> <P2> <div> [a] ]|
2254                     ['mir' 'x'|'y'|'z' <div> [a] ]|
2255                     ['mir' <P1> 'x'|'y'|'z' <div> [a] ]
2256\end{verbatim}
2257This keyword is used to sweep entities into the next higher dimension. Sweeping a point will create a line, sweeping a line will create a surface and sweeping a surface will create a body. Shell elements will be expanded into Volume elements. The 'div' parameter defines how much elements will be created in the sweep direction. Existing results will be applied to the new nodes. Important: The ``\htmlref{trfm}{trfm}'' command must be used after the sweep operation and not before.
2258
2259At first a copy of the first set (see \htmlref{seta}{seta} and \htmlref{copy}{copy}) will be created. The copy of the master-set is included in the second set. Then the connecting lines and surfaces are created and at last the bodies. The divisions of the new lines between set1 and set2 is specified with the parameter ''div'' or the default is used. Existing sets are extended by the copied entities if the last parameter includes the character ``a'' (append). Rotational sweeped lines create nurbs related surfaces if the last parameter includes the character ``n''. Several transformations are available. For example scal creates a scaled copy, the scaling factors fx, fy, fz could be chosen independently,\\\\
2260swep part1 part2 scal 2 \\
2261swep part1 part2 scal 1 1 2 P0\\\\
2262tra will create a copy and will move it away by the vector dx, dy, dz and the optional parameter 'a' will assign the new entities to sets were the mother of each entity is included,\\\\
2263swep set1 set2 tra 10 20 30 a\\\\
2264nurbs related surfaces will be created if ``a'' is followed by ``n'' or a sole ``n'' is used in a rotational sweep,\\\\
2265swep set1 set2 rot 10 20 30 an\\\\
2266rot will create a copy and will move it around the axis defined by the points p1 and p2 by 'alfa' degrees (the connecting lines will be of type arc below 180 deg, above a spline),\\\\
2267swep set1 set2 rot p0 px 20.\\\\
2268or the axis of rotation is given by specifying one of the basis coordinate axes:
2269swep set1 set2 rot x 20.\\\\
2270or just one point and a vector of rotation is given by specifying one of the basis coordinate axes:
2271swep set1 set2 rot p1 x 20.\\\\
2272rad will create a copy and uses the same transformation options as 'rot' or will create a spherical section if just a single point is defined,\\\\
2273swep sphere1 sphere2 rad pP0 10.\\\\
2274nor will create a copy and will move it away in the direction of the averaged normal local vector. This requires information about the normal direction for each entity. Nodes will use associated element faces and geometric entities will use the element faces, surfaces or shapes which must be stored with them in the set1. It should be noted that faces from volume elements stored in set1 will be used to generate shell elements. This elements will then be extruded in normal direction into 3D elements,\\\\
2275swep set1 set2 nor 1.2 6 a\\\\
2276mir will create a mirrored copy. The mirror-plane is placed normal to the direction running from P1 to P2 and placed at P2,\\\\
2277swep section1 section2 mir p1 p2\\\\
2278as with 'rot and 'rad' additional transformation options are available:\\\\
2279swep section1 section2 mir P1 x\\\\
2280places the mirror at P1 with its normal direction in 'x' direction\\\\
2281swep section1 section2 mir x\\\\
2282Places the mirror in the origin with its normal direction in 'x' direction.
2283
2284\subsection{\label{sys}sys}
2285\begin{verbatim}
2286   'sys' <shell-command parameters>
2287\end{verbatim}
2288This keyword is used to issue any shell command (unix or dos shell). For example to move files created by the 'send' command to certain file names or/and locations and to start the analysis. On certain platforms cgx will not wait for the completition of the command if the '\&' key was provided as the last argument of the command. Otherwhise cgx waits until the command was completed.\\\\
2289WARNING:\\\\
2290If you use CGX to open an untrusted .fbd file downloaded form the internet, it might delete all your files or do whatever it wants as long as cgx has the necessary rights.
2291Even an honest  but carelessly written .fbd file could be destructive if it makes incorrect assumptions about the locations of files. For example, by clearing the contents of a directory to clean up, it might delete important files on someone else's computer.
2292
2293Therefore before you open a foreign command file (usually with the ending .fbd or .fbl) scan for "sys" and evaluate the command line.
2294
2295To activate the ``sys'' command permanently add
2296\begin{verbatim}
2297  'allow_sys'
2298\end{verbatim}
2299in your configuration file ('.cgx' in your home directory).
2300
2301\subsection{\label{test}test}
2302\begin{verbatim}
2303   'test' ['d'|'v'|'n'|'e'|'p'|'l'|'c'|'s'|'b'|->
2304           'S'|'L'|'se'|'sh' <entity-name>]
2305          ['i' <set1> <set2>]
2306          ['o' <set>|<node>]
2307\end{verbatim}
2308A boolean opperation. Usually tests the existence of a given entity (watch the '\verb_\_' which prevents the value beeing replaced by its content!):\\\\test v \verb_\_value\\\\And it checks if at least one node included in set1 is inside the elements included in set2:\\\\test i nodeset elemset\\\\Or it tests the observability 'o' of a certain node under the given orientation of the model. The node can be given as a member of a set or directly by its node-nr. The command returns TRUE or FALSE and writes it to the ''\htmlref{stack}{stack}''.
2309
2310\subsection{\label{thrs}thrs}
2311\begin{verbatim}
2312   'thrs' <value> 'h'|'l'|'o' ['t']
2313\end{verbatim}
2314Compiles all nodes which values of the actual dataset are above (h) or below (l) the given value (stored in set '+THRS'). The related elements are collected as well. All unconnected element-clusters from that set together with their related nodes are stored in separate sets (+grp1..+grpn). This sets are displayed in a certain mode were only the edges are visible (see ``\htmlref{view}{view}''):\\\\thrs 600. h\\\\
2315When the parameter 't' is used the local nodes referencing maximum or minimum values are stored in additional separate sets (+grpN1..+grpNn) and displayed in addition:\\\\thrs 600. h t\\\\This node attached texts can be manipulated with ``\htmlref{qtxt}{qtxt}''
2316
2317To display the full model again in the filled mode:\\\\thrs o\\\\
2318
2319\subsection{\label{tra}tra}
2320\begin{verbatim}
2321   'tra' 'f'|'u'|'d'|'l'|'r' <relative-distance>
2322\end{verbatim}
2323This keyword is used to move the model in the window. For example\\\\tra u .1\\\\will move the model 0.1 times the model dimensions upwards. The meaning of the other letters is forward f, down d, right r, left l.
2324
2325\subsection{\label{trfm}trfm}
2326\begin{verbatim}
2327   'trfm' 'rec'|'cyl' ['x'|'y'|'z'] ->
2328        [<first-Dataset-Nr> [<last-Dataset-Nr>]]
2329\end{verbatim}
2330Changes dataset entities from one coordinate system to another. The option
2331'cyl' transforms the global results to cylindrical and 'rec' from cylindrical
2332to global cartesian. In both cases the axis of the cylindrical system must be
2333provided. Optionally the first and the last dataset of a range of a unique
2334type can be specified. The current dataset is selected if no dataset is
2335specified. In any case a dataset parameter will be created which stores the type of the applied transformation. It will show up after re-selecting the dataset in the menu entry 'dataset-\verb_>_entity-\verb_>_parameter' and will be written by the ''\htmlref{send}{send}'' command if the frd-format is used (see also ''\htmlref{ds}{ds}'' and \htmlref{Parameter Header Record}{Parameter Header Record}).
2336
2337The transformation into the cylindrical system takes place in a way that tensors and vectors are transformed into a new local cartesian system which is alligned with the directions of a true cylindrical system. In this way the dimensions are maintained (for example the displacement in angular direction is not transformed into an angle but into a displacement in tangential direction).
2338
2339The transformation from a cylindrical into a cartesian system works accordingly. Therefore successive "cyl" and "rec" commands are permitted. This command sequence can be used to rotate the model with its datasets in the correct way which means that all results are also rotated.
2340
2341Example; Choose the desired dataset (and an entity) with the menu or the 'ds' command. Then type\\\\
2342
2343trfm cyl z\\\\
2344
2345to transform the dataset from a rectangular system into a cylindrical around the global z axis. Type\\\\
2346
2347trfm rec z\\\\
2348
2349to transform from cylindrical (which exists after the first call) to
2350the rectangular system (which re-produces the original values).
2351
2352To transform several datasets of the same type (!) at once:\\\\
2353
2354trfm rec z 1 10000\\\\
2355
2356This command transforms all datasets starting with the first to the last if the
2357last dataset has a number below 10001 (but only the ones of the same type as
2358the 1st!).
2359
2360\subsection{\label{txt}txt}
2361\begin{verbatim}
2362  'txt' <set>|<node> ['n'|&'v'|&'e'|&'t'|&'f'|&'i'|&'s'] ->
2363        [<x> <y>] [<"text">]
2364\end{verbatim}
2365Creates node-attached texts (showing node-number, value and eventually an user defined text, see figure
2366\ref{qtxtp}) in the drawing area. The optional dx,dy values define an offset (normalized coordinates) to the actual node position on the screen where the origin is in the lower left corner:\\\\txt nodset 0.1 0.2\\\\
2367The texts are attached to the related nodes if no offset is specified;\\\\txt nodset\\\\or to a single node:\\\\txt nodenr\\\\
2368The texts comprise of a node-nr and the value and an user defined text. The user defined text must be given in quotation marks:\\\\txt nodenr ``hello wold''\\\\
2369The node-nr can be deselected by providing the key 'n', the value can be deselected with key 'v' and the text with key 't'. The exponential format of the value can be selected with 'e', float with 'f' and integer with 'i':\\\\txt nodset fn\\\\deselects the node-nr and selects the float format for the value.\\\\txt nodset n 0.1 0.5\\\\deselects the node-nr and places the value at a certain position. Per default the user defined text is placed at the trailing position. The key 's' shifts it to the front.
2370The texts are generated but not displayed. The commands ''\htmlref{plot}{plot}'' and ''\htmlref{plus}{plus}'' can be used for that purpose. The texts can be deleted with ''\htmlref{del}{del}''. See also ''\htmlref{qtxt}{qtxt}'' for the interactive command.
2371
2372\subsection{\label{typs}typs}
2373\begin{verbatim}
2374   'typs'
2375\end{verbatim}
2376The result format (frd) allows to assign element types. One element can only belong to one type. This command creates sets and stores all elements of a certain type in a certain set called ``+typ[nr]''. See ``\htmlref{Element Definition Block}{Element Definition Block}'' how this applies to the result format (frd).
2377
2378\subsection{\label{ucut}ucut}
2379\begin{verbatim}
2380   'ucut'
2381\end{verbatim}
2382If a section through the mesh was created with the "\htmlref{cut}{cut}" or "\htmlref{qcut}{qcut}" command then this command will delete the cut and display the un-cutted structure.
2383
2384\subsection{\label{ulin}ulin}
2385\begin{verbatim}
2386   'ulin' <string>
2387\end{verbatim}
2388This keyword is used to define an underline. This commend will show up in the
2389menu area of the main window below the file name. The filename can be overwritten with "\htmlref{capt}{capt}".
2390
2391\subsection{\label{val}val}
2392\begin{verbatim}
2393   'val' (The parameters are the same as for 'valu'->
2394          except that masking with '\' is supported)
2395\end{verbatim}
2396This command has the same functionallity and accepts the same parameters as ``\htmlref{valu}{valu}'' with one exception: The cgx command parser will substitute the parameters by previously defined values before the 'val' command itself is executed. The substitution can be suppressed with a leading '\textbackslash{}' before a parameter. During execution it will again scan each parameter for expressions which match the name of a value and will replace the parameter by the content of the value. This way two steps of substitutions of nested values are possible:
2397\begin{verbatim}
2398valu a b
2399valu b 1.
2400# with valu only one substitution step is performed:
2401valu c a
2402prnt v c
2403-> b
2404# with val two substitution steps are performed:
2405del v \c
2406val c a
2407prnt v c
2408-> 1.
2409\end{verbatim}
2410Please study the example ''\htmlref{Data storage in a user dataset}{Data storage in a user dataset}''.
2411
2412\subsection{\label{valu}valu}
2413\begin{verbatim}
2414   'valu' <[!]name> [['push' [<splitkey>]]|['pop' [nr]]] | ->
2415         [<value> ['?' [<\"string\">]] | ->
2416         ['&'|'*'|'/'|'+'|'-'|'abs'|'max'|'min'|'pow'|->
2417          'sqr'|'sin'|'cos'|'tan'|'asin'|'acos'|'atan'| ->
2418          'int'|'float'|'exp' [name|<const> name|<const>]] ]
2419\end{verbatim}
2420A command which generates an entity (called value) which basically stores a string of characters. Most characters are valid but no white-spaces are accepted from the command line. The command allows simple calculations and string operations. It is able to read from- and write to the stack.
2421The cgx command parser will scan each parameter of each command for expressions which match the name of a value and will replace the parameter by the content of the value. After that the command is executed. For example\\\\pnt P0 xvalue 0. 0.\\\\uses the value 'xvalue'. If the user has previously defined the value with:\\\\valu xvalue 1.24\\\\then the command-parser will replace 'xvalue' by '1.24' in the 'pnt' command.
2422
2423For convenience this general substitution works for all commands except the 'valu' command! The command parser will not scan the parameters of the 'valu' command and will not substitute them. Instead this substitution is performed by the 'valu' command itself. The command does not treat its own name as a value and will not substitute it by previously defined values. Therefore nested levels of 'values' are not solved. However if this functionallity is needed the ``\htmlref{val}{val}'' command can be used.\\\\
2424
2425ATTENTION: To suppress the substitution of a certain value it has to be masked by a leading '\textbackslash{}'. For example the command:\\\\del v \textbackslash{}xvalue\\\\will delete the value xvalue itself. Without the masking xvalue would be replaced by its content '1.24' and since no value named '1.24' exists, nothing will happen.
2426
2427The content of a value can be defined by the user\\\\valu arg1 1.24\\\\or derived from the stack previously filled by a command\\\\valu arg1 pop\\\\if the ''\htmlref{stack}{stack}'' was activated. A certain number on the stack can be addressed with\\\\valu arg1 pop 2\\\\were the '2' means that 2 successive 'pops' are executed. In this way the second value on the stack can be loaded at once.
2428
2429Values can be added to a set\\\\ seta valset v all\\\\and can then be deleted by zapping ``\htmlref{zap}{zap}'' the set storing the values.
2430
2431Values can be written to the stack when the 'push' parameter is used:\\\\valu arg1 push\\\\A white-space separated string stored in a ``\htmlref{valu}{valu}'' will be written to the stack in separate sub-strings. With this method single pieces of a white-space separated string can be splitted and stored in separate values:\\\\stack on\\\\opens the stack\\\\valu complicatedString push\\\\splits the string stored in 'complicatedString' and writes the single pieces to the stack. The command \\\\valu subString pop 3\\\\loads the 3rd substring into the varible 'subString'. Other splitting characters can be used when this character follows the push key-word:\\\\valu string push .\\\\splits the string at each occurence of ``.'' and writes the pieces to the stack.
2432
2433The command is able to perform simple calculations like\\\\valu result * arg1 arg2\\\\'result' will store the product from 'arg1' and 'arg2'. The two arguments arg1 and arg2 may be other 'values' or constant numbers. That means that a direct multiplication of two numbers or a value with a number is possible. During the calulation the strings are converted to double precision numbers and the result is stored as a string representing an exponential number. The 'int', 'float' and 'exp' convert between integer, floating point and exponential format:\\\\valu result int result\\\\
2434
2435The '\verb_?_' operator is used to request user input:\\\\valu string \verb_?_ ``user message:''\\\\The command presents the user message (between apostrophes) and waits for user input. Please type into the terminal. Usually this requires to leave the graphics window and click into the terminal from which cgx was started.
2436
2437The '\verb_&_' operator is used to concatenate two strings:\\\\valu string3 \verb_&_ string1 string2\\\\The string1 and string2 might be values or constant strings.
2438
2439The values are written to the fbd file unless its name starts with a '\verb_!_'.
2440
2441WARNING: With that command the meaning of a command can be changed and unintended effects are possible. For example if the character 'l' is used as a value it is not longer possible to use the 'plot' command to display lines without masking the 'l'.
2442
2443The sections ''\htmlref{How to write values to a file}{How to write values to a file}'', ''\htmlref{How to process results}{How to process results}'' and ''\htmlref{How to generate a user dataset}{How to generate a user dataset}'' explain more about the use of values.
2444
2445\subsection{\label{view}view}
2446\begin{verbatim}
2447   'view' 'fill'|'line'|'point' [<value>]|'cl' 'off'|
2448          'edge' [<value>|'off']|'elem' ['off']|'surf'|'volu'|
2449          'front'|'back'|'vec' ['off']|'disp' ['off']|
2450          'bg' ['w'|'k']|'sh' ['off']|'ill' ['off']|'rul' ['off'|<string>]
2451\end{verbatim}
2452Command to control the graphic output. This command is intended for batch-mode. See also ''\htmlref{Viewing}{Viewing}'' for the menu controlled functions.
2453\begin{itemize}
2454\item ''cl'' The command line is shown in the graphic's window.
2455\item ''fill'' Element-faces are filled
2456\item ''line'' Elements are displayed as fireframes
2457\item ''point'' Element-edges are displayed as points with a pixel-width of 'value'
2458\item ''edge'' triggers the display of the model edges with a pixel-width of 'value'
2459\item ''elem'' triggers the display of the element edges. They are deselected with the additional parameter ''off''.
2460\item ''surf'' and ''volu'' are used to display the structure either only by it's outer skin (surf) or by drawing all elements (volu). \item ''front'' and ''back'' define which side of the structure should be drawn. Either the side which faces the user or the back-side. If the back-side is displayed then internal structures are visible.
2461\item ''vec'' triggers the vector mode. All vector-entities like displacements are displayed with arrows pointing in the direction of the vector and with a length proportional to the value of the vector. See ''\htmlref{Toggle Vector-Plot}{Toggle Vector-Plot}'' for a detailed description of the equivalent menu-function.
2462\item ''disp'' will show the deformed structure based on a formerly selected displacement dataset (no entity must be selected). See ''\htmlref{Toggle Add-Displacement}{Toggle Add-Displacement}'' for a detailed description of the equivalent menu-function.
2463\item ''bg'' Without second parameter toggles the background colour. The second parameter 'w' forces white while the parameter 'k' forces black as background colour.
2464\item ''sh'' Shaded results are shown. Switched off with ''off''.
2465\item ''ill'' Illuminale the backface of the elements. Switched off with ''off''.
2466\item ''rul'' triggers the display of a ruler bar. Switched off with ''off''. A string containing the unit can be given: ``view rul mm''.
2467\end{itemize}
2468
2469\subsection{\label{volu}volu}
2470\begin{verbatim}
2471   'volu' <set>
2472\end{verbatim}
2473This keyword is used to calculate the volume and the center of gravity of a set of volume-elements. If an ccx-input file with density data was read then the mass will be also calculated. If a 'dataset' is active then an averaged value is calculated.
2474
2475The command writes to the ''\htmlref{stack}{stack}''.
2476
2477\subsection{\label{while}while}
2478\begin{verbatim}
2479   'while' <value>|<const> 'eq'|'ne'|'=='|'!='|'<'|'>' <value>|<const>
2480\end{verbatim}
2481A command to compare two values ('valu' or constant numbers). If the compare is True the following commands are executed until the 'endwhile' command is found. This procedure is repeated until the compare is False.
2482\\\\while arg1 == arg2\\\\will repeat the commands between 'while' and 'endwhile' until the numerical value stored in 'arg1' is not equal to the numerical value stored in value 'arg2'. The values are locally converted to 'float' format for the numerical comparison. The 'eq' and 'ne' compare strings and should not be used for numerical values since no conversion to a common format is done. Two strings are equal if they have the same length and all characters are equal.
2483
2484See also ``\htmlref{if}{if}'', ``\htmlref{valu}{valu}'', ``\htmlref{stack}{stack}'' and ``\htmlref{How to run cgx in batch mode}{How to run cgx in batch mode}''.
2485
2486\subsection{\label{wpos}wpos}
2487\begin{verbatim}
2488   'wpos' <xp> <yp>
2489\end{verbatim}
2490Positions the window on the screen were xp and yp are the coordinates in pixel relative to the left upper corner. This command takes no effect during reading and execution of a batch file. It will be executed in the glut event loop (the glut library \cite{glut} for window management and event handling). The user might store his personal start-up location in the ``.cgx'' file in his home directory.
2491
2492\subsection{\label{wsize}wsize}
2493\begin{verbatim}
2494   'wsize' [RETURN]|'f']|[<xp> <yp>]
2495\end{verbatim}
2496Size of the window were xp and yp are the size in pixel. Without argument the size is the initial size and with the argument 'f' (fullsize) the screen resolution is used. This command takes ONLY effect during reading and execution of a batch file IF it is written in the very first line. Otherwhise it will be executed after reading of the batch file in the glut event loop (the glut library \cite{glut} for window management and event handling) which means that the program has to go into the interactive mode to take effect. The user might store his personal start-up window size in the ``.cgx'' file in his home directory.
2497
2498\subsection{\label{zap}zap}
2499\begin{verbatim}
2500   'zap'  <set>
2501\end{verbatim}
2502This keyword is used to delete all entities of a set and the set itself. All depending entities will be deleted as well.
2503
2504\subsection{\label{zoom}zoom}
2505\begin{verbatim}
2506   'zoom' [<scale>]|[<p1x> <p1y> <p2x> <p2y>]
2507\end{verbatim}
2508This keyword is used to scale the model in the window. For example\\\\zoom 2\\\\will increase the size of the representation of the model by a factor of 2. A certain region of the model can be specified with two corner points of an imaginary rectangle. The coordinates are relative to the graphic-window which has its origin at the left/lower corner and as a fraction of the edge-lengths. For example \\\\zoom 0. 0. 0.5 0.5\\\\will display the third quadrant of the window scaled by a factor of 2.
2509
2510\newpage
2511
2512\section{\label{Element Types}Element Types}
2513Node numbering of the elements and the type numbers used in the Result Format (frd-file). The solvers might use different node-numbering rules.
2514
2515\begin{picture}(90,90)(0,150)
2516%
2517\put(0,0){\epsfig{file=be2.eps,width=9cm} }
2518\put(100,0){\label{topo_be2} 2 node beam element (be2, type 11) }
2519\end{picture}
2520
2521\newpage
2522
2523\begin{picture}(90,180)(0,330)
2524%
2525\put(0,360){\epsfig{file=be3.eps,width=9cm} }
2526\put(100,330){\label{topo_be3} 3 node beam element (be3, type 12) }
2527%
2528\put(0,30){\epsfig{file=tr3.eps,width=10cm} }
2529\put(100,0){\label{topo_tr3} 3 node shell element (tr3, tr3u, type 7) }
2530\end{picture}
2531
2532\newpage
2533
2534\begin{picture}(90,180)(0,330)
2535%
2536\put(0,360){\epsfig{file=tr6.eps,width=10cm} }
2537\put(100,330){\label{topo_tr6} 6 node shell element (tr6, type 8) }
2538%
2539\put(0,30){\epsfig{file=qu4.eps,width=10cm} }
2540\put(100,0){\label{topo_qu4} 4 node shell element (qu4, type 9) }
2541\end{picture}
2542
2543\newpage
2544
2545\begin{picture}(90,180)(0,330)
2546%
2547\put(0,360){\epsfig{file=qu8.eps,width=10cm} }
2548\put(100,330){\label{topo_qu8} 8 node shell element (qu8, type 10) }
2549%
2550\put(0,30){\epsfig{file=te4.eps,width=10cm} }
2551\put(100,0){\label{topo_te4} 4 node tet element (type 3) }
2552\end{picture}
2553
2554\newpage
2555
2556\begin{picture}(90,180)(0,330)
2557%
2558\put(0,310){\epsfig{file=te10.eps,width=10cm} }
2559\put(100,280){\label{topo_te10} 10 node tet element (type 6) }
2560%
2561\put(0,30){\epsfig{file=he8.eps,width=10cm} }
2562\put(100,0){\label{topo_he8} 8 node brick element (he8, type 1) }
2563\end{picture}
2564
2565\newpage
2566
2567\begin{picture}(90,180)(0,330)
2568%
2569\put(0,360){\epsfig{file=he20.eps,width=10cm} }
2570\put(100,330){\label{topo_he20} 20 node brick element (he20, type 4) }
2571%
2572\put(0,30){\epsfig{file=pe6.eps,width=6cm} }
2573\put(100,0){\label{topo_pe6} 6 node penta element (pe6, type 2) }
2574\end{picture}
2575
2576\newpage
2577
2578\begin{picture}(90,180)(0,330)
2579%
2580\put(0,360){\epsfig{file=pe15.eps,width=6cm} }
2581\put(100,330){\label{topo_pe15} 15 node penta element (pe15, type 5) }
2582\end{picture}
2583
2584\section{\label{Result Format}Result Format}
2585Listing of the mesh- and the nodal results format. The data are stored in fixed format. Node-, element-definitions and results might be in ascii or binary coding. The ascii format is able to store element- and node-numbers up to '99999' in the short form or up to '9999999999' in the long form. An example for the short form is shown below:
2586
2587\begin{verbatim}
2588>    1Ctest             !''1C'' defines a new calc of name ''test''
2589>    1UDATE  26.01.2000 !''1U'' stores user job-informations
2590>    2C                 !''2C'' starts a block of node coordinates
2591> -1    1 0.00000E+00 0.00000E+00 0.00000E+00 ! 1. node
2592> -1    2 0.10000E+01 0.00000E+00 0.00000E+00 ! 2. node ....
2593> -3                    !end of the current block
2594>    3C                 !''3C'' starts a block of elem definitions
2595> -1    1    4    0    0!first elem, type of that elem is 4 (he20)
2596> -2    1    2    3    4   13   14   15   16    5    6    7    8 ..
2597> -2   12   17   18   19   20 !twenty nodes defining that element
2598> -1 ...
2599> -2 ...
2600> -2 ...
2601> -3                    !end of the current block
2602>    1PHID      10      !defines a parameter HID value 10
2603>  100CL101            !''100C'' starts a user defined result block
2604> -4  DISP        3    1         !Attribute Header Record (Dataset)
2605> -5  D1          1    2    1    0 !Component Def. Record  (Entity)
2606> -5  D2          1    2    2    0
2607> -5  D3          1    2    3    0
2608> -1    1 0.00000E+00 1.00000E+00 1.00000E+00  !Nodal Values
2609> -1    2 1.00000E+00 0.00000E+00 0.00000E+00
2610> -3                      !end of the current block
2611> 9999                    !end of data
2612
2613\end{verbatim}
2614The binary format applys only for data lines and the ``end of the current block'' line (-3), which is omitted.
2615All other lines are the same.
2616
2617\subsection{\label{Model Header Record}Model Header Record}
2618To access the data use ``\htmlref{prnt}{prnt} info''.
2619\begin{verbatim}
2620Purpose: Defines the name of the model
2621
2622Format:(1X,'   1','C',A6)
2623Values: KEY, CODE, NAME
2624\end{verbatim}
2625
2626\subsection{\label{User Header Record}User Header Record}
2627To access the data use ``\htmlref{prnt}{prnt} usr''.
2628To manipulate data use ``\htmlref{asgn}{asgn} usr''.
2629\begin{verbatim}
2630Purpose: Stores additional user informations regarding the job
2631         ie. user id, creation date, model informations
2632
2633Format:(1X,'   1','U',A66)
2634Values: KEY, CODE, STRING
2635\end{verbatim}
2636
2637\subsection{\label{Nodal Point Coordinate Block}Nodal Point Coordinate Block}
2638Nodes can be written with the ``\htmlref{node}{node}'' command.
2639\begin{verbatim}
2640Purpose: Defines the nodal coordinates
2641
26421. Record:
2643Format:(1X,'   2','C',18X,I12,37X,I1)
2644Values: KEY, CODE,NUMNOD, FORMAT
2645Where: KEY    = 2
2646       CODE   = C
2647       NUMNOD = Number of nodes in this block
2648       FORMAT = Format indicator
2649                0  short format
2650                1  long format
2651                2  binary format, coordinates float
2652                3  binary format, coordinates double
2653
2654Following records (ascci, FORMAT=0 | 1):
2655 Short Format:(1X,'-1',I5,3E12.5)
2656 Long Format:(1X,'-1',I10,3E12.5)
2657 Values: KEY, NODE, X,Y,Z
2658 Where: KEY    = -1
2659       NODE   = node number
2660       X..    = coordinates
2661
2662Following records (binary, FORMAT=2):
2663 Format:(int NCOMPS*float)
2664 int and float are ansi-c data-types
2665 Values:  NODE, X,Y,Z
2666 Where:
2667       NODE   = node number
2668       X..    = coordinates
2669
2670Following records (binary, FORMAT=3):
2671 Format:(int NCOMPS*double)
2672 int and double are ansi-c data-types
2673 Values:  NODE, X,Y,Z
2674 Where:
2675       NODE   = node number
2676       X..    = coordinates
2677
2678Last Record (only FORMAT=0&1 (ascii), omitted for FORMAT=2&3):
2679Format:(1X,'-3')
2680Values: KEY
2681\end{verbatim}
2682
2683\subsection{\label{Element Definition Block}Element Definition Block}
2684Elements can be written with the "\htmlref{elem}{elem}" command.
2685\begin{verbatim}
2686Purpose: Defines the topology of the elements
2687
26881. Record:
2689Format:(1X,'   3','C',18X,I12,37X,I1)
2690Values: KEY, CODE,NUMELEM, FORMAT
2691Where: KEY    = 3
2692       CODE   = C
2693       NUMELEM= Number of elements in this block
2694       FORMAT = Format indicator
2695                0  short format
2696                1  long format
2697                2  binary format
2698
2699Following records (ascci, FORMAT=0 | 1):
2700 The following block of records must be repeated for each element:
2701  The first record initializes an element definition:
2702  Short Format:(1X,'-1',I5,3I5)
2703  Long Format:(1X,'-1',I10,3I5)
2704  Values: KEY, ELEMENT, TYPE, GROUP, MATERIAL
2705 Where: KEY    = -1
2706       ELEMENT = element number
2707       TYPE   = element type, see section ''Element Types''
2708                and command ''typs''
2709       GROUP  = element group number, see command ''grps''
2710       MATERIAL= element material number, see command ''mats''.
2711
2712  Then the nodes in the correct order have to follow:
2713  Short Format:(1X,'-2',15I5)
2714  Long Format:(1X,'-2',10I10)
2715  Values: KEY,NODE,NODE,NODE,NODE, ...
2716 Where: KEY    = -2
2717       NODE   = node number
2718
2719Additional lines must follow if more nodes are used.
2720
2721Following records (binary, FORMAT=2):
2722 Format:(4*int nodes*int)
2723 int and float are ansi-c data-types
2724 Values:  ELEMENT, TYPE, GROUP, MATERIAL,NODE,NODE,NODE,NODE, ...
2725 Where:
2726       ELEMENT= element number
2727       TYPE   = element type, see section ''Element Types''
2728                and command ''typs''
2729       GROUP  = element group number, see command ''grps''
2730       MATERIAL= element material number, see command ''mats''.
2731       NODE   = node number
2732
2733
2734Last Record (only FORMAT=0 | 1 (ascii), omitted for FORMAT=2):
2735Format:(1X,'-3')
2736Values: KEY
2737\end{verbatim}
2738
2739\subsection{\label{Parameter Header Record}Parameter Header Record}
2740To access the data use ``\htmlref{prnt}{prnt} par''.
2741To manipulate data use ``\htmlref{ds}{ds}'' option r.
2742\begin{verbatim}
2743Purpose: Stores informations related to datasets.
2744         ie. bondary conditions and loads
2745         They should consist of a keyword and a value
2746
2747Format:(1X,'   1','P',A66)
2748Values: KEY, CODE, STRING
2749Where: KEY    = 1
2750       CODE   = P
2751       STRING = Keyword Value (ie: FORCE 1000.)
2752
2753\end{verbatim}
2754
2755\subsection{\label{Nodal Results Block}Nodal Results Block}
2756To access the data use ``\htmlref{ds}{ds}''. This command is also used to modify or create datasets. Values at nodes can be written with the ``\htmlref{node}{node}'' command.
2757\begin{verbatim}
2758Purpose: Stores values on node positions
2759
27601. Record:
2761Format:(1X,' 100','C',6A1,E12.5,I12,20A1,I2,I5,10A1,I2)
2762Values: KEY,CODE,SETNAME,VALUE,NUMNOD,TEXT,ICTYPE,NUMSTP,ANALYS,
2763        FORMAT
2764Where: KEY    = 100
2765       CODE   = C
2766       SETNAME= Name (not used)
2767       VALUE  = Could be frequency, time or any numerical value
2768       NUMNOD = Number of nodes in this nodal results block
2769       TEXT   = Any text
2770       ICTYPE = Analysis type
2771                0  static
2772                1  time step
2773                2  frequency
2774                3  load step
2775                4  user named
2776       NUMSTP = Step number
2777       ANALYS = Type of analysis (description)
2778       FORMAT = Format indicator
2779                0  short format
2780                1  long format
2781                2  binary format, values float
2782                3  binary format, values double
2783
27842. Record:
2785Format:(1X,I2,2X,8A1,2I5)
2786Values: KEY, NAME, NCOMPS, IRTYPE
2787Where: KEY    = -4
2788       NAME   = Dataset name to be used in the menu
2789       NCOMPS = Number of entities
2790       IRTYPE = 1  Nodal data, material independent
2791                2  Nodal data, material dependant
2792                3  Element data at nodes (not used)
2793
27943. Type of Record:
2795Format:(1X,I2,2X,8A1,5I5,8A1)
2796Values: KEY, NAME, MENU, ICTYPE, ICIND1, ICIND2, IEXIST, ICNAME
2797Where: KEY    = -5
2798       NAME   = Entity name to be used in the menu for this comp.
2799       MENU   = 1
2800       ICTYPE = Type of entity
2801                1  scalar
2802                2  vector with 3 components
2803                4  matrix
2804               12  vector with 3 amplitudes and 3 phase-angles in
2805                   degree
2806               14  tensor with 6 amplitudes and 6 phase-angles in
2807                   degree
2808       ICIND1 = sub-component index or row number
2809       ICIND2 = column number for ICTYPE=4
2810       IEXIST = 0  data are provided
2811                1  data are to be calculated by predefined
2812                   functions (not used)
2813                2  as 0 but flaged by cgx
2814       ICNAME = Name of the predefined calculation (not used)
2815                ALL  calculate the total displacement if ICTYPE=2
2816This record must be repeated for each entity.
2817
28184. Type of Record:  (not used)
2819This record will be necessary in combination with the request for
2820predefined calculations. This type of record is not allowed in
2821combination with binary coding of data.
2822Format:(1X,I2,2I5,20I3)
2823Values: KEY,IRECTY,NUMCPS,(LSTCPS(I),I=1,NUMCPS)
2824Where: KEY    = -6
2825       IRECTY = Record variant identification number
2826       NUMCPS = Number of components
2827       LSTCPS = For each variant component, the position of the
2828                corresponding component in attribute definition
2829
2830
28315. Type of Record:
2832The following records are data-records and the format is repeated
2833for each node.
2834
2835In case of material independent data
2836
2837- ascii coding:
2838Following records (ascci, FORMAT=0 | 1):
2839 Short Format:(1X,I2,I5,6E12.5)
2840 Long Format:(1X,I2,I10,6E12.5)
2841 Values: KEY, NODE, XX..
2842 Where: KEY  = -1 if its the first line of data for a given node
2843               -2 if its a continuation line
2844       NODE  = node number or blank if KEY=-2
2845       XX..  = data
2846
2847- binary coding:
2848 Following records (ascci, FORMAT=2):
2849 (int,NCOMPS*float)
2850 int and float are ansi-c data-types
2851 Following records (ascci, FORMAT=3):
2852 (int,NCOMPS*double)
2853 int, float and double are ansi-c data-types
2854 Values: NODE, XX..
2855 Where:
2856       NODE   = node number
2857       XX..   = data
2858
2859In case of material dependant data
2860REMARK: Implemented only for NMATS=1
2861- first line:
2862Short Format:(1X,I2,4I5)
2863Long Format:(1X,I2,I10,3I5)
2864Values: KEY, NODENR, NMATS
2865Where: KEY    = -1
2866       NODENR = Node number
2867       NMATS  = Number of different materials at this node(unused)
2868- second and following lines:
2869Short Format:(1X,I2,I5,6E12.5)
2870Long Format:(1X,I2,I10,6E12.5)
2871Values: KEY, MAT, XX, YY, ZZ, XY, YZ, ZX ..
2872Where: KEY    = -2
2873       MAT    = material-property-number if KEY=-2 (unused)
2874       XX..   = data
2875
2876
2877Last Record (only FORMAT=0 | 1 (ascii), omitted for FORMAT=2):
2878Format:(1X,'-3')
2879Values: KEY
2880
2881\end{verbatim}
2882
2883\section{\label{Pre-defined Calculations}Pre-defined Calculations}
2884Listing of the automatically calculated additional results.
2885
2886\subsection{\label{Von Mises Equivalent Stress}Von Mises Equivalent Stress}
2887Entity name: Mises\\
2888\[  \sigma_{vM} = \frac{1}{\sqrt{2}} \sqrt{(\sigma_{x}-\sigma_{y})^{2}+(\sigma_{y}-\sigma_{z})^{2}+(\sigma_{z}-\sigma_{x})^{2}+6\tau_{yz}^{2}+6\tau_{zx}^{2}+6\tau_{xy}^{2}} \]
2889
2890\subsection{\label{Von Mises Equivalent Strain}Von Mises Equivalent Strain}
2891Entity name: Mises\\
2892\[  \epsilon_{vM} = 2/3 * \frac{1}{\sqrt{2}} \sqrt{(\epsilon_{x}-\epsilon_{y})^{2}+(\epsilon_{y}-\epsilon_{z})^{2}+(\epsilon_{z}-\epsilon_{x})^{2}+6\epsilon_{yz}^{2}+6\epsilon_{zx}^{2}+6\epsilon_{xy}^{2}} \]
2893
2894\subsection{\label{Principal Stresses}Principal Stresses}
2895Entity names: PS1, PS2, PS3, worstPS\\\\
2896The principal stresses $\sigma$ are named PS1, PS2, PS3. From the three principal stresses $\sigma$ the absolute maximum value will be calculated and named worstPS. For example if a node has the three values 100, 0 and -110 MPa then -110 MPa would be shown. The three principal stresses $\sigma_{1}$ $\sigma_{2}$ $\sigma_{3}$ are derived from the following equation:
2897\[
2898\left [
2899\begin{array}{ccc}
2900\sigma_{xx}-\lambda & \sigma_{xy} & \sigma_{xz}\\
2901\sigma_{yx} & \sigma_{yy}-\lambda & \sigma_{yz}\\
2902\sigma_{zx} & \sigma_{zy} & \sigma_{zz}-\lambda
2903\end{array}
2904\right ]
2905\left [
2906\begin{array}{c}
2907nx\\
2908ny\\
2909nz
2910\end{array}
2911\right ]
2912=
2913\left [
2914\begin{array}{c}
29150\\
29160\\
29170
2918\end{array}
2919\right ]
2920\]
2921They are given by the three roots of the equation (stress tensor is symmetric: $\sigma_{xy}$ = $\sigma_{yx}$ etc.):
2922\[ \sigma^3 - (\sigma_{xx}+\sigma_{yy}+\sigma_{zz})\sigma^2 + (\sigma_{xx}\sigma_{yy}+\sigma_{yy}\sigma_{zz}+\sigma_{zz}\sigma_{xx}-\sigma_{xy}^2-\sigma_{yz}^2-\]\[\sigma_{zx}^2)\sigma - (\sigma_{xx}\sigma_{yy}\sigma_{zz}+2\sigma_{xy}\sigma_{yz}\sigma_{zx}-\sigma_{xx}\sigma_{yz}^2-\sigma_{yy}\sigma_{zx}^2-\sigma_{zz}\sigma_{xy}^2)  = 0 \]
2923
2924\subsection{\label{Principal Strains}Principal Strains}
2925The same algorithm is applied to the strain tensor as outlined for the stress in ''\htmlref{Principal Stresses}{Principal Stresses}''.
2926
2927\subsection{\label{maxShear Stress}maxShear Stresses}
2928Entity name: maxShear\\
2929This is the maximum shear-stress:
2930\[ maxShear = 0.5 * max( (\sigma_{1} - \sigma_{3}),(\sigma_{1} - \sigma_{2}),(\sigma_{2} - \sigma_{3}) )\]
2931
2932\subsection{\label{Cylindrical Stresses}Cylindrical Stresses}
2933Entity names: SXX, STT, SRR, SXT, STR, SRX\\\\
2934The Cylindrical Stresses are truly cartesin stresses in a cylindrical system regarding the node-position relative to the axis of the cylindrical system. The stress-tensor is rotated individually for each node. They are calculated on demand (see \htmlref{trfm}{trfm}).
2935
2936\subsection{\label{Weighted Error}Weighted Error}
2937Entity name: vMR\\
2938The element stress gradient based estimated error (requested with 'ERR' in
2939ccx) is multiplied by the vMises ratio:
2940\[ vMR = STR * vMisesStress(node) / vMisesStress(model)\]
2941
2942 \section{\label{Meshing rules}Meshing rules}
2943Some rules must be fulfilled before a geometry is meshable (see \htmlref{mesh}{mesh}). For linear elements (ie. qu4 or he8), the sum of all divisions (see \htmlref{div}{div}) of each surface must be even. In case of quadratic elements (ie. qu8 or he20) this sum must be divisible by 4 without residue. Opposite edges of a given surface might have different divisions. For example on the left side of a given surface the division is 8 and on the right side it is only 4. But only two opposite surfaces of a body can use this feature. These surfaces are called top and bottom surfaces. All other surfaces of this body must have unique divisions on opposite edges. In case of 3 sided surfaces it is necessary to apply a minimum division sufficient for two elements along the edge. The only exception is the element tr3u (see \htmlref{elty}{elty}) which allows a division of one.
2944
2945A body can not be meshed when the shape of the body is very far from being brick-like. The body might be subdivided to improve the shapes of the single ones. There is a restriction for the definition of five- or seven-sided bodies. The first two surfaces in the body-topology (see \htmlref{gbod}{gbod}) have to be defined in the same order. That means the first line of the first surface has to be connected with the first line in the second surface by one of the remaining surfaces. This is always the case if the body is a product of a ''\htmlref{swep}{swep}'' command.
2946
2947 \section{\label{User-Functions}User-Functions}
2948The user might define his own functions to manipulate the mesh or the results with the user function stored in file ''userFunction.c''. See the command ''\htmlref{call}{call}'' how to call a user function. The user can generate new nodes, elements or datasets or extend or manipulate existing datasets or interfaces to other software. The file ''userFunction.c'' includes an example which calculates the hydrostatic stress and stores the result in a new dataset. There the user can see how to deal with datasets. In case the user has no access to a compiler he may solve his task by using the in build command language. The section ``\htmlref{User File Parser}{User File Parser}'' can be used as an example.
2949
2950
2951\begin{appendix}
2952\section{\label{Known Problems}Known Problems}
2953\subsection{\label{Program is not responding}Program is not responding}
2954If the program seems to hang then leave the window with the mouse pointer and go in again. If that does not help then probably a command is waiting for input. Stay with the mouse pointer inside the window and press the ''q'' key several times. Another very popular error is to move the mouse-pointer into the konsole were the typed commands and the protocol is visible. Please, the mouse-pointer MUST stay in the main-window during typing! The user might use the menu fuction ``Toggle CommandLine'' or the command ``\htmlref{view}{view} cl'' to switch the command line from the konsole to the graphic's window.
2955
2956\subsection{\label{Program generates a segmentation fault}Program generates a segmentation fault}
2957Write a mail to the author and, if possible, add the input-file.\cite{cgx}.
2958
2959\section{\label{Tips and Hints}Tips and Hints}
2960The following collection will give you background information and procedures to deal with common situations.
2961
2962\subsection{\label{How to change the format of the movie file}How to change the format of the movie file}
2963Use a shell command like convert to split up movie.gif with multiple
2964layers into multiple frames, as seperate jpeg files:
2965\begin{verbatim}
2966convert movie.gif %d.jpg
2967\end{verbatim}
2968Convert any series of multiple jpeg files into WMV format with:
2969\begin{verbatim}
2970mencoder 'mf://*.jpg' -mf type=jpg:fps=25 -ovc lavc -lavcopts
2971vcodec=wmv2 -o movie.wmv
2972\end{verbatim}
2973To convert a video file into avi format use this command:
2974\begin{verbatim}
2975mencoder <videofile> -ovc lavc -lavcopts vcodec=flv -of avi -o movie.avi
2976\end{verbatim}
2977In general:To convert a video file from one format into the other, use
2978the program "mencoder". It comes with the mplayer packages.
2979\begin{verbatim}
2980mplayer movie.wmv
2981\end{verbatim}
2982
2983\subsection{\label{How to get the sets from a geo- or ccx-inp file for post-processing}How to get the sets from a geo- or ccx-inp file for post-processing}
2984Quite often it is useful to have the already defined sets from the pre-processing or/and the calculation available when doing the post-processing of results. The sets defined in the ccx-input file (.inp) can either be read together with the results (.frd) at start-up:\\\\cgx results.frd input.inp\\\\or the user may read them during run-time\\\\read input.inp nom\\\\ (see ``\htmlref{read}{read}''). When it comes to the sets defined in the geo file a slightly different approach is needed. The geo file must be read before the result file. So the user starts cgx in the build mode\\\\cgx -b geofile.fbd\\\\meshes the model (see ``\htmlref{mesh}{mesh}'') and then read the results\\\\read results.frd nom\\\\and optionally the input file. Be aware that the parameter ``nom'' is essential here. Use ``\htmlref{prnt}{prnt}'' to get an overview over the available sets.
2985
2986\subsection{\label{How to define a set of entities}How to define a set of entities}
2987Some knowledge is necessary to efficiently select entities (nodes, points ..). As a golden rule in complicated situations never try to create a set just by ''adding'' the entities to the set (see \htmlref{qadd}{qadd}). It is much better to catch a bigger group which includes certainly the wanted ones. Then display the set with the \htmlref{plot}{plot} command and remove all unwanted entities with the \htmlref{qrem}{qrem} command. Entities are selected if at least one pixel of it is inside the selection rectangle. But there is one exception: Only the lower left corner of any text (names of points etc.) can be selected. Surfaces can also be selected by picking its shaded interiour (see ``\htmlref{rep}{rep})''. You might add all lower entities (as points for example) by typing ''\htmlref{comp}{comp} set do''. This is necessary for example if you had selected surfaces and you want to move them in space. Only points have locations and therefore nothing will happen unless you completed the set by the related points with ''comp'' command.
2988
2989There is another type of set called sequence. The data-structure is the same but with one exception, the data keep their order in which they were selected. This type of set is used for splines (see ''\htmlref{qlin}{qlin}'' and ''\htmlref{line}{line}'') or in combination with the ''\htmlref{graph}{graph}'' command if values along a path should be displayed. Use ''\htmlref{prnt}{prnt} sq'' to list all existing sequences and use ''\htmlref{qseq}{qseq}'' or ''\htmlref{seqa}{seqa}'' to create them. Up to now they are only used to store nodes and points. As sets they will be written to a file if fbd format is specified. In this case also node-sequences can be stored.
2990
2991\subsection{\label{How to enquire node numbers and values at certain locations}How to enquire node numbers and values at certain locations}
2992A very common problem is how to get the exact value on a node position during post-processing. To actually get the value add the element edges to the view (see \htmlref{Toggle Element Edges}{Toggle Element Edges}) and type \htmlref{qenq}{qenq} and press the RETURN key (during typing the mouse-pointer MUST stay in the main window, do NOT move the pointer into the konsole). Then move the mouse-pointer over the location of a node and press the ''n'' key. The node-number, the value at that node and the location will be written in the konsole from which the cgx was started. See also the ''\htmlref{enq}{enq}'' command for batch controlled value extraction.
2993
2994\subsection{\label{How to select only nodes on the surface}How to select only nodes on the surface}
2995Some times you need to select nodes only on the surface of the mesh. This can be done when the mesh is displayed in the surface mode (see ''\htmlref{Toggle Surfaces/Volumes}{Toggle Surfaces/Volumes}'') using the menu-entry ''\htmlref{Show Elements With Light}{Show Elements With Light}''. To find node positions more easily add the element edges to the view (see \htmlref{Toggle Element Edges}{Toggle Element Edges}).
2996
2997A different way uses the element-faces (see ''\htmlref{plot}{plot}'' with parameter ''f''). Store the desired faces in a new set (\htmlref{qadd}{qadd}) and complete the set downwards (``\htmlref{comp}{comp} set do''). Check the selected nodes with ``plot n setname''. Or you add all faces at once in a new set with ``\htmlref{seta}{seta} surfs f all'' before completing the set downwards.
2998
2999\subsection{\label{How to write values to a file}How to write values to a file}
3000When you need to write certain values (results) to a file you may use either the ''\htmlref{send}{send}'' command which allows to write results in certain formats or a command file which uses the 'echo' system command in combination with the ``\htmlref{valu}{valu}'' command. The following list shows the general structure of such a command file:
3001\begin{itemize}
3002\item Choose the relevant dataset (menu or ds command)
3003\item Add the relevant node to a set ('qadd setname' or 'seta setname n number')
3004\item Open the stack: stack on
3005\item Place node-values on the stack: prnt se setname
3006\item Store the node: valu nod1 pop
3007\item Store the value: valu val1 pop
3008\item Write to file: sys echo Node nod1 Value val1 \verb_>|_ file.txt
3009\item Or optionally: sys printf (consult the man page for the format) \verb_>|_ file.txt
3010\end{itemize}
3011See also ``\htmlref{if}{if}'' and ``\htmlref{while}{while}'' and see the demo in ``\htmlref{If and while demo}{If and while demo}'' on how to work with this commands. They are useful for automatic processing.
3012
3013\subsection{\label{How to generate a user dataset}How to generate a user dataset}
3014It is possible to calculate and store new results with the cgx command language. The new dataset and its entities is created with the command ''\htmlref{ds}{ds}''. The data are written with the ''\htmlref{node}{node}'' command to the new dataset. The ''\htmlref{valu}{valu}'' command is used for calculations and data handling. The example ''\htmlref{Data storage in a user dataset}{Data storage in a user dataset}'' determines the normal direction on all nodes on the free surface of the mesh and stores this information in a new dataset. See also the sections ''\htmlref{How to write values to a file}{How to write values to a file}'', ''\htmlref{How to process results}{How to process results}''.
3015
3016\subsection{\label{How to generate a time-history plot}How to generate a time-history plot}
3017So called time history plots can be created based on a previous displayed sequence of data-sets (see ''\htmlref{Toggle Dataset Sequence}{Toggle Dataset Sequence}'') with the command ''\htmlref{graph}{graph}''. It is also possible to use only the command line. For example:
3018\begin{itemize}
3019\item ds 1 e 3
3020\item ds 1 2 10
3021\item graph set t
3022\end{itemize}
3023will produce a time history plot for the nodes stored in set over all loadcases from 1 to 10 for the entity nr 3.
3024Or
3025\begin{itemize}
3026\item graph set t DISP D1
3027\end{itemize}
3028will display the displacement in direction 1 for all loadcases.
3029For more details and other options look into the ''\htmlref{graph}{graph}'' command description.
3030\newpage
3031
3032\begin{figure}[h]
3033\epsfig{file=graph.eps,width=9cm}
3034\caption{\label{graph2D} example of a time-history plot }
3035\end{figure}
3036
3037
3038\subsection{\label{How the mesh is related to the geometry}How the mesh is related to the geometry}
3039Very often you need the embedded nodes, element-faces or elements of geometric entities to apply boundary conditions. If you understand the underlying concept you will be able to get them more easily.
3040
3041Geometric entities are the mothers of nodes, faces and elements (so to say) and will remember them. In turn if an entity is not the mother of a given mesh-entity it will not remember it. Therefore a body will only know about nodes which are not placed on surfaces, lines or points. A surface will only know about nodes which are not placed on lines or points. And so on.
3042
3043Therefore if you need the nodes on a surface and not only the ones just inside the surface, then create a set with this surface and do a ''\htmlref{comp}{comp} set do''. This will add the lines and points together with their nodes to the set.
3044
3045On the other hand if you have only a node and you need the geometric entity in which the node is embedded you might also type ''comp set do''.
3046
3047
3048\subsection{\label{How to change the order of elements}How to change the order of elements}
3049Use the command ''\htmlref{mids}{mids}'' to change from second order to first order or vice versa. In this case the amount of elements will not change. Or use the command ''\htmlref{send}{send}'' with the parameter ``quadlin'' to change from second order to first order. But in this case each second order element will be splitted in 8 first order elements.
3050
3051
3052\subsection{\label{How to connect independent meshes}How to connect independent meshes}
3053Sometimes it is advisable to ''glue'' independent meshes together instead of trying to create one big seamless-mesh. Or you just want to create a contact formulation were you know that no separation will happen. In this situations you might use equations (also called mpc's) which connect one dependent node with one or more independent nodes. The independent side should be coarser than the dependent side to avoid gaps in the connection. See the command ''\htmlref{send}{send} in combination with the option ''areampc'' how to create such connections. Sliding and fixed contact as well as press-fits can be modelled. The necessary sets should be defined based on geometry not on the mesh. In this case the definition will be stored with the ''save'' or ''exit'' command and can be used after the next program call. If no sets for the connections are at hand you may use the ''\htmlref{neigh}{neigh}'' command to generate them.
3054
3055Background: The movement of each location in an element (or on its surface) is fully described by the movement of its associated nodes and its shape-function. In an iterative algorithm element-coordinates are varied until the real-world coordinates of a dependent node are matched. Based on the element coordinates the shape function gives the participation (weight) factors of the independent nodes (the coefficients in the mpc's). This approach delivers valid results as long as the dependent node is not located outside of the independent element. Therefore the location of the dependent node has to be modified in such cases. The dependent will be moved to the surface of the independent element (again decribed by its shape-function) and the procedure is repeated.
3056
3057\begin{figure}[h]
3058\epsfig{file=equation.eps,width=12cm}
3059\caption{\label{equation} Dependent node on element face to create a connection  }
3060\end{figure}
3061
3062
3063\subsection{\label{How to define loads and constraints}How to define loads and constraints}
3064Loads and constraints are not saved in any database. They are just created and written to a file with the ''\htmlref{send}{send}'' command. But the sets which are needed for the definition are stored together with the geometry if you type the ''\htmlref{save}{save}'' command. Of course the sets must have been defined based on geometry and not based on mesh entities like nodes because mesh-entities are not saved with the ''save'' command. You must know that geometry-sets know also their mesh entities after a ''\htmlref{mesh}{mesh}'' command.
3065If you store your commands to write the boundary conditions in a file you can easily repeat them by just reading this command-file (see ''\htmlref{read}{read}''). Several types of loads can be applied. That is forces, pressure, thermal-heat-coefficients and radiation etc. For unsupported loads write a set of element-, node- or face-labels (parameter ''names'') and apply the desired load to that set in the solver input-file. Other boundary conditions like single-point-constraints for structural, thermal and fluid-calculations can be written. The sliding condition (parameter ''slide'') were nodes are bound to the element-faces to which they belong can be used for structural calculations or for fluid calculations. In the later case it forces the flow to follow the surface of the elements. This is necessary in inviscid calculations to prevent the fluid to penetrate the walls. Results from a previous calculation can be written in the solver input format for further calculations (parameter ''ds'', ''tmf'' etc.). For example temperatures for thermal mechanic fatigue analysis or velocities, pressures and thermals for a restart of a cfd calculation.
3066
3067
3068\subsection{\label{How to map loads}How to map loads}
3069Values at nodes can be mapped (interpolated) from a second mesh with the ''\htmlref{map}{map}'' command (2D and 3D). This second mesh (data source or ``master'') is usually available as a result-file from a previous calculation. The ''\htmlref{read}{read}'' command with the ``add'' parameter can be used to include this file in the current model. Solver-input files (inp) and result files (frd) can be used as a data source. The command will add an offset to the nodes and elements so that existing nodes and elements will not be overwritten. The original mesh is the target or ``slave'' of the mapping process. The mapping process will add the interpolated (mapped) values to the dataset(s) which originated from the master mesh. The mapped values can be visualized by selecting the mapped dataset and entity and then by plotting the slave elements or faces with ``\htmlref{plot}{plot} fv slave''. An example of the necessary commands for the mapping process (surfaces to surfaces) is listed below:
3070\begin{verbatim}
3071  REMARK: Be aware that you have to create sets of nodes and
3072          faces for surface mapping! They will be called 'master'
3073          and 'slave'
3074
3075  Open the target mesh with cgx.
3076  Define a set with the slave nodes or faces to which values
3077  should be mapped (for example pressure):
3078    qadd slave t10 (here with a tolerance of 10 deg)
3079    comp slave do (to extend the set by the referenced faces or
3080                   nodes)
3081
3082  Then open a set and read the model with the values (pressure):
3083    seto source
3084    read result.frd add
3085    setc
3086
3087  If necessary move 'source' in space to match the position of the
3088  'slave' (see ``move'').
3089
3090  Add the faces to the 'source' set
3091  (now only nodes and elements are already stored in 'source'):
3092    comp source do
3093    plot f source
3094
3095  Define the master set:
3096    qadd master t10  (catch the right faces showing the values)
3097    comp master do
3098
3099  Map the values of dataset 1 with:
3100    map slave master surf ds1
3101
3102  Check the mapping with:
3103    ds 1 e 1
3104    plot fv slave
3105
3106  Write the file with the mapped values:
3107    send slave abq pres ds1 e1
3108
3109  Check the file ``slave_ds1e1.dlo'' with an editor and use it
3110  in an inp-file.
3111\end{verbatim}
3112If the master values are not available in either inp or frd format but in any other format which can be read by cgx (isaac, openFoam ..) you may write them in frd format with the ''\htmlref{send}{send}'' command to be usable as a master.
3113
3114
3115\subsection{\label{How to run cgx in batch mode}How to run cgx in batch mode}
3116Most commands can be executed in batch-mode. Actually if you read a file with geometry (fbd-file) then you run cgx in batch mode already! You just have to add ''exit'' or ''quit'' at the end of the file and it will be obvious. You might use the ''\htmlref{read}{read}'' command in such a command-file to reference other command-files or to read files with mesh-entities for whatever purposes. In such a way you can create and modify geometry or meshes in batch-mode or evaluate results in batch-mode. But you need a graphic-capable computer because cgx needs it even if no graphic output is requested. Nevertheless the pop up of the graphic window can be suppressed by starting cgx with the ``-bg'' parameter.
3117
3118Some commands only make sense in a batch file like ``\htmlref{if}{if}'' and ``\htmlref{while}{while}''. Please have a look into ``\htmlref{If and while demo}{If and while demo}'' on how to work with this commands. Results can be extracted and stored to a file, see ``\htmlref{How to write values to a file}{How to write values to a file}''.
3119
3120Be aware of the 'examples' directory. It holds examples on how to use the command language as a programming language. The 'ifwhiledemo' generates points in a loop and shows how to write cgx generated values to a file. The 'userDataset' shows how to generate a user dataset for a temperature field based on the z coordinate of the nodes.
3121
3122It should be noted that a successive 'save' or 'exit' command will overwrite the batch file if it has the file-extension 'fbd'. To prevent this the user should use a different extension like 'fbl' instead of 'fbd'.
3123
3124When executing commands which increase the used space then it might happen that geometry is clipped and can not be seen or accessed anymore. In such a case a ``\htmlref{frame}{frame}'' command is needed. This command is usually automatically triggered. Especially in batch mode without graphic output it solves sometimes strange situations.
3125
3126When the command ``\htmlref{init}{init}'' or ``\htmlref{wsize}{wsize}'' is used then they have to be used in the very first line. Otherwhise the window dimensions take only effect after the batch file was completely parsed and executed.
3127
3128\subsection{\label{How to process results}How to process results}
3129The node results can be modified or used to generate derived results. There are basically three levels of operations.
3130
3131The easiest one is to just multiply with a factor, add a number or use an exponent to all node results of a certain dataset with the ''\htmlref{ds}{ds}'' command.
3132
3133The next level is using variables which can be used to do calculations based on results and can be written back to an existing dataset or a new one. This requires a good knowledge of the way cgx works and of the necessary commands (''\htmlref{if}{if}'', ''\htmlref{while}{while}'', ''\htmlref{stack}{stack}'', ''\htmlref{valu}{valu}'', ''\htmlref{enq}{enq}'', ''\htmlref{prnt}{prnt}'', ''\htmlref{ds}{ds}'', ''\htmlref{sys}{sys}'' etc.). In this way data can be written to a file with the ``\htmlref{sys}{sys}'' command (using echo) were an external program might be invoked by the ``sys'' command which in turn could provide data for cgx.
3134
3135Finally, complex operations can be coded in C in the file userFunction.c. The
3136user function is activated by the ''\htmlref{call}{call}'' command. A new
3137compilation of cgx is required unless a dynamically linked library is used.
3138
3139\subsection{\label{How to deal with CAD-geometry}How to deal with CAD-geometry}
3140In general hexahedra-elements perform better than tets but if the mesh should be derived from a cad-geometry it is often more convenient to create a tetrahedra mesh as to modify or rebuild the geometry to make it meshable with hexahedra-elements. The following section gives some hints which alternatives are available:
3141
3142\begin{itemize}
3143
3144\item The CAD format is supported by a stand alone translator (see the calculix home pages). In this case the user can mesh the surfaces with structured- \cite{Coons} (elty setname tr3 etc.) or unstructured triangles \cite{mesh2d} (elty setname tr3u etc.). The user might modify this surface mesh until he is happy with it. The surface mesh can then be filled with tets created by an external auto-mesher called from within cgx (mesh setname tet). The cgx uses the tet-mesher from NETGEN \cite{NETGEN} or TETGEN \cite{TETGEN} for this task. The command ''\htmlref{asgn}{asgn}'' is used to switch between them.
3145
3146Therefore cgx can only generate a tet-mesh if one of these programs are accessible. For the full functionallity replace the original ng\_vol source file in the NETGEN package with the modified program ng\_vol from the cgx-distribution and build it again. This version regards a target element size. Tetgen is able to regard that size unchanged.
3147
3148\item For CAD models in STEP- or IGES-format you may consider to use a tet-mesher like NETGEN \cite{NETGEN} which often generates quite nice tet-meshes with very few user interaction. You can read this meshes with cgx and combine them with cgx-geometry and meshes. Then create your boundary conditions etc. You might read the native-netgen format (.vol) instead of abaqus-format because this includes the 2D meshing regions in separate sets which can be used to apply boundary conditions (``cgx -ng file.vol'', see ''\htmlref{Program Parameters}{Program Parameters}''). See ``\htmlref{prnt}{prnt}'' how to list the available sets.
3149
3150\item A simple step-reader is integrated in cgx (cgx -step filename). It can deal with points and lines. This is sufficient for axis-symmetric structures like a rotor but the experienced user might also use the following approach for more complex geometries: You start with a file containing a 2D-section, subdivide it in mesh-able surfaces and sweep it in the 3rd dimension to create your geometry (see \htmlref{swep}{swep}). If features exist in the 3rd dimension then this features must be included in the 2D-section. Sweep the 2D-section to the location were the feature starts, then right to the end and at last to the end of the geometry. Delete the unwanted bodies before and after the feature. You might project the sweped sections to a target surface if the feature is shaped in the 3rd dimension (see \htmlref{proj}{proj}).
3151
3152Sometimes the geometry consists of several (maybe even identical) parts which are arranged on different positions in space. This is called assembly. When cgx is started with the parameter ``-stepsplit'' instead of ``-step'' it will write the single parts to separate directories using their original coordinate systems. The user can prepare meshable geometry or meshes based on them. But he must use the filenames which he finds there. The final meshed assembly can be build afterwards by calling the fbl-file which was written by cgx. This fbl-file contains the original step-commands to position and eventually duplicate the single geometries/meshes from the subdirectories.
3153\end{itemize}
3154
3155The following section describes the process to generate a tet-mesh with cgx based on a cad model:
3156
3157
3158\begin{figure}[h]
3159\epsfig{file=halter.eps,width=9cm}
3160\caption{\label{halter} CAD-geometry meshed with tet-elements }
3161\end{figure}
3162
3163\begin{itemize}
3164
3165\item Install and use the propper interface program to convert the cad format to fbd format (You find example data (vda,iges,step) in CalculiX/cgx\_x.x/examples/cad)\begin{verbatim} (ie: vda2fbd halter.vda > halter.fbd). \end{verbatim} Remark: In some cases the header of the vda file causes trouble and must be modified to make the program run.
3166
3167\item Start cgx with that file (cgx -a halter.fbd). Usually some warnings appear on the screen but the program will fix that automatically (triggered by the parameter -a). After all geometry has been read the program will merge points and lines to close the volume (body). WARNING: If no body exists the user has to manually merge all line end-points individually for all parts. Otherwhise intentionally unconnected parts could be merged at some locations. If the model consists of only one part a 'merg p all' should work. Finally the line divisions are determined based on default values. Use ``plot lc all r 3`` to see the lines in red 3 digit whide with node spacing as defined by the line divisions. The current default values lead to approximatelly 200 elements over the length of the model. The default values are defined in cgx.h, see GTOL\_NODE\_DIST and GTOL. You may use now the command \htmlref{div}{div} in the 'auto' mode to change the element sizes to your needs individually in each relevant region.
3168
3169\item If problems occur the user might start the program with option -b instead of -a (cgx -b halter.fbd). Then no automatic pre-processing is done and the user has to prepare the geometry manually. This commands are executed when starting with -a:
3170\begin{verbatim}
3171      # merge only points which are referenced by lines
3172      seta LBUF l all
3173      comp LBUF e
3174      merg p LBUF
3175      # delete zero length lines
3176      del l0 all
3177      # set the line divisions
3178      div all auto
3179\end{verbatim}
3180The user may use this command sequence when he reads a cad fbd file during run time (``\htmlref{read}{read} cadfile.fbd''). See the commands \htmlref{merg}{merg}, \htmlref{div}{div}, \htmlref{qdiv}{qdiv}, \htmlref{qlin}{qlin}, \htmlref{comp}{comp} and \htmlref{rep}{rep}.
3181
3182\item A default element type was assigned to all surfaces (tr6u) if you had started cgx with parameter -a. You may change the element type with \htmlref{elty}{elty}. In most cases it is advisable to use this triangles first (tr6u) and not directly tetraeders (te10) because a surface mesh can be interactively improved before the tets are generated. Remark: You can assign tets only to a set holding one or more bodies. The body related surfaces get a preliminary triangle element type assigned as a basis for the tets. If no body exists you may create one with ``body ! all''. You assign the tet element type with the ``elty'' command (elty setname te10).
3183
3184\item All surfaces should be shaded and filled with triangles. This has to be done manually by typing ``mesh all'' (see \htmlref{mesh}{mesh}) or ``rep all'' which just calculates the interior shape of the surfaces. In most cases ``mesh'' is preferable since it does both at the same time. Since the surface meshing of a CAD geometry can be very time consuming a default number of threads is used when the model is opened in the auto mode (cgx -a file). The actual number of threads will be listed when using the command ``\htmlref{prnt}{prnt} info''. The user might change this value with the command \htmlref{asgn}{asgn} before he starts meshing. The default is set in cgx.h, see NTHREADS.
3185
3186\item Use then ``plus si all'' to display the shaded surfaces. If a surface points inwards it is not illuminated and appears only dark grey. Flip the surfaces in a way that its normal direction points outwards. Use ''\htmlref{qflp}{qflp}'' abd press the ''a'' key to swith to the ``auto'' mode and then select a correctly oriented surface by pressing key ''s'', all other surfaces will immediatelly use the same orientation (if it's a closed volume). Add now the element faces with ''plus f all``.
3187
3188\item If some surfaces could not be meshed then modify the divisions of the lines of this surfaces (see ''\htmlref{qmsh}{qmsh}'', key 'l') and/or chose the structured element type tr6 for this surfaces (see ''\htmlref{qmsh}{qmsh}'', key 'x'). Or change the element-size (see ''\htmlref{qmsh}{qmsh}'', key 'h' or 't') inside the surfaces. The command ''\htmlref{qmsh}{qmsh}'' fixes parts of the surface-mesh in a convenient way since this command combines several other ones. For convenient usage of ``qmsh'' display the surfaces ``plot si all`` together with faces ``plus f all`` and add the lines with ``plus lc all r 3``).
3189
3190Remark: In some cases surfaces are not meshable when you had combined surfaces with ``qmsh''. The referenced NURBS might be too small to cover the whole surface. Without such a related nurbs no unstructured mesh can be created. If structured elements are no solution you may delete the related NURBS from the surface definition with ''\htmlref{qsur}{qsur}'' using key 'b'. Then store the surface in a set and create a new NURBS with ``nurs ! setname''. The surfaces stored in the set will produce NURBS based on the Coons algorithm \cite{Coons}. If the surface shape matches a primitive shape you may also use the ''\htmlref{qshp}{qshp}'' or ''\htmlref{shpe}{shpe}'' command to generate such a shape and assign it to the surface.
3191
3192\item Check the mesh. If the command ''\htmlref{prnt}{prnt} info'' lists ''ed:0'' then no model edges exist and the mesh is closed and ready to be used for tet meshing. If edges exist then the surface mesh is not closed which means that not all shells have exactly one neighbor at each edge. This free edges exist usually at the location of lines and the problem can often be solved by changing the divsion of the underlying lines. The edges are displayed by default but might be hidden by other entities. To increase the size of the representation up to 10 pixels use ''\htmlref{view}{view} ed 10''. This can be seen on figure \ref{surfmesh}. Then chose the line under one edge with ``qmsh'' and change the line division to a higher or lower number until the edge disapears. Actually cgx detects this edges after meshing and tries to solve the problem by increasing the division of the related lines incrementally, but only a few times. The remaining lines are stored in set ``-EDGE'' and can be displayed as well for manual adjustments.
3193
3194\begin{figure}[h]
3195\epsfig{file=surfmesh.eps,width=12cm}
3196\caption{\label{surfmesh}Visible (black) edge over lines and faces. Such edges exists if the surface mesh is not closed and not meshable with tets. Here two elements meet just one element at the black edge. }
3197\end{figure}
3198
3199\item Generate the tet mesh (``mesh all tet``). A target-size for the tet-elements can be specified if ``ng\_vol'' from the cgx distribution was installed (for example ``mesh all tet 2.5`` will define a maximum element-size of ``2.5''). If the model consists of several unconnected parts separate them in single sets and mesh one after the other (see \htmlref{seta}{seta}, \htmlref{qadd}{qadd}, \htmlref{qrem}{qrem}, \htmlref{comp}{comp}).
3200
3201\item Create sets of nodes, faces or elements to create boundary conditions (if you had not created them already based on the geometry) and export them with ''\htmlref{send}{send}''.
3202
3203\item Create the input deck for ccx with an editor and start the calculation.
3204
3205\item Look at the results with cgx (cgx results.frd).
3206\end{itemize}
3207
3208Additional remarks:
3209\begin{itemize}
3210\item It should be mentioned that only the set which was used for tet meshing will hold the created tet elements.
3211\item If a te10 meshed body shares surfaces with a he20 meshed body equations connecting tet related nodes which are not used by the hex elements are generated and will be written into the mesh file together with the nodes and elements. But this feature works only if all related bodies are meshed together with just one 'mesh' command. So create and use a set holding all adjacent bodies for use with the 'mesh' command. This feature requires in any case a body for the tet meshed structure. Bodies which do not share common surfaces with the tet body can be meshed in separate steps.
3212\item For cyclic symmetric boundary conditions it is preferable to have the same mesh on both connected surfaces. To archive this the user should not mesh one of this sides. Instead he copies the elements of the meshed side to the location of the un-meshed side (see ''\htmlref{copy}{copy}''). Then he flips the orientation of this elements (see ''\htmlref{flip}{flip}'' option 'e') and merges the nodes in that region (usually just ''\htmlref{merg}{merg} n all''). Now the tet mesh can be generated.
3213\item Sometimes a surface is not meshable because a line runs right into it (a sliver, see figure \ref{sliver}). The following commands can be used to remove it:
3214\begin{verbatim}
3215  qlin (select the lines with 'a', 'x')
3216  qpnt (select the line endpoint 'p', in the figure marked with
3217        DL2M and place it over the other endpoint 'p')
3218        The line(s) are now deleted. Often such a surface is only
3219        meshable with a regular mesh (tr6), so change the type
3220        and mesh then:
3221  qmsh (select the surface 's' and change the type 'x' and mesh
3222        'm')
3223\end{verbatim}
3224
3225  \begin{figure}[h]
3226\epsfig{file=scratch.eps,width=9cm}
3227\caption{\label{sliver} CAD-surface with a sliver or scratch }
3228\end{figure}
3229
3230\end{itemize}
3231
3232\subsection{\label{How to check an input file for ccx}How to check an input file for ccx}
3233A quick check of a ccx input-file can be done with cgx by reading the file with the option -c (cgx -c file.inp). After startup all defined node-, element-, and surface-sets are availabe together with internal sets which group togeter certain entities according to their purposes. The following internal sets will be created if appropriate data were found:
3234\begin{itemize}
3235\item +bou(DOF):  Created if *BOUNDARY is found. All affected nodes are stored in +bou were +bou(DOF) store just the nodes which are constrained in the related DOF number.
3236\item +dep(BOU):  Created if *EQUATION is found. All dependent nodes are stored in +dep.
3237\item +ind(BOU):  Analog to +dep.
3238\item +clo[nr]:   Created if *CLOAD is found. The nr counts the number of appearance.
3239\item +dlo[nr]:   Created if *DLOAD is found.
3240\item +mpc[nr]:   Created if *MPC is found.
3241\item +rad[nr]:   Created if *MPC is found.
3242\item +flm[nr]:   Created if *FILM is found.
3243\item +cflx[nr]:  Created if *CFLUX is found.
3244\item +dflx[nr]:  Created if *DFLUX is found.
3245\item +tie[1|2]:  Created if *TIE is found. The set +tie1 stores the slave entities and +tie2 the master. The single sets which define the contact areas are linked together so if identified with the ``qenq'' command the referenced (linked) opposing set is listed in the konsole.
3246\item +trans...:  Created if *TRANSFORM is found. The name consists of the definition of the transformation.
3247\item +[elty]:    Created for all known element types like *C3D20.
3248\end{itemize}
3249REMARK: Internal setnames start either with a '-' or '+'. The names which start with a '-' are not listed with ``\htmlref{qenq}{qenq}''.
3250
3251Check the element quality with ``\htmlref{Show Bad Elements}{Show Bad
3252  Elements}'' or use ``\htmlref{eqal}{eqal}'' to set thresholds and
3253``\htmlref{plot}{plot}'' or ``\htmlref{prnt}{prnt}'' to actually plot or list the affected elements.
3254
3255Forces regard their referenced coordinate-system (*TRANSFORM). The values are automatically transformed into the global cartesian system so that the vectors point in the correct direction.
3256
3257Multiple load definitions inside one *STEP on a single entity will sum up (ccx compatible). This applies to cflux, dflux, cload, dload.
3258
3259\subsection{\label{Remarks Concerning Ansys}Remarks Concerning Ansys}
3260The cgx is capable to write the following mesh entities to files (see ``\htmlref{send}{send}'', the necessary key-parameters are listed in brackets below):
3261\begin{itemize}
3262\item Nodes and Elements
3263\item Sets of nodes and elements (nam)
3264\item Single point constraints (spc)
3265\item Equations (areampc)
3266\item Pressure (pres)
3267\item Temperatures (ds, all datasets with just one entity will be written as temperatures)
3268\end{itemize}
3269The resulting files have to be combined with the help of an editor and extended by material-data and the necessary controll-commands.
3270
3271So far results can not be read.
3272
3273\subsection{\label{Remarks Concerning Code Aster}Remarks Concerning Code Aster}
3274From Paul CARRICO (2005/02/12)
3275
3276Brief presentation of CODE ASTER: Code Aster is an implicit  solver under GPL licence from the French company EDF (\'{E}lectricit\'{e} de France).
3277
3278Code Aster and its documentations is downloadable at the following address:\\\\http://www.code-aster.org\\\\(NOTA : the documentation is in French at the moment but many users are translating it in English and in German)
3279
3280The following list is not exhaustive but it briefly presents the capabilities of the solver:
3281
3282\begin{itemize}
3283
3284\item Mechanical modeling:
3285Code aster allows linear and non linear calculations in static, dynamic, acoustic etc. Many mechanical laws are implemented in the solver such as damage, fatigue, creep, viscosities (elastic, plastic) etc. For isotropic and non-isotropic materials (orthotropic ones for example).
3286Because of EDF fields, the materials used in Code Aster are essentially Metallic ones and Geo material one, but there are probably some others.
3287
3288\item Thermal and thermomechanical calculations:
3289The Thermal solver performs linear and non-linear calculations for pure thermal but also for thermomechanical simulations.
3290
3291\item Input interface:
3292EFICAS is the input interface for coding the input file, but it's not a pre-processing as you can find in many commercial code.
3293
3294\item Tools:
3295Many tools are provided with Code Aster: HOMARD for mesh refinement, GIBI and GMSH for post-processing.
3296\end{itemize}
3297
3298CGX to ASTER export format (i.e HOWTO use this export format)
3299The export format allows to export meshes and sets from CGX to Code Aster for linear and quadratic 1D, 2D and 3D elements. For this, just type: 'send all aster' for exporting a complete mesh. The file will have the '.mail' extension.
3300Type 'send set aster nam' for exporting the GROUP-NO (node group) and the GROUP-MA (mesh group) which compose the set. The file will have '.nam' extension
3301
3302The later item is particularly useful to apply boundary conditions onto (DOF, pressure, force, displacement, temperature, etc.). Since of these boundary conditions are coded with EFICAS in the input file, I thought it was not necessary to develop another features than the 2 previous ones !
3303
3304So far results can not be read.
3305
3306\subsection{\label{Remarks Concerning dolfyn}Remarks Concerning dolfyn}
3307Some support for dolfyn (a free cfd code) was provided by Runar Tenfjord.
3308In the CalculiX/cgx\_(nr)/examples/dolfyn directory is a patch for the dolfyn source-code included. This patch enables dolfyn to write frd-result files which can be visualized with cgx. There is also an example which allows cgx to be used as an pre-processor for dolfyn. The mesh can be written in dolfyn format with the command ''\htmlref{send}{send}''.
3309
3310\subsection{\label{Remarks Concerning Duns and Isaac}Remarks Concerning Duns and Isaac}
3311If you intent to create a 2D-mesh for the cfd-code duns or isaac you have to watch out that all surfaces are created in the same order. That means that all surfaces must be defined clockwise if you look in z direction. The block-structure can be detected only in this case. You can check the mesh by simply mesh it with linear shell-elements and display them. All elements must be illuminated if looking against z. A later ``qflp'' or ``flip'' command will not cure wrong oriented surfaces since it only changes the ``sign'' in their definition and not the basic edge sequence, which is necessary here. The results of a calculation can be opened by specifying the parameter (-duns2d -duns3d -duns2dl -duns3dl -isaac2d -isaac3d) and the filename without any extention(cgx -isaac2d RAE2822). See also ''\htmlref{Program Parameters}{Program Parameters}'', ''\htmlref{mesh}{mesh}'', ''\htmlref{send}{send}'' and the airfoil-example in the distribution. Please read the comments for duns and isaac in the ``\htmlref{send}{send}'' command description.
3312
3313Be aware that duns and isaac use block meshes which must be created using the set 'all'. So the use of set 'all' together with the parameter 'block' is mandatory when the block structure is needed! Nevertheless the user might only assign an element type to a sub set so that only a part of the geometry will be meshed (see ''\htmlref{mesh}{mesh}'').
3314
3315If the solver-format ''duns'' is used then related numbers of surfaces (3D) or lines (2D) will be written to file ``duns.bou''. This information is necessary to apply boundary-conditions to duns. The numbers are used in the connectivity file ``duns.conn'' which will be created together with the mesh. The user has to refer this numbers in the ``duns.script2'' file when assigning boundary conditions.
3316
3317When using the cgx parameter 'periodic' with the send command it is necessary to deactivate the function 'CHKCUT' in the isaac main.F file:
3318\begin{verbatim}
3319modifications Wittig 13. Jul 21
3320main.F 933  // deactivate the coord check to enable periodic boundaries
3321c         CALL CHKCUT (IBLK1, IDIM(IBLK1,ILVL), JDIM(IBLK1,ILVL),
3322c     1                KDIM(IBLK1,ILVL), R(IR1),
3323c     2                IBLK2, IDIM(IBLK2,ILVL), JDIM(IBLK2,ILVL),
3324c     3                KDIM(IBLK2,ILVL), R(IR2), ICUTS(1,ICUT,ILVL),
3325c     4                CUTNAM(ICUT), IERRCD)
3326\end{verbatim}
3327Otherwhise the performed check would stop the program.
3328
3329\subsection{\label{Remarks Concerning Nastran}Remarks Concerning Nastran}
3330The cgx is capable to write the following mesh entities to files (see ``\htmlref{send}{send}'', the necessary key-parameters are listed in brackets below):
3331\begin{itemize}
3332\item Nodes and Elements
3333\item node displacement coordinate system (see command ``\htmlref{csysa}{csysa}'')
3334\item Single point constraints (spc)
3335\item Equations or RBEs (areampc, to glue components. A previous command ``\htmlref{asgn}{asgn}'' defines if mpcs or rbes will be created)
3336\item RBE2 ( mpc, for rbe-spiders)
3337\item Pressure (pres, so far only CHEXA8)
3338\item Temperatures (ds, all datasets with just one entity will be written as temperatures)
3339\end{itemize}
3340The resulting files have to be combined with the help of an editor and extended by material-data and the necessary controll-commands.
3341
3342The f06-file with results can be read (so far only CHEXA with displacements and stresses).
3343
3344\subsection{\label{Remarks Concerning NETGEN}Remarks Concerning NETGEN}
3345It is not necessary to write the mesh in abaqus format if you use netgen as a mesher. The native netgen format (.vol) can be read by cgx (cgx -ng file.vol) as well. The netgen mesh format (.vol) includes the surface-patches which were defined by the edges of the model and used for the generation of the volume-mesh. This patches can be used to define boundary conditions or loads. The nodes and faces of this patches are stored in sets named ``+set[nr]''. To get an overview over the patches type ``\htmlref{prnt}{prnt} se''. To see were the patches are located type ``\htmlref{plot}{plot} f all'' and use the ``PAGE\_DOWN''-key to scan through all sets.\\\\
3346A netgen surface mesh can be written based on faces of elements. The faces of hex, tet, quad and tria elements are triangulated and written in the stl format which can be read by using the netgen-gui or the stand-alone netgen mesher format (file.ng). This mesher can be found in the netgen sub-directory nglib and is named ng\_vol. It will create tet4 elements which use and keep the shape of the provided tri3 elements. To improve the meshing results with the netgen-gui the user could create own edges based on the stl triangles or read and manipulate the netgen created edges with cgx and then write them back. To read the edges: In NETGEN open the stl-doctor and go in the edges menu. There delete all edges with ''all undefined'' then load the edges with ''load edgedata'' and activate them with ''candidate to confirm''.
3347
3348\subsection{\label{Remarks Concerning OpenFOAM}Remarks Concerning OpenFOAM}
3349The mesh can be written in OpenFOAM polyMesh format with the command ''\htmlref{send}{send}''. If you work in the polyMesh-directory of the OpenFOAM case then all mesh-related files will be already in place. So far the physical-type is not written in the boundary file as it is not mandatory. The results of an OpenFOAM calculation can be viewed by specifying the parameter -foam and the case (the relative or absolute path including the directory-name of the case). See also ''\htmlref{Program Parameters}{Program Parameters}'', ''\htmlref{mesh}{mesh}''.
3350
3351\subsection{\label{Remarks Concerning Samcef}Remarks Concerning Samcef}
3352From Paul CARRICO (2006/04/17)\\\\
3353BASIC TUTORIAL FOR HOWTO USE THE SAMCEF EXPORT FORMAT
3354
3355\begin{verbatim}
33561- Definition of the points
3357K: pnt p0 0 0 0
3358K: pnt p1 1 0 0
3359K: pnt p2 0 1 0
3360K: pnt p3 2 1 0
3361K: plot pa all
3362
33632- Definition of the lines
3364K: plus l all
3365K: qlin (link the points p0 p1 p3 p2 p2 p0)
3366
33673- Creation of the first surface
3368K: qsur
3369
33704- Creation of l0 (between p0 &p1) and l1 (between p1 &p3) sets
3371K : qadd lo
3372K : qadd l1
3373
33744- Creation of the 2 other surfaces
3375K : swep l0 l1 tra 0 -3 0
3376K : swep l1 l1b tra -3 0 0
3377
33785- Creation of the SYMETRY set
3379K : plot s all
3380K : qadd SYMETRY (use both a and rr keys to select all the
3381                  surfaces)
3382
33836- Creation of the volumes
3384K : swep SYMETRY s1 swep tra 0 0 1 (all the volume will be
3385    automatically created)
3386
33877- Looking for common points, lines and surfaces
3388In the order :
3389K : merg p all
3390K : merg l all
3391K : merg s all
3392
33938- Creation of the LOAD set and ANCHORAG one
3394K : qadd LOAD (use rr keys to select the surface)
3395K : qadd ANCHORAG (use rr keys to select the surface)
3396
3397NOTA : It's easy to verify the different sets ; for example :
3398K : plot b all (you can see all the volumes)
3399K : plus s LOAD (you can see the set LOAD)
3400K : plus s ANCHORAG
3401K : plus s SYMETRY
3402
34039 - Mesh
3404K : plot ld all
3405K : div all mult 2
3406K : elty all HE20 (to specify HEXAHEDRA with 20 nodes)
3407K : elty LOAD qu8 (to mesh the set LOAD otherwise no quads will
3408                    be created)
3409K : elty ANCHORAG qu8
3410K : elty SYMETRY
3411K : mesh all (to mesh the part with all.dat name)
3412K : send all sam (to export the mesh into Samcef format)
3413K : send LOAD sam nam (to export groups into Samcef format)
3414K : send ANCHORAG sam nam (see previous remark)
3415K : send SYMETRY sam nam
3416
341710- Modifications
3418It's possible now to make some modifications :
3419a- open all.dat file with your favorite text editor (Vi for me)
3420b- open ANCHORAG.nam & the SYMETRIC.nam files and do the same as
3421   previously
3422c- concatenate under Linux the files using the following schema :
3423        cat all.dat LOAD.nam > s1.m
3424        cat s1.m ANCHORAG.nam > s2.m
3425        cat s2.m SYMETRY.nam > part.dat
3426(all the sx.m files will be erased afterward)
3427d- open PART.dat file and go to the end => then add RETURN
3428e- the mesh file now works with Samcef
3429
3430
3431Another interesting way : add for each .nam file an input in your
3432 bank file:
3433input ''part.dat''
3434input ''LOAD.nam''
3435input ''ANCHORAG.nam''
3436etc. ...
3437
343811 IMPORTANT REMARK
3439
3440After, it's possible to modify the mesh into BACON (extrusions,
3441etc. ...);
3442that's why the element hypothesis is not added at the end of the
3443file ;
3444=> you must define the element definition AFTER the last mesh
3445 modification (.HYP MINDLIN)
3446
344712- Comments
3448
3449if you've any remark or any comment or any suggestion to improve
3450this export format, please send a mail to paul.carrico_at_free.fr
3451\end{verbatim}
3452So far results can not be read.
3453
3454
3455\section{\label{Simple Examples}Simple Examples}
3456The following listings show simple geometry input-files. The pictures show this geometry together with their labels and the generated mesh. The models were made based on three points. Two points defined one axis of rotation and one was the basis of several ''\htmlref{swep}{swep}'' and ''\htmlref{merg}{merg}'' operations. In case of the sphere the surfaces on the pole had to be redefined using only three lines per surface.
3457\subsection{\label{Disc}Disc}
3458\begin{figure}[h]
3459\epsfig{file=disc.eps,width=12cm}
3460\caption{\label{disc made of four 90 degree segments}disc made of four 90 degree segments}
3461\end{figure}
3462\begin{verbatim}
3463 PNT py      -0.00000        1.00000        0.00000
3464 PNT p0      -0.00000       -0.00000        0.00000
3465 PNT P001     0.70711       -0.00000       -0.70711
3466 PNT P003    -0.00000       -0.00000       -1.00000
3467 PNT P005    -0.70711       -0.00000       -0.70711
3468 PNT P006    -1.00000       -0.00000        0.00000
3469 PNT P009    -0.70711       -0.00000        0.70711
3470 PNT P00A     0.00000       -0.00000        1.00000
3471 PNT P00G     0.70711       -0.00000        0.70711
3472 PNT P00I     1.00000       -0.00000       -0.00000
3473 LINE L001 P00I P001 p0 4
3474 LINE L002 P001 P003 p0 4
3475 LINE L003 P003 p0 8
3476 LINE L004 p0 P00I 8
3477 LINE L005 P003 P005 p0 4
3478 LINE L006 P005 P006 p0 4
3479 LINE L007 P006 p0 8
3480 LINE L009 P006 P009 p0 4
3481 LINE L00A P009 P00A p0 4
3482 LINE L00C P00A p0 8
3483 LINE L00G P00A P00G p0 4
3484 LINE L00I P00G P00I p0 4
3485 GSUR A001 + BLEND  - L003 - L002 - L001 - L004
3486 GSUR A002 + BLEND  - L007 - L006 - L005 + L003
3487 GSUR A003 + BLEND  - L00C - L00A - L009 + L007
3488 GSUR A004 + BLEND  + L004 - L00I - L00G + L00C
3489 ELTY all QU4
3490\end{verbatim}
3491
3492\subsection{\label{Cylinder}Cylinder}
3493\begin{figure}[h]
3494\epsfig{file=cylinder.eps,width=12cm}
3495\caption{\label{cylinder made of four 90 degree segments}cylinder made of four 90 degree segments}
3496\end{figure}
3497\begin{verbatim}
3498 PNT p0      -0.00000       -0.00000        0.00000
3499 PNT py      -0.00000        1.00000        0.00000
3500 PNT p1       1.00000       -0.00000        0.00000
3501 PNT P001     1.00000        1.00000        0.00000
3502 PNT P002    -0.00000       -0.00000       -1.00000
3503 PNT P003    -0.00000        1.00000       -1.00000
3504 PNT P006    -1.00000       -0.00000        0.00000
3505 PNT P007    -1.00000        1.00000        0.00000
3506 PNT P00A     0.00000       -0.00000        1.00000
3507 PNT P00C     0.00000        1.00000        1.00000
3508 LINE L001 p1 P001 2
3509 LINE L002 P002 P003 2
3510 LINE L003 p1 P002 p0 8
3511 LINE L004 P001 P003 py 8
3512 LINE L005 P006 P007 2
3513 LINE L006 P002 P006 p0 8
3514 LINE L007 P003 P007 py 8
3515 LINE L008 P00A P00C 2
3516 LINE L009 P006 P00A p0 8
3517 LINE L00A P007 P00C py 8
3518 LINE L00I P00A p1 p0 8
3519 LINE L00J P00C P001 py 8
3520 SHPE CYL1 cyl p0 py 1.
3521 GSUR A001 + CYL1  - L001 + L003 + L002 - L004
3522 GSUR A002 + CYL1  - L002 + L006 + L005 - L007
3523 GSUR A003 + CYL1  - L005 + L009 + L008 - L00A
3524 GSUR A004 + CYL1  - L008 + L00I + L001 - L00J
3525 ELTY all QU4
3526\end{verbatim}
3527
3528\subsection{\label{Sphere}Sphere}
3529\begin{figure}[h]
3530\epsfig{file=sphere.eps,width=12cm}
3531\caption{\label{Segment of a Sphere}Segment of a Sphere}
3532\end{figure}
3533\begin{verbatim}
3534 PNT py      -0.00000        1.00000       -0.00000
3535 PNT p1       1.00000       -0.00000       -0.00000
3536 PNT P001     0.70711       -0.00000       -0.70711
3537 PNT P003    -0.00000       -0.00000       -1.00000
3538 PNT P006     0.70711        0.50000       -0.50000
3539 PNT P008    -0.00000        0.70711       -0.70711
3540 PNT P00C     0.70711       -0.00000       -0.00000
3541 PNT P00K     0.70711        0.70711       -0.00000
3542 PNT P00L    -0.00000       -0.00000       -0.00000
3543 PNT P00N    -0.00000        1.00000       -0.00000
3544 LINE L001 p1 P001 P00L 8
3545 LINE L002 P001 P003 P00L 8
3546 LINE L003 p1 P006 P00L 8
3547 LINE L004 P006 P008 P00L 8
3548 LINE L006 P001 P006 P00C 8
3549 LINE L008 P003 P008 P00L 8
3550 LINE L00A p1 P00K P00L 8
3551 LINE L00C P00K P00N P00L 8
3552 LINE L00G P006 P00K P00C 8
3553 LINE L00J P008 P00N P00L 8
3554 SHPE SPH1 sph P00L 1.
3555 GSUR A005 + SPH1  - L003 + L001 + L006
3556 GSUR A002 + SPH1  - L002 + L006 + L004 - L008
3557 GSUR A006 + SPH1  + L003 + L00G - L00A
3558 GSUR A004 + SPH1  - L004 + L00G + L00C - L00J
3559 ELTY all QU4
3560\end{verbatim}
3561
3562
3563\subsection{\label{Sphere (Volume)}Sphere (Volume)}
3564\begin{figure}[h]
3565\epsfig{file=sphere_vol.eps,width=12cm}
3566\caption{\label{Segment of a SphereV}Segment of a Sphere (Volume)}
3567\end{figure}
3568\begin{verbatim}
3569 PNT py       0.00000        1.00000        0.00000
3570 PNT p1       1.00000        0.00000        0.00000
3571 PNT P006     0.70711        0.50000       -0.50000
3572 PNT P008     0.00000        0.70711       -0.70711
3573 PNT P00C     0.70711        0.00000        0.00000
3574 PNT P00K     0.70711        0.70711        0.00000
3575 PNT P00L     0.00000        0.00000        0.00000
3576 PNT P00N     0.00000        1.00000        0.00000
3577 LINE L001 p1 P00L 8
3578 LINE L002 P00L P008 8
3579 LINE L003 p1 P006 P00L 8
3580 LINE L004 P006 P008 P00L 8
3581 LINE L005 P00L P00N 8
3582 LINE L00A p1 P00K P00L 8
3583 LINE L00C P00K P00N P00L 8
3584 LINE L00G P006 P00K P00C 8
3585 LINE L00J P008 P00N P00L 8
3586 SHPE SPH1 sph P00L 1.
3587 GSUR A001 + BLEND - L003 + L001 + L002 - L004
3588 GSUR A002 + BLEND - L005 - L001 + L00A + L00C
3589 GSUR A006 + SPH1 + L003 + L00G - L00A
3590 GSUR A004 + SPH1 - L004 + L00G + L00C - L00J
3591 GSUR A003 + BLEND + L002 + L00J - L005
3592 GBOD B001 NORM + A006 - A003 - A004 + A002 + A001
3593 ELTY all HE20
3594\end{verbatim}
3595
3596
3597\subsection{\label{Airfoil for cfd codes}Airfoil for cfd codes}
3598All surfaces must be oriented in the same way. The sets are used to define areas for the boundary conditions.
3599\begin{figure}[h]
3600\epsfig{file=naca23012.eps,width=12cm}
3601\caption{\label{Airfoil for duns}Airfoil for cfd codes }
3602\end{figure}
3603\begin{verbatim}
3604 PNT P002    -0.24688        0.00667        0.00000
3605 PNT P003    -0.24375        0.00903        0.00000
3606 PNT P004    -0.23750        0.01228        0.00000
3607 PNT P005    -0.23125        0.01450        0.00000
3608 PNT P006    -0.22500        0.01608        0.00000
3609 PNT P007    -0.21250        0.01798        0.00000
3610 PNT P008    -0.20000        0.01875        0.00000
3611 PNT P009    -0.18750        0.01900        0.00000
3612 PNT P00A    -0.17500        0.01888        0.00000
3613 PNT P00C    -0.15000        0.01785        0.00000
3614 PNT P00E    -0.12500        0.01602        0.00000
3615 PNT P00G    -0.10000        0.01368        0.00000
3616 PNT P00I    -0.07500        0.01090        0.00000
3617 PNT P00J    -0.05000        0.00770        0.00000
3618 PNT P00K    -0.02500        0.00420        0.00000
3619 PNT P00L    -0.01250        0.00230        0.00000
3620 PNT P00O    -0.25000        0.00000        0.00000
3621 PNT P00P    -0.24688       -0.00308        0.00000
3622 PNT P00R    -0.24375       -0.00427        0.00000
3623 PNT P00S    -0.23750       -0.00565        0.00000
3624 PNT P00T    -0.23125       -0.00653        0.00000
3625 PNT P00V    -0.22500       -0.00730        0.00000
3626 PNT P00W    -0.21250       -0.00875        0.00000
3627 PNT P00X    -0.20000       -0.00993        0.00000
3628 PNT P00Z    -0.18750       -0.01070        0.00000
3629 PNT P010    -0.17500       -0.01115        0.00000
3630 PNT P011    -0.15000       -0.01120        0.00000
3631 PNT P012    -0.12500       -0.01043        0.00000
3632 PNT P013    -0.10000       -0.00917        0.00000
3633 PNT P014    -0.07500       -0.00750        0.00000
3634 PNT P015    -0.05000       -0.00540        0.00000
3635 PNT P016    -0.02500       -0.00308        0.00000
3636 PNT P017    -0.01250       -0.00175        0.00000
3637 PNT P019     0.00000        0.00000        0.00000
3638 PNT P1      -0.50000       -0.50000        0.00000
3639 PNT P2       0.50000       -0.50000        0.00000
3640 PNT p3       0.50000        0.50000        0.00000
3641 PNT p4      -0.50000        0.50000        0.00000
3642 PNT P01A    -0.18162        0.01898        0.00000
3643 PNT P01B    -0.18180       -0.01094        0.00000
3644 PNT P046    -0.27025        0.01256        0.00000
3645 PNT P059    -0.26599        0.28688        0.00000
3646 PNT P049    -0.25144        0.02439        0.00000
3647 PNT P05A    -0.35589        0.17566        0.00000
3648 PNT P04C    -0.22636        0.03241        0.00000
3649 PNT P04D    -0.20128        0.03643        0.00000
3650 PNT P05C    -0.38027        0.00958        0.00000
3651 PNT P04G    -0.12604        0.03833        0.00000
3652 PNT P04H    -0.07588        0.03616        0.00000
3653 PNT P04I    -0.02572        0.03231        0.00000
3654 PNT P05D    -0.31932       -0.21136        0.00000
3655 PNT P04L    -0.27652       -0.00154        0.00000
3656 PNT P04M    -0.27025       -0.00803        0.00000
3657 PNT P05F    -0.20962       -0.27840        0.00000
3658 PNT P04P    -0.25373       -0.01567        0.00000
3659 PNT P04R    -0.22676       -0.02143        0.00000
3660 PNT P04T    -0.20124       -0.02394        0.00000
3661 PNT P05G     0.01132        0.29145        0.00000
3662 PNT P04W    -0.12604       -0.02508        0.00000
3663 PNT P04X    -0.07588       -0.02519        0.00000
3664 PNT P04Z    -0.02572       -0.02355        0.00000
3665 PNT P05H     0.00065       -0.30887        0.00000
3666 PNT P052    -0.18074        0.03754        0.00000
3667 PNT P054    -0.18133       -0.02465        0.00000
3668 PNT P056     0.00118        0.02891        0.00000
3669 PNT P058     0.00010       -0.02250        0.00000
3670 PNT P05I     0.01244        0.50000        0.00000
3671 PNT P05J     0.00610       -0.50000        0.00000
3672 PNT P05L     0.50000       -0.34112        0.00000
3673 PNT P05M     0.50000        0.29206        0.00000
3674 PNT P05N     0.50000        0.05780        0.00000
3675 PNT P05S     0.50000       -0.05314        0.00000
3676 PNT P05V     0.50000       -0.00217        0.00000
3677 PNT P00N    -0.23448        0.01345        0.00000
3678 PNT P02M    -0.23471       -0.00608        0.00000
3679 PNT P03B    -0.24164        0.02804        0.00000
3680 PNT P03C    -0.23405       -0.02029        0.00000
3681 PNT P03E    -0.24536        0.00794        0.00000
3682 PNT P03P    -0.24464       -0.00400        0.00000
3683 PNT pl1     -1.00000        0.00000        0.00000
3684 PNT pl2      1.00000        0.00000        0.00000
3685 SEQA S006  pnt  P01A P00A P00C P00E P00G P00I P00J P00K P00L P019
3686 SEQA S007  pnt  P019 P017 P016 P015 P014 P013 P012 P011 P010 P01B
3687 SEQA S00W  pnt  P03B P049 P046 P04L P04M P04P P03C
3688 SEQA S00R  pnt  P052 P04G P04H P04I P056
3689 SEQA S00S  pnt  P058 P04Z P04X P04W P054
3690 SEQA S00T  pnt  P05F P05D P05C P05A P059
3691 SEQA S001  pnt  P01A P009 P008 P007 P006 P005 P00N
3692 SEQA S00E  pnt  P03E P002 P00O P00P P03P
3693 SEQA S00L  pnt  P052 P04D P04C P03B
3694 SEQA S00A  pnt  P02M P00T P00V P00W P00X P00Z P01B
3695 SEQA S00X  pnt  P03C P04R P04T P054
3696 SEQA S002  pnt  P00N P004 P003 P03E
3697 SEQA S00P  pnt  P03P P00R P00S P02M
3698 LINE L003 P01A P052 910
3699 LINE L00C P01A P019 S006 120
3700 LINE L00E P019 P01B S007 120
3701 LINE L004 p4 P1 150
3702 LINE L05F P2 P05L -204
3703 LINE L05S P05L P05S -912
3704 LINE L05C P1 P05J 120
3705 LINE L006 P01B P054 910
3706 LINE L007 P019 P056 910
3707 LINE L008 P058 P019 -910
3708 LINE L00G P05S P05V -210
3709 LINE L00N P03B P03C S00W 130
3710 LINE L03R P052 P056 S00R 120
3711 LINE L00I P05V P05N 210
3712 LINE L03S P058 P054 S00S 120
3713 LINE L04V p4 P059 -204
3714 LINE L04W P059 P052 -912
3715 LINE L04X P054 P05F 912
3716 LINE L04Z P05F P1 204
3717 LINE L050 P05F P059 S00T 150
3718 LINE L052 P059 P05G 120
3719 LINE L054 P05F P05H 120
3720 LINE L056 P05H P058 -912
3721 LINE L058 P056 P05G 912
3722 LINE L059 p3 P05I 130
3723 LINE L05A P05I p4 120
3724 LINE L05D P05J P2 130
3725 LINE L05V P056 P05N 130
3726 LINE L05I P05M p3 204
3727 LINE L05L P05N P05M 912
3728 LINE L05Z P058 P05S 130
3729 LINE L06C P019 P05V 130
3730 LINE L06F P05M P05G 130
3731 LINE L06H P05G P05I 204
3732 LINE L06I P05L P05H 130
3733 LINE L06J P05H P05J 204
3734 LINE L001 P01A P00N S001 -210
3735 LINE L00A P03E P03P S00E 120
3736 LINE L00K P052 P03B S00L 110
3737 LINE L009 P02M P01B S00A 210
3738 LINE L00O P03C P054 S00X 110
3739 LINE L002 P00N P03E S002 -205
3740 LINE L00L P03P P02M S00P 205
3741 LINE cl pl1 pl2 120
3742 LINE L005 P00O P019 120
3743 LCMB C001  + L001 + L002 + L00A + L00L + L009
3744 LCMB C004  + L00K + L00N + L00O
3745 GSUR A001 + BLEND + L003 + C004 - L006 - C001
3746 GSUR A002 + BLEND + L006 - L03S + L008 + L00E
3747 GSUR A003 + BLEND + L00C + L007 - L03R - L003
3748 GSUR A004 + BLEND - L008 + L05Z + L00G - L06C
3749 GSUR A005 + BLEND + L06C + L00I - L05V - L007
3750 GSUR A00I + BLEND - L04W - L050 - L04X - C004
3751 GSUR A00J + BLEND - L04V + L004 - L04Z + L050
3752 GSUR A00K + BLEND + L04Z + L05C - L06J - L054
3753 GSUR A00L + BLEND + L06J + L05D + L05F + L06I
3754 GSUR A00N + BLEND + L04V + L052 + L06H + L05A
3755 GSUR A00O + BLEND - L06H - L06F + L05I + L059
3756 GSUR A00P + BLEND + L04W + L03R + L058 - L052
3757 GSUR A00R + BLEND + L04X + L054 + L056 + L03S
3758 GSUR A00S + BLEND - L058 + L05V + L05L + L06F
3759 GSUR A00T + BLEND - L056 - L06I + L05S - L05Z
3760 SETA wall l L05C
3761 SETA wall l L059
3762 SETA wall l L05A
3763 SETA wall l L05D
3764 SETA profil l L00C
3765 SETA profil l L00E
3766 SETA profil l L001
3767 SETA profil l L00A
3768 SETA profil l L009
3769 SETA profil l L002
3770 SETA profil l L00L
3771 SETA in l L004
3772 SETA out l L05F
3773 SETA out l L05S
3774 SETA out l L00G
3775 SETA out l L00I
3776 SETA out l L05I
3777 SETA out l L05L
3778\end{verbatim}
3779
3780
3781\subsection{\label{If and while demo}If and while demo}
3782\begin{figure}[h]
3783\epsfig{file=ifwhile.eps,width=12cm}
3784\caption{\label{Result of If and while demo}Result of If and while demo}
3785\end{figure}
3786The if and while commands can be nested. A demo which produces some points on the window follows:
3787\begin{verbatim}
3788text if&value&while demo
3789# def the leading letter of point names
3790valu vp P
3791# define the initial x value
3792valu vx 0.
3793# define parameters
3794valu v2 4
3795valu v3 1
3796# start loop:
3797while vx < v2
3798 valu vy 0.
3799 valu vz 0.
3800 seto S1
3801 while vy < v2
3802  # define the pnt coordinates
3803  valu vy + vy v3
3804  valu vy int vy
3805  valu vx int vx
3806  valu vz int vz
3807  # define the pnt name
3808  valu p1 & vp vy
3809  valu p1 & p1 vx
3810  valu p1 & p1 vz
3811  # generate the pnt
3812  pnt p1 vx vy vz
3813 endwhile
3814 setc
3815 valu vy 0.
3816 valu vz 1.
3817 seto S2
3818 while vy < v2
3819  valu vy + vy v3
3820  valu vy int vy
3821  valu vx int vx
3822  valu vz int vz
3823  valu p2 & vp vy
3824  valu p2 & p2 vx
3825  valu p2 & p2 vz
3826  pnt p2 vx vy vz
3827 endwhile
3828 setc
3829 valu vx + vx v3
3830 if vx == 1
3831   plot pa S1 r
3832 else
3833   plus pa S2 b
3834 endif
3835endwhile
3836send all fbd
3837# demo on how to write the content of variables to writedemo.txt
3838valu vx int vx
3839valu vy int vy
3840sys echo VX: vx VY: vx VZ: vz >| writedemo.txt
3841\end{verbatim}
3842
3843
3844\subsection{\label{Data storage in a user dataset}Data storage in a user dataset}
3845\begin{verbatim}
3846# Example: Calculate normals of all free surfaces
3847# and write them to a new dataset
3848#
3849# get the number of surface nodes
3850seta n f all
3851comp n do
3852stack on
3853prnt se n
3854stack off
3855valu sum_nods pop
3856# calculate the normals
3857# and write all face-nodes to the stack (it writes them in inverse order)
3858stack on
3859norm n
3860stack off
3861#
3862# store the node numbers and values in array's (nod1 to nod<sum_nods>)
3863val n sum_nods
3864while n > 0
3865  valu cur_nod & nod n
3866  valu cur_val1 & val1_nod n
3867  valu cur_val2 & val2_nod n
3868  valu cur_val3 & val3_nod n
3869  val cur_nod pop
3870  val cur_val1 pop
3871  val cur_val2 pop
3872  val cur_val3 pop
3873  valu n - n 1
3874  valu n int n
3875endwhile
3876#
3877# create a new dataset
3878ds g NORMAL 3
3879#
3880# use the 'node' command to write data to the new dataset
3881# REMARK: 'n' has to be masked ('\') since is is already defined as a value
3882val \n sum_nods
3883while n > 0
3884  valu cur_nod & nod n
3885  valu cur_val1 & val1_nod n
3886  valu cur_val2 & val2_nod n
3887  valu cur_val3 & val3_nod n
3888  # code for cgx_2.16:
3889  val \cur_nod cur_nod
3890  val \cur_val1 cur_val1
3891  val \cur_val2 cur_val2
3892  val \cur_val3 cur_val3
3893  # optional code for cgx_2.15:
3894  #val \cur_nod + cur_nod 0
3895  #val \cur_val1 + cur_val1 0
3896  #val \cur_val2 + cur_val2 0
3897  #val \cur_val3 + cur_val3 0
3898  valu cur_nod int cur_nod
3899  node cur_nod v cur_val1 cur_val2 cur_val3
3900  valu n - n 1
3901  valu n int n
3902endwhile
3903# set entity parameters
3904ds e nx 1 2 1
3905ds e ny 2 2 2
3906ds e nz 3 2 3
3907# finish
3908ds f
3909\end{verbatim}
3910
3911
3912\subsection{\label{User File Parser}User File Parser}
3913The following file will be parsed and two new datasets will be created. The nodes and elements must hve been read before.
3914\begin{verbatim}
3915# Modelname: oragl
3916# 0rAg1 version: 19.7
3917## ONLINE OUTPUT ##
3918** CONTACT ELEMENT STATES @ amplitude=1.584893e-04
3919el.nr stick[%] slip[%] sep[%] FN mean[N] FN min[N] FN max[N] MU
3920208 0.0000 0.3594 0.6406 -1.7391E-02 -9.3037E-02 0.00005 6.00E-01
3921209 0.0703 0.2734 0.6562 -8.3892E-03 -4.6994E-02 0.00E00 6.00E-01
3922389 1.0000 0.0000 0.0000 -1.3890E+03 -1.3890E+03 -1.38E03 6.00E-01
3923390 1.0000 0.0000 0.0000 -6.9448E+02 -6.9450E+02 -6.94455 6.00E-01
3924391 1.0000 0.0000 0.0000 -1.3890E+03 -1.3890E+03 -1.38895 6.00E-01
3925392 1.0000 0.0000 0.0000 -6.9448E+02 -6.9452E+02 -6.94435 6.005-01
3926
3927** CONTACT ELEMENT STATES @ amplitude=2.511886e-04
3928el.nr stick[%] s1ip[%] sep[%] FN mean[N] FN min[N] FN max[N] MU
3929208 0.0000 0.3594 0.6406 -2.7563E-02 -1.4745E-01 0.00005 6.00E-01
3930209 0.0703 0.2734 0.6562 -1.3296E-02 -7.4481E-02 0.00005 6.00E-01
3931389 1.0000 0.0000 0.0000 -1.3890E+03 -1.3890E+03 -1.38895 6.00E-01
3932390 1.0000 0.0000 0.0000 -6.9448E+02 -6.9451E+02 -6.94445 6.00E-01
3933391 1.0000 0.0000 0.0000 -1.3890E+03 -1.3890E+03 -1.38895 6.00E-01
3934392 1.0000 0.0000 0.0000 -6.9448E+02 -6.9454E+02 -6.94415 6.00E-01
3935\end{verbatim}
3936The following code asks for the filename of the above listed data and stores the node related data in two new datasets with each seven entities.
3937\begin{verbatim}
3938valu string1 el.nr
3939valu string2 **
3940valu string3 CONTACT
3941
3942# provide oragl cstate filename:
3943valu file ?
3944
3945read file stack
3946stack on
3947prnt st si
3948stack off
3949valu sum_recs pop
3950
3951val nn 0
3952while nn < sum_recs
3953  valu nn + nn 1
3954  valu nn int nn
3955  valu record & L nn
3956  val record pop
3957endwhile
3958stack free
3959
3960valu nn 0
3961stack on
3962while nn < sum_recs
3963  valu nn + nn 1
3964  valu nn int nn
3965  valu record & L nn
3966  # REC record
3967  val record push
3968  valu arg1 pop
3969  valu arg2 pop
3970  if arg2 eq string3
3971    valu amplitude pop 4
3972    # AMP amplitude
3973    valu amplitude push =\
3974    valu amplitude pop 2
3975  endif
3976  if arg1 eq string1
3977    # found record arg1 string1
3978    # create a new dataset
3979    ds g CSTATE 7 amplitude
3980    valu cur_nod 0
3981    #
3982    while cur_nod ne string2
3983      # in while cur_nod ne string2
3984      valu nn + nn 1
3985      valu nn int nn
3986      if nn >= sum_recs
3987        # break nn sum_recs
3988        valu cur_nod string2
3989      else
3990        valu record & L nn
3991        val record push
3992        valu cur_nod pop
3993        valu arg1 pop
3994        valu arg2 pop
3995        valu arg3 pop
3996        valu arg4 pop
3997        valu arg5 pop
3998        valu arg6 pop
3999        valu arg7 pop
4000        node cur_nod v arg1 arg2 arg3 arg4 arg5 arg6 arg7
4001        seta CNODES \n cur_nod
4002        stack free
4003      endif
4004    endwhile
4005
4006    # set entity parameters
4007    ds e stick[%] 1
4008    ds e slip[%] 2
4009    ds e sep[%] 3
4010    ds e FNmean 4
4011    ds e FNmin 5
4012    ds e FNmax 6
4013    ds e MUE 7
4014    # finish
4015    ds f
4016    valu nn - nn 1
4017    valu nn int nn
4018  endif
4019endwhile
4020stack off
4021stack free
4022\end{verbatim}
4023
4024\end{appendix}
4025
4026\begin{thebibliography}{99}
4027
4028\bibitem{mesa} OpenGL-Like Rendering Toolkit, from Brian Paul, http://www.mesa3d.org/
4029
4030\bibitem{glut} OpenGL Utility Toolkit (GLUT), from Mark J. Kilgard
4031%, http://reality.sgi.com/mjk_asd/glut3/glut3.html, Copying-Policy: Freely redistributable, not public domain.
4032
4033\bibitem{cgx} CalculiX GraphiX (cgx), from Klaus Wittig, klaus.wittig@calculix.de
4034\bibitem{NETGEN} NETGEN, unstructured mesher from Joachim Schoberl, https://sourceforge.net/projects/netgen-mesher/
4035\bibitem{TETGEN} TETGEN, unstructured mesher from Hang Si, http://wias-berlin.de/software
4036\bibitem{dolfyn} dolfyn, Open Source CFD code, http://www.dolfyn.net
4037\bibitem{duns} Duns, a two- and three dimensional cfd code, http://sourceforge.net/projects/duns/
4038 \bibitem{isaac} ISAAC, a two- and three dimensional cfd code, http://isaac-cfd.sourceforge.net
4039\bibitem{OpenFOAM} OpenFOAM, a three dimensional cfd code, http://www.opencfd.co.uk
4040\bibitem{tochnog} Tochnog, a free fem-code, http://tochnog.sourceforge.net/
4041\bibitem{tutorial} Tutorial for CalculiX, from Dr. Guido Dhondt, http://www.dhondt.de/tutorial.html
4042
4043\bibitem{ImageMagick} ImageMagick 5.1.0 00/01/01 Q:8 cristyg@mystic.es.dupont.com. Copyright: Copyright (C) 2000 ImageMagick Studio
4044
4045\bibitem{Firefox} Mozilla Foundation, http://www.firefox.com
4046
4047\bibitem{Coons} S. A. Coons, 'Surfaces for computer-aided design of space forms'. Project MAC, MIT (1964). Revised to MAC-TR-41 (1967).
4048\bibitem{mesh2d} mesh2d, unstructured 2D-mesher from B. Kaan Karamete, Ph.D, No URL Available
4049
4050\bibitem{spline} Paul Dierckx, Curve and Surface Fitting with Splines, Oxford. University Press, 1993
4051
4052\end{thebibliography}
4053
4054\end{document}
4055