The Manual of APDL-Mode
***********************

Version 20.7.0 Time-stamp: "2021-10-23"

— The Detailed Node Listing —

APDL-Mode Usage

Configuration and Customisation

APDL Reference

Installation and Development

News

Further Resources

Todos

1 Copyright and Copying
***********************

Copyright © 2020 - 2021 H.  Dieter Wilhelm

   Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.  A copy of the license is included, see GNU Free Documentation License.

2 Foreword
**********

APDL, Ansys Parametric Design Language
(https://de.wikipedia.org/wiki/ANSYS_Parametric_Design_Language) is the
solver scripting language of the mechanical FEA, Finite Element Analysis
suite Ansys (http://www.ansys.com), ANalysis SYStem, registered TM.

   APDL-Mode, is - in conjunction with the GNU-Emacs
(https://www.gnu.org/software/emacs/) editor - an advanced APDL
environment with features like, browsing the APDL reference
documentation, keyword completion and abbreviations, code templates and
code outlining / folding, dedicated highlighting, solver communication
(GNU-Linux only), license reporting, etc.  Please convince yourself in
the APDL-Mode in-depth documentation.

   With the advent of the modern Ansys GUIs - like ‘WorkBench’ or
‘Discovery’ - the usage of APDL as a wholesale modelling language has
waned for highly variable tasks which are expensive to script.  But,
nevertheless, APDL is here to stay: ‘WorkBench’ operates exclusively the
Ansys solver with it!  It assembles and sends APDL input (.dat) files to
the solver.  For a true understanding of the GUI’s inner workings a
study of their APDL code is prerequisite!  Moreover, WorkBench is not
supporting all MAPDL solver features.  So "Command (APDL)" objects are
used to enhance the GUI’s modelling capabilities.

   APDL-Mode is equally useful for studying solver (.dat) files which
were created by WorkBench.  And, especially, for writing WorkBench
‘Command’ objects and inspecting longer command snippets from other
sources.  Accessing the Ansys APDL reference documentation without
detour - this alone - is worth using APDL-Mode.

   When you "Export" (or "Import") such a WorkBench "Command (APDL)"
object, it becomes associated with a file on disk and is accessible for
any kind of editor.  If you modify this file, the "File Status" in
Workbench changes and you can pull-in the updated content with the
"Refresh" button.

3 First Step with APDL-Mode
***************************

Please type ‘M-x apdl’ which opens a buffer in APDL-Mode where you can
inspect the menu bar’s ‘APDL’ and ‘MAPDL’ entries.  For existing APDL
files please type ‘M-x apdl-mode’ if the mode is not activated already,
please see in Configuration and Customisation, the section
regarding preconfigured file suffixes.

   For further guidance please select the APDL menu ‘APDL-Mode
Documentation’ (or type ‘C-c C-h’) and ‘Describe APDL-Mode’ (or type
‘C-h m’) for the list of its keybindings.  You might also check the
introductory APDL-Mode tutorial
(https://dieter-wilhelm.github.io/apdl-mode/doc/A-M_introductory_tutorial.pdf).

4 Introductory Tutorial for Emacs Concepts
******************************************

This introduction is targeted at users with no GNU-Emacs experience.

   Let’s assume you wrote some APDL command and want to check its
parameters.  In the menu bar use the "APDL" pull-down menu with the
entry "Show APDL Command Help".  The menu shows also the keyboard
shortcut for accessing this command ‘M-?’.  You need to know that
Gnu-Emacs is abbreviating certain key sequences M-?  means typing the
control key <ALT> and the regular key ‘?’ simultaneously.

   GNU-Emacs provides also a third, so called interactive way to access
this and other functions.  By typing ‘M-x’ (the <ALT> key and the ‘x’
key at the same time) you are able to access the, so called,
‘minibuffer’ below the status line.  Minibuffer (emacs) for more
information.  There you can input the desired function by its name.  In
above example the function ‘apdl-show-command-parameters’.  So type
‘M-x’ and in the minibuffer type ‘apdl-start-ansys-help’ and starting it
with the <RET> key.

   Typing long function names can be abbreviated with the
auto-completion feature.  Just enter the first few characters of a
command and then press the <TAB> key.  Another way of saving keystrokes
is to use the Gnu-Emacs’ fuzzy logic.  Instead of typing
‘apdl-show-command-parameters’ it is sufficient to type ‘a-s-c-p’ (and
run it with <RET>).

   You can always cancel minibuffer and other commands by typing C-g
(the function ‘keyboard-quit’), i.  e.  pressing the <CTRL> key and the
‘g’ key at the same time.

   All functions described in this help, regardless whether possessing a
keyboard shortcut or not, can be called in this interactive way or they
can be found in the APDL or Ansys menu.  (If you prefer to run Emacs in
a terminal window you might access the menu bar with <F10> key or
‘M-‘’.)

   You may have noticed the underlined names in this help.  These are
hyperlinks to further help, a mouse click or typing the <RET> key, when
the cursor is on them (you can skip to these links with the <TAB> key)
will display their respective help strings.

   In case something unintended happened to your code you are always
able to resort to the Emacs ‘undo’ functionality from the "Edit" menu or
by typing ‘C-x u’.  emacs for the complete editor
documentation.

5 APDL-Mode Usage
*****************

5.1 Finding Help for APDL keywords
==================================

Reading the original Ansys documentation of APDL keywords can be done in
two ways.  One option is an in-buffer display of a brief apdl command
description and the second option is browsing the complete Ansys HTML
documentation for respective keywords, i.e.  APDL commands, functions
and element names.

5.1.1 Brief Command Help with Argument Counter
----------------------------------------------

Typing "M-?", the <ALT> key simultaneously with the "?"  the question
mark (for the command ‘apdl-show-command-parameters’) displays above the
respective code line a brief description of the APDL command and its
arguments.  This command counts also the number of arguments and
visualises at which argument position the cursor is.  The command is
looking for the next valid command near the cursor or when using a
prefix argument ("C-u M-?"  or "M-4 M-?")  it inquires an APDL command
from you.  The tooltip vanishes after a certain time (depending on the
customisation variable ‘apdl-parameter-help-duration’) or it is switched
off with an prefix argument for this command of zero ("M-0 M-?").

5.1.2 Browsing the APDL Keyword Documentation
---------------------------------------------

The command ‘apdl-browse-apdl-help’ (C-c C-b) allows browsing the
original manual of APDL commands, elements, functions and selected
topics.

   Typing "C-c C-b" will display the original Ansys help in your web
browser for all APDL commands, element names (stating the element number
is sufficient), get- or parametric-functions (for the functions it might
be necessary to write an opening parenthesis, e.g.  "sin(", to
distinquish them from command names).  "C-c C-b" is looking for keywords
on and before the cursor or - if this fails - for APDL commands at the
line beginning.  This is also working for commented out code lines.

   When using a prefix argument (typing C-u before C-c C-b) the command
inquires a keyword from you.  Keywords beginning with a quotation mark
‘"’ are describing general manual sections, for example typing
‘"SHELLS"’ will call the collection of all shell elements from the Ansys
manual.  You can complete your input with the <TAB> key to show the
remaining completions or make it unique.

   Above quotation mark mechanism is implemented with "#" anchors for
the Ansys help files.  This mechanism is not working for locally
installed help files on Windows systems when GNU-Emacs is calling the
default system browser (a security feature).  In this case you have to
specify specify explicitly which browser Emacs should invoke e.g.
Emacs’ EWW eww or other installed browsers.

   Please see Miscellaneous (apdl-config.org) on how to do this.  Please
see section Configuration and Customisation on how to do this.

5.2 Code Templates
==================

You are learning and also coding APDL best by example!  APDL-Mode
provides coding examples, here called templates, for the most often used
modelling subjects.  Moreover you are able to compile your own WorkBench
/ Discovery AIM Command templates and have them all immediately
available in any macro file or WorkBench command object for inspection
and inclusion.

5.2.1 Model Templates
---------------------

You are able to preview the model templates with "C-c C-s" (for
‘apdl-display-skeleton’), while doing this, you might type <TAB> to
complete all available skeleton names.

   Check e.  g.  ‘apdl-skeleton-outline-template’, type "M-x
apdl-skeleton-outline-template <RET>" to insert this skeleton of APDL
code with outline headings.  Alternatively you can use the binding
"<CTRL> + u M-x apdl-skeleton-outline-template" for inserting templates
instead of previewing them.

5.2.2 WorkBench Command Object Templates
----------------------------------------

APDL-Mode has also a small collection of code snippets for WorkBench
command objects.  You can preview these templates with "C-c C-w" (for
‘apdl-display-wb-skeleton’) or choose them from the menu.

5.3 Editing Code
================

5.3.1 Completions and Abbreviations
-----------------------------------

APDL keyword completion (commands, elements, get- and
parametric-functions)

   Type the first letter or letters of an APDL command, function or
element name and use the key binding "C-M-i" to let the function
‘apdl-complete-symbol’ do the (case sensitive) completion for you.
Depending on the case of your letter or letters to be completed, you
will get a down-cased, up-cased or capitalised completion.

   There are around 2000 APDL symbols available for completion.
Undocumented APDL commands and deprecated element types are also
completed.  The former are identified as such with a different
highlighting and in their ’command syntax help’.  Please see also the
variable ‘apdl-deprecated-element-alist’ it’s a list with the deprecated
elements and their respective replacements (for inspecting its content
please click on above hyperlink or type "C-h v" and then type above
variable name).

   Doing this using the <TAB> key might save you some typing in
auto-completing the name.  When the characters before the cursor are not
unambiguous a completion list is shown, select the suitable word from
the list, either by navigation the cursor over the symbol and typing
<RET> or clicking with the left (or middle) mouse button is completing
the symbol.  Hitting the <SPACE> key removes the listing window.

   An example of an abbreviation is typing "‘do" (the backquote "‘" then
"do") and the space key <SPC> triggers an interactive code template
which inserts a *DO loop (‘apdl-do’).  Whereas typing "‘d" (and <SPC>)
is an immediate version of a do loop without requesting user input
(‘ansys_do’).  You can see all the predefined abbreviations with "‘?",
i.  e.  a question mark "?"  after the backquote "‘".  Alternatively you
might use the menu entry "List Mode Abbreviations" or the command ‘M-x
list-abbrevs <RET>’ to inspect all definitions.

   Off course, in Emacs you can define your own abbreviations.  See
Abbrev Concepts (emacs).  But there is also the "dynamic" abbreviation
facility.  Please type the beginning of a word which is already present
in the text and type ‘M-/‘.

5.3.2 Comment Handling
----------------------

commenting/un- for example of whole paragraphs.

   • "M-;" calls ‘comment-dwim’ (Do What I Mean ;-):

   In a code line: This command inserts comment char
‘apdl-indent-comment-string’ at ‘apdl-code-comment-column’ (if feasible,
i.  e.  the code line is not too long).  With a prefix argument: Kill
existing code comment.

   With an highlighted region: Commenting out (‘comment-region’) or
Uncommenting (‘uncomment-region’) that region.

   In an empty line: Inserts ’!!  ’ with the right indentation.

   • "C-M-j" (or "M-j", calls ‘indent-new-comment-line’).

   Breaks a code comment and inserts a single exclamation mark ’!’
(‘apdl-comment-char’) at column ‘apdl-code-comment-column’ (if
possible).

   In comment lines ’!!  ’ with two comment characters
(‘apdl-indent-comment-string’) breaks the comment and begins a the same
comment style at the current indentation.

   In an empty line or a line without comment: Just inserts a new line.

5.3.3 Inserting Pairs
---------------------

Moreover there are keyboard shortcuts with which you are able to input
pairs of corresponding characters, like ‘C-c %’ for ’%%’, the APDL
substitution operators.  The advantage is that the cursor is placed
between the pair and you might specify a region before this command to
include the whole region.

   Alternatively you might provide numerical arguments to the call and
you are able to enclose already existing words within the pair, e.  q.
"C-2 C-c %" enclosing the next two words inside the pair "%%".

   Please have a look for ‘insert-pair’ and check the menu entry of
APDL-Mode’s keybindings.

5.3.4 Auto-indentation
----------------------

of looping and conditional blocks.

   You can customise the indentation depth (APDL Block Offset), please
have a look for the entry ’Customise APDL Mode’ in the APDL-Mode menu.
The Emacs customisation facility optionally saves your choices
automatically in your init (.emacs) file for later sessions.

5.3.5 Closing of Control Blocks
-------------------------------

(*do, *if, ...) with the insertion of appropriate end keywords

   Typing "C-c ]" for the function ‘apdl-close-block’ completes the
current APDL block with the insertion of a newline and an appropriate
end keyword.

5.3.6 Code Alignment
--------------------

Formatting of variable definitions:

   Typing "C-c C-a" to call the function ‘apdl-align’ will align a
paragraphs or marked sections of variable definitions like the following

     xyz=30.381      !this is a variable
     x = 0.4!this is another variable

   which will be aligned to

     xyz = 30.381 !this is a variable
     x   =  0.4   !this is another variable

5.3.7 Auto-insertion
--------------------

of code templates into new APDL files.

   Put the following section in your init (.emacs) file, in case you
want to to include above skeleton (optionally) for every APDL file.

     (auto-insert-mode 1)
     (add-hook ’find-file-hook ’auto-insert)
     (setq auto-insert-query t)
     (add-to-list ’auto-insert-alist ’(apdl-mode .
     [apdl-skeleton-outline-template]))

   Please refer to the configuration example ‘apdl-config.el’.

5.4 Code Navigation, Outlining and Hiding
=========================================

Navigating code lines, number blocks, and *DO,*IF, DOWHILE, *CREATE
blocks, etc.

   "M-n" – ‘apdl-next-code-line’ and "M-p" – ‘apdl-previous-code-line’

   Are going to the next/previous code line, skipping intermediate
comments and empty lines.

   The following block navigation commands are analogous to Emacs’
inbuilt list/sexp (expressions in parentheses / balanced expression)
navigation.

   "C-M-f" – ‘apdl-next-block-end’ "C-M-b"
–‘apdl-previous-block-start-and-conditional’

   Above commands are skipping to the next/previous block end/start
keyword regardless where you are already in the block structure.
"C-M-b" for the function ‘apdl-previous-block-start-and-conditional’
finds also *IF commands without bases of the keyword ’THEN’; furthermore
*CYCLE and *EXIT looping controls.  These provide APDL constructs but
represent no block depth and therefore are not considered when applying
the following navigation commands.

   "C-M-n" – ‘apdl-skip-block-forward’ "C-M-p" –
‘apdl-skip-block-backwards’

   Are looking for and skipping over a complete block (at the current
block level, skipping possibly over deeper block structures).

   "C-M-u" – ‘apdl-up-block’ "C-M-d" – ‘apdl-down-block’

   Are searching for and skipping up/down a block structure from the
current block level.

   "C-c {" – ‘apdl-number-block-start’ "C-c }" – ‘apdl-number-block-end’

   Are searching for and skipping over ’pure’ number blocks (the nblock,
eblocks and cmblocks), these are common (and often quite large) in
WorkBench solver input files (*.inp, *.dat).

5.4.1 Hiding Number Blocks
--------------------------

You can also hide and unhide these - usually uninteresting - blocks with
M-x ‘apdl-hide-number-blocks’ and M-x ‘apdl-show-number-blocks’
respectively or even a region of your (dis)liking with M-x
‘apdl-hide-region’.  In files with the suffix ‘.dat’ number blocks are
hidden by default.

5.4.2 Outlining
---------------

(folding and expanding) code sections.

   If you are using the preconfigured APDL-Mode then function
‘outline-minor-mode’ is switched on by default.

   With this mode you can hide certain sections of your code or navigate
to customisable outline headings.  Certain characters –by default ’!@’
(see the variable ‘apdl-outline-string’)– at the beginning of a line in
your code represent such headings.  ’!@@’ specifies a subheading and so
on.  Check out the Outline menu entries.  Since Emacs 28.1 you are able
to fold with <SHIFT>+<TAB>
   • and cycle outline states - all outline headings and on a header
   line the respective header with the <TAB> key.

   Please call the function ‘apdl-skeleton-outline-template’ to insert a
skeleton of outline sections in your current file.

   In case outlining is not activate you might call Outline Minor Mode
with "M-x outline-minor-mode" or you can enable this mode for the
current session by ticking on the respective option in the menu or
permanently by setting ‘apdl-outline-minor-mode’ for the
‘apdl-mode-hook’ variable.  Please type "M-x apdl-customise-apdl <RET>"
or use the customisation system from the menu: ->APDL ->Customise APDL
Mode.

5.5 Variable Definitions
========================

Checking all variable definitions (*GET, *DIM, *SET, = and DO, ...) and
component names (CM).

   Typing "C-c C-v" (for ‘apdl-display-variables’) shows all definitions
in your APDL file in a separate window.  Together with the corresponding
line numbers.  These numbers are links to the variable definition in the
APDL buffer.  Clicking with the middle mouse button (button-2) on these
numbers is showing the definition in its APDL context.  You can also use
the <TAB> key and Shift <TAB> to skip between the links and type <RET>
to activate the links.

   You can remove the ’*APDL-variables*’ window with "C-x 4 k"
(‘apdl-delete-other-window’).

   With a prefix argument for "C-c C-v" you are receiving the current
value of the variable at the current cursor position.  For this to work
it is necessary to have a running Ansys process under Emacs (GNU-Linux
systems only, please see below the chapter about the MAPDL Solver Control).

5.6 Sophisticated Highlighting
==============================

The highlighting in the highest decoration level (please refer to
‘apdl-highlighting-level’) tries to follow the idiosyncratic Ansys
solver/interpreter logic as closely as possible.  For example: ’* ’, an
asterisk with following white-space(s), is still a valid APDL comment
operator (although deprecated, see the Ansys manual for the *LET
command).

   The font colourisation distinguishes between APDL commands,
undocumented commands, parametric- and get-functions, elements
(optionally also user variables) and deprecated elements.  In case of
arbitrary characters after the command names, they are still
highlighted, since these characters are ignored by the Ansys APDL
interpreter.

   A macro is in the Ansys parlance some file with APDL code.  In this
sense it is used in the following documentation.  Additionally you can
create keyboard macros in Emacs to fasten your editing, please see
‘kmacro-start-macro’.

   APDL macro variables beginning with an underscore might be APDL
reserved variables and therefore are highlighted in a warning face.
Another example is the percent sign, its highlighting reminds you that
the use of such a pair around a parameter name might force a parameter
substitution, e.  g.  with the assignment ’I=5’ and ’/com,TEST%I%’, the
/com command outputs TEST5.

   In the context of pairs of ’%’ characters, you can also input various
pairs with keyboard shortcuts, e.  g.  apostrophes for APDL character
parameters with ‘C-c’, please have a look which bindings are available
with "C-h b" (for ‘describe-bindings’).

   The format strings of *MSG, *MWRITE, *VWRITE and *VREAD are also
highlighted (in decoration levels 2, again please refer to
‘apdl-highlighting-level’).  Below is a summary of the C-format
descriptors which can be used for above commands.  (with these format
descriptors there are no parentheses needed in contrast to less general
FORTRAN ones):

   %I Integer data %F Floating point format %G General numeric format %E
Scientific notation %C,%S Character strings (up to 128 characters) or
arrays; %/ Line break %% Single percent sign %wI w is the column width.
Integer is preceded by the number of blank characters needed to fill the
column.  %0wI Same as above except integer is padded by zeroes instead
of spaces.  %0w.pI Pad integer with zeros as necessary to obtain a
minimum of p digits.  %w.pF w is the column width.  Floating point
format to p decimal places.  %w.pG General format with p significant
digits.  %w.pE Scientific notation to p decimal places.  %wC, %wS
Character string with column width of w.  %-wC, %-wS Left justify
character string (right justify is default).  %wX Include w blank
characters.

   example code: *vwrite,B(1,1),B(2,1) %E%/%E

   Regarding the highlighting of user variables: The idea is to give a
visual hint whether variable names are spelled and used correctly
everywhere not only at the place of its definition.

   For this to occur ‘apdl-highlighting-level’ must be set to 2 (the
maximum, which is also the default), please have a look at the
apdl-config.org (apdl-config.org) file on how to change settings.

   Newly edited variable definitions are taken into account only when
the variable ‘apdl-dynamic-highlighting-flag’ is set (for very large
files this might slow Emacs and therefore the flag is only effective for
files ending in ’.mac’) or every times you activating the variable
display (with "C-c C-v", see below) in the maximum highlighting level
(2).

5.7 Process Management
======================

Even when there is no buffer under APDL-Mode, after starting Emacs, for
example, it is possible to run selected APDL-Mode services.  You might
run the license status from the mini-buffer with "M-x"
‘apdl-license-status’ instead of calling it from the menu or with C-c
C-l in an APDL-Mode buffer.  Here is the list of commands which are
available from the mini-buffer without activating APDL-Mode:

   apdl, apdl-mode, apdl-mode-version, apdl-user-license-status and
apdl-license-status apdl-start-classics apdl-start-launcher

   • With the ‘apdl’ command you can start a new file in APDL-Mode.
     With ‘apdl-mode’ you switch to this mode for any file.

   • With ‘apdl-license-status’ you can display available licenses.
     Under APDL-Mode you can use the keys "C-c C-l".  You will see the
     status of the license server in the **License** buffer.  In this
     buffer you can apply additional keys, for example "o" to show only
     selected licenses (compiled from the variable
     ‘apdl-license-occur-regexp’).  See Regular Expressions (elisp)
     for more information.

     Please type "h" or "?"  in the license buffer for a list of
     available keys.

   • You can start Ansys in interactive mode (‘apdl-start-classics’),
     the Product Launcher (‘apdl-start-launcher’) or initiate a batch
     run for the current script (C-c C-y).  You might suppress the
     locking feature of the solver with the environment variable
     ANSYS_LOCK=Off.  So you can run short batch jobs while using the
     Classics GUI with preppost as "viewer".

   • APDL-Mode writes for you an APDL stop file in the current directory
     (the file name is compiled from the variable ‘apdl-job’ and the
     extension ’.abt’).  You can do this with "M-x (<ALT> + x)
     apdl-write-abort-file" (‘apdl-write-abort-file’, you might
     previously use the Emacs command ’M-x cd’ to change the current
     directory).  This stop file is halting a running calculation in an
     orderly, restart enabled way.

   • You are able to view the Ansys APDL error file (a file consisting
     of the ‘apdl-job’ and the suffix ’.err’ in the current directory)
     with "C-c C-e" (this calls ‘apdl-display-error-file’).  The error
     file is opened in read only mode (see ‘read-only-mode’) and with
     the minor mode ‘auto-revert-tail-mode’ the buffer scrolls
     automatically to the end to keep the current output visible.

     The same is working for ’.out’ files with "C-c C-o" (for
     apdl-display-out-file) to monitor the convergence of your (batch)
     run.

   • You can start the Ansys Help Viewer from Emacs with "M-x
     apdl-start-ansys-help" (for ‘apdl-start-ansys-help’).  For this
     functionality you must have the help system installed otherwise you
     will be redirected to the online help in a browser, this is the
     default since Ansys 19.

   • You might also start the APDL product launcher from Emacs under
     windows or the APDL interpreter under GNU-Linux with "C-c RET" (for
     ‘apdl-start-ansys’).
   • For displaying the licenses you are using type "C-c C-z"
     (‘apdl-user-license-status’).  Please type "h" or "?"  in this
     license buffer for the list of available keys.

     If your Ansys installation is not in the default locations
     APDL-Mode might not be able to find its executables.  Or you want
     to use mixed Ansys version installations then it is necessary to
     customise some variables.  Either by calling the Emacs
     customisation facility ‘apdl-customise-apdl’ or from the menu bar
     -> ’APDL’ -> ’Customise APDL Mode’ -> ’APDL-process’ and look there
     for the variables ’Ansys License File’, ’Ansys Util Program’ and
     ’Ansys Help Program’ as well as ’Ansys Help Program Parameters’) or
     set the variables directly in your .emacs file.  Please have a look
     in apdl-config.org and the apdl-config.el customisation example.

5.8 MAPDL Solver Control
========================

MAPDL interpreter and communication (mainly restricted to GNU-Linux
systems).

   With the APDL-Mode keyboard shortcut "C-c RET" (for the command
‘apdl-start-ansys’) you can start the APDL solver/interpreter under
GNU-Linux as an asynchronous process of Emacs.  After starting the run
you will see all interpreter output in a separate Emacs ’comint’
(command interpreter) window.  You are now able to interact with this
process in three ways, either by typing directly in the ’*APDL*’ window
or using "C-c C-c" (for ‘apdl-send-to-ansys’).  With the latter you can
send either the current code line or a whole selected region to the
running solver.  (A selected region means highlighted lines of code.  If
there is no running solver the function copies the code to the system
clipboard.)  And lastly you are able to send interactively APDL commands
with "C-c C-q" (‘apdl-query-apdl-command’) without switching to the
’*APDL*’ window.  If you would like to send your current code line in a
slightly modified form, then give a prefix argument to
‘apdl-query-apdl-command’ and the line will be the initial input for
sending it to the interpreter.

   Another very useful function in this context is "C-c C-u"
(‘apdl-copy-or-send-above’), which sends all code from the beginning up
to the current line to the solver/interpreter.  If there is no running
interpreter the function copies the code to the system clipboard.

   The last two commands (‘apdl-copy-or-send-above’ and
‘apdl-send-to-ansys’) are skipping to the next code line (if possible).
If you don’t need this behaviour supply any prefix argument to them and
the cursor will remain in the current line or in the last line of the
previously highlighted region.

   When you are not familiar with Emacs’ keybindings you probably want
to select your part of interest with dragging the mouse pointer while
pressing the first mouse button.  Often it is faster to select regions
with specialised keyboard commands.  For example "C-M-h"
(‘apdl-mark-block’) marks a whole block level, "M-x mark-paragraph
(‘mark-paragraph’) marks the current paragraph, the last command can not
only be used to initialise a new selection but also to extend an
existing one when repeating the command.  Please check the code
navigation commands which APDL-Mode provides (type "C-h b"
(‘describe-bindings’) to see which are available).

   In this mode you are able to start an Ansys graphics screen (without
the rest of graphical user interface) with M-x apdl-start-graphics
(function ‘apdl-start-graphics’).  Thus you are able to check and debug
your macro file content visually.  The graphics in this state is
changeable with APDL commands (like /view,1,1,1,1) but unfortunately not
through mouse interactions!  If you want to turn, zoom, etc., the model
it is best to call ‘apdl-start-pzr-box’ with C-c C-p and a dialog box
will pop up.  This is the usual Ansys Pan/Zoom/Rotate dialog for the
graphics screen.  But beware: Before you are able to send further
commands to the solver, you first have to close the PZR dialog box.
There is also a family of interactive commands to reposition the
graphics, like C-c C-+ (‘apdl-zoom-in’), re-plotting works with C-c C-r
(‘apdl-replot’) and a fit to the screen with C-c C-f (‘apdl-fit’), of
course, they are available from the menu as well.

   There is also a command for saving the data and ending the solver
run: ‘apdl-exit-ansys’ and a command for an emergency kill in case the
solver is not stoppable any longer in an orderly way: ‘apdl-kill-ansys’.

   As already indicated APDL-Mode has its own command for invoking the
Ansys Help Viewer "M-x apdl-start-ansys-help" because unfortunately the
following APDL commands do not work when the complete GUI system of
Ansys is not active.

   /ui,help !is it not working in Ansys non-GUI modes help, COMMAND !is
also not working in Ansys non-GUI modes

   So you are not able start the Help Viewer for a *specific* APDL
command but must search within the Ansys Help Viewer or better use the
much faster "C-c C-b".

6 Configuration and Customisation
*********************************

Most functionality of APDL-Mode is working without additional
configurations.  APDL-Mode is intelligent enough to figure out Ansys
installation dependent paths.  For regular Ansys installations, it
chooses by default the highest installed Ansys version on your system.

   APDL-Mode configures GNU-Emacs to open all files with the suffixes
".mac", ".ans", ".dat" and ".inp" under apdl-mode.  (The latter two file
types might come from Ansys WorkBench input files which are usually huge
program generated files.)

   You can change the APDL-Mode configurations permanently by 1.  using
the Emacs customisation system Easy Customization (emacs) or 2.
by directly manipulating the Emacs configuration file Init File (emacs).

  1. For an overview of available APDL-Mode customisation’s variables
     it’s easiest to open the APDL-Mode’s customisation buffer either
     with the command ‘M-x apdl-customise-apdl’ or from the menu bar ->
     ’APDL’ -> ’Customise APDL Mode’ and search for interesting options.
     Another way of using the customisation facility is to open the help
     of respective variables.  Let’s change for example the highlighting
     level which is stored in the customisation variable
     ‘apdl-highlighting-level’: Open its documentation with "C-h v"
     ‘apdl-highlighting-level’.  In its help buffer you can click on the
     hyperlink ‘customize’ at the bottom.  You might set a value for
     this particular variable only for the current session or you might
     add your choices automatically in the Emacs configuration file for
     future sessions.

  2. The following describes editing the Emacs configuration file (for
     example ~/.emacs or ~/.emacs.d/init.el).  These customisations are
     written in ‘Emacs-Lisp’.  The comment sign in this language is ‘;’
     (one semi-colon ‘;’).

6.1 Conventions
===============

used in _apdl-config.el_, APDL-Mode’s example configuration file.
Textual hints in _apdl-config.el_ are indicated with TWO semi-colons
‘;;’, please uncomment only the code lines with a SINGLE comment sign
and change them when appropriate.

   Please add the interesting code lines into your GNU-Emacs init file
or load your adjustments of this file with ‘(load-file
"PATH/apdl-config.el")’ from your init file.

6.2 Important Prerequisite
==========================

For using Ansys processes, like getting license information, the Ansys
Installation path with version information is necessary.  APDL-Mode is
looking in different places and is using environment variables to detect
your Ansys installation but if you have a non default installation it
might not be able to find it.  In that case please configure your
installation path up to and including the Ansys versioning number.

   You can change the installation path for the current session with the
MAPDL menu entry "Change Installation Directory".

     (cond ((string= window-system "x")
             ;; This condition is an example of an installation directory on GNU-Linux
             (setq apdl-ansys-install-directory "/appl/ansys_inc/v201/"))
             ;; the default might look like "/ansys_inc/v201/"
            (t ;; The default condition is an example of an installation directory on WINDOWS
             ;; Emacs is using here forward slashes as under Unix and not the backslash "\"!
             (setq apdl-ansys-install-directory "D:/Ansys Inc/v201/")))
             ;; default: "C:/Program Files/Ansys Inc/v201/"

   If your Ansys installation differs completely from the standard Ansys
directory structure, or if you want to use multiple versions of Ansys,
then please consult the section Installation dependent configurations.

6.3 File suffixes
=================

For auto loading APDL-Mode please customise your file suffixes for which
Ansys mode is automatically called for.

6.3.1 Macro files
-----------------

_.mac_ is the macro suffix of Ansys i.  e.  these macro files can be
called in the Ansys command prompt or APDL like a regular Ansys function
(without the suffix _.mac_).

   APDL-Mode has configured GNU-Emacs to open files with this suffix
under apdl-mode.  Please check the _example.mac_ file in the _doc_
folder.

   With the following setting

     (add-to-list 'auto-mode-alist '("\\.apdl$" . apdl-mode))

   files with the suffix _.apdl_ will be opened under APDL-Mode.

6.3.2 WorkBench generated input files
-------------------------------------

_.dat_ and _.inp_ are WorkBench’s solver input file suffixes.  See the
file _example.dat_ in the _doc_ folder.

   APDL-Mode has configured GNU-Emacs to open files with these suffixes
under apdl-mode.

6.3.3 The Ansys Neutral file format
-----------------------------------

_.anf_ is the suffix for "Ansys Neutral" files which include mostly
geometric data but also some APDL snippets.  These files are used for
imports, see the file _example.anf_ in the _doc_ folder.

     (add-to-list 'auto-mode-alist '("\\.anf$" . apdl-mode))

     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ;; file suffixes for autoloading of APDL-Mode, appropriate file
     ;; suffixes for which Ansys mode is automatically called for

     ;; .mac is the macro suffix of Ansys i. e. these macros can be called
     ;; in the Ansys command prompt like a regular Ansys function (without
     ;; the suffix .mac).  See the file doc/example.mac

     ;; APDL-Mode has configured GNU-Emacs to open files with this suffix
     ;; under apdl-mode.

     ;; (add-to-list 'auto-mode-alist '("\\.mac$" . apdl-mode))
     (add-to-list 'auto-mode-alist '("\\.ans$" . apdl-mode))

     ;; .dat and .inp are WorkBench's solver input file suffixes
     ;; See the file doc/example.dat

     ;; APDL-Mode has configured GNU-Emacs to open files with these suffixes
     ;; under apdl-mode.

     ;; (add-to-list 'auto-mode-alist '("\\.dat$" . apdl-mode))
     ;; (add-to-list 'auto-mode-alist '("\\.inp\\'" . apdl-mode))

     ;; .anf is the suffix for "Ansys Neutral" files which include mostly
     ;;  gometric data but also some APDL snippets. See the file
     ;;  doc/example.anf.
     (add-to-list 'auto-mode-alist '("\\.anf$" . apdl-mode))

6.4 Auto insertion
==================

of code.  With the following code block Emacs inserts (after query) an
outline of a code structure when creating a new file with any suffix in
the ‘auto-mode-alist’ for ‘apdl-mode’, please see above section).

     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                               ;; Auto insertion
     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ;; auto insertion stuff (when creating a new APDL file)

      (auto-insert-mode 1)                        ; insert automatically templates
      (add-hook 'find-file-hook 'auto-insert) ; when opening new files
      (setq auto-insert-query t)   ; aks for auto insertion of APDL template

      (add-to-list 'auto-insert-alist
       '(apdl-mode . [apdl-skeleton-outline-template])) ;which template to insert

6.5 Miscellaneous
=================

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                ;; Miscellaneous
      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

     ;; use Emacs' EWW browser for locally installed help
     (setq browse-url-browser-function 'eww-browse-url)
     ;; use the default system browser
     ; (setq browse-url-browser-function 'browse-url-default-browser)

     ;; Some element collections, like "SHELLS" are implemented with `#'
     ;; anchors which are not standard URLs.  This leads to an error on
     ;; Windows with w32-shell-execute for locally installed help files.
     ;; Browsers don't mind the anchors, so in this case use either EWW
     ;; (see above) or specify an installed browser in your init file, see
     ;; below example for MS Edge:

       (defun browse-url-edge (url &optional new-window)
       (shell-command
        (concat "start msedge " url)))

       ; (setq browse-url-browser-function 'browse-url-edge)

     ;; The amount of time the help overlay is shown from
     ;; (`apdl-show-command-parameters').

     ; (setq apdl-parameter-help-duration 30) ; 30 seconds, the default
     (setq apdl-parameter-help-duration "2 min")

     ;; If you want to read the manual in GNU-Emacs' EWW browser.  This
     ;; might only work for locally installed help documents (a 1.7 GB
     ;; package v201) since v191 the online help is the default help
     ;; system.

     ;; You might use this variable to create you own templates
     ;; in `apdl-wb-template.el'.

     (setq apdl-wb-custom-template-directory "c:/my_macros/") ; new in 20.4.0

     ;;  APDL-Mode mode configures the following variable from the
     ;;  evironment to show your license usage in
     ;;  `apdl-user-license-status'.  It is the user ID you are registered
     ;;  for the license server.  This is only necessary if APDL-Mode can't
     ;;  find the environment variable USERNAME.

     (setq apdl-username "myUserID")                 ; new in 20.4.0

6.6 Outlining
=============

Activating outline minor mode for selectively hiding and revealing code
sections:

     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                  ;; Outlining
     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ;; activating outline minor mode for selectively hiding/unhiding
     ;; sections

     (add-hook 'apdl-mode-hook 'apdl-outline-minor-mode) ;enable outlining

6.7 Highlighting (Colourisation)
================================

6.7.1 Dynamic highlighting
--------------------------

of variables.  The following toggles a dynamics change of the
highlighting: While you are editing your new variable definitions
highlighted and the cursor position is shown in the parameter help
overlay

   Uncommenting the following might slow the editing of large .mac, .inp
or .ans files.

     (setq apdl-dynamic-highlighting-flag nil)
     ; (setq apdl-dynamic-highlighting-flag t) ;default: t

6.7.2 Decoration levels
-----------------------

Highlighting decoration levels 0, 1 and 2 are available.  The APDL-Mode
default is level 2.

6.7.3 Summary
-------------

     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                          ;; Highlighting/Colourisation
     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

     ;; The following toggles a dynamics change of the highlighting: While
     ;; you are editing your new variable definitions highlighted and the
     ;; cursor position is shown in the parameter help overlay

     ;; Uncommenting the following might slow the editing of large .mac,
     ;; .inp or .ans files.

      (setq apdl-dynamic-highlighting-flag nil)
     ; (setq apdl-dynamic-highlighting-flag t) ; default

     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ;; fontification (highlighting) of user variables and decoration
     ;; levels (0,1,2 are available)

      (setq apdl-highlighting-level 1) ; default: 2

6.8 Installation dependent configurations
=========================================

Further things you possibly have to configure if your Ansys installation
is completely differing from a default Ansys installation path, or if
you want to mix various Ansys versions:

       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                              ;; Ansys version and paths
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

       ;; Things you might have to configure if your Ansys installation is
       ;; completely differing from default Ansys installation paths, as in
       ;; the example below, especially if you want to use mixed version
       ;; installations of Ansys:

     (setq apdl-ansys-help-program
         "/appl/ansys_inc/20.0.1/v201/commonfiles/help/HelpViewer/AnsysHelpViewer.exe")
         ;; the default under GNU-Linux looks like this:
         ;; "/ansys_inc/v201/commonfiles/help/HelpViewer/AnsysHelpViewer.exe"
     ;; On WINDOWS: slash before /d: is unnecessary, but possible?
     (setq apdl-ansys-help-path "d:/Program Files/Ansys Inc/16.2.0/v201/commonfiles/help/en-us/help/")
     (setq apdl-ansys-help-path "/appl/ansys_inc/16.2.0/v201/commonfiles/help/en-us/help/")
     (setq apdl-ansys-launcher "/appl/ansys_inc/v201/ansys/bin/winx64/launcher")
     (setq apdl-ansys-wb "/appl/ansys_inc/v201/Framework/bin/Linux64/runwb2")
     (setq apdl-ansys-program "/appl/ansys_inc/19.3.0/ansys/bin/ansys195")
     (setq apdl-lmutil-program "/appl/ansys_inc/19.3.0/shared_files/licensing/linx64/lmutil")

6.9 Ansys processes
===================

6.9.1 License server
--------------------

or license file.

   The more license servers are specified in ‘apdl-license-file’ the
longer it takes to get the license status.

   License server configuration: License servers (or license file name)
you have to specify also the port for (since Ansys V12.0).  On GNU-Linux
GNU-Linux: License servers are separated by colons (":"), on Windows
with semicolon ";".  1055 is the default port.

   the following variable APDL-Mode is checking the environment
variables AnsysLMD_LICENSE_FILE and MD_LICENSE_FILE.

     (setq apdl-license-file
       "1055@frlifl01.auto.contiwan.com:1055@frlifl02.auto.contiwan.com")

   since Ansys 12.0 there is an intermediate server for the
communication between flexlm and Ansys WorkBench, 2325 is here the
default port.  But the solver/interpreter is checking this server as
well!?

     (setq apdl-ansysli-servers
        "2325@frlifl01.auto.contiwan.com:2325@frlifl02.auto.contiwan.com")

6.9.2 Solver options
--------------------

Number of cores for the run: 4 does not require HPC licenses

     (setq apdl-no-of-processors 8) ; default: 4

   Which license type to use for the solver

     (setq apdl-license "preppost") ; default: "ansys"

   The Ansys job name

     (setq apdl-job "harmonics1") ; default: "file"

6.9.3 Summary
-------------

       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                              ;; Ansys processes stuff
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       ;; license server configuration

       ;; GNU-Linux 64 bit only !!! Warning specifiying many license server
       ;; takes a long time for displaying the license status!!!

        ;; for starting the solver & apdl-license-status & Ansys help
       (setq                 ;
        ;; license servers (or license file name)
        ;; specify even the default port for lmutil (since Ansys V 12.0) on GNU-Linux
        ;; GNU-Linux: License servers separated by colons (":"), 1055 is the default port
        apdl-license-file
        "32002@ls_fr_ansyslmd_ww_1.conti.de"

        ;; since Ansys 12.0 there is an intermediate server for
        ;; the communication between flexlm and Ansys, 2325 is the default port
        apdl-ansysli-servers
        "2325@ls_fr_ansyslmd_ww_1.conti.de"
        )

       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        ;; options when starting the solver
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

       ;; Number of cores for the run, 4 does not require HPC licenses
        (setq apdl-no-of-processors 8) ; default: 4

       ;;  which license type to use for the solver
        (setq apdl-license "preppost") ; default: "ansys"

       ;; Ansys job name
        (setq apdl-job "harmonics1"); default: "file"

     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                   ;; The End
     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

     (provide 'apdl-config)

     ;;; apdl-config.el ends here, the rest are Emacs variables

     ;; Local Variables:
     ;; no-byte-compile: t
     ;; show-trailing-whitespace: t
     ;; indicate-empty-lines: t
     ;; time-stamp-active: t
     ;; time-stamp-format: "%:y-%02m-%02d"
     ;; End:

7 APDL Reference
****************

7.1 WorkBench to APDL Translation
=================================

7.1.1 Contacts
--------------

7.1.1.1 default 3D thermal contact
..................................

          2333        6        5        6        0     6458     6457     6422     6421     8356     8306     8303     8304
     -1
     keyo,cid,8,2               ! auto create asymmetric contact (from Program Controlled setting)
     keyo,cid,10,2              ! adjust contact stiffness each NR iteration (from Program Controlled setting)
     keyo,cid,12,5              ! bonded always
     keyo,cid,2,0               ! augmented Lagrange (from Program Controlled setting)
     keyo,cid,4,0               ! on Gauss point (from Program Controlled setting)
     keyo,cid,9,1               ! ignore initial gaps/penetration
     keyo,cid,7,0               ! No Prediction
     rmod,tid,3,10.        ! FKN
     rmod,tid,5,0.        ! ICONT
     rmod,tid,6,0.        ! PINB
     rmod,tid,10,0.        ! CNOF
     rmod,tid,12,0.        ! FKT
     rmod,tid,36,31        ! WB DSID
     rmod,cid,3,10.        ! FKN
     rmod,cid,5,0.        ! ICONT
     rmod,cid,6,0.        ! PINB
     rmod,cid,10,0.        ! CNOF
     rmod,cid,12,0.        ! FKT
     rmod,cid,36,31        ! WB DSID
     *set,_maxkxx,605000.
     rmod,cid,14,_maxkxx/_ASMDIAG         ! TCC, Divide by Length since Traction Based
     rmod,tid,14,_maxkxx/_ASMDIAG      ! TCC, Divide by Length since Traction Based
     keyo,cid,1,2     ! Pure thermal contact
     /com,*********** Create Contact "Contact Region 2" ***********
     /com,            Real Constant Set For Above Contact Is 8 & 7
     *set,tid,8
     *set,cid,7
     r,tid
     r,cid
     et,tid,170
     et,cid,174
     eblock,10,,,94
     (15i9)
          2334        8        8        8        0     8439     8419     8443     8443     8793     8794     8443     8866

7.1.2 Material Models
---------------------

7.1.2.1 Plasticity
..................

Multilinear Kinematic Hardening (MISO) Implementation:
     TB,PLAS,1,1,2,MISO
   This means that one must input the curve in plastic strains and true
stresses, *not* in the engineering quantities!

7.1.3 Boundary conditions
-------------------------

  1. forces

     it is possible to apply time and spatially varying loads either
     tabular or functional.  Example (depending on the coordinate sys.):
     =10*sin(x)
     moment
          scope: geometric selection, named selection, remote point
          contact pair: conta174, targe170 and pilot node similar to
          remote point pilot node is placed at the centre of the geom.
          curvature moment is applied around the reference coordinate
          system.  pinball radius (might) reduce(s) the memory intensive
          range of participating elements
     remote point
          contact pair with reference geometry and pilot node(point)
     remote force
          contacts with pilot node MPC formulation (flexible or rigid)
     pressure
          surf154, sf
     force
          surf154, sfe "line force": surf156, sfe
     bolt pretension
          prets179 (WB: select only ONE face for whole stud!)
     bearing load
          surf154,Elements selected in load direction and pressure load
          applied on projected area (WB: select ALL faces of a
          cylinder!)
     hydrostatic pressure
          surf154, sfgrad and sf

  2. Pressure

     Surface elements ‘surf154’ and surface loads on elements (‘sfe’)
            /com,*********** Define Pressure Vector Using Surface Effect Elements ***********
            local,12,0,0.,0.,0.,0.,0.,0.
            csys,0
            et,2,154
            eblock,10,,,10
            (15i9)
                   61        2        2        2       12      116      107       67       66      398      328      325      326
                   62        2        2        2       12      115      114      107      116      407      397      398      408
                   63        2        2        2       12      107      108       68       67      396      330      327      328
                   64        2        2        2       12      114      113      108      107      406      400      396      397
                   65        2        2        2       12      108      109       69       68      399      332      329      330
                   66        2        2        2       12      113      112      109      108      405      402      399      400
                   67        2        2        2       12      109      110       70       69      401      334      331      332
                   68        2        2        2       12      112      111      110      109      404      403      401      402
                   69        2        2        2       12      110      106       71       70      395      336      333      334
                   70        2        2        2       12      111      105      106      110      394      393      395      403
            -1
            esel,s,type,,2
            keyop,2,2,1                ! Apply load in local coordinate system
            keyop,2,11,2               ! Use real and not project area
            esel,all

            *DIM,_loadvari28x,TABLE,2,1,1,TIME,
            ! Time values
            _loadvari28x(1,0,1) = 0.
            _loadvari28x(2,0,1) = 1.
            ! Load values
            _loadvari28x(1,1,1) = 0.
            _loadvari28x(2,1,1) = -1.

            *DIM,_loadvari28y,TABLE,2,1,1,TIME,
            ! Time values
            _loadvari28y(1,0,1) = 0.
            _loadvari28y(2,0,1) = 1.
            ! Load values
            _loadvari28y(1,1,1) = 0.
            _loadvari28y(2,1,1) = -1.

            *DIM,_loadvari28z,TABLE,2,1,1,TIME,
            ! Time values
            _loadvari28z(1,0,1) = 0.
            _loadvari28z(2,0,1) = 1.
            ! Load values
            _loadvari28z(1,1,1) = 0.
            _loadvari28z(2,1,1) = 0.

            ...

          esel,s,type,,2
          nsle
          sfe,all,1,pres,1,%_loadvari28x%
          sfe,all,2,pres,1,%_loadvari28y%
          sfe,all,3,pres,1,%_loadvari28z%
          nsel,all
          esel,all

  3. displacements

     remote displacement
          x,y,z, displacments are for the pilot node NOT the entire
          area!
     simply supported
          hinge for beams (rotations are free)
     elastic support
          surf154, r(4)=foundation stiffness, default thickness=1,
          damping possible
     cylindrical support
          rotation with nmodif,node,x,y,z,thxy,...
     compression only support
          rigid surf2surf contacts

       1. Frictionless Support

          Fixing normal displacement with (‘d’), possibly modifying
          nodal coordinate system (‘nmodif’), turning into normal
          direction.
               /com,********* Frictionless Supports X *********
               CMBLOCK,_FRICSUX,NODE,       48
               (8i10)
                       61        62        63        64        65        66       115       116
                      117       118       119       120       121       122       123       124
                      ....
                      408       409       410       411       412       413       414       415
                      416       417       418       419       420       421       422       423
               cmsel,s,_FRICSUX
               d,all,ux,0
               nsel,all
               nsel,all
               /com,*********** Node Rotations ***********
               nmod,61,,,,-43.6672749853753,0.,0.
               ...

7.2 APDL Reference
==================

7.2.1 Idiosyncrasies
--------------------

   • You can only store character variables of 8 characters, strings of
     32 characters and for a maximum of 248 characters you need to
     create a string array!
   • No proper function definitions <- write ‘command’ files (suffix:
     .mac), or call a macro (arbitrary suffix) with ‘*use’, something
     close is to fill a "table" arry, interpolating values and possible
     real indexing A(0.3).
   • you can get table array values with real index values but must use
     integers for assigning them the values, the same goes for *vplot:
     it needs the arry indices in integers and is, moreover, only
     capable to plot the columns and not their line values!
   • *vplot does only plot the columns of arrays, it is not possible to
     specify rows
   • No direct array values to file export in GUI mode <- write command
     file for *vwrite, or use a (lookup) table for this purpose
   • *vwread does not work with C format specifiers in contrast to
     *vwrite
   • Still (v15) no *round* function in sight, but someting like
     nint(max*1e3)/1e3 might do for you
   • One cannot directly get the variable value, either one must assign
     the variable to another one, or use the ‘*stat’ command
   • Operators > and <: 1 < 2 = 1; 2 < 1 = 1; 2 > 1 = 2 :TODO check
   • Inconsistent command naming: /{x,y}range but /axlab,{x,y},
   • Inconsistent optional command arguments: "csys,wp" or "csys,4" but
     it must be ltrans,4 (not possible: ltrans,wp)
   • Inconsistent comma usage: /com and c*** are working with and
     without a subsequent comma (/com without a comma is eating one
     character)
   • The /contour command does not work on device /show,PNG
   • Deletion of arry parameters without warning is only possible with
     an undocumented option: *del,Array,,nopr
   • *cfwrite does parameter substitution without %%: *cfwrite, X_points
     = NoN,*cfwrite, the same as X_points = %NoN%????
   • No direct operations on arrays, like A=A*3, takes a detour with
     *voper or *toper
   • Load symbol vectors /pbc,all,,1 in /prep7 are uniform in contrast
     to the more ralistic ones in /solu
   • The solver recognises only complete block structure, sending it
     line by line is not working

7.2.2 File types
----------------

the whole zoo is documented in the operations guide

No    Type                                                               Name       temp.   Remark                               Format
-------------------------------------------------------------------------------------------------------------------------------------------
1     abort                                                              .abt                                                    binary
2     graphics annotation commands                                       .ano       yes                                          ascii
3     neutral file format                                                .anf       no                                           ascii
4     animation                                                          .anim                                                   binary
5                                                                        .ans_log                                                ascii
6     input data copied from batch input file /batch                     .bat       yes
7     sparce solver                                                      .bcs       no      run time statistics                  ascii
8     interpolated body forces (bfint)                                   .bfin      no                                           ascii
9                                                                        .cdb
10    sparce solver                                                      .dsp               run time statistics                  ascii
11    interpolated DOF data (cbdof)                                      .cbdo      no                                           ascii
12    color map                                                          .cmap      no                                           ascii
13    default command file suffix (*cfopen, *cfwrite)                    .cmd       no                                           ascii
14    component mode synthesis                                           .cms       no                                           binary
15    nonlinear diagnostics file (nldiag)                                .cnd       no                                           ascii
16    pcg solver                                                         .pcs               run time statistics                  ascii
17    workbench solver input                                             .dat                                                    ascii
18    database                                                           .db                                                     binary
19    db backup                                                          .dbb                                                    binary
20    databas from vmseh failure in batch mode                           .dbe       no                                           binary
21    fortran solution information                                       .dbg       no                                           ascii
22    Do-loop nesting                                                    .do#       yes
23    scratch file modal analysis                                        .dscr      yes                                          binary
24                                                                       .D#
25    perfomance information sparse solver distributed                   .dsp       no                                           ascii
26    scratch file distributed sparse solver                             .dsp#                                                   binary
27    Superelement DOF solution from use pass                            .dsub      no                                           binary
28    Element definitions (EWRITE)                                       .elem      no                                           ascii
29    element matrices                                                   .emat                                                   binary
30    element saved data                                                 .esav
31    errors and warnings                                                .err                                                    ascii
32    distributed memory                                                 #.err
33    rotated element matrices                                           .erot      yes
34    Element saved data ESAV files created by nonlinear analyses        .esav      yes                                          binary
35    scratch file PCG Lanczos eigensolver                               .evc       yes                                          binary
36    scratch file PCG Lanczos eigensolver                               .evl       yes                                          binary
37                                                                       .ext
38                                                                       .exti
39    local results file distributed memory                              #.ext
40    stiffness-mass matrices                                            .full                                                   binary
41    Fatigue data [FTWRITE]                                             .fatg      no                                           ascii
42    neutral graphics file                                              .grph      no                                           ascii
43    Graphical solution tracking file                                   .gst       no                                           binary
44    IGES file from Ansys solid model data [IGESOUT]                    .iges      no                                           ascii
45    initial state                                                      .ist
46    Loading and bc of load steps (used for multiframe restart)         .ldhi                                                   ascii
47    Database command log file [LGWRITE]                                .lgw       no                                           ascii
48    scratch file for sparse solver                                     ???.ln#    yes
49    Load case file (where nn = load case number) [LCWRITE]             .l#        no                                           binary
50    Factorized stiffness matrix                                        .ln22      no                                           binary
51    Command input history                                              .log       no                                           ascii
52    lock file                                                          .lock      yes     prevent runs in the same directory   binary
53    scratch file mode superposition                                    .lscr      yes
54    scratch file substructure pass w/ more than 1 load vector          .lv        yes                                          binary
55    macro                                                              .mac                                                    ascii
56    Mapping data [HBMAT]                                               .mapping   no                                           ascii
57    Mapping data in Harwell-Boeing format [HBMAT]                      .matrix    no                                           asc/bin
58    Modal coordinates from harmonic or transient analysis              .mcf       no                                           ascii
59    modal element load vector                                          .mlv       no                                           binary
60    Nonlinear analysis convergence monitoring                          .mntr      no                                           ascii
61    modal analyses                                                     .mode                                                   binary
62    Material property definitions [MPWRITE]                            .mp                                                     ascii
63    Modal analysis frequencies and mode shapes                         .modesym   no                                           binary
64    mode-superposition transient (multiframe restart)                  .m#                                                     binary
65    Nonlinear diagnostics file tracking contact quantities [NLHIST]    .nlh       no                                           ascii
66    Node definitions [NWRITE]                                          .node      no                                           ascii
67    Stores Newton-Raphson iteration information [NLDIAG,NRRE,ON]       .nr        no                                           binary
68    old element .esav data from converged solution                     .osav
69    Solver messages                                                    .out       no                                           ascii
70    slave output file distributed memory                               #.out
71    database virtual memory                                            .page      yes     if database space unavailable
72    Parameter definitions [PARSAV]                                     .parm      no                                           ascii
73    Stores performance information when running the PCG solver         .pcs       no                                           ascii
74    FLOTRAN printout file                                              .pfl       no                                           ascii
75    plot file extension for electromagnetic trainsient                 .plt
76    Stores pivot information when running the sparse solver            .pvts      no                                           ascii
77    scratch file for PCG solver                                        .pc#       yes                                          binary
78    scratch file for PCG solver                                        .pda       yes                                          binary
79    scratch file for PCG solver                                        .pma       yes
80    Results file for initial contact state                             .rcn       no                                           binary
81    restart database                                                   .rdb       no
82    FLOTRAN residual file [FLDATA,OUTP]                                .rdf
83    Database from structural analyses after # times of rezoning        .rd#       no                                           binary
84    mode-superposition transient reduced displacements                 .rdsp      no                                           binary
85    mode-superposition harmonic reduced complex displacements          .rfrq      no                                           binary
86    flotran res.                                                       .rfl                                                    binary
87    magnetic res.                                                      .rmg                                                    binary
88    structural results                                                 .rst                                                    binary
89    combination of local results file in distributed memory            #.rst
90    linear perturbation results                                        .rstp
91    FLOTRAN "wall" results file                                        .rsw       no                                           ascii
92    FLOTRAN run data                                                   .run       no                                           ascii
93    thermal results                                                    .rth                                                    binary
94    Results file from structural analyses after nn times of rezoning   .rs#       no                                           binary
95    nonlinear static or full transient                                 .r#
96    load step No # [LSWRITE]                                           .s#                                                     ascii
97    scratch file for Jacobi Conjugate Gradient solver                  .scr       yes                                          binary
98    Superelement load vector data from generation pass                 .seld
99    scratch file for supernode solver                                  .snode#    yes                                          binary
100   Superelement name and number from use pass                         .sort
101   Status of an Ansys batch run                                       .stat      no                                           ascii
102   scratch file for substructure generation pass                      .sscr      yes                                          binary
103   substructure matrices                                              .sub
104   Hyperelastic material constants                                    .tb        no                                           ascii
105   Renamed DSUB File for input to substructure expansion pass         .usub      no                                           binary
106   FLOTRAN boundary condition data (Ansys to FLOTRAN)                 .xbc       no                                           ascii
107   FLOTRAN geometry data (Ansys to FLOTRAN)                           .xgm       no                                           ascii
108   FLOTRAN initial condition data (Ansys to FLOTRAN)                  .xic       no                                           ascii
109   restart                                                            .x#
110   Old (10/11) WorkBench database                                     .wbdb      no                                           binary
111                                                                      .dsdb
112   WB archive                                                         .wbpz                                                   binary
113   FE Modeler                                                         .fedb
114   Engineering Data                                                   .eddb
115   Engineering Data                                                   .xml
116   DesignXplorer                                                      .dxdb
117                                                                      .mechdat
118   Mesh input file                                                    .cmdb
119                                                                      .meshdat
120   WorkBench project database                                         .wbpj
121   design point                                                       .wbdp
122   WB material - AKA "engineering" data                               .engd
123   DesignModeler database                                             .agdb

   • .mac
   • .db
   • .dbb

7.2.3 Defining parameters
-------------------------

up to 5000

7.2.3.1 Double, char38, char8, logical, TODO
............................................

in table only 8 chars?

7.2.3.2 Variable names
......................

Called ‘parameter’ in the Ansys manual.  All numeric values are stored
as double precision values.  Not defined variables are assigned a tiny
value near zero.  The interpreter is not case sensitive :TODO except in
strings?
   • Parameters must begin with a letter or an underscore
     1ansys = 3                    !is not a valid variable name
     a1nsys = 3                    !a1nsys is a valid variable name
     A1NSys = 4                    !this is the same variable
     A1NSys = Temp                 !`Temp' is not defined, near zero
   The following text is the respective Ansys solver/interpreter output.
     BEGIN:
      1ansys = 3                    !is not a valid variable name
     PARAMETER 1Ansys =     3.000000000
     *** ERROR ***                           CP =       0.259   TIME= 18:06:41
     Invalid character in parameter name.
      The setting of parameter= 1Ansys is ignored.
     BEGIN:
      a1nsys = 3                    !a1nsys is a valid variable name
     PARAMETER A1NSYS =     3.000000000
     BEGIN:
      A1NSys = 4                    !this is the same variable
     PARAMETER A1NSYS =     4.000000000
     BEGIN:
      A1NSys = Temp                 !`Temp' is not defined
     *** WARNING ***                         CP =       0.260   TIME= 18:06:56
     Unknown parameter name= TEMP.  A value of 7.888609052E-31 will be used.
     PARAMETER A1NSYS =    0.7888609052E-30
     BEGIN:
   Should not begin with an underscore This convention is used in
nameing variables in Ansys supplied macros and the GUI.

     _ansys = 3   !`_ansys' represents a reserved variable in Ansys supplied macros
     _ = 3        ! a single underscore definition is valid
     X = _
     _ = 3 !the single underscore represents  also a `variable' in APDL
   • Variable names with a trailing underscore These are hidden from the
     ‘*status’ command output and can be deleted as a group with ‘*del’.
     ansys_ = 3              !this is a `hidden' variable from *status
     *status                 !does not show `ansys_'
            ,PRM_            !show variables with trailing underscore
     *del,,PRM_              !delete all variables with trailing underscore
      BEGIN:
     ansys_ = 3
      PARAMETER Ansys_ =     3.000000000
      BEGIN:
      *status
      ABBREVIATION STATUS-
       ABBREV    STRING
       SAVE_DB   SAVE
       RESUM_DB  RESUME
       QUIT      Fnc_/EXIT
       POWRGRPH  Fnc_/GRAPHICS

      PARAMETER STATUS-           (      5 PARAMETERS DEFINED)
                       (INCLUDING        4 INTERNAL PARAMETERS)

      NAME                              VALUE                        TYPE  DIMENSIONS
      X                                 3.00000000                    SCALAR
      BEGIN:
     ,PRM_
      PARAMETER STATUS- PRM_      (      5 PARAMETERS DEFINED)
                       (INCLUDING        4 INTERNAL PARAMETERS)

      NAME                              VALUE                        TYPE  DIMENSIONS
      Ansys_                            3.00000000                    SCALAR
      BEGIN:
   • Must contain only letters, numbers and underscores
     !! only letters, numbers and underscores are allowed
     a1n§sys = 3              !this is not a valid variable name
     a1n_sys = 3              !this is a valid variable name
   the Ansys interpreter output looks like this:
     BEGIN:
      a1n§sys = 3              !this is not a valid variable name
     *** ERROR ***                           CP =       0.256   TIME= 17:35:07
     Invalid character in parameter name.
      The setting of parameter= A1N§SYS is ignored.
     BEGIN:
      a1n_sys = 3              !this is a valid variable name
     PARAMETER A1N_SYS =     3.000000000
     BEGIN:
   • Must contain no more than 32 characters
     !! The following is not a valid variable name
     v23456789_123456789_123456789_123 = 3
     !! The following is a valid variable name
     v23456789_123456789_123456789_12  = 3
   • Local Variables
     Depth  =  ARG1 !ARG{1-9}, AR{10-19} = "*use" variables
     AR18 = AR19
     *stat,argx

7.2.3.3 Character strings
.........................

Must not contain more than 32 characters
     ! character string variables are enclosed with `''
     Yc = '012345678901234567901234567890123' !not a character variable any more
     Symetry = 'yes'

7.2.4 Erasing variables from memory
-----------------------------------

     !! defining
     Scalar = 3               !the `=' assignment is a shorthand for `*set'
     *set,Scalar,4            !reassignment
     *set,Vector,1,2,3,4,5,6,7,8,9,10
     Vector = 0,1,2,3,4,5,6,7,8,9,10,11,12 !TODO:
     Vector = 4               !TODO:
     !! deleting
     Scalar =     !this is not a variable any more
     *set,Scalar               !alternative to `Scalar ='
     *del,all                 !delete all variables!
     *del,Vector   !TODO:

7.2.5 Variable substitution
---------------------------

with ‘%’

7.2.5.1 Substitution of Numeric Variables
.........................................

In "string commands" like ‘/com’, where a string follows the command
name one can force the substitution of a parameter name to its value.
Other examples are
     Steel = 1
     /com,Material %Steel% is steel
     !! ATTENTION: in the following situation!
     /com,%Steel% does NOT substitute variable Steel
     /com, %Steel% does substitute variable Steel
     /com,Stuff like %Steel+1% returns 2

7.2.5.2 Substitution of Character Variables
...........................................

It is possible to substitute a command name
     R='RESUME'
     %R%,MODEL,DB
     !! string, message commands and comment behaviour && %$$% %% :bla: &&&

     /com, bla = %bla%
     igesin,'test','%iges%'
     /title,Nothing in %particular%
     !! in "string commands" are no code comments possible
     /com,beam3 %YES% ! this is *really not commented out!!!! &
     c*** *beam3 !otto *otto %neither% here !!!!!!! &
     /com, bearm laskf %otto% !%otto% we are here

   • In certain ‘string commands’
   ‘/title’ and ‘/com’ are string commands similar to ‘c***’
     right = 'wrong'
     /title, the value of right is  %right%
     /com, this is %right%: /com does expand parameters as well
   • Unfortunately here is no expansion possible
   neither with ‘c***’ nor with ‘/sys’
     right = 9
     c***,this is %right%: c*** allows no parameter expansion
     /sys,ls "*.mac" %otto% &
     /syp,ls, %otto% !this is not working, no substitution!
     I = 1
     otto = 'file00%I%.eps'
     /syp,ls, otto !this is working as intended

7.2.5.3 Dynamic Substitution of Numeric or Character Variables
..............................................................

or forced substitution (deferred)
     Case = 'case 1'
     /title,This is %Case%
     !! /stitle
     !! *ask
     !! /tlabel
     !! /an3d
     !! in tables TODO:
     aplot
     Case = 'case 2'
     !! not necessary to reissue /title, "This is case 2"
     !! will appear on subsequent plots
     aplot

7.2.6 Expressions
-----------------

7.2.6.1 Exponentiation Operator
...............................

is ‘**’

7.2.6.2 Multiplication Expression
.................................

Beware of the oldstyle Ansys asterisk comment!
     otto = 3 * 4 COMMENT! The value of otto is actually 3!
     var1 = sinh(cos(3 *5)) ! old style Ansys comment!!!!!
     var2 = sinh(cos(3*5))  ! this is valid code
     fini * comment
     !!

7.2.6.3 Operators
.................

‘<’ and ‘>’ :TODO
     otto = 1.82
     karl = 1.97
     margret =  otto < karl !margret = otto
     maria = karl < otto    !maria = otto
     *status,karl > otto

7.2.7 Arrays
------------

4 types: array, char of 8 characters, table and string 128 chars

7.2.7.1 Specifiying array element values
........................................

7.2.7.2 APDL Math
.................

APDL Math works in its own workspace independent of the APDL
environment!
     No = 100
     Pi = acos(-1)
     Dat = cos(0:2*Pi:(2*Pi/No))+ cos(0:2*Pi*10:(2*Pi/No))
     Dat = 0:2*Pi:2*Pi/No
     *vfun
     *vec,import,apdl,Dat
     *fft,Forw,Dat,OutDat,,,Full !what's the difference?
     *fft,    ,Dat,OutDat,,,Part !what's the difference?
     *export,OutDat,apdl,APDLOutDat

7.2.8 debugging
---------------

     debug                    !TODO: undocumented?

7.2.9 Multiple runs, probabilistic design
-----------------------------------------

     PDEXE, Slab, MRUN, NFAIL, FOPT, Fname
     in V11: *mrun                    !TODO:

7.2.10 Undocumented commands
----------------------------

     !undocumented commands are highlighted differently
     /xml                     !undocumented command /xml
     /xfrm                    !documented command   /xfrm

7.3 APDL-Mode Syntax Highlighting Reference
===========================================

7.3.1 Header
------------

     !! ------------------------------
     !@ --- header ---
     !! ------------------------------
     !! Time-stamp: <2012-06-22 16:42:24 uidg1626>
     !! NOTE: This is APDL pseudo code, checking
     !!  APDL-Mode's highlighting capabilities and
     !!  certain aspects of the language
     !!  Please see further below.

     /units,mpa !indicate mm-t-s unit system
     !@ --- Preprocessing ---
     /prep7
     !@@ -- Elements --
     Steel = 1
     ID = Steel
     real = Steel
     et,ID,solid186 !3d, 20 node
     !@@ -- Material --
     mp,nuxy,Steel,0.3 ! Poisson No
     mp,ex,Steel,200000 ! Elastic modulus
     !@@ -- Modeling --
     block,0,1,0,1,0,1
     !@@ -- Meshing --
     vmesh,all
     !@@ -- BCs, Loads --
     nsel,s,loc,x,0
     d,all,all
     nsel,s,loc,x,1
     d,all,uy,-.1
     allsel
     save
     !@ --- Solving ---
     /solu
     solve
     !@ --- Postprocessing --
     /post1
     /view,,1,1,1
     plnsol,u,sum,2
     /image,save,test !save XWindow Dump xwd (or bmp on Windows)
     /image,capture                 !TODO: what is this: file0001.xwd?
     /sys,convert test test.png
     /upwind                  !TODO: 2d-graphics library? dated?
     *fft                     !TODO: :-)

     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     !!  Please put the the cursor below the next paragraph of emacs lisp
     !!  code and type "C-x C-e" to change the setting of
     !!  `ansys-highlighting-level' and `ansys-dynamic-highlighting-flag'
     !!  change the level from 0 to 2 and toggle the flag from `t' to
     !!  `nil'.  Browse the file to check the differences.

     (progn
       (when
           (featurep 'ansys-mode)
         (unload-feature 'ansys-mode))
       (setq
        ansys-highlighting-level 2
        ansys-dynamic-highlighting-flag t)
       (load-file "ansys-mode.el")
       (ansys-mode))

   :TODO !!  —————————— /units,mpa !indicate mm-t-s unit system c
     !@@ -- Ignored characters and condensed input line ($ operator)
     finishThisNightmare $ /cle !/clear
     f $ fi $ fin $ fini $ finis  $ finish $ finisher

7.3.2 Highlighting APDL specials
--------------------------------

7.3.2.1 Reserved words and _RETURN statements
.............................................

     !!
     N      =  _RETURN       !return value of certain commands
     Alpha2 =  +360./(2*N)
     Xc     =  !empty rhs clears variables

7.3.2.2 _RETURN values of macros
................................

     *return                  !TODO: what is this?
     *status,_RETURN          !0 normal
                              !1 note
                              !2 warning
                              !3 error
                              !4 fatal

7.3.2.3 Old style APDL comments
...............................

     var1 = sinh(cos(3 *5)) ! old style Ansys comment!!!!!
     var2 = sinh(cos(3*5))  ! this is valid code
     fini * comment
     otto = 3 * 4 comment, the value of otto = 3!
     !!

7.3.2.4 Ignored characters behind commands
..........................................

     f $ fi $ fin $ fini $ finis  $ finish $ finisher
     !!

7.3.2.5 The End Of File command
...............................

     /eof --- WARNING: /eof crashes the Ansys GUI in interactive mode ---
     !!

     !@@ -- function names --
     Pi=acos(-1) $ True=1 $ False=0 $ Nn=3.1
     Alpha1 = rotx( 14.5) - 360./ (2*Nn)

7.3.2.6 Ignored characters behind commands
..........................................

     f $ fi $ fin $ fini $ finis  $ finish $ finisher
     a $ al $ all $ alls $ allse $ allsel $ allselllllll
     rectngaaaaa,var1,_X2,var2,X2 ! 2d rectangle
     !!

7.3.2.7 The End Of File command
...............................

       /eof --- WARNING: /eof crashes the Ansys GUI in interactive mode ---
       !! /eof stops input for batch runs and the solver returns error code 8
       /exit,nosave           !default is save the model data
     !!

7.3.2.8 Current element types and deprecated elements
.....................................................

     !! A current element type:
     et,10,solid186
     !! deprecated element types:
     et,Steel,beam3 $ et,Alu,shell91
     !!
   Let’s change the element types to current ones!
     !! Complete the following element fragments to current ones!
     !!
     et,Steel,beam $ et,Alu,shell

   For example select the following elements
     et,Steel,beam188 $ et,Alu,shell28
   and you are getting a diffent element highlighting.

     !@@ -- default commands
     nsel,s,loc,y,0
         ,a,loc,y,1
         ,r,loc,x,0
     d,all,all

7.3.3 Implied (or colon) looping
--------------------------------

     !@@ ::: implicit : (colon) looping :::::
     !! (n1:n2:dn)
     lfillt,(1:2),(3:4),5
     !! one subscript per array
     bf,(1:10),temp,Tarray(1:10)
     b(1:5) = 10,20,30,40,50 !TODO: creates this an array?
     !! The *get command and get functions are allowed
     *get,Fx(1:10),node,(1:10),f,fz !TODO:
     a(1:5) = nx(1:5)
     !! TODO:
     Fx(1:10) = (1:100:10)    !is this working? :-)
     !! alternative to *vfill
     *vfill,Fx,ramp,1,10

     !! looping
     *get,Dim
     *if,Dim,le,1,then
       *dim,Reaction,array,Ns,1
     *endif
     *do,I,1,Ns
       set,Ls,I
       fsum
       *get,Fx,fsum,,item,fx
       Reaction(I)=Fx
     *enddo
     !@@ -- multiline *msg formatting with the & operator
     *MSG,UI,Vcoilrms,THTAv,Icoilrms,THTAi,Papprnt,Pelec,PF,indctnc
     Coil RMS voltage, RMS current, apparent pwr, actual pwr, pwr factor: %/ &
     Steel = %G A (electrical angle = %G DEG) %/ &
     _Power factor: %G %/ &
     Inductance = %G %/ &
     VALUES ARE FOR ENTIRE COIL (NOT JUST THE MODELED SECTOR)

7.4 And the rest
================

*taxis only for 3 dimension?  table(0,1) = 3 is working as well

     !@@ --! multiline message format command this is tricky: use M-o M-o
     *MSG,UI,Vcoilrms,THTAv,Icoilrms,THTAi,Papprnt,Pelec,PF,indctnc
     Coil RMS voltage, RMS current, apparent pwr, actual pwr, pwr factor: %/ &
     Steel = %G A (electrical angle = %G DEG) %/ &
     _Power factor: %G %/ &
     Inductance = %G %/ &
     VALUES ARE FOR ENTIRE COIL (NOT JUST THE MODELED SECTOR)
     aldk this is not any longer in the *msg format construct
     /com this is not any longer in the *msg format construct

     *vwrite,B(1,1),B(2,1),%yes%
     alkd %D &
     %E%/%E
     !! commands which do not allow arguments
     /prep7 $ FINISH !$ means nothing behind
     /prep7 !still nothing behind
     /prep7 * old style comment, this is allowed
     /prep7 this is an error
     nsel,s,loc,x,1
     nsel = 3  !you CAN have variable names clashing with commands

     !@@ -- Goto branching --
     *go,:branch
     aselsalsdkfjaölsdkfjaölskdjf,all
     :branch

     !-----------------------------------------------------------------------
     ! mdlbl.mac
     ! Puts Modal Info on Plot
     !-----------------------------------------------------------------------
     /post1
     set,last
     *get,nmd,active,,set,sbst
     pfct= $ ffrq= $ adir=
     nsel,s,l

     *dim,pfct,,nmd,6
         ,
         ,ffrq,,nmd
         ,adir,char,nmd

     adir(1) = 'X','Y','Z','ROTX','ROTY','ROTZ'
     *stat,adir
     *do,i,1,nmd
       *get,ffrq(i),mode,i,freq
       *do,j,1,6
         *get,pfct(i,j),mode,i,pfact,,direc,adir(j)
       *enddo
     *enddo
     /annot,delete
     /plopt,info,0
     /plopt,minm,off
     /triad,off
     /erase
     iadd = arg1
     *if,iadd,eq,0,then
       iadd = 1
     *endif
     /tspe,15,1,1,0,0
     /TSPE, 15, 1.000,   1,   0,   0
     xx = 1.05
     yy = .9
     !  Change the window settings if you need different
     !  aspect ratios for your geometry
     /win,1,-1,1,.5,1
         ,2,-1,1,0,.5
         ,3,-1,1,-.5,0
         ,4,-1,1,-1,-.5
     !
     /win,2,off
     /win,3,off
     /win,4,off

     *get,vx,graph,1,view,x
     *get,vy,graph,1,view,y
     *get,vz,graph,1,view,z
     *get,va,graph,1,angle
     *get,vd,graph,1,dist
     *do,i,2,4
       /view,i,vx,vy,vz
       /dist,i,vd
       /angle,i,va
     *enddo

     *do,i,1,4
       ii = i - 1 + iadd
       set,1,ii
       plnsol,u,sum
       *if,i,eq,1,then
         /noerase
       *endif
       /win,i,off
       *if,i,ne,4,then
         /win,i+1,on
       *endif
     *enddo
     *do,i,1,4
       ii = i - 1 + iadd
       /TLAB, xx, yy  ,Mode: %ii%
       yy = yy - .05
       /TLAB, xx, yy,Freq: %ffrq(ii)%
       yy = yy - .05
       *do,j,1,6
         /TLAB, xx, yy  ,PF %adir(j)%: %pfct(ii,j)%
         yy = yy - .05
       *enddo
        yy = yy -.11
     *enddo
     /erase
     /annot,delete
     sz = .8
     xloc = 0
     yloc = 0

     *dim,data,,5
     data(1) = 12,15,28,10,32
     hsz = sz/2

     /pspec,0,1,1
     /poly,4,xloc-hsz,yloc-hsz,1.8*(xloc+hsz),yloc-hsz,
              1.8*(xloc+hsz),yloc+hsz,xloc-hsz,yloc+hsz

     x0 = xloc + hsz
     y0 = yloc + .7*hsz
     lof = .05

     *vscfun,dsum,sum,data(1)
     /LSPE, 15, 0, 1.000
     /TSPEC, 15, 0.700, 1, 0, 0
     ang1 = 0
     *do,i,1,5
       ang2 = ang1 + (360*data(i)/dsum)
       /PSPE, 2*i, 1, 1
       /PWED, xloc,yloc,sz*.4, ang1,ang2
       /poly,4,x0,y0,x0+lof,y0,x0+lof,y0+lof,x0,y0+lof
       pvl = 100*data(i)/dsum
       /tlab, x0+1.5*lof,y0, %pvl% %

       y0 = y0 - 1.5*lof
       ang1 = ang2
     *enddo
     /eof

8 Installation and Development
******************************

Copyright (C) 2006 - 2021 H.  Dieter Wilhelm, GPL V3

   Please install the GNU-Emacs (https://www.gnu.org/software/emacs/)
Editor first, for all functionality APDL-Mode requires version 25.1
(released in 2016) but its sources can be used with older versions
(Emacs-24).  If you are new to this editor please check its tutorial in
the ‘Help’ menu, or read at least the APDL-Mode introduction.

8.1 Melpa Installation
======================

APDL-Mode is now available on the GNU-Emacs packages archive Melpa
(https://melpa.org/) for Emacs version 25.1 or newer.

   file:https://melpa.org/packages/apdl-mode-badge.svg
(https://melpa.org/#/apdl-mode)
file:https://stable.melpa.org/packages/apdl-mode-badge.svg
(https://stable.melpa.org/#/apdl-mode)

   Please add
     (package-initialize)
     (add-to-list 'package-archives
           '("melpa" . "https://melpa.org/packages/") t)

   to your initialisation file.  Activate this code (for example by
restarting Emacs), then type ‘M-x install-package’, answer the prompt
with "apdl-mode" and conclude this command with <RET>.

   (You might also install it with GNU-Emacs’ package interface ‘M-x
list-packages’, find ‘apdl-mode’, mark it with ‘i’ and install it with
‘x’.)

   If you prefer the stable package archive instead of the development
versions, exchange above package source with
     (add-to-list 'package-archives
     '("melpa-stable" . "https://stable.melpa.org/packages/") t)

8.2 Manual Installation
=======================

If you are behind a corporate firewall and you are not able to install
APDL-Mode from Emacs’ package menu, you can download and install its
package manually:

   • Download the latest APDL-Mode’s tar package from Melpa
     (https://melpa.org/#/apdl-mode) or - for a released package - from
     the Github release page
     (https://github.com/dieter-wilhelm/apdl-mode/releases/) under
     Assets.
   • Install the package within Emacs: Please type ‘M-x
     package-install-file <RET>’ and select your downloaded tar file.

   That’s it.

   *Hint:* If you are getting an error message "package.el is not yet
initialised", you are using Emacs’ packaging system for the first time.
It is necessary to initialise this machinery once, please type: ‘M-:
(package-initialize) <RET>’ (it’s an ’ALT + :’ colon!)  and then apply
‘M-x package-install-file <RET>’ again.

8.3 Development and Source Code Installation
============================================

Please clone the APDL-Mode git archive in a directory of your choice:
     git clone https://github.com/dieter-wilhelm/apdl-mode.git
   or download the GitHub ZIP archive and add the following line
     (require 'apdl-mode)
   to your initialisation file (the source directory must be set in the
‘load-path’ variable as well).

9 Bugs and Problems
*******************

APDL-Mode was tested using Ansys v201 and v211 under Windows 10 with
Emacs-27.1.  Under GNU-Linux the mode was developed and checked under
both Emacs-24.3 and Emacs-28.0.50.

   Feedback is always welcome.  If you have issues while installing and
running this mode or want to suggest improvements you have the following
options:

  1. Write an email to the mode maintainer
     <dieter@duenenhof-wilhelm.de>.  Please trigger a bug report form
     from the APDL-Mode menu or by calling the function
     ‘apdl-submit-bug-report’.  Even if you have not configured Emacs to
     send emails, please copy the content of the mail template for the
     maintainer.

  2. You might issue bug reports or feature requests at APDL-Mode’s
     issues site (https://github.com/dieter-wilhelm/apdl-mode/issues)

  3. And you can leave comments and hints at the APDL-Mode page
     (https://www.emacswiki.org/emacs/APDLMode) of the Emacs Wiki
     (https://www.emacswiki.org).

10 News
*******

Copyright (C) 2006 - 2021 H.  Dieter Wilhelm, GPL V3

10.1 Version 20.7.0
===================

   • new APDL menu entry: Browse the Customer Portal of Ansys

10.2 Version 20.6.0, 15 years of APDL-Mode!
===========================================

Improvements, extensions and bug fixes, 2021-09-26 rc1
   • Implemented batch runs with the current script (now C-c C-y) and
     jobname.out inspection (now C-c C-o).
   • Add new keyinding C-c C-n for apdl-no-of-processors
   • Improved highlighting of user variables
   • Improved borderline cases of M-?, the command parameter help
   • Enhanced abbreviations, for example "‘ss" (interactive
     section-separator).
   • Improved and updated documentation, for example see the pdf version
     of the introductory tutorial
   • Added customisation section for user templates
   • Outline-minor-mode is now activated by default, with <SHIFT> +
     <TAB> (Emacs 28.1) its folding features became even more helpful
     for larger macro files
   • apdl-start-classic and -start-launcher are now auto-loaded commands
     (They can be run from the mini buffer (M-x), without having a file
     under ‘apdl-mode’)

10.3 Version 20.5.0
===================

2020-05, help for get- and parametric functions
   • Browsing the help on keywords (C-c C-b) is now working for get- and
     parametric functions (additionally to all APDL commands and element
     names).
   • Line numbers in the Variable Buffer (C-c C-v) are now links to the
     respective position in its APDL Buffer.  Clicking with mouse-2 on
     the numbers is displaying the definition in the APDL Buffer.
   • Added license overview with Ansys license feature descriptions to
     ‘apdl-license-status’ (C-c C-l).
   • Added a menu entry for opening the main Ansys online help page.

10.4 Version 20.4.0
===================

2020-04, Updated keywords with Ansys 2020R1
   • Updated keyword- and completion system to Ansys 2020R1 (v201)
   • Added documentation in GNU Info format and modified the menu entry
     APDL-Mode Online Documentation to APDL-Mode Documentation (C-c C-h)
     which points to the GNU-Emacs internal Info Viewer.
   • Added a menu entry for displaying the user’s taken licenses
   • Files with the suffixes ".mac", ".dat" and ".inp" are opened in
     apdl-mode without further user configuration.
   • Added additional keys for the license status functions

10.5 Version 20.3.0
===================

2020-03, Melpa installation
   • You can now install APDL-Mode from the Melpa (https://melpa.org/)
     package archive!
   • Added a new menu entry for browsing interactively the documentation
     for keywords
   • Added new function templates in the menu
   • EWW browser for the local help is now opening in a different
     "Window" and is not hiding the APDL buffer any longer
   • Added Ruler Mode to the helper modes
   • Added customisation section for Workbench / Discover Aim templates
   • Improved initialisation of Ansys installation dependent parameters

10.6 Version 20.2.0
===================

2020-03, Updated keywords to Ansys v195
   • Added a template preview system for Workbench ‘Command (APDL)’
     objects with the keybinding ‘C-c C-w’ (this keybinding was formerly
     used for starting WorkBench).
   • Improved the automated configuration of Ansys installation
     dependent components
   • Made M-?  (the parameter help) robuster, command names can now be
     changed when the help overlay is visible
   • Updated documentation and completions for keywords, elements, etc.
     to v195 (some to v201)
   • A-M can call a browser for the Ansys online-help (you don’t have to
     install the local Ansys help package, though it is advisable
     because of speed reasons.

10.7 Version 20.1.1
===================

2020-02, Bug-fix release
   • Renamed apdl-browse-apdl-guide to apdl-browse-ansys-apdl-manual
   • Improved configuration documentation
   • Enabled EWW (and other browsers) as a "help viewer"

10.8 Version 20.1.0
===================

Released 2020-02
   • Changed the name to APDL-Mode
   • Changed version naming scheme (package.el format)
   • Installation now with Emacs’ packaging system
   • Added key-bindings to the license buffer **Licenses** (C-c C-l) o -
     occur search g - refresh license status q - bury the license buffer
     Q - quit license buffer
   • Better warning for C-c C-b when A-M is not configured

10.9 Version 162-1
==================

not yet released, targeted for Sep 2015
   • Sending code to the ANYSClassics GUI is now possible as well, not
     only to the restricted interactive solver (currently only on
     GNU-Linux and Unix with C-c C-j, C-c C-u, C-c C-c).
   • Checking available licenses - in a fast and simple way - is now
     also available on Windows platforms with "C-c C-l".
   • Reorganised and simplified the installation and configuration.
     Made the initialisation defaults more intelligent, i.  e.
     searching for installation paths with environment variables, etc.
   • New customisation variable ‘ansys-parameter-help-duration’ for
     adjusting the display duration of the
     ‘ansys-show-command-parameters’ overlay.
   • Reorganised and improved the menu items, separated general Ansys
     tasks from APDL coding with two main menu Entries: A-Mode and
     Ansys.
   • New functions: Reading the original APDL guide and Ansys-Mode’s
     documentation in a Browser, opening an empty buffer in Ansys-Mode,
     ansys-start-launcher, ansys-start-classics, ...
   • The command ‘C-c C-j’ does now recognise blocks (APDL loops and
     control structures), which is to say it copies or sends complete
     logical blocks to the interpreter instead of only the current code
     line.
   • Changed Ansys-Mode’s versioning scheme from 16.2.1 to 162-1

10.10 Version 16.1.1
====================

July 2015
   • The command ‘ansys-show-command-parameters’ (M-?)  does
     additionally count the number of parameters and visualise at which
     parameter position the cursor currently is.  This tool-tip can now
     be switched off with a prefix argument of zero.
   • The command ‘ansys-send-to-ansys-and-proceed’ (C-c C-j) is now
     interactive, i.  e.  after invoking this command with its
     key-sequence "C-c C-j" it can be repeated by typing just the final
     character "j" (or "C-j").
   • The command ‘ansys-send-to-ansys’ (C-c C-c) grabs now the current
     paragraph, when there is no region marked.  And the cursor doesn’t
     skip to the next code line without a prefix argument "C-u".
   • The output buffer *Ansys* of the interpreter commands might now
     reside on a another Emacs frame.
   • switched on truncation of lines for Ansys-Mode buffers, e.  g.  it
     is easier to read when there are many parameters in the
     ansys-show-parameter-help.
   • Extended the APDL material library which includes now creep and
     multi-linear plasticity data in matlib/ as well.
   • Is packaged with the current stable version Emacs-24.5 and updated
     for Ansys 16.  Besides the Windows version there is also now a
     source package available for compiling Emacs-24.5 together with
     Ansys-Mode.
   • Renamed README, NEWS and TODO to *.org, fontification.mac to
     example.mac.  Included an example.dat and example.anf

10.11 Version 15.0.1
====================

Aug 2014
   • Added an example of an Ansys material library
   • C-c C-c (ansys-send-to-ansys) doesn’t skip to the next code line
     any longer but remains in the code line.  The former behaviour
     borrows the new function C-c C-j (ansys-send-to-ansys-and-proceed),
     executing and then skipping to the next code.
   • Improved the ‘ansys-show-blabla...
   • Highlighted now the parametric function CXABS(), which was already
     introduced in V14.
   • Updated the help, completion and highlighting functionality to V15
     And as usual: Corrected some bugs, typos and extended the
     templates, e.  g.  partial solutions with psolve for mass
     calculations.

10.12 Version 14.5.2
====================

Mar 2013
   • The unwieldy and usually uninteresting pure number blocks (the
     nblock, eblocks and cmblocks) in files with the suffix .dat are now
     hidden by default.  WorkBench creates these blocks in input files
     for the solver.  You can, off course, unhide these blocks and
     inspect them as well.

     Functions: ‘ansys-hide-number-blocks’, ‘ansys-show-number-blocks’,
     ‘ansys-hide-region’

     Customising variables: ‘ansys-hide-region-before-string’,
     ‘ansys-hide-region-after-string’ and
     ‘ansys-hide-region-propertize-markers’

   • Added a way for showing the current value and status of a user
     variable at point, overcoming the drawback of C-c C-v
     ‘ansys-display-variables’ that it is showing only the variable
     definitions and definitions coming from external files are not
     shown.  You can activate this functionality (Linux only) with a
     prefix argument: C-u C-c C-v.
   • Fixed the completion and highlighting of command keywords and their
     help entries, in the previous release were unfortunately many
     keywords missing or entries incomplete.
   • As always: Enhancements and corrections for the APDL templates,
     added a beam simulation template

10.13 Version 14.5.1
====================

Sep 2012
   • Added a function (C-c C-b or "M-x ansys-browse-ansys-help") showing
     the detailed Ansys help in your web-browser for an APDL command or
     element name (also the element number is sufficient) around the
     cursor (or if that fails at the line beginning).

     Are you also tired of the Ansys help browser?  For example try
     searching for the ‘F’ APDL command, it is impossible!  (update
     2014: This has improved with the new help viewer in V15.)  You have
     to pick it up from the alphabetical command list.  Likewise when
     you are searching for an incomplete keyword, no hint, no
     completion, nothing!  Finding and browsing relevant APDL
     documentation is still cumbersome and too slow.

     As a highlight of this release you can now read immediately the
     detailed Ansys help in your web browser for *all* APDL command AND
     element names around the cursor (or for the first command in the
     current line if that fails to be valid keyword).  You may input
     your search string also interactively, including its completion to
     Ansys help keywords and of certain help categories, like ‘Release
     Notes’ and such.  This is an ideal complement to Ansys-Mode’s
     in-built ‘command syntax help’.

   • The function ‘ansys-start-ansys’ is now available under Windows as
     well and starts the APDL product launcher under this platform.
   • When calling ‘ansys-browse-ansys-help’ and
     ‘ansys-show-command-parameters’ (M-?  - the in-built ‘command
     syntax help’) with a prefix argument for interactively entering a
     command name, the name is now completable.  And in the
     non-interactive mode both functions working also for APDL commands
     which are commented out as well (only for the first command in case
     of ‘ansys-show-command-parameters’).
   • Also the input of ‘ansys-query-ansys-command’ (C-c C-q) is now
     completable to all current Ansys commands and with an optional
     prefix argument the current code line is copied as the initial
     input.
   • Improved the introductory and the in-depth tutorial and extended
     the documentation with an APDL and syntax highlighting reference in
     HTML and PDF.  (To some degree syntax highlighted in the PDF
     version as well)
   • Values of the ‘_RETURN’ variable are now documented in the function
     ‘ansys-skeleton-information’
   • ‘ansys-next-code-line’ and ‘ansys-previous-code-line’ (M-n, M-p)
     are now skipping over node and elements blocks, which are only pure
     number blocks.  They are now alternatives to
     ‘ansys-number-block-start’ C-c { and C-c } respectively
   • Removed bug in customisation system and dropped 32 bit Ansys
     support in line with the Ansys OS
     [<https://www.ansys.com/Support/Platform+Support> strategy] for
     2013.
   • Described a poor man’s round() workaround in
     ansys-template-function under the nint() entry

10.14 Version 14.0.1
====================

June 2012
   • Enhanced the documentation, included is now an introductory
     tutorial ‘ansys-mode_tutorial.pdf’ and a hands-on tutorial
     ‘APDL_tutorial.pdf’
   • Added a timer for getting rid of the parameter help overlays after
     some time interval (1 min) without reusing the parameter help
   • Added a (customisable) variable ‘ansys-no-of-processors’ and
     function with the same name for specifying the number of processors
     for an Ansys multiprocessor run
   • Activated outline-minor-mode and auto-insertion (in default_el)
   • Extended mode commands, templates and removed typos mainly in
     ansys-template.el.  For example added all *get functions in the
     ansys-skeleton-function template
   • Added a custom variable the corresponding function
     ansys-ansysli-servers for specifying the ansys interconnect license
     servers
   • Added a new shortcut and menu entry isometric view
   • Applied sensible defaults to ansys-lmutil-program, ansys-program
     and ansys-help-program, for most needs it should now be enough just
     to set the used ansys version (ansys-current-ansys-version, if it
     is not 140, see the example configuration file default_el) and
     maybe additionally the installation directory
     (ansys-install-directory).

10.15 Version 13.0.1
====================

March 2011
   • Added support for aligning whole sections of Ansys variable
     definitions, both in the Ansys menu and as a keyboard shortcut ’C-c
     C-a’
   • Enhanced ansys-display-skeleton with an optional argument for
     inserting the respective skeleton in the APDL buffer.
   • Enhanced some "interactive" code templates with lists for
     completing the input and sensible defaults
   • Refined some abbreviation definitions and focused the display of
     abbreviations to the mode specific ones
   • Fixed insert pair functions, like ’C-c %’
   • Changed keyboard shortcut for calling the Ansys help to ’C-c C-h’
   • Updated keyword list, deprecated elements, undocumented commands,
     etc.  to release 13.0 of Ansys, as usual.

10.16 Version 12.0.1
====================

Dec 2010
   • Some new graphics commands like ansys-zoom-in, -zoom-out,
     -move-left, -right, -up, -down, etc.
   • The lisp code had to be split up for better maintenance, the code
     files for are now provided in an archive together with their
     compiled state for speed reasons.
   • Reworked the highlighting mainly for the sake of speed.  There are
     now highlighting levels to choose from, offering e.  g.
     highlighting of deprecated element types in a warning-face,
     deprecated Ansys * comments and so on
   • Updated and improved the readability of the mode’s help and the
     README file
   • The output from the LMUtil license status tool (C-c C-l) is now
     filtered on UNIX to be more concise.
   • The ‘ansys-send-to-ansys’ (C-c C-c) and the
     ansys-copy-or-send-above (C-c C-u) commands are now generalised so
     that they are also doing some useful stuff without a running Ansys
     interpreter process (they copy in that case the cursor line/the
     chosen region and copy from the file beginning to the cursor line,
     respectively, to the clipboard).  Given a prefix argument to these
     commands, the cursor won’t move to the next code line.
   • The completion of Ansys keywords is reworked and has improved.
     Ansys symbols are now completed in 3 ways: Up-case, down-case and
     capitalise.
   • New: Added tool-tips to all Ansys menu entries.  Activated or
     deactivated menu entries according to the context
   • Ansys mode tries to gather information from the OS environment when
     the variable ‘ansys-license-file’ is not set by the user and uses
     now Ansys standard names as default values for some more variables.
   • The variables in the variable summary are now sorted according to
     their first occurrence and not any longer in "definition types".
     Now component names are included with the variable highlighting.
   • Added menu entry for reloading Ansys Mode for the case when certain
     customisation options in the code files itself are changed and
     require a code reloading to take effect.
   • Ansys mode changes some Emacs default behaviour to smooth the
     transition from other editors

10.17 Version 11.0.2
====================

Nov 2009
   • Enabled the preview of code templates or fragments (called
     skeletons in this mode, please inspect ‘ansys-display-skeleton’).
   • Removed "buffer has no process" bug when killing an ansys-mode
     buffer.
   • Submitting interactively Ansys commands (via mini-buffer query, not
     only as written in a macro file) to the solver process,
     ansys-query-ansys-command (C-c C-q).

10.18 ansys-mode.el 11.0.1
==========================

2009 in comparison to ansys-mod.el,
   • New: Provides Ansys command parameter- and syntax help.
   • New: Offers Ansys process management: Acquiring license server
     information in a buffer Starting and stopping asynchronously Ansys
     runs.  Sending code lines to running Ansys process (sort of code
     debugging facility) and getting the output into a buffer.
   • New: Experimental highlighting of user defined variables.
     Redefinition and clearing of variables is not yet taken into
     account.
   • New: Emacs customisation facility is available for the new Ansys
     mode group.
   • New: Emacs outline-minor-mode is readily available in conjunction
     with this mode.
   • Completions of Ansys commands are now case-sensitive, with
     additional completion of function and element names.
   • Previously defined skeletons are fully functional now, new ones are
     added and enabled with the abbreviation and auto-load facilities of
     Emacs 22.
   • Ansys’ interpreter’s disregard of any capitalisation is now fully
     taken into account in the highlighting.
   • The apostrophe "’" is now assigned as the Ansys string and the
     value of character parameters delimiter and not wrongly """; the
     strings are highlighted accordingly.
   • The dollar sign "$" is now emphasised as the Ansys condensed input
     character (multiple Ansys commands in one line).
   • The colon ":" is now emphasised as the Ansys colon do loop
     character ("(x:y:z)" means from x to y, in z steps, z is equal to
     one as default).  For example: "n,(1:6),(2:18:2)" runs 6 loops.
     Colon loops are working also with real values: k,,(2.5:3:0.1) and
     with array parameters: k,,A(1:100), but the latter is an
     undocumented feature.  Since ansys 11.0 the colon looping is also
     working with *GET functions (example: A(1:5)=NX(1:5))).  A ":"
     indicates also a beginning of a label for the *GO and *IF command.
   • "%" is now distinguished as the Ansys parameter substitution and
     format specifier character.
   • The ampersand "&" is now correctly highlighted as the only
     available Ansys continuation character applicable to the format
     commands (*MSG, *MWRITE, *VREAD and *VWRITE) command and the
     subsequent format strings of the command are highlighted.
   • New: " *" (<SPC> before ‘*’) is indicated as an (Ansys deprecated)
     comment sign e.  g.: %% a = 3 **4 %% results in "a" having the
     value 3, whereas %% a = 3**4 %% sets "a" to 81!
   • New: A line beginning with a comma is indented to the length of the
     last non slash or asterisk command as a reminder that the Ansys
     solver interprets this as a space holder for the last command
     keyword (the Ansys default command concept).
   • Extended documentation, code cleaning and simplification of
     commands (e.g.  comment handling) with the application of standard
     Emacs 22 facilities among other things.

11 Further Resources
********************

11.1 Ansys and APDL resources
=============================

   • The online Ansys reference manuals (https://ansyshelp.ansys.com/)
     (registration required) and the Ansys video playlist
     (https://www.youtube.com/user/ansysinc/playlists) on YouTube
   • The Ansys homepage (http://www.ansys.com)
   • The Ansys Learning Hub
     (https://www.ansys.com/services/ansys-learning-hub)
   • The Ansys Customer Portal (https://support.ansys.com/Home/HomePage)
   • Xansys, an Ansys online community (http://www.xansys.org) (forum
     registration is necessary)
   • The PADT Focus (http://www.padtinc.com/blog/the-focus/) site, a
     blog of an engineering company in North America
   • A general Ansys repository Ansys.net (http://www.ansys.net), last
     update from 2016 (state 2021-10-16)
   • AUC (http://www.auc-ev.de/), the Ansys User Club eV.  in Germany

11.2 Emacs editor resources
===========================

   • The guided Tour
     (https://www.gnu.org/software/emacs/tour/index.html) of GNU-Emacs
   • Emacs’ Stackexchange (http://emacs.stackexchange.com), the question
     and answer site for Emacs
   • EmacsWiki (http://www.emacswiki.org), an encyclopedia for
     everything related to Emacs
   • The Emacs help <help-gnu-emacs@gnu.org> mailing list

11.3 Other APDL editor resources
================================

   • Since Ansys 2020R1 the Command (APDL) worksheet acquired - finally
     - syntax highlighting and command completion
   • The Ansys APDL plug-in
     (https://catalog.ansys.com/product/5b3bc6857a2f9a5c90d32ddb/apdl-editor)
     from the Ansys store, published in 2017 (and not maintained since
     then?)
   • Simple APDL syntax highlighting extensions are available for
     various editors, gvim, nedit, ... to name a few, please have a look
     at Ansys.net (https://ansys.net)
   • A commercial competitor of apdl-mode: The Pedal
     (http://www.padtinc.com/pedal) script editor for Windows, project
     disbanded in 2015
   • A free Windows APDL editor (http://apdl.de), site not maintained
     since 2011

12 Todos
********

12.1 V 20.7.0
=============

12.1.1 Bug
----------

   • C-c C-a doesn’t align the code comments when there are variable and
     no numbers!
   • jit-lock: Error during redisplay: (jit-lock-function 1) signaled
     (wrong-type-argument stringp nil), example.dat
   • Fontification problems with backslashes in strings from .dat files
     from windows \’ apdl-mode is then looking for the next ‘” :-/
   • C-c C-a not working without region at beginning of buffer, only.
     Usually we have some header, don’t we?

12.1.2 Issue
------------

   • Rework menu: new entry for number blocks in .dat files
     (nblocks,eblocks,cmblocks)
   • Linux: C-c C-o -> *APDL Classics* Buffer when process running
   • Reload apdl-mode isn’t working
   • For a 80 MB .dat file it takes 2 min to start apdl-mode, skipping
     fontification for huge files?  No but searching for user variables!

12.1.3 Wish
-----------

   • check apdl-font-lock-keywords-3
   • asynchronous licensing status
   • DONE in dev: Look into derived branch: prog-modes

12.2 *TODO* Version 20.6.0
==========================

   • Branch 20.6.0 _[2021-10-01 Fr]_
   • Feature freeze: Only bugs or template changes

12.2.1 Todos, bugs
------------------

   • M-?  get- and parameter-functions are completed but there’s no
     parameter help - see: apdl-dynamic-prompt
   • *mwrite *cfclos or any asterisk command M-?  shows help for
     *mwrite, when cursor behind *cfclos and in the last line without
   • APDL reference is incomplete
   • Tutorial pictures are often outdated (ansys -> apdl)
   • HTML docu is bad
   • Templates: Add intro help to the -wb-template system, complete
     usage.org
        • Code Templates, apdl-wb-custom-template-directory
        • Export of WB command objects to file on disc in the manual

12.2.2 Issues
-------------

   • Do we really need to specify the license interconnect server?
   • M-?  parameter counter is not working for commands where functions
     with multiple arguments are in the argument list!  f,node(x,y,z),,,
   • Some keybindings (6+1) for fkmpqr,d: -f -fit, -m -start-ansys, -r
     -replot, -q -query-apdl-command, -k -kill-anys, -p -start-pzr-box:
     are for interactive server use, -d -do <- abbrevs!?
   • Discovery Aim is obsolete?
   • c*** isn’t completed
   • Cygwin terminal initialisation not working, /cydrive/c:?
        • setting -ansys-installation-path should do
             • ugly ^M line endings -license-status
             • w32-shell-execute not working for -start-help-program
   • Cygwin emacs-w32 ugly ^M line endings for C-c C-l

12.2.3 Checks
-------------

   • Changed file size without warning to 30 MB, Emacs-28 is using <= 10
     MB, large-file-warning-threshold
   • EWW bug: not working with remote ssh -help-path (debbugs-gnu-bugs
     40425)

12.2.4 Wishes
-------------

   • A better Info index
   • Mouse completion is working with *middle* mouse button (mouse-2)
     but only on the second LMB or, in the case of C-c C-s, not at all.
   • Templates, WB-templates, more of them
   • Presentation(s) and EN Wiki, youtube?
   • Help system and docu, rather complete, except online docu

12.2.4.1 Docu
.............

Outdated menus in images : A-M-introductory_tutorial.org

   Rework the messy documentation system of files and applications
  1. INFO -> info/apdl-mode.org <- flat file
  2. MD for github -> info/README.org <- uses folder structure
  3. Melpa packaging -> apdl-mode

  4. Things like C-c C-jjj (more?)  are not documented in manual!
  5. more C-c C-b subjects?  2.1.  SESSION Commands 2.2.  DATABASE
     Commands 2.3.  GRAPHICS Commands 2.4.  APDL Commands 2.5.  PREP7
     Commands 2.6.  SOLUTION Commands 2.7.  POST1 Commands 2.8.  POST26
     Commands 2.9.  AUX2 Commands 2.10.  AUX3 Commands 2.11.  AUX12
     Commands 2.12.  AUX15 Commands 2.13.  Mapping Processor Commands
     2.14.  REDUCED Order Modeling Commands
  6. Create English Wiki for APDL
  7. Link to Ansys Youtube channel in menu?  (It’s already in Ansys
     resources!)
  8. The Command (APDL) objects coding system seems to be mule-utf-8-dos
     aka cp65001-dos, document this
  9. Customise system (explain ‘M-x customize-set-value’ as long as
     (debbugs-gnu-bugs 25678) is not solved)?

   Info documentation:
   • don’t line break ref{references}!
   • work on the Info index #+cindex:
   • #+include: #+title adds to info title!
   • inline
   • #+texinfo: @inforef{node,name,file} links to Emacs info pages,
     done, make contex SELF SUSTAINED!! Is adding "See" in the text!
     ;-)
   • Attention colon ":" in headline gives a texinfo reference!
   • C-u C-h i: info file :-)
   • package with file "dir"
   • only up to 3 *** levels!  configurable?
   • info doesn’t have clickable links to function, customisation
     buffers, yet, hmm urls, internal links?  <- inform package
   • image directory in .info file is not existing in Melpa!  Do we need
     images in the manual?  No

   Presentations

   • in-depth presentation, tutorial?
   • APDL reference => just Info?

   MD
   • #+caption: not working!
   • #+title: not working!

12.2.4.2 templates
..................

   • wb templates in README.org, clear, will grow with usage
        • contact pressure evaluation, press-fit
        • harmonic, acceleration
        • imbalance load
        • rotordynamics
        • temperature dependent load
        • Intelligent template selector with keywords in the line of
          helm or ivy?
        • What is the advantage of ARG1-9?  => parameter system, should
          I include ARG[1-9] optionally?

12.2.4.3 misc
.............

  1. make *License* buffers read-only
  2. Add a quit key for variable buffers
  3. derive A-M from prog-modes => branch derived
  4. Travis CI continuous integration!
  5. <https://github.com/marketplace/coveralls>
  6. Start optionally runbWB2 –aim, Discovery AIM

12.2.5 Done
-----------

   • Make text around #+texinfo: lines self sustained!
   • -mode-version working with autoload cookie: works
   • include -mode-version in autoload list

12.2.6 Push and Release Proceedures
-----------------------------------

   • gh-pages : everything is in master!  just copy index.html and
     README.html to root dir (in makefile)
        • In branch gh-pages: git checkout master .
        • make GH
        • git clean -f -d
        • git checkout master

   • make PACK : now obligatory for any push to Melpa!!

   • Documentation in the list-packages seems to be the Comment strings
     in ansys-mode.el _[2021-10-16 Sa]_

   Ansys updates: Hint: in apdl_keywords.txt there are many trailing
whitespaces (delete-trailing-whitespace)
   • for updated Ansys_keyword.txt check ‘outres’ command in 202 was a
     typo!

   • NEWS.org
   • README.org News section
   • TODO.org
   • Add all new templates to the menu

     Magit: s stage, c commit, P push

   gca = git commit -a = gau + gc gta = git tag -a 20.6.0 gph –tags

   whitespace-mode, package-lint checkdoc, flycheck etc.  : from
makefile?

   APDL_MAJOR := 20 APDL_MINOR := 7 APDL_PATCH := 0

   (tags-query-replace "20\.6\.0" "20.7.0") (tags-query-replace
"20\.7\.0" "20.8.0")

   (tags-query-replace "- 2021" "- 2022") (tags-query-replace "- 2020"
"- 2021")

   (tags-query-replace "v201" "v211")

   (tags-search "texinfo:")

12.3 *DONE* Version 20.5.0
==========================

_[2020-05-01 Fr]_ help for all get- and parametric-functions

12.4 *DONE* Version 20.4.0
==========================

_[2020-04-01 Mi]_ updated to 2020R1

12.5 *DONE* Version 20.3.0
==========================

_[2020-03-24 Di]_ Melpa feature freeze _[2020-03-20 Fr]_

12.6 *DONE* Version 20.2.0
==========================

_[2020-03-10 Di]_

12.7 *DONE* Version 20.1.1
==========================

   • are the material properties documented, matlib?  Matlib is used in
     -template.el, how about document this directory somewhere?  Done in
     matlib/README.org
   • document the APDL Parameter Help Duration in M-?: Done in
     -config.org!
   • bug-report about package.el "NAME-readme.txt", done

12.8 Version 162-2
==================

12.8.1 Bugs
-----------

   • Hmm, it’s gone?  C-c C-s first time visit: User variables
     file-name-extension: Wrong type argument: stringp, nilError during
     redisplay: (jit-lock-function 1) signaled (wrong-type-argument
     stringp nil)
   • importing template-header into empty file doesn’t change file
     status to changed!
   • C-c C-j tries to send a next line in the LAST line and after an
     /exit command
   • error for -skeleton-outline-template when called ansys-mode for an
     unnamed file without extension.
   • Fontification errors
        • jit-lock-function errors
        • RESCOMBINE is not fontified
        • /sho is not not font-locked
        • c*** without argument is not font-locked
   • What?  APDL + WB -> Window Name is ... - Mechanical APDL (Ansys
     Structural)

12.8.2 Wish-list
----------------

   • -send-to-ansys, -send-above copy empty regions or only comments
   • M-?  on an empty buffer returns *abbr* help instead of a warning
   • C-c C-v show only the latest most current variable, if in a
     variable block
   • remove spurious defcustoms which are calculated, or leave them as
     last resort?
   • a-start-wb: start-process seemingly uses the current working
     directory, there might be a problem, when "pwd" of the current
     buffer was/is an unavailable network drive .
   • add bbdb files to emacs packages
   • -help-program-parameters obsolete
   • MinGWin: FindWindowFindWindow(CLASSNAME, WINDOWNAME)
        • ActivateWin: SetFocus() + SendKeys?  SendKeys
     <https://www.transmissionzero.co.uk/computing/win32-apps-with-mingw/>
     <https://msdn.microsoft.com/en-us/library/aa383749.aspx>

   • C-c C-a does not take signs (e.g.  +13.0, -8.3) befor numbers into
     account
   • Targeting Ansys Aim (Aim obsolete?)
   • customisation :version attribute is not clear and not defined for
     new stuff
   • Make a usage.org, splice into a-mode.el
   • -wb function (doesn’t adjust along the decimal point)?  ->
     align-rules-list
   • Changing license type on the fly (with C-u) for
     -display-license-status
   • tool tip help-echo properties for keywords!
   • permanent saving option for -license-file, -lmutil, -program, ...?
   • Check for valid license types for the solver
   • license and template status line always in the first visible line
     of buffer (in-place-annotations?)
   • splash screen?
   • -license-status optional filters for output
   • C-c C-c checking blocks
   • include ../ansys/apdl macros?
   • ../apdl/start162.ans valuable?
   • add screw thread capability to WB translation
   • color scheme of *msg command is only readable on terminals
   • abreviated input method for all graphics functions zoom, etc.
   • defaults for template MP
   • -show-command-parameters is not dynamically updated in the first
     line
   • Correct the creep data together with young’s modulus and total
     strain to creep strain!
   • implement -hide-region also for rotated nodes in WB .dat files
     (frictionless support)
   • started and commented out highlighting of solver output
   • Variables are not highlighted in -skeletons, it is specified in
     -mode only for files with .mac suffix; *create file tmp,mac: macro
     call: tmp, is not highlighted
   • ansys-template.el:85:13:Warning: reference to free variable
     ‘ansys-skeleton-overlay’
   • mouse-choose-completion is obsolete since E23.2
   • check *vwrite with gui mode and interactive mode (graphics window?)
   • WikEmacs, Ansys-Mode debian .deb package?
   • TODOS: in fontification.org
        • deletion of vectors *del,Vector without request?  ,,nopr?
        • check character variables 32 Chars.  and highlight accordingly
          string 128, char 8
        • *vscfun: mean, stdev, ...
   • _RETURN (-mode) somewhat milder red, clashes with reseved vars!
   • test server specifications (menu!)  make interconnect conditional
     of the Ansys version >= 120
   • explain fill/*vfill under the "looping" commands: Generates a line
     of nodes between two existing nodes.
   • switch automatically to read only mode for *.dat files?
   • force harmonic table (*vfill) example in -skeleton-bc, make a
     ansys...-template out of two-mass-harmonics.mac
   • -program, -license-file and -ansysli-servers should show the
     current selections
   • check -license-file var with -license-file-check
        • Emacs var :DONE:
        • env vars :DONE:
        • activate -license-file function :TODO:
   • document Lagrange contact behaviour for contact/press-fit skeleton,
     critical to element differences!
   • constraint equations in -ansys-template.el and get functions
   • enable hiding of geometry items in .anf files
   • fontification.el
        • add the 4 Ansys neutral file (aux15) functions to the
          parameter-help, .anf files from DM anf export kpt – Write
          keypoints or vertices into the database lcurv – Write lines or
          edges into the database asurf – Write the area or face
          information into the database vbody – Define a B-rep solid.
        • add Hlp_G_OPE6_NeutralFile.html (aux15 utility functions)
          commands to the fontification and help stuff: KPT, LCURV,
          ASURF, VBODY.  (functions in ANF files) from the operations
          guide ‘ans_ope.pdf’
        • some functions in -skeleton-function are not highlighted and
          completable, whitespace problem befor paren... and: "nele"
          undocumented command and function nelem()
   • inconsistencies in A-M_introductory_tutorial.org
        • the parameter help overlay is dated
        • in variable.png symbols Ns and Ls are not highlighted as
          variables
        • change sequence of alignment.png first not aligned, second
          aligned
        • Too difficult: slide of extensibility, showing Emacs
          self-documenting help system for a template function

12.8.3 Freeze
-------------

   • Documentation of installation, usage and configuration!
        • C-c C-{w,y,x}
        • sending to classics
   • Menu for checking availablity for the X11 helper functions
   • List of all new functions <- bug-report.sh

12.8.4 Deficiencies:
--------------------

Highlighting
     Experimental user variable highlighting does not take into account:
        • clearing of variables and
        • usage of variables before their definitions (uninitialised
          variables)
        • the variable fontification clashes with Ansys specifiers
        • string substitution of %variables% in strings does not
          highlight them in the proper variable face
Highlighting
     A label :LABEL may appear behind the /input command and is not
     highlighted as label
Highlighting
     An apostrophy clashes with the Ansys "char" specifier Keybinding:
     M-Tab is captured under Windows and some GNU-Linux desktops
     Workaround: Press instead of M-Tab (ALT + TAB) the ESC key and then
     the Tab key (ESC, TAB) or apply the command from the menu bar
Keybinding
     M-j: When there is already a ‘&’ in a format command (like *msg,
     *vwrite, *mwrite) ansys-indent-format-line inserts a redundant one
Completion
     Of parametric function parentheses completes redundant closing
     parentheses
Completion
     A mouse selection from the *Ansys-completion* buffer is only
     inserted upcased.
Completion
     Ansys command ’C***’ will not be completed
Skeleton
     Mouse selection of -structural-template does not work (because of
     stipulated user text input from this skeleton)
Navigation
     C-c { does not skip an overlay in a number-block (M-{ does it
     though))
Keybinding
     C-c C-j jjj not working with Emacs version < Emacs-24

12.8.5 Procedures
-----------------

GNU-Linux
     instead of GNU/Linux as FSF suggesting ;-)
Mode Help
     keyboard input is quoted in "", emphasizing in ‘’ and keys in <>
APDL templates
     minimal working examples ending with -template
Menu
     -> indicates the following sub menu entry ->
M-x compile
     ALL ;-)

     GH-wiki is repo with write access for world, separate from the A-M
     repo!

12.8.6 Freeze proceedures
-------------------------

   • check whether all undocumented commands <(find-tag
     "Ansys_undocumented_commands")> are still working in V 162
   • (tags-search "-TODO-")
   • (tags-search "-FIXME-")
   • checkdoc, -ansys-template.el, -ansys-process.el, -mode.el done
     except \\<keymap> & \\[function]
   • README – installation (Emacs Wiki format) and accompanying files,
     features, news, history
   • update the mode help, update version numbers, default specifiers
   • update defcustom list in ./bug-report.sh -> ansys-submit-bug-report
   • update/complete skeletons menu

     (tags-query-replace "161-2" "162-1")

     (tags-query-replace "16.2.0" "17.1.0") (tags-query-replace "16.1.0"
     "16.2.0") (tags-query-replace "Ansys 16" "Ansys 17")

     (tags-query-replace "24\.5" "25.1")

     (tags-query-replace "161" "162")

     (tags-query-replace "20\.1\.0" "20.1.1") (tags-query-replace
     "\"1.1\"" "\"1.2\"")

     (tags-query-replace "- 2020" "- 2021") (tags-query-replace "- 2021"
     "- 2022")

     checkdoc then dry run: Emacs 24.5 -Q testing: example.mac
     /*commands and default command lines, every menu entry.
     byte-compile-file then dry run profiling, major mode conventions:
     multiple loading of this mode?.
   • check Emacs versions on longterm OS systems compile with 24.X, then
     pretests, emacs-snapshots, clash with Emacs releases (yearly Emacs
     cycle)?

12.8.7 Release
--------------

   • Add the latest news from NEWS.org to the README.org
   • update Emacs wiki (README), home page, GitHub
   • publication emails (with tutorial and news):

     The project is hosted on

     <https://github.com/dieter-wilhelm/apdl-mode>

     Where you will find the latest development version.

     Stable versions and prebuild packages are on the releases page:

     <https://github.com/dieter-wilhelm/apdl-mode/releases>

     Dieter

12.8.8 Ideas for further versions
---------------------------------

12.8.8.1 Parameter help and documentation
.........................................

   • Enable a mouse button to unhide hidden regions, enable an
     interactive way to unhide regions, when in the region: Return opens
     hidden region, ...
   • dynamic completion and help of parameter options, depending on the
     contex like the one in bash
   • makeinfo documentation with org-mode ox exporter
   • make completion of templates with <mouse 1> button additionally to
     <mouse 2> as in -complete-symbol.
   • create a function showing deprecated elements and their
     replacement.  Inspirations from eldoc-mode, show replacements of
     deprecated elements?
   • create a reference card
   • show list of license products and their license feature names or
     translate it in the license status from the licensing guide
     (product variable table)
   • C-c C-v show (optionally) only variables defined up to current
     cursor line.  Make the line number display in
     ‘ansys-display-variables’ (hyper-)links to the corresponding code
     line in the respective APDL file.  (See ‘occur’ function.)  Or use
     the imenu mechanism for this and display the variables in the
     speedbar.  Count the number of user variables when displaying them
   • refcard, etc; Emacs help guidelines GNU programming guideline: More
     requires?,
   • display alternatives to/swap deprecated element types
   • M-?  Help: parametric functions are not explained with the help
     command
   • M-?  Help: if there are ignored characters behind the keyword, the
     keyword is not found
   • M-?  the command help does not work when there are solver ignored
     characters behind the unique command name, example: *VWROOOOM.
   • M-?: following a variable allocation with ‘=’
   • M-?: In the last empty line displays overlay below command instead
     above
   • Provide Ansys command completion and command-help in comint buffer
   • Include all inquiry functions (see UPF documentation)
   • Include the _RETURN value of the solid modelling commands into
     their help strings of parameter help.

12.8.8.2 Ansys process and interpreter buffer
.............................................

example: gnuplot-mode
   • call to start the Ansys solution results tracker for .nlh (xml see
     <file.nlh>, contact forces) and convergence .gst (binary?, coded?
     <file.gst>)
   • implement something like <nlhist.sh> for .cnd files (xml see
     <file.cnd>) or use the new libxml parser ;-)
   • make display-buffer "*Ansys*" optional when sending commands to the
     Ansys process
   • use Ansys *env variables* like AWP_ROOT140 for checking
     installation directories
   • check also the license status for hpc licenses if -no-of-processors
     is greater then 3
   • implement ANSWAIT variable
   • autoloading of: -license-file, -license-program functions
   • dbus support of workbench or integrating emacs in workbench?
   • insert skeleton with C-c C-s i, send line C-c C-c ccc
   • warn when C-c C-c tries to send a block command (complete to full
     block?)
   • take care when region isn’t complete in -send-to-ansys (send whole
     line)
   • C-c C-c skips empty lines and comments this is not always desirable
     -> make this optional -> filter process input?
   • C-c C-q, C-c C-u and C-c C-c sequences are not shown (and stored)
     in the comint buffer
   • make filter of -license-status optional
   • optimise -start-run with query of y (start immediately),n (exit),e
     (change params),C-h (help)
   • Splice any input line behind the BEGIN: symbol in the *Ansys*
     buffer
   • Enable one solver run for every Ansys macro buffer
   • indicate with activation/inactivation of menu items that an
     asynchronous job is already running or not.
   • show/mark sent lines in apdl file C-c C-u, C-c C-c,
        • with fringes
        • with background
        • maximum line
        • reset highlighting, when?
   • provide Ansys ‘y’ request and carriage return?  superflouous?  a
     single ‘y’ does the trick
   • Killing a buffer with a running process now asks a confirmation.
     You can remove this query in two ways: either removing
     ‘process-kill-buffer-query-function’ from
     ‘kill-buffer-query-functions’ or setting the appropriate process
     flag with ‘set-process-query-on-exit-flag’.
        • finding an Ansys /filnam command in current macro file and
          suggesting this as current job-name optionally kill old job
          when called again with working run warn and optionally remove
          the ansys lock file before starting a run
        • search in -job for /filn arguments as default job name like in
          -display-error-file

12.8.8.3 Skeletons, outline and abbrevs
.......................................

   • show a preview buffer with the outline headlines
   • -skeleton-select is a bit thin, not yet finished?
   • add a preview mode, with its own keymap for faster editing and
     copying, like dired
   • enhance abbrev definitions for *create, *dowhile logics:
   • use the Ansys sample input listing for template-examples
   • additional dialog boxes with: /ui,anno,ksel...,wpse,help,query,copy
   • make outline string in skeletons configurable
   • spider beams, _bolt.mac, screw.mac, Mohr-Coulomb criterion
   • rework concept with respect to the Ansys menu structure sort
     skeletons in menu.  Concept: 1.)  Ansys Workflow 2.)  specialised
     macro library
   • Make skeleton-header properly working (info "(autotype)")
   • Optimise templates: completing-read, read-from-minibuffer
   • abbrev ‘d does not indent properly in another block level
   • Implement choice when completing *IF commands (*ELSEIF or *ENDIF
     ?THEN?).
   • Warn when including skeleton in read only file.
   • skeleton for numbering ansys-skeleton-numbering-controls
     (skeleton-insert docu)
   • suggestions with auto-completion of
     kp,line,area,volu,node,elem,tabn,sval
   • negation, what negation?  TODO:
   • skeleton for skipping code *if,then *else*endif if selection: wrap
     around and indenting *go/*if label is not fontified at the command
     line (restriction of 7 characters with out the colon.)  must
     *go:label be unambiguous?

12.8.8.4 Miscellaneous
......................

   • hash or signature file for packages
   • show content of matlib/ folder
   • add to -display-variables a prefix argument for showing the value
     of the variable around point, or center the variables window...
   • customisation option for a the web browser of -browse-ansys-help
   • ideas for preview also of a/the macro directory?
   • put graphics dlls in windows package
   • LSDYN support, see lsdyna.el
   • embedded calc include in hacking.mac
   • Alignment alignment "section" is not clearly defined in function
     -align
   • alignment extend to vector definitions t(1,0) = 20,300,3094, t(1,1)
     = 3, 4, 9,
   • Utility for clearing files like .rst, ... or using dired,
     clear_files.sh?  with listing listing of file types
   • Configure the highlighting colours with black on white background
   • C-j, M-j are not skipping to ‘,’ whith default command (from second
     line onwards)!
   • supply command for clearing recursively not important process
     files: .rst, .log, ..., supply a customisaton variable
   • narrow, outline, transparent-font: eblocks, nblocks by default?
   • add notes for parameter help of undocumented commands (alist)
   • create filter variable for hiding not installed license types
     ("aiiges" "aihexa") or better regexp filter "ai.*\\|acf.*"
   • commands shorter than 4 chars are not allowed with additional chars
     adjust this to -highlighting-level 0
   • Make Ansys-Mode also working solely with ansys-mode.el??
   • make M-C-h more intelligent like M-h (if mark...)
   • speed concern: replace -find-duplicate-p with function argument to
     add-to-list
   • For non-comint-mode usage: display .log file with tail mode
   • is outline-mode enabled?  no!  make default?, outline
   • take care of setup procedure: v110/ansys/apdl/start110.ans
     /MPLIB,READ,/ansys_inc/v110/ansys/matlib
   • removing/renaming/checking abort file?
   • Are characters behind unique commands shorter than 4 characters
     possible?  No /sol(u) sufficient?  Yes condensed input line ($)
     behind commands without arguments possible?  Yes have a look in
     -variable-defining-commands!  Warn when - unintentionally -
     arguments are used for Ansys commands which do not allow arguments.
     Or implement some auto-newline feature?  But problematic in
     condensed command lines or when applying code comments!
   • undocumented ask parameter
   • mode-line-format nil);no mode line for this buffer Unambiguous
   • Emacs: old-style backquotes?  used in the old template macro system
   • completion of function names: cursor should end within parentheses
   • better hints for auto-insertion features
   • up/down-block when we are over a begin-keyword and in a block-end
     line
   • component names are fontified as variables!  separate them cmlist?
   • format string for *VWRITE: line(s) below, in parens, when FORTRAN
     format specifiers are used, keyword SEQU povides row numbers, up to
     19 parameters are allowed
   • remove vestiges of ansys-mod.el for making ansys-mode.el GPL proof.
     Check whether octave-mod.el really is GPL compliant, use
     -ctave-mod.el from 1997, kill octave-mod.el afterwards in makefile
     read every symbol docu string ->NEW_C or _C or OCTAVE_C
   • replace/extend column-ruler with ruler-mode or ruler implemented as
     overlay in buffer
   • make everything completely customisable, eg auto-insert stuff
     customisable enable, Emacs customisation of auto-insert-query
   • Fontify *completion list* distinguishing elements: commands,
     functions and keywords.
   • provide a list of options for the -license function, set this
     function in the defcustom lmstat -a etc.
   • auto-indent-switch as defcustom?
   • inhibit the unnecessary blink-matching-block display when closing a
     block behind a block-end keyword
   • highlight matching block keywords (similar to show-paren-mode) when
     point is at keyword
   • Implement highlighting of bracket pairs with the correct level in
     Ansys GET- and parametric- functions.
   • highlighting of plot commands inside the /GCMD command
   • DEFSUBSTs with DEFUNs inside aren’t particularly helpful?
   • Emphasise better implied (colon) loops n,(1:6),(2:12:2) => n,1,2 $
     n,2,4 $... (little used, I know, but any ideas going beyond the
     colon?).
   • startup screen for Ansys mode: Mode help, Ansys version, supressing
     the startup screen ’ansys-mode-startup-message maybe as advice when
     sluggish -> compiliation
   • Enable choice for /show,3d or x11 (-start-graphics)
   • Provide a way to send commands to the tcl-tk Ansys gui (x11
     programming).

12.8.8.5 Ansys syntax restrictions not (yet) accounted for
..........................................................

   • Parentheses can only be nested 4 levels deep and only up to 9
     operations (+,-,*,...) within these set of parentheses
   • PATH name is restricted to 8 chars
   • *SET parameter strings may only be 32 character long!
   • Character parameters are restricted to only 8 characters.
   • *MSG command can only have 9 additional continuation lines
   • Code line restriction of 640 characters
   • Block level restriction of 20 levels of nested *DO loops (except
     with /INPUT and *USE)
   • Block level restriction of 10 levels of nested *IF blocks
   • Macro level restriction: 20 macros

12.8.8.6 Unknown Ansys stuff
............................

   • what the heck is the *UILIST command?
   • Is hyper56 a valid element?

13 Acknowledgements
*******************

My acknowledgements to Tim Read and Geoff Foster for their ansys-mod.el
from 1997 which triggered the idea to APDL-Mode in 2006.

   Parts of APDL-Mode were based on octave-mod.el: Copyright (C) 1997
Free Software Foundation, Inc.  Authors: Kurt Hornik
<Kurt.Hornik@wu-wien.ac.at> and John Eaton <jwe@bevo.che.wisc.edu>.

   I received, moreover, support and feedback from many individuals.
Thank you very much to all of them and also to the wonderful people
which are crafting

   GNU-Emacs!

Appendix A GNU Free Documentation License
*****************************************

                     GNU Free Documentation License
                      Version 1.3, 3 November 2008

      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
          <https://fsf.org/>
      Everyone is permitted to copy and distribute verbatim copies
      of this license document, but changing it is not allowed.

     0. PREAMBLE

     The purpose of this License is to make a manual, textbook, or other
     functional and useful document "free" in the sense of freedom: to
     assure everyone the effective freedom to copy and redistribute it,
     with or without modifying it, either commercially or noncommercially.
     Secondarily, this License preserves for the author and publisher a way
     to get credit for their work, while not being considered responsible
     for modifications made by others.

     This License is a kind of "copyleft", which means that derivative
     works of the document must themselves be free in the same sense.  It
     complements the GNU General Public License, which is a copyleft
     license designed for free software.

     We have designed this License in order to use it for manuals for free
     software, because free software needs free documentation: a free
     program should come with manuals providing the same freedoms that the
     software does.  But this License is not limited to software manuals;
     it can be used for any textual work, regardless of subject matter or
     whether it is published as a printed book.  We recommend this License
     principally for works whose purpose is instruction or reference.

     1. APPLICABILITY AND DEFINITIONS

     This License applies to any manual or other work, in any medium, that
     contains a notice placed by the copyright holder saying it can be
     distributed under the terms of this License.  Such a notice grants a
     world-wide, royalty-free license, unlimited in duration, to use that
     work under the conditions stated herein.  The "Document", below,
     refers to any such manual or work.  Any member of the public is a
     licensee, and is addressed as "you".  You accept the license if you
     copy, modify or distribute the work in a way requiring permission
     under copyright law.

     A "Modified Version" of the Document means any work containing the
     Document or a portion of it, either copied verbatim, or with
     modifications and/or translated into another language.

     A "Secondary Section" is a named appendix or a front-matter section of
     the Document that deals exclusively with the relationship of the
     publishers or authors of the Document to the Document's overall
     subject (or to related matters) and contains nothing that could fall
     directly within that overall subject.  (Thus, if the Document is in
     part a textbook of mathematics, a Secondary Section may not explain
     any mathematics.)  The relationship could be a matter of historical
     connection with the subject or with related matters, or of legal,
     commercial, philosophical, ethical or political position regarding
     them.

     The "Invariant Sections" are certain Secondary Sections whose titles
     are designated, as being those of Invariant Sections, in the notice
     that says that the Document is released under this License.  If a
     section does not fit the above definition of Secondary then it is not
     allowed to be designated as Invariant.  The Document may contain zero
     Invariant Sections.  If the Document does not identify any Invariant
     Sections then there are none.

     The "Cover Texts" are certain short passages of text that are listed,
     as Front-Cover Texts or Back-Cover Texts, in the notice that says that
     the Document is released under this License.  A Front-Cover Text may
     be at most 5 words, and a Back-Cover Text may be at most 25 words.

     A "Transparent" copy of the Document means a machine-readable copy,
     represented in a format whose specification is available to the
     general public, that is suitable for revising the document
     straightforwardly with generic text editors or (for images composed of
     pixels) generic paint programs or (for drawings) some widely available
     drawing editor, and that is suitable for input to text formatters or
     for automatic translation to a variety of formats suitable for input
     to text formatters.  A copy made in an otherwise Transparent file
     format whose markup, or absence of markup, has been arranged to thwart
     or discourage subsequent modification by readers is not Transparent.
     An image format is not Transparent if used for any substantial amount
     of text.  A copy that is not "Transparent" is called "Opaque".

     Examples of suitable formats for Transparent copies include plain
     ASCII without markup, Texinfo input format, LaTeX input format, SGML
     or XML using a publicly available DTD, and standard-conforming simple
     HTML, PostScript or PDF designed for human modification.  Examples of
     transparent image formats include PNG, XCF and JPG.  Opaque formats
     include proprietary formats that can be read and edited only by
     proprietary word processors, SGML or XML for which the DTD and/or
     processing tools are not generally available, and the
     machine-generated HTML, PostScript or PDF produced by some word
     processors for output purposes only.

     The "Title Page" means, for a printed book, the title page itself,
     plus such following pages as are needed to hold, legibly, the material
     this License requires to appear in the title page.  For works in
     formats which do not have any title page as such, "Title Page" means
     the text near the most prominent appearance of the work's title,
     preceding the beginning of the body of the text.

     The "publisher" means any person or entity that distributes copies of
     the Document to the public.

     A section "Entitled XYZ" means a named subunit of the Document whose
     title either is precisely XYZ or contains XYZ in parentheses following
     text that translates XYZ in another language.  (Here XYZ stands for a
     specific section name mentioned below, such as "Acknowledgements",
     "Dedications", "Endorsements", or "History".)  To "Preserve the Title"
     of such a section when you modify the Document means that it remains a
     section "Entitled XYZ" according to this definition.

     The Document may include Warranty Disclaimers next to the notice which
     states that this License applies to the Document.  These Warranty
     Disclaimers are considered to be included by reference in this
     License, but only as regards disclaiming warranties: any other
     implication that these Warranty Disclaimers may have is void and has
     no effect on the meaning of this License.

     2. VERBATIM COPYING

     You may copy and distribute the Document in any medium, either
     commercially or noncommercially, provided that this License, the
     copyright notices, and the license notice saying this License applies
     to the Document are reproduced in all copies, and that you add no
     other conditions whatsoever to those of this License.  You may not use
     technical measures to obstruct or control the reading or further
     copying of the copies you make or distribute.  However, you may accept
     compensation in exchange for copies.  If you distribute a large enough
     number of copies you must also follow the conditions in section 3.

     You may also lend copies, under the same conditions stated above, and
     you may publicly display copies.

     3. COPYING IN QUANTITY

     If you publish printed copies (or copies in media that commonly have
     printed covers) of the Document, numbering more than 100, and the
     Document's license notice requires Cover Texts, you must enclose the
     copies in covers that carry, clearly and legibly, all these Cover
     Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
     the back cover.  Both covers must also clearly and legibly identify
     you as the publisher of these copies.  The front cover must present
     the full title with all words of the title equally prominent and
     visible.  You may add other material on the covers in addition.
     Copying with changes limited to the covers, as long as they preserve
     the title of the Document and satisfy these conditions, can be treated
     as verbatim copying in other respects.

     If the required texts for either cover are too voluminous to fit
     legibly, you should put the first ones listed (as many as fit
     reasonably) on the actual cover, and continue the rest onto adjacent
     pages.

     If you publish or distribute Opaque copies of the Document numbering
     more than 100, you must either include a machine-readable Transparent
     copy along with each Opaque copy, or state in or with each Opaque copy
     a computer-network location from which the general network-using
     public has access to download using public-standard network protocols
     a complete Transparent copy of the Document, free of added material.
     If you use the latter option, you must take reasonably prudent steps,
     when you begin distribution of Opaque copies in quantity, to ensure
     that this Transparent copy will remain thus accessible at the stated
     location until at least one year after the last time you distribute an
     Opaque copy (directly or through your agents or retailers) of that
     edition to the public.

     It is requested, but not required, that you contact the authors of the
     Document well before redistributing any large number of copies, to
     give them a chance to provide you with an updated version of the
     Document.

     4. MODIFICATIONS

     You may copy and distribute a Modified Version of the Document under
     the conditions of sections 2 and 3 above, provided that you release
     the Modified Version under precisely this License, with the Modified
     Version filling the role of the Document, thus licensing distribution
     and modification of the Modified Version to whoever possesses a copy
     of it.  In addition, you must do these things in the Modified Version:

     A. Use in the Title Page (and on the covers, if any) a title distinct
        from that of the Document, and from those of previous versions
        (which should, if there were any, be listed in the History section
        of the Document).  You may use the same title as a previous version
        if the original publisher of that version gives permission.
     B. List on the Title Page, as authors, one or more persons or entities
        responsible for authorship of the modifications in the Modified
        Version, together with at least five of the principal authors of the
        Document (all of its principal authors, if it has fewer than five),
        unless they release you from this requirement.
     C. State on the Title page the name of the publisher of the
        Modified Version, as the publisher.
     D. Preserve all the copyright notices of the Document.
     E. Add an appropriate copyright notice for your modifications
        adjacent to the other copyright notices.
     F. Include, immediately after the copyright notices, a license notice
        giving the public permission to use the Modified Version under the
        terms of this License, in the form shown in the Addendum below.
     G. Preserve in that license notice the full lists of Invariant Sections
        and required Cover Texts given in the Document's license notice.
     H. Include an unaltered copy of this License.
     I. Preserve the section Entitled "History", Preserve its Title, and add
        to it an item stating at least the title, year, new authors, and
        publisher of the Modified Version as given on the Title Page.  If
        there is no section Entitled "History" in the Document, create one
        stating the title, year, authors, and publisher of the Document as
        given on its Title Page, then add an item describing the Modified
        Version as stated in the previous sentence.
     J. Preserve the network location, if any, given in the Document for
        public access to a Transparent copy of the Document, and likewise
        the network locations given in the Document for previous versions
        it was based on.  These may be placed in the "History" section.
        You may omit a network location for a work that was published at
        least four years before the Document itself, or if the original
        publisher of the version it refers to gives permission.
     K. For any section Entitled "Acknowledgements" or "Dedications",
        Preserve the Title of the section, and preserve in the section all
        the substance and tone of each of the contributor acknowledgements
        and/or dedications given therein.
     L. Preserve all the Invariant Sections of the Document,
        unaltered in their text and in their titles.  Section numbers
        or the equivalent are not considered part of the section titles.
     M. Delete any section Entitled "Endorsements".  Such a section
        may not be included in the Modified Version.
     N. Do not retitle any existing section to be Entitled "Endorsements"
        or to conflict in title with any Invariant Section.
     O. Preserve any Warranty Disclaimers.

     If the Modified Version includes new front-matter sections or
     appendices that qualify as Secondary Sections and contain no material
     copied from the Document, you may at your option designate some or all
     of these sections as invariant.  To do this, add their titles to the
     list of Invariant Sections in the Modified Version's license notice.
     These titles must be distinct from any other section titles.

     You may add a section Entitled "Endorsements", provided it contains
     nothing but endorsements of your Modified Version by various
     parties--for example, statements of peer review or that the text has
     been approved by an organization as the authoritative definition of a
     standard.

     You may add a passage of up to five words as a Front-Cover Text, and a
     passage of up to 25 words as a Back-Cover Text, to the end of the list
     of Cover Texts in the Modified Version.  Only one passage of
     Front-Cover Text and one of Back-Cover Text may be added by (or
     through arrangements made by) any one entity.  If the Document already
     includes a cover text for the same cover, previously added by you or
     by arrangement made by the same entity you are acting on behalf of,
     you may not add another; but you may replace the old one, on explicit
     permission from the previous publisher that added the old one.

     The author(s) and publisher(s) of the Document do not by this License
     give permission to use their names for publicity for or to assert or
     imply endorsement of any Modified Version.

     5. COMBINING DOCUMENTS

     You may combine the Document with other documents released under this
     License, under the terms defined in section 4 above for modified
     versions, provided that you include in the combination all of the
     Invariant Sections of all of the original documents, unmodified, and
     list them all as Invariant Sections of your combined work in its
     license notice, and that you preserve all their Warranty Disclaimers.

     The combined work need only contain one copy of this License, and
     multiple identical Invariant Sections may be replaced with a single
     copy.  If there are multiple Invariant Sections with the same name but
     different contents, make the title of each such section unique by
     adding at the end of it, in parentheses, the name of the original
     author or publisher of that section if known, or else a unique number.
     Make the same adjustment to the section titles in the list of
     Invariant Sections in the license notice of the combined work.

     In the combination, you must combine any sections Entitled "History"
     in the various original documents, forming one section Entitled
     "History"; likewise combine any sections Entitled "Acknowledgements",
     and any sections Entitled "Dedications".  You must delete all sections
     Entitled "Endorsements".

     6. COLLECTIONS OF DOCUMENTS

     You may make a collection consisting of the Document and other
     documents released under this License, and replace the individual
     copies of this License in the various documents with a single copy
     that is included in the collection, provided that you follow the rules
     of this License for verbatim copying of each of the documents in all
     other respects.

     You may extract a single document from such a collection, and
     distribute it individually under this License, provided you insert a
     copy of this License into the extracted document, and follow this
     License in all other respects regarding verbatim copying of that
     document.

     7. AGGREGATION WITH INDEPENDENT WORKS

     A compilation of the Document or its derivatives with other separate
     and independent documents or works, in or on a volume of a storage or
     distribution medium, is called an "aggregate" if the copyright
     resulting from the compilation is not used to limit the legal rights
     of the compilation's users beyond what the individual works permit.
     When the Document is included in an aggregate, this License does not
     apply to the other works in the aggregate which are not themselves
     derivative works of the Document.

     If the Cover Text requirement of section 3 is applicable to these
     copies of the Document, then if the Document is less than one half of
     the entire aggregate, the Document's Cover Texts may be placed on
     covers that bracket the Document within the aggregate, or the
     electronic equivalent of covers if the Document is in electronic form.
     Otherwise they must appear on printed covers that bracket the whole
     aggregate.

     8. TRANSLATION

     Translation is considered a kind of modification, so you may
     distribute translations of the Document under the terms of section 4.
     Replacing Invariant Sections with translations requires special
     permission from their copyright holders, but you may include
     translations of some or all Invariant Sections in addition to the
     original versions of these Invariant Sections.  You may include a
     translation of this License, and all the license notices in the
     Document, and any Warranty Disclaimers, provided that you also include
     the original English version of this License and the original versions
     of those notices and disclaimers.  In case of a disagreement between
     the translation and the original version of this License or a notice
     or disclaimer, the original version will prevail.

     If a section in the Document is Entitled "Acknowledgements",
     "Dedications", or "History", the requirement (section 4) to Preserve
     its Title (section 1) will typically require changing the actual
     title.

     9. TERMINATION

     You may not copy, modify, sublicense, or distribute the Document
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense, or distribute it is void, and
     will automatically terminate your rights under this License.

     However, if you cease all violation of this License, then your license
     from a particular copyright holder is reinstated (a) provisionally,
     unless and until the copyright holder explicitly and finally
     terminates your license, and (b) permanently, if the copyright holder
     fails to notify you of the violation by some reasonable means prior to
     60 days after the cessation.

     Moreover, your license from a particular copyright holder is
     reinstated permanently if the copyright holder notifies you of the
     violation by some reasonable means, this is the first time you have
     received notice of violation of this License (for any work) from that
     copyright holder, and you cure the violation prior to 30 days after
     your receipt of the notice.

     Termination of your rights under this section does not terminate the
     licenses of parties who have received copies or rights from you under
     this License.  If your rights have been terminated and not permanently
     reinstated, receipt of a copy of some or all of the same material does
     not give you any rights to use it.

     10. FUTURE REVISIONS OF THIS LICENSE

     The Free Software Foundation may publish new, revised versions of the
     GNU Free Documentation License from time to time.  Such new versions
     will be similar in spirit to the present version, but may differ in
     detail to address new problems or concerns.  See
     https://www.gnu.org/licenses/.

     Each version of the License is given a distinguishing version number.
     If the Document specifies that a particular numbered version of this
     License "or any later version" applies to it, you have the option of
     following the terms and conditions either of that specified version or
     of any later version that has been published (not as a draft) by the
     Free Software Foundation.  If the Document does not specify a version
     number of this License, you may choose any version ever published (not
     as a draft) by the Free Software Foundation.  If the Document
     specifies that a proxy can decide which future versions of this
     License can be used, that proxy's public statement of acceptance of a
     version permanently authorizes you to choose that version for the
     Document.

     11. RELICENSING

     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
     World Wide Web server that publishes copyrightable works and also
     provides prominent facilities for anybody to edit those works.  A
     public wiki that anybody can edit is an example of such a server.  A
     "Massive Multiauthor Collaboration" (or "MMC") contained in the site
     means any set of copyrightable works thus published on the MMC site.

     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
     license published by Creative Commons Corporation, a not-for-profit
     corporation with a principal place of business in San Francisco,
     California, as well as future copyleft versions of that license
     published by that same organization.

     "Incorporate" means to publish or republish a Document, in whole or in
     part, as part of another Document.

     An MMC is "eligible for relicensing" if it is licensed under this
     License, and if all works that were first published under this License
     somewhere other than this MMC, and subsequently incorporated in whole or
     in part into the MMC, (1) had no cover texts or invariant sections, and
     (2) were thus incorporated prior to November 1, 2008.

     The operator of an MMC Site may republish an MMC contained in the site
     under CC-BY-SA on the same site at any time before August 1, 2009,
     provided the MMC is eligible for relicensing.

     ADDENDUM: How to use this License for your documents

     To use this License in a document you have written, include a copy of
     the License in the document and put the following copyright and
     license notices just after the title page:

         Copyright (c)  YEAR  YOUR NAME.
         Permission is granted to copy, distribute and/or modify this document
         under the terms of the GNU Free Documentation License, Version 1.3
         or any later version published by the Free Software Foundation;
         with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
         A copy of the license is included in the section entitled "GNU
         Free Documentation License".

     If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
     replace the "with...Texts." line with this:

         with the Invariant Sections being LIST THEIR TITLES, with the
         Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

     If you have Invariant Sections without Cover Texts, or some other
     combination of the three, merge those two alternatives to suit the
     situation.

     If your document contains nontrivial examples of program code, we
     recommend releasing these examples in parallel under your choice of
     free software license, such as the GNU General Public License,
     to permit their use in free software.

B Variable Index
****************

C Concept Index
***************

Emacs 27.1 (Org mode 9.3)