From 1dab1fe4ab6ae0b1431e9f0ee5837ecc989a7412 Mon Sep 17 00:00:00 2001 From: Daniel Weschke Date: Thu, 25 Dec 2025 11:44:13 +0100 Subject: [PATCH] update packages --- lisp/apdl-mode/apdl-initialise.el | 552 ++ lisp/apdl-mode/apdl-keyword.el | 1697 ++++++ lisp/apdl-mode/apdl-mode-pkg.el | 9 + lisp/apdl-mode/apdl-mode.el | 3639 +++++++++++++ lisp/apdl-mode/apdl-mode.info | 4803 +++++++++++++++++ lisp/apdl-mode/apdl-process.el | 2340 ++++++++ lisp/apdl-mode/apdl-template.el | 3332 ++++++++++++ lisp/apdl-mode/apdl-wb-template.el | 226 + lisp/apdl-mode/dir | 19 + .../matlib/42CrMo4_biso_Rp850.MPA_MPL | 24 + lisp/apdl-mode/matlib/AlSi9Cu3_biso.MPA_MPL | 19 + lisp/apdl-mode/matlib/Al_a2024-T3.SI_MPL | 21 + lisp/apdl-mode/matlib/Al_a6061-T6.SI_MPL | 21 + lisp/apdl-mode/matlib/Al_a7079-T6.SI_MPL | 21 + .../matlib/C75s_hardened_kinh.MPA_MPL | 28 + lisp/apdl-mode/matlib/Cu_pure.SI_MPL | 21 + lisp/apdl-mode/matlib/M250-35A_aniso.MPA_MPL | 23 + lisp/apdl-mode/matlib/M250-35A_biso.MPA_MPL | 17 + .../M250-35A_orthotropic_elastic.MPA_MPL | 21 + lisp/apdl-mode/matlib/M800-65A_biso.MPA_MPL | 18 + lisp/apdl-mode/matlib/Mg_AZ31B-H24.SI_MPL | 21 + lisp/apdl-mode/matlib/Mg_HK31A-H24.SI_MPL | 21 + lisp/apdl-mode/matlib/NdFeB_magnet.MPA_MPL | 20 + lisp/apdl-mode/matlib/Ni_pure.SI_MPL | 21 + lisp/apdl-mode/matlib/PPS.MPA_MPL | 22 + .../PPS_Fortron1140L4_70degC_kinh.MPA_MPL | 24 + lisp/apdl-mode/matlib/README.org | 105 + lisp/apdl-mode/matlib/St37.MPA_MPL | 21 + lisp/apdl-mode/matlib/St37_elastic.MPA_MPL | 21 + lisp/apdl-mode/matlib/St70_biso.MPA_MPL | 17 + lisp/apdl-mode/matlib/Stl_AISI-304.SI_MPL | 21 + lisp/apdl-mode/matlib/Stl_AISI-C1020.SI_MPL | 21 + lisp/apdl-mode/matlib/Ti_B-120VCA.SI_MPL | 21 + lisp/apdl-mode/matlib/X46Cr13.MPA_MPL | 15 + .../matlib/construction_steel.MPA_MPL | 14 + lisp/apdl-mode/matlib/copper.MPA_MPL | 22 + ...creep_curves_PPS_Fortron1140l4_120degC.csv | 54 + lisp/apdl-mode/matlib/emagCopper.SI_MPL | 23 + lisp/apdl-mode/matlib/emagM3.SI_MPL | 39 + lisp/apdl-mode/matlib/emagM54.SI_MPL | 34 + lisp/apdl-mode/matlib/emagSa1010.SI_MPL | 38 + lisp/apdl-mode/matlib/emagSilicon.SI_MPL | 28 + lisp/apdl-mode/matlib/emagVanad.SI_MPL | 35 + .../3d_press-fit_torque_calculations.mac | 26 + .../harmonic_acceleration_results.mac | 142 + .../plane-stress_structural_example.mac | 105 + ...e_stress_press-fit_torque_calculations.mac | 38 + lisp/apdl-mode/template/post26_output.mac | 39 + lisp/diff-hl/diff-hl-pkg.el | 6 +- lisp/diff-hl/diff-hl-show-hunk.el | 2 +- lisp/diff-hl/diff-hl.el | 40 +- lisp/emacsql/emacsql-pg.el | 8 +- lisp/emacsql/emacsql-pkg.el | 6 +- lisp/emacsql/emacsql-sqlite-module.el | 8 +- lisp/emacsql/emacsql.el | 4 +- lisp/ess/ess-custom.el | 6 + lisp/ess/ess-pkg.el | 6 +- lisp/ess/ess-r-mode.el | 11 + lisp/ess/ess.el | 4 +- lisp/ess/ess.info | 147 +- lisp/flycheck/flycheck-pkg.el | 6 +- lisp/flycheck/flycheck.el | 66 +- lisp/ledger-mode/ledger-commodities.el | 24 +- lisp/ledger-mode/ledger-complete.el | 34 +- lisp/ledger-mode/ledger-mode-pkg.el | 6 +- lisp/ledger-mode/ledger-mode.el | 4 +- lisp/ledger-mode/ledger-reconcile.el | 63 +- lisp/ledger-mode/ledger-regex.el | 18 +- lisp/ledger-mode/ledger-report.el | 8 +- lisp/magit-section/magit-section-pkg.el | 6 +- lisp/magit-section/magit-section.el | 17 +- lisp/magit/AUTHORS.md | 1 + lisp/magit/git-commit.el | 109 +- lisp/magit/git-hooks/applypatch-msg | 8 + lisp/magit/git-hooks/commit-msg | 8 + lisp/magit/git-hooks/fallthrough | 8 + lisp/magit/git-hooks/fsmonitor-watchman | 8 + lisp/magit/git-hooks/p4-changelist | 8 + lisp/magit/git-hooks/p4-post-changelist | 8 + lisp/magit/git-hooks/p4-pre-submit | 8 + lisp/magit/git-hooks/p4-prepare-changelist | 8 + lisp/magit/git-hooks/post-applypatch | 8 + lisp/magit/git-hooks/post-checkout | 8 + lisp/magit/git-hooks/post-commit | 13 + lisp/magit/git-hooks/post-index-change | 8 + lisp/magit/git-hooks/post-merge | 13 + lisp/magit/git-hooks/post-receive | 8 + lisp/magit/git-hooks/post-rewrite | 13 + lisp/magit/git-hooks/post-update | 8 + lisp/magit/git-hooks/pre-applypatch | 8 + lisp/magit/git-hooks/pre-auto-gc | 8 + lisp/magit/git-hooks/pre-commit | 8 + lisp/magit/git-hooks/pre-merge-commit | 8 + lisp/magit/git-hooks/pre-push | 8 + lisp/magit/git-hooks/pre-rebase | 8 + lisp/magit/git-hooks/pre-receive | 8 + lisp/magit/git-hooks/prepare-commit-msg | 8 + lisp/magit/git-hooks/proc-receive | 8 + lisp/magit/git-hooks/push-to-checkout | 8 + lisp/magit/git-hooks/reference-transaction | 8 + lisp/magit/git-hooks/sendemail-validate | 8 + lisp/magit/git-hooks/update | 8 + lisp/magit/magit-autorevert.el | 82 +- lisp/magit/magit-commit.el | 96 +- lisp/magit/magit-diff.el | 28 +- lisp/magit/magit-git.el | 174 +- lisp/magit/magit-log.el | 2 +- lisp/magit/magit-mode.el | 4 +- lisp/magit/magit-pkg.el | 6 +- lisp/magit/magit-process.el | 35 +- lisp/magit/magit-sequence.el | 9 +- lisp/magit/magit-status.el | 2 + lisp/magit/magit-wip.el | 67 +- lisp/magit/magit.el | 13 +- lisp/magit/magit.info | 119 +- lisp/markdown-mode/markdown-mode-pkg.el | 6 +- lisp/markdown-mode/markdown-mode.el | 38 +- lisp/nerd-icons/nerd-icons-pkg.el | 6 +- lisp/nerd-icons/nerd-icons.el | 100 +- lisp/org-ref/org-ref-export.el | 109 +- lisp/org-ref/org-ref-pkg.el | 6 +- lisp/org-ref/org-ref.el | 4 +- lisp/org/doc/org-version.inc | 4 +- lisp/org/org-archive.el | 5 +- lisp/org/org-loaddefs.el | 5 +- lisp/org/org-pkg.el | 2 +- lisp/org/org-version.el | 4 +- lisp/org/org.el | 2 +- lisp/org/org.info | 1192 ++-- lisp/org/orgguide.info | 203 +- lisp/parsebib/parsebib-pkg.el | 6 +- lisp/parsebib/parsebib.el | 18 +- lisp/polymode/polymode-core.el | 11 +- lisp/polymode/polymode-pkg.el | 6 +- lisp/polymode/polymode.el | 4 +- lisp/spacemacs-theme/spacemacs-theme-pkg.el | 6 +- lisp/spacemacs-theme/spacemacs-theme.el | 20 +- lisp/transient/transient-pkg.el | 6 +- lisp/transient/transient.el | 163 +- lisp/transient/transient.info | 4 +- lisp/web-mode/web-mode-pkg.el | 6 +- lisp/web-mode/web-mode.el | 17 +- .../yasnippet-snippets-pkg.el | 6 +- lisp/yasnippet-snippets/yasnippet-snippets.el | 4 +- 144 files changed, 19985 insertions(+), 1331 deletions(-) create mode 100644 lisp/apdl-mode/apdl-initialise.el create mode 100644 lisp/apdl-mode/apdl-keyword.el create mode 100644 lisp/apdl-mode/apdl-mode-pkg.el create mode 100644 lisp/apdl-mode/apdl-mode.el create mode 100644 lisp/apdl-mode/apdl-mode.info create mode 100644 lisp/apdl-mode/apdl-process.el create mode 100644 lisp/apdl-mode/apdl-template.el create mode 100644 lisp/apdl-mode/apdl-wb-template.el create mode 100644 lisp/apdl-mode/dir create mode 100644 lisp/apdl-mode/matlib/42CrMo4_biso_Rp850.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/AlSi9Cu3_biso.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/Al_a2024-T3.SI_MPL create mode 100644 lisp/apdl-mode/matlib/Al_a6061-T6.SI_MPL create mode 100644 lisp/apdl-mode/matlib/Al_a7079-T6.SI_MPL create mode 100644 lisp/apdl-mode/matlib/C75s_hardened_kinh.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/Cu_pure.SI_MPL create mode 100644 lisp/apdl-mode/matlib/M250-35A_aniso.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/M250-35A_biso.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/M250-35A_orthotropic_elastic.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/M800-65A_biso.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/Mg_AZ31B-H24.SI_MPL create mode 100644 lisp/apdl-mode/matlib/Mg_HK31A-H24.SI_MPL create mode 100644 lisp/apdl-mode/matlib/NdFeB_magnet.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/Ni_pure.SI_MPL create mode 100644 lisp/apdl-mode/matlib/PPS.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/PPS_Fortron1140L4_70degC_kinh.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/README.org create mode 100644 lisp/apdl-mode/matlib/St37.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/St37_elastic.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/St70_biso.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/Stl_AISI-304.SI_MPL create mode 100644 lisp/apdl-mode/matlib/Stl_AISI-C1020.SI_MPL create mode 100644 lisp/apdl-mode/matlib/Ti_B-120VCA.SI_MPL create mode 100644 lisp/apdl-mode/matlib/X46Cr13.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/construction_steel.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/copper.MPA_MPL create mode 100644 lisp/apdl-mode/matlib/creep_curves_PPS_Fortron1140l4_120degC.csv create mode 100644 lisp/apdl-mode/matlib/emagCopper.SI_MPL create mode 100644 lisp/apdl-mode/matlib/emagM3.SI_MPL create mode 100644 lisp/apdl-mode/matlib/emagM54.SI_MPL create mode 100644 lisp/apdl-mode/matlib/emagSa1010.SI_MPL create mode 100644 lisp/apdl-mode/matlib/emagSilicon.SI_MPL create mode 100644 lisp/apdl-mode/matlib/emagVanad.SI_MPL create mode 100644 lisp/apdl-mode/template/3d_press-fit_torque_calculations.mac create mode 100644 lisp/apdl-mode/template/harmonic_acceleration_results.mac create mode 100644 lisp/apdl-mode/template/plane-stress_structural_example.mac create mode 100644 lisp/apdl-mode/template/plane_stress_press-fit_torque_calculations.mac create mode 100644 lisp/apdl-mode/template/post26_output.mac create mode 100755 lisp/magit/git-hooks/applypatch-msg create mode 100755 lisp/magit/git-hooks/commit-msg create mode 100755 lisp/magit/git-hooks/fallthrough create mode 100755 lisp/magit/git-hooks/fsmonitor-watchman create mode 100755 lisp/magit/git-hooks/p4-changelist create mode 100755 lisp/magit/git-hooks/p4-post-changelist create mode 100755 lisp/magit/git-hooks/p4-pre-submit create mode 100755 lisp/magit/git-hooks/p4-prepare-changelist create mode 100755 lisp/magit/git-hooks/post-applypatch create mode 100755 lisp/magit/git-hooks/post-checkout create mode 100755 lisp/magit/git-hooks/post-commit create mode 100755 lisp/magit/git-hooks/post-index-change create mode 100755 lisp/magit/git-hooks/post-merge create mode 100755 lisp/magit/git-hooks/post-receive create mode 100755 lisp/magit/git-hooks/post-rewrite create mode 100755 lisp/magit/git-hooks/post-update create mode 100755 lisp/magit/git-hooks/pre-applypatch create mode 100755 lisp/magit/git-hooks/pre-auto-gc create mode 100755 lisp/magit/git-hooks/pre-commit create mode 100755 lisp/magit/git-hooks/pre-merge-commit create mode 100755 lisp/magit/git-hooks/pre-push create mode 100755 lisp/magit/git-hooks/pre-rebase create mode 100755 lisp/magit/git-hooks/pre-receive create mode 100755 lisp/magit/git-hooks/prepare-commit-msg create mode 100755 lisp/magit/git-hooks/proc-receive create mode 100755 lisp/magit/git-hooks/push-to-checkout create mode 100755 lisp/magit/git-hooks/reference-transaction create mode 100755 lisp/magit/git-hooks/sendemail-validate create mode 100755 lisp/magit/git-hooks/update diff --git a/lisp/apdl-mode/apdl-initialise.el b/lisp/apdl-mode/apdl-initialise.el new file mode 100644 index 00000000..af262369 --- /dev/null +++ b/lisp/apdl-mode/apdl-initialise.el @@ -0,0 +1,552 @@ +;;; apdl-initialise.el --- Initialisation code for APDL-Mode -*- lexical-binding: t -*- + +;; Copyright (C) 2016 - 2025 H. Dieter Wilhelm + +;; Author: H. Dieter Wilhelm +;; Package-Requires: ((emacs "25.1")) +;; Keywords: languages, convenience, extensions +;; URL: https://github.com/dieter-wilhelm/apdl-mode + +;; Maintainer: H. Dieter Wilhelm + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; Initialisation code: + +;; Read the Ansys installation dependent parameters mainly from +;; environment variables. + +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; constants + +(defconst apdl-mode-version "20.7.0" + "The APDL-Mode version string.") + +(defconst apdl-mode-update "2021-10-23" + "APDL-Mode packaging date string in yyyy-mm-dd format. +This is for the APDL-Mode development versions to check the time +of packaging.") + +;; safer way to get the installation directory? -TODO- +;; (defconst superfrobnicator-base (file-name-directory load-file-name)) +;; (defun superfrobnicator-fetch-image (file) +;; (expand-file-name file superfrobnicator-base)) +(defconst apdl-mode-install-directory + (file-name-directory + (or (locate-library "apdl-mode") + buffer-file-name)) ;use this file location + "The installation directory string of APDL-Mode. +The string contains the directory where the APDL-Mode Elisp files +reside.") + +(defconst apdl-ansys-version "v201" + "Ansys version string on which APDL-Mode is based upon. +With respect to keywords and documentation, like deprecated +elements, command names, etc.") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; defcustoms + +(defgroup APDL-initialise nil + "Initialisation subgroup for APDL-Mode." + :group 'APDL) + +(defcustom apdl-username nil + "Regex string representing the user name or user ID. +This variable is a regular expression used to display only the +user's license(s) from the license pool. Please see the function +`apdl-user-license-status'." + :type 'string + :group 'APDL-initialise) + +;; -TODO-: are environment variables also set under GNU-Linux? +(defcustom apdl-ansys-install-directory nil + "This is the path where the MAPDL solver (Ansys) has been installed. +Which is to say the path up to (and including) the Ansys version +number, for example \"/ansys_inc/v201/\". The Ansys installation +routine sets for this path an environment variable, for the +former versioning example: \"AWP_ROOT201\". With other words: +this customisation variable includes besides the installation +root directory also the information which Ansys version is +currently in use." + :type 'directory + :group 'APDL-initialise) + +;; TODO: the following defcustoms can actually be variables, can't +;; they? + +(defcustom apdl-ansys-program nil + "This string variable stores the Ansys executable. +Under GNU-Linux this should be the solver, under Windows just the +launcher. When the respective executable is not in your search +path, you have to specify the full qualified file name and not +only executable's name. For example: +\"/ansys_inc/v201/ansys/bin/ansys195\" and not only \"ansys195\". +You might customise this variable or use the function +`apdl-ansys-program' to do this for the current session only." + :type '(file :must-match t) + :group 'APDL-initialise) + +(defcustom apdl-ansys-launcher nil + "This string variable stores the Ansys launcher executable. +When the respective executable is not in your search path, you +have to specify the full qualified file name and not only +executable's name. For example: +\"/ansys_inc/v162/ansys/bin/launcher162\". You might customise this +variable permanently or use the function `apdl-ansys-launcher' to do +this for the current session only." + :type '(file :must-match t) + :group 'APDL-initialise) + +(defcustom apdl-ansys-wb nil + "This string variable stores the Ansys WorkBench executable. +When the respective executable is not in your search path, you +have to specify the full qualified file name, not only +executable's name. For example: +\"/ansys_inc/v201/Framework/bin/Linux64/runwb2\". You might +customise this variable permanently or use the function +`apdl-ansys-wb' to do this for the current session only." + :type '(file :must-match t) + :group 'APDL-initialise) + +(defcustom apdl-ansys-help-program nil + "The Ansys help viewer executable. +It is called with +\\[apdl-start-ansys-help] (`apdl-start-ansys-help'). When the +executable is not in the search path, you have to complement the +executable with its complete path. For example the default +locations are \"/ansys_inc/v162/ansys/bin/anshelp162\" on +GNU-Linux and \"c:/Program Files/Ansys +Inc/v162/commonfiles/help/HelpViewer/AnsysHelpViewer.exe\" on +Windows (Windows 10)." + :type '(file :must-match t) + :group 'APDL-initialise) + +(defcustom apdl-ansys-help-path nil + "The Ansys help path." + :type 'directory + :group 'APDL-initialise) + +(defcustom apdl-lmutil-program nil + "A FlexLM license manager monitoring executable. +For example: \"/ansys_inc/shared_files/licensing/linx64/lmutil\" +or in case of a Windows OS \"c:/Program Files/Ansys Inc/Shared +Files/Licensing/anslic_admin.exe\". The lmutil program is used +for displaying the license status." + :type '(file :must-match t) + :group 'APDL-initialise) + +(defcustom apdl-license-file nil + "The FlexLM license file name or license server specification(s). +The license server specification(s) should include the port +number even if it's the default port 1055 because the lmutil tool +needs it in the following way: port_number@server_name, use the +colon for multiple servers, for example +\"27005@rbgs421x:27005@rbgs422x\". + +Setting this variable skips the effect of previously set +environment variables, which have the following order of +precedence: 1. AnsysLMD_LICENSE_FILE environment variable, 2.) +The FLEXlm resource file: ~/.flexlmrc on GNU-Linux or somewhere in the +Windows registry. 3.) The LM_LICENSE_FILE variable. 4.) The +ansyslmd.ini file in the licensing directory (This is what +anslic_admin is doing in an Ansys recommended installation). 5.) +The license file itself." + :type 'string + :group 'APDL-initialise) + +(defcustom apdl-ansysli-servers nil + "Used to identify the server machine for the Licensing Interconnect. +Set it to port@host. The default port is 2325." + :type 'string + :group 'APDL-initialise) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; declaring functions + +(declare-function apdl-is-unix-system-p "apdl-mode") +(declare-function apdl-classics-p "apdl-process") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; defining variables + +(defvar apdl-initialised-flag nil + "Non-nil means that APDL-Mode is already initialised.") + +(defvar apdl-current-ansys-version nil + "String of the currently used MAPDL solver version. +This variable is used by the `apdl-skeleton-header' template and +for setting up variables defaults with Ansys path specifications, +like in the variable `apdl-ansys-program'. The content looks +like: \"v201\"") + +;; from -mode.el +(defvar apdl-is-unix-system-flag) + +;; from -process.el +(defvar apdl-classics-flag) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; functions + +(defun apdl-read-ansyslmd-ini (type) + "Read the Ansys license server configuration file for license TYPE. +If TYPE is nil return the license servers, if non-nil the +ansysli_servers. When there are no license servers readable, +return nil." + (let* ((idir + (if apdl-ansys-install-directory + (file-name-directory + (directory-file-name apdl-ansys-install-directory)) + nil)) + ini) + (if apdl-is-unix-system-flag + (setq ini (concat idir "shared_files/licensing/ansyslmd.ini")) + (setq ini (concat idir "Shared Files/Licensing/ansyslmd.ini"))) + (message "Checking license file: %s" ini) + (if (file-readable-p ini) + (with-temp-buffer + (insert-file-contents ini) + (if type ;ansli_server or not + ;; I think word search doesn't distinct capitalisation + ;; word search is not working with "=" for Emacs-24!! + (word-search-forward "AnsysLI_SERVERS=" nil t) + (word-search-forward "SERVER=" nil t)) + (search-forward-regexp ".*" nil t) + (match-string-no-properties 0)) ; TODO: there's no check + ;; against empty ini! + (message "File %s not readable" ini) + nil))) + +(defun apdl-find-path-environment-value () + "Find the latest AWP_ROOTXXX environment value. +Which is to say find the Ansys root path with the largest +installed versioning number and check the accessibility of the +content." + (let ((dir + (car + (reverse + (sort + (remove nil + (mapcar (lambda (str) + (when + (string-match + "AWP_ROOT[0-9][0-9][0-9]=\\(.*\\)" + str) + (match-string 1 str))) + process-environment)) + 'string<))))) + (if (null dir) + (progn + (message "No AWP_ROOTXXX environment variable") + nil) + (if (file-readable-p dir) + (progn + (message "Found Ansys root directory in environment: %s" dir) + dir) + (message "Environment AWP_ROOTXXX set but value is not readable") + nil)))) + +;;;###autoload +(defun apdl-initialise ( &optional force) + "Initialise the customisation variables. +When argument FORCE is non-nil overwrite some of the already set +customisation variables." + (message "Initialising Ansys installation dependent parameters ...") + ;; 0) -unix-system-flag, system environment + (setq apdl-is-unix-system-flag (apdl-is-unix-system-p)) + + (unless apdl-username + (setq apdl-username (or (getenv "USERNAME") + ;; centos 7.9 + (getenv "USER")))) + + ;; 1) -install-directory + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; !!!! with Ansys version information!!!! + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; if apdl-ansys-install-directory is set we need a way to get + ;; apdl-current-ansys-version! + + (when apdl-ansys-install-directory ;set by user + (let((subdir + (file-name-nondirectory + (directory-file-name apdl-ansys-install-directory)))) + (setq apdl-current-ansys-version subdir) ; (remove ?v subdir)) + (message "Current Ansys version: %s" apdl-current-ansys-version))) + + (unless apdl-ansys-install-directory + (let* ((cdir "/appl/ansys_inc/") ; this is a corporate path + ;; from environment variable below, I think only under + ;; Windows!? + (path (apdl-find-path-environment-value)) + (dir (if (null path) + nil + (file-name-as-directory path))) + subdir) + (cond + (dir ; from environment + (setq apdl-ansys-install-directory dir) + (message + "apdl-ansys-install-directory set from environment variable AWP_ROOTXXX") + (message "apdl-ansys-install-directory = %s" dir) + (setq subdir + (file-name-nondirectory (directory-file-name dir))) + (setq apdl-current-ansys-version subdir) ; (remove ?v subdir)) + (message "Current Ansys version: %s" apdl-current-ansys-version)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; from company Linux installation path + ((file-readable-p cdir) + (setq subdir + (car + (reverse + (directory-files cdir nil "[0-9][0-9]\.[0-9]")))) + (setq apdl-current-ansys-version (remove ?. (substring subdir 0 4))) + (setq dir (concat cdir subdir apdl-current-ansys-version "/"))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; default installation path on Linux "/" or rather "/usr" + ;; /ansys_i..nc is a symlink to /usr/ansys_inc! + ((apdl-is-unix-system-p) + (message "Checking the default path under a Unix system.") + (setq cdir "/ansys_inc/") + (when (file-readable-p cdir) + (setq subdir + (car + (reverse + (directory-files cdir nil "v[0-9][0-9][0-9]")))) + (setq apdl-current-ansys-version (substring subdir 0 4)) + (message "Current Ansys version: %s" apdl-current-ansys-version) + (setq dir (concat cdir subdir "/")))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; default installation path on windows + (t + (setq cdir "C:/Program Files/Ansys Inc/") + ;; search for the latest version + (when (file-readable-p cdir) + (setq subdir + (car + (reverse + (directory-files cdir nil "v[0-9][0-9][0-9]" 'string<)))) + (setq apdl-current-ansys-version (substring subdir 0 4)) + ;; (remove ?v (substring subdir 0 4))) + (message "Current Ansys version: %s" apdl-current-ansys-version) + (setq dir (concat cdir subdir "/"))))) + (if dir + (setq apdl-ansys-install-directory dir) + (message "No Ansys installation directory found")))) + + ;; ;; 1a) -classics-flag ; not supported any longer 2020-03 + ;; (let* () + ;; (if (and apdl-is-unix-system-flag (apdl-classics-p)) + ;; (setq apdl-classics-flag t))) + + ;; ;; 2) -current-apdl-version: is in the -ansys-install-directory + ;; ;; included + + ;; 3) -ansys-program under Win10 seems to be case sensitive! Since + ;; at least v191 there is also an MAPDL.exe + (when (and apdl-ansys-install-directory + (or (null apdl-ansys-program) force)) + (let* ((version1 (remove ?v apdl-current-ansys-version)) + (idir (file-name-directory apdl-ansys-install-directory)) + (exe (if apdl-is-unix-system-flag + (concat idir "ansys/bin/ansys" version1) + (concat idir "ansys/bin/winx64/MAPDL.exe")))) + (if (file-executable-p exe) + (progn + (setq apdl-ansys-program exe) + (message (concat "apdl-ansys-program set to " apdl-ansys-program))) + (message "Couldn't find an executable for apdl-ansys-program.")))) + + ;; 4) -wb + (when (and apdl-ansys-install-directory (or (null apdl-ansys-wb) force)) + (let* ((idir apdl-ansys-install-directory) + (exe + (if apdl-is-unix-system-flag + (concat idir "Framework/bin/Linux64/runwb2") ; 150, 161 + (concat idir "Framework/bin/Win64/RunWB2.exe" )))) ; 195 + (when (file-executable-p exe) + (setq apdl-ansys-wb exe)) + (if apdl-ansys-wb + (message (concat "apdl-ansys-wb set to " apdl-ansys-wb)) + (message "Couldn't find an executable for apdl-ansys-wb.")))) + + ;; 5) -launcher + (when (and apdl-ansys-install-directory (or (null apdl-ansys-launcher) force)) + (let* ( (idir (when apdl-ansys-install-directory + (file-name-directory apdl-ansys-install-directory))) + (exe + ;; since v191 there is no launcher191.exe, only + ;; launcher.exe... + (if apdl-is-unix-system-flag + (concat idir "ansys/bin/launcher") + (concat idir "ansys/bin/winx64/launcher.exe")))) + (when (file-executable-p exe) + (setq apdl-ansys-launcher exe)) + (if apdl-ansys-launcher + (message "apdl-ansys-launcher is set to %s" apdl-ansys-launcher) + (message "Couldn't find an executable for apdl-ansys-launcher (%s)." + exe)))) + + ;; 6) -help-path; the local help path + (when (and apdl-ansys-install-directory (or (null apdl-ansys-help-path) + force)) + (let* ((idir apdl-ansys-install-directory) + (path (concat idir "commonfiles/help/en-us/help/"))) + (if (file-readable-p path) ; path must be a string, not nil + (progn + (setq apdl-ansys-help-path path) + (message "Set apdl-ansys-help-path to %s" path)) + (message "%s" "Couldn't find the apdl-ansys-help-path")))) + + ;; 7) -help-program, checked v201, linux as well + (when (and apdl-ansys-install-directory (or (null apdl-ansys-help-program) + force)) + (let* ((idir apdl-ansys-install-directory) + (version1 (remove ?v apdl-current-ansys-version)) + (exe + (if apdl-is-unix-system-flag + (concat idir "ansys/bin/anshelp" version1) + ;; cygwin distincts capitalisation of execs (v201: + ;; ANSYSHelpViewer) + (concat idir "commonfiles/help/HelpViewer/ANSYSHelpViewer.exe")))) + (if (file-executable-p exe) + (progn + (message "apdl-ansys-help-program = %s" exe) + (setq apdl-ansys-help-program exe)) + (message + "%s" + "Couldn't find an executable for apdl-ansys-help-program.")))) + + ;; 8) -lmutil-program + (when (and apdl-ansys-install-directory (or (null apdl-lmutil-program) force)) + (let* ((idir (file-name-directory + (directory-file-name + apdl-ansys-install-directory))) + (exe + (if apdl-is-unix-system-flag + (concat idir "shared_files/licensing/linx64/lmutil") + ;; probably the linux path has also changed for lmutil.exe since Ansys21.1! + (if (version< (substring apdl-current-ansys-version 1) "211") + (concat idir "shared files/licensing/winx64/lmutil.exe") + (concat idir apdl-current-ansys-version + "/licensingclient/winx64/lmutil.exe"))))) + (if (file-executable-p exe) + (progn + (setq apdl-lmutil-program exe) + (message "apdl-lmutil-program = %s" exe)) + (message "%s" "Couldn't find an executable for apdl-lmutil-program")))) + + ;; 9) -license-file + (unless apdl-license-file + (let* ( + (lfile "AnsysLMD_LICENSE_FILE") + (lic (apdl-read-ansyslmd-ini nil)) + (lic1 (getenv lfile)) ; Ansys doesn't use LM_LICENSE_FILE + ;; corporate stuff + (lic2 (if (file-readable-p "/appl/ansys_inc") + "32002@ls_fr_ansyslmd_ww_1.conti.de"))) + (cond + (lic + (setq apdl-license-file lic) + (message "%s" "Read content of ansyslmd.ini") + (message "apdl-license-file=%s" lic)) + (lic1 + (setq apdl-license-file lic1) + (message "Read environment variable %s" lfile) + (message "apdl-license-file=%s" lic1)) + (lic2 + (setq apdl-license-file lic2) + (message "Conti server: apdl-license-file=%s" lic2) + (setenv lfile lic2)) + (t + (message + "%s" + "Found no default apdl-license-file from environment or ini file"))))) + + ;; 10) -ansysli-servers, the Interconnect license server(s) + (unless apdl-ansysli-servers + (let* ( + (lfile "AnsysLI_SERVERS") + (lic (apdl-read-ansyslmd-ini t)) + (lic1 (getenv lfile)) + (lic2 (if (file-readable-p "/appl/ansys_inc") + "2325@ls_fr_ansyslmd_ww_1.conti.de"))) + (cond + (lic + (setq apdl-ansysli-servers lic) + (message "%s" "Read content of ansyslmd.ini") + (message "apdl-ansysli-servers=%s" lic)) + (lic1 + (setq apdl-ansysli-servers lic1) + (message "Read environment variable %s" lfile) + (message "apdl-ansysli-servers=%s" lic1)) + (lic2 + (setq apdl-ansysli-servers lic2) + (message "Conti server: apdl-ansysli-servers=%s" lic2) + (setenv lfile lic2)) + (apdl-license-file ; Ansys assumes the following as the last + ; resort as well + ;; FIXME: but only in anslic_admin I think + (setq apdl-ansysli-servers + (replace-regexp-in-string "[0-9]*@" "2325@" apdl-license-file)) + (message + "%s" "Assuming the same servers for Interconnect with default port") + (message "apdl-ansysli-servers=%s" apdl-ansysli-servers)) + (t + (message + "%s" "Found no apdl-ansyslic-servers from environment or ini file"))))) + ;; ------------------------------------------------------------ + (setq apdl-initialised-flag t) + (message "%s" "\nAPDL-Mode: Initialised system dependent variables.")) +;; end of init function + +(defun apdl-ansys-install-directory () + "Change the Ansys installation directory. +Which is to say the path up to (and including) the Ansys version +number, for example \"/ansys_inc/v201/\". The path is stored in +the variable `apdl-ansys-install-directory'" + (interactive) + (let* ((idir apdl-ansys-install-directory) + (ndir + (expand-file-name ; in case it was written ~ + (file-name-as-directory ; in case the slash is forgotten + (read-directory-name + (concat "Specify the Ansys installation directory [" + idir "]:") + idir idir)))) + (length (length ndir)) + (version (substring (directory-file-name ndir) + (- length 5) (- length 1)))) + (message "a-i-d: %s" ndir) + (if (file-readable-p ndir) + (progn + (setq apdl-ansys-install-directory + (file-name-as-directory ndir)) ; ensure final slash + (message "Set apdl-ansys-install-directory to \"%s\"." ndir)) + (error "Ansys directory \"%s\" is not readable" ndir)) + (apdl-initialise 'force) + (setq apdl-current-ansys-version version))) + +(provide 'apdl-initialise) + +;;; apdl-initialise.el ends here + +;; Local Variables: +;; indicate-empty-lines: t +;; show-trailing-whitespace: t +;; End: diff --git a/lisp/apdl-mode/apdl-keyword.el b/lisp/apdl-mode/apdl-keyword.el new file mode 100644 index 00000000..63483bbd --- /dev/null +++ b/lisp/apdl-mode/apdl-keyword.el @@ -0,0 +1,1697 @@ +;;; apdl-keyword.el --- APDL-Mode completion and highlighting variables -*- lexical-binding:t -*- + +;; Copyright (C) 2006 - 2021 H. Dieter Wilhelm + +;; Author: H. Dieter Wilhelm +;; Package-Requires: ((emacs "25")) +;; Keywords: languages, convenience, tools, Ansys, APDL +;; URL: https://github.com/dieter-wilhelm/apdl-mode + +;; Maintainer: H. Dieter Wilhelm + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This lisp script is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +;; Permission is granted to distribute copies of this lisp script +;; provided the copyright notice and this permission are preserved in +;; all copies. + +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, you can either send email to this +;; program's maintainer or write to: The Free Software Foundation, +;; Inc.; 675 Massachusetts Avenue; Cambridge, MA 02139, USA. + +;;; Commentary: +;; This file was built by fontification.el! + +;;; Code: + +(defconst apdl-help-index +'(("*ABBR" "ans_cmd/Hlp_C_ABBR.html") ("*AFUN" "ans_cmd/Hlp_C_AFUN.html") ("*ASK" "ans_cmd/Hlp_C_ASK.html") ("*AXPY" "ans_cmd/Hlp_C_AXPY.html") ("*CFCLOS" "ans_cmd/Hlp_C_CFCLOS.html") ("*CFOPEN" "ans_cmd/Hlp_C_CFOPEN.html") ("*CFWRITE" "ans_cmd/Hlp_C_CFWRITE.html") ("*COMP" "ans_cmd/Hlp_C_COMP.html") ("*CREATE" "ans_cmd/Hlp_C_CREATE.html") ("*CYCLE" "ans_cmd/Hlp_C_CYCLE.html") ("*DEL" "ans_cmd/Hlp_C_DEL.html") ("*DIM" "ans_cmd/Hlp_C_DIM.html") ("*DMAT" "ans_cmd/Hlp_C_DMAT.html") ("*DO" "ans_cmd/Hlp_C_DO.html") ("*DOT" "ans_cmd/Hlp_C_DOT.html") ("*DOWHILE" "ans_cmd/Hlp_C_DOWHILE.html") ("*EIGEN" "ans_cmd/Hlp_C_EIGEN.html") ("*ELSE" "ans_cmd/Hlp_C_ELSE.html") ("*ELSEIF" "ans_cmd/Hlp_C_ELSEIF.html") ("*END" "ans_cmd/Hlp_C_END.html") ("*ENDDO" "ans_cmd/Hlp_C_ENDDO.html") ("*ENDIF" "ans_cmd/Hlp_C_ENDIF.html") ("*EXIT" "ans_cmd/Hlp_C_EXIT_st.html") ("*EXPORT" "ans_cmd/Hlp_C_EXPORT.html") ("*FFT" "ans_cmd/Hlp_C_FFT.html") ("*FREE" "ans_cmd/Hlp_C_FREE.html") ("*GET" "ans_cmd/Hlp_C_GET.html") ("*GO" "ans_cmd/Hlp_C_GO_st.html") ("*IF" "ans_cmd/Hlp_C_IF.html") ("*INIT" "ans_cmd/Hlp_C_INIT.html") ("*ITENGINE" "ans_cmd/Hlp_C_ITENGINE.html") ("*LIST" "ans_cmd/Hlp_C_LIST_st.html") ("*LSBAC" "ans_cmd/Hlp_C_LSBAC.html") ("*LSDUMP" "ans_cmd/Hlp_C_LSDUMP.html") ("*LSENGINE" "ans_cmd/Hlp_C_LSENGINE.html") ("*LSFACTOR" "ans_cmd/Hlp_C_LSFACTOR.html") ("*LSRESTORE" "ans_cmd/Hlp_C_LSRESTORE.html") ("*MERGE" "ans_cmd/Hlp_C_MERGE.html") ("*MFOURI" "ans_cmd/Hlp_C_MFOURI.html") ("*MFUN" "ans_cmd/Hlp_C_MFUN.html") ("*MOPER" "ans_cmd/Hlp_C_MOPER.html") ("*MSG" "ans_cmd/Hlp_C_MSG.html") ("*MULT" "ans_cmd/Hlp_C_MULT.html") ("*MWRITE" "ans_cmd/Hlp_C_MWRITE_st.html") ("*NRM" "ans_cmd/Hlp_C_NRM.html") ("*PRINT" "ans_cmd/Hlp_C_PRINT_a.html") ("*REMOVE" "ans_cmd/Hlp_C_REMOVE.html") ("*RENAME" "ans_cmd/Hlp_C_RENAME_a.html") ("*REPEAT" "ans_cmd/Hlp_C_REPEAT.html") ("*RETURN" "ans_cmd/Hlp_C_RETURN.html") ("*SCAL" "ans_cmd/Hlp_C_SCAL.html") ("*SET" "ans_cmd/Hlp_C_SET_st.html") ("*SMAT" "ans_cmd/Hlp_C_SMAT.html") ("*SORT" "ans_cmd/Hlp_C_SORT_st.html") ("*SREAD" "ans_cmd/Hlp_C_SREAD_st.html") ("*STATUS" "ans_cmd/Hlp_C_STATUS_st.html") ("*TAXIS" "ans_cmd/Hlp_C_TAXIS.html") ("*TOPER" "ans_cmd/Hlp_C_TOPER_st.html") ("*TREAD" "ans_cmd/Hlp_C_TREAD.html") ("*ULIB" "ans_cmd/Hlp_C_ULIB.html") ("*USE" "ans_cmd/Hlp_C_USE.html") ("*VABS" "ans_cmd/Hlp_C_VABS.html") ("*VCOL" "ans_cmd/Hlp_C_VCOL.html") ("*VCUM" "ans_cmd/Hlp_C_VCUM.html") ("*VEC" "ans_cmd/Hlp_C_VEC.html") ("*VEDIT" "ans_cmd/Hlp_C_VEDIT.html") ("*VFACT" "ans_cmd/Hlp_C_VFACT.html") ("*VFILL" "ans_cmd/Hlp_C_VFILL.html") ("*VFUN" "ans_cmd/Hlp_C_VFUN.html") ("*VGET" "ans_cmd/Hlp_C_VGET_st.html") ("*VITRP" "ans_cmd/Hlp_C_VITRP.html") ("*VLEN" "ans_cmd/Hlp_C_VLEN.html") ("*VMASK" "ans_cmd/Hlp_C_VMASK.html") ("*VOPER" "ans_cmd/Hlp_C_VOPER.html") ("*VPLOT" "ans_cmd/Hlp_C_VPLOT_st.html") ("*VPUT" "ans_cmd/Hlp_C_VPUT_st.html") ("*VREAD" "ans_cmd/Hlp_C_VREAD.html") ("*VSCFUN" "ans_cmd/Hlp_C_VSCFUN.html") ("*VSTAT" "ans_cmd/Hlp_C_VSTAT.html") ("*VWRITE" "ans_cmd/Hlp_C_VWRITE.html") ("*WRK" "ans_cmd/Hlp_C_WRK.html") ("*XPL" "ans_cmd/Hlp_C_XPL.html") ("/AN3D" "ans_cmd/Hlp_C_AN3D.html") ("/ANFILE" "ans_cmd/Hlp_C_ANFILE.html") ("/ANGLE" "ans_cmd/Hlp_C_ANGLE.html") ("/ANNOT" "ans_cmd/Hlp_C_ANNOT.html") ("/ANUM" "ans_cmd/Hlp_C_ANUM.html") ("/ASSIGN" "ans_cmd/Hlp_C_ASSIGN.html") ("/AUTO" "ans_cmd/Hlp_C_AUTO.html") ("/AUX12" "ans_cmd/Hlp_C_AUX12.html") ("/AUX15" "ans_cmd/Hlp_C_AUX15.html") ("/AUX2" "ans_cmd/Hlp_C_AUX2.html") ("/AUX3" "ans_cmd/Hlp_C_AUX3_sl.html") ("/AXLAB" "ans_cmd/Hlp_C_AXLAB.html") ("/BATCH" "ans_cmd/Hlp_C_BATCH.html") ("/CFORMAT" "ans_cmd/Hlp_C_CFORMAT_sl.html") ("/CLABEL" "ans_cmd/Hlp_C_CLABEL.html") ("/CLEAR" "ans_cmd/Hlp_C_CLEAR.html") ("/CLOG" "ans_cmd/Hlp_C_CLOG_sl.html") ("/CMAP" "ans_cmd/Hlp_C_CMAP.html") ("/COLOR" "ans_cmd/Hlp_C_COLOR.html") ("/COM" "ans_cmd/Hlp_C_COM.html") ("/CONFIG" "ans_cmd/Hlp_C_CONFIG.html") ("/CONTOUR" "ans_cmd/Hlp_C_CONTOUR.html") ("/COPY" "ans_cmd/Hlp_C_COPY.html") ("/CPLANE" "ans_cmd/Hlp_C_CPLANE.html") ("/CTYPE" "ans_cmd/Hlp_C_CTYPE.html") ("/CVAL" "ans_cmd/Hlp_C_CVAL.html") ("/CWD" "ans_cmd/Hlp_C_CWD_sl.html") ("/CYCEXPAND" "ans_cmd/Hlp_C_CYCEXPAND_sl.html") ("/DELETE" "ans_cmd/Hlp_C_DELETE_sl.html") ("/DEVICE" "ans_cmd/Hlp_C_DEVICE.html") ("/DFLAB" "ans_cmd/Hlp_C_DFLAB.html") ("/DIRECTORY" "ans_cmd/Hlp_C_DIRECTORY.html") ("/DIST" "ans_cmd/Hlp_C_DIST.html") ("/DSCALE" "ans_cmd/Hlp_C_DSCALE_sl.html") ("/DV3D" "ans_cmd/Hlp_C_DV3D.html") ("/EDGE" "ans_cmd/Hlp_C_EDGE.html") ("/EFACET" "ans_cmd/Hlp_C_EFACET.html") ("/EOF" "ans_cmd/Hlp_C_EOF.html") ("/ERASE" "ans_cmd/Hlp_C_ERASE_sl.html") ("/ESHAPE" "ans_cmd/Hlp_C_ESHAPE.html") ("/EXIT" "ans_cmd/Hlp_C_EXIT.html") ("/EXPAND" "ans_cmd/Hlp_C_EXPAND_sl.html") ("/FACET" "ans_cmd/Hlp_C_FACET.html") ("/FCOMP" "ans_cmd/Hlp_C_FCOMP_sl.html") ("/FDELE" "ans_cmd/Hlp_C_FDELE_sl.html") ("/FILNAME" "ans_cmd/Hlp_C_FILNAME.html") ("/FOCUS" "ans_cmd/Hlp_C_FOCUS.html") ("/FORMAT" "ans_cmd/Hlp_C_FORMAT.html") ("/GCMD" "ans_cmd/Hlp_C_GCMD.html") ("/GCOLUMN" "ans_cmd/Hlp_C_GCOLUMN.html") ("/GFILE" "ans_cmd/Hlp_C_GFILE.html") ("/GFORMAT" "ans_cmd/Hlp_C_GFORMAT.html") ("/GLINE" "ans_cmd/Hlp_C_GLINE.html") ("/GMARKER" "ans_cmd/Hlp_C_GMARKER.html") ("/GO" "ans_cmd/Hlp_C_GO.html") ("/GOLIST" "ans_cmd/Hlp_C_GOLIST.html") ("/GOPR" "ans_cmd/Hlp_C_GOPR.html") ("/GRAPHICS" "ans_cmd/Hlp_C_GRAPHICS.html") ("/GRESUME" "ans_cmd/Hlp_C_GRESUME.html") ("/GRID" "ans_cmd/Hlp_C_GRID.html") ("/GROPT" "ans_cmd/Hlp_C_GROPT.html") ("/GRTYP" "ans_cmd/Hlp_C_GRTYP.html") ("/GSAVE" "ans_cmd/Hlp_C_GSAVE.html") ("/GST" "ans_cmd/Hlp_C_GST.html") ("/GTHK" "ans_cmd/Hlp_C_GTHK.html") ("/GTYPE" "ans_cmd/Hlp_C_GTYPE.html") ("/HBC" "ans_cmd/Hlp_C_HBC.html") ("/HEADER" "ans_cmd/Hlp_C_HEADER.html") ("/ICLWID" "ans_cmd/Hlp_C_ICLWID.html") ("/ICSCALE" "ans_cmd/Hlp_C_ICSCALE.html") ("/IMAGE" "ans_cmd/Hlp_C_IMAGE.html") ("/INPUT" "ans_cmd/Hlp_C_INPUT.html") ("/INQUIRE" "ans_cmd/Hlp_C_INQUIRE.html") ("/LARC" "ans_cmd/Hlp_C_LARC_sl.html") ("/LIGHT" "ans_cmd/Hlp_C_LIGHT.html") ("/LINE" "ans_cmd/Hlp_C_LINE_sl.html") ("/LSPEC" "ans_cmd/Hlp_C_LSPEC.html") ("/LSYMBOL" "ans_cmd/Hlp_C_LSYMBOL.html") ("/MAP" "ans_cmd/Hlp_C_MAP_s.html") ("/MENU" "ans_cmd/Hlp_C_MENU.html") ("/MKDIR" "ans_cmd/Hlp_C_MKDIR.html") ("/MPLIB" "ans_cmd/Hlp_C_MPLIB.html") ("/MREP" "ans_cmd/Hlp_C_MREP.html") ("/MSTART" "ans_cmd/Hlp_C_MSTART.html") ("/NERR" "ans_cmd/Hlp_C_NERR.html") ("/NOERASE" "ans_cmd/Hlp_C_NOERASE.html") ("/NOLIST" "ans_cmd/Hlp_C_NOLIST.html") ("/NOPR" "ans_cmd/Hlp_C_NOPR.html") ("/NORMAL" "ans_cmd/Hlp_C_NORMAL.html") ("/NUMBER" "ans_cmd/Hlp_C_NUMBER.html") ("/OUTPUT" "ans_cmd/Hlp_C_OUTPUT.html") ("/PAGE" "ans_cmd/Hlp_C_PAGE.html") ("/PBC" "ans_cmd/Hlp_C_PBC.html") ("/PBF" "ans_cmd/Hlp_C_PBF.html") ("/PCIRCLE" "ans_cmd/Hlp_C_PCIRCLE.html") ("/PLOPTS" "ans_cmd/Hlp_C_PLOPTS.html") ("/PMACRO" "ans_cmd/Hlp_C_PMACRO.html") ("/PMORE" "ans_cmd/Hlp_C_PMORE.html") ("/PNUM" "ans_cmd/Hlp_C_PNUM.html") ("/POLYGON" "ans_cmd/Hlp_C_POLYGON.html") ("/POST1" "ans_cmd/Hlp_C_POST1.html") ("/POST26" "ans_cmd/Hlp_C_POST26.html") ("/PREP7" "ans_cmd/Hlp_C_PREP7.html") ("/PSEARCH" "ans_cmd/Hlp_C_PSEARCH.html") ("/PSF" "ans_cmd/Hlp_C_PSF.html") ("/PSPEC" "ans_cmd/Hlp_C_PSPEC_sl.html") ("/PSTATUS" "ans_cmd/Hlp_C_PSTATUS.html") ("/PSYMB" "ans_cmd/Hlp_C_PSYMB.html") ("/PWEDGE" "ans_cmd/Hlp_C_PWEDGE.html") ("/QUIT" "ans_cmd/Hlp_C_QUIT.html") ("/RATIO" "ans_cmd/Hlp_C_RATIO.html") ("/RENAME" "ans_cmd/Hlp_C_RENAME.html") ("/REPLOT" "ans_cmd/Hlp_C_REPLOT.html") ("/RESET" "ans_cmd/Hlp_C_RESET_sl.html") ("/RGB" "ans_cmd/Hlp_C_RGB.html") ("/RMDIR" "ans_cmd/Hlp_C_RMDIR.html") ("/SECLIB" "ans_cmd/Hlp_C_SECLIB.html") ("/SEG" "ans_cmd/Hlp_C_SEG.html") ("/SHADE" "ans_cmd/Hlp_C_SHADE.html") ("/SHOW" "ans_cmd/Hlp_C_SHOW.html") ("/SHRINK" "ans_cmd/Hlp_C_SHRINK.html") ("/SMBC" "ans_cmd/Hlp_C_SMBC_sl.html") ("/SOLU" "ans_cmd/Hlp_C_SOLU_sl.html") ("/SSCALE" "ans_cmd/Hlp_C_SSCALE.html") ("/STATUS" "ans_cmd/Hlp_C_STATUS.html") ("/STITLE" "ans_cmd/Hlp_C_STITLE.html") ("/SYP" "ans_cmd/Hlp_C_SYP.html") ("/SYS" "ans_cmd/Hlp_C_SYS.html") ("/TEE" "ans_cmd/Hlp_C_TEE_sl.html") ("/TITLE" "ans_cmd/Hlp_C_TITLE.html") ("/TLABEL" "ans_cmd/Hlp_C_TLABEL.html") ("/TRIAD" "ans_cmd/Hlp_C_TRIAD.html") ("/TRLCY" "ans_cmd/Hlp_C_TRLCY.html") ("/TSPEC" "ans_cmd/Hlp_C_TSPEC.html") ("/TXTRE" "ans_cmd/Hlp_C_TXTRE.html") ("/TYPE" "ans_cmd/Hlp_C_TYPE_sl.html") ("/UCMD" "ans_cmd/Hlp_C_UCMD.html") ("/UDOC" "ans_cmd/Hlp_C_UDOC_sl.html") ("/UI" "ans_cmd/Hlp_C_UI.html") ("/UIS" "ans_cmd/Hlp_C_UIS.html") ("/UNITS" "ans_cmd/Hlp_C_UNITS.html") ("/USER" "ans_cmd/Hlp_C_USER.html") ("/VCONE" "ans_cmd/Hlp_C_VCONE.html") ("/VIEW" "ans_cmd/Hlp_C_VIEW.html") ("/VSCALE" "ans_cmd/Hlp_C_VSCALE.html") ("/VUP" "ans_cmd/Hlp_C_VUP.html") ("/WAIT" "ans_cmd/Hlp_C_WAIT.html") ("/WINDOW" "ans_cmd/Hlp_C_WINDOW.html") ("/XFRM" "ans_cmd/Hlp_C_XFRM.html") ("/XRANGE" "ans_cmd/Hlp_C_XRANGE.html") ("/YRANGE" "ans_cmd/Hlp_C_YRANGE.html") ("/ZOOM" "ans_cmd/Hlp_C_ZOOM.html") ("11" "ans_elem/Hlp_E_LINK11.html") ("110" "ans_elem/Hlp_E_INFIN110.html") ("111" "ans_elem/Hlp_E_INFIN111.html") ("116" "ans_elem/Hlp_E_FLUID116.html") ("12" "ans_arch/Hlp_E_CONTAC12.html") ("121" "ans_elem/Hlp_E_PLANE121.html") ("122" "ans_elem/Hlp_E_SOLID122.html") ("123" "ans_elem/Hlp_E_SOLID123.html") ("124" "ans_elem/Hlp_E_CIRCU124.html") ("125" "ans_elem/Hlp_E_CIRCU125.html") ("126" "ans_elem/Hlp_E_TRANS126.html") ("129" "ans_elem/Hlp_E_FLUID129.html") ("13" "ans_elem/Hlp_E_PLANE13.html") ("130" "ans_elem/Hlp_E_FLUID130.html") ("131" "ans_elem/Hlp_E_SHELL131.html") ("132" "ans_elem/Hlp_E_SHELL132.html") ("136" "ans_elem/Hlp_E_FLUID136.html") ("138" "ans_elem/Hlp_E_FLUID138.html") ("139" "ans_elem/Hlp_E_FLUID139.html") ("14" "ans_elem/Hlp_E_COMBIN14.html") ("144" "ans_elem/Hlp_E_ROM144.html") ("151" "ans_elem/Hlp_E_SURF151.html") ("152" "ans_elem/Hlp_E_SURF152.html") ("153" "ans_elem/Hlp_E_SURF153.html") ("154" "ans_elem/Hlp_E_SURF154.html") ("155" "ans_elem/Hlp_E_SURF155.html") ("156" "ans_elem/Hlp_E_SURF156.html") ("157" "ans_elem/Hlp_E_SHELL157.html") ("159" "ans_elem/Hlp_E_SURF159.html") ("16" "ans_arch/Hlp_E_PIPE16.html") ("169" "ans_elem/Hlp_E_TARGE169.html") ("170" "ans_elem/Hlp_E_TARGE170.html") ("171" "ans_arch/Hlp_E_CONTA171.html") ("172" "ans_elem/Hlp_E_CONTA172.html") ("173" "ans_arch/Hlp_E_CONTA173.html") ("174" "ans_elem/Hlp_E_CONTA174.html") ("175" "ans_elem/Hlp_E_CONTA175.html") ("176" "ans_arch/Hlp_E_CONTA176.html") ("177" "ans_elem/Hlp_E_CONTA177.html") ("178" "ans_elem/Hlp_E_CONTA178.html") ("179" "ans_elem/Hlp_E_PRETS179.html") ("18" "ans_arch/Hlp_E_PIPE18.html") ("180" "ans_elem/Hlp_E_LINK180.html") ("181" "ans_elem/Hlp_E_SHELL181.html") ("182" "ans_elem/Hlp_E_PLANE182.html") ("183" "ans_elem/Hlp_E_PLANE183.html") ("184" "ans_elem/Hlp_E_MPC184.html") ("184cyl" "ans_elem/Hlp_E_MPC184cyl.html") ("184gen" "ans_elem/Hlp_E_MPC184gen.html") ("184link" "ans_elem/Hlp_E_MPC184link.html") ("184orie" "ans_elem/Hlp_E_MPC184orie.html") ("184plan" "ans_elem/Hlp_E_MPC184plan.html") ("184poin" "ans_elem/Hlp_E_MPC184poin.html") ("184revo" "ans_elem/Hlp_E_MPC184revo.html") ("184scr" "ans_elem/Hlp_E_MPC184scr.html") ("184slid" "ans_elem/Hlp_E_MPC184slid.html") ("184slot" "ans_elem/Hlp_E_MPC184slot.html") ("184sphe" "ans_elem/Hlp_E_MPC184sphe.html") ("184tran" "ans_elem/Hlp_E_MPC184tran.html") ("184univ" "ans_elem/Hlp_E_MPC184univ.html") ("184weld" "ans_elem/Hlp_E_MPC184weld.html") ("185" "ans_elem/Hlp_E_SOLID185.html") ("186" "ans_elem/Hlp_E_SOLID186.html") ("187" "ans_elem/Hlp_E_SOLID187.html") ("188" "ans_elem/Hlp_E_BEAM188.html") ("189" "ans_elem/Hlp_E_BEAM189.html") ("190" "ans_elem/Hlp_E_SOLSH190.html") ("192" "ans_elem/Hlp_E_INTER192.html") ("193" "ans_elem/Hlp_E_INTER193.html") ("194" "ans_elem/Hlp_E_INTER194.html") ("195" "ans_elem/Hlp_E_INTER195.html") ("200" "ans_elem/Hlp_E_MESH200.html") ("201" "ans_elem/Hlp_E_FOLLW201.html") ("202" "ans_elem/Hlp_E_INTER202.html") ("203" "ans_elem/Hlp_E_INTER203.html") ("204" "ans_elem/Hlp_E_INTER204.html") ("205" "ans_elem/Hlp_E_INTER205.html") ("208" "ans_elem/Hlp_E_SHELL208.html") ("209" "ans_elem/Hlp_E_SHELL209.html") ("21" "ans_elem/Hlp_E_MASS21.html") ("212" "ans_elem/Hlp_E_CPT212.html") ("213" "ans_elem/Hlp_E_CPT213.html") ("214" "ans_elem/Hlp_E_COMBI214.html") ("215" "ans_elem/Hlp_E_CPT215.html") ("216" "ans_elem/Hlp_E_CPT216.html") ("217" "ans_elem/Hlp_E_CPT217.html") ("218" "ans_elem/Hlp_E_FLUID218.html") ("220" "ans_elem/Hlp_E_FLUID220.html") ("221" "ans_elem/Hlp_E_FLUID221.html") ("222" "ans_elem/Hlp_E_PLANE222.html") ("223" "ans_elem/Hlp_E_PLANE223.html") ("226" "ans_elem/Hlp_E_SOLID226.html") ("227" "ans_elem/Hlp_E_SOLID227.html") ("230" "ans_elem/Hlp_E_PLANE230.html") ("231" "ans_elem/Hlp_E_SOLID231.html") ("232" "ans_elem/Hlp_E_SOLID232.html") ("233" "ans_elem/Hlp_E_PLANE233.html") ("236" "ans_elem/Hlp_E_SOLID236.html") ("237" "ans_elem/Hlp_E_SOLID237.html") ("238" "ans_elem/Hlp_E_PLANE238.html") ("239" "ans_elem/Hlp_E_SOLID239.html") ("240" "ans_elem/Hlp_E_SOLID240.html") ("241" "ans_elem/Hlp_E_HSFLD241.html") ("242" "ans_elem/Hlp_E_HSFLD242.html") ("25" "ans_elem/Hlp_E_PLANE25.html") ("250" "ans_elem/Hlp_E_COMBI250.html") ("251" "ans_elem/Hlp_E_SURF251.html") ("252" "ans_elem/Hlp_E_SURF252.html") ("257" "ans_elem/Hlp_E_INFIN257.html") ("263" "ans_elem/Hlp_E_REINF263.html") ("264" "ans_elem/Hlp_E_REINF264.html") ("265" "ans_elem/Hlp_E_REINF265.html") ("27" "ans_elem/Hlp_E_MATRIX27.html") ("272" "ans_elem/Hlp_E_SOLID272.html") ("273" "ans_elem/Hlp_E_SOLID273.html") ("278" "ans_elem/Hlp_E_SOLID278.html") ("279" "ans_elem/Hlp_E_SOLID279.html") ("280" "ans_elem/Hlp_E_CABLE280.html") ("281" "ans_elem/Hlp_E_SHELL281.html") ("285" "ans_elem/Hlp_E_SOLID285.html") ("288" "ans_elem/Hlp_E_PIPE288.html") ("289" "ans_elem/Hlp_E_PIPE289.html") ("29" "ans_elem/Hlp_E_FLUID29.html") ("290" "ans_elem/Hlp_E_ELBOW290.html") ("291" "ans_elem/Hlp_E_SOLID291.html") ("292" "ans_elem/Hlp_E_PLANE292.html") ("293" "ans_elem/Hlp_E_PLANE293.html") ("30" "ans_elem/Hlp_E_FLUID30.html") ("300" "ans_elem/Hlp_E_USER300.html") ("31" "ans_elem/Hlp_E_LINK31.html") ("33" "ans_elem/Hlp_E_LINK33.html") ("34" "ans_elem/Hlp_E_LINK34.html") ("35" "ans_elem/Hlp_E_PLANE35.html") ("36" "ans_elem/Hlp_E_SOURC36.html") ("37" "ans_elem/Hlp_E_COMBIN37.html") ("38" "ans_elem/Hlp_E_FLUID38.html") ("39" "ans_elem/Hlp_E_COMBIN39.html") ("4" "ans_arch/Hlp_E_BEAM4.html") ("40" "ans_elem/Hlp_E_COMBIN40.html") ("42" "ans_arch/Hlp_E_PLANE42.html") ("45" "ans_arch/Hlp_E_SOLID45.html") ("47" "ans_elem/Hlp_E_INFIN47.html") ("5" "ans_elem/Hlp_E_SOLID5.html") ("50" "ans_elem/Hlp_E_MATRIX50.html") ("52" "ans_arch/Hlp_E_CONTAC52.html") ("55" "ans_elem/Hlp_E_PLANE55.html") ("59" "ans_arch/Hlp_E_PIPE59.html") ("61" "ans_elem/Hlp_E_SHELL61.html") ("63" "ans_arch/Hlp_E_SHELL63.html") ("65" "ans_arch/Hlp_E_SOLID65.html") ("68" "ans_elem/Hlp_E_LINK68.html") ("70" "ans_elem/Hlp_E_SOLID70.html") ("71" "ans_elem/Hlp_E_MASS71.html") ("75" "ans_elem/Hlp_E_PLANE75.html") ("77" "ans_elem/Hlp_E_PLANE77.html") ("78" "ans_elem/Hlp_E_PLANE78.html") ("79" "ans_arch/Hlp_E_FLUID79.html") ("80" "ans_arch/Hlp_E_FLUID80.html") ("81" "ans_arch/Hlp_E_FLUID81.html") ("82" "ans_arch/Hlp_E_PLANE82.html") ("83" "ans_elem/Hlp_E_PLANE83.html") ("87" "ans_elem/Hlp_E_SOLID87.html") ("90" "ans_elem/Hlp_E_SOLID90.html") ("92" "ans_arch/Hlp_E_SOLID92.html") ("94" "ans_elem/Hlp_E_CIRCU94.html") ("95" "ans_arch/Hlp_E_SOLID95.html") ("96" "ans_elem/Hlp_E_SOLID96.html") ("98" "ans_elem/Hlp_E_SOLID98.html") ("A" "ans_cmd/Hlp_C_A.html") ("AADD" "ans_cmd/Hlp_C_AADD.html") ("AATT" "ans_cmd/Hlp_C_AATT.html") ("ABBRES" "ans_cmd/Hlp_C_ABBRES.html") ("ABBSAV" "ans_cmd/Hlp_C_ABBSAV.html") ("ABEXTRACT" "ans_cmd/Hlp_C_ABEXTRACT.html") ("ABS" "ans_cmd/Hlp_C_ABS.html") ("ACCAT" "ans_cmd/Hlp_C_ACCAT.html") ("ACCOPTION" "ans_cmd/Hlp_C_ACCOPTION.html") ("ACEL" "ans_cmd/Hlp_C_ACEL.html") ("ACLEAR" "ans_cmd/Hlp_C_ACLEAR.html") ("ADAMS" "ans_cmd/Hlp_C_ADAMS.html") ("ADD" "ans_cmd/Hlp_C_ADD.html") ("ADDAM" "ans_cmd/Hlp_C_ADDAM.html") ("ADELE" "ans_cmd/Hlp_C_ADELE.html") ("ADGL" "ans_cmd/Hlp_C_ADGL.html") ("ADRAG" "ans_cmd/Hlp_C_ADRAG.html") ("AEROCOEFF" "ans_cmd/Hlp_C_AEROCOEFF.html") ("AESIZE" "ans_cmd/Hlp_C_AESIZE.html") ("AFILLT" "ans_cmd/Hlp_C_AFILLT.html") ("AFLIST" "ans_cmd/Hlp_C_AFLIST.html") ("AFSURF" "ans_cmd/Hlp_C_AFSURF.html") ("AGEN" "ans_cmd/Hlp_C_AGEN.html") ("AGLUE" "ans_cmd/Hlp_C_AGLUE.html") ("AINA" "ans_cmd/Hlp_C_AINA.html") ("AINP" "ans_cmd/Hlp_C_AINP.html") ("AINV" "ans_cmd/Hlp_C_AINV.html") ("AL" "ans_cmd/Hlp_C_AL.html") ("ALIST" "ans_cmd/Hlp_C_ALIST.html") ("ALLBEAMS" "ans_elem/Hlp_E_CH3_2.html#allbeams") ("\"ALL\"LES" "ans_elem/Hlp_E_CH3_2.html#allcables") ("\"ALL\"CUS" "ans_elem/Hlp_E_CH3_2.html#allcircu") ("\"ALL\"BINS" "ans_elem/Hlp_E_CH3_2.html#allcombin") ("\"ALL\"BIS" "ans_elem/Hlp_E_CH3_2.html#allcombin") ("\"ALL\"TACS" "ans_elem/Hlp_E_CH3_2.html#allcontac") ("\"ALL\"TAS" "ans_elem/Hlp_E_CH3_2.html#allcontac") ("\"ALL\"S" "ans_elem/Hlp_E_CH3_2.html#allcpt") ("\"ALL\"IDS" "ans_elem/Hlp_E_CH3_2.html#allfluid") ("ALLFOLLW" "ans_elem/Hlp_E_CH3_2.html#allfollw") ("\"ALL\"LDS" "ans_elem/Hlp_E_CH3_2.html#allhsfld") ("\"ALL\"INS" "ans_elem/Hlp_E_CH3_2.html#allinfin") ("\"ALL\"ERS" "ans_elem/Hlp_E_CH3_2.html#allinter") ("\"ALL\"KS" "ans_elem/Hlp_E_CH3_2.html#alllinks") ("\"ALL\"S" "ans_elem/Hlp_E_CH3_2.html#allmass") ("\"ALL\"RIXS" "ans_elem/Hlp_E_CH3_2.html#allmatrix") ("ALLMESHS" "ans_elem/Hlp_E_CH3_2.html#allmesh") ("\"ALL\"S" "ans_elem/Hlp_E_CH3_2.html#allmpc") ("\"ALL\"ES" "ans_elem/Hlp_E_CH3_2.html#allpipes") ("\"ALL\"NES" "ans_elem/Hlp_E_CH3_2.html#allplanes") ("\"ALL\"TS" "ans_elem/Hlp_E_CH3_2.html#allprets") ("ALLREINF" "ans_elem/Hlp_E_CH3_2.html#allreinf") ("\"ALL\"S" "ans_elem/Hlp_E_CH3_2.html#allrom") ("ALLSEL" "ans_cmd/Hlp_C_ALLSEL.html") ("ALLSHELLS" "ans_elem/Hlp_E_CH3_2.html#allshells") ("ALLSOLIDS" "ans_elem/Hlp_E_CH3_2.html#allsolids") ("ALLSOLSHS" "ans_elem/Hlp_E_CH3_2.html#allsolsh") ("ALLSOURCS" "ans_elem/Hlp_E_CH3_2.html#allsourc") ("ALLSURFS" "ans_elem/Hlp_E_CH3_2.html#allsurf") ("\"ALL\"GES" "ans_elem/Hlp_E_CH3_2.html#alltarge") ("\"ALL\"NS" "ans_elem/Hlp_E_CH3_2.html#alltrans") ("ALPHAD" "ans_cmd/Hlp_C_ALPHAD.html") ("AMAP" "ans_cmd/Hlp_C_AMAP.html") ("AMBEAM" "ans_cmd/Hlp_C_AMBEAM.html") ("AMBUILD" "ans_cmd/Hlp_C_AMBUILD.html") ("AMENV" "ans_cmd/Hlp_C_AMENV.html") ("AMESH" "ans_cmd/Hlp_C_AMESH.html") ("AMMAT" "ans_cmd/Hlp_C_AMMAT.html") ("AMPOWDER" "ans_cmd/Hlp_C_AMPOWDER.html") ("AMSTEP" "ans_cmd/Hlp_C_AMSTEP.html") ("AMSUPPORTS" "ans_cmd/Hlp_C_AMSUPPORTS.html") ("AMTYPE" "ans_cmd/Hlp_C_AMTYPE.html") ("ANCNTR" "ans_cmd/Hlp_C_ANCNTR.html") ("ANCUT" "ans_cmd/Hlp_C_ANCUT.html") ("ANCYC" "ans_cmd/Hlp_C_ANCYC.html") ("ANDATA" "ans_cmd/Hlp_C_ANDATA.html") ("ANDSCL" "ans_cmd/Hlp_C_ANDSCL.html") ("ANDYNA" "ans_cmd/Hlp_C_ANDYNA.html") ("ANFLOW" "ans_cmd/Hlp_C_ANFLOW.html") ("ANHARM" "ans_cmd/Hlp_C_ANHARM.html") ("ANIM" "ans_cmd/Hlp_C_ANIM.html") ("ANISOS" "ans_cmd/Hlp_C_ANISOS.html") ("ANMODE" "ans_cmd/Hlp_C_ANMODE.html") ("ANORM" "ans_cmd/Hlp_C_ANORM.html") ("ANPRES" "ans_cmd/Hlp_C_ANPRES.html") ("ANSOL" "ans_cmd/Hlp_C_ANSOL.html") ("ANSTOAQWA" "ans_cmd/Hlp_C_ANSTOAQWA.html") ("ANSTOASAS" "ans_cmd/Hlp_C_ANSTOASAS.html") ("ANTIME" "ans_cmd/Hlp_C_ANTIME.html") ("ANTYPE" "ans_cmd/Hlp_C_ANTYPE.html") ("AOFFST" "ans_cmd/Hlp_C_AOFFST.html") ("AOVLAP" "ans_cmd/Hlp_C_AOVLAP.html") ("APLOT" "ans_cmd/Hlp_C_APLOT.html") ("APORT" "ans_cmd/Hlp_C_aport.html") ("APPEND" "ans_cmd/Hlp_C_APPEND.html") ("APTN" "ans_cmd/Hlp_C_APTN.html") ("ARCLEN" "ans_cmd/Hlp_C_ARCLEN.html") ("ARCTRM" "ans_cmd/Hlp_C_ARCTRM.html") ("AREAS" "ans_cmd/Hlp_C_AREAS.html") ("AREFINE" "ans_cmd/Hlp_C_AREFINE.html") ("AREMESH" "ans_cmd/Hlp_C_AREMESH.html") ("AREVERSE" "ans_cmd/Hlp_C_AREVERSE.html") ("AROTAT" "ans_cmd/Hlp_C_AROTAT.html") ("ARSCALE" "ans_cmd/Hlp_C_ARSCALE.html") ("ARSYM" "ans_cmd/Hlp_C_ARSYM.html") ("ASBA" "ans_cmd/Hlp_C_ASBA.html") ("ASBL" "ans_cmd/Hlp_C_ASBL.html") ("ASBV" "ans_cmd/Hlp_C_ASBV.html") ("ASBW" "ans_cmd/Hlp_C_ASBW.html") ("ASCRES" "ans_cmd/Hlp_C_ASCRES.html") ("ASEL" "ans_cmd/Hlp_C_ASEL.html") ("ASIFILE" "ans_cmd/Hlp_C_ASIFILE.html") ("ASKIN" "ans_cmd/Hlp_C_ASKIN.html") ("ASLL" "ans_cmd/Hlp_C_ASLL.html") ("ASLV" "ans_cmd/Hlp_C_ASLV.html") ("ASOL" "ans_cmd/Hlp_C_ASOL.html") ("ASUB" "ans_cmd/Hlp_C_ASUB.html") ("ASUM" "ans_cmd/Hlp_C_ASUM.html") ("ATAN" "ans_cmd/Hlp_C_ATAN.html") ("ATRAN" "ans_cmd/Hlp_C_ATRAN.html") ("ATYPE" "ans_cmd/Hlp_C_ATYPE.html") ("AUTOTS" "ans_cmd/Hlp_C_AUTOTS.html") ("AVPRIN" "ans_cmd/Hlp_C_AVPRIN.html") ("AVRES" "ans_cmd/Hlp_C_AVRES.html") ("AWAVE" "ans_cmd/Hlp_C_AWAVE.html") ("BCSOPTION" "ans_cmd/Hlp_C_BCSOPTION.html") ("BEAM" "ans_elem/Hlp_E_CH3_2.html#allbeams") ("BEAM188" "ans_elem/Hlp_E_BEAM188.html") ("BEAM189" "ans_elem/Hlp_E_BEAM189.html") ("BEAM4" "ans_arch/Hlp_E_BEAM4.html") ("BELLOW" "ans_arch/Hlp_C_BELLOW.html") ("BEND" "ans_arch/Hlp_C_BEND.html") ("BETAD" "ans_cmd/Hlp_C_BETAD.html") ("BF" "ans_cmd/Hlp_C_BF.html") ("BFA" "ans_cmd/Hlp_C_BFA.html") ("BFADELE" "ans_cmd/Hlp_C_BFADELE.html") ("BFALIST" "ans_cmd/Hlp_C_BFALIST.html") ("BFCUM" "ans_cmd/Hlp_C_BFCUM.html") ("BFDELE" "ans_cmd/Hlp_C_BFDELE.html") ("BFE" "ans_cmd/Hlp_C_BFE.html") ("BFECUM" "ans_cmd/Hlp_C_BFECUM.html") ("BFEDELE" "ans_cmd/Hlp_C_BFEDELE.html") ("BFELIST" "ans_cmd/Hlp_C_BFELIST.html") ("BFESCAL" "ans_cmd/Hlp_C_BFESCAL.html") ("BFINT" "ans_cmd/Hlp_C_BFINT.html") ("BFK" "ans_cmd/Hlp_C_BFK.html") ("BFKDELE" "ans_cmd/Hlp_C_BFKDELE.html") ("BFKLIST" "ans_cmd/Hlp_C_BFKLIST.html") ("BFL" "ans_cmd/Hlp_C_BFL.html") ("BFLDELE" "ans_cmd/Hlp_C_BFLDELE.html") ("BFLIST" "ans_cmd/Hlp_C_BFLIST.html") ("BFLLIST" "ans_cmd/Hlp_C_BFLLIST.html") ("BFSCALE" "ans_cmd/Hlp_C_BFSCALE.html") ("BFTRAN" "ans_cmd/Hlp_C_BFTRAN.html") ("BFUNIF" "ans_cmd/Hlp_C_BFUNIF.html") ("BFV" "ans_cmd/Hlp_C_BFV.html") ("BFVDELE" "ans_cmd/Hlp_C_BFVDELE.html") ("BFVLIST" "ans_cmd/Hlp_C_BFVLIST.html") ("BIOOPT" "ans_cmd/Hlp_C_BIOOPT.html") ("BIOT" "ans_cmd/Hlp_C_BIOT.html") ("BLC4" "ans_cmd/Hlp_C_BLC4.html") ("BLC5" "ans_cmd/Hlp_C_BLC5.html") ("BLOCK" "ans_cmd/Hlp_C_BLOCK.html") ("BOOL" "ans_cmd/Hlp_C_BOOL.html") ("BOPTN" "ans_cmd/Hlp_C_BOPTN.html") ("BRANCH" "ans_arch/Hlp_C_BRANCH.html") ("BSAX" "ans_cmd/Hlp_C_BSAX.html") ("BSM1" "ans_cmd/Hlp_C_BSM1.html") ("BSM2" "ans_cmd/Hlp_C_BSM2.html") ("BSMD" "ans_cmd/Hlp_C_BSMD.html") ("BSPLIN" "ans_cmd/Hlp_C_BSPLIN.html") ("BSS1" "ans_cmd/Hlp_C_BSS1.html") ("BSS2" "ans_cmd/Hlp_C_BSS2.html") ("BSTE" "ans_cmd/Hlp_C_BSTE.html") ("BSTQ" "ans_cmd/Hlp_C_BSTQ.html") ("BTOL" "ans_cmd/Hlp_C_BTOL.html") ("BUCOPT" "ans_cmd/Hlp_C_BUCOPT.html") ("C***" "ans_cmd/Hlp_C_C.html") ("CABLE" "ans_elem/Hlp_E_CH3_2.html#allcables") ("CABLE280" "ans_elem/Hlp_E_CABLE280.html") ("CALC" "ans_cmd/Hlp_C_CALC.html") ("CAMPBELL" "ans_cmd/Hlp_C_CAMPBELL.html") ("CAT5" "ans_cmd/Hlp_C_CAT5IN.html") ("CBDOF" "ans_cmd/Hlp_C_CBDOF.html") ("CBMD" "ans_cmd/Hlp_C_CBMD.html") ("CBMX" "ans_cmd/Hlp_C_CBMX.html") ("CBTE" "ans_cmd/Hlp_C_CBTE.html") ("CBTMP" "ans_cmd/Hlp_C_CBTMP.html") ("CDOPT" "ans_cmd/Hlp_C_CDOPT.html") ("CDREAD" "ans_cmd/Hlp_C_CDREAD.html") ("CDWRITE" "ans_cmd/Hlp_C_CDWRITE.html") ("CE" "ans_cmd/Hlp_C_CE.html") ("CECHECK" "ans_cmd/Hlp_C_CECHECK.html") ("CECMOD" "ans_cmd/Hlp_C_CECMOD.html") ("CECYC" "ans_cmd/Hlp_C_CECYC.html") ("CEDELE" "ans_cmd/Hlp_C_CEDELE.html") ("CEINTF" "ans_cmd/Hlp_C_CEINTF.html") ("CELIST" "ans_cmd/Hlp_C_CELIST.html") ("CENTER" "ans_cmd/Hlp_C_CENTER.html") ("CEQN" "ans_cmd/Hlp_C_CEQN.html") ("CERIG" "ans_cmd/Hlp_C_CERIG.html") ("CESGEN" "ans_cmd/Hlp_C_CESGEN.html") ("CFACT" "ans_cmd/Hlp_C_CFACT.html") ("CGLOC" "ans_cmd/Hlp_C_CGLOC.html") ("CGOMGA" "ans_cmd/Hlp_C_CGOMGA.html") ("CGROW" "ans_cmd/Hlp_C_CGROW.html") ("CH1TOC" "ans_cmd/Hlp_C_CH1.html") ("CH2TOC" "ans_cmd/aV39Sq344ctg.html") ("CH3TOC" "ans_cmd/Hlp_C_CH3.html") ("CHECK" "ans_cmd/Hlp_C_CHECK.html") ("CHKMSH" "ans_cmd/Hlp_C_CHKMSH.html") ("CINT" "ans_cmd/Hlp_C_CINT.html") ("CIRCLE" "ans_cmd/Hlp_C_CIRCLE.html") ("CIRCU" "ans_elem/Hlp_E_CH3_2.html#allcircu") ("CIRCU124" "ans_elem/Hlp_E_CIRCU124.html") ("CIRCU125" "ans_elem/Hlp_E_CIRCU125.html") ("CIRCU94" "ans_elem/Hlp_E_CIRCU94.html") ("CISOL" "ans_cmd/Hlp_C_CISOL.html") ("CLOCAL" "ans_cmd/Hlp_C_CLOCAL.html") ("CLOG" "ans_cmd/Hlp_C_CLOG.html") ("CLRMSHLN" "ans_cmd/Hlp_C_CLRMSHLN.html") ("CM" "ans_cmd/Hlp_C_CM.html") ("CMACEL" "ans_cmd/Hlp_C_CMACEL.html") ("CMATRIX" "ans_cmd/Hlp_C_CMATRIX.html") ("CMDELE" "ans_cmd/Hlp_C_CMDELE.html") ("CMDOMEGA" "ans_cmd/Hlp_C_CMDOMEGA.html") ("CMEDIT" "ans_cmd/Hlp_C_CMEDIT.html") ("CMGRP" "ans_cmd/Hlp_C_CMGRP.html") ("CMLIST" "ans_cmd/Hlp_C_CMLIST.html") ("CMMOD" "ans_cmd/Hlp_C_CMMOD.html") ("CMOMEGA" "ans_cmd/Hlp_C_CMOMEGA.html") ("CMPLOT" "ans_cmd/Hlp_C_CMPLOT.html") ("CMROTATE" "ans_cmd/Hlp_C_CMROTATE.html") ("CMSEL" "ans_cmd/Hlp_C_CMSEL.html") ("CMSFILE" "ans_cmd/Hlp_C_CMSFILE.html") ("CMSOPT" "ans_cmd/Hlp_C_CMSOPT.html") ("CMWRITE" "ans_cmd/Hlp_C_CMWRITE.html") ("CNCHECK" "ans_cmd/Hlp_C_CNCHECK.html") ("CNKMOD" "ans_cmd/Hlp_C_CNKMOD.html") ("CNTR" "ans_cmd/Hlp_C_CNTR.html") ("CNVTOL" "ans_cmd/Hlp_C_CNVTOL.html") ("COMBI" "ans_elem/Hlp_E_CH3_2.html#allcombin") ("COMBI214" "ans_elem/Hlp_E_COMBI214.html") ("COMBI250" "ans_elem/Hlp_E_COMBI250.html") ("COMBIN" "ans_elem/Hlp_E_CH3_2.html#allcombin") ("COMBIN14" "ans_elem/Hlp_E_COMBIN14.html") ("COMBIN37" "ans_elem/Hlp_E_COMBIN37.html") ("COMBIN39" "ans_elem/Hlp_E_COMBIN39.html") ("COMBIN40" "ans_elem/Hlp_E_COMBIN40.html") ("COMBINE" "ans_cmd/Hlp_C_COMBINE.html") ("COMPRESS" "ans_cmd/Hlp_C_COMPRESS.html") ("CON4" "ans_cmd/Hlp_C_CON4.html") ("CONE" "ans_cmd/Hlp_C_CONE.html") ("CONJUG" "ans_cmd/Hlp_C_CONJUG.html") ("CONTA" "ans_elem/Hlp_E_CH3_2.html#allcontac") ("CONTA171" "ans_arch/Hlp_E_CONTA171.html") ("CONTA172" "ans_elem/Hlp_E_CONTA172.html") ("CONTA173" "ans_arch/Hlp_E_CONTA173.html") ("CONTA174" "ans_elem/Hlp_E_CONTA174.html") ("CONTA175" "ans_elem/Hlp_E_CONTA175.html") ("CONTA176" "ans_arch/Hlp_E_CONTA176.html") ("CONTA177" "ans_elem/Hlp_E_CONTA177.html") ("CONTA178" "ans_elem/Hlp_E_CONTA178.html") ("CONTAC" "ans_elem/Hlp_E_CH3_2.html#allcontac") ("CONTAC12" "ans_arch/Hlp_E_CONTAC12.html") ("CONTAC52" "ans_arch/Hlp_E_CONTAC52.html") ("CORIOLIS" "ans_cmd/Hlp_C_CORIOLIS.html") ("COUPLE" "ans_cmd/Hlp_C_COUPLE.html") ("COVAL" "ans_cmd/Hlp_C_COVAL.html") ("CP" "ans_cmd/Hlp_C_CP.html") ("CPCYC" "ans_cmd/Hlp_C_CPCYC.html") ("CPDELE" "ans_cmd/Hlp_C_CPDELE.html") ("CPINTF" "ans_cmd/Hlp_C_CPINTF.html") ("CPLGEN" "ans_cmd/Hlp_C_CPLGEN.html") ("CPLIST" "ans_cmd/Hlp_C_CPLIST.html") ("CPMERGE" "ans_cmd/Hlp_C_CPMERGE.html") ("CPNGEN" "ans_cmd/Hlp_C_CPNGEN.html") ("CPSGEN" "ans_cmd/Hlp_C_CPSGEN.html") ("CPT" "ans_elem/Hlp_E_CH3_2.html#allcpt") ("CPT212" "ans_elem/Hlp_E_CPT212.html") ("CPT213" "ans_elem/Hlp_E_CPT213.html") ("CPT215" "ans_elem/Hlp_E_CPT215.html") ("CPT216" "ans_elem/Hlp_E_CPT216.html") ("CPT217" "ans_elem/Hlp_E_CPT217.html") ("CQC" "ans_cmd/Hlp_C_CQC.html") ("CRPLIM" "ans_arch/Hlp_C_CRPLIM.html") ("CS" "ans_cmd/Hlp_C_CS.html") ("CSCIR" "ans_cmd/Hlp_C_CSCIR.html") ("CSDELE" "ans_cmd/Hlp_C_CSDELE.html") ("CSKP" "ans_cmd/Hlp_C_CSKP.html") ("CSLIST" "ans_cmd/Hlp_C_CSLIST.html") ("CSWPLA" "ans_cmd/Hlp_C_CSWPLA.html") ("CSYS" "ans_cmd/Hlp_C_CSYS.html") ("CURR2D" "ans_cmd/Hlp_C_CURR2D.html") ("CUTCONTROL" "ans_cmd/Hlp_C_CUTCONTROL.html") ("CVAR" "ans_cmd/Hlp_C_CVAR.html") ("CYCCALC" "ans_cmd/Hlp_C_CYCCALC.html") ("CYCFILES" "ans_cmd/Hlp_C_CYCFILES.html") ("CYCFREQ" "ans_cmd/Hlp_C_CYCFREQ.html") ("CYCLIC" "ans_cmd/Hlp_C_CYCLIC.html") ("CYCOPT" "ans_cmd/Hlp_C_CYCOPT.html") ("CYCPHASE" "ans_cmd/Hlp_C_CYCPHASE.html") ("CYCSPEC" "ans_cmd/Hlp_C_CYCSPEC.html") ("CYL4" "ans_cmd/Hlp_C_CYL4.html") ("CYL5" "ans_cmd/Hlp_C_CYL5.html") ("CYLIND" "ans_cmd/Hlp_C_CYLIND.html") ("CZDEL" "ans_cmd/Hlp_C_CZDEL.html") ("CZMESH" "ans_cmd/Hlp_C_CZMESH.html") ("Commands" "ans_cmd/Hlp_C_CmdTOC.html") ("D" "ans_cmd/Hlp_C_D.html") ("DA" "ans_cmd/Hlp_C_DA.html") ("DADELE" "ans_cmd/Hlp_C_DADELE.html") ("DALIST" "ans_cmd/Hlp_C_DALIST.html") ("DAMORPH" "ans_cmd/Hlp_C_DAMORPH.html") ("DATA" "ans_cmd/Hlp_C_DATA.html") ("DATADEF" "ans_cmd/Hlp_C_DATADEF.html") ("DCGOMG" "ans_cmd/Hlp_C_DCGOMG.html") ("DCUM" "ans_cmd/Hlp_C_DCUM.html") ("DCVSWP" "ans_cmd/Hlp_C_DCVSWP.html") ("DDASPEC" "ans_cmd/Hlp_C_DDASPEC.html") ("DDELE" "ans_cmd/Hlp_C_DDELE.html") ("DDOPTION" "ans_cmd/Hlp_C_DDOPTION.html") ("DEACT" "ans_cmd/Hlp_C_DEACT.html") ("DEFINE" "ans_cmd/Hlp_C_DEFINE.html") ("DELETE" "ans_cmd/Hlp_C_DELETE.html") ("DELTIM" "ans_cmd/Hlp_C_DELTIM.html") ("DEMORPH" "ans_cmd/Hlp_C_DEMORPH.html") ("DERIV" "ans_cmd/Hlp_C_DERIV.html") ("DESIZE" "ans_cmd/Hlp_C_DESIZE.html") ("DESOL" "ans_cmd/Hlp_C_DESOL.html") ("DETAB" "ans_cmd/Hlp_C_DETAB.html") ("DFLX" "ans_cmd/Hlp_C_DFLX.html") ("DFSWAVE" "ans_cmd/Hlp_C_DFSWAVE.html") ("DIG" "ans_cmd/Hlp_C_DIG.html") ("DIGIT" "ans_cmd/Hlp_C_DIGIT.html") ("DISPLAY" "ans_cmd/Hlp_C_DISPLAY.html") ("DJ" "ans_cmd/Hlp_C_DJ.html") ("DJDELE" "ans_cmd/Hlp_C_DJDELE.html") ("DJLIST" "ans_cmd/Hlp_C_DJLIST.html") ("DK" "ans_cmd/Hlp_C_DK.html") ("DKDELE" "ans_cmd/Hlp_C_DKDELE.html") ("DKLIST" "ans_cmd/Hlp_C_DKLIST.html") ("DL" "ans_cmd/Hlp_C_DL.html") ("DLDELE" "ans_cmd/Hlp_C_DLDELE.html") ("DLIST" "ans_cmd/Hlp_C_DLIST.html") ("DLLIST" "ans_cmd/Hlp_C_DLLIST.html") ("DMOVE" "ans_cmd/Hlp_C_DMOVE.html") ("DMPEXT" "ans_cmd/Hlp_C_DMPEXT.html") ("DMPOPTION" "ans_cmd/Hlp_C_DMPOPTION.html") ("DMPRAT" "ans_cmd/Hlp_C_DMPRAT.html") ("DMPSTR" "ans_cmd/Hlp_C_DMPSTR.html") ("DNSOL" "ans_cmd/Hlp_C_DNSOL.html") ("DOF" "ans_cmd/Hlp_C_DOF.html") ("DOFSEL" "ans_cmd/Hlp_C_DOFSEL.html") ("DOMEGA" "ans_cmd/Hlp_C_DOMEGA.html") ("DSCALE" "ans_cmd/Hlp_C_DSCALE.html") ("DSET" "ans_cmd/Hlp_C_DSET.html") ("DSPOPTION" "ans_cmd/Hlp_C_DSPOPTION.html") ("DSUM" "ans_cmd/Hlp_C_DSUM.html") ("DSURF" "ans_cmd/Hlp_C_DSURF.html") ("DSYM" "ans_cmd/Hlp_C_DSYM.html") ("DSYS" "ans_cmd/Hlp_C_DSYS.html") ("DTRAN" "ans_cmd/Hlp_C_DTRAN.html") ("DUMP" "ans_cmd/Hlp_C_DUMP.html") ("DVAL" "ans_cmd/Hlp_C_DVAL.html") ("DVMORPH" "ans_cmd/Hlp_C_DVMORPH.html") ("DYNOPT" "ans_cmd/Hlp_C_DYNOPT.html") ("E" "ans_cmd/Hlp_C_E.html") ("EALIVE" "ans_cmd/Hlp_C_EALIVE.html") ("ECPCHG" "ans_cmd/Hlp_C_ECPCHG.html") ("EDELE" "ans_cmd/Hlp_C_EDELE.html") ("EEXTRUDE" "ans_cmd/Hlp_C_EEXTRUDE.html") ("EGEN" "ans_cmd/Hlp_C_EGEN.html") ("EGID" "ans_cmd/Hlp_C_EGID.html") ("EINFIN" "ans_cmd/Hlp_C_EINFIN.html") ("EINTF" "ans_cmd/Hlp_C_EINTF.html") ("EKILL" "ans_cmd/Hlp_C_EKILL.html") ("ELBOW" "ans_cmd/Hlp_C_ELBOW.html") ("ELBOW290" "ans_elem/Hlp_E_ELBOW290.html") ("ELEM" "ans_cmd/Hlp_C_ELEM.html") ("ELIST" "ans_cmd/Hlp_C_ELIST.html") ("EMAGERR" "ans_cmd/Hlp_C_EMAGERR.html") ("EMATWRITE" "ans_cmd/Hlp_C_EMATWRITE.html") ("EMF" "ans_cmd/Hlp_C_EMF.html") ("EMFT" "ans_cmd/Hlp_C_EMFT.html") ("EMID" "ans_cmd/Hlp_C_EMID.html") ("EMIS" "ans_cmd/Hlp_C_EMIS.html") ("EMODIF" "ans_cmd/Hlp_C_EMODIF.html") ("EMORE" "ans_cmd/Hlp_C_EMORE.html") ("EMSEL" "ans_cmd/Hlp_C_EMSEL.html") ("EMSYM" "ans_cmd/Hlp_C_EMSYM.html") ("EMTGEN" "ans_cmd/Hlp_C_EMTGEN.html") ("EMUNIT" "ans_cmd/Hlp_C_EMUNIT.html") ("EN" "ans_cmd/Hlp_C_EN.html") ("ENDRELEASE" "ans_cmd/Hlp_C_ENDRELEASE.html") ("ENERSOL" "ans_cmd/Hlp_C_ENERSOL.html") ("ENGEN" "ans_cmd/Hlp_C_ENGEN.html") ("ENORM" "ans_cmd/Hlp_C_ENORM.html") ("ENSYM" "ans_cmd/Hlp_C_ENSYM.html") ("EORIENT" "ans_cmd/Hlp_C_EORIENT.html") ("EPLOT" "ans_cmd/Hlp_C_EPLOT.html") ("EQSLV" "ans_cmd/Hlp_C_EQSLV.html") ("ERASE" "ans_cmd/Hlp_C_ERASE.html") ("EREAD" "ans_cmd/Hlp_C_EREAD.html") ("EREFINE" "ans_cmd/Hlp_C_EREFINE.html") ("EREINF" "ans_cmd/Hlp_C_EREINF.html") ("ERESX" "ans_cmd/Hlp_C_ERESX.html") ("ERNORM" "ans_cmd/Hlp_C_ERNORM.html") ("ERRANG" "ans_cmd/Hlp_C_ERRANG.html") ("ESCHECK" "ans_cmd/Hlp_C_ESCHECK.html") ("ESEL" "ans_cmd/Hlp_C_ESEL.html") ("ESIZE" "ans_cmd/Hlp_C_ESIZE.html") ("ESLA" "ans_cmd/Hlp_C_ESLA.html") ("ESLL" "ans_cmd/Hlp_C_ESLL.html") ("ESLN" "ans_cmd/Hlp_C_ESLN.html") ("ESLV" "ans_cmd/Hlp_C_ESLV.html") ("ESOL" "ans_cmd/Hlp_C_ESOL.html") ("ESORT" "ans_cmd/Hlp_C_ESORT.html") ("ESSOLV" "ans_cmd/Hlp_C_ESSOLV.html") ("ESTIF" "ans_cmd/Hlp_C_ESTIF.html") ("ESURF" "ans_cmd/Hlp_C_ESURF.html") ("ESYM" "ans_cmd/Hlp_C_ESYM.html") ("ESYS" "ans_cmd/Hlp_C_ESYS.html") ("ET" "ans_cmd/Hlp_C_ET.html") ("ETABLE" "ans_cmd/Hlp_C_ETABLE.html") ("ETCHG" "ans_cmd/Hlp_C_ETCHG.html") ("ETCONTROL" "ans_cmd/Hlp_C_ETCONTROL.html") ("ETDELE" "ans_cmd/Hlp_C_ETDELE.html") ("ETLIST" "ans_cmd/Hlp_C_ETLIST.html") ("ETYPE" "ans_cmd/Hlp_C_ETYPE.html") ("EUSORT" "ans_cmd/Hlp_C_EUSORT.html") ("EWRITE" "ans_cmd/Hlp_C_EWRITE.html") ("EXBOPT" "ans_cmd/Hlp_C_EXBOPT.html") ("EXOPTION" "ans_cmd/Hlp_C_EXOPTION.html") ("EXP" "ans_cmd/Hlp_C_EXP.html") ("EXPAND" "ans_cmd/Hlp_C_EXPAND.html") ("EXPASS" "ans_cmd/Hlp_C_EXPASS.html") ("EXPROFILE" "ans_cmd/Hlp_C_EXPROFILE.html") ("EXPSOL" "ans_cmd/Hlp_C_EXPSOL.html") ("EXTOPT" "ans_cmd/Hlp_C_EXTOPT.html") ("EXTREM" "ans_cmd/Hlp_C_EXTREM.html") ("EXUNIT" "ans_cmd/Hlp_C_EXUNIT.html") ("F" "ans_cmd/Hlp_C_F.html") ("FATIGUE" "ans_arch/Hlp_C_FATIGUE.html") ("FC" "ans_cmd/Hlp_C_FC.html") ("FCCHECK" "ans_cmd/Hlp_C_FCCHECK.html") ("FCDELE" "ans_cmd/Hlp_C_FCDELE.html") ("FCLIST" "ans_cmd/Hlp_C_FCLIST.html") ("FCTYP" "ans_cmd/Hlp_C_FCTYP.html") ("FCUM" "ans_cmd/Hlp_C_FCUM.html") ("FDELE" "ans_cmd/Hlp_C_FDELE.html") ("FE" "ans_arch/Hlp_C_FE.html") ("FEBODY" "ans_cmd/Hlp_C_FEBODY.html") ("FECONS" "ans_cmd/Hlp_C_FECONS.html") ("FEFOR" "ans_cmd/Hlp_C_FEFOR.html") ("FELIST" "ans_arch/Hlp_C_FELIST.html") ("FESURF" "ans_cmd/Hlp_C_FESURF.html") ("FILE" "ans_cmd/Hlp_C_FILE.html") ("FILEAUX2" "ans_cmd/Hlp_C_FILEAUX2.html") ("FILEAUX3" "ans_cmd/Hlp_C_FILEAUX3.html") ("FILL" "ans_cmd/Hlp_C_FILL.html") ("FILLDATA" "ans_cmd/Hlp_C_FILLDATA.html") ("FINISH" "ans_cmd/Hlp_C_FINISH.html") ("FITEM" "ans_cmd/Hlp_C_FITEM.html") ("FJ" "ans_cmd/Hlp_C_FJ.html") ("FJDELE" "ans_cmd/Hlp_C_FJDELE.html") ("FJLIST" "ans_cmd/Hlp_C_FJLIST.html") ("FK" "ans_cmd/Hlp_C_FK.html") ("FKDELE" "ans_cmd/Hlp_C_FKDELE.html") ("FKLIST" "ans_cmd/Hlp_C_FKLIST.html") ("FL" "ans_arch/Hlp_C_FL.html") ("FLANGE" "ans_arch/Hlp_C_FLANGE.html") ("FLIST" "ans_cmd/Hlp_C_FLIST.html") ("FLLIST" "ans_arch/Hlp_C_FLLIST.html") ("FLST" "ans_cmd/Hlp_C_FLST.html") ("FLUID" "ans_elem/Hlp_E_CH3_2.html#allfluid") ("FLUID116" "ans_elem/Hlp_E_FLUID116.html") ("FLUID129" "ans_elem/Hlp_E_FLUID129.html") ("FLUID130" "ans_elem/Hlp_E_FLUID130.html") ("FLUID136" "ans_elem/Hlp_E_FLUID136.html") ("FLUID138" "ans_elem/Hlp_E_FLUID138.html") ("FLUID139" "ans_elem/Hlp_E_FLUID139.html") ("FLUID218" "ans_elem/Hlp_E_FLUID218.html") ("FLUID220" "ans_elem/Hlp_E_FLUID220.html") ("FLUID221" "ans_elem/Hlp_E_FLUID221.html") ("FLUID29" "ans_elem/Hlp_E_FLUID29.html") ("FLUID30" "ans_elem/Hlp_E_FLUID30.html") ("FLUID38" "ans_elem/Hlp_E_FLUID38.html") ("FLUID79" "ans_arch/Hlp_E_FLUID79.html") ("FLUID80" "ans_arch/Hlp_E_FLUID80.html") ("FLUID81" "ans_arch/Hlp_E_FLUID81.html") ("FLUREAD" "ans_cmd/Hlp_C_FLUREAD.html") ("FLUXV" "ans_cmd/Hlp_C_FLUXV.html") ("FOLLW" "ans_elem/Hlp_E_CH3_2.html#allfollw") ("FOLLW201" "ans_elem/Hlp_E_FOLLW201.html") ("FORCE" "ans_cmd/Hlp_C_FORCE.html") ("FORM" "ans_cmd/Hlp_C_FORM.html") ("FP" "ans_arch/Hlp_C_FP.html") ("FPLIST" "ans_arch/Hlp_C_FPLIST.html") ("FREQ" "ans_cmd/Hlp_C_FREQ.html") ("FRQSCL" "ans_cmd/Hlp_C_FRQSCL.html") ("FS" "ans_arch/Hlp_C_FS.html") ("FSCALE" "ans_cmd/Hlp_C_FSCALE.html") ("FSDELE" "ans_arch/Hlp_C_FSDELE.html") ("FSLIST" "ans_arch/Hlp_C_FSLIST.html") ("FSNODE" "ans_arch/Hlp_C_FSNODE.html") ("FSPLOT" "ans_arch/Hlp_C_FSPLOT.html") ("FSSECT" "ans_cmd/Hlp_C_FSSECT.html") ("FSSPARM" "ans_cmd/Hlp_C_FSSPARM.html") ("FSUM" "ans_cmd/Hlp_C_FSUM.html") ("FTCALC" "ans_arch/Hlp_C_FTCALC.html") ("FTRAN" "ans_cmd/Hlp_C_FTRAN.html") ("FTSIZE" "ans_arch/Hlp_C_FTSIZE.html") ("FTWRITE" "ans_arch/Hlp_C_FTWRITE.html") ("FTYPE" "ans_cmd/Hlp_C_FTYPE.html") ("FVMESH" "ans_cmd/Hlp_C_FVMESH.html") ("GAP" "ans_cmd/Hlp_C_GAP.html") ("GAPF" "ans_cmd/Hlp_C_GAPF.html") ("GAUGE" "ans_cmd/Hlp_C_GAUGE.html") ("GCDEF" "ans_cmd/Hlp_C_GCDEF.html") ("GCGEN" "ans_cmd/Hlp_C_GCGEN.html") ("GENOPT" "ans_cmd/Hlp_C_GENOPT.html") ("GEOM" "ans_cmd/Hlp_C_GEOM.html") ("GEOMETRY" "ans_cmd/Hlp_C_GEOMETRY.html") ("GMATRIX" "ans_cmd/Hlp_C_GMATRIX.html") ("GMFACE" "ans_cmd/Hlp_C_GMFACE.html") ("GP" "ans_cmd/Hlp_C_GP.html") ("GPDELE" "ans_cmd/Hlp_C_GPDELE.html") ("GPLIST" "ans_cmd/Hlp_C_GPLIST.html") ("GPLOT" "ans_cmd/Hlp_C_GPLOT.html") ("GRP" "ans_cmd/Hlp_C_GRP.html") ("GSBDATA" "ans_cmd/Hlp_C_GSBDATA.html") ("GSGDATA" "ans_cmd/Hlp_C_GSGDATA.html") ("GSLIST" "ans_cmd/Hlp_C_GSLIST.html") ("GSSOL" "ans_cmd/Hlp_C_GSSOL.html") ("GSUM" "ans_cmd/Hlp_C_GSUM.html") ("HARFRQ" "ans_cmd/Hlp_C_HARFRQ.html") ("HBMAT" "ans_cmd/Hlp_C_HBMAT.html") ("HELP" "ans_cmd/Hlp_C_HELP.html") ("HEMIOPT" "ans_cmd/Hlp_C_HEMIOPT.html") ("HFANG" "ans_cmd/Hlp_C_HFANG.html") ("HFSYM" "ans_cmd/Hlp_C_HFSYM.html") ("HPTCREATE" "ans_cmd/Hlp_C_HPTCREATE.html") ("HPTDELETE" "ans_cmd/Hlp_C_HPTDELETE.html") ("HRCPLX" "ans_cmd/Hlp_C_HRCPLX.html") ("HREXP" "ans_cmd/Hlp_C_HREXP.html") ("HROCEAN" "ans_cmd/Hlp_C_HROCEAN.html") ("HROPT" "ans_cmd/Hlp_C_HROPT.html") ("HROUT" "ans_cmd/Hlp_C_HROUT.html") ("HSFLD" "ans_elem/Hlp_E_CH3_2.html#allhsfld") ("HSFLD241" "ans_elem/Hlp_E_HSFLD241.html") ("HSFLD242" "ans_elem/Hlp_E_HSFLD242.html") ("IC" "ans_cmd/Hlp_C_IC.html") ("ICDELE" "ans_cmd/Hlp_C_ICDELE.html") ("ICLIST" "ans_cmd/Hlp_C_ICLIST.html") ("ICROTATE" "ans_cmd/Hlp_C_ICROTATE.html") ("IGESIN" "ans_cmd/Hlp_C_IGESIN.html") ("IGESOUT" "ans_cmd/Hlp_C_IGESOUT.html") ("IMAGIN" "ans_cmd/Hlp_C_IMAGIN.html") ("IMESH" "ans_cmd/Hlp_C_IMESH.html") ("IMMED" "ans_cmd/Hlp_C_IMMED.html") ("INFIN" "ans_elem/Hlp_E_CH3_2.html#allinfin") ("INFIN110" "ans_elem/Hlp_E_INFIN110.html") ("INFIN111" "ans_elem/Hlp_E_INFIN111.html") ("INFIN257" "ans_elem/Hlp_E_INFIN257.html") ("INFIN47" "ans_elem/Hlp_E_INFIN47.html") ("INISTATE" "ans_cmd/Hlp_C_INISTATE.html") ("INRES" "ans_cmd/Hlp_C_INRES.html") ("INRTIA" "ans_cmd/Hlp_C_INRTIA.html") ("INT1" "ans_cmd/Hlp_C_INT1.html") ("INTER" "ans_elem/Hlp_E_CH3_2.html#allinter") ("INTER192" "ans_elem/Hlp_E_INTER192.html") ("INTER193" "ans_elem/Hlp_E_INTER193.html") ("INTER194" "ans_elem/Hlp_E_INTER194.html") ("INTER195" "ans_elem/Hlp_E_INTER195.html") ("INTER202" "ans_elem/Hlp_E_INTER202.html") ("INTER203" "ans_elem/Hlp_E_INTER203.html") ("INTER204" "ans_elem/Hlp_E_INTER204.html") ("INTER205" "ans_elem/Hlp_E_INTER205.html") ("INVOPT" "ans_cmd/Hlp_C_INVOPT.html") ("IOPTN" "ans_cmd/Hlp_C_IOPTN.html") ("IRLF" "ans_cmd/Hlp_C_IRLF.html") ("IRLIST" "ans_cmd/Hlp_C_IRLIST.html") ("Index" "ai_sinfo/ans_intro.html") ("JPEG" "ans_cmd/Hlp_C_JPEG.html") ("JSOL" "ans_cmd/Hlp_C_JSOL.html") ("K" "ans_cmd/Hlp_C_K.html") ("KATT" "ans_cmd/Hlp_C_KATT.html") ("KBC" "ans_cmd/Hlp_C_KBC.html") ("KBETW" "ans_cmd/Hlp_C_KBETW.html") ("KCALC" "ans_arch/Hlp_C_KCALC.html") ("KCENTER" "ans_cmd/Hlp_C_KCENTER.html") ("KCLEAR" "ans_cmd/Hlp_C_KCLEAR.html") ("KDELE" "ans_cmd/Hlp_C_KDELE.html") ("KDIST" "ans_cmd/Hlp_C_KDIST.html") ("KEEP" "ans_cmd/Hlp_C_KEEP.html") ("KESIZE" "ans_cmd/Hlp_C_KESIZE.html") ("KEYOPT" "ans_cmd/Hlp_C_KEYOPT.html") ("KEYPTS" "ans_cmd/Hlp_C_KEYPTS.html") ("KEYW" "ans_cmd/Hlp_C_KEYW.html") ("KFILL" "ans_cmd/Hlp_C_KFILL.html") ("KGEN" "ans_cmd/Hlp_C_KGEN.html") ("KL" "ans_cmd/Hlp_C_KL.html") ("KLIST" "ans_cmd/Hlp_C_KLIST.html") ("KMESH" "ans_cmd/Hlp_C_KMESH.html") ("KMODIF" "ans_cmd/Hlp_C_KMODIF.html") ("KMOVE" "ans_cmd/Hlp_C_KMOVE.html") ("KNODE" "ans_cmd/Hlp_C_KNODE.html") ("KPLOT" "ans_cmd/Hlp_C_KPLOT.html") ("KPSCALE" "ans_cmd/Hlp_C_KPSCALE.html") ("KREFINE" "ans_cmd/Hlp_C_KREFINE.html") ("KSCALE" "ans_cmd/Hlp_C_KSCALE.html") ("KSCON" "ans_cmd/Hlp_C_KSCON.html") ("KSEL" "ans_cmd/Hlp_C_KSEL.html") ("KSLL" "ans_cmd/Hlp_C_KSLL.html") ("KSLN" "ans_cmd/Hlp_C_KSLN.html") ("KSUM" "ans_cmd/Hlp_C_KSUM.html") ("KSYMM" "ans_cmd/Hlp_C_KSYMM.html") ("KTRAN" "ans_cmd/Hlp_C_KTRAN.html") ("KUSE" "ans_cmd/Hlp_C_KUSE.html") ("KWPAVE" "ans_cmd/Hlp_C_KWPAVE.html") ("KWPLAN" "ans_cmd/Hlp_C_KWPLAN.html") ("L" "ans_cmd/Hlp_C_L.html") ("L2ANG" "ans_cmd/Hlp_C_L2ANG.html") ("L2TAN" "ans_cmd/Hlp_C_L2TAN.html") ("LANBOPTION" "ans_cmd/Hlp_C_LANBOPTION.html") ("LANG" "ans_cmd/Hlp_C_LANG.html") ("LARC" "ans_cmd/Hlp_C_LARC.html") ("LAREA" "ans_cmd/Hlp_C_LAREA.html") ("LARGE" "ans_cmd/Hlp_C_LARGE.html") ("LATT" "ans_cmd/Hlp_C_LATT.html") ("LAYER" "ans_cmd/Hlp_C_LAYER.html") ("LAYERP26" "ans_cmd/Hlp_C_LAYERP26.html") ("LAYLIST" "ans_cmd/Hlp_C_LAYLIST.html") ("LAYPLOT" "ans_cmd/Hlp_C_LAYPLOT.html") ("LCABS" "ans_cmd/Hlp_C_LCABS.html") ("LCASE" "ans_cmd/Hlp_C_LCASE.html") ("LCCALC" "ans_cmd/Hlp_C_LCCALC.html") ("LCCAT" "ans_cmd/Hlp_C_LCCAT.html") ("LCDEF" "ans_cmd/Hlp_C_LCDEF.html") ("LCFACT" "ans_cmd/Hlp_C_LCFACT.html") ("LCFILE" "ans_cmd/Hlp_C_LCFILE.html") ("LCLEAR" "ans_cmd/Hlp_C_LCLEAR.html") ("LCOMB" "ans_cmd/Hlp_C_LCOMB.html") ("LCOPER" "ans_cmd/Hlp_C_LCOPER.html") ("LCSEL" "ans_cmd/Hlp_C_LCSEL.html") ("LCSL" "ans_cmd/Hlp_C_LCSL.html") ("LCSUM" "ans_cmd/Hlp_C_LCSUM.html") ("LCWRITE" "ans_cmd/Hlp_C_LCWRITE.html") ("LCZERO" "ans_cmd/Hlp_C_LCZERO.html") ("LDELE" "ans_cmd/Hlp_C_LDELE.html") ("LDIV" "ans_cmd/Hlp_C_LDIV.html") ("LDRAG" "ans_cmd/Hlp_C_LDRAG.html") ("LDREAD" "ans_cmd/Hlp_C_LDREAD.html") ("LESIZE" "ans_cmd/Hlp_C_LESIZE.html") ("LEXTND" "ans_cmd/Hlp_C_LEXTND.html") ("LFILLT" "ans_cmd/Hlp_C_LFILLT.html") ("LFSURF" "ans_cmd/Hlp_C_LFSURF.html") ("LGEN" "ans_cmd/Hlp_C_LGEN.html") ("LGLUE" "ans_cmd/Hlp_C_LGLUE.html") ("LGWRITE" "ans_cmd/Hlp_C_LGWRITE.html") ("LINA" "ans_cmd/Hlp_C_LINA.html") ("LINE" "ans_cmd/Hlp_C_LINE.html") ("LINES" "ans_cmd/Hlp_C_LINES.html") ("LINK" "ans_elem/Hlp_E_CH3_2.html#alllinks") ("LINK11" "ans_elem/Hlp_E_LINK11.html") ("LINK180" "ans_elem/Hlp_E_LINK180.html") ("LINK31" "ans_elem/Hlp_E_LINK31.html") ("LINK33" "ans_elem/Hlp_E_LINK33.html") ("LINK34" "ans_elem/Hlp_E_LINK34.html") ("LINK68" "ans_elem/Hlp_E_LINK68.html") ("LINL" "ans_cmd/Hlp_C_LINL.html") ("LINP" "ans_cmd/Hlp_C_LINP.html") ("LINV" "ans_cmd/Hlp_C_LINV.html") ("LIST" "ans_cmd/Hlp_C_LIST.html") ("LLIST" "ans_cmd/Hlp_C_LLIST.html") ("LMESH" "ans_cmd/Hlp_C_LMESH.html") ("LNSRCH" "ans_cmd/Hlp_C_LNSRCH.html") ("LOCAL" "ans_cmd/Hlp_C_LOCAL.html") ("LOVLAP" "ans_cmd/Hlp_C_LOVLAP.html") ("LPLOT" "ans_cmd/Hlp_C_LPLOT.html") ("LPTN" "ans_cmd/Hlp_C_LPTN.html") ("LREFINE" "ans_cmd/Hlp_C_LREFINE.html") ("LREVERSE" "ans_cmd/Hlp_C_LREVERSE.html") ("LROTAT" "ans_cmd/Hlp_C_LROTAT.html") ("LSBA" "ans_cmd/Hlp_C_LSBA.html") ("LSBL" "ans_cmd/Hlp_C_LSBL.html") ("LSBV" "ans_cmd/Hlp_C_LSBV.html") ("LSBW" "ans_cmd/Hlp_C_LSBW.html") ("LSCLEAR" "ans_cmd/Hlp_C_LSCLEAR.html") ("LSDELE" "ans_cmd/Hlp_C_LSDELE.html") ("LSEL" "ans_cmd/Hlp_C_LSEL.html") ("LSLA" "ans_cmd/Hlp_C_LSLA.html") ("LSLK" "ans_cmd/Hlp_C_LSLK.html") ("LSOPER" "ans_cmd/Hlp_C_LSOPER.html") ("LSREAD" "ans_cmd/Hlp_C_LSREAD.html") ("LSSCALE" "ans_cmd/Hlp_C_LSSCALE.html") ("LSSOLVE" "ans_cmd/Hlp_C_LSSOLVE.html") ("LSTR" "ans_cmd/Hlp_C_LSTR.html") ("LSUM" "ans_cmd/Hlp_C_LSUM.html") ("LSWRITE" "ans_cmd/Hlp_C_LSWRITE.html") ("LSYMM" "ans_cmd/Hlp_C_LSYMM.html") ("LTAN" "ans_cmd/Hlp_C_LTAN.html") ("LTRAN" "ans_cmd/Hlp_C_LTRAN.html") ("LUMPM" "ans_cmd/Hlp_C_LUMPM.html") ("LVSCALE" "ans_cmd/Hlp_C_LVSCALE.html") ("LWPLAN" "ans_cmd/Hlp_C_LWPLAN.html") ("M" "ans_cmd/Hlp_C_M.html") ("MACOPT" "ans_cmd/Hlp_C_MACOPT.html") ("MAGOPT" "ans_cmd/Hlp_C_MAGOPT.html") ("MAGSOLV" "ans_cmd/Hlp_C_MAGSOLV.html") ("MAP" "ans_cmd/Hlp_C_MAP.html") ("MAP2DTO3D" "ans_cmd/Hlp_C_MAP2DTO3D.html") ("MAPSOLVE" "ans_cmd/Hlp_C_MAPSOLVE.html") ("MAPVAR" "ans_cmd/Hlp_C_MAPVAR.html") ("MASCALE" "ans_cmd/Hlp_C_MASCALE.html") ("MASS" "ans_elem/Hlp_E_CH3_2.html#allmass") ("MASS21" "ans_elem/Hlp_E_MASS21.html") ("MASS71" "ans_elem/Hlp_E_MASS71.html") ("MASTER" "ans_cmd/Hlp_C_MASTER.html") ("MAT" "ans_cmd/Hlp_C_MAT.html") ("MATER" "ans_cmd/Hlp_C_MATER.html") ("MATRIX" "ans_elem/Hlp_E_CH3_2.html#allmatrix") ("MATRIX27" "ans_elem/Hlp_E_MATRIX27.html") ("MATRIX50" "ans_elem/Hlp_E_MATRIX50.html") ("MCHECK" "ans_cmd/Hlp_C_MCHECK.html") ("MDAMP" "ans_cmd/Hlp_C_MDAMP.html") ("MDELE" "ans_cmd/Hlp_C_MDELE.html") ("MDPLOT" "ans_cmd/Hlp_C_MDPLOT.html") ("MEMM" "ans_cmd/Hlp_C_MEMM.html") ("MESH" "ans_elem/Hlp_E_CH3_2.html#allmesh") ("MESH200" "ans_elem/Hlp_E_MESH200.html") ("MESHING" "ans_cmd/Hlp_C_MESHING.html") ("MGEN" "ans_cmd/Hlp_C_MGEN.html") ("MIDTOL" "ans_cmd/Hlp_C_MIDTOL.html") ("MITER" "ans_arch/Hlp_C_MITER.html") ("MLIST" "ans_cmd/Hlp_C_MLIST.html") ("MMASS" "ans_cmd/Hlp_C_MMASS.html") ("MMF" "ans_cmd/Hlp_C_MMF.html") ("MODCONT" "ans_cmd/Hlp_C_MODCONT.html") ("MODDIR" "ans_cmd/Hlp_C_MODDIR.html") ("MODE" "ans_cmd/Hlp_C_MODE.html") ("MODIFY" "ans_cmd/Hlp_C_MODIFY.html") ("MODMSH" "ans_cmd/Hlp_C_MODMSH.html") ("MODOPT" "ans_cmd/Hlp_C_MODOPT.html") ("MODSELOPTION" "ans_cmd/Hlp_C_MODSELOPTION.html") ("MONITOR" "ans_cmd/Hlp_C_MONITOR.html") ("MOPT" "ans_cmd/Hlp_C_MOPT.html") ("MORPH" "ans_cmd/Hlp_C_MORPH.html") ("MOVE" "ans_cmd/Hlp_C_MOVE.html") ("MP" "ans_cmd/Hlp_C_MP.html") ("MPAMOD" "ans_cmd/Hlp_C_MPAMOD.html") ("MPC184" "ans_elem/Hlp_E_MPC184.html") ("MPC184-Cylin" "ans_elem/Hlp_E_MPC184cyl.html") ("MPC184-General" "ans_elem/Hlp_E_MPC184gen.html") ("MPC184-Link/Beam" "ans_elem/Hlp_E_MPC184link.html") ("MPC184-Orient" "ans_elem/Hlp_E_MPC184orie.html") ("MPC184-Planar" "ans_elem/Hlp_E_MPC184plan.html") ("MPC184-Point" "ans_elem/Hlp_E_MPC184poin.html") ("MPC184-Revolute" "ans_elem/Hlp_E_MPC184revo.html") ("MPC184-Screw" "ans_elem/Hlp_E_MPC184scr.html") ("MPC184-Slider" "ans_elem/Hlp_E_MPC184slid.html") ("MPC184-Slot" "ans_elem/Hlp_E_MPC184slot.html") ("MPC184-Spherical" "ans_elem/Hlp_E_MPC184sphe.html") ("MPC184-Trans" "ans_elem/Hlp_E_MPC184tran.html") ("MPC184-Universal" "ans_elem/Hlp_E_MPC184univ.html") ("MPC184-Weld" "ans_elem/Hlp_E_MPC184weld.html") ("MPCHG" "ans_cmd/Hlp_C_MPCHG.html") ("MPCOPY" "ans_cmd/Hlp_C_MPCOPY.html") ("MPDATA" "ans_cmd/Hlp_C_MPDATA.html") ("MPDELE" "ans_cmd/Hlp_C_MPDELE.html") ("MPDRES" "ans_cmd/Hlp_C_MPDRES.html") ("MPLIST" "ans_cmd/Hlp_C_MPLIST.html") ("MPPLOT" "ans_cmd/Hlp_C_MPPLOT.html") ("MPREAD" "ans_cmd/Hlp_C_MPREAD.html") ("MPRINT" "ans_cmd/Hlp_C_MPRINT.html") ("MPTEMP" "ans_cmd/Hlp_C_MPTEMP.html") ("MPTGEN" "ans_cmd/Hlp_C_MPTGEN.html") ("MPTRES" "ans_cmd/Hlp_C_MPTRES.html") ("MPWRITE" "ans_cmd/Hlp_C_MPWRITE.html") ("MRPM" "ans_cmd/Hlp_C_MRPM.html") ("MSAVE" "ans_cmd/Hlp_C_MSAVE.html") ("MSHAPE" "ans_cmd/Hlp_C_MSHAPE.html") ("MSHCOPY" "ans_cmd/Hlp_C_MSHCOPY.html") ("MSHKEY" "ans_cmd/Hlp_C_MSHKEY.html") ("MSHMID" "ans_cmd/Hlp_C_MSHMID.html") ("MSHPATTERN" "ans_cmd/Hlp_C_MSHPATTERN.html") ("MSOLVE" "ans_cmd/Hlp_C_MSOLVE.html") ("MSTOLE" "ans_cmd/Hlp_C_MSTOLE.html") ("MXPAND" "ans_cmd/Hlp_C_MXPAND.html") ("N" "ans_cmd/Hlp_C_N.html") ("NANG" "ans_cmd/Hlp_C_NANG.html") ("NAXIS" "ans_cmd/Hlp_C_NAXIS.html") ("NCNV" "ans_cmd/Hlp_C_NCNV.html") ("NDELE" "ans_cmd/Hlp_C_NDELE.html") ("NDIST" "ans_cmd/Hlp_C_NDIST.html") ("NDSURF" "ans_cmd/Hlp_C_NDSURF.html") ("NEQIT" "ans_cmd/Hlp_C_NEQIT.html") ("NFORCE" "ans_cmd/Hlp_C_NFORCE.html") ("NGEN" "ans_cmd/Hlp_C_NGEN.html") ("NKPT" "ans_cmd/Hlp_C_NKPT.html") ("NLADAPTIVE" "ans_cmd/Hlp_C_NLADAPTIVE.html") ("NLDIAG" "ans_cmd/Hlp_C_NLDIAG.html") ("NLDPOST" "ans_cmd/Hlp_C_NLDPOST.html") ("NLGEOM" "ans_cmd/Hlp_C_NLGEOM.html") ("NLHIST" "ans_cmd/Hlp_C_NLHIST.html") ("NLIST" "ans_cmd/Hlp_C_NLIST.html") ("NLMESH" "ans_cmd/Hlp_C_NLMESH.html") ("NLOG" "ans_cmd/Hlp_C_NLOG.html") ("NLOPT" "ans_cmd/Hlp_C_NLOPT.html") ("NMODIF" "ans_cmd/Hlp_C_NMODIF.html") ("NODES" "ans_cmd/Hlp_C_NODES.html") ("NOOFFSET" "ans_cmd/Hlp_C_NOOFFSET.html") ("NORA" "ans_cmd/Hlp_C_NORA.html") ("NORL" "ans_cmd/Hlp_C_NORL.html") ("NPLOT" "ans_cmd/Hlp_C_NPLOT.html") ("NPRINT" "ans_cmd/Hlp_C_NPRINT.html") ("NREAD" "ans_cmd/Hlp_C_NREAD.html") ("NREFINE" "ans_cmd/Hlp_C_NREFINE.html") ("NRLSUM" "ans_cmd/Hlp_C_NRLSUM.html") ("NROPT" "ans_cmd/Hlp_C_NROPT.html") ("NROTAT" "ans_cmd/Hlp_C_NROTAT.html") ("NRRANG" "ans_cmd/Hlp_C_NRRANG.html") ("NSCALE" "ans_cmd/Hlp_C_NSCALE.html") ("NSEL" "ans_cmd/Hlp_C_NSEL.html") ("NSLA" "ans_cmd/Hlp_C_NSLA.html") ("NSLE" "ans_cmd/Hlp_C_NSLE.html") ("NSLK" "ans_cmd/Hlp_C_NSLK.html") ("NSLL" "ans_cmd/Hlp_C_NSLL.html") ("NSLV" "ans_cmd/Hlp_C_NSLV.html") ("NSMOOTH" "ans_cmd/Hlp_C_NSMOOTH.html") ("NSOL" "ans_cmd/Hlp_C_NSOL.html") ("NSORT" "ans_cmd/Hlp_C_NSORT.html") ("NSTORE" "ans_cmd/Hlp_C_NSTORE.html") ("NSUBST" "ans_cmd/Hlp_C_NSUBST.html") ("NSVR" "ans_cmd/Hlp_C_NSVR.html") ("NSYM" "ans_cmd/Hlp_C_NSYM.html") ("NUMCMP" "ans_cmd/Hlp_C_NUMCMP.html") ("NUMEXP" "ans_cmd/Hlp_C_NUMEXP.html") ("NUMMRG" "ans_cmd/Hlp_C_NUMMRG.html") ("NUMOFF" "ans_cmd/Hlp_C_NUMOFF.html") ("NUMSTR" "ans_cmd/Hlp_C_NUMSTR.html") ("NUMVAR" "ans_cmd/Hlp_C_NUMVAR.html") ("NUSORT" "ans_cmd/Hlp_C_NUSORT.html") ("NWPAVE" "ans_cmd/Hlp_C_NWPAVE.html") ("NWPLAN" "ans_cmd/Hlp_C_NWPLAN.html") ("NWRITE" "ans_cmd/Hlp_C_NWRITE.html") ("OCDATA" "ans_cmd/Hlp_C_OCDATA.html") ("OCDELETE" "ans_cmd/Hlp_C_OCDELETE.html") ("OCLIST" "ans_cmd/Hlp_C_OCLIST.html") ("OCREAD" "ans_cmd/Hlp_C_OCREAD.html") ("OCTABLE" "ans_cmd/Hlp_C_OCTABLE.html") ("OCTYPE" "ans_cmd/Hlp_C_OCTYPE.html") ("OCZONE" "ans_cmd/Hlp_C_OCZONE.html") ("OMEGA" "ans_cmd/Hlp_C_OMEGA.html") ("OPERATE" "ans_cmd/Hlp_C_OPERATE.html") ("OPNCONTROL" "ans_cmd/Hlp_C_OPNCONTROL.html") ("OUTAERO" "ans_cmd/OUTAERO.html") ("OUTGEOM" "ans_cmd/Hlp_C_OUTGEOM.html") ("OUTOPT" "ans_cmd/Hlp_C_OUTOPT.html") ("OUTPR" "ans_cmd/Hlp_C_OUTPR.html") ("OUTRES" "ans_cmd/Hlp_C_OUTRES.html") ("OVCHECK" "ans_cmd/Hlp_C_OVCHECK.html") ("PADELE" "ans_cmd/Hlp_C_PADELE.html") ("PAGET" "ans_cmd/Hlp_C_PAGET.html") ("PAPUT" "ans_cmd/Hlp_C_PAPUT.html") ("PARESU" "ans_cmd/Hlp_C_PARESU.html") ("PARRES" "ans_cmd/Hlp_C_PARRES.html") ("PARSAV" "ans_cmd/Hlp_C_PARSAV.html") ("PASAVE" "ans_cmd/Hlp_C_PASAVE.html") ("PATH" "ans_cmd/Hlp_C_PATH.html") ("PAUSE" "ans_cmd/Hlp_C_PAUSE.html") ("PCALC" "ans_cmd/Hlp_C_PCALC.html") ("PCGOPT" "ans_cmd/Hlp_C_PCGOPT.html") ("PCIRC" "ans_cmd/Hlp_C_PCIRC.html") ("PCORRO" "ans_arch/Hlp_C_PCORRO.html") ("PCROSS" "ans_cmd/Hlp_C_PCROSS.html") ("PDEF" "ans_cmd/Hlp_C_PDEF.html") ("PDOT" "ans_cmd/Hlp_C_PDOT.html") ("PDRAG" "ans_arch/Hlp_C_PDRAG.html") ("PERBC2D" "ans_cmd/Hlp_C_PERBC2D.html") ("PERTURB" "ans_cmd/Hlp_C_PERTURB.html") ("PFACT" "ans_cmd/Hlp_C_PFACT.html") ("PFLUID" "ans_arch/Hlp_C_PFLUID.html") ("PGAP" "ans_arch/Hlp_C_PGAP.html") ("PHYSICS" "ans_cmd/Hlp_C_PHYSICS.html") ("PINSUL" "ans_arch/Hlp_C_PINSUL.html") ("PIPE" "ans_arch/Hlp_C_PIPE.html") ("PIPE16" "ans_arch/Hlp_E_PIPE16.html") ("PIPE18" "ans_arch/Hlp_E_PIPE18.html") ("PIPE288" "ans_elem/Hlp_E_PIPE288.html") ("PIPE289" "ans_elem/Hlp_E_PIPE289.html") ("PIPE59" "ans_arch/Hlp_E_PIPE59.html") ("PIPES" "ans_elem/Hlp_E_CH3_2.html#allpipes") ("PIVCHECK" "ans_cmd/Hlp_C_PIVCHECK.html") ("\"PLANES\"" "ans_elem/Hlp_E_CH3_2.html#allplanes") ("PLANE121" "ans_elem/Hlp_E_PLANE121.html") ("PLANE13" "ans_elem/Hlp_E_PLANE13.html") ("PLANE182" "ans_elem/Hlp_E_PLANE182.html") ("PLANE183" "ans_elem/Hlp_E_PLANE183.html") ("PLANE222" "ans_elem/Hlp_E_PLANE222.html") ("PLANE223" "ans_elem/Hlp_E_PLANE223.html") ("PLANE230" "ans_elem/Hlp_E_PLANE230.html") ("PLANE233" "ans_elem/Hlp_E_PLANE233.html") ("PLANE238" "ans_elem/Hlp_E_PLANE238.html") ("PLANE25" "ans_elem/Hlp_E_PLANE25.html") ("PLANE292" "ans_elem/Hlp_E_PLANE292.html") ("PLANE293" "ans_elem/Hlp_E_PLANE293.html") ("PLANE35" "ans_elem/Hlp_E_PLANE35.html") ("PLANE42" "ans_arch/Hlp_E_PLANE42.html") ("PLANE55" "ans_elem/Hlp_E_PLANE55.html") ("PLANE75" "ans_elem/Hlp_E_PLANE75.html") ("PLANE77" "ans_elem/Hlp_E_PLANE77.html") ("PLANE78" "ans_elem/Hlp_E_PLANE78.html") ("PLANE82" "ans_arch/Hlp_E_PLANE82.html") ("PLANE83" "ans_elem/Hlp_E_PLANE83.html") ("PLAS" "ans_cmd/Hlp_C_PLAS.html") ("PLCAMP" "ans_cmd/Hlp_C_PLCAMP.html") ("PLCFREQ" "ans_cmd/Hlp_C_PLCFREQ.html") ("PLCHIST" "ans_cmd/Hlp_C_PLCHIST.html") ("PLCINT" "ans_cmd/Hlp_C_PLCINT.html") ("PLCKSURF" "ans_cmd/Hlp_C_PLCKSURF.html") ("PLCPLX" "ans_cmd/Hlp_C_PLCPLX.html") ("PLCRACK" "ans_arch/Hlp_C_PLCRACK.html") ("PLDISP" "ans_cmd/Hlp_C_PLDISP.html") ("PLESOL" "ans_cmd/Hlp_C_PLESOL.html") ("PLETAB" "ans_cmd/Hlp_C_PLETAB.html") ("PLF2D" "ans_cmd/Hlp_C_PLF2D.html") ("PLFAR" "ans_cmd/Hlp_C_PLFAR.html") ("PLGEOM" "ans_cmd/Hlp_C_PLGEOM.html") ("PLLS" "ans_cmd/Hlp_C_PLLS.html") ("PLMAP" "ans_cmd/Hlp_C_PLMAP.html") ("PLMC" "ans_cmd/Hlp_C_PLMC.html") ("PLNEAR" "ans_cmd/Hlp_C_PLNEAR.html") ("PLNSOL" "ans_cmd/Hlp_C_PLNSOL.html") ("PLORB" "ans_cmd/Hlp_C_PLORB.html") ("PLOTTING" "ans_cmd/Hlp_C_PLOTTING.html") ("PLPAGM" "ans_cmd/Hlp_C_PLPAGM.html") ("PLPATH" "ans_cmd/Hlp_C_PLPATH.html") ("PLSECT" "ans_cmd/Hlp_C_PLSECT.html") ("PLTIME" "ans_cmd/Hlp_C_PLTIME.html") ("PLTRAC" "ans_cmd/Hlp_C_PLTRAC.html") ("PLVAR" "ans_cmd/Hlp_C_PLVAR.html") ("PLVECT" "ans_cmd/Hlp_C_PLVECT.html") ("PLZZ" "ans_cmd/Hlp_C_PLZZ.html") ("PMAP" "ans_cmd/Hlp_C_PMAP.html") ("PMGTRAN" "ans_cmd/Hlp_C_PMGTRAN.html") ("PMLOPT" "ans_cmd/Hlp_C_PMLOPT.html") ("PMLSIZE" "ans_cmd/Hlp_C_PMLSIZE.html") ("PNGR" "ans_cmd/Hlp_C_PNGR.html") ("POINT" "ans_cmd/Hlp_C_POINT.html") ("POLY" "ans_cmd/Hlp_C_POLY.html") ("POPT" "ans_arch/Hlp_C_POPT.html") ("POWERH" "ans_cmd/Hlp_C_POWERH.html") ("PPATH" "ans_cmd/Hlp_C_PPATH.html") ("PPRES" "ans_arch/Hlp_C_PPRES.html") ("PRANGE" "ans_cmd/Hlp_C_PRANGE.html") ("PRAS" "ans_cmd/Hlp_C_PRAS.html") ("PRCAMP" "ans_cmd/Hlp_C_PRCAMP.html") ("PRCINT" "ans_cmd/Hlp_C_PRCINT.html") ("PRCPLX" "ans_cmd/Hlp_C_PRCPLX.html") ("PRED" "ans_cmd/Hlp_C_PRED.html") ("PRENERGY" "ans_cmd/Hlp_C_PRENERGY.html") ("PRERR" "ans_cmd/Hlp_C_PRERR.html") ("PRESOL" "ans_cmd/Hlp_C_PRESOL.html") ("PRETAB" "ans_cmd/Hlp_C_PRETAB.html") ("PRETS" "ans_elem/Hlp_E_CH3_2.html#allprets") ("PRETS179" "ans_elem/Hlp_E_PRETS179.html") ("PRFAR" "ans_cmd/Hlp_C_PRFAR.html") ("PRI2" "ans_cmd/Hlp_C_PRI2.html") ("PRIM" "ans_cmd/Hlp_C_PRIM.html") ("PRINT" "ans_cmd/Hlp_C_PRINT.html") ("PRISM" "ans_cmd/Hlp_C_PRISM.html") ("PRITER" "ans_cmd/Hlp_C_PRITER.html") ("PRJSOL" "ans_cmd/Hlp_C_PRJSOL.html") ("PRMC" "ans_cmd/Hlp_C_PRMC.html") ("PRNEAR" "ans_cmd/Hlp_C_PRNEAR.html") ("PRNLD" "ans_cmd/Hlp_C_PRNLD.html") ("PRNSOL" "ans_cmd/Hlp_C_PRNSOL.html") ("PROD" "ans_cmd/Hlp_C_PROD.html") ("PRORB" "ans_cmd/Hlp_C_PRORB.html") ("PRPATH" "ans_cmd/Hlp_C_PRPATH.html") ("PRRFOR" "ans_cmd/Hlp_C_PRRFOR.html") ("PRRSOL" "ans_cmd/Hlp_C_PRRSOL.html") ("PRSCONTROL" "ans_cmd/Hlp_C_PRSCONTROL.html") ("PRSECT" "ans_cmd/Hlp_C_PRSECT.html") ("PRTIME" "ans_cmd/Hlp_C_PRTIME.html") ("PRVAR" "ans_cmd/Hlp_C_PRVAR.html") ("PRVECT" "ans_cmd/Hlp_C_PRVECT.html") ("PSCONTROL" "ans_cmd/Hlp_C_PSCONTROL.html") ("PSDCOM" "ans_cmd/Hlp_C_PSDCOM.html") ("PSDFRQ" "ans_cmd/Hlp_C_PSDFRQ.html") ("PSDGRAPH" "ans_cmd/Hlp_C_PSDGRAPH.html") ("PSDRES" "ans_cmd/Hlp_C_PSDRES.html") ("PSDSPL" "ans_cmd/Hlp_C_PSDSPL.html") ("PSDUNIT" "ans_cmd/Hlp_C_PSDUNIT.html") ("PSDVAL" "ans_cmd/Hlp_C_PSDVAL.html") ("PSDWAV" "ans_cmd/Hlp_C_PSDWAV.html") ("PSEL" "ans_cmd/Hlp_C_PSEL.html") ("PSMAT" "ans_cmd/Hlp_C_PSMAT.html") ("PSMESH" "ans_cmd/Hlp_C_PSMESH.html") ("PSOLVE" "ans_arch/Hlp_C_PSOLVE.html") ("PSPEC" "ans_arch/Hlp_C_PSPEC.html") ("PSPRNG" "ans_arch/Hlp_C_PSPRNG.html") ("PSTRES" "ans_cmd/Hlp_C_PSTRES.html") ("PSYS" "ans_cmd/Hlp_C_PSYS.html") ("PTEMP" "ans_arch/Hlp_C_PTEMP.html") ("PTR" "ans_cmd/Hlp_C_PTR.html") ("PTXY" "ans_cmd/Hlp_C_PTXY.html") ("PUNIT" "ans_arch/Hlp_C_PUNIT.html") ("PVECT" "ans_cmd/Hlp_C_PVECT.html") ("QDVAL" "ans_cmd/Hlp_C_QDVAL.html") ("QRDOPT" "ans_cmd/Hlp_C_QRDOPT.html") ("QSOPT" "ans_cmd/Hlp_C_QSOPT.html") ("QUAD" "ans_cmd/Hlp_C_QUAD.html") ("QUOT" "ans_cmd/Hlp_C_QUOT.html") ("R" "ans_cmd/Hlp_C_R.html") ("RACE" "ans_cmd/Hlp_C_RACE.html") ("RADOPT" "ans_cmd/Hlp_C_RADOPT.html") ("RAPPND" "ans_cmd/Hlp_C_RAPPND.html") ("RATE" "ans_cmd/Hlp_C_RATE.html") ("RBE3" "ans_cmd/Hlp_C_RBE3.html") ("RCON" "ans_cmd/Hlp_C_RCON.html") ("RCYC" "ans_cmd/Hlp_C_RCYC.html") ("RDEC" "ans_cmd/Hlp_C_RDEC.html") ("RDELE" "ans_cmd/Hlp_C_RDELE.html") ("READ" "ans_cmd/Hlp_C_READ.html") ("REAL" "ans_cmd/Hlp_C_REAL.html") ("REALVAR" "ans_cmd/Hlp_C_REALVAR.html") ("RECTNG" "ans_cmd/Hlp_C_RECTNG.html") ("REDUCE" "ans_arch/Hlp_C_REDUCE.html") ("REINF" "ans_elem/Hlp_E_CH3_2.html#allreinf") ("REINF263" "ans_elem/Hlp_E_REINF263.html") ("REINF264" "ans_elem/Hlp_E_REINF264.html") ("REINF265" "ans_elem/Hlp_E_REINF265.html") ("REMESH" "ans_cmd/Hlp_C_REMESH.html") ("RESCOMBINE" "ans_cmd/Hlp_C_RESCOMBINE.html") ("RESCONTROL" "ans_cmd/Hlp_C_RESCONTROL.html") ("RESET" "ans_cmd/Hlp_C_RESET.html") ("RESP" "ans_cmd/Hlp_C_RESP.html") ("RESUME" "ans_cmd/Hlp_C_RESUME.html") ("RESVEC" "ans_cmd/Hlp_C_RESVEC.html") ("RESWRITE" "ans_cmd/Hlp_C_RESWRITE.html") ("REZONE" "ans_cmd/Hlp_C_REZONE.html") ("RFORCE" "ans_cmd/Hlp_C_RFORCE.html") ("RIGID" "ans_cmd/Hlp_C_RIGID.html") ("RIGRESP" "ans_cmd/Hlp_C_RIGRESP.html") ("RLIST" "ans_cmd/Hlp_C_RLIST.html") ("RMALIST" "ans_cmd/Hlp_C_RMALIST.html") ("RMANL" "ans_cmd/Hlp_C_RMANL.html") ("RMASTER" "ans_cmd/Hlp_C_RMASTER.html") ("RMCAP" "ans_cmd/Hlp_C_RMCAP.html") ("RMCLIST" "ans_cmd/Hlp_C_RMCLIST.html") ("RMFLVEC" "ans_cmd/Hlp_C_RMFLVEC.html") ("RMLVSCALE" "ans_cmd/Hlp_C_RMLVSCALE.html") ("RMMLIST" "ans_cmd/Hlp_C_RMMLIST.html") ("RMMRANGE" "ans_cmd/Hlp_C_RMMRANGE.html") ("RMMSELECT" "ans_cmd/Hlp_C_RMMSELECT.html") ("RMNDISP" "ans_cmd/Hlp_C_RMNDISP.html") ("RMNEVEC" "ans_cmd/Hlp_C_RMNEVEC.html") ("RMODIF" "ans_cmd/Hlp_C_RMODIF.html") ("RMORE" "ans_cmd/Hlp_C_RMORE.html") ("RMPORDER" "ans_cmd/Hlp_C_RMPORDER.html") ("RMRESUME" "ans_cmd/Hlp_C_RMRESUME.html") ("RMRGENERATE" "ans_cmd/Hlp_C_RMRGENERATE.html") ("RMROPTIONS" "ans_cmd/Hlp_C_RMROPTIONS.html") ("RMRPLOT" "ans_cmd/Hlp_C_RMRPLOT.html") ("RMRSTATUS" "ans_cmd/Hlp_C_RMRSTATUS.html") ("RMSAVE" "ans_cmd/Hlp_C_RMSAVE.html") ("RMSMPLE" "ans_cmd/Hlp_C_RMSMPLE.html") ("RMUSE" "ans_cmd/Hlp_C_RMUSE.html") ("RMXPORT" "ans_cmd/Hlp_C_RMXPORT.html") ("ROCK" "ans_cmd/Hlp_C_ROCK.html") ("ROM" "ans_elem/Hlp_E_CH3_2.html#allrom") ("ROM144" "ans_elem/Hlp_E_ROM144.html") ("ROSE" "ans_cmd/Hlp_C_ROSE.html") ("RPOLY" "ans_cmd/Hlp_C_RPOLY.html") ("RPR4" "ans_cmd/Hlp_C_RPR4.html") ("RPRISM" "ans_cmd/Hlp_C_RPRISM.html") ("RPSD" "ans_cmd/Hlp_C_RPSD.html") ("RSMESH" "ans_cmd/Hlp_C_RSMESH.html") ("RSOPT" "ans_cmd/Hlp_C_RSOPT.html") ("RSPLIT" "ans_cmd/Hlp_C_RSPLIT.html") ("RSTMAC" "ans_cmd/Hlp_C_RSTMAC.html") ("RSTOFF" "ans_cmd/Hlp_C_RSTOFF.html") ("RSURF" "ans_cmd/Hlp_C_RSURF.html") ("RSYMM" "ans_cmd/Hlp_C_RSYMM.html") ("RSYS" "ans_cmd/Hlp_C_RSYS.html") ("RUN" "ans_arch/Hlp_C_RUN.html") ("SABS" "ans_cmd/Hlp_C_SABS.html") ("SADD" "ans_cmd/Hlp_C_SADD.html") ("SALLOW" "ans_cmd/Hlp_C_SALLOW.html") ("SAVE" "ans_cmd/Hlp_C_SAVE.html") ("SBCLIST" "ans_cmd/Hlp_C_SBCLIST.html") ("SBCTRAN" "ans_cmd/Hlp_C_SBCTRAN.html") ("SCOPT" "ans_cmd/Hlp_C_SCOPT.html") ("SDELETE" "ans_cmd/Hlp_C_SDELETE.html") ("SE" "ans_cmd/Hlp_C_SE.html") ("SECCONTROL" "ans_cmd/Hlp_C_SECCONTROL.html") ("SECDATA" "ans_cmd/Hlp_C_SECDATA.html") ("SECFUNCTION" "ans_cmd/Hlp_C_SECFUNCTION.html") ("SECJOINT" "ans_cmd/Hlp_C_SECJOINT.html") ("SECLOCK" "ans_cmd/Hlp_C_SECLOCK.html") ("SECMODIF" "ans_cmd/Hlp_C_SECMODIF.html") ("SECNUM" "ans_cmd/Hlp_C_SECNUM.html") ("SECOFFSET" "ans_cmd/Hlp_C_SECOFFSET.html") ("SECPLOT" "ans_cmd/Hlp_C_SECPLOT.html") ("SECREAD" "ans_cmd/Hlp_C_SECREAD.html") ("SECSTOP" "ans_cmd/Hlp_C_SECSTOP.html") ("SECTYPE" "ans_cmd/Hlp_C_SECTYPE.html") ("SECWRITE" "ans_cmd/Hlp_C_SECWRITE.html") ("SED" "ans_cmd/Hlp_C_SED.html") ("SEDLIST" "ans_cmd/Hlp_C_SEDLIST.html") ("SEEXP" "ans_cmd/Hlp_C_SEEXP.html") ("SELIST" "ans_cmd/Hlp_C_SELIST.html") ("SELM" "ans_cmd/Hlp_C_SELM.html") ("SELTOL" "ans_cmd/Hlp_C_SELTOL.html") ("SEMIIMPLICIT" "ans_cmd/Hlp_C_SEMI.html") ("SENERGY" "ans_cmd/Hlp_C_SENERGY.html") ("SEOPT" "ans_cmd/Hlp_C_SEOPT.html") ("SESYMM" "ans_cmd/Hlp_C_SESYMM.html") ("SET" "ans_cmd/Hlp_C_SET.html") ("SETFGAP" "ans_cmd/Hlp_C_SETFGAP.html") ("SETRAN" "ans_cmd/Hlp_C_SETRAN.html") ("SEXP" "ans_cmd/Hlp_C_SEXP.html") ("SF" "ans_cmd/Hlp_C_SF.html") ("SFA" "ans_cmd/Hlp_C_SFA.html") ("SFACT" "ans_cmd/Hlp_C_SFACT.html") ("SFADELE" "ans_cmd/Hlp_C_SFADELE.html") ("SFALIST" "ans_cmd/Hlp_C_SFALIST.html") ("SFBEAM" "ans_cmd/Hlp_C_SFBEAM.html") ("SFCALC" "ans_cmd/Hlp_C_SFCALC.html") ("SFCONTROL" "ans_cmd/Hlp_C_SFCONTROL.html") ("SFCUM" "ans_cmd/Hlp_C_SFCUM.html") ("SFDELE" "ans_cmd/Hlp_C_SFDELE.html") ("SFE" "ans_cmd/Hlp_C_SFE.html") ("SFEDELE" "ans_cmd/Hlp_C_SFEDELE.html") ("SFELIST" "ans_cmd/Hlp_C_SFELIST.html") ("SFFUN" "ans_cmd/Hlp_C_SFFUN.html") ("SFGRAD" "ans_cmd/Hlp_C_SFGRAD.html") ("SFL" "ans_cmd/Hlp_C_SFL.html") ("SFLDELE" "ans_cmd/Hlp_C_SFLDELE.html") ("SFLEX" "ans_cmd/Hlp_C_SFLEX.html") ("SFLIST" "ans_cmd/Hlp_C_SFLIST.html") ("SFLLIST" "ans_cmd/Hlp_C_SFLLIST.html") ("SFSCALE" "ans_cmd/Hlp_C_SFSCALE.html") ("SFTRAN" "ans_cmd/Hlp_C_SFTRAN.html") ("SHELL" "ans_cmd/Hlp_C_SHELL.html") ("SHELL131" "ans_elem/Hlp_E_SHELL131.html") ("SHELL132" "ans_elem/Hlp_E_SHELL132.html") ("SHELL157" "ans_elem/Hlp_E_SHELL157.html") ("SHELL181" "ans_elem/Hlp_E_SHELL181.html") ("SHELL208" "ans_elem/Hlp_E_SHELL208.html") ("SHELL209" "ans_elem/Hlp_E_SHELL209.html") ("SHELL281" "ans_elem/Hlp_E_SHELL281.html") ("SHELL61" "ans_elem/Hlp_E_SHELL61.html") ("SHELL63" "ans_arch/Hlp_E_SHELL63.html") ("\"SHELLS\"" "ans_elem/Hlp_E_CH3_2.html#allshells") ("SHPP" "ans_cmd/Hlp_C_SHPP.html") ("SHSD" "ans_cmd/Hlp_C_SHSD.html") ("SLIST" "ans_cmd/Hlp_C_SLIST.html") ("SLOAD" "ans_cmd/Hlp_C_SLOAD.html") ("SMALL" "ans_cmd/Hlp_C_SMALL.html") ("SMAX" "ans_cmd/Hlp_C_SMAX.html") ("SMBODY" "ans_cmd/Hlp_C_SMBODY.html") ("SMCONS" "ans_cmd/Hlp_C_SMCONS.html") ("SMFOR" "ans_cmd/Hlp_C_SMFOR.html") ("SMIN" "ans_cmd/Hlp_C_SMIN.html") ("SMOOTH" "ans_cmd/Hlp_C_SMOOTH.html") ("SMRTSIZE" "ans_cmd/Hlp_C_SMRTSIZE.html") ("SMSURF" "ans_cmd/Hlp_C_SMSURF.html") ("SMULT" "ans_cmd/Hlp_C_SMULT.html") ("SNOPTION" "ans_cmd/Hlp_C_SNOPTION.html") ("\"SOLIDS\"" "ans_elem/Hlp_E_CH3_2.html#allsolids") ("SOLID122" "ans_elem/Hlp_E_SOLID122.html") ("SOLID123" "ans_elem/Hlp_E_SOLID123.html") ("SOLID185" "ans_elem/Hlp_E_SOLID185.html") ("SOLID186" "ans_elem/Hlp_E_SOLID186.html") ("SOLID187" "ans_elem/Hlp_E_SOLID187.html") ("SOLID226" "ans_elem/Hlp_E_SOLID226.html") ("SOLID227" "ans_elem/Hlp_E_SOLID227.html") ("SOLID231" "ans_elem/Hlp_E_SOLID231.html") ("SOLID232" "ans_elem/Hlp_E_SOLID232.html") ("SOLID236" "ans_elem/Hlp_E_SOLID236.html") ("SOLID237" "ans_elem/Hlp_E_SOLID237.html") ("SOLID239" "ans_elem/Hlp_E_SOLID239.html") ("SOLID240" "ans_elem/Hlp_E_SOLID240.html") ("SOLID272" "ans_elem/Hlp_E_SOLID272.html") ("SOLID273" "ans_elem/Hlp_E_SOLID273.html") ("SOLID278" "ans_elem/Hlp_E_SOLID278.html") ("SOLID279" "ans_elem/Hlp_E_SOLID279.html") ("SOLID285" "ans_elem/Hlp_E_SOLID285.html") ("SOLID291" "ans_elem/Hlp_E_SOLID291.html") ("SOLID45" "ans_arch/Hlp_E_SOLID45.html") ("SOLID5" "ans_elem/Hlp_E_SOLID5.html") ("SOLID65" "ans_arch/Hlp_E_SOLID65.html") ("SOLID70" "ans_elem/Hlp_E_SOLID70.html") ("SOLID87" "ans_elem/Hlp_E_SOLID87.html") ("SOLID90" "ans_elem/Hlp_E_SOLID90.html") ("SOLID92" "ans_arch/Hlp_E_SOLID92.html") ("SOLID95" "ans_arch/Hlp_E_SOLID95.html") ("SOLID96" "ans_elem/Hlp_E_SOLID96.html") ("SOLID98" "ans_elem/Hlp_E_SOLID98.html") ("SOLSH" "ans_elem/Hlp_E_CH3_2.html#allsolsh") ("SOLSH190" "ans_elem/Hlp_E_SOLSH190.html") ("SOLU" "ans_cmd/Hlp_C_SOLU.html") ("SOLUOPT" "ans_cmd/Hlp_C_SOLUOPT.html") ("SOLVE" "ans_cmd/Hlp_C_SOLVE.html") ("SORT" "ans_cmd/Hlp_C_SORT.html") ("SOURC" "ans_elem/Hlp_E_CH3_2.html#allsourc") ("SOURC36" "ans_elem/Hlp_E_SOURC36.html") ("SOURCE" "ans_cmd/Hlp_C_SOURCE.html") ("SPACE" "ans_cmd/Hlp_C_SPACE.html") ("SPCNOD" "ans_cmd/Hlp_C_SPCNOD.html") ("SPCTEMP" "ans_cmd/Hlp_C_SPCTEMP.html") ("SPDAMP" "ans_cmd/Hlp_C_SPDAMP.html") ("SPEC" "ans_cmd/Hlp_C_SPEC.html") ("SPFREQ" "ans_cmd/Hlp_C_SPFREQ.html") ("SPGRAPH" "ans_cmd/Hlp_C_SPGRAPH.html") ("SPH4" "ans_cmd/Hlp_C_SPH4.html") ("SPH5" "ans_cmd/Hlp_C_SPH5.html") ("SPHERE" "ans_cmd/Hlp_C_SPHERE.html") ("SPLINE" "ans_cmd/Hlp_C_SPLINE.html") ("SPLOT" "ans_cmd/Hlp_C_SPLOT.html") ("SPMWRITE" "ans_cmd/Hlp_C_SPMWRITE.html") ("SPOINT" "ans_cmd/Hlp_C_SPOINT.html") ("SPOPT" "ans_cmd/Hlp_C_SPOPT.html") ("SPREAD" "ans_cmd/Hlp_C_SPREAD.html") ("SPTOPT" "ans_cmd/Hlp_C_SPTOPT.html") ("SPUNIT" "ans_cmd/Hlp_C_SPUNIT.html") ("SPVAL" "ans_cmd/Hlp_C_SPVAL.html") ("SQRT" "ans_cmd/Hlp_C_SQRT.html") ("SRSS" "ans_cmd/Hlp_C_SRSS.html") ("SSBT" "ans_cmd/Hlp_C_SSBT.html") ("SSLN" "ans_cmd/Hlp_C_SSLN.html") ("SSMT" "ans_cmd/Hlp_C_SSMT.html") ("SSOPT" "ans_cmd/Hlp_C_SSOPT.html") ("SSPA" "ans_cmd/Hlp_C_SSPA.html") ("SSPB" "ans_cmd/Hlp_C_SSPB.html") ("SSPD" "ans_cmd/Hlp_C_SSPD.html") ("SSPE" "ans_cmd/Hlp_C_SSPE.html") ("SSPM" "ans_cmd/Hlp_C_SSPM.html") ("SSTATE" "ans_cmd/Hlp_C_SSTATE.html") ("SSTIF" "ans_arch/Hlp_C_SSTIF.html") ("SSUM" "ans_cmd/Hlp_C_SSUM.html") ("STABILIZE" "ans_cmd/Hlp_C_STABILIZE.html") ("STAT" "ans_cmd/Hlp_C_STAT.html") ("STEF" "ans_cmd/Hlp_C_STEF.html") ("STORE" "ans_cmd/Hlp_C_STORE.html") ("SUBOPT" "ans_cmd/Hlp_C_SUBOPT.html") ("SUBSET" "ans_cmd/Hlp_C_SUBSET.html") ("SUCALC" "ans_cmd/Hlp_C_SUCALC.html") ("SUCR" "ans_cmd/Hlp_C_SUCR.html") ("SUDEL" "ans_cmd/Hlp_C_SUDEL.html") ("SUEVAL" "ans_cmd/Hlp_C_SUEVAL.html") ("SUGET" "ans_cmd/Hlp_C_SUGET.html") ("SUMAP" "ans_cmd/Hlp_C_SUMAP.html") ("SUMTYPE" "ans_cmd/Hlp_C_SUMTYPE.html") ("SUPL" "ans_cmd/Hlp_C_SUPL.html") ("SUPR" "ans_cmd/Hlp_C_SUPR.html") ("SURESU" "ans_cmd/Hlp_C_SURESU.html") ("SURF" "ans_elem/Hlp_E_CH3_2.html#allsurf") ("SURF151" "ans_elem/Hlp_E_SURF151.html") ("SURF152" "ans_elem/Hlp_E_SURF152.html") ("SURF153" "ans_elem/Hlp_E_SURF153.html") ("SURF154" "ans_elem/Hlp_E_SURF154.html") ("SURF155" "ans_elem/Hlp_E_SURF155.html") ("SURF156" "ans_elem/Hlp_E_SURF156.html") ("SURF159" "ans_elem/Hlp_E_SURF159.html") ("SURF251" "ans_elem/Hlp_E_SURF251.html") ("SURF252" "ans_elem/Hlp_E_SURF252.html") ("SUSAVE" "ans_cmd/Hlp_C_SUSAVE.html") ("SUSEL" "ans_cmd/Hlp_C_SUSEL.html") ("SUVECT" "ans_cmd/Hlp_C_SUVECT.html") ("SV" "ans_cmd/Hlp_C_SV.html") ("SVPLOT" "ans_cmd/Hlp_C_SVPLOT.html") ("SVTYP" "ans_cmd/Hlp_C_SVTYP.html") ("SWADD" "ans_cmd/Hlp_C_SWADD.html") ("SWDEL" "ans_cmd/Hlp_C_SWDEL.html") ("SWGEN" "ans_cmd/Hlp_C_SWGEN.html") ("SWLIST" "ans_cmd/Hlp_C_SWLIST.html") ("SYNCHRO" "ans_cmd/Hlp_C_SYNCHRO.html") ("TALLOW" "ans_cmd/Hlp_C_TALLOW.html") ("TARGE" "ans_elem/Hlp_E_CH3_2.html#alltarge") ("TARGE169" "ans_elem/Hlp_E_TARGE169.html") ("TARGE170" "ans_elem/Hlp_E_TARGE170.html") ("TARGET" "ans_cmd/Hlp_C_TARGET.html") ("TB" "ans_cmd/Hlp_C_TB.html") ("TBCOPY" "ans_cmd/Hlp_C_TBCOPY.html") ("TBDATA" "ans_cmd/Hlp_C_TBDATA.html") ("TBDELE" "ans_cmd/Hlp_C_TBDELE.html") ("TBEO" "ans_cmd/Hlp_C_TBEO.html") ("TBFIELD" "ans_cmd/Hlp_C_TBFIELD.html") ("TBFT" "ans_cmd/Hlp_C_TBFT.html") ("TBIN" "ans_cmd/Hlp_C_TBIN.html") ("TBLE" "ans_cmd/Hlp_C_TBLE.html") ("TBLIST" "ans_cmd/Hlp_C_TBLIST.html") ("TBMODIF" "ans_cmd/Hlp_C_TBMODIF.html") ("TBPLOT" "ans_cmd/Hlp_C_TBPLOT.html") ("TBPT" "ans_cmd/Hlp_C_TBPT.html") ("TBTEMP" "ans_cmd/Hlp_C_TBTEMP.html") ("TCHG" "ans_cmd/Hlp_C_TCHG.html") ("TEE" "ans_arch/Hlp_C_TEE.html") ("THEXPAND" "ans_cmd/Hlp_C_THEXPAND.html") ("THOPT" "ans_cmd/Hlp_C_THOPT.html") ("TIFF" "ans_cmd/Hlp_C_TIFF.html") ("TIME" "ans_cmd/Hlp_C_TIME.html") ("TIMERANGE" "ans_cmd/Hlp_C_TIMERANGE.html") ("TIMINT" "ans_cmd/Hlp_C_TIMINT.html") ("TIMP" "ans_cmd/Hlp_C_TIMP.html") ("TINTP" "ans_cmd/Hlp_C_TINTP.html") ("TOFFST" "ans_cmd/Hlp_C_TOFFST.html") ("TORUS" "ans_cmd/Hlp_C_TORUS.html") ("TRANS126" "ans_elem/Hlp_E_TRANS126.html") ("TRANSFER" "ans_cmd/Hlp_C_TRANSFER.html") ("TREF" "ans_cmd/Hlp_C_TREF.html") ("TRNOPT" "ans_cmd/Hlp_C_TRNOPT.html") ("TRPDEL" "ans_cmd/Hlp_C_TRPDEL.html") ("TRPLIS" "ans_cmd/Hlp_C_TRPLIS.html") ("TRPOIN" "ans_cmd/Hlp_C_TRPOIN.html") ("TRTIME" "ans_cmd/Hlp_C_TRTIME.html") ("TSHAP" "ans_cmd/Hlp_C_TSHAP.html") ("TSRES" "ans_cmd/Hlp_C_TSRES.html") ("TUNIF" "ans_cmd/Hlp_C_TUNIF.html") ("TVAR" "ans_cmd/Hlp_C_TVAR.html") ("TYPE" "ans_cmd/Hlp_C_TYPE.html") ("UIMP" "ans_cmd/Hlp_C_UIMP.html") ("UNDELETE" "ans_cmd/Hlp_C_UNDELETE.html") ("UNDO" "ans_cmd/Hlp_C_UNDO.html") ("UNPAUSE" "ans_cmd/Hlp_C_UNPAUSE.html") ("UPCOORD" "ans_cmd/Hlp_C_UPCOORD.html") ("UPGEOM" "ans_cmd/Hlp_C_UPGEOM.html") ("USER300" "ans_elem/Hlp_E_USER300.html") ("USRCAL" "ans_cmd/Hlp_C_USRCAL.html") ("USRDOF" "ans_cmd/Hlp_C_USRDOF.html") ("USRELEM" "ans_cmd/Hlp_C_USRELEM.html") ("V" "ans_cmd/Hlp_C_V.html") ("V2DOPT" "ans_cmd/Hlp_C_V2DOPT.html") ("VA" "ans_cmd/Hlp_C_VA.html") ("VADD" "ans_cmd/Hlp_C_VADD.html") ("VALVE" "ans_arch/Hlp_C_VALVE.html") ("VARDEL" "ans_cmd/Hlp_C_VARDEL.html") ("VARNAM" "ans_cmd/Hlp_C_VARNAM.html") ("VATT" "ans_cmd/Hlp_C_VATT.html") ("VCLEAR" "ans_cmd/Hlp_C_VCLEAR.html") ("VCROSS" "ans_cmd/Hlp_C_VCROSS.html") ("VDDAM" "ans_cmd/Hlp_C_VDDAM.html") ("VDELE" "ans_cmd/Hlp_C_VDELE.html") ("VDGL" "ans_cmd/Hlp_C_VDGL.html") ("VDOT" "ans_cmd/Hlp_C_VDOT.html") ("VDRAG" "ans_cmd/Hlp_C_VDRAG.html") ("VEORIENT" "ans_cmd/Hlp_C_VEORIENT.html") ("VEXT" "ans_cmd/Hlp_C_VEXT.html") ("VFOPT" "ans_cmd/Hlp_C_VFOPT.html") ("VFQUERY" "ans_cmd/Hlp_C_VFQUERY.html") ("VFSM" "ans_cmd/Hlp_C_VFSM.html") ("VGEN" "ans_cmd/Hlp_C_VGEN.html") ("VGET" "ans_cmd/Hlp_C_VGET.html") ("VGLUE" "ans_cmd/Hlp_C_VGLUE.html") ("VIMP" "ans_cmd/Hlp_C_VIMP.html") ("VINP" "ans_cmd/Hlp_C_VINP.html") ("VINV" "ans_cmd/Hlp_C_VINV.html") ("VLIST" "ans_cmd/Hlp_C_VLIST.html") ("VLSCALE" "ans_cmd/Hlp_C_VLSCALE.html") ("VMESH" "ans_cmd/Hlp_C_VMESH.html") ("VOFFST" "ans_cmd/Hlp_C_VOFFST.html") ("VOLUMES" "ans_cmd/Hlp_C_VOLUMES.html") ("VOVLAP" "ans_cmd/Hlp_C_VOVLAP.html") ("VPLOT" "ans_cmd/Hlp_C_VPLOT.html") ("VPTN" "ans_cmd/Hlp_C_VPTN.html") ("VPUT" "ans_cmd/Hlp_C_VPUT.html") ("VROTAT" "ans_cmd/Hlp_C_VROTAT.html") ("VSBA" "ans_cmd/Hlp_C_VSBA.html") ("VSBV" "ans_cmd/Hlp_C_VSBV.html") ("VSBW" "ans_cmd/Hlp_C_VSBW.html") ("VSEL" "ans_cmd/Hlp_C_VSEL.html") ("VSLA" "ans_cmd/Hlp_C_VSLA.html") ("VSUM" "ans_cmd/Hlp_C_VSUM.html") ("VSWEEP" "ans_cmd/Hlp_C_VSWEEP.html") ("VSYMM" "ans_cmd/Hlp_C_VSYMM.html") ("VTRAN" "ans_cmd/Hlp_C_VTRAN.html") ("VTYPE" "ans_cmd/Hlp_C_VTYPE.html") ("WPAVE" "ans_cmd/Hlp_C_WPAVE.html") ("WPCSYS" "ans_cmd/Hlp_C_WPCSYS.html") ("WPLANE" "ans_cmd/Hlp_C_WPLANE.html") ("WPOFFS" "ans_cmd/Hlp_C_WPOFFS.html") ("WPROTA" "ans_cmd/Hlp_C_WPROTA.html") ("WPSTYL" "ans_cmd/Hlp_C_WPSTYL.html") ("WRFULL" "ans_cmd/Hlp_C_WRFULL.html") ("WRITE" "ans_cmd/Hlp_C_WRITE.html") ("WRITEMAP" "ans_cmd/Hlp_C_WRITEMAP.html") ("WSPRINGS" "ans_cmd/Hlp_C_WSPRINGS.html") ("WTBCREATE" "ans_cmd/WTBCREATE.html") ("XFCRKMESH" "ans_cmd/Hlp_C_XFCRKMESH.html") ("XFDATA" "ans_cmd/Hlp_C_XFDATA.html") ("XFENRICH" "ans_cmd/Hlp_C_XFENRICH.html") ("XFLIST" "ans_cmd/Hlp_C_XFLIST.html") ("XVAR" "ans_cmd/Hlp_C_XVAR.html") ("notfound" "ans_wid/notfound.html") ("p26calc" "ans_bas/Hlp_G_BASP26calc.html") ("p26export" "ans_bas/Hlp_G_BASP26export.html") ("p26import" "ans_bas/Hlp_G_BASP26import.html") ("p26list" "ans_bas/Hlp_G_BASP26graph.html#p26list") ("p26plot" "ans_bas/Hlp_G_BASP26graph.html#p26plot") ("p26vardefine" "ans_bas/Hlp_G_BASP26define.html") ("p26viewer" "ans_bas/Hlp_G_BASP26viewer.html") ("s-AUX3" "ans_cmd/Hlp_C_AUX3_sl.html") ("~CAT5" "ans_cmd/Hlp_C_CAT5IN.html") ("~CAT5IN" "ans_cmd/Hlp_C_CAT5IN.html") ("~CATIAIN" "ans_cmd/Hlp_C_CATIAIN.html") ("~PARAIN" "ans_cmd/Hlp_C_PARAIN.html") ("~PROEIN" "ans_cmd/Hlp_C_PROEIN.html") ("~SATIN" "ans_cmd/Hlp_C_SATIN.html") ("~UGIN" "ans_cmd/Hlp_C_UGIN.html") ("\"RELEASE NOTES\"" "ai_rn/global_releasenotes.html") ("\"CONTACT TECHNOLOGY GUIDE\"" "ans_ctec/ctectoc.html") ("\"PARAMETRIC DESIGN LANGUAGE GUIDE\"" "ans_apdl/Hlp_P_APDLTOC.html") ("\"STRUCTURAL ANALYSIS GUIDE\"" "ans_str/Hlp_G_StrTOC.html") ("\"ADVANCED ANALYSIS TECHNIQUES GUIDE\"" "ans_str/Hlp_G_AdvTOC.html") ("\"MATERIAL MODELS\"" "ans_mat/ans_mat.html") ("\"THEORY REFERENCE\"" "ans_thry/ansys.theory.html") ("ABS(" "ans_apdl/Hlp_P_APDL3_9.html") ("SIGN(" "ans_apdl/Hlp_P_APDL3_9.html") ("CXABS(" "ans_apdl/Hlp_P_APDL3_9.html") ("EXP(" "ans_apdl/Hlp_P_APDL3_9.html") ("LOG(" "ans_apdl/Hlp_P_APDL3_9.html") ("LOG10(" "ans_apdl/Hlp_P_APDL3_9.html") ("SQRT(" "ans_apdl/Hlp_P_APDL3_9.html") ("NINT(" "ans_apdl/Hlp_P_APDL3_9.html") ("MOD(" "ans_apdl/Hlp_P_APDL3_9.html") ("RAND(" "ans_apdl/Hlp_P_APDL3_9.html") ("GDIS(" "ans_apdl/Hlp_P_APDL3_9.html") ("SIN(" "ans_apdl/Hlp_P_APDL3_9.html") ("COS(" "ans_apdl/Hlp_P_APDL3_9.html") ("TAN(" "ans_apdl/Hlp_P_APDL3_9.html") ("SINH(" "ans_apdl/Hlp_P_APDL3_9.html") ("COSH(" "ans_apdl/Hlp_P_APDL3_9.html") ("TANH(" "ans_apdl/Hlp_P_APDL3_9.html") ("ASIN(" "ans_apdl/Hlp_P_APDL3_9.html") ("ACOS(" "ans_apdl/Hlp_P_APDL3_9.html") ("ATAN(" "ans_apdl/Hlp_P_APDL3_9.html") ("ATAN2(" "ans_apdl/Hlp_P_APDL3_9.html") ("NSEL(" "ans_apdl/Hlp_P_APDLget.html") ("ESEL(" "ans_apdl/Hlp_P_APDLget.html") ("KSEL(" "ans_apdl/Hlp_P_APDLget.html") ("LSEL(" "ans_apdl/Hlp_P_APDLget.html") ("ASEL(" "ans_apdl/Hlp_P_APDLget.html") ("VSEL(" "ans_apdl/Hlp_P_APDLget.html") ("NDNEXT(" "ans_apdl/Hlp_P_APDLget.html") ("ELNEXT(" "ans_apdl/Hlp_P_APDLget.html") ("KPNEXT(" "ans_apdl/Hlp_P_APDLget.html") ("LSNEXT(" "ans_apdl/Hlp_P_APDLget.html") ("ARNEXT(" "ans_apdl/Hlp_P_APDLget.html") ("VLNEXT(" "ans_apdl/Hlp_P_APDLget.html") ("CENTRX(" "ans_apdl/Hlp_P_APDLget.html") ("CENTRY(" "ans_apdl/Hlp_P_APDLget.html") ("CENTRZ(" "ans_apdl/Hlp_P_APDLget.html") ("NX(" "ans_apdl/Hlp_P_APDLget.html") ("NY(" "ans_apdl/Hlp_P_APDLget.html") ("NZ(" "ans_apdl/Hlp_P_APDLget.html") ("KX(" "ans_apdl/Hlp_P_APDLget.html") ("KY(" "ans_apdl/Hlp_P_APDLget.html") ("KZ(" "ans_apdl/Hlp_P_APDLget.html") ("LX(" "ans_apdl/Hlp_P_APDLget.html") ("LY(" "ans_apdl/Hlp_P_APDLget.html") ("LZ(" "ans_apdl/Hlp_P_APDLget.html") ("LSX(" "ans_apdl/Hlp_P_APDLget.html") ("LSY(" "ans_apdl/Hlp_P_APDLget.html") ("LSZ(" "ans_apdl/Hlp_P_APDLget.html") ("NODE(" "ans_apdl/Hlp_P_APDLget.html") ("KP(" "ans_apdl/Hlp_P_APDLget.html") ("DISTND(" "ans_apdl/Hlp_P_APDLget.html") ("DISTKP(" "ans_apdl/Hlp_P_APDLget.html") ("DISTEN(" "ans_apdl/Hlp_P_APDLget.html") ("ANGLEN(" "ans_apdl/Hlp_P_APDLget.html") ("ANGLEK(" "ans_apdl/Hlp_P_APDLget.html") ("NNEAR(" "ans_apdl/Hlp_P_APDLget.html") ("KNEAR(" "ans_apdl/Hlp_P_APDLget.html") ("ENEARN(" "ans_apdl/Hlp_P_APDLget.html") ("AREAND(" "ans_apdl/Hlp_P_APDLget.html") ("AREAKP(" "ans_apdl/Hlp_P_APDLget.html") ("ARNODE(" "ans_apdl/Hlp_P_APDLget.html") ("NORMNX(" "ans_apdl/Hlp_P_APDLget.html") ("NORMNY(" "ans_apdl/Hlp_P_APDLget.html") ("NORMNZ(" "ans_apdl/Hlp_P_APDLget.html") ("NORMKX(" "ans_apdl/Hlp_P_APDLget.html") ("NORMKY(" "ans_apdl/Hlp_P_APDLget.html") ("NORMKZ(" "ans_apdl/Hlp_P_APDLget.html") ("ENEXTN(" "ans_apdl/Hlp_P_APDLget.html") ("NELEM(" "ans_apdl/Hlp_P_APDLget.html") ("NODEDOF(" "ans_apdl/Hlp_P_APDLget.html") ("ELADJ(" "ans_apdl/Hlp_P_APDLget.html") ("NDFACE(" "ans_apdl/Hlp_P_APDLget.html") ("NMFACE(" "ans_apdl/Hlp_P_APDLget.html") ("ARFACE(" "ans_apdl/Hlp_P_APDLget.html") ("UX(" "ans_apdl/Hlp_P_APDLget.html") ("UY(" "ans_apdl/Hlp_P_APDLget.html") ("UZ(" "ans_apdl/Hlp_P_APDLget.html") ("ROTX(" "ans_apdl/Hlp_P_APDLget.html") ("ROTY(" "ans_apdl/Hlp_P_APDLget.html") ("ROTZ(" "ans_apdl/Hlp_P_APDLget.html") ("TEMP(" "ans_apdl/Hlp_P_APDLget.html") ("PRES(" "ans_apdl/Hlp_P_APDLget.html") ("VX(" "ans_apdl/Hlp_P_APDLget.html") ("VY(" "ans_apdl/Hlp_P_APDLget.html") ("VZ(" "ans_apdl/Hlp_P_APDLget.html") ("ENKE(" "ans_apdl/Hlp_P_APDLget.html") ("ENDS(" "ans_apdl/Hlp_P_APDLget.html") ("VOLT(" "ans_apdl/Hlp_P_APDLget.html") ("MAG(" "ans_apdl/Hlp_P_APDLget.html") ("AX(" "ans_apdl/Hlp_P_APDLget.html") ("AY(" "ans_apdl/Hlp_P_APDLget.html") ("AZ(" "ans_apdl/Hlp_P_APDLget.html") ("VIRTINQR(" "ans_apdl/Hlp_P_APDLget.html") ("KWGET(" "ans_apdl/Hlp_P_APDLget.html") ("VALCHR(" "ans_apdl/Hlp_P_APDLget.html") ("VALHEX(" "ans_apdl/Hlp_P_APDLget.html") ("CHRHEX(" "ans_apdl/Hlp_P_APDLget.html") ("STRFILL(" "ans_apdl/Hlp_P_APDLget.html") ("STRCOMP(" "ans_apdl/Hlp_P_APDLget.html") ("STRPOS(" "ans_apdl/Hlp_P_APDLget.html") ("STRLENG(" "ans_apdl/Hlp_P_APDLget.html") ("UPCASE(" "ans_apdl/Hlp_P_APDLget.html") ("LWCASE(" "ans_apdl/Hlp_P_APDLget.html") ("JOIN(" "ans_apdl/Hlp_P_APDLget.html") ("SPLIT(" "ans_apdl/Hlp_P_APDLget.html")) +"Ansys help index alist.") + +(defconst apdl-completions +'("SOLID5" "LINK11" "PLANE13" "COMBIN14" "MASS21" "PLANE25" "MATRIX27" "FLUID29" "FLUID30" "LINK31" "LINK33" "LINK34" "PLANE35" "SOURC36" "COMBIN37" "FLUID38" "COMBIN39" "COMBIN40" "INFIN47" "MATRIX50" "PLANE55" "SHELL61" "LINK68" "SOLID70" "MASS71" "PLANE75" "PLANE77" "PLANE78" "PLANE83" "SOLID87" "SOLID90" "CIRCU94" "SOLID96" "SOLID98" "INFIN110" "INFIN111" "FLUID116" "PLANE121" "SOLID122" "SOLID123" "CIRCU124" "CIRCU125" "TRANS126" "FLUID129" "FLUID130" "SHELL131" "SHELL132" "FLUID136" "FLUID138" "FLUID139" "ROM144" "SURF151" "SURF152" "SURF153" "SURF154" "SURF155" "SURF156" "SHELL157" "SURF159" "TARGE169" "TARGE170" "CONTA172" "CONTA174" "CONTA175" "CONTA177" "CONTA178" "PRETS179" "LINK180" "SHELL181" "PLANE182" "PLANE183" "MPC184" "SOLID185" "SOLID186" "SOLID187" "BEAM188" "BEAM189" "SOLSH190" "INTER192" "INTER193" "INTER194" "INTER195" "MESH200" "FOLLW201" "INTER202" "INTER203" "INTER204" "INTER205" "SHELL208" "SHELL209" "CPT212" "CPT213" "COMBI214" "CPT215" "CPT216" "CPT217" "FLUID218" "FLUID220" "FLUID221" "PLANE222" "PLANE223" "SOLID226" "SOLID227" "PLANE230" "SOLID231" "SOLID232" "PLANE233" "SOLID236" "SOLID237" "PLANE238" "SOLID239" "SOLID240" "HSFLD241" "HSFLD242" "COMBI250" "SURF251" "SURF252" "INFIN257" "REINF263" "REINF264" "REINF265" "SOLID272" "SOLID273" "SOLID278" "SOLID279" "CABLE280" "SHELL281" "SOLID285" "PIPE288" "PIPE289" "ELBOW290" "SOLID291" "PLANE292" "PLANE293" "USER300" "BEAM3" "BEAM4" "BEAM23" "BEAM24" "BEAM44" "BEAM54" "CONTAC12" "CONTAC52" "CONTA171" "CONTA173" "CONTA176" "COMBIN7" "FLUID79" "FLUID80" "FLUID81" "FLUID141" "FLUID142" "INFIN9" "INFIN47" "PIPE16" "PIPE18" "PLANE13" "PLANE25" "PLANE42" "PLANE53" "PLANE67" "PLANE82" "PLANE83" "PLANE145" "PLANE146" "CONTAC12" "CONTAC52" "LINK1" "LINK8" "LINK10" "LINK32" "PIPE16" "PIPE17" "PIPE18" "PIPE20" "PIPE59" "PIPE60" "SHELL41" "SHELL43" "SHELL57" "SHELL63" "SHELL91" "SHELL93" "SHELL99" "SHELL150" "SOLID5" "SOLID45" "SOLID46" "SOLID65" "SOLID69" "SOLID92" "SOLID95" "SOLID117" "SOLID127" "SOLID128" "SOLID147" "SOLID148" "SOLID191" "VISCO88" "VISCO89" "VISCO106" "VISCO107" "VISCO108" "TRANS109" "NSEL()" "ESEL()" "KSEL()" "LSEL()" "ASEL()" "VSEL()" "NDNEXT()" "ELNEXT()" "KPNEXT()" "LSNEXT()" "ARNEXT()" "VLNEXT()" "CENTRX()" "CENTRY()" "CENTRZ()" "NX()" "NY()" "NZ()" "KX()" "KY()" "KZ()" "LX()" "LY()" "LZ()" "LSX()" "LSY()" "LSZ()" "NODE()" "KP()" "DISTND()" "DISTKP()" "DISTEN()" "ANGLEN()" "ANGLEK()" "NNEAR()" "KNEAR()" "ENEARN()" "AREAND()" "AREAKP()" "ARNODE()" "NORMNX()" "NORMNY()" "NORMNZ()" "NORMKX()" "NORMKY()" "NORMKZ()" "ENEXTN()" "NELEM()" "NODEDOF()" "ELADJ()" "NDFACE()" "NMFACE()" "ARFACE()" "UX()" "UY()" "UZ()" "ROTX()" "ROTY()" "ROTZ()" "TEMP()" "PRES()" "VX()" "VY()" "VZ()" "ENKE()" "ENDS()" "VOLT()" "MAG()" "AX()" "AY()" "AZ()" "VIRTINQR()" "KWGET()" "VALCHR()" "VALHEX()" "CHRHEX()" "STRFILL()" "STRCOMP()" "STRPOS()" "STRLENG()" "UPCASE()" "LWCASE()" "JOIN()" "SPLIT()" "ABS()" "SIGN()" "CXABS()" "EXP()" "LOG()" "LOG10()" "SQRT()" "NINT()" "MOD()" "RAND()" "GDIS()" "SIN()" "COS()" "TAN()" "SINH()" "COSH()" "TANH()" "ASIN()" "ACOS()" "ATAN()" "ATAN2()" "~CAT5IN" "~CATIAIN" "~PARAIN" "~PROEIN" "~SATIN" "~UGIN" "A" "*ABBR" "AADD" "*AFUN" "*ASK" "AATT" "*AXPY" "ABBRES" "ABBSAV" "ABEXTRACT" "ABS" "ACCAT" "ACCOPTION" "ACEL" "ACLEAR" "ADAMS" "ADD" "ADDAM" "ADELE" "ADGL" "ADRAG" "AEROCOEFF" "AESIZE" "AFILLT" "AFLIST" "AFSURF" "AGEN" "AGLUE" "AINA" "AINP" "AINV" "AL" "ALIST" "ALLSEL" "ALPHAD" "AMAP" "AMBEAM" "AMBUILD" "AMENV" "AMESH" "AMMAT" "AMPOWDER" "AMSUPPORTS" "AMSTEP" "AMTYPE" "/AN3D" "ANCNTR" "ANCUT" "ANCYC" "ANDATA" "ANDSCL" "ANDYNA" "/ANFILE" "ANFLOW" "/ANGLE" "ANHARM" "ANIM" "ANISOS" "ANMODE" "/ANNOT" "ANORM" "ANPRES" "ANSOL" "ANSTOAQWA" "ANSTOASAS" "ANTIME" "ANTYPE" "/ANUM" "AOFFST" "AOVLAP" "APLOT" "APORT" "APPEND" "APTN" "ARCLEN" "ARCTRM" "AREAS" "AREFINE" "AREMESH" "AREVERSE" "AROTAT" "ARSCALE" "ARSYM" "ASBA" "ASBL" "ASBV" "ASBW" "ASCRES" "ASEL" "ASIFILE" "ASKIN" "ASLL" "ASLV" "ASOL" "/ASSIGN" "ASUB" "ASUM" "ATAN" "ATRAN" "ATYPE" "/AUTO" "AUTOTS" "/AUX2" "/AUX3" "/AUX12" "/AUX15" "AVPRIN" "AVRES" "AWAVE" "/AXLAB" "/BATCH" "BCSOPTION" "BETAD" "BF" "BFA" "BFADELE" "BFALIST" "BFCUM" "BFDELE" "BFE" "BFECUM" "BFEDELE" "BFELIST" "BFESCAL" "BFINT" "BFK" "BFKDELE" "BFKLIST" "BFL" "BFLDELE" "BFLIST" "BFLLIST" "BFSCALE" "BFTRAN" "BFUNIF" "BFV" "BFVDELE" "BFVLIST" "BIOOPT" "BIOT" "BLC4" "BLC5" "BLOCK" "BOOL" "BOPTN" "BSAX" "BSMD" "BSM1" "BSM2" "BSPLIN" "BSS1" "BSS2" "BSTE" "BSTQ" "BTOL" "BUCOPT" "C" "CALC" "CAMPBELL" "CBDOF" "CBMD" "CBMX" "CBTE" "CBTMP" "CDOPT" "CDREAD" "CDWRITE" "CE" "CECHECK" "CECMOD" "CECYC" "CEDELE" "CEINTF" "CELIST" "CENTER" "CEQN" "CERIG" "CESGEN" "CFACT" "*CFCLOS" "*CFOPEN" "*CFWRITE" "/CFORMAT" "CGLOC" "CGOMGA" "CGROW" "CHECK" "CHKMSH" "CINT" "CIRCLE" "CISOL" "/CLABEL" "/CLEAR" "CLOCAL" "CLOG" "/CLOG" "CLRMSHLN" "CM" "CMACEL" "/CMAP" "CMATRIX" "CMDELE" "CMDOMEGA" "CMEDIT" "CMGRP" "CMLIST" "CMMOD" "CMOMEGA" "CMPLOT" "CMROTATE" "CMSEL" "CMSFILE" "CMSOPT" "CMWRITE" "CNCHECK" "CNKMOD" "CNTR" "CNVTOL" "/COLOR" "/COM" "*COMP" "COMBINE" "COMPRESS" "CON4" "CONE" "/CONFIG" "CONJUG" "/CONTOUR" "/COPY" "CORIOLIS" "COUPLE" "COVAL" "CP" "CPCYC" "CPDELE" "CPINTF" "/CPLANE" "CPLGEN" "CPLIST" "CPMERGE" "CPNGEN" "CPSGEN" "CQC" "*CREATE" "CS" "CSCIR" "CSDELE" "CSKP" "CSLIST" "CSWPLA" "CSYS" "/CTYPE" "CURR2D" "CUTCONTROL" "/CVAL" "CVAR" "/CWD" "CYCCALC" "/CYCEXPAND" "CYCFILES" "CYCFREQ" "*CYCLE" "CYCLIC" "CYCOPT" "CYCPHASE" "CYCSPEC" "CYL4" "CYL5" "CYLIND" "CZDEL" "CZMESH" "D" "DA" "DADELE" "DALIST" "DAMORPH" "DATA" "DATADEF" "DCGOMG" "DCUM" "DCVSWP" "DDASPEC" "DDELE" "DDOPTION" "DEACT" "DEFINE" "*DEL" "DELETE" "/DELETE" "DELTIM" "DEMORPH" "DERIV" "DESIZE" "DESOL" "DETAB" "/DEVICE" "/DFLAB" "DFLX" "DFSWAVE" "DIG" "DIGIT" "*DIM" "/DIRECTORY" "DISPLAY" "/DIST" "DJ" "DJDELE" "DJLIST" "DK" "DKDELE" "DKLIST" "DL" "DLDELE" "DLIST" "DLLIST" "*DMAT" "DMOVE" "DMPEXT" "DMPOPTION" "DMPRAT" "DMPSTR" "DNSOL" "*DO" "DOF" "DOFSEL" "DOMEGA" "*DOT" "*DOWHILE" "DSCALE" "/DSCALE" "DSET" "DSPOPTION" "DSUM" "DSURF" "DSYM" "DSYS" "DTRAN" "DUMP" "/DV3D" "DVAL" "DVMORPH" "DYNOPT" "E" "EALIVE" "ECPCHG" "EDELE" "/EDGE" "EEXTRUDE" "/EFACET" "EGEN" "EGID" "*EIGEN" "EINFIN" "EINTF" "EKILL" "ELBOW" "ELEM" "ELIST" "*ELSE" "*ELSEIF" "EMAGERR" "EMATWRITE" "EMF" "EMFT" "EMID" "EMIS" "EMODIF" "EMORE" "EMSEL" "EMSYM" "EMTGEN" "EMUNIT" "EN" "*END" "*ENDDO" "*ENDIF" "ENDRELEASE" "ENERSOL" "ENGEN" "ENORM" "ENSYM" "/EOF" "EORIENT" "EPLOT" "EQSLV" "ERASE" "/ERASE" "EREAD" "EREFINE" "EREINF" "ERESX" "ERNORM" "ERRANG" "ESCHECK" "ESEL" "/ESHAPE" "ESIZE" "ESLA" "ESLL" "ESLN" "ESLV" "ESOL" "ESORT" "ESSOLV" "ESTIF" "ESURF" "ESYM" "ESYS" "ET" "ETABLE" "ETCHG" "ETCONTROL" "ETDELE" "ETLIST" "ETYPE" "EUSORT" "EWRITE" "EXBOPT" "*EXIT" "/EXIT" "EXOPTION" "EXP" "EXPAND" "/EXPAND" "EXPASS" "*EXPORT" "EXPROFILE" "EXPSOL" "EXTOPT" "EXTREM" "EXUNIT" "F" "/FACET" "FC" "FCCHECK" "FCDELE" "FCLIST" "/FCOMP" "FCUM" "FCTYP" "FDELE" "/FDELE" "FEBODY" "FECONS" "FEFOR" "FESURF" "*FFT" "FILE" "FILEAUX2" "FILEAUX3" "FILL" "FILLDATA" "/FILNAME" "FINISH" "FITEM" "FJ" "FJDELE" "FJLIST" "FK" "FKDELE" "FKLIST" "FLIST" "FLST" "FLUXV" "FLUREAD" "/FOCUS" "FORCE" "FORM" "/FORMAT" "*FREE" "FREQ" "FRQSCL" "FSCALE" "FSSECT" "FSSPARM" "FSUM" "FTRAN" "FTYPE" "FVMESH" "GAP" "GAPF" "GAUGE" "GCDEF" "GCGEN" "/GCMD" "/GCOLUMN" "GENOPT" "GEOM" "GEOMETRY" "*GET" "/GFILE" "/GFORMAT" "/GLINE" "/GMARKER" "GMATRIX" "GMFACE" "*GO" "/GO" "/GOLIST" "/GOPR" "GP" "GPDELE" "GPLIST" "GPLOT" "/GRAPHICS" "/GRESUME" "/GRID" "/GROPT" "GRP" "/GRTYP" "/GSAVE" "GSBDATA" "GSGDATA" "GSLIST" "GSSOL" "/GST" "GSUM" "/GTHK" "/GTYPE" "HARFRQ" "/HBC" "HBMAT" "/HEADER" "HELP" "HEMIOPT" "HFANG" "HFSYM" "HPTCREATE" "HPTDELETE" "HRCPLX" "HREXP" "HROPT" "HROCEAN" "HROUT" "IC" "ICDELE" "ICLIST" "/ICLWID" "ICROTATE" "/ICSCALE" "*IF" "IGESIN" "IGESOUT" "/IMAGE" "IMAGIN" "IMESH" "IMMED" "INISTATE" "*INIT" "/INPUT" "/INQUIRE" "INRES" "INRTIA" "INT1" "INVOPT" "IOPTN" "IRLF" "IRLIST" "*ITENGINE" "JPEG" "JSOL" "K" "KATT" "KBC" "KBETW" "KCENTER" "KCLEAR" "KDELE" "KDIST" "KEEP" "KESIZE" "KEYOPT" "KEYPTS" "KEYW" "KFILL" "KGEN" "KL" "KLIST" "KMESH" "KMODIF" "KMOVE" "KNODE" "KPLOT" "KPSCALE" "KREFINE" "KSCALE" "KSCON" "KSEL" "KSLL" "KSLN" "KSUM" "KSYMM" "KTRAN" "KUSE" "KWPAVE" "KWPLAN" "L" "L2ANG" "L2TAN" "LANBOPTION" "LANG" "LARC" "/LARC" "LAREA" "LARGE" "LATT" "LAYER" "LAYERP26" "LAYLIST" "LAYPLOT" "LCABS" "LCASE" "LCCALC" "LCCAT" "LCDEF" "LCFACT" "LCFILE" "LCLEAR" "LCOMB" "LCOPER" "LCSEL" "LCSL" "LCSUM" "LCWRITE" "LCZERO" "LDELE" "LDIV" "LDRAG" "LDREAD" "LESIZE" "LEXTND" "LFILLT" "LFSURF" "LGEN" "LGLUE" "LGWRITE" "/LIGHT" "LINA" "LINE" "/LINE" "LINES" "LINL" "LINP" "LINV" "LIST" "*LIST" "LLIST" "LMESH" "LNSRCH" "LOCAL" "LOVLAP" "LPLOT" "LPTN" "LREFINE" "LREVERSE" "LROTAT" "LSBA" "*LSBAC" "LSBL" "LSBV" "LSBW" "LSCLEAR" "LSDELE" "*LSDUMP" "LSEL" "*LSENGINE" "*LSFACTOR" "LSLA" "LSLK" "LSOPER" "/LSPEC" "LSREAD" "*LSRESTORE" "LSSCALE" "LSSOLVE" "LSTR" "LSUM" "LSWRITE" "/LSYMBOL" "LSYMM" "LTAN" "LTRAN" "LUMPM" "LVSCALE" "LWPLAN" "M" "MACOPT" "MAGOPT" "MAGSOLV" "MAP" "/MAP" "MAP2DTO3D" "MAPSOLVE" "MAPVAR" "MASCALE" "MASTER" "MAT" "MATER" "MCHECK" "MDAMP" "MDELE" "MDPLOT" "MEMM" "/MENU" "*MERGE" "MESHING" "*MFOURI" "*MFUN" "MGEN" "MIDTOL" "/MKDIR" "MLIST" "MMASS" "MMF" "MODCONT" "MODDIR" "MODE" "MODIFY" "MODMSH" "MODSELOPTION" "MODOPT" "MONITOR" "*MOPER" "MOPT" "MORPH" "MOVE" "MP" "MPAMOD" "MPCHG" "MPCOPY" "MPDATA" "MPDELE" "MPDRES" "/MPLIB" "MPLIST" "MPPLOT" "MPREAD" "MPRINT" "MPTEMP" "MPTGEN" "MPTRES" "MPWRITE" "/MREP" "MRPM" "MSAVE" "*MSG" "MSHAPE" "MSHCOPY" "MSHKEY" "MSHMID" "MSHPATTERN" "MSOLVE" "/MSTART" "MSTOLE" "*MULT" "*MWRITE" "MXPAND" "N" "NANG" "NAXIS" "NCNV" "NDELE" "NDIST" "NDSURF" "NEQIT" "/NERR" "NFORCE" "NGEN" "NKPT" "NLADAPTIVE" "NLDIAG" "NLDPOST" "NLGEOM" "NLHIST" "NLIST" "NLMESH" "NLOG" "NLOPT" "NMODIF" "NODES" "/NOERASE" "/NOLIST" "NOOFFSET" "/NOPR" "NORA" "NORL" "/NORMAL" "NPLOT" "NPRINT" "NREAD" "NREFINE" "NRLSUM" "*NRM" "NROPT" "NROTAT" "NRRANG" "NSCALE" "NSEL" "NSLA" "NSLE" "NSLK" "NSLL" "NSLV" "NSMOOTH" "NSOL" "NSORT" "NSTORE" "NSUBST" "NSVR" "NSYM" "/NUMBER" "NUMCMP" "NUMEXP" "NUMMRG" "NUMOFF" "NUMSTR" "NUMVAR" "NUSORT" "NWPAVE" "NWPLAN" "NWRITE" "OCDATA" "OCDELETE" "OCLIST" "OCREAD" "OCTABLE" "OCTYPE" "OCZONE" "OMEGA" "OPERATE" "OPNCONTROL" "OUTAERO" "OUTGEOM" "OUTOPT" "OUTPR" "/OUTPUT" "OUTRES" "OVCHECK" "PADELE" "/PAGE" "PAGET" "PAPUT" "PARESU" "PARRES" "PARSAV" "PASAVE" "PATH" "PAUSE" "/PBC" "/PBF" "PCALC" "PCGOPT" "PCIRC" "/PCIRCLE" "PCROSS" "PDEF" "PDOT" "PERBC2D" "PERTURB" "PFACT" "PHYSICS" "PIVCHECK" "PLAS" "PLCAMP" "PLCFREQ" "PLCHIST" "PLCINT" "PLCKSURF" "PLCPLX" "PLDISP" "PLESOL" "PLETAB" "PLFAR" "PLF2D" "PLGEOM" "PLLS" "PLMAP" "PLMC" "PLNEAR" "PLNSOL" "/PLOPTS" "PLORB" "PLOTTING" "PLPAGM" "PLPATH" "PLSECT" "PLTIME" "PLTRAC" "PLVAR" "PLVECT" "PLZZ" "/PMACRO" "PMAP" "PMGTRAN" "PMLOPT" "PMLSIZE" "/PMORE" "PNGR" "/PNUM" "POINT" "POLY" "/POLYGON" "/POST1" "/POST26" "POWERH" "PPATH" "PRANGE" "PRAS" "PRCAMP" "PRCINT" "PRCPLX" "PRED" "PRENERGY" "/PREP7" "PRERR" "PRESOL" "PRETAB" "PRFAR" "PRI2" "PRIM" "PRINT" "*PRINT" "PRISM" "PRITER" "PRJSOL" "PRMC" "PRNEAR" "PRNLD" "PRNSOL" "PROD" "PRORB" "PRPATH" "PRRFOR" "PRRSOL" "PRSCONTROL" "PRSECT" "PRTIME" "PRVAR" "PRVECT" "PSCONTROL" "PSDCOM" "PSDFRQ" "PSDGRAPH" "PSDRES" "PSDSPL" "PSDUNIT" "PSDVAL" "PSDWAV" "/PSEARCH" "PSEL" "/PSF" "PSMAT" "PSMESH" "/PSPEC" "/PSTATUS" "PSTRES" "/PSYMB" "PSYS" "PTR" "PTXY" "PVECT" "/PWEDGE" "QDVAL" "QRDOPT" "QSOPT" "QUAD" "/QUIT" "QUOT" "R" "RACE" "RADOPT" "RAPPND" "RATE" "/RATIO" "RBE3" "RCON" "RCYC" "RDEC" "RDELE" "READ" "REAL" "REALVAR" "RECTNG" "REMESH" "*REMOVE" "*RENAME" "/RENAME" "*REPEAT" "/REPLOT" "RESCOMBINE" "RESCONTROL" "RESET" "/RESET" "RESP" "RESUME" "RESVEC" "RESWRITE" "*RETURN" "REZONE" "RFORCE" "/RGB" "RIGID" "RIGRESP" "RLIST" "RMALIST" "RMANL" "RMASTER" "RMCAP" "RMCLIST" "/RMDIR" "RMFLVEC" "RMLVSCALE" "RMMLIST" "RMMRANGE" "RMMSELECT" "RMNDISP" "RMNEVEC" "RMODIF" "RMORE" "RMPORDER" "RMRESUME" "RMRGENERATE" "RMROPTIONS" "RMRPLOT" "RMRSTATUS" "RMSAVE" "RMSMPLE" "RMUSE" "RMXPORT" "ROCK" "ROSE" "RPOLY" "RPR4" "RPRISM" "RPSD" "RSMESH" "RSOPT" "RSPLIT" "RSTMAC" "RSTOFF" "RSURF" "RSYMM" "RSYS" "SABS" "SADD" "SALLOW" "SAVE" "SBCLIST" "SBCTRAN" "*SCAL" "SCOPT" "SDELETE" "SE" "SECCONTROL" "SECDATA" "SECFUNCTION" "SECJOINT" "/SECLIB" "SECLOCK" "SECMODIF" "SECNUM" "SECOFFSET" "SECPLOT" "SECREAD" "SECSTOP" "SECTYPE" "SECWRITE" "SED" "SEDLIST" "SEEXP" "/SEG" "SELIST" "SELM" "SELTOL" "SEMIIMPLICIT" "SENERGY" "SEOPT" "SESYMM" "*SET" "SET" "SETFGAP" "SETRAN" "SEXP" "SF" "SFA" "SFACT" "SFADELE" "SFALIST" "SFBEAM" "SFCALC" "SFCONTROL" "SFCUM" "SFDELE" "SFE" "SFEDELE" "SFELIST" "SFFUN" "SFGRAD" "SFL" "SFLDELE" "SFLEX" "SFLIST" "SFLLIST" "SFSCALE" "SFTRAN" "/SHADE" "SHELL" "/SHOW" "SHPP" "SHSD" "/SHRINK" "SLIST" "SLOAD" "SMALL" "*SMAT" "SMAX" "/SMBC" "SMBODY" "SMCONS" "SMFOR" "SMIN" "SMOOTH" "SMRTSIZE" "SMSURF" "SMULT" "SNOPTION" "SOLU" "/SOLU" "SOLUOPT" "SOLVE" "*SORT" "SORT" "SOURCE" "SPACE" "SPCNOD" "SPCTEMP" "SPDAMP" "SPEC" "SPFREQ" "SPGRAPH" "SPH4" "SPH5" "SPHERE" "SPLINE" "SPLOT" "SPMWRITE" "SPOINT" "SPOPT" "SPREAD" "SPTOPT" "SPUNIT" "SPVAL" "SQRT" "*SREAD" "SRSS" "SSBT" "/SSCALE" "SSLN" "SSMT" "SSOPT" "SSPA" "SSPB" "SSPD" "SSPE" "SSPM" "SSUM" "SSTATE" "STABILIZE" "STAT" "*STATUS" "/STATUS" "STEF" "/STITLE" "STORE" "SUBOPT" "SUBSET" "SUCALC" "SUCR" "SUDEL" "SUEVAL" "SUGET" "SUMAP" "SUMTYPE" "SUPL" "SUPR" "SURESU" "SUSAVE" "SUSEL" "SUVECT" "SV" "SVPLOT" "SVTYP" "SWADD" "SWDEL" "SWGEN" "SWLIST" "SYNCHRO" "/SYP" "/SYS" "TALLOW" "TARGET" "*TAXIS" "TB" "TBCOPY" "TBDATA" "TBDELE" "TBEO" "TBIN" "TBFIELD" "TBFT" "TBLE" "TBLIST" "TBMODIF" "TBPLOT" "TBPT" "TBTEMP" "TCHG" "/TEE" "THEXPAND" "THOPT" "TIFF" "TIME" "TIMERANGE" "TIMINT" "TIMP" "TINTP" "/TITLE" "/TLABEL" "TOFFST" "*TOPER" "TORUS" "TRANSFER" "*TREAD" "TREF" "/TRIAD" "/TRLCY" "TRNOPT" "TRPDEL" "TRPLIS" "TRPOIN" "TRTIME" "TSHAP" "/TSPEC" "TSRES" "TUNIF" "TVAR" "/TXTRE" "/TYPE" "TYPE" "/UCMD" "/UDOC" "/UI" "UIMP" "/UIS" "*ULIB" "UNDELETE" "UNDO" "/UNITS" "UNPAUSE" "UPCOORD" "UPGEOM" "*USE" "/USER" "USRCAL" "USRDOF" "USRELEM" "V" "V2DOPT" "VA" "*VABS" "VADD" "VARDEL" "VARNAM" "VATT" "VCLEAR" "*VCOL" "/VCONE" "VCROSS" "*VCUM" "VDDAM" "VDELE" "VDGL" "VDOT" "VDRAG" "*VEC" "*VEDIT" "VEORIENT" "VEXT" "*VFACT" "*VFILL" "VFOPT" "VFQUERY" "VFSM" "*VFUN" "VGEN" "*VGET" "VGET" "VGLUE" "/VIEW" "VIMP" "VINP" "VINV" "*VITRP" "*VLEN" "VLIST" "VLSCALE" "*VMASK" "VMESH" "VOFFST" "VOLUMES" "*VOPER" "VOVLAP" "*VPLOT" "VPLOT" "VPTN" "*VPUT" "VPUT" "*VREAD" "VROTAT" "VSBA" "VSBV" "VSBW" "/VSCALE" "*VSCFUN" "VSEL" "VSLA" "*VSTAT" "VSUM" "VSWEEP" "VSYMM" "VTRAN" "VTYPE" "/VUP" "*VWRITE" "/WAIT" "/WINDOW" "WPAVE" "WPCSYS" "WPLANE" "WPOFFS" "WPROTA" "WPSTYL" "WRFULL" "WRITE" "WRITEMAP" "*WRK" "WSPRINGS" "WTBCREATE" "XFCRKMESH" "XFDATA" "XFENRICH" "XFLIST" "/XFRM" "*XPL" "/XRANGE" "XVAR" "/YRANGE" "/ZOOM" "/WB" "XMLO" "/XML" "CNTR" "EBLOCK" "CMBLOCK" "NBLOCK" "/TRACK" "CWZPLOT" "~EUI" "NELE" "EALL" "NALL" "FLITEM" "LSLN" "PSOLVE" "ASLN" "/VERIFY" "/SSS" "~CFIN" "*EVAL" "*MOONEY" "/RUNSTAT" "ALPFILL" "ARCOLLAPSE" "ARDETACH" "ARFILL" "ARMERGE" "ARSPLIT" "CEWRITE" "FIPLOT" "GAPFINISH" "GAPLIST" "GAPMERGE" "GAPOPT" "GAPPLOT" "LNCOLLAPSE" "LNDETACH" "LNFILL" "LNMERGE" "LNSPLIT" "PCONV" "PLCONV" "PEMOPTS" "PEXCLUDE" "PINCLUDE" "PMETH" "/PMETH" "PMOPTS" "PPLOT" "PPRANGE" "PRCONV" "PRECISION" "RALL" "RFILSZ" "RITER" "RMEMRY" "RSPEED" "RSTAT" "RTIMST" "/RUNST" "RWFRNT" "SARPLOT" "SHSD" "SLPPLOT" "SLSPLOT" "VCVFILL" "/OPT" "OPEQN" "OPFACT" "OPFRST" "OPGRAD" "OPKEEP" "OPLOOP" "OPPRNT" "OPRAND" "OPSUBP" "OPSWEEP" "OPTYPE" "OPUSER" "OPVAR" "OPADD" "OPCLR" "OPDEL" "OPMAKE" "OPSEL" "OPANL" "OPDATA" "OPRESU" "OPSAVE" "OPEXE" "OPLFA" "OPLGR" "OPLIST" "OPLSW" "OPRFA" "OPRGR" "OPRSW" "PILECALC" "PILEDISPSET" "PILEGEN" "PILELOAD" "PILEMASS" "PILERUN" "PILESEL" "PILESTIF" "PLVAROPT" "PRVAROPT" "TOCOMP" "TODEF" "TOFREQ" "TOTYPE" "TOVAR" "TOEXE" "TOLOOP" "TOGRAPH" "TOLIST" "TOPLOT" "TOPRINT" "TOSTAT" "TZAMESH" "TZDELE" "TZEGEN" "XVAROPT" "PGSAVE" "SOLCONTROL" "TOTAL" "VTGEOM" "VTREAL" "VTSTAT" "PGRAPH" "/VT" "VTIN" "VTRFIL" "VTTEMP" "PGRSET" "VTCLR" "VTMETH" "VTRSLT" "VTVMOD" "PGSELE" "VTDISC" "VTMP" "VTSEC" "PGWRITE" "VTEVAL" "VTOP" "VTSFE" "POUTRES" "VTFREQ" "VTPOST" "VTSL" "FLDATA1-40" "HFPCSWP" "MSDATA" "MSVARY" "QFACT" "FLOCHECK" "HFPOWER" "MSMASS" "PERI" "SPADP" "FLREAD" "HFPORT" "MSMETH" "PLFSS" "SPARM" "FLOTRAN" "HFSCAT" "MSMIR" "PLSCH" "SPFSS" "HFADP" "ICE" "MSNOMF" "PLSYZ" "SPICE" "HFARRAY" "ICEDELE" "MSPROP" "PLTD" "SPSCAN" "HFDEEM" "ICELIST" "MSQUAD" "PLTLINE" "SPSWP" "HFEIGOPT" "ICVFRC" "MSRELAX" "PLVFRC" "HFEREFINE" "LPRT" "MSSOLU" "/PICE" "HFMODPRT" "MSADV" "MSSPEC" "PLWAVE" "HFPA" "MSCAP" "MSTERM" "PRSYZ" "FMAGSUM") +"APDL symbols for completion in APDL-Mode. +By default APDL keywords, get-functions, parametric-function and elements +- deprecated as well - are completed.") + +(defconst apdl-parametric-function-regexp +"\\(?:A\\(?:BS\\|COS\\|SIN\\|TAN2?\\)\\|C\\(?:OSH?\\|XABS\\)\\|EXP\\|GDIS\\|LOG\\(?:10\\)?\\|MOD\\|NINT\\|RAND\\|S\\(?:I\\(?:GN\\|NH?\\)\\|QRT\\)\\|TANH?\\)" +"APDL parametric function regexp.") + +(defconst apdl-get-function-regexp +"\\(?:A\\(?:NGLE[KN]\\|R\\(?:EA\\(?:KP\\|ND\\)\\|FACE\\|N\\(?:EXT\\|ODE\\)\\)\\|SEL\\|[XYZ]\\)\\|C\\(?:ENTR[XYZ]\\|HRHEX\\)\\|DIST\\(?:EN\\|KP\\|ND\\)\\|E\\(?:L\\(?:ADJ\\|NEXT\\)\\|N\\(?:DS\\|E\\(?:\\(?:AR\\|XT\\)N\\)\\|KE\\)\\|SEL\\)\\|JOIN\\|K\\(?:NEAR\\|PNEXT\\|SEL\\|WGET\\|[PXYZ]\\)\\|L\\(?:S\\(?:EL\\|NEXT\\|[XYZ]\\)\\|WCASE\\|[XYZ]\\)\\|MAG\\|N\\(?:D\\(?:FACE\\|NEXT\\)\\|ELEM\\|MFACE\\|NEAR\\|O\\(?:DE\\(?:DOF\\)?\\|RM\\(?:K[XYZ]\\|N[XYZ]\\)\\)\\|SEL\\|[XYZ]\\)\\|PRES\\|ROT[XYZ]\\|S\\(?:PLIT\\|TR\\(?:COMP\\|FILL\\|LENG\\|POS\\)\\)\\|TEMP\\|U\\(?:PCASE\\|[XYZ]\\)\\|V\\(?:AL\\(?:CHR\\|HEX\\)\\|IRTINQR\\|LNEXT\\|OLT\\|SEL\\|[XYZ]\\)\\)" +"APDL get function regexp.") + +(defconst apdl-deprecated-element-alist '(("BEAM3" +. "BEAM188") ("BEAM4" . "BEAM188") ("BEAM23" +. "BEAM188") ("BEAM24" . "BEAM188") ("BEAM44" +. "BEAM188") ("BEAM54" . "BEAM188") ("CONTAC12" +. "CONTA178") ("CONTAC52" . "CONTA178") ("CONTA171" +. "CONTA172") ("CONTA173" . "CONTA174") ("CONTA176" +. "CONTA177") ("COMBIN7" . "MPC184") ("FLUID79" +. "Fluid29") ("FLUID80" . "Fluid29") ("FLUID81" +. "Fluid29") ("FLUID141" . "CFX") ("FLUID142" . "CFX") ("INFIN9" +. "INFIN110") ("INFIN47" . "INFIN111") ("PIPE16" +. "PIPE288") ("PIPE18" . "ELBOW290") ("PLANE13" +. "PLANE223") ("PLANE25" . "PLANE272") ("PLANE42" +. "PLANE182") ("PLANE53" . "PLANE233") ("PLANE67" +. "PLANE223") ("PLANE82" . "PLANE183") ("PLANE83" +. "SOLID273") ("PLANE145" . "-") ("PLANE146" . "-") ("CONTAC12" +. "CONTA178") ("CONTAC52" . "CONTA178") ("LINK1" +. "LINK180") ("LINK8" . "LINK180") ("LINK10" +. "LINK180") ("LINK32" . "LINK33") ("PIPE16" +. "PIPE288") ("PIPE17" . "PIPE288") ("PIPE18" +. "ELBOW290") ("PIPE20" . "PIPE288") ("PIPE59" +. "PIPE288") ("PIPE60" . "ELBOW290") ("SHELL41" +. "SHELL181") ("SHELL43" . "SHELL181") ("SHELL57" +. "SHELL131") ("SHELL63" . "SHELL181") ("SHELL91" +. "SHELL281") ("SHELL93" . "SHELL281") ("SHELL99" +. "SHELL281") ("SHELL150" . "-") ("SOLID5" +. "SOLID226") ("SOLID45" . "SOLID185") ("SOLID46" +. "SOLID185") ("SOLID65" . "SOLID185") ("SOLID69" +. "SOLID226") ("SOLID92" . "SOLID187") ("SOLID95" +. "SOLID186") ("SOLID117" . "SOLID236") ("SOLID127" +. "-") ("SOLID128" . "-") ("SOLID147" . "-") ("SOLID148" +. "-") ("SOLID191" . "SOLID186") ("VISCO88" +. "PLANE183") ("VISCO89" . "SOLID186") ("VISCO106" +. "PLANE182") ("VISCO107" . "SOLID185") ("VISCO108" +. "PLANE183") ("TRANS109" . "PLANE223")) +"Association list for APDL deprecated elements. +Together with their proposed replacements.") + +(defconst apdl-deprecated-element-regexp +"\\<\\(BEAM\\(?:2[34]\\|[45]4\\|[34]\\)\\|CO\\(?:MBIN7\\|NTA\\(?:17[136]\\|C\\(?:[15]2\\)\\)\\)\\|FLUID\\(?:14[12]\\|79\\|8[01]\\)\\|INFIN\\(?:47\\|9\\)\\|LINK\\(?:10\\|32\\|[18]\\)\\|P\\(?:IPE\\(?:1[678]\\|20\\|59\\|60\\)\\|LANE\\(?:1\\(?:3\\|4[56]\\)\\|25\\|42\\|53\\|67\\|8[23]\\)\\)\\|S\\(?:HELL\\(?:150\\|4[13]\\|57\\|63\\|9[139]\\)\\|OLID\\(?:1\\(?:17\\|2[78]\\|4[78]\\|91\\)\\|4[56]\\|5\\|6[59]\\|9[25]\\)\\)\\|TRANS109\\|VISCO\\(?:10[678]\\|8[89]\\)\\)\\>" +"APDL deprecated elements regexp.") + +(defconst apdl-element-regexp +"\\<\\(BEAM18[89]\\|C\\(?:ABLE280\\|IRCU\\(?:12[45]\\|94\\)\\|O\\(?:MBI\\(?:2\\(?:14\\|50\\)\\|N\\(?:14\\|3[79]\\|40\\)\\)\\|NTA17[24578]\\)\\|PT21[23567]\\)\\|ELBOW290\\|F\\(?:LUID\\(?:1\\(?:16\\|29\\|3[0689]\\)\\|2\\(?:18\\|2[01]\\|9\\)\\|3[08]\\)\\|OLLW201\\)\\|HSFLD24[12]\\|IN\\(?:FIN\\(?:11[01]\\|\\(?:25\\|4\\)7\\)\\|TER\\(?:19[2-5]\\|20[2-5]\\)\\)\\|LINK\\(?:1\\(?:1\\|80\\)\\|3[134]\\|68\\)\\|M\\(?:A\\(?:SS\\(?:[27]1\\)\\|TRIX\\(?:27\\|50\\)\\)\\|ESH200\\|PC184\\)\\|P\\(?:IPE28[89]\\|LANE\\(?:1\\(?:21\\|3\\|8[23]\\)\\|2\\(?:2[23]\\|3[038]\\|5\\|9[23]\\)\\|35\\|55\\|7[578]\\|83\\)\\|RETS179\\)\\|R\\(?:EINF26[345]\\|OM144\\)\\|S\\(?:HELL\\(?:1\\(?:3[12]\\|57\\|81\\)\\|2\\(?:0[89]\\|81\\)\\|61\\)\\|O\\(?:L\\(?:ID\\(?:1\\(?:2[23]\\|8[567]\\)\\|2\\(?:2[67]\\|3[12679]\\|40\\|7[2389]\\|85\\|91\\)\\|5\\|70\\|87\\|9[068]\\)\\|SH190\\)\\|URC36\\)\\|URF\\(?:15[1-69]\\|25[12]\\)\\)\\|T\\(?:ARGE1\\(?:69\\|70\\)\\|RANS126\\)\\|USER300\\)\\>" +"APDL elements regexp.") + +(defconst apdl-command-regexp-2a +"\\(?:\\*\\(?:DO\\|E\\(?:LSEIF\\|ND\\(?:DO\\|IF\\)?\\)\\|GO\\|IF\\)\\|/\\(?:GO\\|P\\(?:OST\\(?:1\\|26\\)\\|REP7\\)\\|UI\\)\\|A\\(?:BS\\|DD\\|L\\)\\|BF[AEKLV]?\\|C\\(?:QC\\|[EMPS]\\)\\|D\\(?:IG\\|OF\\|[AJKL]\\)\\|E\\(?:MF\\|XP\\|[NT]\\)\\|F[CJK]\\|G\\(?:[AR]?P\\)\\|IC\\|K\\(?:BC\\|L\\)\\|M\\(?:A[PT]\\|MF\\|P\\)\\|PTR\\|S\\(?:E[DT]\\|F[AEL]\\|[EFV]\\)\\|TB\\|VA\\|[AC-FK-NRV]\\)" +"APDL keyword name regexp 2a.") + +(defconst apdl-command-regexp-2b +"\\(?:\\*\\(?:M\\(?:ER\\(?:GE?\\)?\\|F\\(?:OU\\(?:RI?\\)?\\|UN\\|[OU]\\)\\|OP\\(?:ER?\\)?\\|SG\\|ULT?\\|WR\\(?:I\\(?:TE?\\)?\\)?\\)\\|NRM\\|PRI\\(?:NT?\\)?\\|RE\\(?:MO\\(?:VE?\\)?\\|NA\\(?:ME?\\)?\\|PE\\(?:AT?\\)?\\|TU\\(?:RN?\\)?\\|[MNPT]\\)\\|S\\(?:CAL?\\|ET\\|MAT?\\|ORT?\\|RE\\(?:AD?\\)?\\|TA\\(?:T\\(?:US?\\)?\\)?\\)\\|T\\(?:AX\\(?:IS?\\)?\\|OP\\(?:ER?\\)?\\|RE\\(?:AD?\\)?\\)\\|U\\(?:LIB?\\|SE\\)\\|V\\(?:ABS?\\|C\\(?:OL\\|UM\\|[OU]\\)\\|E\\(?:DIT?\\|[CD]\\)\\|F\\(?:ACT?\\|ILL?\\|UN\\|[AIU]\\)\\|GET?\\|IT\\(?:RP?\\)?\\|LEN?\\|MA\\(?:SK?\\)?\\|OP\\(?:ER?\\)?\\|P\\(?:LOT?\\|UT\\|[LU]\\)\\|RE\\(?:AD?\\)?\\|S\\(?:CF\\(?:UN?\\)?\\|TAT?\\|[CT]\\)\\|WR\\(?:I\\(?:TE?\\)?\\)?\\)\\|WRK\\|XPL\\)\\|/\\(?:M\\(?:ENU?\\|KD\\(?:IR?\\)?\\|PL\\(?:IB?\\)?\\|REP?\\|ST\\(?:A\\(?:RT?\\)?\\)?\\)\\|N\\(?:ERR?\\|O\\(?:ER\\(?:A\\(?:SE?\\)?\\)?\\|LI\\(?:ST?\\)?\\|PR\\|RM\\(?:AL?\\)?\\|[ELPR]\\)\\|UM\\(?:B\\(?:ER?\\)?\\)?\\)\\|OUT\\(?:P\\(?:UT?\\)?\\)?\\|P\\(?:AGE?\\|B[CF]\\|CI\\(?:R\\(?:C\\(?:LE?\\)?\\)?\\)?\\|LO\\(?:P\\(?:TS?\\)?\\)?\\|M\\(?:AC\\(?:RO?\\)?\\|ORE?\\|[AO]\\)\\|NUM?\\|OL\\(?:Y\\(?:G\\(?:ON?\\)?\\)?\\)?\\|S\\(?:EA\\(?:R\\(?:CH?\\)?\\)?\\|PEC?\\|TA\\(?:T\\(?:US?\\)?\\)?\\|YMB?\\|[EFPTY]\\)\\|WE\\(?:D\\(?:GE?\\)?\\)?\\)\\|QUIT?\\|R\\(?:AT\\(?:IO?\\)?\\|E\\(?:NA\\(?:ME?\\)?\\|PL\\(?:OT?\\)?\\|SET?\\|[NPS]\\)\\|GB\\|MD\\(?:IR?\\)?\\)\\|S\\(?:E\\(?:CL\\(?:IB?\\)?\\|[CG]\\)\\|H\\(?:ADE?\\|OW\\|RI\\(?:NK?\\)?\\|[AOR]\\)\\|MBC?\\|OLU?\\|SC\\(?:A\\(?:LE?\\)?\\)?\\|T\\(?:AT\\(?:US?\\)?\\|IT\\(?:LE?\\)?\\|[AI]\\)\\|Y[PS]\\)\\|T\\(?:EE\\|IT\\(?:LE?\\)?\\|LA\\(?:B\\(?:EL?\\)?\\)?\\|R\\(?:IAD?\\|LCY?\\|[IL]\\)\\|SP\\(?:EC?\\)?\\|XT\\(?:RE?\\)?\\|YPE?\\)\\|U\\(?:CMD?\\|DOC?\\|IS\\|NI\\(?:TS?\\)?\\|SER?\\)\\|V\\(?:CO\\(?:NE?\\)?\\|IEW?\\|SC\\(?:A\\(?:LE?\\)?\\)?\\|UP\\)\\|W\\(?:AIT?\\|IN\\(?:D\\(?:OW?\\)?\\)?\\)\\|X\\(?:FRM?\\|RA\\(?:N\\(?:GE?\\)?\\)?\\)\\|YRA\\(?:N\\(?:GE?\\)?\\)?\\|ZOOM?\\)\\|M\\(?:D\\(?:AMP?\\|ELE?\\|PL\\(?:OT?\\)?\\)\\|E\\(?:MM\\|SH\\(?:I\\(?:NG?\\)?\\)?\\)\\|GEN\\|IDT\\(?:OL?\\)?\\|LIST?\\|MASS?\\|O\\(?:D\\(?:CO\\(?:NT?\\)?\\|DIR?\\|IFY?\\|MSH?\\|OPT?\\|SE\\(?:L\\(?:O\\(?:P\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\)?\\)?\\)?\\|[CDEIMOS]\\)\\|NI\\(?:T\\(?:OR?\\)?\\)?\\|PT\\|RPH?\\|VE\\)\\|P\\(?:AM\\(?:OD?\\)?\\|C\\(?:HG\\|OPY?\\|[HO]\\)\\|D\\(?:ATA?\\|ELE?\\|RES?\\|[AER]\\)\\|LI\\(?:ST?\\)?\\|PL\\(?:OT?\\)?\\|R\\(?:EAD?\\|INT?\\|[EI]\\)\\|T\\(?:EMP?\\|GEN?\\|RES?\\|[EGR]\\)\\|WR\\(?:I\\(?:TE?\\)?\\)?\\)\\|RPM\\|S\\(?:AVE?\\|H\\(?:APE?\\|CO\\(?:PY?\\)?\\|KEY?\\|MID?\\|PA\\(?:T\\(?:T\\(?:E\\(?:RN?\\)?\\)?\\)?\\)?\\|[ACKMP]\\)\\|OL\\(?:VE?\\)?\\|TO\\(?:LE?\\)?\\)\\|XPA\\(?:ND?\\)?\\)\\|N\\(?:A\\(?:NG\\|XIS?\\)\\|CNV\\|D\\(?:ELE?\\|IST?\\|SU\\(?:RF?\\)?\\)\\|EQIT?\\|FOR\\(?:CE?\\)?\\|GEN\\|KPT\\|L\\(?:AD\\(?:A\\(?:P\\(?:T\\(?:I\\(?:VE?\\)?\\)?\\)?\\)?\\)?\\|D\\(?:IAG?\\|PO\\(?:ST?\\)?\\|[IP]\\)\\|GE\\(?:OM?\\)?\\|HI\\(?:ST?\\)?\\|IST?\\|ME\\(?:SH?\\)?\\|O\\(?:PT\\|[GP]\\)\\)\\|MOD\\(?:IF?\\)?\\|O\\(?:DES?\\|OF\\(?:F\\(?:S\\(?:ET?\\)?\\)?\\)?\\|R[AL]\\)\\|P\\(?:LOT?\\|RI\\(?:NT?\\)?\\)\\|R\\(?:E\\(?:AD\\|FI\\(?:NE?\\)?\\|[AF]\\)\\|LS\\(?:UM?\\)?\\|O\\(?:PT\\|TAT?\\|[PT]\\)\\|RA\\(?:NG?\\)?\\)\\|S\\(?:CA\\(?:LE?\\)?\\|EL\\|L[AEKLV]\\|MO\\(?:O\\(?:TH?\\)?\\)?\\|O\\(?:RT\\|[LR]\\)\\|TO\\(?:RE?\\)?\\|UB\\(?:ST?\\)?\\|VR\\|YM\\)\\|U\\(?:M\\(?:CMP?\\|EXP?\\|MRG?\\|OFF?\\|STR?\\|VAR?\\|[CEMOSV]\\)\\|SO\\(?:RT?\\)?\\)\\|W\\(?:P\\(?:AVE?\\|LAN?\\|[AL]\\)\\|RI\\(?:TE?\\)?\\)\\)\\|O\\(?:C\\(?:D\\(?:ATA?\\|EL\\(?:E\\(?:TE?\\)?\\)?\\|[AE]\\)\\|LI\\(?:ST?\\)?\\|RE\\(?:AD?\\)?\\|T\\(?:AB\\(?:LE?\\)?\\|YPE?\\|[AY]\\)\\|ZO\\(?:NE?\\)?\\)\\|MEGA?\\|P\\(?:ER\\(?:A\\(?:TE?\\)?\\)?\\|NC\\(?:O\\(?:N\\(?:T\\(?:R\\(?:OL?\\)?\\)?\\)?\\)?\\)?\\)\\|UT\\(?:AE\\(?:RO?\\)?\\|GE\\(?:OM?\\)?\\|OPT?\\|PR\\|RES?\\|[AGOPR]\\)\\|VCH\\(?:E\\(?:CK?\\)?\\)?\\)\\|P\\(?:A\\(?:DE\\(?:LE?\\)?\\|GET?\\|PUT?\\|R\\(?:ESU?\\|RES?\\|SAV?\\|[ERS]\\)\\|SA\\(?:VE?\\)?\\|TH\\|USE?\\)\\|C\\(?:ALC?\\|GO\\(?:PT?\\)?\\|IRC?\\|RO\\(?:SS?\\)?\\)\\|D\\(?:EF\\|OT\\)\\|ER\\(?:BC\\(?:2D?\\)?\\|TU\\(?:RB?\\)?\\|[BT]\\)\\|FACT?\\|HYS\\(?:I\\(?:CS?\\)?\\)?\\|IVC\\(?:H\\(?:E\\(?:CK?\\)?\\)?\\)?\\|L\\(?:AS\\|C\\(?:AMP?\\|FR\\(?:EQ?\\)?\\|HI\\(?:ST?\\)?\\|INT?\\|KS\\(?:U\\(?:RF?\\)?\\)?\\|PLX?\\|[AFHIKP]\\)\\|DI\\(?:SP?\\)?\\|E\\(?:SOL?\\|TAB?\\|[ST]\\)\\|F\\(?:2D\\|AR\\|[2A]\\)\\|GE\\(?:OM?\\)?\\|LS\\|M\\(?:AP\\|[AC]\\)\\|N\\(?:EAR?\\|SOL?\\|[ES]\\)\\|O\\(?:RB\\|TT\\(?:I\\(?:NG?\\)?\\)?\\|[RT]\\)\\|PA\\(?:GM\\|TH\\|[GT]\\)\\|SE\\(?:CT?\\)?\\|T\\(?:IME?\\|RAC?\\|[IR]\\)\\|V\\(?:AR\\|ECT?\\|[AE]\\)\\|ZZ\\)\\|M\\(?:AP\\|GT\\(?:R\\(?:AN?\\)?\\)?\\|L\\(?:OPT?\\|SI\\(?:ZE?\\)?\\|[OS]\\)\\)\\|NGR\\|O\\(?:INT?\\|LY\\|WE\\(?:RH?\\)?\\)\\|PATH?\\|R\\(?:A\\(?:NGE?\\|[NS]\\)\\|C\\(?:AMP?\\|INT?\\|PLX?\\|[AIP]\\)\\|E\\(?:NE\\(?:R\\(?:GY?\\)?\\)?\\|RR\\|SOL?\\|TAB?\\|[DNRST]\\)\\|FAR?\\|I\\(?:NT\\|SM\\|TER?\\|[2MNST]\\)\\|JS\\(?:OL?\\)?\\|MC\\|N\\(?:EAR?\\|LD\\|SOL?\\|[ELS]\\)\\|O\\(?:RB\\|[DR]\\)\\|PA\\(?:TH?\\)?\\|R\\(?:FOR?\\|SOL?\\|[FS]\\)\\|S\\(?:CO\\(?:N\\(?:T\\(?:R\\(?:OL?\\)?\\)?\\)?\\)?\\|ECT?\\|[CE]\\)\\|TI\\(?:ME?\\)?\\|V\\(?:AR\\|ECT?\\|[AE]\\)\\)\\|S\\(?:CO\\(?:N\\(?:T\\(?:R\\(?:OL?\\)?\\)?\\)?\\)?\\|D\\(?:COM?\\|FRQ?\\|GR\\(?:A\\(?:PH?\\)?\\)?\\|RES?\\|SPL?\\|UN\\(?:IT?\\)?\\|VAL?\\|WAV?\\|[CFGRSUVW]\\)\\|EL\\|M\\(?:AT\\|ESH?\\|[AE]\\)\\|TR\\(?:ES?\\)?\\|YS\\)\\|TXY\\|VECT?\\)\\|Q\\(?:DVAL?\\|RDO\\(?:PT?\\)?\\|SOPT?\\|U\\(?:AD\\|OT\\)\\)\\|R\\(?:A\\(?:CE\\|DO\\(?:PT?\\)?\\|PP\\(?:ND?\\)?\\|TE\\)\\|BE3\\|C\\(?:ON\\|YC\\)\\|DE\\(?:LE\\|[CL]\\)\\|E\\(?:A\\(?:LV\\(?:AR?\\)?\\|[DL]\\)\\|CT\\(?:NG?\\)?\\|ME\\(?:SH?\\)?\\|S\\(?:CO\\(?:MB\\(?:I\\(?:NE?\\)?\\)?\\|NT\\(?:R\\(?:OL?\\)?\\)?\\|[MN]\\)\\|ET\\|UME?\\|VEC?\\|WR\\(?:I\\(?:TE?\\)?\\)?\\|[EPUVW]\\)\\|ZO\\(?:NE?\\)?\\)\\|FOR\\(?:CE?\\)?\\|IG\\(?:ID\\|RE\\(?:SP?\\)?\\|[IR]\\)\\|LIST?\\|M\\(?:A\\(?:LI\\(?:ST?\\)?\\|NL\\|ST\\(?:ER?\\)?\\|[LNS]\\)\\|C\\(?:AP\\|LI\\(?:ST?\\)?\\|[AL]\\)\\|FL\\(?:V\\(?:EC?\\)?\\)?\\|LV\\(?:S\\(?:C\\(?:A\\(?:LE?\\)?\\)?\\)?\\)?\\|M\\(?:LI\\(?:ST?\\)?\\|RA\\(?:N\\(?:GE?\\)?\\)?\\|SE\\(?:L\\(?:E\\(?:CT?\\)?\\)?\\)?\\|[LRS]\\)\\|N\\(?:DI\\(?:SP?\\)?\\|EV\\(?:EC?\\)?\\|[DE]\\)\\|O\\(?:DIF?\\|RE\\|[DR]\\)\\|PO\\(?:R\\(?:D\\(?:ER?\\)?\\)?\\)?\\|R\\(?:ES\\(?:U\\(?:ME?\\)?\\)?\\|GE\\(?:N\\(?:E\\(?:R\\(?:A\\(?:TE?\\)?\\)?\\)?\\)?\\)?\\|OP\\(?:T\\(?:I\\(?:O\\(?:NS?\\)?\\)?\\)?\\)?\\|PL\\(?:OT?\\)?\\|ST\\(?:A\\(?:T\\(?:US?\\)?\\)?\\)?\\|[EGOPS]\\)\\|S\\(?:AVE?\\|MP\\(?:LE?\\)?\\|[AM]\\)\\|USE?\\|XP\\(?:O\\(?:RT?\\)?\\)?\\)\\|O\\(?:CK\\|SE\\)\\|P\\(?:OLY?\\|R\\(?:ISM?\\|[4I]\\)\\|SD\\)\\|S\\(?:ME\\(?:SH?\\)?\\|OPT?\\|PL\\(?:IT?\\)?\\|T\\(?:MAC?\\|OFF?\\|[MO]\\)\\|URF?\\|Y\\(?:MM\\|[MS]\\)\\)\\)\\|S\\(?:A\\(?:BS\\|DD\\|LL\\(?:OW?\\)?\\|VE\\)\\|BC\\(?:LI\\(?:ST?\\)?\\|TR\\(?:AN?\\)?\\|[LT]\\)\\|COPT?\\|DEL\\(?:E\\(?:TE?\\)?\\)?\\|E\\(?:C\\(?:CO\\(?:N\\(?:T\\(?:R\\(?:OL?\\)?\\)?\\)?\\)?\\|DA\\(?:TA?\\)?\\|FU\\(?:N\\(?:C\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\)?\\)?\\|JO\\(?:I\\(?:NT?\\)?\\)?\\|LO\\(?:CK?\\)?\\|MO\\(?:D\\(?:IF?\\)?\\)?\\|NUM?\\|OF\\(?:F\\(?:S\\(?:ET?\\)?\\)?\\)?\\|PL\\(?:OT?\\)?\\|RE\\(?:AD?\\)?\\|ST\\(?:OP?\\)?\\|TY\\(?:PE?\\)?\\|WR\\(?:I\\(?:TE?\\)?\\)?\\|[CDFJL-PRSTW]\\)\\|DL\\(?:I\\(?:ST?\\)?\\)?\\|EXP?\\|L\\(?:IST?\\|TOL?\\|[IMT]\\)\\|MI\\(?:I\\(?:M\\(?:P\\(?:L\\(?:I\\(?:C\\(?:IT?\\)?\\)?\\)?\\)?\\)?\\)?\\)?\\|NE\\(?:R\\(?:GY?\\)?\\)?\\|OPT?\\|SY\\(?:MM?\\)?\\|T\\(?:FG\\(?:AP?\\)?\\|RAN?\\|[FR]\\)\\|XP\\)\\|F\\(?:A\\(?:CT\\|DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|[CDL]\\)\\|BE\\(?:AM?\\)?\\|C\\(?:ALC?\\|ON\\(?:T\\(?:R\\(?:OL?\\)?\\)?\\)?\\|UM\\|[AOU]\\)\\|DE\\(?:LE?\\)?\\|E\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|[DL]\\)\\|FUN?\\|GR\\(?:AD?\\)?\\|L\\(?:DE\\(?:LE?\\)?\\|EX\\|IST?\\|LI\\(?:ST?\\)?\\|[DEIL]\\)\\|SC\\(?:A\\(?:LE?\\)?\\)?\\|TR\\(?:AN?\\)?\\)\\|H\\(?:ELL?\\|PP\\|SD\\)\\|L\\(?:IST?\\|OAD?\\)\\|M\\(?:A\\(?:LL\\|[LX]\\)\\|BO\\(?:DY?\\)?\\|CO\\(?:NS?\\)?\\|FOR?\\|IN\\|OO\\(?:TH?\\)?\\|RT\\(?:S\\(?:I\\(?:ZE?\\)?\\)?\\)?\\|SU\\(?:RF?\\)?\\|ULT?\\)\\|NOP\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\|O\\(?:L\\(?:UO\\(?:PT?\\)?\\|VE\\|[UV]\\)\\|RT\\|UR\\(?:CE?\\)?\\)\\|P\\(?:ACE?\\|C\\(?:NOD?\\|TE\\(?:MP?\\)?\\|[NT]\\)\\|DA\\(?:MP?\\)?\\|EC\\|FR\\(?:EQ?\\)?\\|GR\\(?:A\\(?:PH?\\)?\\)?\\|H\\(?:ERE?\\|[45E]\\)\\|L\\(?:INE?\\|OT\\|[IO]\\)\\|MW\\(?:R\\(?:I\\(?:TE?\\)?\\)?\\)?\\|O\\(?:INT?\\|PT\\|[IP]\\)\\|RE\\(?:AD?\\)?\\|TO\\(?:PT?\\)?\\|UN\\(?:IT?\\)?\\|VAL?\\)\\|QRT\\|RSS\\|S\\(?:BT\\|LN\\|MT\\|OPT?\\|P[ABDEM]\\|TA\\(?:TE?\\)?\\|UM\\)\\|T\\(?:A\\(?:BI\\(?:L\\(?:I\\(?:ZE?\\)?\\)?\\)?\\|[BT]\\)\\|EF\\|ORE?\\)\\|U\\(?:B\\(?:OPT?\\|SET?\\|[OS]\\)\\|C\\(?:ALC?\\|[AR]\\)\\|DEL?\\|EV\\(?:AL?\\)?\\|GET?\\|M\\(?:AP\\|TY\\(?:PE?\\)?\\|[AT]\\)\\|P[LR]\\|RE\\(?:SU?\\)?\\|S\\(?:AVE?\\|EL\\|[AE]\\)\\|VE\\(?:CT?\\)?\\)\\|V\\(?:PL\\(?:OT?\\)?\\|TYP?\\)\\|W\\(?:ADD?\\|DEL?\\|GEN?\\|LI\\(?:ST?\\)?\\)\\|YNC\\(?:H\\(?:RO?\\)?\\)?\\)\\|T\\(?:A\\(?:LL\\(?:OW?\\)?\\|RG\\(?:ET?\\)?\\)\\|B\\(?:CO\\(?:PY?\\)?\\|D\\(?:ATA?\\|ELE?\\|[AE]\\)\\|EO\\|F\\(?:IE\\(?:LD?\\)?\\|[IT]\\)\\|IN\\|L\\(?:IST?\\|[EI]\\)\\|MO\\(?:D\\(?:IF?\\)?\\)?\\|P\\(?:LOT?\\|[LT]\\)\\|TE\\(?:MP?\\)?\\)\\|CHG\\|H\\(?:EX\\(?:P\\(?:A\\(?:ND?\\)?\\)?\\)?\\|OPT?\\)\\|I\\(?:FF\\|M\\(?:ER\\(?:A\\(?:N\\(?:GE?\\)?\\)?\\)?\\|INT?\\|[EIP]\\)\\|NTP?\\)\\|O\\(?:FF\\(?:ST?\\)?\\|RUS?\\)\\|R\\(?:AN\\(?:S\\(?:F\\(?:ER?\\)?\\)?\\)?\\|EF\\|NO\\(?:PT?\\)?\\|P\\(?:DEL?\\|LIS?\\|OIN?\\|[DLO]\\)\\|TI\\(?:ME?\\)?\\)\\|S\\(?:HAP?\\|RES?\\)\\|UNIF?\\|VAR\\|YPE\\)\\|U\\(?:IMP\\|N\\(?:D\\(?:EL\\(?:E\\(?:TE?\\)?\\)?\\|[EO]\\)\\|PA\\(?:U\\(?:SE?\\)?\\)?\\)\\|P\\(?:CO\\(?:O\\(?:RD?\\)?\\)?\\|GE\\(?:OM?\\)?\\)\\|SR\\(?:CAL?\\|DOF?\\|EL\\(?:EM?\\)?\\|[CDE]\\)\\)\\|V\\(?:2DO\\(?:PT?\\)?\\|A\\(?:DD\\|R\\(?:DEL?\\|NAM?\\|[DN]\\)\\|TT\\)\\|C\\(?:LE\\(?:AR?\\)?\\|RO\\(?:SS?\\)?\\)\\|D\\(?:DAM?\\|ELE?\\|GL\\|OT\\|RAG?\\)\\|E\\(?:OR\\(?:I\\(?:E\\(?:NT?\\)?\\)?\\)?\\|XT\\)\\|F\\(?:OPT?\\|QU\\(?:E\\(?:RY?\\)?\\)?\\|SM\\)\\|G\\(?:E[NT]\\|LUE?\\)\\|I\\(?:MP\\|N[PV]\\)\\|L\\(?:IST?\\|SC\\(?:A\\(?:LE?\\)?\\)?\\)\\|MESH?\\|O\\(?:FF\\(?:ST?\\)?\\|LU\\(?:M\\(?:ES?\\)?\\)?\\|VL\\(?:AP?\\)?\\)\\|P\\(?:LOT?\\|TN\\|UT\\)\\|ROT\\(?:AT?\\)?\\|S\\(?:B[AVW]\\|EL\\|LA\\|UM\\|WE\\(?:EP?\\)?\\|YMM?\\)\\|T\\(?:RAN?\\|YPE?\\)\\)\\|W\\(?:P\\(?:AVE?\\|CS\\(?:YS?\\)?\\|LA\\(?:NE?\\)?\\|OF\\(?:FS?\\)?\\|RO\\(?:TA?\\)?\\|ST\\(?:YL?\\)?\\)\\|R\\(?:FU\\(?:LL?\\)?\\|ITE\\(?:M\\(?:AP?\\)?\\)?\\)\\|SPR\\(?:I\\(?:N\\(?:GS?\\)?\\)?\\)?\\|TBC\\(?:R\\(?:E\\(?:A\\(?:TE?\\)?\\)?\\)?\\)?\\)\\|X\\(?:F\\(?:CR\\(?:K\\(?:M\\(?:E\\(?:SH?\\)?\\)?\\)?\\)?\\|DA\\(?:TA?\\)?\\|EN\\(?:R\\(?:I\\(?:CH?\\)?\\)?\\)?\\|LI\\(?:ST?\\)?\\)\\|VAR\\)\\)" +"APDL keyword name regexp 2b.") + +(defconst apdl-command-regexp-2c +"\\(?:\\*\\(?:A\\(?:BBR?\\|FUN?\\|SK\\|XPY?\\)\\|C\\(?:F\\(?:CL\\(?:OS?\\)?\\|OP\\(?:EN?\\)?\\|WR\\(?:I\\(?:TE?\\)?\\)?\\|[COW]\\)\\|OMP?\\|RE\\(?:A\\(?:TE?\\)?\\)?\\|YC\\(?:LE?\\)?\\)\\|D\\(?:EL\\|IM\\|MAT?\\|O\\(?:WH\\(?:I\\(?:LE?\\)?\\)?\\|[TW]\\)\\)\\|E\\(?:IG\\(?:EN?\\)?\\|LSE\\|X\\(?:IT\\|PO\\(?:RT?\\)?\\|[IP]\\)\\)\\|F\\(?:FT\\|REE?\\)\\|GET\\|I\\(?:NIT?\\|TE\\(?:N\\(?:G\\(?:I\\(?:NE?\\)?\\)?\\)?\\)?\\)\\|L\\(?:IST?\\|S\\(?:BAC?\\|DU\\(?:MP?\\)?\\|EN\\(?:G\\(?:I\\(?:NE?\\)?\\)?\\)?\\|FA\\(?:C\\(?:T\\(?:OR?\\)?\\)?\\)?\\|RE\\(?:S\\(?:T\\(?:O\\(?:RE?\\)?\\)?\\)?\\)?\\|[BDEFR]\\)\\)\\)\\|/\\(?:A\\(?:N\\(?:3D\\|FI\\(?:LE?\\)?\\|GLE?\\|NOT?\\|UM\\|[3FGNU]\\)\\|SS\\(?:I\\(?:GN?\\)?\\)?\\|U\\(?:TO?\\|X\\(?:1[25]\\|[23]\\)\\)\\|XL\\(?:AB?\\)?\\)\\|BAT\\(?:CH?\\)?\\|C\\(?:FO\\(?:R\\(?:M\\(?:AT?\\)?\\)?\\)?\\|L\\(?:AB\\(?:EL?\\)?\\|EAR?\\|OG\\|[AEO]\\)\\|MAP?\\|O\\(?:LOR?\\|N\\(?:FIG?\\|TO\\(?:UR?\\)?\\|[FT]\\)\\|PY\\|[LMP]\\)\\|PL\\(?:A\\(?:NE?\\)?\\)?\\|TY\\(?:PE?\\)?\\|VAL?\\|WD\\|YC\\(?:E\\(?:X\\(?:P\\(?:A\\(?:ND?\\)?\\)?\\)?\\)?\\)?\\)\\|D\\(?:E\\(?:LE\\(?:TE?\\)?\\|VI\\(?:CE?\\)?\\|[LV]\\)\\|FL\\(?:AB?\\)?\\|I\\(?:RE\\(?:C\\(?:T\\(?:O\\(?:RY?\\)?\\)?\\)?\\)?\\|ST\\|[RS]\\)\\|SC\\(?:A\\(?:LE?\\)?\\)?\\|V3D?\\)\\|E\\(?:DGE?\\|FA\\(?:C\\(?:ET?\\)?\\)?\\|OF\\|RA\\(?:SE?\\)?\\|SH\\(?:A\\(?:PE?\\)?\\)?\\|X\\(?:IT\\|PA\\(?:ND?\\)?\\|[IP]\\)\\)\\|F\\(?:AC\\(?:ET?\\)?\\|CO\\(?:MP?\\)?\\|DE\\(?:LE?\\)?\\|IL\\(?:N\\(?:A\\(?:ME?\\)?\\)?\\)?\\|O\\(?:CUS?\\|RM\\(?:AT?\\)?\\|[CR]\\)\\)\\|G\\(?:C\\(?:MD\\|OL\\(?:U\\(?:MN?\\)?\\)?\\|[MO]\\)\\|F\\(?:ILE?\\|OR\\(?:M\\(?:AT?\\)?\\)?\\|[IO]\\)\\|LI\\(?:NE?\\)?\\|MA\\(?:R\\(?:K\\(?:ER?\\)?\\)?\\)?\\|O\\(?:LI\\(?:ST?\\)?\\|PR\\|[LP]\\)\\|R\\(?:AP\\(?:H\\(?:I\\(?:CS?\\)?\\)?\\)?\\|ES\\(?:U\\(?:ME?\\)?\\)?\\|ID\\|OPT?\\|TYP?\\|[AEIOT]\\)\\|S\\(?:AVE?\\|[AT]\\)\\|T\\(?:HK\\|YPE?\\|[HY]\\)\\)\\|H\\(?:BC\\|EA\\(?:D\\(?:ER?\\)?\\)?\\)\\|I\\(?:C\\(?:LW\\(?:ID?\\)?\\|SC\\(?:A\\(?:LE?\\)?\\)?\\|[LS]\\)\\|MA\\(?:GE?\\)?\\|N\\(?:PUT?\\|QU\\(?:I\\(?:RE?\\)?\\)?\\|[PQ]\\)\\)\\|L\\(?:ARC?\\|I\\(?:GHT?\\|NE\\|[GN]\\)\\|S\\(?:PEC?\\|YM\\(?:B\\(?:OL?\\)?\\)?\\|[PY]\\)\\)\\|MAP\\)\\|A\\(?:A\\(?:DD\\|TT\\)\\|B\\(?:B\\(?:RES?\\|SAV?\\|[RS]\\)\\|EX\\(?:T\\(?:R\\(?:A\\(?:CT?\\)?\\)?\\)?\\)?\\)\\|C\\(?:C\\(?:AT\\|OP\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\|[AO]\\)\\|EL\\|LE\\(?:AR?\\)?\\)\\|D\\(?:AMS?\\|DAM?\\|ELE?\\|GL\\|RAG?\\)\\|E\\(?:RO\\(?:C\\(?:O\\(?:E\\(?:FF?\\)?\\)?\\)?\\)?\\|SI\\(?:ZE?\\)?\\)\\|F\\(?:IL\\(?:LT?\\)?\\|LI\\(?:ST?\\)?\\|SU\\(?:RF?\\)?\\)\\|G\\(?:EN\\|LUE?\\)\\|IN[APV]\\|L\\(?:IST?\\|LS\\(?:EL?\\)?\\|PH\\(?:AD?\\)?\\)\\|M\\(?:AP\\|B\\(?:EAM?\\|UI\\(?:LD?\\)?\\|[EU]\\)\\|E\\(?:NV\\|SH\\|[NS]\\)\\|MAT?\\|PO\\(?:W\\(?:D\\(?:ER?\\)?\\)?\\)?\\|S\\(?:TEP?\\|UP\\(?:P\\(?:O\\(?:R\\(?:TS?\\)?\\)?\\)?\\)?\\|[TU]\\)\\|TY\\(?:PE?\\)?\\)\\|N\\(?:C\\(?:NTR?\\|UT\\|YC\\|[NUY]\\)\\|D\\(?:ATA?\\|SCL?\\|YNA?\\|[ASY]\\)\\|FL\\(?:OW?\\)?\\|HA\\(?:RM?\\)?\\|I\\(?:SOS?\\|[MS]\\)\\|MO\\(?:DE?\\)?\\|ORM?\\|PR\\(?:ES?\\)?\\|S\\(?:OL?\\|TOA\\(?:QWA?\\|SAS?\\|[QS]\\)\\)\\|T\\(?:IME?\\|YPE?\\|[IY]\\)\\)\\|O\\(?:FF\\(?:ST?\\)?\\|VL\\(?:AP?\\)?\\)\\|P\\(?:LOT?\\|ORT?\\|PE\\(?:ND?\\)?\\|TN\\)\\|R\\(?:C\\(?:LEN?\\|TRM?\\|[LT]\\)\\|E\\(?:AS\\|FI\\(?:NE?\\)?\\|ME\\(?:SH?\\)?\\|VE\\(?:R\\(?:SE?\\)?\\)?\\|[AFMV]\\)\\|OT\\(?:AT?\\)?\\|S\\(?:CA\\(?:LE?\\)?\\|YM\\|[CY]\\)\\)\\|S\\(?:B[ALVW]\\|CR\\(?:ES?\\)?\\|EL\\|IF\\(?:I\\(?:LE?\\)?\\)?\\|KIN?\\|L[LV]\\|OL\\|U[BM]\\)\\|T\\(?:AN\\|RAN?\\|YPE?\\)\\|UTO\\(?:TS?\\)?\\|V\\(?:PR\\(?:IN?\\)?\\|RES?\\)\\|WAVE?\\)\\|B\\(?:CSO\\(?:P\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\)?\\|ETAD?\\|F\\(?:A\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|[DL]\\)\\|CUM?\\|DE\\(?:LE?\\)?\\|E\\(?:CUM?\\|DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|SC\\(?:AL?\\)?\\|[CDLS]\\)\\|INT?\\|K\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|[DL]\\)\\|L\\(?:DE\\(?:LE?\\)?\\|IST?\\|LI\\(?:ST?\\)?\\|[DIL]\\)\\|SC\\(?:A\\(?:LE?\\)?\\)?\\|TR\\(?:AN?\\)?\\|UN\\(?:IF?\\)?\\|V\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|[DL]\\)\\)\\|IO\\(?:OPT?\\|[OT]\\)\\|L\\(?:C[45]\\|OCK?\\)\\|O\\(?:OL\\|PTN?\\)\\|S\\(?:AX\\|M[12D]\\|PL\\(?:IN?\\)?\\|S[12]\\|T[EQ]\\)\\|TOL\\|UCO\\(?:PT?\\)?\\)\\|C\\(?:A\\(?:LC\\|MP\\(?:B\\(?:E\\(?:LL?\\)?\\)?\\)?\\)\\|B\\(?:DOF?\\|M[DX]\\|T\\(?:MP\\|[EM]\\)\\)\\|D\\(?:OPT?\\|RE\\(?:AD?\\)?\\|WR\\(?:I\\(?:TE?\\)?\\)?\\)\\|E\\(?:C\\(?:HE\\(?:CK?\\)?\\|MOD?\\|YC\\|[HMY]\\)\\|DE\\(?:LE?\\)?\\|IN\\(?:TF?\\)?\\|LI\\(?:ST?\\)?\\|NT\\(?:ER?\\)?\\|QN\\|RIG?\\|SG\\(?:EN?\\)?\\)\\|FACT?\\|G\\(?:LOC?\\|OM\\(?:GA?\\)?\\|ROW?\\)\\|H\\(?:ECK?\\|KM\\(?:SH?\\)?\\)\\|I\\(?:NT\\|RC\\(?:LE?\\)?\\|SOL?\\)\\|L\\(?:O\\(?:CAL?\\|[CG]\\)\\|RM\\(?:S\\(?:H\\(?:LN?\\)?\\)?\\)?\\)\\|M\\(?:A\\(?:CEL?\\|TR\\(?:IX?\\)?\\|[CT]\\)\\|D\\(?:ELE?\\|OM\\(?:E\\(?:GA?\\)?\\)?\\|[EO]\\)\\|ED\\(?:IT?\\)?\\|GRP?\\|LI\\(?:ST?\\)?\\|MOD?\\|OM\\(?:E\\(?:GA?\\)?\\)?\\|PL\\(?:OT?\\)?\\|RO\\(?:T\\(?:A\\(?:TE?\\)?\\)?\\)?\\|S\\(?:EL\\|FI\\(?:LE?\\)?\\|OPT?\\|[EFO]\\)\\|WR\\(?:I\\(?:TE?\\)?\\)?\\)\\|N\\(?:CH\\(?:E\\(?:CK?\\)?\\)?\\|KM\\(?:OD?\\)?\\|TR\\|VT\\(?:OL?\\)?\\)\\|O\\(?:M\\(?:BI\\(?:NE?\\)?\\|PR\\(?:E\\(?:SS?\\)?\\)?\\|[BP]\\)\\|N\\(?:JUG?\\|[4EJ]\\)\\|RI\\(?:O\\(?:L\\(?:IS?\\)?\\)?\\)?\\|UP\\(?:LE?\\)?\\|VAL?\\)\\|P\\(?:CYC?\\|DE\\(?:LE?\\)?\\|IN\\(?:TF?\\)?\\|L\\(?:GEN?\\|IST?\\|[GI]\\)\\|ME\\(?:R\\(?:GE?\\)?\\)?\\|NG\\(?:EN?\\)?\\|SG\\(?:EN?\\)?\\)\\|S\\(?:CIR?\\|DE\\(?:LE?\\)?\\|KP\\|LI\\(?:ST?\\)?\\|WP\\(?:LA?\\)?\\|YS\\)\\|U\\(?:RR\\(?:2D?\\)?\\|TC\\(?:O\\(?:N\\(?:T\\(?:R\\(?:OL?\\)?\\)?\\)?\\)?\\)?\\)\\|VAR\\|Y\\(?:C\\(?:CA\\(?:LC?\\)?\\|F\\(?:IL\\(?:ES?\\)?\\|REQ?\\|[IR]\\)\\|LIC?\\|OPT?\\|PH\\(?:A\\(?:SE?\\)?\\)?\\|SP\\(?:EC?\\)?\\|[CLOPS]\\)\\|L\\(?:IND?\\|[45I]\\)\\)\\|Z\\(?:DEL?\\|ME\\(?:SH?\\)?\\)\\)\\|D\\(?:A\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|MO\\(?:R\\(?:PH?\\)?\\)?\\|TA\\(?:D\\(?:EF?\\)?\\)?\\)\\|C\\(?:GO\\(?:MG?\\)?\\|UM\\|VS\\(?:WP?\\)?\\)\\|D\\(?:AS\\(?:P\\(?:EC?\\)?\\)?\\|ELE?\\|OP\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\)\\|E\\(?:ACT?\\|FI\\(?:NE?\\)?\\|L\\(?:ETE?\\|TIM?\\|[ET]\\)\\|MO\\(?:R\\(?:PH?\\)?\\)?\\|RIV?\\|S\\(?:IZE?\\|OL\\|[IO]\\)\\|TAB?\\)\\|F\\(?:LX\\|SW\\(?:A\\(?:VE?\\)?\\)?\\)\\|I\\(?:GIT?\\|SP\\(?:L\\(?:AY?\\)?\\)?\\)\\|J\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\)\\|K\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\)\\|L\\(?:DE\\(?:LE?\\)?\\|IST?\\|LI\\(?:ST?\\)?\\)\\|M\\(?:OVE?\\|P\\(?:EXT?\\|OP\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\|RAT?\\|STR?\\|[EORS]\\)\\)\\|NSOL?\\|O\\(?:FS\\(?:EL?\\)?\\|ME\\(?:GA?\\)?\\)\\|S\\(?:CA\\(?:LE?\\)?\\|ET\\|PO\\(?:P\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\)?\\|U\\(?:RF\\|[MR]\\)\\|Y[MS]\\)\\|TRAN?\\|UMP\\|V\\(?:AL\\|MO\\(?:R\\(?:PH?\\)?\\)?\\)\\|YNO\\(?:PT?\\)?\\)\\|E\\(?:ALI\\(?:VE?\\)?\\|CPC\\(?:HG?\\)?\\|DELE?\\|EXT\\(?:R\\(?:U\\(?:DE?\\)?\\)?\\)?\\|G\\(?:EN\\|ID\\)\\|IN\\(?:FIN?\\|TF\\|[FT]\\)\\|KILL?\\|L\\(?:BOW?\\|EM\\|IST?\\)\\|M\\(?:A\\(?:GE\\(?:RR?\\)?\\|TW\\(?:R\\(?:I\\(?:TE?\\)?\\)?\\)?\\|[GT]\\)\\|FT\\|I[DS]\\|O\\(?:DIF?\\|RE\\|[DR]\\)\\|S\\(?:EL\\|YM\\|[EY]\\)\\|TG\\(?:EN?\\)?\\|UN\\(?:IT?\\)?\\)\\|N\\(?:DR\\(?:E\\(?:L\\(?:E\\(?:A\\(?:SE?\\)?\\)?\\)?\\)?\\)?\\|ER\\(?:S\\(?:OL?\\)?\\)?\\|GEN?\\|ORM?\\|SYM?\\)\\|ORI\\(?:E\\(?:NT?\\)?\\)?\\|PLOT?\\|QSLV?\\|R\\(?:ASE?\\|E\\(?:AD\\|FI\\(?:NE?\\)?\\|INF?\\|SX\\|[AFIS]\\)\\|NO\\(?:RM?\\)?\\|RA\\(?:NG?\\)?\\)\\|S\\(?:CH\\(?:E\\(?:CK?\\)?\\)?\\|EL\\|IZE?\\|L[ALNV]\\|O\\(?:RT\\|[LR]\\)\\|SO\\(?:LV?\\)?\\|TIF?\\|URF?\\|Y[MS]\\)\\|T\\(?:AB\\(?:LE?\\)?\\|C\\(?:HG\\|ON\\(?:T\\(?:R\\(?:OL?\\)?\\)?\\)?\\|[HO]\\)\\|DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|YPE?\\)\\|USO\\(?:RT?\\)?\\|WRI\\(?:TE?\\)?\\|X\\(?:BO\\(?:PT?\\)?\\|OP\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\|P\\(?:A\\(?:ND\\|SS\\|[NS]\\)\\|RO\\(?:F\\(?:I\\(?:LE?\\)?\\)?\\)?\\|SOL?\\|[RS]\\)\\|T\\(?:OPT?\\|REM?\\|[OR]\\)\\|UN\\(?:IT?\\)?\\)\\)\\|F\\(?:C\\(?:CH\\(?:E\\(?:CK?\\)?\\)?\\|DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|TYP?\\|UM\\)\\|DELE?\\|E\\(?:BO\\(?:DY?\\)?\\|CO\\(?:NS?\\)?\\|FOR?\\|SU\\(?:RF?\\)?\\)\\|I\\(?:L\\(?:EAUX[23]\\|LD\\(?:A\\(?:TA?\\)?\\)?\\|[EL]\\)\\|NI\\(?:SH?\\)?\\|TEM?\\)\\|J\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\)\\|K\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\)\\|L\\(?:IST?\\|ST\\|U\\(?:RE\\(?:AD?\\)?\\|XV\\|[RX]\\)\\)\\|OR\\(?:CE\\|[CM]\\)\\|R\\(?:EQ\\|QS\\(?:CL?\\)?\\)\\|S\\(?:CA\\(?:LE?\\)?\\|S\\(?:ECT?\\|PA\\(?:RM?\\)?\\|[EP]\\)\\|UM\\)\\|T\\(?:RAN?\\|YPE?\\)\\|VME\\(?:SH?\\)?\\)\\|G\\(?:A\\(?:PF\\|UGE?\\)\\|C\\(?:DEF?\\|GEN?\\)\\|E\\(?:NO\\(?:PT?\\)?\\|OM\\(?:E\\(?:T\\(?:RY?\\)?\\)?\\)?\\)\\|M\\(?:AT\\(?:R\\(?:IX?\\)?\\)?\\|FA\\(?:CE?\\)?\\)\\|P\\(?:DE\\(?:LE?\\)?\\|L\\(?:IST?\\|OT\\|[IO]\\)\\)\\|S\\(?:BD\\(?:A\\(?:TA?\\)?\\)?\\|GD\\(?:A\\(?:TA?\\)?\\)?\\|LI\\(?:ST?\\)?\\|SOL?\\|UM\\)\\)\\|H\\(?:ARF\\(?:RQ?\\)?\\|BMAT?\\|E\\(?:LP\\|MI\\(?:O\\(?:PT?\\)?\\)?\\)\\|F\\(?:ANG?\\|SYM?\\)\\|PT\\(?:CR\\(?:E\\(?:A\\(?:TE?\\)?\\)?\\)?\\|DE\\(?:L\\(?:E\\(?:TE?\\)?\\)?\\)?\\|[CD]\\)\\|R\\(?:CP\\(?:LX?\\)?\\|EXP?\\|O\\(?:CE\\(?:AN?\\)?\\|[PU]T\\|[CPU]\\)\\)\\)\\|I\\(?:C\\(?:DE\\(?:LE?\\)?\\|LI\\(?:ST?\\)?\\|RO\\(?:T\\(?:A\\(?:TE?\\)?\\)?\\)?\\)\\|GES\\(?:IN\\|OUT?\\|[IO]\\)\\|M\\(?:AG\\(?:IN?\\)?\\|ESH?\\|MED?\\)\\|N\\(?:IS\\(?:T\\(?:A\\(?:TE?\\)?\\)?\\)?\\|R\\(?:ES\\|TIA?\\|[ET]\\)\\|T1\\|VO\\(?:PT?\\)?\\)\\|OPTN?\\|RL\\(?:IST?\\|[FI]\\)\\)\\|J\\(?:PEG\\|SOL\\)\\|K\\(?:ATT\\|BETW?\\|C\\(?:EN\\(?:T\\(?:ER?\\)?\\)?\\|LE\\(?:AR?\\)?\\)\\|D\\(?:ELE?\\|IST?\\)\\|E\\(?:EP\\|SI\\(?:ZE?\\)?\\|Y\\(?:OPT?\\|PTS?\\|[OPW]\\)\\)\\|FILL?\\|GEN\\|LIST?\\|M\\(?:ESH?\\|O\\(?:DIF?\\|VE\\|[DV]\\)\\)\\|NODE?\\|P\\(?:LOT?\\|SC\\(?:A\\(?:LE?\\)?\\)?\\)\\|REF\\(?:I\\(?:NE?\\)?\\)?\\|S\\(?:C\\(?:ALE?\\|ON\\|[AO]\\)\\|EL\\|L[LN]\\|\\(?:YM\\|[UY]\\)M\\)\\|TRAN?\\|USE\\|WP\\(?:AVE?\\|LAN?\\|[AL]\\)\\)\\|L\\(?:2\\(?:ANG?\\|TAN?\\)\\|A\\(?:N\\(?:BO\\(?:P\\(?:T\\(?:I\\(?:ON?\\)?\\)?\\)?\\)?\\|[BG]\\)\\|R\\(?:EA\\|GE\\|[CEG]\\)\\|TT\\|Y\\(?:ER\\(?:P\\(?:26?\\)?\\)?\\|LI\\(?:ST?\\)?\\|PL\\(?:OT?\\)?\\|[LP]\\)\\)\\|C\\(?:A\\(?:BS\\|SE\\|[BS]\\)\\|CA\\(?:LC\\|[LT]\\)\\|DEF?\\|F\\(?:ACT?\\|ILE?\\|[AI]\\)\\|LE\\(?:AR?\\)?\\|O\\(?:MB\\|PER?\\|[MP]\\)\\|S\\(?:EL\\|UM\\|[ELU]\\)\\|WR\\(?:I\\(?:TE?\\)?\\)?\\|ZE\\(?:RO?\\)?\\)\\|D\\(?:ELE?\\|IV\\|R\\(?:AG\\|EAD?\\|[AE]\\)\\)\\|E\\(?:SI\\(?:ZE?\\)?\\|XT\\(?:ND?\\)?\\)\\|F\\(?:IL\\(?:LT?\\)?\\|SU\\(?:RF?\\)?\\)\\|G\\(?:EN\\|LUE?\\|WR\\(?:I\\(?:TE?\\)?\\)?\\)\\|I\\(?:N\\(?:ES\\|[AELPV]\\)\\|ST\\)\\|LIST?\\|MESH?\\|NSR\\(?:CH?\\)?\\|O\\(?:CAL?\\|VL\\(?:AP?\\)?\\)\\|P\\(?:LOT?\\|TN\\)\\|R\\(?:E\\(?:FI\\(?:NE?\\)?\\|VE\\(?:R\\(?:SE?\\)?\\)?\\|[FV]\\)\\|OT\\(?:AT?\\)?\\)\\|S\\(?:B[ALVW]\\|CL\\(?:E\\(?:AR?\\)?\\)?\\|DE\\(?:LE?\\)?\\|EL\\|L[AK]\\|OP\\(?:ER?\\)?\\|RE\\(?:AD?\\)?\\|S\\(?:CA\\(?:LE?\\)?\\|OL\\(?:VE?\\)?\\|[CO]\\)\\|TR\\|UM\\|WR\\(?:I\\(?:TE?\\)?\\)?\\|YMM?\\)\\|T\\(?:AN\\|RAN?\\)\\|UMPM?\\|VSC\\(?:A\\(?:LE?\\)?\\)?\\|WPL\\(?:AN?\\)?\\)\\|M\\(?:A\\(?:CO\\(?:PT?\\)?\\|G\\(?:OPT?\\|SO\\(?:LV?\\)?\\|[OS]\\)\\|P\\(?:2D\\(?:T\\(?:O\\(?:3D?\\)?\\)?\\)?\\|SO\\(?:L\\(?:VE?\\)?\\)?\\|VAR?\\|[2SV]\\)\\|S\\(?:CA\\(?:LE?\\)?\\|TER?\\|[CT]\\)\\|TER?\\)\\|CHE\\(?:CK?\\)?\\)\\|~\\(?:CAT\\(?:5IN?\\|IA\\(?:IN?\\)?\\|[5I]\\)\\|P\\(?:AR\\(?:A\\(?:IN?\\)?\\)?\\|RO\\(?:E\\(?:IN?\\)?\\)?\\)\\|SAT\\(?:IN?\\)?\\|UGIN?\\)\\)" +"APDL keyword name regexp 2c.") + +(defconst apdl-command-regexp-1 +"\\(?:\\*\\(?:A\\(?:BBR\\|FUN\\|SK\\|XPY\\)\\|C\\(?:F\\(?:CLOS\\|OPEN\\|WRITE\\)\\|OMP\\|\\(?:REAT\\|YCL\\)E\\)\\|D\\(?:EL\\|IM\\|MAT\\|O\\(?:T\\|WHILE\\)?\\)\\|E\\(?:IGEN\\|LSE\\(?:IF\\)?\\|ND\\(?:DO\\|IF\\)?\\|X\\(?:\\(?:I\\|POR\\)T\\)\\)\\|F\\(?:FT\\|REE\\)\\|G\\(?:ET\\|O\\)\\|I\\(?:F\\|NIT\\|TENGINE\\)\\|L\\(?:IST\\|S\\(?:BAC\\|DUMP\\|ENGINE\\|FACTOR\\|RESTORE\\)\\)\\|M\\(?:ERGE\\|F\\(?:OURI\\|UN\\)\\|OPER\\|SG\\|ULT\\|WRITE\\)\\|NRM\\|PRINT\\|RE\\(?:MOVE\\|NAME\\|PEAT\\|TURN\\)\\|S\\(?:CAL\\|ET\\|MAT\\|ORT\\|READ\\|TATUS\\)\\|T\\(?:AXIS\\|OPER\\|READ\\)\\|U\\(?:LIB\\|SE\\)\\|V\\(?:ABS\\|C\\(?:OL\\|UM\\)\\|E\\(?:C\\|DIT\\)\\|F\\(?:ACT\\|ILL\\|UN\\)\\|GET\\|ITRP\\|LEN\\|MASK\\|OPER\\|P\\(?:\\(?:LO\\|U\\)T\\)\\|READ\\|S\\(?:CFUN\\|TAT\\)\\|WRITE\\)\\|WRK\\|XPL\\)\\|/\\(?:A\\(?:N\\(?:3D\\|FILE\\|GLE\\|NOT\\|UM\\)\\|SSIGN\\|U\\(?:TO\\|X\\(?:1[25]\\|[23]\\)\\)\\|XLAB\\)\\|BATCH\\|C\\(?:FORMAT\\|L\\(?:ABEL\\|EAR\\|OG\\)\\|MAP\\|O\\(?:LOR\\|M\\|N\\(?:FIG\\|TOUR\\)\\|PY\\)\\|PLANE\\|TYPE\\|VAL\\|\\(?:W\\|YCEXPAN\\)D\\)\\|D\\(?:E\\(?:\\(?:LET\\|VIC\\)E\\)\\|FLAB\\|I\\(?:RECTORY\\|ST\\)\\|SCALE\\|V3D\\)\\|E\\(?:DGE\\|FACET\\|OF\\|RASE\\|SHAPE\\|X\\(?:IT\\|PAND\\)\\)\\|F\\(?:ACET\\|COMP\\|DELE\\|ILNAME\\|O\\(?:CUS\\|RMAT\\)\\)\\|G\\(?:C\\(?:MD\\|OLUMN\\)\\|F\\(?:ILE\\|ORMAT\\)\\|LINE\\|MARKER\\|O\\(?:LIST\\|PR\\)?\\|R\\(?:APHICS\\|ESUME\\|ID\\|OPT\\|TYP\\)\\|S\\(?:AVE\\|T\\)\\|T\\(?:HK\\|YPE\\)\\)\\|H\\(?:BC\\|EADER\\)\\|I\\(?:C\\(?:LWID\\|SCALE\\)\\|MAGE\\|N\\(?:PUT\\|QUIRE\\)\\)\\|L\\(?:ARC\\|I\\(?:GHT\\|NE\\)\\|S\\(?:PEC\\|YMBOL\\)\\)\\|M\\(?:AP\\|ENU\\|KDIR\\|PLIB\\|REP\\|START\\)\\|N\\(?:ERR\\|O\\(?:ERASE\\|LIST\\|PR\\|RMAL\\)\\|UMBER\\)\\|OUTPUT\\|P\\(?:AGE\\|B[CF]\\|CIRCLE\\|LOPTS\\|M\\(?:ACRO\\|ORE\\)\\|NUM\\|O\\(?:LYGON\\|ST\\(?:1\\|26\\)\\)\\|REP7\\|S\\(?:EARCH\\|F\\|PEC\\|TATUS\\|YMB\\)\\|WEDGE\\)\\|QUIT\\|R\\(?:ATIO\\|E\\(?:NAME\\|\\(?:PLO\\|SE\\)T\\)\\|GB\\|MDIR\\)\\|S\\(?:E\\(?:CLIB\\|G\\)\\|H\\(?:ADE\\|OW\\|RINK\\)\\|MBC\\|OLU\\|SCALE\\|T\\(?:ATUS\\|ITLE\\)\\|Y[PS]\\)\\|T\\(?:EE\\|ITLE\\|LABEL\\|R\\(?:IAD\\|LCY\\)\\|SPEC\\|\\(?:XTR\\|YP\\)E\\)\\|U\\(?:CMD\\|DOC\\|IS?\\|NITS\\|SER\\)\\|V\\(?:CONE\\|IEW\\|SCALE\\|UP\\)\\|W\\(?:AIT\\|INDOW\\)\\|X\\(?:FRM\\|RANGE\\)\\|YRANGE\\|ZOOM\\)\\|A\\(?:A\\(?:DD\\|TT\\)\\|B\\(?:B\\(?:RES\\|SAV\\)\\|EXTRACT\\|S\\)\\|C\\(?:C\\(?:AT\\|OPTION\\)\\|EL\\|LEAR\\)\\|D\\(?:AMS\\|D\\(?:AM\\)?\\|ELE\\|GL\\|RAG\\)\\|E\\(?:ROCOEFF\\|SIZE\\)\\|F\\(?:ILLT\\|LIST\\|SURF\\)\\|G\\(?:EN\\|LUE\\)\\|IN[APV]\\|L\\(?:IST\\|LSEL\\|PHAD\\)?\\|M\\(?:AP\\|B\\(?:EAM\\|UILD\\)\\|E\\(?:NV\\|SH\\)\\|MAT\\|POWDER\\|S\\(?:TEP\\|UPPORTS\\)\\|TYPE\\)\\|N\\(?:C\\(?:NTR\\|UT\\|YC\\)\\|D\\(?:ATA\\|SCL\\|YNA\\)\\|FLOW\\|HARM\\|I\\(?:M\\|SOS\\)\\|MODE\\|ORM\\|PRES\\|S\\(?:OL\\|TOA\\(?:QWA\\|SAS\\)\\)\\|T\\(?:\\(?:IM\\|YP\\)E\\)\\)\\|O\\(?:FFST\\|VLAP\\)\\|P\\(?:LOT\\|ORT\\|PEND\\|TN\\)\\|R\\(?:C\\(?:LEN\\|TRM\\)\\|E\\(?:AS\\|FINE\\|MESH\\|VERSE\\)\\|OTAT\\|S\\(?:CALE\\|YM\\)\\)\\|S\\(?:B[ALVW]\\|CRES\\|EL\\|IFILE\\|KIN\\|L[LV]\\|OL\\|U[BM]\\)\\|T\\(?:AN\\|RAN\\|YPE\\)\\|UTOTS\\|V\\(?:PRIN\\|RES\\)\\|WAVE\\)\\|B\\(?:CSOPTION\\|ETAD\\|F\\(?:A\\(?:DELE\\|LIST\\)\\|CUM\\|DELE\\|E\\(?:CUM\\|DELE\\|LIST\\|SCAL\\)\\|INT\\|K\\(?:DELE\\|LIST\\)\\|L\\(?:DELE\\|L?IST\\)\\|SCALE\\|TRAN\\|UNIF\\|V\\(?:DELE\\|LIST\\)\\|[AEKLV]\\)?\\|IO\\(?:\\(?:OP\\)?T\\)\\|L\\(?:C[45]\\|OCK\\)\\|O\\(?:OL\\|PTN\\)\\|S\\(?:AX\\|M[12D]\\|PLIN\\|S[12]\\|T[EQ]\\)\\|TOL\\|UCOPT\\)\\|C\\(?:A\\(?:LC\\|MPBELL\\)\\|B\\(?:DOF\\|M[DX]\\|T\\(?:E\\|MP\\)\\)\\|D\\(?:OPT\\|READ\\|WRITE\\)\\|E\\(?:C\\(?:HECK\\|MOD\\|YC\\)\\|DELE\\|INTF\\|LIST\\|NTER\\|QN\\|RIG\\|SGEN\\)\\|FACT\\|G\\(?:LOC\\|OMGA\\|ROW\\)\\|H\\(?:ECK\\|KMSH\\)\\|I\\(?:NT\\|RCLE\\|SOL\\)\\|L\\(?:O\\(?:CAL\\|G\\)\\|RMSHLN\\)\\|M\\(?:A\\(?:CEL\\|TRIX\\)\\|D\\(?:ELE\\|OMEGA\\)\\|EDIT\\|GRP\\|LIST\\|MOD\\|OMEGA\\|PLOT\\|ROTATE\\|S\\(?:EL\\|FILE\\|OPT\\)\\|WRITE\\)\\|N\\(?:CHECK\\|KMOD\\|TR\\|VTOL\\)\\|O\\(?:M\\(?:BINE\\|PRESS\\)\\|N\\(?:JUG\\|[4E]\\)\\|RIOLIS\\|UPLE\\|VAL\\)\\|P\\(?:CYC\\|DELE\\|INTF\\|L\\(?:GEN\\|IST\\)\\|MERGE\\|[NS]GEN\\)\\|QC\\|S\\(?:CIR\\|DELE\\|KP\\|LIST\\|WPLA\\|YS\\)\\|U\\(?:RR2D\\|TCONTROL\\)\\|VAR\\|Y\\(?:C\\(?:CALC\\|F\\(?:ILES\\|REQ\\)\\|LIC\\|OPT\\|PHASE\\|SPEC\\)\\|L\\(?:IND\\|[45]\\)\\)\\|Z\\(?:DEL\\|MESH\\)\\|[EMPS]\\)\\|D\\(?:A\\(?:DELE\\|LIST\\|MORPH\\|TA\\(?:DEF\\)?\\)\\|C\\(?:GOMG\\|UM\\|VSWP\\)\\|D\\(?:ASPEC\\|ELE\\|OPTION\\)\\|E\\(?:ACT\\|FINE\\|L\\(?:ETE\\|TIM\\)\\|MORPH\\|RIV\\|S\\(?:IZE\\|OL\\)\\|TAB\\)\\|F\\(?:LX\\|SWAVE\\)\\|I\\(?:G\\(?:IT\\)?\\|SPLAY\\)\\|J\\(?:DELE\\|LIST\\)\\|K\\(?:DELE\\|LIST\\)\\|L\\(?:DELE\\|L?IST\\)\\|M\\(?:OVE\\|P\\(?:EXT\\|OPTION\\|RAT\\|STR\\)\\)\\|NSOL\\|O\\(?:F\\(?:SEL\\)?\\|MEGA\\)\\|S\\(?:CALE\\|ET\\|POPTION\\|U\\(?:M\\|RF\\)\\|Y[MS]\\)\\|TRAN\\|UMP\\|V\\(?:AL\\|MORPH\\)\\|YNOPT\\|[AJKL]\\)\\|E\\(?:ALIVE\\|CPCHG\\|DELE\\|EXTRUDE\\|G\\(?:EN\\|ID\\)\\|IN\\(?:FIN\\|TF\\)\\|KILL\\|L\\(?:BOW\\|EM\\|IST\\)\\|M\\(?:A\\(?:GERR\\|TWRITE\\)\\|FT?\\|I[DS]\\|O\\(?:DIF\\|RE\\)\\|S\\(?:EL\\|YM\\)\\|TGEN\\|UNIT\\)\\|N\\(?:DRELEASE\\|ERSOL\\|GEN\\|\\(?:OR\\|SY\\)M\\)\\|ORIENT\\|PLOT\\|QSLV\\|R\\(?:ASE\\|E\\(?:AD\\|FINE\\|INF\\|SX\\)\\|NORM\\|RANG\\)\\|S\\(?:CHECK\\|EL\\|IZE\\|L[ALNV]\\|O\\(?:L\\|RT\\)\\|SOLV\\|TIF\\|URF\\|Y[MS]\\)\\|T\\(?:ABLE\\|C\\(?:HG\\|ONTROL\\)\\|DELE\\|LIST\\|YPE\\)\\|USORT\\|WRITE\\|X\\(?:BOPT\\|OPTION\\|P\\(?:A\\(?:ND\\|SS\\)\\|ROFILE\\|SOL\\)?\\|T\\(?:OPT\\|REM\\)\\|UNIT\\)\\|[NT]\\)\\|F\\(?:C\\(?:CHECK\\|DELE\\|LIST\\|TYP\\|UM\\)\\|DELE\\|E\\(?:BODY\\|CONS\\|FOR\\|SURF\\)\\|I\\(?:L\\(?:EAUX[23]\\|LDATA\\|[EL]\\)\\|NISH\\|TEM\\)\\|J\\(?:DELE\\|LIST\\)\\|K\\(?:DELE\\|LIST\\)\\|L\\(?:IST\\|ST\\|U\\(?:READ\\|XV\\)\\)\\|OR\\(?:CE\\|M\\)\\|R\\(?:EQ\\|QSCL\\)\\|S\\(?:CALE\\|S\\(?:ECT\\|PARM\\)\\|UM\\)\\|T\\(?:RAN\\|YPE\\)\\|VMESH\\|[CJK]\\)\\|G\\(?:A\\(?:PF?\\|UGE\\)\\|C\\(?:DEF\\|GEN\\)\\|E\\(?:NOPT\\|OM\\(?:ETRY\\)?\\)\\|M\\(?:ATRIX\\|FACE\\)\\|P\\(?:DELE\\|L\\(?:\\(?:IS\\|O\\)T\\)\\)?\\|RP\\|S\\(?:BDATA\\|GDATA\\|LIST\\|SOL\\|UM\\)\\)\\|H\\(?:ARFRQ\\|BMAT\\|E\\(?:LP\\|MIOPT\\)\\|F\\(?:ANG\\|SYM\\)\\|PT\\(?:\\(?:CREA\\|DELE\\)TE\\)\\|R\\(?:CPLX\\|EXP\\|O\\(?:CEAN\\|[PU]T\\)\\)\\)\\|I\\(?:C\\(?:DELE\\|LIST\\|ROTATE\\)?\\|GES\\(?:IN\\|OUT\\)\\|M\\(?:AGIN\\|ESH\\|MED\\)\\|N\\(?:ISTATE\\|R\\(?:ES\\|TIA\\)\\|T1\\|VOPT\\)\\|OPTN\\|RL\\(?:F\\|IST\\)\\)\\|J\\(?:PEG\\|SOL\\)\\|K\\(?:ATT\\|B\\(?:C\\|ETW\\)\\|C\\(?:\\(?:ENTE\\|LEA\\)R\\)\\|D\\(?:ELE\\|IST\\)\\|E\\(?:EP\\|SIZE\\|Y\\(?:OPT\\|PTS\\|W\\)\\)\\|FILL\\|GEN\\|L\\(?:IST\\)?\\|M\\(?:ESH\\|O\\(?:DIF\\|VE\\)\\)\\|NODE\\|P\\(?:LOT\\|SCALE\\)\\|REFINE\\|S\\(?:C\\(?:ALE\\|ON\\)\\|EL\\|L[LN]\\|\\(?:U\\|YM\\)M\\)\\|TRAN\\|USE\\|WP\\(?:AVE\\|LAN\\)\\)\\|L\\(?:2\\(?:ANG\\|TAN\\)\\|A\\(?:N\\(?:BOPTION\\|G\\)\\|R\\(?:C\\|EA\\|GE\\)\\|TT\\|Y\\(?:ER\\(?:P26\\)?\\|\\(?:LIS\\|PLO\\)T\\)\\)\\|C\\(?:A\\(?:BS\\|SE\\)\\|CA\\(?:LC\\|T\\)\\|DEF\\|F\\(?:ACT\\|ILE\\)\\|LEAR\\|O\\(?:MB\\|PER\\)\\|S\\(?:EL\\|L\\|UM\\)\\|WRITE\\|ZERO\\)\\|D\\(?:ELE\\|IV\\|R\\(?:AG\\|EAD\\)\\)\\|E\\(?:SIZE\\|XTND\\)\\|F\\(?:ILLT\\|SURF\\)\\|G\\(?:EN\\|\\(?:LU\\|WRIT\\)E\\)\\|I\\(?:N\\(?:ES\\|[AELPV]\\)\\|ST\\)\\|LIST\\|MESH\\|NSRCH\\|O\\(?:CAL\\|VLAP\\)\\|P\\(?:LOT\\|TN\\)\\|R\\(?:E\\(?:\\(?:FIN\\|VERS\\)E\\)\\|OTAT\\)\\|S\\(?:B[ALVW]\\|CLEAR\\|DELE\\|EL\\|L[AK]\\|OPER\\|READ\\|S\\(?:\\(?:CAL\\|OLV\\)E\\)\\|TR\\|UM\\|WRITE\\|YMM\\)\\|T\\(?:R?AN\\)\\|UMPM\\|VSCALE\\|WPLAN\\)\\|M\\(?:A\\(?:COPT\\|G\\(?:OPT\\|SOLV\\)\\|P\\(?:2DTO3D\\|SOLVE\\|VAR\\)\\|S\\(?:CALE\\|TER\\)\\|TER\\|[PT]\\)\\|CHECK\\|D\\(?:AMP\\|ELE\\|PLOT\\)\\|E\\(?:MM\\|SHING\\)\\|GEN\\|IDTOL\\|LIST\\|M\\(?:ASS\\|F\\)\\|O\\(?:D\\(?:CONT\\|DIR\\|E\\|IFY\\|MSH\\|OPT\\|SELOPTION\\)\\|NITOR\\|PT\\|RPH\\|VE\\)\\|P\\(?:AMOD\\|C\\(?:HG\\|OPY\\)\\|D\\(?:ATA\\|ELE\\|RES\\)\\|LIST\\|PLOT\\|R\\(?:EAD\\|INT\\)\\|T\\(?:EMP\\|GEN\\|RES\\)\\|WRITE\\)?\\|RPM\\|S\\(?:AVE\\|H\\(?:APE\\|COPY\\|KEY\\|MID\\|PATTERN\\)\\|\\(?:OLV\\|TOL\\)E\\)\\|XPAND\\)\\|N\\(?:A\\(?:NG\\|XIS\\)\\|CNV\\|D\\(?:ELE\\|IST\\|SURF\\)\\|EQIT\\|FORCE\\|GEN\\|KPT\\|L\\(?:ADAPTIVE\\|D\\(?:IAG\\|POST\\)\\|GEOM\\|HIST\\|IST\\|MESH\\|O\\(?:G\\|PT\\)\\)\\|MODIF\\|O\\(?:DES\\|OFFSET\\|R[AL]\\)\\|P\\(?:\\(?:LO\\|RIN\\)T\\)\\|R\\(?:E\\(?:AD\\|FINE\\)\\|LSUM\\|O\\(?:\\(?:P\\|TA\\)T\\)\\|RANG\\)\\|S\\(?:CALE\\|EL\\|L[AEKLV]\\|MOOTH\\|O\\(?:L\\|RT\\)\\|TORE\\|UBST\\|VR\\|YM\\)\\|U\\(?:M\\(?:CMP\\|EXP\\|MRG\\|OFF\\|\\(?:ST\\|VA\\)R\\)\\|SORT\\)\\|W\\(?:P\\(?:AVE\\|LAN\\)\\|RITE\\)\\)\\|O\\(?:C\\(?:D\\(?:ATA\\|ELETE\\)\\|LIST\\|READ\\|\\(?:T\\(?:ABL\\|YP\\)\\|ZON\\)E\\)\\|MEGA\\|P\\(?:ERATE\\|NCONTROL\\)\\|UT\\(?:AERO\\|GEOM\\|OPT\\|PR\\|RES\\)\\|VCHECK\\)\\|P\\(?:A\\(?:DELE\\|GET\\|PUT\\|R\\(?:ESU\\|RES\\|SAV\\)\\|SAVE\\|TH\\|USE\\)\\|C\\(?:ALC\\|GOPT\\|IRC\\|ROSS\\)\\|D\\(?:EF\\|OT\\)\\|ER\\(?:BC2D\\|TURB\\)\\|FACT\\|HYSICS\\|IVCHECK\\|L\\(?:AS\\|C\\(?:AMP\\|FREQ\\|HIST\\|INT\\|KSURF\\|PLX\\)\\|DISP\\|E\\(?:SOL\\|TAB\\)\\|F\\(?:2D\\|AR\\)\\|GEOM\\|LS\\|M\\(?:AP\\|C\\)\\|N\\(?:EAR\\|SOL\\)\\|O\\(?:RB\\|TTING\\)\\|PA\\(?:GM\\|TH\\)\\|SECT\\|T\\(?:IME\\|RAC\\)\\|V\\(?:AR\\|ECT\\)\\|ZZ\\)\\|M\\(?:AP\\|GTRAN\\|L\\(?:OPT\\|SIZE\\)\\)\\|NGR\\|O\\(?:INT\\|LY\\|WERH\\)\\|PATH\\|R\\(?:A\\(?:NGE\\|S\\)\\|C\\(?:AMP\\|INT\\|PLX\\)\\|E\\(?:D\\|NERGY\\|RR\\|SOL\\|TAB\\)\\|FAR\\|I\\(?:NT\\|SM\\|TER\\|[2M]\\)\\|JSOL\\|MC\\|N\\(?:EAR\\|LD\\|SOL\\)\\|O\\(?:D\\|RB\\)\\|PATH\\|R\\(?:FOR\\|SOL\\)\\|S\\(?:CONTROL\\|ECT\\)\\|TIME\\|V\\(?:AR\\|ECT\\)\\)\\|S\\(?:CONTROL\\|D\\(?:COM\\|FRQ\\|GRAPH\\|RES\\|SPL\\|UNIT\\|VAL\\|WAV\\)\\|EL\\|M\\(?:AT\\|ESH\\)\\|\\(?:TRE\\|Y\\)S\\)\\|T\\(?:R\\|XY\\)\\|VECT\\)\\|Q\\(?:DVAL\\|RDOPT\\|SOPT\\|U\\(?:AD\\|OT\\)\\)\\|R\\(?:A\\(?:CE\\|DOPT\\|PPND\\|TE\\)\\|BE3\\|C\\(?:ON\\|YC\\)\\|DE\\(?:C\\|LE\\)\\|E\\(?:A\\(?:LVAR\\|[DL]\\)\\|CTNG\\|MESH\\|S\\(?:CO\\(?:MBINE\\|NTROL\\)\\|ET\\|P\\|UME\\|VEC\\|WRITE\\)\\|ZONE\\)\\|FORCE\\|IG\\(?:ID\\|RESP\\)\\|LIST\\|M\\(?:A\\(?:LIST\\|NL\\|STER\\)\\|C\\(?:AP\\|LIST\\)\\|FLVEC\\|LVSCALE\\|M\\(?:LIST\\|RANGE\\|SELECT\\)\\|N\\(?:DISP\\|EVEC\\)\\|O\\(?:DIF\\|RE\\)\\|PORDER\\|R\\(?:ESUME\\|GENERATE\\|OPTIONS\\|PLOT\\|STATUS\\)\\|S\\(?:\\(?:AV\\|MPL\\)E\\)\\|USE\\|XPORT\\)\\|O\\(?:CK\\|SE\\)\\|P\\(?:OLY\\|R\\(?:4\\|ISM\\)\\|SD\\)\\|S\\(?:MESH\\|OPT\\|PLIT\\|T\\(?:MAC\\|OFF\\)\\|URF\\|Y\\(?:MM\\|S\\)\\)\\)\\|S\\(?:A\\(?:BS\\|DD\\|LLOW\\|VE\\)\\|BC\\(?:LIST\\|TRAN\\)\\|COPT\\|DELETE\\|E\\(?:C\\(?:CONTROL\\|DATA\\|FUNCTION\\|JOINT\\|LOCK\\|MODIF\\|NUM\\|OFFSET\\|PLOT\\|READ\\|STOP\\|\\(?:TYP\\|WRIT\\)E\\)\\|DLIST\\|EXP\\|L\\(?:IST\\|M\\|TOL\\)\\|MIIMPLICIT\\|NERGY\\|OPT\\|SYMM\\|T\\(?:FGAP\\|RAN\\)\\|XP\\|[DT]\\)\\|F\\(?:A\\(?:CT\\|DELE\\|LIST\\)\\|BEAM\\|C\\(?:ALC\\|ONTROL\\|UM\\)\\|DELE\\|E\\(?:DELE\\|LIST\\)\\|FUN\\|GRAD\\|L\\(?:DELE\\|EX\\|L?IST\\)\\|SCALE\\|TRAN\\|[AEL]\\)\\|H\\(?:ELL\\|PP\\|SD\\)\\|L\\(?:IST\\|OAD\\)\\|M\\(?:A\\(?:LL\\|X\\)\\|BODY\\|CONS\\|FOR\\|IN\\|OOTH\\|RTSIZE\\|SURF\\|ULT\\)\\|NOPTION\\|O\\(?:L\\(?:U\\(?:OPT\\)?\\|VE\\)\\|RT\\|URCE\\)\\|P\\(?:ACE\\|C\\(?:NOD\\|TEMP\\)\\|DAMP\\|EC\\|FREQ\\|GRAPH\\|H\\(?:ERE\\|[45]\\)\\|L\\(?:INE\\|OT\\)\\|MWRITE\\|O\\(?:\\(?:IN\\|P\\)T\\)\\|READ\\|TOPT\\|UNIT\\|VAL\\)\\|QRT\\|RSS\\|S\\(?:BT\\|LN\\|MT\\|OPT\\|P[ABDEM]\\|TATE\\|UM\\)\\|T\\(?:A\\(?:BILIZE\\|T\\)\\|EF\\|ORE\\)\\|U\\(?:B\\(?:\\(?:OP\\|SE\\)T\\)\\|C\\(?:ALC\\|R\\)\\|DEL\\|EVAL\\|GET\\|M\\(?:AP\\|TYPE\\)\\|P[LR]\\|RESU\\|S\\(?:AVE\\|EL\\)\\|VECT\\)\\|V\\(?:PLOT\\|TYP\\)\\|W\\(?:ADD\\|DEL\\|GEN\\|LIST\\)\\|YNCHRO\\|[EFV]\\)\\|T\\(?:A\\(?:LLOW\\|RGET\\)\\|B\\(?:COPY\\|D\\(?:ATA\\|ELE\\)\\|EO\\|F\\(?:IELD\\|T\\)\\|IN\\|L\\(?:E\\|IST\\)\\|MODIF\\|P\\(?:\\(?:LO\\)?T\\)\\|TEMP\\)?\\|CHG\\|H\\(?:EXPAND\\|OPT\\)\\|I\\(?:FF\\|M\\(?:ERANGE\\|INT\\|[EP]\\)\\|NTP\\)\\|O\\(?:FFST\\|RUS\\)\\|R\\(?:ANSFER\\|EF\\|NOPT\\|P\\(?:DEL\\|LIS\\|OIN\\)\\|TIME\\)\\|S\\(?:HAP\\|RES\\)\\|UNIF\\|VAR\\|YPE\\)\\|U\\(?:IMP\\|N\\(?:D\\(?:ELETE\\|O\\)\\|PAUSE\\)\\|P\\(?:COORD\\|GEOM\\)\\|SR\\(?:CAL\\|DOF\\|ELEM\\)\\)\\|V\\(?:2DOPT\\|A\\(?:DD\\|R\\(?:DEL\\|NAM\\)\\|TT\\)?\\|C\\(?:LEAR\\|ROSS\\)\\|D\\(?:DAM\\|ELE\\|GL\\|OT\\|RAG\\)\\|E\\(?:\\(?:ORIEN\\|X\\)T\\)\\|F\\(?:OPT\\|QUERY\\|SM\\)\\|G\\(?:E[NT]\\|LUE\\)\\|I\\(?:MP\\|N[PV]\\)\\|L\\(?:IST\\|SCALE\\)\\|MESH\\|O\\(?:FFST\\|LUMES\\|VLAP\\)\\|P\\(?:LOT\\|TN\\|UT\\)\\|ROTAT\\|S\\(?:B[AVW]\\|EL\\|LA\\|UM\\|WEEP\\|YMM\\)\\|T\\(?:RAN\\|YPE\\)\\)\\|W\\(?:P\\(?:AVE\\|CSYS\\|LANE\\|OFFS\\|ROTA\\|STYL\\)\\|R\\(?:FULL\\|ITE\\(?:MAP\\)?\\)\\|SPRINGS\\|TBCREATE\\)\\|X\\(?:F\\(?:CRKMESH\\|DATA\\|ENRICH\\|LIST\\)\\|VAR\\)\\|~\\(?:\\(?:CAT\\(?:5\\|IA\\)\\|P\\(?:ARA\\|ROE\\)\\|SAT\\|UG\\)IN\\)\\|[AC-FK-NRV]\\)" +"APDL full keyword name regexp.") + +(defconst apdl-command-regexp +"\\(?:\\*\\(?:A\\(?:BB\\|FU\\|SK\\|XP\\)\\|C\\(?:F[COW]\\|OM\\|RE\\|YC\\)\\|D\\(?:EL\\|IM\\|MA\\|O[TW]?\\)\\|E\\(?:IG\\|LSE\\(?:IF\\)?\\|ND\\(?:DO\\|IF\\)?\\|VA\\|X[IP]\\)\\|F\\(?:FT\\|RE\\)\\|G\\(?:ET\\|O\\)\\|I\\(?:F\\|NI\\|TE\\)\\|L\\(?:IS\\|S[BDEFR]\\)\\|M\\(?:ER\\|F[OU]\\|O[OP]\\|SG\\|UL\\|WR\\)\\|NRM\\|PRI\\|RE[MNPT]\\|S\\(?:CA\\|ET\\|MA\\|OR\\|RE\\|TA\\)\\|T\\(?:AX\\|OP\\|RE\\)\\|U\\(?:LI\\|SE\\)\\|V\\(?:AB\\|C[OU]\\|E[CD]\\|F[AIU]\\|GE\\|IT\\|LE\\|MA\\|OP\\|P[LU]\\|RE\\|S[CT]\\|WR\\)\\|WRK\\|XPL\\)\\|/\\(?:A\\(?:N[3FGNU]\\|SS\\|U\\(?:T\\|X\\(?:1[25]\\|[23]\\)\\)\\|XL\\)\\|BAT\\|C\\(?:FO\\|L[AEO]\\|MA\\|O\\(?:N[FT]\\|[LMP]\\)\\|PL\\|TY\\|VA\\|WD\\|YC\\)\\|D\\(?:E[LV]\\|FL\\|I[RS]\\|SC\\|V3\\)\\|E\\(?:DG\\|FA\\|OF\\|RA\\|SH\\|X[IP]\\)\\|F\\(?:AC\\|CO\\|DE\\|IL\\|O[CR]\\)\\|G\\(?:C[MO]\\|F[IO]\\|LI\\|MA\\|O[LP]?\\|R[AEIOT]\\|S[AT]\\|T[HY]\\)\\|H\\(?:BC\\|EA\\)\\|I\\(?:C[LS]\\|MA\\|N[PQ]\\)\\|L\\(?:AR\\|I[GN]\\|S[PY]\\)\\|M\\(?:AP\\|EN\\|KD\\|PL\\|RE\\|ST\\)\\|N\\(?:ER\\|O[ELPR]\\|UM\\)\\|O\\(?:[PU]T\\)\\|P\\(?:AG\\|B[CF]\\|CI\\|IC\\|LO\\|M[AEO]\\|NU\\|O\\(?:L\\|ST\\(?:1\\|26\\)\\)\\|REP7\\|S[EFPTY]\\|WE\\)\\|QUI\\|R\\(?:AT\\|E[NPS]\\|GB\\|MD\\|UNSTA?\\)\\|S\\(?:E[CG]\\|H[AOR]\\|MB\\|OL\\|S[CS]\\|T[AI]\\|Y[PS]\\)\\|T\\(?:EE\\|IT\\|LA\\|R[AIL]\\|SP\\|XT\\|YP\\)\\|U\\(?:CM\\|DO\\|IS?\\|NI\\|SE\\)\\|V\\(?:CO\\|ER\\|IE\\|SC\\|T\\|UP\\)\\|W\\(?:AI\\|B\\|IN\\)\\|X\\(?:FR\\|ML\\|RA\\)\\|YRA\\|ZOO\\)\\|A\\(?:A\\(?:DD\\|TT\\)\\|B\\(?:B[RS]\\|EX\\|S\\)\\|C\\(?:C[AO]\\|EL\\|LE\\)\\|D\\(?:AM\\|DA?\\|EL\\|GL\\|RA\\)\\|E\\(?:RO\\|SI\\)\\|F\\(?:IL\\|LI\\|SU\\)\\|G\\(?:EN\\|LU\\)\\|IN[APV]\\|L\\(?:IS\\|LS\\|P[FH]\\)?\\|M\\(?:AP\\|B[EU]\\|E[NS]\\|MA\\|PO\\|S[TU]\\|TY\\)\\|N\\(?:C[NUY]\\|D[ASY]\\|FL\\|HA\\|I[MS]\\|MO\\|OR\\|PR\\|S\\(?:O\\|TOA[QS]\\)\\|T[IY]\\)\\|O\\(?:FF\\|VL\\)\\|P\\(?:LO\\|OR\\|PE\\|TN\\)\\|R\\(?:C[LOT]\\|DE\\|E[AFMV]\\|FI\\|ME\\|OT\\|S[CPY]\\)\\|S\\(?:B[ALVW]\\|CR\\|EL\\|IF\\|KI\\|L[LNV]\\|OL\\|U[BM]\\)\\|T\\(?:AN\\|RA\\|YP\\)\\|UTO\\|V\\(?:PR\\|RE\\)\\|WAV\\)\\|B\\(?:CSO\\|ETA\\|F\\(?:A[DL]\\|CU\\|DE\\|E[CDLS]\\|IN\\|K[DL]\\|L[DIL]\\|SC\\|TR\\|UN\\|V[DL]\\|[AEKLV]\\)?\\|IO[OT]\\|L\\(?:C[45]\\|OC\\)\\|O\\(?:OL\\|PT\\)\\|S\\(?:AX\\|M[12D]\\|PL\\|S[12]\\|T[EQ]\\)\\|TOL\\|UCO\\)\\|C\\(?:A\\(?:LC\\|MP\\)\\|B\\(?:DO\\|M[DX]\\|T[EM]\\)\\|D\\(?:OP\\|RE\\|WR\\)\\|E\\(?:C[HMY]\\|DE\\|IN\\|LI\\|NT\\|QN\\|RI\\|SG\\|WR\\)\\|FAC\\|G\\(?:LO\\|OM\\|RO\\)\\|H\\(?:EC\\|KM\\)\\|I\\(?:NT\\|RC\\|SO\\)\\|L\\(?:O[CG]\\|RM\\)\\|M\\(?:A[CT]\\|BL\\|D[EO]\\|ED\\|GR\\|LI\\|MO\\|OM\\|PL\\|RO\\|S[EFO]\\|WR\\)\\|N\\(?:CH\\|KM\\|TR\\|VT\\)\\|O\\(?:M[BP]\\|N[4EJ]\\|RI\\|UP\\|VA\\)\\|P\\(?:CY\\|DE\\|IN\\|L[GI]\\|ME\\|[NS]G\\)\\|QC\\|S\\(?:CI\\|DE\\|KP\\|LI\\|WP\\|YS\\)\\|U\\(?:RR\\|TC\\)\\|VAR\\|WZP\\|Y\\(?:C\\(?:F[IR]\\|[CLOPS]\\)\\|L[45I]\\)\\|Z\\(?:[DM]E\\)\\|[EMPS]\\)\\|D\\(?:A\\(?:DE\\|LI\\|MO\\|TAD?\\)\\|C\\(?:GO\\|UM\\|VS\\)\\|D\\(?:AS\\|EL\\|OP\\)\\|E\\(?:AC\\|FI\\|L[ET]\\|MO\\|RI\\|S[IO]\\|TA\\)\\|F\\(?:LX\\|SW\\)\\|I\\(?:GI?\\|SP\\)\\|J\\(?:DE\\|LI\\)\\|K\\(?:DE\\|LI\\)\\|L\\(?:DE\\|IS\\|LI\\)\\|M\\(?:OV\\|P[EORS]\\)\\|NSO\\|O\\(?:FS?\\|ME\\)\\|S\\(?:CA\\|ET\\|PO\\|U[MR]\\|Y[MS]\\)\\|TRA\\|UMP\\|V\\(?:AL\\|MO\\)\\|YNO\\|[AJKL]\\)\\|E\\(?:AL[IL]\\|BLO\\|CPC\\|DEL\\|EXT\\|G\\(?:EN\\|ID\\)\\|IN[FT]\\|KIL\\|L\\(?:BO\\|EM\\|IS\\)\\|M\\(?:A[GT]\\|FT?\\|I[DS]\\|O[DR]\\|S[EY]\\|TG\\|UN\\)\\|N\\(?:DR\\|ER\\|GE\\|OR\\|SY\\)\\|ORI\\|PLO\\|QSL\\|R\\(?:AS\\|E[AFIS]\\|NO\\|RA\\)\\|S\\(?:CH\\|EL\\|IZ\\|L[ALNV]\\|O[LR]\\|SO\\|TI\\|UR\\|Y[MS]\\)\\|T\\(?:AB\\|C[HO]\\|DE\\|LI\\|YP\\)\\|USO\\|WRI\\|X\\(?:BO\\|OP\\|P\\(?:A[NS]\\|[RS]\\)?\\|T[OR]\\|UN\\)\\|[NT]\\)\\|F\\(?:C\\(?:CH\\|DE\\|LI\\|TY\\|UM\\)\\|DEL\\|E\\(?:BO\\|CO\\|FO\\|SU\\)\\|I\\(?:L\\(?:EAUX[23]\\|LD\\|[EL]\\)\\|NI\\|PL\\|TE\\)\\|J\\(?:DE\\|LI\\)\\|K\\(?:DE\\|LI\\)\\|L\\(?:DA\\|I[ST]\\|O[CT]\\|RE\\|ST\\|U[RX]\\)\\|MAG\\|OR[CM]\\|R\\(?:EQ\\|QS\\)\\|S\\(?:CA\\|S[EP]\\|UM\\)\\|T\\(?:RA\\|YP\\)\\|VME\\|[CJK]\\)\\|G\\(?:A\\(?:P\\(?:FI\\|[FLMOP]\\)?\\|UG\\)\\|C\\(?:[DG]E\\)\\|E\\(?:NO\\|OME?\\)\\|M\\(?:AT\\|FA\\)\\|P\\(?:DE\\|L[IO]\\)?\\|RP\\|S\\(?:BD\\|GD\\|LI\\|SO\\|UM\\)\\)\\|H\\(?:ARF\\|BMA\\|E\\(?:LP\\|MI\\)\\|F\\(?:A[DNR]\\|DE\\|E[IR]\\|MO\\|P\\(?:O[RW]\\|[AC]\\)\\|S[CY]\\)\\|PT[CD]\\|R\\(?:CP\\|EX\\|O[CPU]\\)\\)\\|I\\(?:C\\(?:DE\\|E[DL]?\\|LI\\|RO\\|VF\\)?\\|GES[IO]\\|M\\(?:AG\\|ES\\|ME\\)\\|N\\(?:IS\\|R[ET]\\|T1\\|VO\\)\\|OPT\\|RL[FI]\\)\\|J\\(?:PEG\\|SOL\\)\\|K\\(?:ATT\\|B\\(?:C\\|ET\\)\\|C\\(?:EN\\|LE\\)\\|D\\(?:EL\\|IS\\)\\|E\\(?:EP\\|SI\\|Y[OPW]\\)\\|FIL\\|GEN\\|L\\(?:IS\\)?\\|M\\(?:ES\\|O[DV]\\)\\|NOD\\|P\\(?:LO\\|SC\\)\\|REF\\|S\\(?:C[AO]\\|EL\\|L[LN]\\|[UY]M\\)\\|TRA\\|USE\\|WP[AL]\\)\\|L\\(?:2\\(?:AN\\|TA\\)\\|A\\(?:N[BG]\\|R[CEG]\\|TT\\|Y\\(?:ERP?\\|[LP]\\)\\)\\|C\\(?:A[BS]\\|CA[LT]\\|DE\\|F[AI]\\|LE\\|O[MP]\\|S[ELU]\\|WR\\|ZE\\)\\|D\\(?:EL\\|IV\\|R[AE]\\)\\|E\\(?:SI\\|XT\\)\\|F\\(?:IL\\|SU\\)\\|G\\(?:EN\\|LU\\|WR\\)\\|I\\(?:N\\(?:ES\\|[AELPV]\\)\\|ST\\)\\|LIS\\|MES\\|N\\(?:CO\\|DE\\|FI\\|ME\\|S[PR]\\)\\|O\\(?:CA\\|VL\\)\\|P\\(?:LO\\|RT\\|TN\\)\\|R\\(?:E[FV]\\|OT\\)\\|S\\(?:B[ALVW]\\|CL\\|DE\\|EL\\|L[AKN]\\|OP\\|RE\\|S[CO]\\|TR\\|UM\\|WR\\|YM\\)\\|T\\(?:AN\\|RA\\)\\|UMP\\|VSC\\|WPL\\)\\|M\\(?:A\\(?:CO\\|G[OS]\\|P[2SV]\\|S[CT]\\|TE\\|[PT]\\)\\|CHE\\|D\\(?:AM\\|[EP]L\\)\\|E\\(?:MM\\|SH\\)\\|GEN\\|IDT\\|LIS\\|M\\(?:AS\\|F\\)\\|O\\(?:D[CDEIMOS]\\|NI\\|PT\\|RP\\|VE\\)\\|P\\(?:AM\\|C[HO]\\|D[AER]\\|LI\\|PL\\|R[EI]\\|T[EGR]\\|WR\\)?\\|RPM\\|S\\(?:A[DV]\\|CA\\|DA\\|H[ACKMP]\\|M[AEI]\\|NO\\|OL\\|PR\\|QU\\|RE\\|S[OP]\\|T[EO]\\|VA\\)\\|XPA\\)\\|N\\(?:A\\(?:LL\\|NG\\|XI\\)\\|BLO\\|CNV\\|D\\(?:EL\\|IS\\|SU\\)\\|E\\(?:LE\\|QI\\)\\|FOR\\|GEN\\|KPT\\|L\\(?:AD\\|D[IP]\\|GE\\|HI\\|IS\\|ME\\|O[GP]\\)\\|MOD\\|O\\(?:DE\\|OF\\|R[AL]\\)\\|P\\(?:LO\\|RI\\)\\|R\\(?:E[AF]\\|LS\\|O[PT]\\|RA\\)\\|S\\(?:CA\\|EL\\|L[AEKLV]\\|MO\\|O[LR]\\|TO\\|UB\\|VR\\|YM\\)\\|U\\(?:M[CEMOSV]\\|SO\\)\\|W\\(?:P[AL]\\|RI\\)\\)\\|O\\(?:C\\(?:D[AE]\\|LI\\|RE\\|T[AY]\\|ZO\\)\\|MEG\\|P\\(?:A[DN]\\|CL\\|D[AE]\\|E[QRX]\\|F[AR]\\|GR\\|KE\\|L[FGIOS]\\|MA\\|NC\\|PR\\|R[AEFGS]\\|S[AEUW]\\|TY\\|US\\|VA\\)\\|UT[AGOPR]\\|VCH\\)\\|P\\(?:A\\(?:DE\\|GE\\|PU\\|R[ERS]\\|SA\\|TH\\|US\\)\\|C\\(?:AL\\|GO\\|IR\\|ON\\|RO\\)\\|D\\(?:EF\\|OT\\)\\|E\\(?:MO\\|R[BIT]\\|XC\\)\\|FAC\\|G\\(?:R[AS]\\|S[AE]\\|WR\\)\\|HYS\\|I\\(?:LE\\(?:S[ET]\\|[CDGLMR]\\)\\|[NV]C\\)\\|L\\(?:AS\\|C[AFHIKOP]\\|DI\\|E[ST]\\|F[2AS]\\|GE\\|LS\\|M[AC]\\|N[ES]\\|O[RT]\\|PA[GT]\\|S[CEY]\\|T[DILR]\\|V\\(?:ARO?\\|[EF]\\)\\|WA\\|ZZ\\)\\|M\\(?:AP\\|ET\\|GT\\|L[OS]\\|OP\\)\\|NGR\\|O\\(?:IN\\|LY\\|UT\\|WE\\)\\|P\\(?:AT\\|LO\\|RA\\)\\|R\\(?:A[NS]\\|C[AIOP]\\|E[CDNRST]\\|FA\\|I[2MNST]\\|JS\\|MC\\|N[ELS]\\|O[DR]\\|PA\\|R[FS]\\|S[CEY]\\|TI\\|V\\(?:ARO?\\|E\\)\\)\\|S\\(?:CO\\|D[CFGRSUVW]\\|EL\\|M[AE]\\|OL\\|TR\\|YS\\)\\|T\\(?:R\\|XY\\)\\|VEC\\)\\|Q\\(?:DVA\\|FAC\\|RDO\\|SOP\\|U\\(?:AD\\|OT\\)\\)\\|R\\(?:A\\(?:CE\\|DO\\|LL\\|PP\\|TE\\)\\|BE3\\|C\\(?:ON\\|YC\\)\\|DE[CL]\\|E\\(?:A\\(?:LV\\|[DL]\\)\\|CT\\|ME\\|S\\(?:CO[MN]\\|[EPUVW]\\)\\|ZO\\)\\|F\\(?:IL\\|OR\\)\\|I\\(?:G[IR]\\|TE\\)\\|LIS\\|M\\(?:A[LNS]\\|C[AL]\\|EM\\|FL\\|LV\\|M[LRS]\\|N[DE]\\|O[DR]\\|PO\\|R[EGOPS]\\|S[AM]\\|US\\|XP\\)\\|O\\(?:CK\\|SE\\)\\|P\\(?:OL\\|R[4I]\\|SD\\)\\|S\\(?:ME\\|OP\\|P[EL]\\|T[AMO]\\|UR\\|Y[MS]\\)\\|TIM\\|WFR\\)\\|S\\(?:A\\(?:BS\\|DD\\|LL\\|RP\\|VE\\)\\|BC[LT]\\|COP\\|DEL\\|E\\(?:C[CDFJL-PRSTW]\\|DL\\|EX\\|L[IMT]\\|MI\\|NE\\|OP\\|SY\\|T[FR]\\|XP\\|[DT]\\)\\|F\\(?:A[CDL]\\|BE\\|C[AOU]\\|DE\\|E[DL]\\|FU\\|GR\\|L[DEIL]\\|SC\\|TR\\|[AEL]\\)\\|H\\(?:EL\\|PP\\|SD\\)\\|L\\(?:IS\\|OA\\|[PS]P\\)\\|M\\(?:A[LX]\\|BO\\|CO\\|FO\\|IN\\|OO\\|RT\\|SU\\|UL\\)\\|NOP\\|O\\(?:L\\(?:UO\\|[CUV]\\)\\|RT\\|UR\\)\\|P\\(?:A[CDR]\\|C[NT]\\|DA\\|EC\\|F[RS]\\|GR\\|H[45E]\\|IC\\|L[IO]\\|MW\\|O[IP]\\|RE\\|S[CW]\\|TO\\|UN\\|VA\\)\\|QRT\\|RSS\\|S\\(?:BT\\|LN\\|MT\\|OP\\|P[ABDEM]\\|TA\\|UM\\)\\|T\\(?:A[BT]\\|EF\\|OR\\)\\|U\\(?:B[OS]\\|C[AR]\\|DE\\|EV\\|GE\\|M[AT]\\|P[LR]\\|RE\\|S[AE]\\|VE\\)\\|V\\(?:PL\\|TY\\)\\|W\\(?:AD\\|DE\\|GE\\|LI\\)\\|YNC\\|[EFV]\\)\\|T\\(?:A\\(?:LL\\|RG\\)\\|B\\(?:CO\\|D[AE]\\|EO\\|F[IT]\\|IN\\|L[EI]\\|MO\\|P[LT]\\|TE\\)?\\|CHG\\|H\\(?:EX\\|OP\\)\\|I\\(?:FF\\|M\\(?:ER\\|[EIP]\\)\\|NT\\)\\|O\\(?:CO\\|DE\\|EX\\|F[FR]\\|GR\\|L[IO]\\|P[LR]\\|RU\\|ST\\|T[AY]\\|VA\\)\\|R\\(?:AN\\|EF\\|NO\\|P[DLO]\\|TI\\)\\|S\\(?:HA\\|RE\\)\\|UNI\\|VAR\\|YPE\\|Z\\(?:AM\\|DE\\|EG\\)\\)\\|U\\(?:IMP\\|N\\(?:D[EO]\\|PA\\)\\|P\\(?:CO\\|GE\\)\\|SR[CDE]\\)\\|V\\(?:2DO\\|A\\(?:DD\\|R[DN]\\|TT\\)?\\|C\\(?:LE\\|RO\\|VF\\)\\|D\\(?:DA\\|EL\\|GL\\|OT\\|RA\\)\\|E\\(?:OR\\|XT\\)\\|F\\(?:OP\\|QU\\|SM\\)\\|G\\(?:E[NT]\\|LU\\)\\|I\\(?:MP\\|N[PV]\\)\\|L\\(?:IS\\|SC\\)\\|MES\\|O\\(?:FF\\|LU\\|VL\\)\\|P\\(?:LO\\|TN\\|UT\\)\\|ROT\\|S\\(?:B[AVW]\\|EL\\|LA\\|UM\\|WE\\|YM\\)\\|T\\(?:CL\\|DI\\|EV\\|FR\\|GE\\|IN\\|M[EP]\\|OP\\|PO\\|R[AEFS]\\|S[EFLT]\\|TE\\|VM\\|YP\\)\\)\\|W\\(?:P\\(?:AV\\|CS\\|LA\\|OF\\|RO\\|ST\\)\\|R\\(?:FU\\|ITEM?\\)\\|SPR\\|TBC\\)\\|X\\(?:F\\(?:CR\\|DA\\|EN\\|LI\\)\\|MLO\\|VARO?\\)\\|~\\(?:C\\(?:AT[5I]\\|FI\\)\\|EUI\\|P\\(?:AR\\|RO\\)\\|SAT\\|UGI\\)\\|[AC-FK-NRV]\\)" +"APDL short keyword name regexp.") + +(defconst apdl-dynamic-prompt +'("*ABBR - Defines an abbreviation. +*ABBR, Abbr, String" "*AFUN - Specifies units for angular functions in parameter expressions. +*AFUN, Lab" "*ASK - Prompts the user to input a parameter value. +*ASK, Par, Query, DVAL" "*AXPY - Performs the matrix operation M2= v*M1 + w*M2. +*AXPY, vr, vi, M1, wr, wi, M2" "*CFCLOS +*CFCLOS - Closes the \"command\" file." "*CFOPEN - Opens a \"command\" file. +*CFOPEN, Fname, Ext, --, Loc" "*CFWRITE - Writes a Mechanical APDL command (or similar string) to a \"command\" file. +*CFWRITE, Command" "*COMP - Compresses a matrix using a specified algorithm. +*COMP, Matrix, Algorithm, THRESHOLD, Val1, Val2" "*CREATE - Opens (creates) a macro file. +*CREATE, Fname, Ext, --" "*CYCLE +*CYCLE - Bypasses commands within a do-loop." "*DEL - Deletes a parameter or parameters (GUI). +*DEL, Val1, Val2" "*DIM - Defines an array parameter and its dimensions. +*DIM, Par, Type, IMAX, JMAX, KMAX, Var1, Var2, Var3, CSYSID" "*DMAT - Creates a dense matrix. +*DMAT, Matrix, Type, Method, Val1, Val2, Val3, Val4, Val5" "*DO - Defines the beginning of a do-loop. +*DO, Par, IVAL, FVAL, INC" "*DOT - Computes the dot (or inner) product of two vectors. +*DOT, Vector1, Vector2, Par_Real, Par_Imag" "*DOWHILE - Loops repeatedly through the next *ENDDO command. +*DOWHILE, Par" "*EIGEN - Performs a modal solution with unsymmetric or damping matrices. +*EIGEN, Kmatrix, Mmatrix, Cmatrix, Evals, Evects" "*ELSE +*ELSE - Separates the final if-then-else block." "*ELSEIF - Separates an intermediate if-then-else block. +*ELSEIF, VAL1, Oper1, VAL2, Conj, VAL3, Oper2, VAL4" "*END +*END - Closes a macro file." "*ENDDO +*ENDDO - Ends a do-loop and starts the looping action." "*ENDIF +*ENDIF - Ends an if-then-else." "*EXIT +*EXIT - Exits a do-loop." "*EXPORT - Exports a matrix to a file in the specified format. +*EXPORT, Matrix, Format, Fname, Val1, Val2, Val3" "*FFT - Computes the fast Fourier transformation of a specified matrix or vector. +*FFT, Type, InputData, OutputData, DIM1, DIM2, ResultFormat" "*FREE - Deletes a matrix or a solver object and frees its memory allocation. +*FREE, Name, VAL1" "*GET - Retrieves a value and stores it as a scalar parameter or part of an array parameter. +*GET, Par, Entity, ENTNUM, Item1, IT1NUM, Item2, IT2NUM" "*GO - Causes a specified line on the input file to be read next. +*GO, Base" "*IF - Conditionally causes commands to be read. +*IF, VAL1, Oper1, VAL2, Base1, VAL3, Oper2, VAL4, Base2" "*INIT - Initializes a vector or matrix. +*INIT, Name, Method, Val1, Val2, Val3" "*ITENGINE - Performs a solution using an iterative solver. +*ITENGINE, Type, EngineName, PrecondName, Matrix, RhsVector, SolVector, MaxIter, Toler" "*LIST - Displays the contents of an external, coded file. +*LIST, Fname, Ext, --" "*LSBAC - Performs the solve (forward/backward substitution) of a factorized linear system. +*LSBAC, EngineName, RhsVector, SolVector, TransKey" "*LSDUMP - Dumps a linear solver engine to a binary File. +*LSDUMP, EngineName, FileName" "*LSENGINE - Creates a linear solver engine. +*LSENGINE, Type, EngineName, Matrix, Option" "*LSFACTOR - Performs the numerical factorization of a linear solver system. +*LSFACTOR, EngineName, Option" "*LSRESTORE - Restores a linear solver engine from a binary file. +*LSRESTORE, EngineName, FileName" "*MERGE - Merges two dense matrices or vectors into one. +*MERGE, Name1, Name2, Val1, Val2" "*MFOURI - Calculates the coefficients for, or evaluates, a Fourier series. +*MFOURI, Oper, COEFF, MODE, ISYM, THETA, CURVE" "*MFUN - Copies or transposes an array parameter matrix. +*MFUN, ParR, Func, Par1" "*MOPER - Performs matrix operations on array parameter matrices. +*MOPER, ParR, Par1, Oper, Val1, Val2, Val3, Val4, Val5, Val6" "*MSG - Writes an output message via the ANSYS message subroutine. +*MSG, Lab, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8" "*MULT - Performs the matrix multiplication M3 = M1(T1)*M2(T2). +*MULT, M1, T1, M2, T2, M3" "*MWRITE - Writes a matrix to a file in a formatted sequence. +*MWRITE, ParR, Fname, Ext, --, Label, n1, n2, n3" "*NRM - Computes the norm of the specified matrix or vector. +*NRM, Name, NormType, ParR, Normalize" "*PRINT - Prints the matrix values to a file. +*PRINT, Matrix, Fname" "*REMOVE - Suppresses rows or columns of a dense matrix or a vector. +*REMOVE, Name, Val1, Val2, Val3" "*RENAME - Renames an existing vector or matrix. +*RENAME, OldName, NewName," "*REPEAT - Repeats the previous command. +*REPEAT, NTOT, VINC1, VINC2, VINC3, VINC4, VINC5, VINC6, VINC7, VINC8, VINC9, VINC10, VINC11" "*RETURN - Returns input stream to a higher level. +*RETURN, Level" "*SCAL - Scales a vector or matrix by a constant. +*SCAL, Name, VAL1, VAL2" "*SET - Assigns values to user-named parameters. +*SET, Par, VALUE, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8, VAL9, VAL10" "*SMAT - Creates a sparse matrix. +*SMAT, Matrix, Type, Method, Val1, Val2, Val3, Val4 , Val5" "*SORT - Sorts the values of the specified vector. +*SORT, Name, SortType, Val1, Val2" "*SREAD - Reads a file into a string array parameter. +*SREAD, StrArray, Fname, Ext, --, nChar, nSkip, nRead" "*STATUS - Lists the current parameters and abbreviations. +*STATUS, Par, IMIN, IMAX, JMIN, JMAX, KMIN, KMAX, LMIN, LMAX, MMIN, MMAX, KPRI" "*TAXIS - Defines table index numbers. +*TAXIS, ParmLoc, nAxis, Val1, Val2, Val3, Val4, Val5, Val6, Val7, Val8, Val9, Val10" "*TOPER - Operates on table parameters. +*TOPER, ParR, Par1, Oper, Par2, FACT1, FACT2, CON1" "*TREAD - Reads data from an external file into a table array parameter. +*TREAD, Par, Fname, Ext, --, NSKIP" "*ULIB - Identifies a macro library file. +*ULIB, Fname, Ext, --" "*USE - Executes a macro file. +*USE, Name, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, AR10, AR11, AR12, AR13, AR14, AG15, AR16, AR17, AR18" "*VABS - Applies the absolute value function to array parameters. +*VABS, KABSR, KABS1, KABS2, KABS3" "*VCOL - Specifies the number of columns in matrix operations. +*VCOL, NCOL1, NCOL2" "*VCUM - Allows array parameter results to add to existing results. +*VCUM, KEY" "*VEC - Creates a vector. +*VEC, Vector, Type, Method, Val1, Val2, Val3, Val4" "*VEDIT - Allows numerical array parameters to be graphically edited. +*VEDIT, Par" "*VFACT - Applies a scale factor to array parameters. +*VFACT, FACTR, FACT1, FACT2, FACT3" "*VFILL - Fills an array parameter. +*VFILL, ParR, Func, CON1, CON2, CON3, CON4, CON5, CON6, CON7, CON8, CON9, CON10" "*VFUN - Performs a function on a single array parameter. +*VFUN, ParR, Func, Par1, CON1, CON2, CON3" "*VGET - Retrieves values and stores them into an array parameter. +*VGET, ParR, Entity, ENTNUM, Item1, IT1NUM, Item2, IT2NUM, KLOOP" "*VITRP - Forms an array parameter by interpolation of a table. +*VITRP, ParR, ParT, ParI, ParJ, ParK" "*VLEN - Specifies the number of rows to be used in array parameter operations. +*VLEN, NROW, NINC" "*VMASK - Specifies an array parameter as a masking vector. +*VMASK, Par" "*VOPER - Operates on two array parameters. +*VOPER, ParR, Par1, Oper, Par2, CON1, CON2" "*VPLOT - Graphs columns (vectors) of array parameters. +*VPLOT, ParX, ParY, Y2, Y3, Y4, Y5, Y6, Y7, Y8" "*VPUT - Restores array parameter values into the ANSYS database. +*VPUT, ParR, Entity, ENTNUM, Item1, IT1NUM, Item2, IT2NUM, KLOOP" "*VREAD - Reads data and produces an array parameter vector or matrix. +*VREAD, ParR, Fname, Ext, --, Label, n1, n2, n3, NSKIP" "*VSCFUN - Determines properties of an array parameter. +*VSCFUN, ParR, Func, Par1" "*VSTAT +*VSTAT - Lists the current specifications for the array parameters." "*VWRITE - Writes data to a file in a formatted sequence. +*VWRITE, Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9, Par10, Par11, Par12, Par13, Par14, Par15, Par16, Par17, Par18, Par19" "*WRK - Sets the active workspace number. +*WRK, Num" "*XPL - Accesses content of a Mechanical APDL file. +*XPL, Action, Val1, Val2" "/AN3D - Specifies 3-D annotation functions +/AN3D, Kywrd, KEY" "/ANFILE - Saves or resumes an animation sequence to or from a file. +/ANFILE, LAB, Fname, Ext, --" "/ANGLE - Rotates the display about an axis. +/ANGLE, WN, THETA, Axis, KINCR" "/ANNOT - Activates graphics for annotating displays (GUI). +/ANNOT, Lab, VAL1, VAL2" "/ANUM - Specifies the annotation number, type, and hot spot (GUI). +/ANUM, NUM, TYPE, XHOT, YHOT" "/ASSIGN - Reassigns a file name to an ANSYS file identifier. +/ASSIGN, Ident, Fname, Ext, --, LGkey" "/AUTO - Resets the focus and distance specifications to \"automatically calculated.\" +/AUTO, WN" "/AUX12 +/AUX12 - Enters the radiation processor." "/AUX15 +/AUX15 - Enters the IGES file transfer processor." "/AUX2 +/AUX2 - Enters the binary file dumping processor." "/AUX3 +/AUX3 - Enters the results file editing processor." "/AXLAB - Labels the X and Y axes on graph displays. +/AXLAB, Axis, Lab" "/BATCH - Sets the program mode to \"batch.\" +/BATCH, Lab" "/CFORMAT - Controls the graphical display of alphanumeric character strings for parameters, components, assemblies, and tables. +/CFORMAT, NFIRST, NLAST" "/CLABEL - Specifies contour labeling. +/CLABEL, WN, KEY" "/CLEAR - Clears the database. +/CLEAR, Read" "/CLOG - Copies the session log file to a named file. +/CLOG, Fname, Ext, --" "/CMAP - Changes an existing or creates a new color mapping table. +/CMAP, Fname, Ext, --, Kywrd, NCNTR" "/COLOR - Specifies the color mapping for various items. +/COLOR, Lab, Clab, N1, N2, NINC" "/COM - Places a comment in the output. +/COM, Comment" "/CONFIG - Assigns values to Mechanical APDL configuration parameters. +/CONFIG, Lab, VAL" "/CONTOUR - Specifies the uniform contour values on stress displays. +/CONTOUR, WN, NCONT, VMIN, VINC, VMAX" "/COPY - Copies a file. +/COPY, Fname1, Ext1, --, Fname2, Ext2, --, DistKey" "/CPLANE - Specifies the cutting plane for section and capped displays. +/CPLANE, KEY" "/CTYPE - Specifies the type of contour display. +/CTYPE, KEY, DOTD, DOTS, DSHP, TLEN" "/CVAL - Specifies nonuniform contour values on stress displays. +/CVAL, WN, V1, V2, V3, V4, V5, V6, V7, V8" "/CWD - Changes the current working directory. +/CWD, DIRPATH" "/CYCEXPAND - Graphically expands displacements, stresses and strains of a cyclically symmetric model. +/CYCEXPAND, WN, OPTION, Value1, Value2" "/DELETE - Deletes a file. +/DELETE, Fname, Ext, --, DistKey" "/DEVICE - Controls graphics device options. +/DEVICE, Label, KEY" "/DFLAB - Changes degree-of-freedom labels for user custom elements. +/DFLAB, DOF, DispLab, ForceLab" "/DIRECTORY - Put the file names in the current directory into a string parameter array. +/DIRECTORY, StrArray, FileName, Ext, Dir" "/DIST - Specifies the viewing distance for magnifications and perspective. +/DIST, WN, DVAL, KFACT" "/DSCALE - Sets the displacement multiplier for displacement displays. +/DSCALE, WN, DMULT" "/DV3D - Sets 3-D device option modes. +/DV3D, Lab, Key" "/EDGE - Displays only the common lines (“edges”) of an object. +/EDGE, WN, KEY, ANGLE" "/EFACET - Specifies the number of facets per element edge for PowerGraphics displays. +/EFACET, NUM" "/EOF +/EOF - Exits the file being read." "/ERASE +/ERASE - Specifies that the screen is to be erased before each display." "/ESHAPE - Displays elements with shapes determined from the real constants, section definition, or other inputs. +/ESHAPE, SCALE, KEY" "/EXIT - Stops the run and returns control to the system. +/EXIT, Slab, Fname, Ext, --" "/EXPAND - Allows the creation of a larger graphic display than represented by the actual finite element analysis model. +/EXPAND, Nrepeat1, Type1, Method1, DX1, DY1, DZ1, Nrepeat2, Type2, Method2, DX2, DY2, DZ2, Nrepeat3, Type3, Method3, DX3, DY3, DZ3" "/FACET - Specifies the facet representation used to form solid model displays. +/FACET, Lab" "/FCOMP - Specifies file-compression options. +/FCOMP, Ident, LEVEL" "/FDELE - Deletes a binary file after it is used. +/FDELE, Ident, Stat" "/FILNAME - Changes the Jobname for the analysis. +/FILNAME, Fname, Key" "/FOCUS - Specifies the focus point (center of the window). +/FOCUS, WN, XF, YF, ZF, KTRANS" "/FORMAT - Specifies format controls for tables. +/FORMAT, NDIGIT, Ftype, NWIDTH, DSIGNF, LINE, CHAR, EXPTYPE" "/GCMD - Controls the type of element or graph display used for the GPLOT command. +/GCMD, WN, Lab1, Lab2, Lab3, Lab4, Lab5, Lab6, Lab7, Lab8, Lab9, Lab10, Lab11, Lab12" "/GCOLUMN - Allows the user to apply a label to a specified curve. +/GCOLUMN, CURVE, STRING" "/GFILE - Specifies the pixel resolution on Z-buffered graphics files. +/GFILE, SIZE" "/GFORMAT - Specifies the format for the graphical display of numbers. +/GFORMAT, Ftype, NWIDTH, DSIGNF" "/GLINE - Specifies the element outline style. +/GLINE, WN, STYLE" "/GMARKER - Specifies the curve marking style. +/GMARKER, CURVE, KEY, INCR" "/GO +/GO - Reactivates suppressed printout." "/GOLIST +/GOLIST - Reactivates the suppressed data input listing." "/GOPR +/GOPR - Reactivates suppressed printout." "/GRAPHICS - Defines the type of graphics display. +/GRAPHICS, Key" "/GRESUME - Sets graphics settings to the settings on a file. +/GRESUME, Fname, Ext, --" "/GRID - Selects the type of grid on graph displays. +/GRID, KEY" "/GROPT - Sets various line graph display options. +/GROPT, Lab, KEY" "/GRTYP - Selects single or multiple Y-axes graph displays. +/GRTYP, KAXIS" "/GSAVE - Saves graphics settings to a file for later use. +/GSAVE, Fname, Ext, --" "/GST - Turns Graphical Solution Tracking (GST) on or off. +/GST, Lab" "/GTHK - Sets line thicknesses for graph lines. +/GTHK, Label, THICK" "/GTYPE - Controls the entities that the GPLOT command displays. +/GTYPE, WN, LABEL, KEY" "/HBC - Determines how boundary condition symbols are displayed in a display window. +/HBC, WN, Key" "/HEADER - Sets page and table heading print controls. +/HEADER, Header, Stitle, Idstmp, Notes, Colhed, Minmax" "/ICLWID - Scales the line width of circuit builder icons. +/ICLWID, FACTOR" "/ICSCALE - Scales the icon size for elements supported in the circuit builder. +/ICSCALE, WN, FACTOR" "/IMAGE - Allows graphics data to be captured and saved. +/IMAGE, Label, Fname, Ext, --" "/INPUT - Switches the input file for the commands that follow. +/INPUT, Fname, Ext, Dir, LINE, LOG" "/INQUIRE - Returns system information to a parameter. +/INQUIRE, StrArray, FUNC" "/LARC - Creates annotation arcs (GUI). +/LARC, XCENTR, YCENTR, XLRAD, ANGLE1, ANGLE2" "/LIGHT - Specifies the light direction for the display window. +/LIGHT, WN, NUM, INT, XV, YV, ZV, REFL" "/LINE - Creates annotation lines (GUI). +/LINE, X1, Y1, X2, Y2" "/LSPEC - Specifies annotation line attributes (GUI). +/LSPEC, LCOLOR, LINSTL, XLNWID" "/LSYMBOL - Creates annotation symbols (GUI). +/LSYMBOL, X, Y, SYMANG, SYMTYP, SYMSIZ, KEYBMP" "/MAP +/MAP - Enters the mapping processor." "/MENU - Activates the Graphical User Interface (GUI). +/MENU, Key" "/MKDIR - Creates a directory. +/MKDIR, Dir" "/MPLIB - Sets the default material library read and write paths. +/MPLIB, R-W_opt, PATH" "/MREP - Enables you to reissue the graphics command macro \"name\" during a replot or zoom operation. +/MREP, NAME, ARG1, ARG2, ARG3, . . . , ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11, ARG12, ARG13, ARG14, ARG15, ARG16, ARG17, ARG18" "/MSTART - Controls the initial GUI components. +/MSTART, Label, KEY" "/NERR - Limits the number of warning and error messages displayed. +/NERR, NMERR, NMABT, --, IFKEY, NUM" "/NOERASE +/NOERASE - Prevents the screen erase between displays." "/NOLIST +/NOLIST - Suppresses the data input listing." "/NOPR +/NOPR - Suppresses the expanded interpreted input data listing." "/NORMAL - Allows displaying area elements by top or bottom faces. +/NORMAL, WN, KEY" "/NUMBER - Specifies whether numbers, colors, or both are used for displays. +/NUMBER, NKEY" "/OUTPUT - Redirects text output to a file or to the screen. +/OUTPUT, Fname, Ext, --, Loc" "/PAGE - Defines the printout and screen page size. +/PAGE, ILINE, ICHAR, BLINE, BCHAR, COMMA" "/PBC - Shows boundary condition (BC) symbols and values on displays. +/PBC, Item, --, KEY, MIN, MAX, ABS" "/PBF - Shows magnitude of body force loads on displays. +/PBF, Item, --, KEY" "/PCIRCLE - Creates an annotation circle (GUI). +/PCIRCLE, XCENTR, YCENTR, XLRAD" "/PLOPTS - Controls graphics options on subsequent displays. +/PLOPTS, Label, KEY" "/PMACRO +/PMACRO - Specifies that macro contents be written to the session log file." "/PMORE - Creates an annotation polygon (GUI). +/PMORE, --, X5, Y5, X6, Y6, X7, Y7, X8, Y8" "/PNUM - Controls entity numbering/coloring on plots. +/PNUM, Label, KEY" "/POLYGON - Creates annotation polygons (GUI). +/POLYGON, NVERT, X1, Y1, X2, Y2, X3, Y3, X4, Y4" "/POST1 +/POST1 - Enters the database results postprocessor." "/POST26 +/POST26 - Enters the time-history results postprocessor." "/PREP7 +/PREP7 - Enters the model creation preprocessor." "/PSEARCH - Specifies a directory to be searched for \"unknown command\" macro files. +/PSEARCH, Pname" "/PSF - Shows surface load symbols on model displays. +/PSF, Item, Comp, KEY, KSHELL, Color" "/PSPEC - Creates annotation polygon attributes (GUI). +/PSPEC, PCOLOR, KFILL, KBORDR" "/PSTATUS - Displays the global or window display specifications. +/PSTATUS, WN" "/PSYMB - Shows various symbols on displays. +/PSYMB, Label, KEY" "/PWEDGE - Creates an annotation wedge (GUI). +/PWEDGE, XCENTR, YCENTR, XLRAD, ANGLE1, ANGLE2" "/QUIT +/QUIT - Exits a processor." "/RATIO - Distorts the object geometry. +/RATIO, WN, RATOX, RATOY" "/RENAME - Renames a file. +/RENAME, Fname1, Ext1, --, Fname2, Ext2, --, DistKey" "/REPLOT - Automatically reissues the last display command for convenience. +/REPLOT, Label" "/RESET +/RESET - Resets display specifications to their initial defaults." "/RGB - Specifies the RGB color values for indices and contours. +/RGB, Kywrd, PRED, PGRN, PBLU, N1, N2, NINC, NCNTR" "/RMDIR - Removes (deletes) a directory. +/RMDIR, Dir" "/SECLIB - Sets the default section library path for the SECREAD command. +/SECLIB, Option, Path" "/SEG - Allows graphics data to be stored in the local terminal memory. +/SEG, Label, Aviname, DELAY" "/SHADE - Defines the type of surface shading used with Z-buffering. +/SHADE, WN, Type" "/SHOW - Specifies the device and other parameters for graphics displays. +/SHOW, Fname, Option, VECT, NCPL" "/SHRINK - Shrinks elements, lines, areas, and volumes for display clarity. +/SHRINK, RATIO" "/SMBC - Controls the display of solid model boundary condition symbols and labels. +/SMBC, Mode" "/SOLU +/SOLU - Enters the solution processor." "/SSCALE - Sets the contour multiplier for topographic displays. +/SSCALE, WN, SMULT" "/STATUS - Lists the status of items for the run. +/STATUS, Lab" "/STITLE - Defines subtitles. +/STITLE, NLINE, Title" "/SYP - Passes a command string and arguments to the operating system. +/SYP, String, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8" "/SYS - Passes a command string to the operating system. +/SYS, String" "/TEE - Writes a list of commands to a specified file at the same time that the commands are being executed. +/TEE, Label, Fname, Ext, --" "/TITLE - Defines a main title. +/TITLE, Title" "/TLABEL - Creates annotation text (GUI). +/TLABEL, XLOC, YLOC, Text" "/TRIAD - Shows the global XYZ coordinate triad on displays. +/TRIAD, Lab" "/TRLCY - Specifies the level of translucency. +/TRLCY, Lab, TLEVEL, N1, N2, NINC" "/TSPEC - Creates annotation text attributes (GUI). +/TSPEC, TCOLOR, TSIZE, TXTHIC, PANGLE, IANGLE" "/TXTRE - Controls application of texture to selected items. +/TXTRE, Lab, NUM, N1, N2, NINC" "/TYPE - Defines the type of display. +/TYPE, WN, Type" "/UCMD - Assigns a user-defined command name. +/UCMD, Cmd, SRNUM" "/UDOC - Determines position and content for the multi-legend options. +/UDOC, WIND, Class, Key," "/UI - Activates specified GUI dialog boxes. +/UI, Func, Type, Format, Screen, Color, Krev, Orient, Compress, Quality" "/UIS - Controls the GUI behavior. +/UIS, Label, VALUE" "/UNITS - Annotates the database with the system of units used. +/UNITS, Label, LENFACT, MASSFACT, TIMEFACT, TEMPFACT, TOFFSET, CHARGEFACT, FORCEFACT, HEATFACT" "/USER - Conveniently resets /FOCUS and /DIST to USER. +/USER, WN" "/VCONE - Defines the view cone angle for perspective displays. +/VCONE, WN, PHI" "/VIEW - Defines the viewing direction for the display. +/VIEW, WN, XV, YV, ZV" "/VSCALE - Scales the length of displayed vectors. +/VSCALE, WN, VRATIO, KEY" "/VUP - Specifies the global Cartesian coordinate system reference orientation. +/VUP, WN, Label" "/WAIT - Causes a delay before the reading of the next command. +/WAIT, DTIME" "/WINDOW - Defines the window size on the screen. +/WINDOW, WN, XMIN, XMAX, YMIN, YMAX, NCOPY" "/XFRM - Controls the centroid or the axis of dynamic rotation. +/XFRM, LAB, X1, Y1, Z1, X2, Y2, Z2" "/XRANGE - Specifies a linear abscissa (X) scale range. +/XRANGE, XMIN, XMAX" "/YRANGE - Specifies a linear ordinate (Y) scale range. +/YRANGE, YMIN, YMAX, NUM" "/ZOOM - Zooms a region of a display window. +/ZOOM, WN, Lab, X1, Y1, X2, Y2" "A - Defines an area by connecting keypoints. +A, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18" "AADD - Adds separate areas to create a single area. +AADD, NA1, NA2, NA3, NA4, NA5, NA6, NA7, NA8, NA9" "AATT - Associates element attributes with the selected, unmeshed areas. +AATT, MAT, REAL, TYPE, ESYS, SECN" "ABBRES - Reads abbreviations from a coded file. +ABBRES, Lab, Fname, Ext, --" "ABBSAV - Writes the current abbreviation set to a coded file. +ABBSAV, Lab, Fname, Ext, --" "ABEXTRACT - Extracts the alpha-beta damping multipliers for Rayleigh damping. +ABEXTRACT, MODE1, MODE2" "ABS - Forms the absolute value of a variable. +ABS, IR, IA, --, --, Name, --, --, FACTA" "ACCAT - Concatenates multiple areas in preparation for mapped meshing. +ACCAT, NA1, NA2" "ACCOPTION - Specifies GPU accelerator capability options. +ACCOPTION, Activate" "ACEL - Specifies the linear acceleration of the global Cartesian reference frame for the analysis. +ACEL, ACEL_X, ACEL_Y, ACEL_Z" "ACLEAR - Deletes nodes and area elements associated with selected areas. +ACLEAR, NA1, NA2, NINC" "ADAMS - Performs solutions and writes flexible body information to a modal neutral file (Jobname.MNF) for use in an ADAMS analysis. +ADAMS, NMODES, KSTRESS, KSHELL" "ADD - Adds (sums) variables. +ADD, IR, IA, IB, IC, Name, --, --, FACTA, FACTB, FACTC" "ADDAM - Specifies the acceleration spectrum computation constants for the analysis of shock resistance of shipboard structures. +ADDAM, AF, AA, AB, AC, AD, AMIN" "ADELE - Deletes unmeshed areas. +ADELE, NA1, NA2, NINC, KSWP" "ADGL - Lists keypoints of an area that lie on a parametric degeneracy. +ADGL, NA1, NA2, NINC" "ADRAG - Generates areas by dragging a line pattern along a path. +ADRAG, NL1, NL2, NL3, NL4, NL5, NL6, NLP1, NLP2, NLP3, NLP4, NLP5, NLP6" "AEROCOEFF - Computes the aero-damping and stiffness coefficients and writes them to an APDL array. +AEROCOEFF, AeroModeType, AeroMappedFileNames, AeroSpecs, AeroScalar, nBlades, AutoFileRead" "AESIZE - Specifies the element size to be meshed onto areas. +AESIZE, ANUM, SIZE," "AFILLT - Generates a fillet at the intersection of two areas. +AFILLT, NA1, NA2, RAD" "AFLIST +AFLIST - Lists the current data in the database." "AFSURF - Generates surface elements overlaid on the surface of existing solid elements and assigns the extra node as the closest fluid element node. +AFSURF, SAREA, TLINE" "AGEN - Generates additional areas from a pattern of areas. +AGEN, ITIME, NA1, NA2, NINC, DX, DY, DZ, KINC, NOELEM, IMOVE" "AGLUE - Generates new areas by \"gluing\" areas. +AGLUE, NA1, NA2, NA3, NA4, NA5, NA6, NA7, NA8, NA9" "AINA - Finds the intersection of areas. +AINA, NA1, NA2, NA3, NA4, NA5, NA6, NA7, NA8, NA9" "AINP - Finds the pairwise intersection of areas. +AINP, NA1, NA2, NA3, NA4, NA5, NA6, NA7, NA8, NA9" "AINV - Finds the intersection of an area with a volume. +AINV, NA, NV" "AL - Generates an area bounded by previously defined lines. +AL, L1, L2, L3, L4, L5, L6, L7, L8, L9, L10" "ALIST - Lists the defined areas. +ALIST, NA1, NA2, NINC, Lab" "ALLSEL - Selects all entities with a single command. +ALLSEL, LabT, Entity" "ALPHAD - Defines the mass matrix multiplier for damping. +ALPHAD, VALUE" "AMAP - Generates a 2-D mapped mesh based on specified area corners. +AMAP, AREA, KP1, KP2, KP3, KP4" "AMBEAM - For multiple-beam printers, specifies the number of beams in an additive manufacturing analysis. +AMBEAM, NUMBEAMS" "AMBUILD - Specifies printer parameters for the build and other options in an additive manufacturing analysis. +AMBUILD, Option, VAL1, VAL2" "AMENV - Specifies the build-environment thermal boundary conditions in an additive manufacturing analysis. +AMENV, TGAS, HGAS" "AMESH - Generates nodes and area elements within areas. +AMESH, NA1, NA2, NINC" "AMMAT - Specifies the melting and relaxation temperatures of the build material in an additive manufacturing analysis. +AMMAT, MATPART, TMELT, TRELAX" "AMPOWDER - Specifies the thermal conditions of the powder in an additive manufacturing analysis. +AMPOWDER, TPOWDER, HPOWDER, MATFACTOR" "AMSTEP - Specifies the build-sequence steps in an additive manufacturing analysis. +AMSTEP, Sequence, VAL1, VAL2, VAL3, VAL4" "AMSUPPORTS - Specifies information about the supports in an additive manufacturing analysis. +AMSUPPORTS, NSUPPORTS, CompName, SectArray" "AMTYPE - Specifies the printing process in an additive manufacturing analysis. +AMTYPE, Process" "ANCNTR - Produces an animated sequence of a contoured deformed shape. +ANCNTR, NFRAM, DELAY, NCYCL" "ANCUT - Produces an animated sequence of Q-slices. +ANCUT, NFRAM, DELAY, NCYCL, QOFF, KTOP, TOPOFF, NODE1, NODE2, NODE3" "ANCYC - Applies a traveling wave animation to graphics data in a modal cyclic symmetry analysis. +ANCYC, NUMFRAMES, KCYCL, DELAY" "ANDATA - Displays animated graphics data for nonlinear problems. +ANDATA, DELAY, NCYCL, RSLTDAT, MIN, MAX, INCR, FRCLST, AUTOCONT, --, AUTOCNTR" "ANDSCL - Produces an animated sequence of a deformed shape. +ANDSCL, NFRAM, DELAY, NCYCL" "ANDYNA - Produces an animated sequence of contour values through substeps. +ANDYNA, DELAY, NCYCL, START, END, INC, AUTOCONTOURKEY" "ANFLOW - Produces an animated sequence of particle flow in a flowing fluid or a charged particle traveling in an electric or magnetic field. +ANFLOW, NFRAM, DELAY, NCYCL, TIME, SPACING, SIZE, LENGTH" "ANHARM - Produces an animated sequence of time-harmonic results or complex mode shapes. +ANHARM, NFRAM, DELAY, NCYCL, NPERIOD, CMS_ANTYPE, CMS_MODOPT" "ANIM - Displays animated graphics data for linear problems. +ANIM, NCYCL, KCYCL, DELAY" "ANISOS - Produces an animated sequence of an isosurface. +ANISOS, NFRAM, DELAY, NCYCL" "ANMODE - Produces an animated sequence of a mode shape. +ANMODE, NFRAM, DELAY, NCYCL, KACCEL" "ANORM - Reorients area normals. +ANORM, ANUM, NOEFLIP" "ANPRES - Produces an animated sequence of the time-harmonic pressure variation of an engine-order excitation in a cyclic harmonic analysis. +ANPRES, NFRAM, DELAY, NCYCL, RefFrame" "ANSOL - Specifies averaged nodal data to be stored from the results file in the solution coordinate system. +ANSOL, NVAR, NODE, Item, Comp, Name, Mat, Real, Ename" "ANSTOAQWA - Creates an AQWA-LINE input file from the current Mechanical APDL model. +ANSTOAQWA, Fname, VertAxis, Gc, Rho, HWL, DiffKey, SymxKey, SymyKey" "ANSTOASAS - Creates an ASAS input file from the current ANSYS model. +ANSTOASAS, Fname, KEY" "ANTIME - Generates a sequential contour animation over a range of time. +ANTIME, NFRAM, DELAY, NCYCL, AUTOCNTRKY, RSLTDAT, MIN, MAX" "ANTYPE - Specifies the analysis type and restart status. +ANTYPE, Antype, Status, LDSTEP, SUBSTEP, Action, --, PRELP" "AOFFST - Generates an area, offset from a given area. +AOFFST, NAREA, DIST, KINC" "AOVLAP - Overlaps areas. +AOVLAP, NA1, NA2, NA3, NA4, NA5, NA6, NA7, NA8, NA9" "APLOT - Displays the selected areas. +APLOT, NA1, NA2, NINC, DEGEN, SCALE" "APORT - Specifies input data for plane wave and acoustic duct ports. +APORT, PortNum, Label, KCN, PRES, PHASE, --, VAL1, VAL2, VAL3, VAL4" "APPEND - Reads data from the results file and appends it to the database. +APPEND, LSTEP, SBSTEP, FACT, KIMG, TIME, ANGLE, NSET" "APTN - Partitions areas. +APTN, NA1, NA2, NA3, NA4, NA5, NA6, NA7, NA8, NA9" "ARCLEN - Activates the arc-length method. +ARCLEN, Key, MAXARC, MINARC" "ARCTRM - Controls termination of the solution when the arc-length method is used. +ARCTRM, Lab, VAL, NODE, DOF" "AREAS +AREAS - Specifies \"Areas\" as the subsequent status topic." "AREFINE - Refines the mesh around specified areas. +AREFINE, NA1, NA2, NINC, LEVEL, DEPTH, POST, RETAIN" "AREMESH - Generates an area in which to create a new mesh for rezoning. +AREMESH, LCOMB, ANGLE" "AREVERSE - Reverses the normal of an area, regardless of its connectivity or mesh status. +AREVERSE, ANUM, NOEFLIP" "AROTAT - Generates cylindrical areas by rotating a line pattern about an axis. +AROTAT, NL1, NL2, NL3, NL4, NL5, NL6, PAX1, PAX2, ARC, NSEG" "ARSCALE - Generates a scaled set of areas from a pattern of areas. +ARSCALE, NA1, NA2, NINC, RX, RY, RZ, KINC, NOELEM, IMOVE" "ARSYM - Generates areas from an area pattern by symmetry reflection. +ARSYM, Ncomp, NA1, NA2, NINC, KINC, NOELEM, IMOVE" "ASBA - Subtracts areas from areas. +ASBA, NA1, NA2, SEPO, KEEP1, KEEP2" "ASBL - Subtracts lines from areas. +ASBL, NA, NL, --, KEEPA, KEEPL" "ASBV - Subtracts volumes from areas. +ASBV, NA, NV, SEPO, KEEPA, KEEPV" "ASBW - Subtracts the intersection of the working plane from areas (divides areas). +ASBW, NA, SEPO, KEEP" "ASCRES - Specifies the output type for an acoustic scattering analysis. +ASCRES, Opt" "ASEL - Selects a subset of areas. +ASEL, Type, Item, Comp, VMIN, VMAX, VINC, KSWP" "ASIFILE - Writes or reads one-way acoustic-structural coupling data. +ASIFILE, Opt, Fname, Ext, Oper, kDim, kOut, LIMIT" "ASKIN - Generates an area by \"skinning\" a surface through guiding lines. +ASKIN, NL1, NL2, NL3, NL4, NL5, NL6, NL7, NL8, NL9" "ASLL - Selects those areas containing the selected lines. +ASLL, Type, ARKEY" "ASLV - Selects those areas contained in the selected volumes. +ASLV, Type" "ASOL - Specifies the acoustic solver with scattered field formulation. +ASOL, Lab, Opt" "ASUB - Generates an area using the shape of an existing area. +ASUB, NA1, P1, P2, P3, P4" "ASUM - Calculates and prints geometry statistics of the selected areas. +ASUM, LAB" "ATAN - Forms the arctangent of a complex variable. +ATAN, IR, IA, --, --, Name, --, --, FACTA" "ATRAN - Transfers a pattern of areas to another coordinate system. +ATRAN, KCNTO, NA1, NA2, NINC, KINC, NOELEM, IMOVE" "ATYPE +ATYPE - Specifies \"Analysis types\" as the subsequent status topic." "AUTOTS - Specifies whether to use automatic time stepping or load stepping. +AUTOTS, Key" "AVPRIN - Specifies how principal and vector sums are to be calculated. +AVPRIN, KEY, EFFNU" "AVRES - Specifies how results data will be averaged when PowerGraphics is enabled. +AVRES, KEY, Opt" "AWAVE - Specifies input data for an acoustic incident wave. +AWAVE, Wavenum, Wavetype, Opt1, Opt2, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8, VAL9, VAL10, VAL11, VAL12, VAL13" "BCSOPTION - Sets memory option for the sparse solver. +BCSOPTION, --, Memory_Option, Memory_Size, --, --, Solve_Info" "BETAD - Defines the stiffness matrix multiplier for damping. +BETAD, VALUE" "BF - Defines a nodal body force load. +BF, Node, Lab, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6" "BFA - Defines a body force load on an area. +BFA, Area, Lab, VAL1, VAL2, VAL3, VAL4" "BFADELE - Deletes body force loads on an area. +BFADELE, AREA, Lab" "BFALIST - Lists the body force loads on an area. +BFALIST, AREA, Lab" "BFCUM - Specifies that nodal body force loads are to be accumulated. +BFCUM, Lab, Oper, FACT, TBASE" "BFDELE - Deletes nodal body force loads. +BFDELE, NODE, Lab" "BFE - Defines an element body-force load. +BFE, Elem, Lab, STLOC, VAL1, VAL2, VAL3, VAL4" "BFECUM - Specifies whether to ignore subsequent element body force loads. +BFECUM, Lab, Oper, FACT, TBASE" "BFEDELE - Deletes element body force loads. +BFEDELE, ELEM, Lab" "BFELIST - Lists the element body force loads. +BFELIST, ELEM, Lab" "BFESCAL - Scales element body force loads. +BFESCAL, Lab, FACT, TBASE" "BFINT - Activates the body force interpolation operation. +BFINT, Fname1, Ext1, --, Fname2, Ext2, --, KPOS, Clab, KSHS, TOLOUT, TOLHGT" "BFK - Defines a body force load at a keypoint. +BFK, Kpoi, Lab, VAL1, VAL2, VAL3, PHASE" "BFKDELE - Deletes body force loads at a keypoint. +BFKDELE, KPOI, Lab" "BFKLIST - Lists the body force loads at keypoints. +BFKLIST, KPOI, Lab" "BFL - Defines a body force load on a line. +BFL, Line, Lab, VAL1, VAL2, VAL3, VAL4" "BFLDELE - Deletes body force loads on a line. +BFLDELE, LINE, Lab" "BFLIST - Lists the body force loads on nodes. +BFLIST, NODE, Lab" "BFLLIST - Lists the body force loads on a line. +BFLLIST, LINE, Lab" "BFSCALE - Scales body force loads at nodes. +BFSCALE, Lab, FACT, TBASE" "BFTRAN +BFTRAN - Transfers solid model body force loads to the finite element model." "BFUNIF - Assigns a uniform body force load to all nodes. +BFUNIF, Lab, VALUE" "BFV - Defines a body force load on a volume. +BFV, Volu, Lab, VAL1, VAL2, VAL3, PHASE" "BFVDELE - Deletes body force loads on a volume. +BFVDELE, VOLU, Lab" "BFVLIST - Lists the body force loads on a volume. +BFVLIST, VOLU, Lab" "BIOOPT +BIOOPT - Specifies \"Biot-Savart options\" as the subsequent status topic." "BIOT - Calculates the Biot-Savart source magnetic field intensity. +BIOT, Label" "BLC4 - Creates a rectangular area or block volume by corner points. +BLC4, XCORNER, YCORNER, WIDTH, HEIGHT, DEPTH" "BLC5 - Creates a rectangular area or block volume by center and corner points. +BLC5, XCENTER, YCENTER, WIDTH, HEIGHT, DEPTH" "BLOCK - Creates a block volume based on working plane coordinates. +BLOCK, X1, X2, Y1, Y2, Z1, Z2" "BOOL +BOOL - Specifies \"Booleans\" as the subsequent status topic." "BOPTN - Specifies Boolean operation options. +BOPTN, Lab, Value" "BSAX - Specifies the axial strain and axial force relationship for beam sections. +BSAX, VAL1, VAL2, T" "BSM1 - Specifies the bending curvature and moment relationship in plane XZ for beam sections. +BSM1, VAL1, VAL2, T" "BSM2 - Specifies the bending curvature and moment relationship in plane XY for beam sections. +BSM2, VAL1, VAL2, T" "BSMD - Specifies mass per unit length for a nonlinear general beam section. +BSMD, DENS" "BSPLIN - Generates a single line from a spline fit to a series of keypoints. +BSPLIN, P1, P2, P3, P4, P5, P6, XV1, YV1, ZV1, XV6, YV6, ZV6" "BSS1 - Specifies the transverse shear strain and force relationship in plane XZ for beam sections. +BSS1, VAL1, VAL2, T" "BSS2 - Specifies the transverse shear strain and force relationship in plane XY for beam sections. +BSS2, VAL1, VAL2, T" "BSTE - Specifies a thermal expansion coefficient for a nonlinear general beam section. +BSTE, ALPHA" "BSTQ - Specifies the cross section twist and torque relationship for beam sections. +BSTQ, VAL1, VAL2, T" "BTOL - Specifies the Boolean operation tolerances. +BTOL, PTOL" "BUCOPT - Specifies buckling analysis options. +BUCOPT, Method, NMODE, SHIFT, LDMULTE, RangeKey" "C*** - Places a comment in the output. +C***, Comment" "CALC +CALC - Specifies \"Calculation settings\" as the subsequent status topic." "CAMPBELL - Prepares the result file for a subsequent Campbell diagram of a prestressed structure. +CAMPBELL, Action" "CBDOF - Activates cut-boundary interpolation (for submodeling). +CBDOF, Fname1, Ext1, --, Fname2, Ext2, --, KPOS, Clab, KSHS, TOLOUT, TOLHGT, TOLTHK" "CBMD - Specifies preintegrated section mass matrix for composite-beam sections. +CBMD, ROW, C(R)(R) , C(R)(R+1) , C(R)(R+2) , C(R)(R+3) , C(R)(R+4) , C(R)(R+5)" "CBMX - Specifies preintegrated cross-section stiffness for composite beam sections. +CBMX, ROW, S(R)(R) , S(R)(R+1) , S(R)(R+2) , S(R)(R+3) , S(R)(R+4) , S(R)(R+5) , S(R)(R+6)" "CBTE - Specifies a thermal expansion coefficient for a composite beam section. +CBTE, ALPHA" "CBTMP - Specifies a temperature for composite-beam input. +CBTMP, TEMP" "CDOPT - Specifies format to be used for archiving geometry. +CDOPT, Option" "CDREAD - Reads a file of solid model and database information into the database. +CDREAD, Option, Fname, Ext, --, Fnamei, Exti" "CDWRITE - Writes geometry and load database items to a file. +CDWRITE, Option, Fname, Ext, --, Fnamei, Exti, Fmat" "CE - Defines a constraint equation relating degrees of freedom. +CE, NEQN, CONST, NODE1, Lab1, C1, NODE2, Lab2, C2, NODE3, Lab3, C3" "CECHECK - Check constraint equations and couplings for rigid body motions. +CECHECK, ItemLab, Tolerance, DOF" "CECMOD - Modifies the constant term of a constraint equation during solution. +CECMOD, NEQN, CONST" "CECYC - Generates the constraint equations for a cyclic symmetry analysis +CECYC, Lowname, Highname, Nsector, HIndex, Tolerance, Kmove, Kpairs" "CEDELE - Deletes constraint equations. +CEDELE, NEQN1, NEQN2, NINC, Nsel" "CEINTF - Generates constraint equations at an interface. +CEINTF, TOLER, DOF1, DOF2, DOF3, DOF4, DOF5, DOF6, MoveTol" "CELIST - Lists the constraint equations. +CELIST, NEQN1, NEQN2, NINC, Option" "CENTER - Defines a node at the center of curvature of 2 or 3 nodes. +CENTER, NODE, NODE1, NODE2, NODE3, RADIUS" "CEQN +CEQN - Specifies \"Constraint equations\" as the subsequent status topic." "CERIG - Defines a rigid region. +CERIG, MASTE, SLAVE, Ldof, Ldof2, Ldof3, Ldof4, Ldof5" "CESGEN - Generates a set of constraint equations from existing sets. +CESGEN, ITIME, INC, NSET1, NSET2, NINC" "CFACT - Defines complex scaling factors to be used with operations. +CFACT, RFACTA, IFACTA, RFACTB, IFACTB, RFACTC, IFACTC" "CGLOC - Specifies the origin location of the acceleration coordinate system. +CGLOC, XLOC, YLOC, ZLOC" "CGOMGA - Specifies the rotational velocity of the global origin. +CGOMGA, CGOMX, CGOMY, CGOMZ" "CGROW - Defines crack-growth information +CGROW, Action, Par1, Par2, Par3" "CHECK - Checks current database items for completeness. +CHECK, Sele, Levl" "CHKMSH - Checks area and volume entities for previous meshes. +CHKMSH, Comp" "CINT - Defines parameters associated with fracture-parameter calculations +CINT, Action, Par1, Par2, Par3, Par4, Par5, Par6, Par7" "CIRCLE - Generates circular arc lines. +CIRCLE, PCENT, RAD, PAXIS, PZERO, ARC, NSEG" "CISOL - Stores fracture parameter information in a variable. +CISOL, n, ID, node, Cont, Dtype" "CLOCAL - Defines a local coordinate system relative to the active coordinate system. +CLOCAL, KCN, KCS, XL, YL, ZL, THXY, THYZ, THZX, PAR1, PAR2" "CLOG - Forms the common log of a variable +CLOG, IR, IA, --, --, Name, --, --, FACTA, FACTB" "CLRMSHLN +CLRMSHLN - Clears meshed entities." "CM - Groups geometry items into a component. +CM, Cname, Entity, --, KOPOT" "CMACEL - Specifies the translational acceleration of an element component +CMACEL, CM_NAME, CMACEL_X, CMACEL_Y, CMACEL_Z" "CMATRIX - Performs electrostatic field solutions and calculates the self and mutual capacitances between multiple conductors. +CMATRIX, SYMFAC, Condname, NUMCOND, GRNDKEY, Capname" "CMDELE - Deletes a component or assembly definition. +CMDELE, Name" "CMDOMEGA - Specifies the rotational acceleration of an element component about a user-defined rotational axis. +CMDOMEGA, CM_NAME, DOMEGAX, DOMEGAY, DOMEGAZ, X1, Y1, Z1, X2, Y2, Z2" "CMEDIT - Edits an existing assembly. +CMEDIT, Aname, Oper, Cnam1, Cnam2, Cnam3, Cnam4, Cnam5, Cnam6, Cnam7" "CMGRP - Groups components and assemblies into an assembly. +CMGRP, Aname, Cnam1, Cnam2, Cnam3, Cnam4, Cnam5, Cnam6, Cnam7, Cnam8" "CMLIST - Lists the contents of a component or assembly. +CMLIST, Name, Key, Entity" "CMMOD - Modifies the specification of a component. +CMMOD, Cname, Keyword, Value" "CMOMEGA - Specifies the rotational velocity of an element component about a user-defined rotational axis. +CMOMEGA, CM_NAME, OMEGAX, OMEGAY, OMEGAZ, X1, Y1, Z1, X2, Y2, Z2" "CMPLOT - Plots the entities contained in a component or assembly. +CMPLOT, Label, Entity, Keyword" "CMROTATE - Specifies the rotational velocity of an element component in a brake-squeal analysis. +CMROTATE, CM_Name, ROTATX, ROTATY, ROTATZ, X1, Y1, Z1, X2, Y2, Z2" "CMSEL - Selects a subset of components and assemblies. +CMSEL, Type, Name, Entity" "CMSFILE - Specifies a list of component mode synthesis (CMS) results files for plotting results on the assembly. +CMSFILE, Option, Fname, Ext, CmsKey" "CMSOPT - Specifies component mode synthesis (CMS) analysis options. +CMSOPT, Cmsmeth, NMODE, FREQB, FREQE, Fbddef, FBDVAL, IOkey, --, --, Elcalc, --, Eigmeth, nStartVN" "CMWRITE - Writes node and element components and assemblies to a file. +CMWRITE, Fname, Ext, --, --, Fmat" "CNCHECK - Provides and/or adjusts the initial status of contact pairs. +CNCHECK, Option, RID1, RID2, RINC, InterType, TRlevel, Val1, Val2, Val3" "CNKMOD - Modifies contact element key options. +CNKMOD, ITYPE, KNUM, VALUE" "CNTR - Redirects contact pair output quantities to a text file. +CNTR, Option, Key" "CNVTOL - Sets convergence values for nonlinear analyses. +CNVTOL, Lab, VALUE, TOLER, NORM, MINREF" "COMBINE - Combines distributed memory parallel (Distributed ANSYS) files. +COMBINE, FileType, NUM" "COMPRESS +COMPRESS - Deletes all specified sets." "CON4 - Creates a conical volume anywhere on the working plane. +CON4, XCENTER, YCENTER, RAD1, RAD2, DEPTH" "CONE - Creates a conical volume centered about the working plane origin. +CONE, RBOT, RTOP, Z1, Z2, THETA1, THETA2" "CONJUG - Forms the complex conjugate of a variable. +CONJUG, IR, IA, --, --, Name, --, --, FACTA" "CORIOLIS - Applies the Coriolis effect to a rotating structure. +CORIOLIS, Option, --, --, RefFrame, RotDamp, RotMass" "COUPLE +COUPLE - Specifies \"Node coupling\" as the subsequent status topic." "COVAL - Defines PSD cospectral values. +COVAL, TBLNO1, TBLNO2, SV1, SV2, SV3, SV4, SV5, SV6, SV7" "CP - Defines (or modifies) a set of coupled degrees of freedom. +CP, NSET, Lab, NODE1, NODE2, NODE3, NODE4, NODE5, NODE6, NODE7, NODE8, NODE9, NODE10, NODE11, NODE12, NODE13, NODE14, NODE15, NODE16, NODE17" "CPCYC - Couples the two side faces of a cyclically symmetric model for loadings that are the same on every segment. +CPCYC, Lab, TOLER, KCN, DX, DY, DZ, KNONROT" "CPDELE - Deletes coupled degree of freedom sets. +CPDELE, NSET1, NSET2, NINC, Nsel" "CPINTF - Defines coupled degrees of freedom at an interface. +CPINTF, Lab, TOLER" "CPLGEN - Generates sets of coupled nodes from an existing set. +CPLGEN, NSETF, Lab1, Lab2, Lab3, Lab4, Lab5" "CPLIST - Lists the coupled degree of freedom sets. +CPLIST, NSET1, NSET2, NINC, Nsel" "CPMERGE - Merges different couple sets with duplicate degrees of freedom into one couple set. +CPMERGE, Lab" "CPNGEN - Defines, modifies, or adds to a set of coupled degrees of freedom. +CPNGEN, NSET, Lab, NODE1, NODE2, NINC" "CPSGEN - Generates sets of coupled nodes from existing sets. +CPSGEN, ITIME, INC, NSET1, NSET2, NINC" "CQC - Specifies the complete quadratic mode combination method. +CQC, SIGNIF, Label, , ForceType" "CS - Defines a local coordinate system by three node locations. +CS, KCN, KCS, NORIG, NXAX, NXYPL, PAR1, PAR2" "CSCIR - Locates the singularity for non-Cartesian local coordinate systems. +CSCIR, KCN, KTHET, KPHI" "CSDELE - Deletes local coordinate systems. +CSDELE, KCN1, KCN2, KCINC" "CSKP - Defines a local coordinate system by three keypoint locations. +CSKP, KCN, KCS, PORIG, PXAXS, PXYPL, PAR1, PAR2" "CSLIST - Lists coordinate systems. +CSLIST, KCN1, KCN2, KCINC" "CSWPLA - Defines a local coordinate system at the origin of the working plane. +CSWPLA, KCN, KCS, PAR1, PAR2" "CSYS - Activates a previously defined coordinate system. +CSYS, KCN" "CURR2D +CURR2D - Calculates current flow in a 2-D conductor." "CUTCONTROL - Controls time-step cutback during a nonlinear solution. +CUTCONTROL, Lab, VALUE, Option" "CVAR - Computes covariance between two quantities. +CVAR, IR, IA, IB, ITYPE, DATUM, Name" "CYCCALC - Calculates results from a cyclic harmonic mode-superposition analysis using the specifications defined by CYCSPEC. +CYCCALC, FilePrefix, FileFormat, Separator" "CYCFILES - Specifies the data files where results are to be found for a cyclic symmetry mode-superposition harmonic analysis. +CYCFILES, FnameRst, ExtRst, FnameRfrq, ExtRfrq" "CYCFREQ - Specifies solution options for a cyclic symmetry mode-superposition harmonic analysis. +CYCFREQ, Option, Value1, Value2, Value3, Value4, Value5" "CYCLIC - Specifies a cyclic symmetry analysis. +CYCLIC, NSECTOR, ANGLE, KCN , Name, USRCOMP, USRNMAP" "CYCOPT - Specifies solution options for a cyclic symmetry analysis. +CYCOPT, OPTION, Value1, Value2, Value3, Value4, Value5, Value6, Value7" "CYCPHASE - Provides tools for determining minimum and maximum possible result values from frequency couplets produced in a modal cyclic symmetry analysis. +CYCPHASE, TYPE, OPTION" "CYCSPEC - Defines the set of result items for a subsequent CYCCALC command in postprocessing a cyclic harmonic mode-superposition analysis. +CYCSPEC, LABEL, Node, Item, Comp" "CYL4 - Creates a circular area or cylindrical volume anywhere on the working plane. +CYL4, XCENTER, YCENTER, RAD1, THETA1, RAD2, THETA2, DEPTH" "CYL5 - Creates a circular area or cylindrical volume by end points. +CYL5, XEDGE1, YEDGE1, XEDGE2, YEDGE2, DEPTH" "CYLIND - Creates a cylindrical volume centered about the working plane origin. +CYLIND, RAD1, RAD2, Z1, Z2, THETA1, THETA2" "CZDEL - Edits or clears cohesive zone sections. +CZDEL, grp1, grp2, grp3" "CZMESH - Create and mesh an interface area composed of cohesive zone elements. +CZMESH, ecomps1, ecomps2, KCN, KDIR, VALUE, CZTOL" "D - Defines degree-of-freedom constraints at nodes. +D, Node, Lab, VALUE, VALUE2, NEND, NINC, Lab2, Lab3, Lab4, Lab5, Lab6" "DA - Defines degree-of-freedom constraints on areas. +DA, AREA, Lab, Value1, Value2" "DADELE - Deletes degree-of-freedom constraints on an area. +DADELE, AREA, Lab" "DALIST - Lists the DOF constraints on an area. +DALIST, AREA" "DAMORPH - Move nodes in selected areas to conform to structural displacements. +DAMORPH, AREA, XLINE, RMSHKY" "DATA - Reads data records from a file into a variable. +DATA, IR, LSTRT, LSTOP, LINC, Name, KCPLX" "DATADEF +DATADEF - Specifies \"Directly defined data status\" as the subsequent status topic." "DCGOMG - Specifies the rotational acceleration of the global origin. +DCGOMG, DCGOX, DCGOY, DCGOZ" "DCUM - Specifies that DOF constraint values are to be accumulated. +DCUM, Oper, RFACT, IFACT, TBASE" "DCVSWP - Performs a DC voltage sweep on a ROM element. +DCVSWP, Option, Elem, Cnum, Vmax, Vinc1, Vinc2, Gap" "DDASPEC - Specifies the shock spectrum computation constants for DDAM analysis. +DDASPEC, KeyRef, Shptyp, MountLoc, Deftyp, Amin" "DDELE - Deletes degree-of-freedom constraints. +DDELE, NODE, Lab, NEND, NINC, Rkey" "DDOPTION - Sets domain decomposer option for Distributed ANSYS. +DDOPTION, Decomp, NPROCPERSOL, NUMLPFREQS" "DEACT +DEACT - Specifies \"Element birth and death\" as the subsequent status topic." "DEFINE +DEFINE - Specifies \"Data definition settings\" as the subsequent status topic." "DELETE - Specifies sets in the results file to be deleted before postprocessing. +DELETE, SET, Nstart, Nend" "DELTIM - Specifies the time step sizes to be used for the current load step. +DELTIM, DTIME, DTMIN, DTMAX, Carry" "DEMORPH - Move nodes in selected elements to conform to structural displacements. +DEMORPH, ELEM, DIMN, RMSHKY" "DERIV - Differentiates a variable. +DERIV, IR, IY, IX, --, Name, --, --, FACTA" "DESIZE - Controls default element sizes. +DESIZE, MINL, MINH, MXEL, ANGL, ANGH, EDGMN, EDGMX, ADJF, ADJM" "DESOL - Defines or modifies solution results at a node of an element. +DESOL, ELEM, NODE, Item, Comp, V1, V2, V3, V4, V5, V6" "DETAB - Modifies element table results in the database. +DETAB, ELEM, Lab, V1, V2, V3, V4, V5, V6" "DFLX - Imposes a uniform magnetic flux B on an edge-element electromagnetic model. +DFLX, NODE, BX, BY, BZ, BX2, BY2, BZ2" "DFSWAVE - Specifies the incident planar waves with random phases for a diffuse sound field. +DFSWAVE, KCN, RADIUS, PSDREF, DENS, SONIC, INCANG, NPARA, SampOpt" "DIG - Digitizes nodes to a surface. +DIG, NODE1, NODE2, NINC" "DIGIT +DIGIT - Specifies \"Node digitizing\" as the subsequent status topic." "DISPLAY +DISPLAY - Specifies \"Display settings\" as the subsequent status topic." "DJ - Specifies boundary conditions on the components of relative motion of a joint element. +DJ, ELEM, LABEL, VALUE" "DJDELE - Deletes boundary conditions on the components of relative motion of a joint element. +DJDELE, ELEM, LAB" "DJLIST - Lists boundary conditions applied to joint elements. +DJLIST, Elem" "DK - Defines DOF constraints at keypoints. +DK, KPOI, Lab, VALUE, VALUE2, KEXPND, Lab2, Lab3, Lab4, Lab5, Lab6" "DKDELE - Deletes DOF constraints at a keypoint. +DKDELE, KPOI, Lab" "DKLIST - Lists the DOF constraints at keypoints. +DKLIST, KPOI" "DL - Defines DOF constraints on lines. +DL, LINE, AREA, Lab, Value1, Value2" "DLDELE - Deletes DOF constraints on a line. +DLDELE, LINE, Lab" "DLIST - Lists DOF constraints. +DLIST, NODE1, NODE2, NINC" "DLLIST - Lists DOF constraints on a line. +DLLIST, LINE" "DMOVE - Digitizes nodes on surfaces and along intersections. +DMOVE, NODE1, NODE2, NINC" "DMPEXT - Extracts modal damping coefficients in a specified frequency range. +DMPEXT, SMODE, TMODE, Dmpname, Freqb, Freqe, NSTEPS" "DMPOPTION - Specifies distributed memory parallel (Distributed ANSYS) file combination options. +DMPOPTION, FileType, Combine, ResCombFreq" "DMPRAT - Sets a modal damping ratio. +DMPRAT, RATIO" "DMPSTR - Sets constant structural damping data. +DMPSTR, COEFF, DMPSFreqTab" "DNSOL - Defines or modifies solution results at a node. +DNSOL, NODE, Item, Comp, V1, V2, V3, V4, V5, V6" "DOF - Adds degrees of freedom to the current DOF set. +DOF, Lab1, Lab2, Lab3, Lab4, Lab5, Lab6, Lab7, Lab8, Lab9, Lab10" "DOFSEL - Selects a DOF label set for reference by other commands. +DOFSEL, Type, Dof1, Dof2, Dof3, Dof4, Dof5, Dof6" "DOMEGA - Specifies the rotational acceleration of the structure. +DOMEGA, DOMGX, DOMGY, DOMGZ" "DSCALE - Scales DOF constraint values. +DSCALE, RFACT, IFACT, TBASE" "DSET - Sets the scale and drawing plane orientation for a digitizing tablet. +DSET, NODE1, NODE2, NODE3, DDEV" "DSPOPTION - Sets memory option for the sparse solver. +DSPOPTION, Reord_Option, Memory_Option, Memory_Size, --, --, Solve_Info" "DSUM - Specifies the double sum mode combination method. +DSUM, SIGNIF, Label, TD, ForceType" "DSURF - Defines the surface upon which digitized nodes lie. +DSURF, KCN, XSURF, YSURF, ZSURF" "DSYM - Specifies symmetry or antisymmetry degree-of-freedom constraints on nodes. +DSYM, Lab, Normal, KCN" "DSYS - Activates a display coordinate system for geometry listings and plots. +DSYS, KCN" "DTRAN +DTRAN - Transfers solid model DOF constraints to the finite element model." "DUMP - Dumps the contents of a binary file. +DUMP, NSTRT, NSTOP" "DVAL - Defines values at enforced motion base. +DVAL, BaseID, Lab, VALUE, VALUE2, KeyCal" "DVMORPH - Move nodes in selected volumes to conform to structural displacements. +DVMORPH, VOLU, XAREA, RMSHKY" "DYNOPT +DYNOPT - Specifies \"Dynamic analysis options\" as the subsequent status topic." "E - Defines an element by node connectivity. +E, I, J, K, L, M, N, O, P" "EALIVE - Reactivates an element (for the birth and death capability). +EALIVE, ELEM" "ECPCHG +ECPCHG - Optimizes degree-of-freedom usage in a coupled acoustic model." "EDELE - Deletes selected elements from the model. +EDELE, IEL1, IEL2, INC" "EEXTRUDE - Extrudes 2-D plane elements into 3-D solids during a 2-D to 3-D analysis. +EEXTRUDE, Action, NELEM, SPACE, DIST, THETA, TFACT , –, BCKEY" "EGEN - Generates elements from an existing pattern. +EGEN, ITIME, NINC, IEL1, IEL2, IEINC, MINC, TINC, RINC, CINC, SINC, DX, DY, DZ" "EGID - Specifies a global identifier for a set of MESH200 elements. +EGID, VAL" "EINFIN - Generates structural infinite elements from selected nodes. +EINFIN, CompName, PNODE(NREF1), NREF2, NREF3, MATID" "EINTF - Defines two-node elements between coincident or offset nodes. +EINTF, TOLER, K, TLAB, KCN, DX, DY, DZ, KNONROT" "EKILL - Deactivates an element (for the birth and death capability). +EKILL, ELEM" "ELBOW - Specifies degrees of freedom to be coupled for end release and applies section constraints to elbow elements. +ELBOW, Transkey, TOL, Dof, Cons1, Cons2, Cons3, Cons4" "ELEM +ELEM - Specifies \"Elements\" as the subsequent status topic." "ELIST - Lists the elements and their attributes. +ELIST, IEL1, IEL2, INC, NNKEY, RKEY" "EMAGERR +EMAGERR - Calculates the relative error in an electrostatic or electromagnetic field analysis." "EMATWRITE - Forces the writing of all the element matrices to File.EMAT. +EMATWRITE, Key" "EMF +EMF - Calculates the electromotive force (emf), or voltage drop along a predefined path." "EMFT +EMFT - Summarizes electromagnetic forces and torques." "EMID - Adds or removes midside nodes. +EMID, Key, Edges" "EMIS - Specifies emissivity as a material property for the Radiation Matrix method. +EMIS, MAT, EVALU" "EMODIF - Modifies a previously defined element. +EMODIF, IEL, STLOC, I1, I2, I3, I4, I5, I6, I7, I8" "EMORE - Adds more nodes to the just-defined element. +EMORE, Q, R, S, T, U, V, W, X" "EMSEL - Selects a group of reinforcing members via a predefined global identifier. +EMSEL, Type,--, --, VMIN, VMAX, VINC" "EMSYM - Specifies circular symmetry for electromagnetic sources. +EMSYM, NSECT" "EMTGEN - Generates a set of TRANS126 elements. +EMTGEN, Ncomp, Ecomp, PNcomp, DOF, GAP, GAPMIN, FKN, EPZERO, --, Smethod" "EMUNIT - Specifies the system of units for magnetic field problems. +EMUNIT, Lab, VALUE" "EN - Defines an element by its number and node connectivity. +EN, IEL, I, J, K, L, M, N, O, P" "ENDRELEASE - Specifies degrees of freedom to be decoupled for end release. +ENDRELEASE, --, TOLERANCE, Dof1, Dof2, Dof3, Dof4, KJCT" "ENERSOL - Specifies the total energies to be stored. +ENERSOL, NVAR, Item, --, Name" "ENGEN - Generates elements from an existing pattern. +ENGEN, IINC, ITIME, NINC, IEL1, IEL2, IEINC, MINC, TINC, RINC, CINC, SINC, DX, DY, DZ" "ENORM - Reorients shell element normals or line element node connectivity. +ENORM, ENUM" "ENSYM - Generates elements by symmetry reflection. +ENSYM, IINC, --, NINC, IEL1, IEL2, IEINC" "EORIENT - Reorients solid element normals. +EORIENT, Etype, Dir, TOLER" "EPLOT +EPLOT - Produces an element display." "EQSLV - Specifies the type of equation solver. +EQSLV, Lab, TOLER, MULT, --, KeepFile" "ERASE +ERASE - Explicitly erases the current display." "EREAD - Reads elements from a file. +EREAD, Fname, Ext, --" "EREFINE - Refines the mesh around specified elements. +EREFINE, NE1, NE2, NINC, LEVEL, DEPTH, POST, RETAIN" "EREINF - Generates reinforcing elements from selected existing (base) elements. +EREINF, KOffALim" "ERESX - Specifies extrapolation of integration point results. +ERESX, Key" "ERNORM - Controls error estimation calculations. +ERNORM, Key" "ERRANG - Specifies the element range to be read from a file. +ERRANG, EMIN, EMAX, EINC" "ESCHECK - Perform element shape checking for a selected element set. +ESCHECK, Sele, Levl, Defkey" "ESEL - Selects a subset of elements. +ESEL, Type, Item, Comp, VMIN, VMAX, VINC, KABS" "ESIZE - Specifies the default number of line divisions. +ESIZE, SIZE, NDIV" "ESLA - Selects those elements associated with the selected areas. +ESLA, Type" "ESLL - Selects those elements associated with the selected lines. +ESLL, Type" "ESLN - Selects those elements attached to the selected nodes. +ESLN, Type, EKEY, NodeType" "ESLV - Selects elements associated with the selected volumes. +ESLV, Type" "ESOL - Specifies element data to be stored from the results file. +ESOL, NVAR, ELEM, NODE, Item, Comp, Name" "ESORT - Sorts the element table. +ESORT, Item, Lab, ORDER, KABS, NUMB" "ESSOLV - Performs a coupled electrostatic-structural analysis. +ESSOLV, Electit, Strutit, DIMN, MORPHOPT, Mcomp, Xcomp, ELECTOL, STRUTOL, MXLOOP, --, RUSEKY, RESTKY, EISCOMP" "ESTIF - Specifies the matrix multiplier for deactivated elements. +ESTIF, KMULT" "ESURF - Generates elements overlaid on the free faces of selected nodes. +ESURF, XNODE, Tlab, Shape" "ESYM - Generates elements from a pattern by a symmetry reflection. +ESYM, --, NINC, IEL1, IEL2, IEINC" "ESYS - Sets the element coordinate system attribute pointer. +ESYS, KCN" "ET - Defines a local element type from the element library. +ET, ITYPE, Ename, KOP1, KOP2, KOP3, KOP4, KOP5, KOP6, INOPR" "ETABLE - Fills a table of element values for further processing. +ETABLE, Lab, Item, Comp, Option" "ETCHG - Changes element types to their corresponding types. +ETCHG, Cnv" "ETCONTROL - Control the element technologies used in element formulation (for applicable elements). +ETCONTROL, Eltech, Eldegene" "ETDELE - Deletes element types. +ETDELE, ITYP1, ITYP2, INC" "ETLIST - Lists currently defined element types. +ETLIST, ITYP1, ITYP2, INC" "ETYPE +ETYPE - Specifies \"Element types\" as the subsequent status topic." "EUSORT +EUSORT - Restores original order of the element table." "EWRITE - Writes elements to a file. +EWRITE, Fname, Ext, --, KAPPND, Format" "EXBOPT - Specifies .EXB file output options in a CMS generation pass. +EXBOPT, OUTINV2, OUTTCMS, OUTSUB, OUTCMS, OUTCOMP, OUTRM, NOINV, OUTELE" "EXOPTION - Specifies the EXPROFILE options for the Mechanical APDL to ANSYS CFX profile file transfer. +EXOPTION, Ldtype, Option, VALUE" "EXP - Forms the exponential of a variable. +EXP, IR, IA, --, --, Name, --, --, FACTA, FACTB" "EXPAND - Displays the results of a modal cyclic symmetry analysis. +EXPAND, Nrepeat, MODAL, HIndex, Icsys, SctAng, --, Phase" "EXPASS - Specifies an expansion pass of an analysis. +EXPASS, Key, --, --, KeyStat" "EXPROFILE - Exports Mechanical APDL interface data on selected nodes to an ANSYS CFX Profile file. +EXPROFILE, Ldtype, Load, VALUE, Pname, Fname, Fext, Fdir" "EXPSOL - Specifies the solution to be expanded for mode-superposition analyses or substructure analyses. +EXPSOL, LSTEP, SBSTEP, TIMFRQ, Elcalc" "EXTOPT - Controls options relating to the generation of volume elements from area elements. +EXTOPT, Lab, Val1, Val2, Val3, Val4" "EXTREM - Lists the extreme values for variables. +EXTREM, NVAR1, NVAR2, NINC" "EXUNIT - Specifies the interface data unit labels to be written to the profile file from Mechanical APDL to ANSYS CFX transfer. +EXUNIT, Ldtype, Load, Untype, Name" "F - Specifies force loads at nodes. +F, NODE, Lab, VALUE, VALUE2, NEND, NINC" "FC - Provides failure criteria information and activates a data table to input temperature-dependent stress and strain limits. +FC, MAT, Lab1, Lab2, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6" "FCCHECK +FCCHECK - Checks both the strain and stress input criteria for all materials." "FCDELE - Deletes previously defined failure criterion data for the given material. +FCDELE, MAT" "FCLIST - To list what the failure criteria is that you have input. +FCLIST, MAT, --, TEMP" "FCTYP - Activates or removes failure-criteria types for postprocessing. +FCTYP, Oper, Lab" "FCUM - Specifies that force loads are to be accumulated. +FCUM, Oper, RFACT, IFACT" "FDELE - Deletes force loads on nodes. +FDELE, NODE, Lab, NEND, NINC, Lkey" "FEBODY +FEBODY - Specifies \"Body loads on elements\" as the subsequent status topic." "FECONS +FECONS - Specifies \"Constraints on nodes\" as the subsequent status topic." "FEFOR +FEFOR - Specifies \"Forces on nodes\" as the subsequent status topic." "FESURF +FESURF - Specifies \"Surface loads on elements\" as the subsequent status topic." "FILE - Specifies the data file where results are to be found. +FILE, Fname, Ext, --" "FILEAUX2 - Specifies the binary file to be dumped. +FILEAUX2, Fname, Ident, --" "FILEAUX3 - Specifies the results file to be edited. +FILEAUX3, Fname, Ext, --" "FILL - Generates a line of nodes between two existing nodes. +FILL, NODE1, NODE2, NFILL, NSTRT, NINC, ITIME, INC, SPACE" "FILLDATA - Fills a variable by a ramp function. +FILLDATA, IR, LSTRT, LSTOP, LINC, VALUE, DVAL" "FINISH +FINISH - Exits normally from a processor." "FITEM - Identifies items chosen by a picking operation (GUI). +FITEM, NFIELD, ITEM, ITEMY, ITEMZ" "FJ - Specify forces or moments on the components of the relative motion of a joint element. +FJ, ELEM, LABEL, VALUE" "FJDELE - Deletes forces (or moments) on the components of the relative motion of a joint element. +FJDELE, ELEM, LAB" "FJLIST - Lists forces and moments applied on joint elements. +FJLIST, Elem" "FK - Defines force loads at keypoints. +FK, KPOI, Lab, VALUE, VALUE2" "FKDELE - Deletes force loads at a keypoint. +FKDELE, KPOI, Lab" "FKLIST - Lists the forces at keypoints. +FKLIST, KPOI, Lab" "FLIST - Lists force loads on the nodes. +FLIST, NODE1, NODE2, NINC" "FLST - Specifies data required for a picking operation (GUI). +FLST, NFIELD, NARG, TYPE, Otype, LENG" "FLUREAD - Reads one-way Fluent-to-Mechanical APDL coupling data via a .cgns file with one-side fast Fourier transformation complex pressure peak value. +FLUREAD, --, Fname, Ext, KDIM, KOUT, LIMIT, ListOpt" "FLUXV +FLUXV - Calculates the flux passing through a closed contour." "FORCE - Selects the element nodal force type for output. +FORCE, Lab" "FORM - Specifies the format of the file dump. +FORM, Lab" "FREQ - Defines the frequency points for the SV vs. FREQ tables. +FREQ, FREQ1, FREQ2, FREQ3, FREQ4, FREQ5, FREQ6, FREQ7, FREQ8, FREQ9" "FRQSCL - Turns on automatic scaling of the entire mass matrix and frequency range for modal analyses. +FRQSCL, Scaling" "FSCALE - Scales force load values in the database. +FSCALE, RFACT, IFACT" "FSSECT - Calculates and stores total linearized stress components. +FSSECT, RHO, NEV, NLOD, KBR" "FSSPARM - Calculates reflection and transmission properties of a frequency selective surface. +FSSPARM, PORT1, PORT2" "FSUM - Sums the nodal force and moment contributions of elements. +FSUM, LAB, ITEM" "FTRAN +FTRAN - Transfers solid model forces to the finite element model." "FTYPE - Specifies the file type and pressure type for the subsequent import of source points and pressures. +FTYPE, FileType, PresType" "FVMESH - Generates nodes and tetrahedral volume elements from detached exterior area elements (facets). +FVMESH, KEEP" "GAP +GAP - Specifies \"mode-superposition transient gap conditions\" as the subsequent status topic." "GAPF - Defines the gap force data to be stored in a variable. +GAPF, NVAR, NUM, Name" "GAUGE - Gauges the problem domain for a magnetic edge-element formulation. +GAUGE, Opt, FREQ" "GCDEF - Defines interface interactions between general contact surfaces. +GCDEF, Option, SECT1, SECT2, MATID, REALID, SECT1END, SECT2END" "GCGEN - Creates contact elements for general contact. +GCGEN, Option, FeatureANGLE, EdgeKEY, SplitKey, SelOpt" "GENOPT +GENOPT - Specifies \"General options\" as the subsequent status topic." "GEOM - Defines the geometry specifications for the radiation matrix calculation. +GEOM, K2D, NDIV" "GEOMETRY +GEOMETRY - Specifies \"Geometry\" as the subsequent status topic." "GMATRIX - Performs electric field solutions and calculates the self and mutual conductance between multiple conductors. +GMATRIX, SYMFAC, Condname, NUMCOND, --, Matrixname" "GMFACE - Specifies the facet representation used to form solid models. +GMFACE, Lab, N" "GP - Defines a gap condition for transient analyses. +GP, NODE1, NODE2, Lab, STIF, GAP, DAMP" "GPDELE - Deletes gap conditions. +GPDELE, GAP1, GAP2, GINC" "GPLIST - Lists the gap conditions. +GPLIST, GAP1, GAP2, GINC" "GPLOT +GPLOT - Controls general plotting." "GRP - Specifies the grouping mode combination method. +GRP, SIGNIF, Label, , ForceType" "GSBDATA - Specifies the constraints or applies the load at the ending point for generalized plane strain option. +GSBDATA, LabZ, VALUEZ, LabX, VALUEX, LabY, VALUEY" "GSGDATA - Specifies the reference point and defines the geometry in the fiber direction for the generalized plane strain element option. +GSGDATA, LFIBER, XREF, YREF, ROTX0, ROTY0" "GSLIST - When using generalized plane strain, lists the input data or solutions. +GSLIST, Lab" "GSSOL - Specifies which results to store from the results file when using generalized plane strain. +GSSOL, NVAR, Item, Comp, Name" "GSUM +GSUM - Calculates and prints geometry items." "HARFRQ - Defines the frequency range in a harmonic analysis. +HARFRQ, FREQB, FREQE, --, LogOpt, FREQARR, Toler" "HBMAT - Writes an assembled global matrix in Harwell-Boeing format. +HBMAT, Fname, Ext, --, Form, Matrx, Rhs, Mapping" "HELP - Displays help information on ANSYS commands and element types. +HELP, Name" "HEMIOPT - Specifies options for Hemicube view factor calculation. +HEMIOPT, HRES" "HFANG - Defines or displays spatial angles of a spherical radiation surface for sound radiation parameter calculations. +HFANG, Lab, PHI1, PHI2, THETA1, THETA2" "HFSYM - Indicates the presence of symmetry planes for the computation of acoustic fields in the near and far field domains (beyond the finite element region). +HFSYM, KCN, Xkey, Ykey, Zkey" "HPTCREATE - Defines a hard point. +HPTCREATE, TYPE, ENTITY, NHP, LABEL, VAL1, VAL2, VAL3" "HPTDELETE - Deletes selected hardpoints. +HPTDELETE, NP1, NP2, NINC" "HRCPLX - Computes and stores in the database the time-harmonic solution at a prescribed phase angle. +HRCPLX, LOADSTEP, SUBSTEP, OMEGAT, 1STLCASE, 2NDLCASE" "HREXP - Specifies the phase angle for the harmonic analysis expansion pass. +HREXP, ANGLE" "HROCEAN - Perform the harmonic ocean wave procedure (HOWP). +HROCEAN, Type, NPHASE" "HROPT - Specifies harmonic analysis options. +HROPT, Method, MAXMODE, MINMODE, MCout, Damp" "HROUT - Specifies the harmonic analysis output options. +HROUT, Reimky, Clust, Mcont, EngCalc" "IC - Specifies initial conditions at nodes. +IC, NODE, Lab, VALUE, VALUE2,NEND, NINC" "ICDELE +ICDELE - Deletes initial conditions at nodes." "ICLIST - Lists the initial conditions. +ICLIST, NODE1, NODE2, NINC, Lab" "ICROTATE - Specifies initial velocity at nodes as a sum of rotation about an axis and translation. +ICROTATE, NODE, OMEGA, X1, Y1, Z1, X2, Y2, Z2, Vx, Vy, Vz, ACCEL" "IGESIN - Transfers IGES data from a file into ANSYS. +IGESIN, Fname, Ext, --" "IGESOUT - Writes solid model data to a file in IGES Version 5.1 format. +IGESOUT, Fname, Ext, --, ATT" "IMAGIN - Forms an imaginary variable from a complex variable. +IMAGIN, IR, IA, --, --, Name, --, --, FACTA" "IMESH - Generates nodes and interface elements along lines or areas. +IMESH, LAKY, NSLA, NTLA, KCN, DX, DY, DZ, TOL" "IMMED - Allows immediate display of a model as it is generated. +IMMED, KEY" "INISTATE - Defines initial-state data and parameters. +INISTATE, Action, Val1, Val2, Val3, Val4, Val5, Val6, Val7, Val8, Val9" "INRES - Identifies the data to be retrieved from the results file. +INRES, Item1, Item2, Item3, Item4, Item5, Item6, Item7, Item8" "INRTIA +INRTIA - Specifies \"Inertial loads\" as the subsequent status topic." "INT1 - Integrates a variable. +INT1, IR, IY, IX, --, Name, --, --, FACTA, FACTB, CONST" "INVOPT - Enables or disables inverse solving for the current load step. +INVOPT, Option" "IOPTN - Controls options relating to importing a model. +IOPTN, Lab, VAL1" "IRLF - Specifies that inertia relief calculations are to be performed. +IRLF, KEY" "IRLIST +IRLIST - Prints inertia relief summary table." "JPEG - Provides JPEG file export for ANSYS displays. +JPEG, Kywrd, OPT" "JSOL - Specifies result items to be stored for the joint element. +JSOL, NVAR, ELEM, ITEM, COMP, Name" "K - Defines a keypoint. +K, NPT, X, Y, Z" "KATT - Associates attributes with the selected, unmeshed keypoints. +KATT, MAT, REAL, TYPE, ESYS" "KBC - Specifies ramped or stepped loading within a load step. +KBC, KEY, OMGSQRDKEY" "KBETW - Creates a keypoint between two existing keypoints. +KBETW, KP1, KP2, KPNEW, Type, VALUE" "KCENTER - Creates a keypoint at the center of a circular arc defined by three locations. +KCENTER, Type, VAL1, VAL2, VAL3, VAL4, KPNEW" "KCLEAR - Deletes nodes and point elements associated with selected keypoints. +KCLEAR, NP1, NP2, NINC" "KDELE - Deletes unmeshed keypoints. +KDELE, NP1, NP2, NINC" "KDIST - Calculates and lists the distance between two keypoints. +KDIST, KP1, KP2" "KEEP - Stores POST26 definitions and data during active session. +KEEP, Key" "KESIZE - Specifies the edge lengths of the elements nearest a keypoint. +KESIZE, NPT, SIZE, FACT1, FACT2" "KEYOPT - Sets element key options. +KEYOPT, ITYPE, KNUM, VALUE" "KEYPTS +KEYPTS - Specifies \"Keypoints\" as the subsequent status topic." "KEYW +KEYW - Sets a keyword used by the GUI for context filtering (GUI)." "KFILL - Generates keypoints between two keypoints. +KFILL, NP1, NP2, NFILL, NSTRT, NINC, SPACE" "KGEN - Generates additional keypoints from a pattern of keypoints. +KGEN, ITIME, NP1, NP2, NINC, DX, DY, DZ, KINC, NOELEM, IMOVE" "KL - Generates a keypoint at a specified location on an existing line. +KL, NL1, RATIO, NK1" "KLIST - Lists the defined keypoints or hard points. +KLIST, NP1, NP2, NINC, Lab" "KMESH - Generates nodes and point elements at keypoints. +KMESH, NP1, NP2, NINC" "KMODIF - Modifies an existing keypoint. +KMODIF, NPT, X, Y, Z" "KMOVE - Calculates and moves a keypoint to an intersection. +KMOVE, NPT, KC1, X1, Y1, Z1, KC2, X2, Y2, Z2" "KNODE - Defines a keypoint at an existing node location. +KNODE, NPT, NODE" "KPLOT - Displays the selected keypoints. +KPLOT, NP1, NP2, NINC, Lab" "KPSCALE - Generates a scaled set of (meshed) keypoints from a pattern of keypoints. +KPSCALE, NP1, NP2, NINC, RX, RY, RZ, KINC, NOELEM, IMOVE" "KREFINE - Refines the mesh around specified keypoints. +KREFINE, NP1, NP2, NINC, LEVEL, DEPTH, POST, RETAIN" "KSCALE - Generates a scaled pattern of keypoints from a given keypoint pattern. +KSCALE, KINC, NP1, NP2, NINC, RX, RY, RZ" "KSCON - Specifies a keypoint about which an area mesh will be skewed. +KSCON, NPT, DELR, KCTIP, NTHET, RRAT" "KSEL - Selects a subset of keypoints or hard points. +KSEL, Type, Item, Comp, VMIN, VMAX, VINC, KABS" "KSLL - Selects those keypoints contained in the selected lines. +KSLL, Type" "KSLN - Selects those keypoints associated with the selected nodes. +KSLN, Type" "KSUM +KSUM - Calculates and prints geometry statistics of the selected keypoints." "KSYMM - Generates a reflected set of keypoints. +KSYMM, Ncomp, NP1, NP2, NINC, KINC, NOELEM, IMOVE" "KTRAN - Transfers a pattern of keypoints to another coordinate system. +KTRAN, KCNTO, NP1, NP2, NINC, KINC, NOELEM, IMOVE" "KUSE - Specifies whether or not to reuse factorized matrices. +KUSE, KEY" "KWPAVE - Moves the working plane origin to the average location of keypoints. +KWPAVE, P1, P2, P3, P4, P5, P6, P7, P8, P9" "KWPLAN - Defines the working plane using three keypoints. +KWPLAN, WN, KORIG, KXAX, KPLAN" "L - Defines a line between two keypoints. +L, P1, P2, NDIV, SPACE, XV1, YV1, ZV1, XV2, YV2, ZV2" "L2ANG - Generates a line at an angle with two existing lines. +L2ANG, NL1, NL2, ANG1, ANG2, PHIT1, PHIT2" "L2TAN - Generates a line tangent to two lines. +L2TAN, NL1, NL2" "LANBOPTION - Specifies Block Lanczos eigensolver options. +LANBOPTION, StrmCk, --, AltMeth" "LANG - Generates a straight line at an angle with a line. +LANG, NL1, P3, ANG, PHIT, LOCAT" "LARC - Defines a circular arc. +LARC, P1, P2, PC, RAD" "LAREA - Generates the shortest line between two keypoints on an area. +LAREA, P1, P2, NAREA" "LARGE - Finds the largest (the envelope) of three variables. +LARGE, IR, IA, IB, IC, Name, --, --, FACTA, FACTB, FACTC" "LATT - Associates element attributes with the selected, unmeshed lines. +LATT, MAT, REAL, TYPE, --, KB, KE, SECNUM" "LAYER - Specifies the element layer for which data are to be processed. +LAYER, NUM" "LAYERP26 - Specifies the element layer for which data are to be stored. +LAYERP26, NUM" "LAYLIST - Lists real constants material properties for layered elements. +LAYLIST, IEL, LAYR1, LAYR2, Mplab1, Mplab2" "LAYPLOT - Displays the layer stacking sequence for layered elements. +LAYPLOT, IEL, LAYR1, LAYR2" "LCABS - Specifies absolute values for load case operations. +LCABS, LCNO, KABS" "LCASE - Reads a load case into the database. +LCASE, LCNO" "LCCALC +LCCALC - Specifies \"Load case settings\" as the subsequent status topic." "LCCAT - Concatenates multiple lines into one line for mapped meshing. +LCCAT, NL1, NL2" "LCDEF - Creates a load case from a set of results on a results file. +LCDEF, LCNO, LSTEP, SBSTEP, KIMG" "LCFACT - Defines scale factors for load case operations. +LCFACT, LCNO, FACT" "LCFILE - Creates a load case from an existing load case file. +LCFILE, LCNO, Fname, Ext, --" "LCLEAR - Deletes nodes and line elements associated with selected lines. +LCLEAR, NL1, NL2, NINC" "LCOMB - Combines adjacent lines into one line. +LCOMB, NL1, NL2, KEEP" "LCOPER - Performs load case operations. +LCOPER, Oper, LCASE1, Oper2, LCASE2,SweepANG" "LCSEL - Selects a subset of load cases. +LCSEL, Type, LCMIN, LCMAX, LCINC" "LCSL - Divides intersecting lines at their point(s) of intersection. +LCSL, NL1, NL2, NL3, NL4, NL5, NL6, NL7, NL8, NL9" "LCSUM - Specifies whether to process non-summable items in load case operations. +LCSUM, Lab" "LCWRITE - Creates a load case by writing results to a load case file. +LCWRITE, LCNO, Fname, Ext, --" "LCZERO +LCZERO - Zeroes the results portion of the database." "LDELE - Deletes unmeshed lines. +LDELE, NL1, NL2, NINC, KSWP" "LDIV - Divides a single line into two or more lines. +LDIV, NL1, RATIO, PDIV, NDIV, KEEP" "LDRAG - Generates lines by sweeping a keypoint pattern along path. +LDRAG, NK1, NK2, NK3, NK4, NK5, NK6, NL1, NL2, NL3, NL4, NL5, NL6" "LDREAD - Reads results from the results file and applies them as loads. +LDREAD, Lab, LSTEP, SBSTEP, TIME, KIMG, Fname, Ext, --" "LESIZE - Specifies the divisions and spacing ratio on unmeshed lines. +LESIZE, NL1, SIZE, ANGSIZ, NDIV, SPACE, KFORC, LAYER1, LAYER2, KYNDIV" "LEXTND - Extends a line at one end by using its slope. +LEXTND, NL1, NK1, DIST, KEEP" "LFILLT - Generates a fillet line between two intersecting lines. +LFILLT, NL1, NL2, RAD, PCENT" "LFSURF - Generates surface elements overlaid on the edge of existing solid elements and assigns the extra node as the closest fluid element node. +LFSURF, SLINE, TLINE" "LGEN - Generates additional lines from a pattern of lines. +LGEN, ITIME, NL1, NL2, NINC, DX, DY, DZ, KINC, NOELEM, IMOVE" "LGLUE - Generates new lines by \"gluing\" lines. +LGLUE, NL1, NL2, NL3, NL4, NL5, NL6, NL7, NL8, NL9" "LGWRITE - Writes the database command log to a file. +LGWRITE, Fname, Ext, --, Kedit" "LINA - Finds the intersection of a line with an area. +LINA, NL, NA" "LINE +LINE - Specifies \"Lines\" as the subsequent status topic." "LINES - Specifies the length of a printed page. +LINES, N" "LINL - Finds the common intersection of lines. +LINL, NL1, NL2, NL3, NL4, NL5, NL6, NL7, NL8, NL9" "LINP - Finds the pairwise intersection of lines. +LINP, NL1, NL2, NL3, NL4, NL5, NL6, NL7, NL8, NL9" "LINV - Finds the intersection of a line with a volume. +LINV, NL, NV" "LIST - Lists out the sets in the results file. +LIST, LEVEL" "LLIST - Lists the defined lines. +LLIST, NL1, NL2, NINC, Lab" "LMESH - Generates nodes and line elements along lines. +LMESH, NL1, NL2, NINC" "LNSRCH - Activates a line search to be used with Newton-Raphson. +LNSRCH, Key, LSTOL, LStrun" "LOCAL - Defines a local coordinate system by a location and orientation. +LOCAL, KCN, KCS, XC, YC, ZC, THXY, THYZ, THZX, PAR1, PAR2" "LOVLAP - Overlaps lines. +LOVLAP, NL1, NL2, NL3, NL4, NL5, NL6, NL7, NL8, NL9" "LPLOT - Displays the selected lines. +LPLOT, NL1, NL2, NINC" "LPTN - Partitions lines. +LPTN, NL1, NL2, NL3, NL4, NL5, NL6, NL7, NL8, NL9" "LREFINE - Refines the mesh around specified lines. +LREFINE, NL1, NL2, NINC, LEVEL, DEPTH, POST, RETAIN" "LREVERSE - Reverses the normal of a line, regardless of its connectivity or mesh status. +LREVERSE, LNUM, NOEFLIP" "LROTAT - Generates circular lines by rotating a keypoint pattern about an axis. +LROTAT, NK1, NK2, NK3, NK4, NK5, NK6, PAX1, PAX2, ARC, NSEG" "LSBA - Subtracts areas from lines. +LSBA, NL, NA, SEPO, KEEPL, KEEPA" "LSBL - Subtracts lines from lines. +LSBL, NL1, NL2, SEPO, KEEP1, KEEP2" "LSBV - Subtracts volumes from lines. +LSBV, NL, NV, SEPO, KEEPL, KEEPV" "LSBW - Subtracts the intersection of the working plane from lines (divides lines). +LSBW, NL, SEPO, KEEP" "LSCLEAR - Clears loads and load step options from the database. +LSCLEAR, Lab" "LSDELE - Deletes load step files. +LSDELE, LSMIN, LSMAX, LSINC" "LSEL - Selects a subset of lines. +LSEL, Type, Item, Comp, VMIN, VMAX, VINC, KSWP" "LSLA - Selects those lines contained in the selected areas. +LSLA, Type" "LSLK - Selects those lines containing the selected keypoints. +LSLK, Type, LSKEY" "LSOPER +LSOPER - Specifies \"Load step operations\" as the subsequent status topic." "LSREAD - Reads load and load step option data into the database. +LSREAD, LSNUM" "LSSCALE - Generates a scaled set of lines from a pattern of lines. +LSSCALE, NL1, NL2, NINC, RX, RY, RZ, KINC, NOELEM, IMOVE" "LSSOLVE - Reads and solves multiple load steps. +LSSOLVE, LSMIN, LSMAX, LSINC" "LSTR - Defines a straight line irrespective of the active coordinate system. +LSTR, P1, P2" "LSUM +LSUM - Calculates and prints geometry statistics of the selected lines." "LSWRITE - Writes load and load step option data to a file. +LSWRITE, LSNUM" "LSYMM - Generates lines from a line pattern by symmetry reflection. +LSYMM, Ncomp, NL1, NL2, NINC, KINC, NOELEM, IMOVE" "LTAN - Generates a line at the end of, and tangent to, an existing line. +LTAN, NL1, P3, XV3, YV3, ZV3" "LTRAN - Transfers a pattern of lines to another coordinate system. +LTRAN, KCNTO, NL1, NL2, NINC, KINC, NOELEM, IMOVE" "LUMPM - Specifies a lumped mass matrix formulation. +LUMPM, Key, --, KeyElt" "LVSCALE - Scales the load vector for mode-superposition analyses. +LVSCALE, FACT, LDSTEP" "LWPLAN - Defines the working plane normal to a location on a line. +LWPLAN, WN, NL1, RATIO" "M - Defines master degrees of freedom for superelement generation analyses. +M, NODE, Lab1, NEND, NINC, Lab2, Lab3, Lab4, Lab5, Lab6, SUPPORT" "MACOPT - Specifies modal assurance criterion (MAC) calculation options for RSTMAC. +MACOPT, Option, Value1, Value2" "MAGOPT - Specifies options for a 3-D magnetostatic field analysis. +MAGOPT, Value" "MAGSOLV - Specifies magnetic solution options and initiates the solution. +MAGSOLV, OPT, NRAMP, CNVCSG, CNVFLUX, NEQIT, BIOT,CNVTOL" "MAP - Maps pressures from source points to target surface elements. +MAP, --, kDIM, --, kOUT, LIMIT" "MAP2DTO3D - Initiates a 2-D to 3-D analysis and maps variables. +MAP2DTO3D, Action, VALUE1, VALUE2" "MAPSOLVE - Maps solved node and element solutions from an original mesh to a new mesh. +MAPSOLVE, MAXSBSTEP" "MAPVAR - Defines tensors and vectors in user-defined state variables for rezoning and in 2-D to 3-D analyses. +MAPVAR, Option, MatId, IstrtStress, nTenStress, IstrtStrain, nTenStrain, , IstrtVect, nVect" "MASCALE - Activates scaling of the entire system matrix. +MASCALE, massFact" "MASTER +MASTER - Specifies \"Master DOF\" as the subsequent status topic." "MAT - Sets the element material attribute pointer. +MAT, MAT" "MATER +MATER - Specifies \"Material properties\" as the subsequent status topic." "MCHECK - Checks mesh connectivity. +MCHECK, Lab" "MDAMP - Defines the damping ratios as a function of mode. +MDAMP, STLOC, V1, V2, V3, V4, V5, V6" "MDELE - Deletes master degrees of freedom. +MDELE, NODE, Lab1, NEND, NINC, Lab2, Lab3, Lab4, Lab5, Lab6, SUPPORT" "MDPLOT - Plots frequency-dependent modal damping coefficients calculated by DMPEXT. +MDPLOT, Function, Dmpname, Scale" "MEMM - Allows the current session to keep allocated memory +MEMM, Lab, Kywrd" "MESHING +MESHING - Specifies \"Meshing\" as the subsequent status topic." "MGEN - Generates additional MDOF from a previously defined set. +MGEN, ITIME, INC, NODE1, NODE2, NINC" "MIDTOL - Sets midstep residual criterion values for structural transient analyses. +MIDTOL, KEY, TOLERB, RESFQ" "MLIST - Lists the MDOF of freedom. +MLIST, NODE1, NODE2, NINC" "MMASS - Specifies the missing mass response calculation. +MMASS, Option, ZPA" "MMF +MMF - Calculates the magnetomotive force along a path." "MODCONT - Specify additional modal analysis options. +MODCONT, MLSkey, EnforcedKey, --, FastLV" "MODDIR - Enables remote read-only usage of modal analysis files or substructuring analysis files. +MODDIR, Key, Directory, Fname" "MODE - Specifies the harmonic loading term for this load step. +MODE, MODE, ISYM" "MODIFY - Changes the listed values of the data in a set. +MODIFY, SET, LSTEP, ITER, CUMIT, TIME, Ktitle" "MODMSH - Controls the relationship of the solid model and the FE model. +MODMSH, Lab" "MODOPT - Specifies modal analysis options. +MODOPT, Method, NMODE, FREQB, FREQE, Cpxmod, Nrmkey, ModType, BlockSize, --, --, --, FREQMOD" "MODSELOPTION - Specifies the criteria for selecting the modes to be expanded. +MODSELOPTION, dir1, dir2, dir3, dir4, dir5, dir6" "MONITOR - Controls contents of variable fields in the nonlinear solution monitor file. +MONITOR, VAR, Node, Lab" "MOPT - Specifies meshing options. +MOPT, Lab, Value" "MORPH - Specifies morphing and remeshing controls. +MORPH, Option, --, Remeshopt, ElemSet, ARMAX, VOCH, ARCH, STEP, TIME, StrOpt" "MOVE - Calculates and moves a node to an intersection. +MOVE, NODE, KC1, X1, Y1, Z1, KC2, X2, Y2, Z2" "MP - Defines a linear material property as a constant or a function of temperature. +MP, Lab, MAT, C0, C1, C2, C3, C4" "MPAMOD - Modifies temperature-dependent secant coefficients of thermal expansion. +MPAMOD, MAT, DEFTEMP" "MPCHG - Changes the material number attribute of an element. +MPCHG, MAT, ELEM" "MPCOPY - Copies linear material model data from one material reference number to another. +MPCOPY, --, MATF, MATT" "MPDATA - Defines property data to be associated with the temperature table. +MPDATA, Lab, MAT, SLOC, C1, C2, C3, C4, C5, C6" "MPDELE - Deletes linear material properties. +MPDELE, Lab, MAT1, MAT2, INC, LCHK" "MPDRES - Reassembles existing material data with the temperature table. +MPDRES, LabF, MATF, LabT, MATT" "MPLIST - Lists linear material properties. +MPLIST, MAT1, MAT2, INC, Lab, TEVL" "MPPLOT - Plots linear material properties as a function of temperature. +MPPLOT, Lab, MAT, TMIN, TMAX, PMIN, PMAX" "MPREAD - Reads a file containing material properties. +MPREAD, Fname, Ext, --, LIB" "MPRINT - Specifies that radiation matrices are to be printed. +MPRINT, KEY" "MPTEMP - Defines a temperature table for material properties. +MPTEMP, SLOC, T1, T2, T3, T4, T5, T6" "MPTGEN - Adds temperatures to the temperature table by generation. +MPTGEN, STLOC, NUM, TSTRT, TINC" "MPTRES - Restores a temperature table previously defined. +MPTRES, Lab, MAT" "MPWRITE - Writes linear material properties in the database to a file (if the LIB option is not specified) or writes both linear and nonlinear material properties (if LIB is specified) from the database to a file. +MPWRITE, Fname, Ext, --, LIB, MAT" "MRPM - Defines the revolutions per minute (RPM) for a machine rotation. +MRPM, VAL1" "MSAVE - Sets the solver memory saving option. This option only applies to the PCG solver (including PCG Lanczos). +MSAVE, Key" "MSHAPE - For elements that support multiple shapes, specifies the element shape to be used for meshing. +MSHAPE, KEY, Dimension" "MSHCOPY - Simplifies the generation of meshes that have matching node element patterns on two different line groups (in 2-D) or area groups (3-D). +MSHCOPY, KEYLA, LAPTRN, LACOPY, KCN, DX, DY, DZ, TOL, LOW, HIGH" "MSHKEY - Specifies whether free meshing or mapped meshing should be used to mesh a model. +MSHKEY, KEY" "MSHMID - Specifies placement of midside nodes. +MSHMID, KEY" "MSHPATTERN - Specifies pattern to be used for mapped triangle meshing. +MSHPATTERN, KEY" "MSOLVE - Starts multiple solutions for an acoustic analysis. +MSOLVE, NUMSLV, VAL1, VAL2, Lab, ANGFIX" "MSTOLE - Adds two extra nodes from FLUID116 elements to SURF151 or SURF152 elements for convection analyses. +MSTOLE, METHOD, Namesurf, Namefluid" "MXPAND - Specifies modal or buckling analysis expansion options. +MXPAND, NMODE, FREQB, FREQE, Elcalc, SIGNIF, MSUPkey, ModeSelMethod, EngCalc" "N - Defines a node. +N, NODE, X, Y, Z, THXY, THYZ, THZX" "NANG - Rotates a nodal coordinate system by direction cosines. +NANG, NODE, X1, X2, X3, Y1, Y2, Y3, Z1, Z2, Z3" "NAXIS - Generates nodes for general axisymmetric element sections. +NAXIS, Action, Val" "NCNV - Sets the key to terminate an analysis. +NCNV, KSTOP, DLIM, ITLIM, ETLIM, CPLIM" "NDELE - Deletes nodes. +NDELE, NODE1, NODE2, NINC" "NDIST - Calculates and lists the distance between two nodes. +NDIST, ND1, ND2" "NDSURF - Generates surface elements overlaid on the edge of existing elements and assigns the extra node as the closest fluid element node. +NDSURF, Snode, Telem, DIMN" "NEQIT - Specifies the maximum number of equilibrium iterations for nonlinear analyses. +NEQIT, NEQIT, FORCEkey" "NFORCE - Sums the nodal forces and moments of elements attached to nodes. +NFORCE, ITEM" "NGEN - Generates additional nodes from a pattern of nodes. +NGEN, ITIME, INC, NODE1, NODE2, NINC, DX, DY, DZ, SPACE" "NKPT - Defines a node at an existing keypoint location. +NKPT, NODE, NPT" "NLADAPTIVE - Defines the criteria under which the mesh is refined or modified during a nonlinear solution. +NLADAPTIVE, Component, Action, Criterion, Option, VAL1, VAL2, VAL3" "NLDIAG - Sets nonlinear diagnostics functionality. +NLDIAG, Label, Key, MAXFILE" "NLDPOST - Gets element component information from nonlinear diagnostic files. +NLDPOST, Label, Key, FileID, Prefix" "NLGEOM - Includes large-deflection effects in a static or full transient analysis. +NLGEOM, Key" "NLHIST - Specify results items to track during solution. +NLHIST, Key, Name, Item, Comp, NODE, ELEM, SHELL, LAYER, STOP_VALUE, STOP_COND" "NLIST - Lists nodes. +NLIST, NODE1, NODE2, NINC, Lcoord, SORT1, SORT2, SORT3, KINTERNAL" "NLMESH - Controls remeshing in nonlinear adaptivity. +NLMESH, Control, VAL1, VAL2" "NLOG - Forms the natural log of a variable. +NLOG, IR, IA, --, --, Name, --, --, FACTA, FACTB" "NLOPT +NLOPT - Specifies \"Nonlinear analysis options\" as the subsequent status topic." "NMODIF - Modifies an existing node. +NMODIF, NODE, X, Y, Z, THXY, THYZ, THZX" "NODES +NODES - Specifies \"Nodes\" as the subsequent status topic." "NOOFFSET - Prevents the CDREAD command from offsetting specified data items +NOOFFSET, Label" "NORA - Rotates nodal coordinate systems to surface normal +NORA, AREA, NDIR" "NORL - Rotates nodal coordinate systems perpendicular to line normal +NORL, LINE, AREA, NDIR" "NPLOT - Displays nodes. +NPLOT, KNUM" "NPRINT - Defines which time points stored are to be listed. +NPRINT, N" "NREAD - Reads nodes from a file. +NREAD, Fname, Ext, --" "NREFINE - Refines the mesh around specified nodes. +NREFINE, NN1, NN2, NINC, LEVEL, DEPTH, POST, RETAIN" "NRLSUM - Specifies the Naval Research Laboratory (NRL) sum mode combination method. +NRLSUM, SIGNIF, Label, LabelCSM, ForceType" "NROPT - Specifies the Newton-Raphson options in a static or full transient analysis. +NROPT, Option1, Option2, Optval" "NROTAT - Rotates nodal coordinate systems into the active system. +NROTAT, NODE1, NODE2, NINC" "NRRANG - Specifies the range of nodes to be read from the node file. +NRRANG, NMIN, NMAX, NINC" "NSCALE - Generates a scaled set of nodes from a pattern of nodes. +NSCALE, INC, NODE1, NODE2, NINC, RX, RY, RZ" "NSEL - Selects a subset of nodes. +NSEL, Type, Item, Comp, VMIN, VMAX, VINC, KABS" "NSLA - Selects those nodes associated with the selected areas. +NSLA, Type, NKEY" "NSLE - Selects those nodes attached to the selected elements. +NSLE, Type, NodeType, Num" "NSLK - Selects those nodes associated with the selected keypoints. +NSLK, Type" "NSLL - Selects those nodes associated with the selected lines. +NSLL, Type, NKEY" "NSLV - Selects those nodes associated with the selected volumes. +NSLV, Type, NKEY" "NSMOOTH - Smooths selected nodes among selected elements. +NSMOOTH, NPASS" "NSOL - Specifies nodal data to be stored from the results file. +NSOL, NVAR, NODE, Item, Comp, Name, SECTOR" "NSORT - Sorts nodal data. +NSORT, Item, Comp, ORDER, KABS, NUMB, SEL" "NSTORE - Defines which time points are to be stored. +NSTORE, TINC" "NSUBST - Specifies the number of substeps to be taken this load step. +NSUBST, NSBSTP, NSBMX, NSBMN, Carry" "NSVR - Defines the number of variables for user-programmable element options. +NSVR, ITYPE, NSTV" "NSYM - Generates a reflected set of nodes. +NSYM, Ncomp, INC, NODE1, NODE2, NINC" "NUMCMP - Compresses the numbering of defined items. +NUMCMP, Label" "NUMEXP - Specifies solutions to be expanded from mode-superposition analyses or substructure analyses. +NUMEXP, NUM, BEGRNG, ENDRNG, Elcalc" "NUMMRG - Merges coincident or equivalently defined items. +NUMMRG, Label, TOLER, GTOLER, Action, Switch" "NUMOFF - Adds a number offset to defined items. +NUMOFF, Label, VALUE, KREF" "NUMSTR - Establishes starting numbers for automatically numbered items. +NUMSTR, Label, VALUE" "NUMVAR - Specifies the number of variables allowed in POST26. +NUMVAR, NV" "NUSORT +NUSORT - Restores original order for nodal data." "NWPAVE - Moves the working plane origin to the average location of nodes. +NWPAVE, N1, N2, N3, N4, N5, N6, N7, N8, N9" "NWPLAN - Defines the working plane using three nodes. +NWPLAN, WN, NORIG, NXAX, NPLAN" "NWRITE - Writes nodes to a file. +NWRITE, Fname, Ext, --, KAPPND" "OCDATA - Defines an ocean load using non-table data. +OCDATA, VAL1, VAL2, VAL3, . . . , VAL14" "OCDELETE - Deletes a previously defined ocean load. +OCDELETE, DataType, ZoneName" "OCLIST - Summarizes all currently defined ocean loads. +OCLIST, DataType, ZoneName" "OCREAD - Reads externally defined ocean data. +OCREAD, Fname, Ext, --, Option" "OCTABLE - Defines an ocean load using table data. +OCTABLE, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7" "OCTYPE - Specifies the type of ocean load data to follow. +OCTYPE, DataType, Name" "OCZONE - Specifies the type of ocean zone data to follow. +OCZONE, ZoneType, ZoneName, CompNameInt, CompNameExt" "OMEGA - Specifies the rotational velocity of the structure. +OMEGA, OMEGX, OMEGY, OMEGZ" "OPERATE +OPERATE - Specifies \"Operation data\" as the subsequent status topic." "OPNCONTROL - Sets decision parameter for automatically increasing the time step interval. +OPNCONTROL, Lab, VALUE, NUMSTEP" "OUTAERO - Outputs the superelement matrices and load vectors to formatted files for aeroelastic analysis. +OUTAERO, SENAME, TIMEB, DTIME" "OUTGEOM - Controls geometry-related data written to the results file. +OUTGEOM, Item, Freq" "OUTOPT +OUTOPT - Specifies \"Output options\" as the subsequent status topic." "OUTPR - Controls the solution printout. +OUTPR, Item, Freq, Cname" "OUTRES - Controls the solution-result data written to the database. +OUTRES, Item, Freq, Cname, -- , NSVAR, DSUBres" "OVCHECK - Checks for overconstraint among constraint equations and Lagrange multipliers. +OVCHECK, Method, Frequency, Set" "PADELE - Deletes a defined path. +PADELE, DELOPT" "PAGET - Writes current path information into an array variable. +PAGET, PARRAY, POPT" "PAPUT - Retrieves path information from an array variable. +PAPUT, PARRAY, POPT" "PARESU - Restores previously saved paths from a file. +PARESU, Lab, Fname, Ext, --" "PARRES - Reads parameters from a file. +PARRES, Lab, Fname, Ext, --" "PARSAV - Writes parameters to a file. +PARSAV, Lab, Fname, Ext, --" "PASAVE - Saves selected paths to an external file. +PASAVE, Lab, Fname, Ext, --" "PATH - Defines a path name and establishes parameters for the path. +PATH, NAME, nPts, nSets, nDiv" "PAUSE +PAUSE - Temporarily releases the current product license." "PCALC - Forms additional labeled path items by operating on existing path items. +PCALC, Oper, LabR, Lab1, Lab2, FACT1, FACT2, CONST" "PCGOPT - Controls PCG solver options. +PCGOPT, Lev_Diff , --, ReduceIO, StrmCk, Wrtfull, Memory, LM_Key" "PCIRC - Creates a circular area centered about the working plane origin. +PCIRC, RAD1, RAD2, THETA1, THETA2" "PCROSS - Calculates the cross product of two path vectors along the current path. +PCROSS, LabXR, LabYR, LabZR, LabX1, LabY1, LabZ1, LabX2, LabY2, LabZ2" "PDEF - Interpolates an item onto a path. +PDEF, Lab, Item, Comp, Avglab" "PDOT - Calculates the dot product of two path vectors along the current path. +PDOT, LabR, LabX1, LabY1, LabZ1, LabX2, LabY2, LabZ2" "PERBC2D - Generates periodic constraints for 2-D planar magnetic field analyses. +PERBC2D, LOC1, LOC2, LOCTOL, R1, R2, TOLR, OPT, PLNOPT" "PERTURB - Sets linear perturbation analysis options. +PERTURB, Type, MatKey, ContKey, LoadControl" "PFACT - Calculates participation factors for the PSD or multi-point response spectrum table. +PFACT, TBLNO, Excit, Parcor" "PHYSICS - Writes, reads, or lists all element information +PHYSICS, Option, Title, Fname, Ext, --" "PIVCHECK - Controls the behavior of an analysis when a negative or zero equation solver pivot value is encountered. +PIVCHECK, KEY, PRNTCNTRL" "PLAS - Plots a specified acoustic quantity during postprocessing of an acoustic analysis. +PLAS, Lab, LDSTEP, SUBSTEP, FREQB, FREQE, LogOpt, PlotType, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6" "PLCAMP - Plots Campbell diagram data for applications involving rotating structure dynamics. +PLCAMP, Option, SLOPE, UNIT, FREQB, Cname, STABVAL, KeyAllFreq, KeyNegFreq" "PLCFREQ - Plots the frequency response for the given CYCSPEC specification. +PLCFREQ, SPEC, SECTbeg, SECTend" "PLCHIST - Plots a histogram of the frequency response of each sector for the given CYCSPEC specification. +PLCHIST, SPEC, FREQpt" "PLCINT - Plots the fracture parameter (CINT) result data. +PLCINT, ACTION, ID, Node, Cont, Dtype" "PLCKSURF - Plots the Φ = 0 level set surface in an XFEM-based crack analysis +PLCKSURF, MODELDISPLAY" "PLCPLX - Specifies the part of a complex variable to display. +PLCPLX, KEY" "PLDISP - Displays the displaced structure. +PLDISP, KUND" "PLESOL - Displays solution results as discontinuous element contours. +PLESOL, Item, Comp, KUND, Fact" "PLETAB - Displays element table items. +PLETAB, Itlab, Avglab" "PLF2D - Generates a contour line plot of equipotentials. +PLF2D, NCONT, OLAY, ANUM, WIN" "PLFAR - Plots pressure far fields and far field parameters. +PLFAR, Lab, Option, PHI1, PHI2, NPH1, THETA1, THETA2, NTHETA, VAL1, VAL2, VAL3, VAL4, VAL5, LDSTEP, SUBSTEP, FREQB, FREQE, PlotType, LogOpt" "PLGEOM - Plots target and source geometries. +PLGEOM, Item, NODEkey" "PLLS - Displays element table items as contoured areas along elements. +PLLS, LabI, LabJ, Fact, KUND,ViewUP" "PLMAP - Plots target and source pressures. +PLMAP, Item, --, NODEkey, ImagKey" "PLMC - Plots the modal coordinates from a mode-superposition solution. +PLMC, LSTEP, SBSTEP, TIMFRQ, KIMG, HIbeg, HIend" "PLNEAR - Plots the pressure in the near zone exterior to the equivalent source surface. +PLNEAR, Lab, Opt, KCN, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8,VAL9" "PLNSOL - Displays solution results as continuous element contours. +PLNSOL, Item, Comp, KUND, Fact, FileID, AVG" "PLORB +PLORB - Displays the orbital motion of a rotating structure" "PLOTTING +PLOTTING - Specifies \"Plotting settings\" as the subsequent status topic." "PLPAGM - Displays path items along the path geometry. +PLPAGM, Item, Gscale, Nopt" "PLPATH - Displays path items on a graph. +PLPATH, Lab1, Lab2, Lab3, Lab4, Lab5, Lab6" "PLSECT - Displays membrane and membrane-plus-bending linearized stresses. +PLSECT, Item, Comp, RHO, KBR, KBR3D" "PLTIME - Defines the time range for which data are to be displayed. +PLTIME, TMIN, TMAX" "PLTRAC - Displays a charged particle trace on an element display. +PLTRAC, Analopt, Item, Comp, TRPNum, Name, MXLOOP, TOLER, OPTION, ESCL, MSCL" "PLVAR - Displays up to ten variables in the form of a graph. +PLVAR, NVAR1, NVAR2, NVAR3, NVAR4, NVAR5, NVAR6, NVAR7, NVAR8, NVAR9, NVAR10" "PLVECT - Displays results as vectors. +PLVECT, Item, Lab2, Lab3, LabP, Mode, Loc, Edge, KUND" "PLZZ - Plots the interference diagram from a cyclic modal analysis. +PLZZ, RotVel, DeltaRotVel" "PMAP - Creates mapping of the path geometry by defining path interpolation division points. +PMAP, FORM, DISCON" "PMGTRAN - Summarizes electromagnetic results from a transient analysis. +PMGTRAN, Fname, FREQ, Fcnam1, Fcnam2, Pcnam1, Pcnam2, Ecnam1, Ccnam1" "PMLOPT - Defines perfectly matched layers (PMLs) or irregular perfectly matched layers (IPML). +PMLOPT, PSYS, Lab, Xminus, Xplus, Yminus, Yplus, Zminus, Zplus, MixOpt" "PMLSIZE - Determines number of PML or IPML layers. +PMLSIZE, FREQB, FREQE, DMIN, DMAX, THICK, ANGLE, WAVESPEED" "PNGR - Provides PNG file export for ANSYS displays. +PNGR, Kywrd, OPT, VAL" "POINT +POINT - Specifies \"Point flow tracing settings\" as the subsequent status topic." "POLY +POLY - Creates a polygonal area based on working plane coordinate pairs." "POWERH +POWERH - Calculates the rms power loss in a conductor or lossy dielectric." "PPATH - Defines a path by picking or defining nodes, or locations on the currently active working plane, or by entering specific coordinate locations. +PPATH, POINT, NODE, X, Y, Z, CS" "PRANGE - Determines the path range. +PRANGE, LINC, VMIN, VMAX, XVAR" "PRAS - Prints a specified acoustic quantity during postprocessing of an acoustic analysis. +PRAS, Lab, LDSTEP, SUBSTEP, FREQB, FREQE, LogOpt, --, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6" "PRCAMP - Prints Campbell diagram data for applications involving rotating structure dynamics. +PRCAMP, Option, SLOPE, UNIT, FREQB, Cname, STABVAL, KeyALLFreq, KeyNegFreq, KeyWhirl" "PRCINT - Lists the fracture parameter (CINT) results data. +PRCINT, ID, Node, Dtype" "PRCPLX - Defines the output form for complex variables. +PRCPLX, KEY" "PRED - Activates a predictor in a nonlinear analysis. +PRED, Sskey, --, Lskey" "PRENERGY - Prints the total energies of a model or the energies of the specified components. +PRENERGY, EnergyType, Cname1, Cname2, Cname3, Cname4, Cname5, Cname6" "PRERR +PRERR - Prints SEPC and TEPC." "PRESOL - Prints the solution results for elements. +PRESOL, Item, Comp" "PRETAB - Prints the element table items. +PRETAB, Lab1, Lab2, Lab3, Lab4, Lab5, Lab6, Lab7, Lab8, Lab9" "PRFAR - Prints acoustic far field parameters. +PRFAR, Lab, Option, PHI1, PHI2, NPH1, THETA1, THETA2, NTHETA, VAL1, VAL2, VAL3, VAL4, VAL5, LDSTEP, SUBSTEP, FREQB, FREQE, --, LogOpt" "PRI2 - Creates a polygonal area or a prism volume by vertices (GUI). +PRI2, P51X, Z1, Z2" "PRIM +PRIM - Specifies \"Solid model primitives\" as the subsequent status topic." "PRINT +PRINT - Specifies \"Print settings\" as the subsequent status topic." "PRISM - Creates a prism volume based on working plane coordinate pairs. +PRISM, Z1, Z2" "PRITER +PRITER - Prints solution summary data." "PRJSOL - Prints joint element output. +PRJSOL, Item, Comp" "PRMC - Prints the modal coordinates from a mode-superposition solution. +PRMC, LSTEP, SBSTEP, TIMFRQ, KIMG, HIbeg, HIend" "PRNEAR - Prints the pressure in the near zone exterior to the equivalent source surface. +PRNEAR, Lab, Opt, KCN, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8,VAL9" "PRNLD - Prints the summed element nodal loads. +PRNLD, Lab, TOL, Item" "PRNSOL - Prints nodal solution results. +PRNSOL, Item, Comp, --, --, --, AVG" "PROD - Multiplies variables. +PROD, IR, IA, IB, IC, Name, --, --, FACTA, FACTB, FACTC" "PRORB - Prints the orbital motion characteristics of a rotating structure +PRORB, WhrlNodKey" "PRPATH - Prints path items along a geometry path. +PRPATH, Lab1, Lab2, Lab3, Lab4, Lab5, Lab6" "PRRFOR - Prints the constrained node reaction solution. Used with the FORCE command. +PRRFOR, Lab" "PRRSOL - Prints the constrained node reaction solution. +PRRSOL, Lab" "PRSCONTROL - Specifies whether to include pressure load stiffness in the element stiffness formation. +PRSCONTROL, Key" "PRSECT - Calculates and prints linearized stresses along a section path. +PRSECT, RHO, KBR, KBR3D" "PRTIME - Defines the time range for which data are to be listed. +PRTIME, TMIN, TMAX" "PRVAR - Lists variables vs. time (or frequency). +PRVAR, NVAR1, NVAR2, NVAR3, NVAR4, NVAR5, NVAR6" "PRVECT - Prints results as vector magnitude and direction cosines. +PRVECT, Item, Lab2, Lab3, LabP" "PSCONTROL - Enables or disables shared-memory parallel operations. +PSCONTROL, Option, Key" "PSDCOM - Specifies the power spectral density mode combination method. +PSDCOM, SIGNIF, COMODE, , ForceType" "PSDFRQ - Defines the frequency points for the input spectrum tables PSDVAL vs. PSDFRQ for PSD analysis. +PSDFRQ, TBLNO1, TBLNO2, FREQ1, FREQ2, FREQ3, FREQ4, FREQ5, FREQ6, FREQ7" "PSDGRAPH - Displays input PSD curves. +PSDGRAPH, TBLNO1, TBLNO2, DisplayKey" "PSDRES - Controls solution output written to the results file from a PSD analysis. +PSDRES, Lab, RelKey" "PSDSPL - Defines a partially correlated excitation in a PSD analysis. +PSDSPL, TBLNO, RMIN, RMAX" "PSDUNIT - Defines the type of input PSD. +PSDUNIT, TBLNO, Type, GVALUE" "PSDVAL - Defines PSD values. +PSDVAL, TBLNO, SV1, SV2, SV3, SV4, SV5, SV6, SV7" "PSDWAV - Defines a wave propagation excitation in a PSD analysis. +PSDWAV, TBLNO, VX, VY, VZ" "PSEL - Selects a path or paths. +PSEL, Type, Pname1, Pname2, Pname3, Pname4, Pname5, Pname6, Pname7, Pname8, Pname9, Pname10" "PSMAT - Writes an assembled global matrix to a postscript format that graphically displays nonzero matrix values. +PSMAT, Fname, Ext, Matrix, Color" "PSMESH - Creates and meshes a pretension section (PRETS179) or a preload section (MPC184). +PSMESH, SECID, Name, P0, Egroup, NUM, KCN, KDIR, VALUE, NDPLANE, PSTOL, PSTYPE, ECOMP, NCOMP" "PSTRES - Specifies whether prestress effects are calculated or included. +PSTRES, Key" "PSYS - Sets the PML element coordinate system attribute pointer. +PSYS, KCN" "PTR - Dumps the record of a binary file. +PTR, LOC, BASE, LOCH, BASEH" "PTXY - Defines coordinate pairs for use in polygons and prisms. +PTXY, X1, Y1, X2, Y2, X3, Y3, X4, Y4" "PVECT - Interpolates a set of items onto a path. +PVECT, Oper, LabXR, LabYR, LabZR" "QDVAL - Defines PSD quadspectral values. +QDVAL, TBLNO1, TBLNO2, SV1, SV2, SV3, SV4, SV5, SV6, SV7" "QRDOPT - Specifies additional QRDAMP modal analysis options. +QRDOPT, ReuseKey,--,--,SymMeth,CMCCoutKey" "QSOPT - Specifies quasi static radiation options. +QSOPT, Opt" "QUAD - Generates a quadratic line of nodes from three nodes. +QUAD, NODE1, NINTR, NODE2, NFILL, NSTRT, NINC, PKFAC" "QUOT - Divides two variables. +QUOT, IR, IA, IB, --, Name, --, --, FACTA, FACTB" "R - Defines the element real constants. +R, NSET, R1, R2, R3, R4, R5, R6" "RACE - Defines a \"racetrack\" current source. +RACE, XC, YC, RAD, TCUR, DY, DZ, --, --, Cname" "RADOPT - Specifies Radiosity Solver options. +RADOPT, --, FLUXTOL, SOLVER, MAXITER, TOLER, OVERRLEX, --, --, --, --, MAXFLUXITER" "RAPPND - Appends results data from the database to the results file. +RAPPND, LSTEP, TIME" "RATE - Specifies whether the effect of creep strain rate will be used in the solution of a load step. +RATE, Option" "RBE3 - Distributes the force/moment applied at the master node to a set of slave nodes, taking into account the geometry of the slave nodes as well as weighting factors. +RBE3, Master, DOF, Slaves, Wtfact" "RCON +RCON - Specifies \"Real constants\" as the subsequent status topic." "RCYC - Calculates cyclic results for a mode-superposition harmonic solution. +RCYC, IR, IA, SECTOR, Name" "RDEC - Defines the decimation parameters used by the radiosity solver method. +RDEC, Option, REDUC, --, Nplace" "RDELE - Deletes real constant sets. +RDELE, NSET1, NSET2, NINC, LCHK" "READ - Reads coordinate and pressure data from a file. +READ, Fname, NSKIP, Format, Xfield, Yfield, Zfield, pRfield, pIfield" "REAL - Sets the element real constant set attribute pointer. +REAL, NSET" "REALVAR - Forms a variable using only the real part of a complex variable. +REALVAR, IR, IA, --, --, Name, --, --, FACTA" "RECTNG - Creates a rectangular area anywhere on the working plane. +RECTNG, X1, X2, Y1, Y2" "REMESH - Specifies the starting and ending remeshing points, and other options, for rezoning. +REMESH, Action, Filename, Ext, --, Opt1, Opt2" "RESCOMBINE - Reads results from local results files into the database after a distributed memory parallel (Distributed ANSYS) solution. +RESCOMBINE, NUMFILES, Fname, Ext, Lstep, Sbstep, Fact, KIMG, TIME, ANGLE, NSET, ORDER" "RESCONTROL - Controls file writing for multiframe restarts. +RESCONTROL, Action, Ldstep, Frequency, MAXFILES, --, MAXTotalFiles, Filetype" "RESET +RESET - Resets all POST1 or POST26 specifications to initial defaults." "RESP - Generates a response spectrum. +RESP, IR, LFTAB, LDTAB, specType, dampRatio, DTIME, TMIN, TMAX, inputType" "RESUME - Resumes the database from the database file. +RESUME, Fname, Ext, --, NOPAR, KNOPLOT" "RESVEC - Calculates or includes residual vectors or residual responses +RESVEC, KeyVect, -, -, -, KeyResp" "RESWRITE - Appends results data from the database to a results file. +RESWRITE, Fname, --, --, --, cFlag" "REZONE - Initiates the rezoning process, sets rezoning options, and rebuilds the database. +REZONE, Option, LDSTEP, SBSTEP" "RFORCE - Specifies the total reaction force data to be stored. +RFORCE, NVAR, NODE, Item, Comp, Name" "RIGID - Specifies known rigid body modes (if any) of the model. +RIGID, Dof1, Dof2, Dof3, Dof4, Dof5, Dof6" "RIGRESP - Specifies the rigid response calculation. +RIGRESP, Option, Method, Val1, Val2" "RLIST - Lists the real constant sets. +RLIST, NSET1, NSET2, NINC" "RMALIST +RMALIST - Lists all defined master nodes for a ROM method." "RMANL - Assigns model database, dimensionality, and operating direction for the ROM method. +RMANL, Fname, Ext, --, Dimn, Oper" "RMASTER - Defines master nodes for the ROM method. +RMASTER, Node, Lab" "RMCAP - Defines lumped capacitance pairs between conductors C1 and C2 for a ROM method. +RMCAP, RefName, C1, C2" "RMCLIST +RMCLIST - Lists all lumped capacitance pairs defined." "RMFLVEC +RMFLVEC - Writes eigenvectors of fluid nodes to a file for use in damping parameter extraction." "RMLVSCALE - Defines element load vector scaling for a ROM use pass. +RMLVSCALE, Nload, Fact1, Fact2, Fact3, Fact4, Fact5" "RMMLIST +RMMLIST - Lists all mode specifications for the ROM method." "RMMRANGE - Defines and edits various modal parameters for the ROM method. +RMMRANGE, Mode, Key, Min, Max, Nstep, Damp, Scale" "RMMSELECT - Selects modes for the ROM method. +RMMSELECT, Nmode, Method, Dmin, Dmax" "RMNDISP - Extracts neutral plane displacements from a test load or element load solution for the ROM method. +RMNDISP, LoadT, Loc" "RMNEVEC +RMNEVEC - Extracts neutral plane eigenvectors from a modal analysis for the ROM method." "RMODIF - Modifies real constant sets. +RMODIF, NSET, STLOC, V1, V2, V3, V4, V5, V6" "RMORE - Adds real constants to a set. +RMORE, R7, R8, R9, R10, R11, R12" "RMPORDER - Defines polynomial orders for ROM functions. +RMPORDER, Ord1, Ord2, Ord3, Ord4, Ord5, Ord6, Ord7, Ord8, Ord9" "RMRESUME - Resumes ROM data from a file. +RMRESUME, Fname, Ext, --" "RMRGENERATE +RMRGENERATE - Performs fitting procedure for all ROM functions to generate response surfaces." "RMROPTIONS - Defines options for ROM response surface fitting. +RMROPTIONS, RefName, Type, Invert" "RMRPLOT - Plots response surface of ROM function or its derivatives with respect to the dominant mode(s). +RMRPLOT, RefName, Type, Mode1, Mode2" "RMRSTATUS - Prints status of response surface for ROM function. +RMRSTATUS, RefName" "RMSAVE - Saves ROM data to file. +RMSAVE, Fname, Ext, --" "RMSMPLE - Runs finite element solutions and obtains sample points for the ROM method. +RMSMPLE, Nlgeom, Cap, Seqslv, Eeqslv" "RMUSE - Activates ROM use pass for ROM elements. +RMUSE, Option, Usefil" "RMXPORT +RMXPORT - Exports ROM model to external VHDL-AMS simulator." "ROCK - Specifies a rocking response spectrum. +ROCK, CGX, CGY, CGZ, OMX, OMY, OMZ" "ROSE - Specifies the Rosenblueth mode combination method. +ROSE, SIGNIF, Label, TD, ForceType" "RPOLY - Creates a regular polygonal area centered about the working plane origin. +RPOLY, NSIDES, LSIDE, MAJRAD, MINRAD" "RPR4 - Creates a regular polygonal area or prism volume anywhere on the working plane. +RPR4, NSIDES, XCENTER, YCENTER, RADIUS, THETA, DEPTH" "RPRISM - Creates a regular prism volume centered about the working plane origin. +RPRISM, Z1, Z2, NSIDES, LSIDE, MAJRAD, MINRAD" "RPSD - Calculates response power spectral density (PSD). +RPSD, IR, IA, IB, ITYPE, DATUM, Name, --, SIGNIF" "RSMESH - Generates a result section. +RSMESH, P0, RID, KCN, Kdir, VALUE, NDPLANE, PSTOL, Ecomp" "RSOPT - Creates or loads the radiosity mapping data file for SURF251 or SURF252 element types. +RSOPT, Opt, Filename, Ext, Dir" "RSPLIT - Creates one or more results file(s) from the current results file based on subsets of elements. +RSPLIT, Option, Label, Name1, Name2, Name3, Name4, Name5, Name6, Name7, Name8, Name9, Name10, Name11, Name12, Name13, Name14, Name15, Name16" "RSTMAC - Calculates modal assurance criterion (MAC) and matches nodal solutions from two results files or from one results file and one universal format file. +RSTMAC, File1, Lstep1, Sbstep1, File2, Lstep2, Sbstep2, --, MacLim, Cname, KeyPrint" "RSTOFF - Offsets node or element IDs in the FE geometry record. +RSTOFF, Lab, OFFSET" "RSURF - Generates the radiosity surface elements and stores them in the database. +RSURF, Options, Delopts, ETNUM" "RSYMM - Defines symmetry, rotation, or extrusion parameters for the radiosity method. +RSYMM, Option, CS, Axis, NSECT, CONDVALUE, SVAL, EVAL" "RSYS - Activates a coordinate system for printout or display of element and nodal results. +RSYS, KCN" "SABS - Specifies absolute values for element table operations. +SABS, KEY" "SADD - Forms an element table item by adding two existing items. +SADD, LabR, Lab1, Lab2, FACT1, FACT2, CONST" "SALLOW - Defines the allowable stress table for safety factor calculations. +SALLOW, STRS1, STRS2, STRS3, STRS4, STRS5, STRS6" "SAVE - Saves all current database information. +SAVE, Fname, Ext, --, Slab" "SBCLIST +SBCLIST - Lists solid model boundary conditions." "SBCTRAN +SBCTRAN - Transfers solid model loads and boundary conditions to the FE model." "SCOPT - Specifies System Coupling options. +SCOPT, TempDepKey" "SDELETE - Deletes sections from the database. +SDELETE, SFIRST, SLAST, SINC, KNOCLEAN, LCHK" "SE - Defines a superelement. +SE, File, --, --, TOLER, nStartVN" "SECCONTROL - Supplements or overrides default section properties. +SECCONTROL, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8, VAL9, VAL10, VAL11, VAL12, VAL13" "SECDATA - Describes the geometry of a section. +SECDATA, VAL1, VAL2, VAL3, VAL4, VAL5, VAL6, VAL7, VAL8, VAL9, VAL10, VAL11, VAL12" "SECFUNCTION - Specifies shell section thickness as a tabular function. +SECFUNCTION, TABLE, PATTERN" "SECJOINT - Defines local coordinate systems at joint element nodes and other data for joint elements. +SECJOINT, Kywrd, Val1, Val2, Val3, Val4, Val5, Val6" "SECLOCK - Specifies locks on the components of relative motion in a joint element. +SECLOCK, dof, MINVALUE, MAXVALUE, dof, MINVALUE, MAXVALUE, dof, MINVALUE, MAXVALUE" "SECMODIF - Modifies a pretension section +SECMODIF, SECID, Kywrd" "SECNUM - Sets the element section attribute pointer. +SECNUM, SECID" "SECOFFSET - Defines the section offset for cross sections. +SECOFFSET, Location, OFFSET1, OFFSET2, CG-Y, CG-Z, SH-Y, SH-Z" "SECPLOT - Plots the geometry of a beam, pipe, shell, or reinforcing section to scale. +SECPLOT, SECID, VAL1, VAL2, VAL3" "SECREAD - Reads a custom section library or a user-defined section mesh into ANSYS. +SECREAD, Fname, Ext, --, Option" "SECSTOP - Specifies stops on the components of relative motion in a joint element. +SECSTOP, dof, MINVALUE, MAXVALUE, dof, MINVALUE, MAXVALUE, dof, MINVALUE, MAXVALUE" "SECTYPE - Associates section type information with a section ID number. +SECTYPE, SECID, Type, Subtype, Name, REFINEKEY" "SECWRITE - Creates an ASCII file containing user mesh section information. +SECWRITE, Fname, Ext, --, ELEM_TYPE" "SED - Defines the excitation direction for response spectrum and PSD analyses. +SED, SEDX, SEDY, SEDZ, Cname" "SEDLIST - Lists the DOF solution of a superelement after the use pass. +SEDLIST, Sename, KOPT" "SEEXP - Specifies options for the substructure expansion pass. +SEEXP, Sename, Usefil, Imagky, Expopt" "SELIST - Lists the contents of a superelement matrix file. +SELIST, Sename, KOPT, KINT" "SELM +SELM - Specifies \"Superelements\" as the subsequent status topic." "SELTOL - Sets the tolerance for subsequent select operations. +SELTOL, Toler" "SEMIIMPLICIT - Specifies parameters for a semi-implicit solution. +SEMIIMPLICIT, Option, Type, Value" "SENERGY - Determines the stored magnetic energy or co-energy. +SENERGY, OPT, ANTYPE" "SEOPT - Specifies substructure analysis options. +SEOPT, Sename, SEMATR, SEPR, SESST, ExpMth, SeOcLvL" "SESYMM - Performs a symmetry operation on a superelement within the use pass. +SESYMM, Sename, Ncomp, INC, File, Ext, --" "SET - Defines the data set to be read from the results file. +SET, Lstep, Sbstep, Fact, KIMG, TIME, ANGLE, NSET, ORDER" "SETFGAP - Updates or defines the real constant table for squeeze film elements. +SETFGAP, GAP, ROPT, --, PAMB, ACF1, ACF2, PREF, MFP" "SETRAN - Creates a superelement from an existing superelement. +SETRAN, Sename, KCNTO, INC, File, Ext, --, DX, DY, DZ, NOROT" "SEXP - Forms an element table item by exponentiating and multiplying. +SEXP, LabR, Lab1, Lab2, EXP1, EXP2" "SF - Defines surface loads on nodes. +SF, Nlist, Lab, VALUE, VALUE2" "SFA - Specifies surface loads on the selected areas. +SFA, Area, LKEY, Lab, VALUE, VALUE2" "SFACT - Allows safety factor or margin of safety calculations to be made. +SFACT, TYPE" "SFADELE - Deletes surface loads from areas. +SFADELE, AREA, LKEY, Lab" "SFALIST - Lists the surface loads for the specified area. +SFALIST, AREA, Lab" "SFBEAM - Specifies surface loads on beam and pipe elements. +SFBEAM, Elem, LKEY, Lab, VALI, VALJ, VAL2I, VAL2J, IOFFST, JOFFST, LENRAT" "SFCALC - Calculates the safety factor or margin of safety. +SFCALC, LabR, LabS, LabT, TYPE" "SFCONTROL - Defines structural surface-load properties on selected elements and nodes for subsequent loading commands. +SFCONTROL, KCSYS, LCOMP, VAL1, VAL2, VAL3, KTAPER, KUSE, KAREA, KPROJ" "SFCUM - Specifies that surface loads are to be accumulated. +SFCUM, Lab, Oper, FACT, FACT2" "SFDELE - Deletes surface loads. +SFDELE, Nlist, Lab" "SFE - Defines surface loads on elements. +SFE, Elem, LKEY, Lab, KVAL, VAL1, VAL2, VAL3, VAL4" "SFEDELE - Deletes surface loads from elements. +SFEDELE, ELEM, LKEY, Lab, Lcomp" "SFELIST - Lists the surface loads for elements. +SFELIST, ELEM, Lab" "SFFUN - Specifies a varying surface load. +SFFUN, Lab, Par, Par2" "SFGRAD - Specifies a gradient (slope) for surface loads. +SFGRAD, Lab, SLKCN, Sldir, SLZER, SLOPE" "SFL - Specifies surface loads on lines of an area. +SFL, Line, Lab, VALI, VALJ, VAL2I, VAL2J" "SFLDELE - Deletes surface loads from lines. +SFLDELE, LINE, Lab" "SFLEX - Sets flexibility factors for the currently defined pipe element section. +SFLEX, FFAX, FFBY, FFBZ, FFTO, FFTSY, FFTSZ" "SFLIST - Lists surface loads. +SFLIST, NODE, Lab" "SFLLIST - Lists the surface loads for lines. +SFLLIST, LINE, Lab" "SFSCALE - Scales surface loads on elements. +SFSCALE, Lab, FACT, FACT2" "SFTRAN +SFTRAN - Transfer the solid model surface loads to the finite element model." "SHELL - Selects a shell element or shell layer location for results output. +SHELL, Loc" "SHPP - Controls element shape checking. +SHPP, Lab, VALUE1, VALUE2" "SHSD - Creates or deletes a shell-solid interface to be used in shell-to-solid assemblies. +SHSD, RID, Action" "SLIST - Summarizes the section properties for all defined sections in the current session. +SLIST, SFIRST, SLAST, SINC, Details, Type" "SLOAD - Loads a pretension section. +SLOAD, SECID, PLNLAB, KINIT, KFD, FDVALUE, LSLOAD, LSLOCK" "SMALL - Finds the smallest of three variables. +SMALL, IR, IA, IB, IC, Name, --, --, FACTA, FACTB, FACTC" "SMAX - Forms an element table item from the maximum of two other items. +SMAX, LabR, Lab1, Lab2, FACT1, FACT2" "SMBODY +SMBODY - Specifies \"Body loads on the solid model\" as the subsequent status topic." "SMCONS +SMCONS - Specifies \"Constraints on the solid model\" as the subsequent status topic." "SMFOR +SMFOR - Specifies \"Forces on the solid model\" as the subsequent status topic." "SMIN - Forms an element table item from the minimum of two other items. +SMIN, LabR, Lab1, Lab2, FACT1, FACT2" "SMOOTH - Allows smoothing of noisy data and provides a graphical representation of the data. +SMOOTH, Vect1, Vect2, DATAP, FITPT, Vect3, Vect4, DISP" "SMRTSIZE - Specifies meshing parameters for automatic (smart) element sizing. +SMRTSIZE, SIZLVL, FAC, EXPND, TRANS, ANGL, ANGH, GRATIO, SMHLC, SMANC, MXITR, SPRX" "SMSURF +SMSURF - Specifies \"Surface loads on the solid model\" as the subsequent status topic." "SMULT - Forms an element table item by multiplying two other items. +SMULT, LabR, Lab1, Lab2, FACT1, FACT2" "SNOPTION - Specifies Supernode (SNODE) eigensolver options. +SNOPTION, RangeFact, BlockSize, RobustLev, Compute, --, Solve_Info" "SOLU - Specifies solution summary data per substep to be stored. +SOLU, NVAR, Item, Comp, Name" "SOLUOPT +SOLUOPT - Specifies \"Solution options\" as the subsequent status topic." "SOLVE - Starts a solution. +SOLVE, Action" "SORT +SORT - Specifies \"Sort settings\" as the subsequent status topic." "SOURCE - Defines a default location for undefined nodes or keypoints. +SOURCE, X, Y, Z" "SPACE - Defines a space node for radiation using the Radiation Matrix method. +SPACE, NODE" "SPCNOD - Defines a space node for radiation using the Radiosity method. +SPCNOD, ENCL, NODE" "SPCTEMP - Defines a free-space ambient temperature for radiation using the Radiosity method. +SPCTEMP, ENCL, TEMP" "SPDAMP - Defines input spectrum damping in a multi-point response spectrum analysis. +SPDAMP, TBLNO, CURVNO, DampRatio" "SPEC +SPEC - Specifies \"Miscellaneous specifications\" as the subsequent status topic." "SPFREQ - Defines the frequency points for the input spectrum tables SPVAL vs. SPFREQ for multi-point spectrum analysis. +SPFREQ, TBLNO, FREQ1, FREQ2, FREQ3, FREQ4, FREQ5, FREQ6, FREQ7" "SPGRAPH - Displays input spectrum curves for MPRS analysis. +SPGRAPH, TBLNO, CURVNO, CURVNOBeg" "SPH4 - Creates a spherical volume anywhere on the working plane. +SPH4, XCENTER, YCENTER, RAD1, RAD2" "SPH5 - Creates a spherical volume by diameter end points. +SPH5, XEDGE1, YEDGE1, XEDGE2, YEDGE2" "SPHERE - Creates a spherical volume centered about the working plane origin. +SPHERE, RAD1, RAD2, THETA1, THETA2" "SPLINE - Generates a segmented spline through a series of keypoints. +SPLINE, P1, P2, P3, P4, P5, P6, XV1, YV1, ZV1, XV6, YV6, ZV6" "SPLOT - Displays the selected areas and a faceted view of their underlying surfaces +SPLOT, NA1, NA2, NINC, MESH" "SPMWRITE - Calculates the state-space matrices and writes them to the SPM file. +SPMWRITE, Method, NMODE, Inputs, InputLabels, Outputs, OutputLabels, NIC, VelAccKey, FileFormat" "SPOINT - Defines a point for force/moment summations or inertia calculation +SPOINT, NODE, X, Y, Z, InertiaKey" "SPOPT - Selects the spectrum type and other spectrum options. +SPOPT, Sptype, NMODE, Elcalc, modeReuseKey" "SPREAD - Turns on a dashed tolerance curve for the subsequent curve plots. +SPREAD, VALUE" "SPTOPT +SPTOPT - Specifies \"Spectrum analysis options\" as the subsequent status topic." "SPUNIT - Defines the type of multi-point response spectrum. +SPUNIT, TBLNO, Type, GVALUE, KeyInterp" "SPVAL - Defines multi-point response spectrum values. +SPVAL, TBLNO, CURVNO, SV1, SV2, SV3, SV4, SV5, SV6, SV7" "SQRT - Forms the square root of a variable. +SQRT, IR, IA, --, --, Name, --, --, FACTA" "SRSS - Specifies the square root of sum of squares mode combination method. +SRSS, SIGNIF, Label, AbsSumKey, ForceType" "SSBT - Specifies preintegrated bending thermal effects for shell sections. +SSBT, BT 11 , BT 22 , BT 12 , T" "SSLN - Selects and displays small lines in the model. +SSLN, FACT, SIZE" "SSMT - Specifies preintegrated membrane thermal effects for shell sections. +SSMT, MT 11 , MT 22 , MT 12 , T" "SSOPT - Defines a solution option for soil analysis. +SSOPT, Option, Par1, Par2, Par3, Par4, Par5" "SSPA - Specifies a preintegrated membrane stiffness for shell sections. +SSPA, A11 , A21 , A31 , A22 , A32 , A33 , T" "SSPB - Specifies a preintegrated coupling stiffness for shell sections. +SSPB, B11 , B21 , B31 , B22 , B32 , B33 , T, B12 , B13 , B23" "SSPD - Specifies a preintegrated bending stiffness for shell sections. +SSPD, D11 , D21 , D31 , D22 , D32 , D33 , T" "SSPE - Specifies a preintegrated transverse shear stiffness for shell sections. +SSPE, E11 , E21 , E22 , T" "SSPM - Specifies mass density for a preintegrated shell section. +SSPM, DENS, T" "SSTATE - Defines a steady-state rolling analysis. +SSTATE, Action, CM_Name, Val1, Val2, Val3, Val4, Val5, Val6, Val7, Val8, Val9" "SSUM +SSUM - Calculates and prints the sum of element table items." "STABILIZE - Activates stabilization for all elements that support nonlinear stabilization. +STABILIZE, Key, Method, VALUE, SubStpOpt, FORCELIMIT, RECALCDAMP" "STAT +STAT - Displays the status of database settings." "STEF - Specifies Stefan-Boltzmann radiation constant. +STEF, VALUE" "STORE - Stores data in the database for the defined variables. +STORE, Lab, NPTS, --, FREQ, Toler" "SUBOPT - Specifies Subspace (SUBSP) eigensolver options. +SUBOPT, Option, Value1" "SUBSET - Reads results for the selected portions of the model. +SUBSET, Lstep, SBSTEP, FACT, KIMG, TIME, ANGLE, NSET" "SUCALC - Create new result data by operating on two existing result data sets on a given surface. +SUCALC, RSetName, lab1, Oper, lab2, fact1, fact2, const" "SUCR - Create a surface. +SUCR, SurfName, SurfType, nRefine, Radius, blank, blank, TolOut" "SUDEL - Delete geometry information as well as any mapped results for specified surface. +SUDEL, SurfName" "SUEVAL - Perform operations on a mapped item and store result in a scalar parameter. +SUEVAL, Parm, lab1, Oper" "SUGET - Moves surface geometry and mapped results to an array parameter. +SUGET, SurfName, RSetName, Parm, Geom" "SUMAP - Map results onto selected surface(s). +SUMAP, RSetName, Item, Comp" "SUMTYPE - Sets the type of summation to be used in the following load case operations. +SUMTYPE, Label" "SUPL - Plot result data on all selected surfaces or on a specified surface. +SUPL, SurfName, RSetName, KWIRE" "SUPR - Print global status, geometry information and/or result information. +SUPR, SurfName, RSetName" "SURESU - Read a set of surface definitions and result items from a file and make them the current set. +SURESU, --, Fname, Fext, Fdir" "SUSAVE - Saves surface definitions to a file. +SUSAVE, Lab, Fname, Fext, Fdir" "SUSEL - Selects a subset of surfaces +SUSEL, Type, Name1, Name2, Name3, Name4, Name5, Name6, Name7, Name8" "SUVECT - Create new result data by operating on two existing result vectors on a given surface. +SUVECT, RSetName, lab1, Oper, lab2, Offset" "SV - Defines spectrum values to be associated with frequency points. +SV, DAMP, SV1, SV2, SV3, SV4, SV5, SV6, SV7, SV8, SV9" "SVPLOT - Displays input spectrum curves. +SVPLOT, OptionScale, damp1, damp2, damp3, damp4" "SVTYP - Defines the type of single-point response spectrum. +SVTYP, KSV, FACT, KeyInterp" "SWADD - Adds more surfaces to an existing spot weld set. +SWADD, Ecomp, SHRD, NCM1, NCM2, NCM3, NCM4, NCM5, NCM6, NCM7, NCM8, NCM9" "SWDEL - Deletes spot weld sets. +SWDEL, Ecomp" "SWGEN - Creates a new spot weld set. +SWGEN, Ecomp, SWRD, NCM1, NCM2, SND1, SND2, SHRD, DIRX, DIRY, DIRZ, ITTY, ICTY" "SWLIST - Lists spot weld sets. +SWLIST, Ecomp" "SYNCHRO - Specifies whether the excitation frequency is synchronous or asynchronous with the rotational velocity of a structure. +SYNCHRO, RATIO, Cname" "TALLOW - Defines the temperature table for safety factor calculations. +TALLOW, TEMP1, TEMP2, TEMP3, TEMP4, TEMP5, TEMP6" "TARGET - Specifies the target nodes for mapping pressures onto surface effect elements. +TARGET, Nlist" "TB - Activates a data table for material properties or special element input. +TB, Lab, MATID, NTEMP, NPTS, TBOPT, --, FuncName" "TBCOPY - Copies a data table from one material to another. +TBCOPY, Lab, MATF, MATT" "TBDATA - Defines data for the material data table. +TBDATA, STLOC, C1, C2, C3, C4, C5, C6" "TBDELE - Deletes previously defined material data tables. +TBDELE, Lab, MAT1, MAT2, INC" "TBEO - Sets special options or parameters for material data tables. +TBEO, Par, Value" "TBFIELD - Defines values of field variables for material data tables. +TBFIELD, Type, Value" "TBFT - Performs material curve-fitting operations. +TBFT, Oper, ID, Option1, Option2, Option3, Option4, Option5, Option6, Option7, –, Option9" "TBIN - Sets parameters used for interpolation of the material data tables. +TBIN, Oper, Par1, Par2, Par3, Par4" "TBLE +TBLE - Specifies \"Data table properties\" as the subsequent status topic." "TBLIST - Lists the material data tables. +TBLIST, Lab, MAT" "TBMODIF - Modifies data for the material data table (GUI). +TBMODIF, ROW, COL, VALUE" "TBPLOT - Displays the material data table. +TBPLOT, Lab, MAT, TBOPT, TEMP, SEGN" "TBPT - Defines a point on a nonlinear data curve. +TBPT, Oper, X1, X2, X3, ..., XN" "TBTEMP - Defines a temperature for a material data table. +TBTEMP, TEMP, KMOD" "TCHG - Converts 20-node degenerate tetrahedral elements to their 10-node non-degenerate counterparts. +TCHG, ENAME1, ENAME2, ETYPE2" "THEXPAND - Enables or disables thermal loading +THEXPAND, KEY" "THOPT - Specifies nonlinear transient thermal solution options. +THOPT, Refopt, REFORMTOL, NTABPOINTS, TEMPMIN, TEMPMAX, --, ALGO" "TIFF - Provides TIFF file Export for ANSYS Displays. +TIFF, Kywrd, OPT" "TIME - Sets the time for a load step. +TIME, TIME" "TIMERANGE - Specifies the time range for which data are to be stored. +TIMERANGE, TMIN, TMAX" "TIMINT - Turns on transient effects. +TIMINT, Key, Lab" "TIMP - Improves the quality of tetrahedral elements that are not associated with a volume. +TIMP, ELEM, CHGBND, IMPLEVEL" "TINTP - Defines transient integration parameters. +TINTP, GAMMA, ALPHA, DELTA, THETA, OSLM, TOL, --, --, AVSMOOTH, ALPHAF, ALPHAM" "TOFFST - Specifies the temperature offset from absolute zero to zero. +TOFFST, VALUE" "TORUS - Creates a toroidal volume. +TORUS, RAD1, RAD2, RAD3, THETA1, THETA2" "TRANSFER - Transfers a pattern of nodes to another coordinate system. +TRANSFER, KCNTO, INC, NODE1, NODE2, NINC" "TREF - Defines the reference temperature for thermal strain calculations. +TREF, TREF" "TRNOPT - Specifies transient analysis options. +TRNOPT, Method, MAXMODE, --, MINMODE, MCout, TINTOPT, VAout, DMPSFreq, EngCalc" "TRPDEL - Deletes particle flow or charged particle trace points. +TRPDEL, NTRP1, NTRP2, TRPINC" "TRPLIS - Lists the particle flow or charged particle trace points. +TRPLIS, NTRP1, NTRP2, TRPINC, Opt" "TRPOIN - Defines a point through which a particle flow or charged particle trace will travel. +TRPOIN, X, Y, Z, VX, VY, VZ, CHRG, MASS" "TRTIME - Defines the options used for the PLTRAC (particle flow or charged particle trace) command. +TRTIME, TIME, SPACING, OFFSET, SIZE, LENGTH" "TSHAP - Defines simple 2-D and 3-D geometric surfaces for target segment elements. +TSHAP, Shape" "TSRES - Defines an array of key times at which the time-stepping strategy changes. +TSRES, Array" "TUNIF - Assigns a uniform temperature to all nodes. +TUNIF, TEMP" "TVAR - Changes time to the cumulative iteration number. +TVAR, KEY" "TYPE - Sets the element type attribute pointer. +TYPE, ITYPE" "UIMP - Defines constant material properties (GUI). +UIMP, MAT, Lab1, Lab2, Lab3, VAL1, VAL2, VAL3" "UNDELETE - Removes results sets from the group of sets selected for editing. +UNDELETE, Option, Nstart, Nend" "UNDO - Allows the user to modify or save commands issued since the last RESUME or SAVE command. +UNDO, Kywrd" "UNPAUSE +UNPAUSE - Restores use of a temporarily released product license." "UPCOORD - Modifies the coordinates of the active set of nodes, based on the current displacements. +UPCOORD, FACTOR, Key" "UPGEOM - Adds displacements from a previous analysis and updates the geometry of the finite element model to the deformed configuration. +UPGEOM, FACTOR, LSTEP, SBSTEP, Fname, Ext, --" "USRCAL - Allows user-solution subroutines to be activated or deactivated. +USRCAL, Rnam1, Rnam2, Rnam3, Rnam4, Rnam5, Rnam6, Rnam7, Rnam8, Rnam9" "USRDOF - Specifies the degrees of freedom for the user-defined element USER300. +USRDOF, Action, DOF1, DOF2, DOF3, DOF4, DOF5, DOF6, DOF7, DOF8, DOF9, DOF10" "USRELEM - Specifies the characteristics of the user-defined element USER300. +USRELEM, NNODES, NDIM, KeyShape, NREAL, NSAVEVARS, NRSLTVAR, KEYANSMAT, NINTPNTS, KESTRESS, KEYSYM" "V - Defines a volume through keypoints. +V, P1, P2, P3, P4, P5, P6, P7, P8" "V2DOPT - Specifies 2-D/axisymmetric view factor calculation options. +V2DOPT, GEOM, NDIV, HIDOPT, NZONE" "VA - Generates a volume bounded by existing areas. +VA, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10" "VADD - Adds separate volumes to create a single volume. +VADD, NV1, NV2, NV3, NV4, NV5, NV6, NV7, NV8, NV9" "VARDEL - Deletes a variable (GUI). +VARDEL, NVAR" "VARNAM - Names (or renames) a variable. +VARNAM, IR, Name" "VATT - Associates element attributes with the selected, unmeshed volumes. +VATT, MAT, REAL, TYPE, ESYS, SECNUM" "VCLEAR - Deletes nodes and volume elements associated with selected volumes. +VCLEAR, NV1, NV2, NINC" "VCROSS - Forms element table items from the cross product of two vectors. +VCROSS, LabXR, LabYR, LabZR, LabX1, LabY1, LabZ1, LabX2, LabY2, LabZ2" "VDDAM - Specifies the velocity spectrum computation constants for the analysis of shock resistance of shipboard structures. +VDDAM, VF, VA, VB, VC" "VDELE - Deletes unmeshed volumes. +VDELE, NV1, NV2, NINC, KSWP" "VDGL - Lists keypoints of a volume that lie on a parametric degeneracy. +VDGL, NV1, NV2, NINC" "VDOT - Forms an element table item from the dot product of two vectors. +VDOT, LabR, LabX1, LabY1, LabZ1, LabX2, LabY2, LabZ2" "VDRAG - Generates volumes by dragging an area pattern along a path. +VDRAG, NA1, NA2, NA3, NA4, NA5, NA6, NLP1, NLP2, NLP3, NLP4, NLP5, NLP6" "VEORIENT - Specifies brick element orientation for volume mapped (hexahedron) meshing. +VEORIENT, VNUM, Option, VALUE1, VALUE2" "VEXT - Generates additional volumes by extruding areas. +VEXT, NA1, NA2, NINC, DX, DY, DZ, RX, RY, RZ" "VFOPT - Specifies options for the view factor file and calculates view factors. +VFOPT, Opt, Filename, Ext, Dir, Filetype, Fileformat" "VFQUERY - Queries and prints element Hemicube view factors and average view factor. +VFQUERY, SRCELEM, TARELEM" "VFSM - Adjusts view factor matrix to satisfy reciprocity and/or row sum properties. +VFSM, Action, ENCL, OPT, MAXITER, CONV" "VGEN - Generates additional volumes from a pattern of volumes. +VGEN, ITIME, NV1, NV2, NINC, DX, DY, DZ, KINC, NOELEM, IMOVE" "VGET - Moves a variable into an array parameter vector. +VGET, Par, IR, TSTRT, KCPLX" "VGLUE - Generates new volumes by \"gluing\" volumes. +VGLUE, NV1, NV2, NV3, NV4, NV5, NV6, NV7, NV8, NV9" "VIMP - Improves the quality of the tetrahedral elements in the selected volume(s). +VIMP, VOL, CHGBND, IMPLEVEL" "VINP - Finds the pairwise intersection of volumes. +VINP, NV1, NV2, NV3, NV4, NV5, NV6, NV7, NV8, NV9" "VINV - Finds the intersection of volumes. +VINV, NV1, NV2, NV3, NV4, NV5, NV6, NV7, NV8, NV9" "VLIST - Lists the defined volumes. +VLIST, NV1, NV2, NINC" "VLSCALE - Generates a scaled set of volumes from a pattern of volumes. +VLSCALE, NV1, NV2, NINC, RX, RY, RZ, KINC, NOELEM, IMOVE" "VMESH - Generates nodes and volume elements within volumes. +VMESH, NV1, NV2, NINC" "VOFFST - Generates a volume, offset from a given area. +VOFFST, NAREA, DIST, KINC" "VOLUMES +VOLUMES - Specifies \"Volumes\" as the subsequent status topic." "VOVLAP - Overlaps volumes. +VOVLAP, NV1, NV2, NV3, NV4, NV5, NV6, NV7, NV8, NV9" "VPLOT - Displays the selected volumes. +VPLOT, NV1, NV2, NINC, DEGEN, SCALE" "VPTN - Partitions volumes. +VPTN, NV1, NV2, NV3, NV4, NV5, NV6, NV7, NV8, NV9" "VPUT - Moves an array parameter vector into a variable. +VPUT, Par, IR, TSTRT, KCPLX, Name" "VROTAT - Generates cylindrical volumes by rotating an area pattern about an axis. +VROTAT, NA1, NA2, NA3, NA4, NA5, NA6, PAX1, PAX2, ARC, NSEG" "VSBA - Subtracts areas from volumes. +VSBA, NV, NA, SEPO, KEEPV, KEEPA" "VSBV - Subtracts volumes from volumes. +VSBV, NV1, NV2, SEPO, KEEP1, KEEP2" "VSBW - Subtracts intersection of the working plane from volumes (divides volumes). +VSBW, NV, SEPO, KEEP" "VSEL - Selects a subset of volumes. +VSEL, Type, Item, Comp, VMIN, VMAX, VINC, KSWP" "VSLA - Selects those volumes containing the selected areas. +VSLA, Type, VLKEY" "VSUM - Calculates and prints geometry statistics of the selected volumes. +VSUM, LAB" "VSWEEP - Fills an existing unmeshed volume with elements by sweeping the mesh from an adjacent area through the volume. +VSWEEP, VNUM, SRCA, TRGA, LSMO" "VSYMM - Generates volumes from a volume pattern by symmetry reflection. +VSYMM, Ncomp, NV1, NV2, NINC, KINC, NOELEM, IMOVE" "VTRAN - Transfers a pattern of volumes to another coordinate system. +VTRAN, KCNTO, NV1, NV2, NINC, KINC, NOELEM, IMOVE" "VTYPE - Specifies the viewing procedure used to determine the form factors for the Radiation Matrix method. +VTYPE, NOHID, NZONE" "WPAVE - Moves the working plane origin to the average of specified points. +WPAVE, X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3" "WPCSYS - Defines the working plane location based on a coordinate system. +WPCSYS, WN, KCN" "WPLANE - Defines a working plane to assist in picking operations. +WPLANE, WN, XORIG, YORIG, ZORIG, XXAX, YXAX, ZXAX, XPLAN, YPLAN, ZPLAN" "WPOFFS - Offsets the working plane. +WPOFFS, XOFF, YOFF, ZOFF" "WPROTA - Rotates the working plane. +WPROTA, THXY, THYZ, THZX" "WPSTYL - Controls the display and style of the working plane. +WPSTYL, SNAP, GRSPAC, GRMIN, GRMAX, WPTOL, WPCTYP, GRTYPE, WPVIS, SNAPANG" "WRFULL - Stops solution after assembling global matrices. +WRFULL, Ldstep" "WRITE - Writes the radiation matrix file. +WRITE, Fname" "WRITEMAP - Writes interpolated pressure data to a file. +WRITEMAP, Fname" "WSPRINGS +WSPRINGS - Creates weak springs on corner nodes of a bounding box of the currently selected elements." "WTBCREATE - Creates a USER300 element to model the turbine for full aeroelastic coupling analysis and specifies relevant settings for the analysis. +WTBCREATE, IEL, NODE, DAMP" "XFCRKMESH - Defines a crack in the model when the crack surface is discretized by MESH200 elements +XFCRKMESH, EnrichmentID, ElemComp, NodeComp" "XFDATA - Defines a crack in the model by specifying nodal level set values +XFDATA, EnrichmentID, LSM or -- , ELEMNUM, NODENUM, PHI, PSI" "XFENRICH - Defines parameters associated with crack propagation using XFEM +XFENRICH, EnrichmentID, CompName, MAT_ID,Method, RADIUS, SNAPTOLER" "XFLIST - Lists enrichment details and associated crack information +XFLIST, EnrichmentID" "XVAR - Specifies the X variable to be displayed. +XVAR, N" "~CAT5IN - Transfers a .CATPart file into the ANSYS program. +~CAT5IN, Name, Extension, Path, Entity, FMT, NOCL, NOAN" "~CATIAIN - Transfers a CATIA model into the ANSYS program. +~CATIAIN, Name, Extension, Path, - -, - -, BLANK, - -" "~PARAIN - Transfers a Parasolid file into the ANSYS program. +~PARAIN, Name, Extension, Path, Entity, FMT, Scale" "~PROEIN - Transfers a Creo Parametric part into the ANSYS program. +~PROEIN, Name, Extension, Path, Proecomm" "~SATIN - Transfers a .SAT file into the ANSYS program. +~SATIN, Name, Extension, Path, Entity, FMT, NOCL, NOAN" "~UGIN - Transfers an NX part into the ANSYS program. +~UGIN, Name, Extension, Path, Entity, LAYER, FMT" "/WB - APDL undocumented command +/WB" "XMLO - APDL undocumented command +XMLO" "/XML - APDL undocumented command +/XML" "CNTR - APDL undocumented command +CNTR" "EBLOCK - APDL undocumented command +EBLOCK" "CMBLOCK - APDL undocumented command +CMBLOCK" "NBLOCK - APDL undocumented command +NBLOCK" "/TRACK - APDL undocumented command +/TRACK" "CWZPLOT - APDL undocumented command +CWZPLOT" "~EUI - APDL undocumented command +~EUI" "NELE - APDL undocumented command +NELE" "EALL - APDL undocumented command +EALL" "NALL - APDL undocumented command +NALL" "FLITEM - APDL undocumented command +FLITEM" "LSLN - APDL undocumented command +LSLN" "PSOLVE - APDL undocumented command +PSOLVE" "ASLN - APDL undocumented command +ASLN" "/VERIFY - APDL undocumented command +/VERIFY" "/SSS - APDL undocumented command +/SSS" "~CFIN - APDL undocumented command +~CFIN" "*EVAL - APDL undocumented command +*EVAL" "*MOONEY - APDL undocumented command +*MOONEY" "/RUNSTAT - APDL undocumented command +/RUNSTAT" "ALPFILL - APDL undocumented command +ALPFILL" "ARCOLLAPSE - APDL undocumented command +ARCOLLAPSE" "ARDETACH - APDL undocumented command +ARDETACH" "ARFILL - APDL undocumented command +ARFILL" "ARMERGE - APDL undocumented command +ARMERGE" "ARSPLIT - APDL undocumented command +ARSPLIT" "CEWRITE - APDL undocumented command +CEWRITE" "FIPLOT - APDL undocumented command +FIPLOT" "GAPFINISH - APDL undocumented command +GAPFINISH" "GAPLIST - APDL undocumented command +GAPLIST" "GAPMERGE - APDL undocumented command +GAPMERGE" "GAPOPT - APDL undocumented command +GAPOPT" "GAPPLOT - APDL undocumented command +GAPPLOT" "LNCOLLAPSE - APDL undocumented command +LNCOLLAPSE" "LNDETACH - APDL undocumented command +LNDETACH" "LNFILL - APDL undocumented command +LNFILL" "LNMERGE - APDL undocumented command +LNMERGE" "LNSPLIT - APDL undocumented command +LNSPLIT" "PCONV - APDL undocumented command +PCONV" "PLCONV - APDL undocumented command +PLCONV" "PEMOPTS - APDL undocumented command +PEMOPTS" "PEXCLUDE - APDL undocumented command +PEXCLUDE" "PINCLUDE - APDL undocumented command +PINCLUDE" "PMETH - APDL undocumented command +PMETH" "/PMETH - APDL undocumented command +/PMETH" "PMOPTS - APDL undocumented command +PMOPTS" "PPLOT - APDL undocumented command +PPLOT" "PPRANGE - APDL undocumented command +PPRANGE" "PRCONV - APDL undocumented command +PRCONV" "PRECISION - APDL undocumented command +PRECISION" "RALL - APDL undocumented command +RALL" "RFILSZ - APDL undocumented command +RFILSZ" "RITER - APDL undocumented command +RITER" "RMEMRY - APDL undocumented command +RMEMRY" "RSPEED - APDL undocumented command +RSPEED" "RSTAT - APDL undocumented command +RSTAT" "RTIMST - APDL undocumented command +RTIMST" "/RUNST - APDL undocumented command +/RUNST" "RWFRNT - APDL undocumented command +RWFRNT" "SARPLOT - APDL undocumented command +SARPLOT" "SHSD - APDL undocumented command +SHSD" "SLPPLOT - APDL undocumented command +SLPPLOT" "SLSPLOT - APDL undocumented command +SLSPLOT" "VCVFILL - APDL undocumented command +VCVFILL" "/OPT - APDL undocumented command +/OPT" "OPEQN - APDL undocumented command +OPEQN" "OPFACT - APDL undocumented command +OPFACT" "OPFRST - APDL undocumented command +OPFRST" "OPGRAD - APDL undocumented command +OPGRAD" "OPKEEP - APDL undocumented command +OPKEEP" "OPLOOP - APDL undocumented command +OPLOOP" "OPPRNT - APDL undocumented command +OPPRNT" "OPRAND - APDL undocumented command +OPRAND" "OPSUBP - APDL undocumented command +OPSUBP" "OPSWEEP - APDL undocumented command +OPSWEEP" "OPTYPE - APDL undocumented command +OPTYPE" "OPUSER - APDL undocumented command +OPUSER" "OPVAR - APDL undocumented command +OPVAR" "OPADD - APDL undocumented command +OPADD" "OPCLR - APDL undocumented command +OPCLR" "OPDEL - APDL undocumented command +OPDEL" "OPMAKE - APDL undocumented command +OPMAKE" "OPSEL - APDL undocumented command +OPSEL" "OPANL - APDL undocumented command +OPANL" "OPDATA - APDL undocumented command +OPDATA" "OPRESU - APDL undocumented command +OPRESU" "OPSAVE - APDL undocumented command +OPSAVE" "OPEXE - APDL undocumented command +OPEXE" "OPLFA - APDL undocumented command +OPLFA" "OPLGR - APDL undocumented command +OPLGR" "OPLIST - APDL undocumented command +OPLIST" "OPLSW - APDL undocumented command +OPLSW" "OPRFA - APDL undocumented command +OPRFA" "OPRGR - APDL undocumented command +OPRGR" "OPRSW - APDL undocumented command +OPRSW" "PILECALC - APDL undocumented command +PILECALC" "PILEDISPSET - APDL undocumented command +PILEDISPSET" "PILEGEN - APDL undocumented command +PILEGEN" "PILELOAD - APDL undocumented command +PILELOAD" "PILEMASS - APDL undocumented command +PILEMASS" "PILERUN - APDL undocumented command +PILERUN" "PILESEL - APDL undocumented command +PILESEL" "PILESTIF - APDL undocumented command +PILESTIF" "PLVAROPT - APDL undocumented command +PLVAROPT" "PRVAROPT - APDL undocumented command +PRVAROPT" "TOCOMP - APDL undocumented command +TOCOMP" "TODEF - APDL undocumented command +TODEF" "TOFREQ - APDL undocumented command +TOFREQ" "TOTYPE - APDL undocumented command +TOTYPE" "TOVAR - APDL undocumented command +TOVAR" "TOEXE - APDL undocumented command +TOEXE" "TOLOOP - APDL undocumented command +TOLOOP" "TOGRAPH - APDL undocumented command +TOGRAPH" "TOLIST - APDL undocumented command +TOLIST" "TOPLOT - APDL undocumented command +TOPLOT" "TOPRINT - APDL undocumented command +TOPRINT" "TOSTAT - APDL undocumented command +TOSTAT" "TZAMESH - APDL undocumented command +TZAMESH" "TZDELE - APDL undocumented command +TZDELE" "TZEGEN - APDL undocumented command +TZEGEN" "XVAROPT - APDL undocumented command +XVAROPT" "PGSAVE - APDL undocumented command +PGSAVE" "SOLCONTROL - APDL undocumented command +SOLCONTROL" "TOTAL - APDL undocumented command +TOTAL" "VTGEOM - APDL undocumented command +VTGEOM" "VTREAL - APDL undocumented command +VTREAL" "VTSTAT - APDL undocumented command +VTSTAT" "PGRAPH - APDL undocumented command +PGRAPH" "/VT - APDL undocumented command +/VT" "VTIN - APDL undocumented command +VTIN" "VTRFIL - APDL undocumented command +VTRFIL" "VTTEMP - APDL undocumented command +VTTEMP" "PGRSET - APDL undocumented command +PGRSET" "VTCLR - APDL undocumented command +VTCLR" "VTMETH - APDL undocumented command +VTMETH" "VTRSLT - APDL undocumented command +VTRSLT" "VTVMOD - APDL undocumented command +VTVMOD" "PGSELE - APDL undocumented command +PGSELE" "VTDISC - APDL undocumented command +VTDISC" "VTMP - APDL undocumented command +VTMP" "VTSEC - APDL undocumented command +VTSEC" "PGWRITE - APDL undocumented command +PGWRITE" "VTEVAL - APDL undocumented command +VTEVAL" "VTOP - APDL undocumented command +VTOP" "VTSFE - APDL undocumented command +VTSFE" "POUTRES - APDL undocumented command +POUTRES" "VTFREQ - APDL undocumented command +VTFREQ" "VTPOST - APDL undocumented command +VTPOST" "VTSL - APDL undocumented command +VTSL" "FLDATA1-40 - APDL undocumented command +FLDATA1-40" "HFPCSWP - APDL undocumented command +HFPCSWP" "MSDATA - APDL undocumented command +MSDATA" "MSVARY - APDL undocumented command +MSVARY" "QFACT - APDL undocumented command +QFACT" "FLOCHECK - APDL undocumented command +FLOCHECK" "HFPOWER - APDL undocumented command +HFPOWER" "MSMASS - APDL undocumented command +MSMASS" "PERI - APDL undocumented command +PERI" "SPADP - APDL undocumented command +SPADP" "FLREAD - APDL undocumented command +FLREAD" "HFPORT - APDL undocumented command +HFPORT" "MSMETH - APDL undocumented command +MSMETH" "PLFSS - APDL undocumented command +PLFSS" "SPARM - APDL undocumented command +SPARM" "FLOTRAN - APDL undocumented command +FLOTRAN" "HFSCAT - APDL undocumented command +HFSCAT" "MSMIR - APDL undocumented command +MSMIR" "PLSCH - APDL undocumented command +PLSCH" "SPFSS - APDL undocumented command +SPFSS" "HFADP - APDL undocumented command +HFADP" "ICE - APDL undocumented command +ICE" "MSNOMF - APDL undocumented command +MSNOMF" "PLSYZ - APDL undocumented command +PLSYZ" "SPICE - APDL undocumented command +SPICE" "HFARRAY - APDL undocumented command +HFARRAY" "ICEDELE - APDL undocumented command +ICEDELE" "MSPROP - APDL undocumented command +MSPROP" "PLTD - APDL undocumented command +PLTD" "SPSCAN - APDL undocumented command +SPSCAN" "HFDEEM - APDL undocumented command +HFDEEM" "ICELIST - APDL undocumented command +ICELIST" "MSQUAD - APDL undocumented command +MSQUAD" "PLTLINE - APDL undocumented command +PLTLINE" "SPSWP - APDL undocumented command +SPSWP" "HFEIGOPT - APDL undocumented command +HFEIGOPT" "ICVFRC - APDL undocumented command +ICVFRC" "MSRELAX - APDL undocumented command +MSRELAX" "PLVFRC - APDL undocumented command +PLVFRC" "HFEREFINE - APDL undocumented command +HFEREFINE" "LPRT - APDL undocumented command +LPRT" "MSSOLU - APDL undocumented command +MSSOLU" "/PICE - APDL undocumented command +/PICE" "HFMODPRT - APDL undocumented command +HFMODPRT" "MSADV - APDL undocumented command +MSADV" "MSSPEC - APDL undocumented command +MSSPEC" "PLWAVE - APDL undocumented command +PLWAVE" "HFPA - APDL undocumented command +HFPA" "MSCAP - APDL undocumented command +MSCAP" "MSTERM - APDL undocumented command +MSTERM" "PRSYZ - APDL undocumented command +PRSYZ" "FMAGSUM - APDL undocumented command +FMAGSUM") +"Help strings for the parameters of APDL keywords.") + +(defconst apdl-undocumented-command-regexp +"\\(?:\\*\\(?:EVAL\\|MOONEY\\)\\|/\\(?:OPT\\|P\\(?:ICE\\|METH\\)\\|RUNST\\(?:AT\\)?\\|SSS\\|TRACK\\|V\\(?:ERIFY\\|T\\)\\|WB\\|XML\\)\\|A\\(?:LPFILL\\|R\\(?:COLLAPSE\\|DETACH\\|FILL\\|MERGE\\|SPLIT\\)\\|SLN\\)\\|C\\(?:EWRITE\\|MBLOCK\\|NTR\\|WZPLOT\\)\\|E\\(?:ALL\\|BLOCK\\)\\|F\\(?:IPLOT\\|L\\(?:DATA1-40\\|ITEM\\|O\\(?:CHECK\\|TRAN\\)\\|READ\\)\\|MAGSUM\\)\\|GAP\\(?:FINISH\\|LIST\\|MERGE\\|\\(?:OP\\|PLO\\)T\\)\\|HF\\(?:A\\(?:DP\\|RRAY\\)\\|DEEM\\|E\\(?:IGOPT\\|REFINE\\)\\|MODPRT\\|P\\(?:A\\|CSWP\\|O\\(?:RT\\|WER\\)\\)\\|SCAT\\)\\|IC\\(?:E\\(?:DELE\\|LIST\\)?\\|VFRC\\)\\|L\\(?:N\\(?:COLLAPSE\\|DETACH\\|FILL\\|MERGE\\|SPLIT\\)\\|PRT\\|SLN\\)\\|MS\\(?:ADV\\|CAP\\|DATA\\|M\\(?:ASS\\|ETH\\|IR\\)\\|NOMF\\|PROP\\|QUAD\\|RELAX\\|S\\(?:OLU\\|PEC\\)\\|TERM\\|VARY\\)\\|N\\(?:ALL\\|BLOCK\\|ELE\\)\\|OP\\(?:A\\(?:DD\\|NL\\)\\|CLR\\|D\\(?:ATA\\|EL\\)\\|E\\(?:QN\\|XE\\)\\|F\\(?:\\(?:AC\\|RS\\)T\\)\\|GRAD\\|KEEP\\|L\\(?:FA\\|GR\\|IST\\|OOP\\|SW\\)\\|MAKE\\|PRNT\\|R\\(?:AND\\|ESU\\|FA\\|GR\\|SW\\)\\|S\\(?:AVE\\|EL\\|\\(?:UB\\|WEE\\)P\\)\\|TYPE\\|\\(?:USE\\|VA\\)R\\)\\|P\\(?:CONV\\|E\\(?:MOPTS\\|RI\\|XCLUDE\\)\\|G\\(?:R\\(?:APH\\|SET\\)\\|\\(?:S\\(?:AV\\|EL\\)\\|WRIT\\)E\\)\\|I\\(?:LE\\(?:CALC\\|DISPSET\\|GEN\\|LOAD\\|MASS\\|RUN\\|S\\(?:EL\\|TIF\\)\\)\\|NCLUDE\\)\\|L\\(?:CONV\\|FSS\\|S\\(?:CH\\|YZ\\)\\|T\\(?:D\\|LINE\\)\\|V\\(?:AROPT\\|FRC\\)\\|WAVE\\)\\|M\\(?:ETH\\|OPTS\\)\\|OUTRES\\|P\\(?:LOT\\|RANGE\\)\\|R\\(?:CONV\\|ECISION\\|SYZ\\|VAROPT\\)\\|SOLVE\\)\\|QFACT\\|R\\(?:ALL\\|FILSZ\\|ITER\\|MEMRY\\|S\\(?:PEED\\|TAT\\)\\|\\(?:TIMS\\|WFRN\\)T\\)\\|S\\(?:ARPLOT\\|HSD\\|L\\(?:[PS]PLOT\\)\\|OLCONTROL\\|P\\(?:A\\(?:DP\\|RM\\)\\|FSS\\|ICE\\|S\\(?:CAN\\|WP\\)\\)\\)\\|T\\(?:O\\(?:COMP\\|DEF\\|EXE\\|FREQ\\|GRAPH\\|L\\(?:IST\\|OOP\\)\\|P\\(?:\\(?:LO\\|RIN\\)T\\)\\|STAT\\|T\\(?:AL\\|YPE\\)\\|VAR\\)\\|Z\\(?:AMESH\\|DELE\\|EGEN\\)\\)\\|V\\(?:CVFILL\\|T\\(?:CLR\\|DISC\\|EVAL\\|FREQ\\|GEOM\\|IN\\|M\\(?:ETH\\|P\\)\\|OP\\|POST\\|R\\(?:EAL\\|FIL\\|SLT\\)\\|S\\(?:EC\\|FE\\|L\\|TAT\\)\\|TEMP\\|VMOD\\)\\)\\|X\\(?:MLO\\|VAROPT\\)\\|~\\(?:CFIN\\|EUI\\)\\)" +"Regexp of commands not documented in the Ansys manuals. +Seen mainly in Workbench output files and Ansys verification models.") + +(provide 'apdl-keyword) + +;;; apdl-keyword.el ends here diff --git a/lisp/apdl-mode/apdl-mode-pkg.el b/lisp/apdl-mode/apdl-mode-pkg.el new file mode 100644 index 00000000..4b9fabde --- /dev/null +++ b/lisp/apdl-mode/apdl-mode-pkg.el @@ -0,0 +1,9 @@ +;; -*- no-byte-compile: t; lexical-binding: nil -*- +(define-package "apdl-mode" "20250508.908" + "Major mode for the APDL programming language." + '((emacs "25.1")) + :url "https://github.com/dieter-wilhelm/apdl-mode" + :commit "4883ab085811b85cc75c44b5af478ab8f7e98386" + :revdesc "4883ab085811" + :keywords '("languages" "convenience" "tools" "ansys" "apdl") + :authors '(("H. Dieter Wilhelm" . "dieter@duenenhof-wilhelm.de"))) diff --git a/lisp/apdl-mode/apdl-mode.el b/lisp/apdl-mode/apdl-mode.el new file mode 100644 index 00000000..98f36d37 --- /dev/null +++ b/lisp/apdl-mode/apdl-mode.el @@ -0,0 +1,3639 @@ +;;; apdl-mode.el --- Major mode for the scripting language APDL -*- lexical-binding: t -*- + +;; Copyright (C) 2006 - 2025 H. Dieter Wilhelm GPL V3 + +;; Author: H. Dieter Wilhelm +;; Package-Version: 20250508.908 +;; Package-Revision: 4883ab085811 +;; Package-Requires: ((emacs "25.1")) +;; Keywords: languages, convenience, tools, Ansys, APDL +;; URL: https://github.com/dieter-wilhelm/apdl-mode + +;; Maintainer: H. Dieter Wilhelm + +;; Parts of this mode were originally base on octave-mod.el: Copyright +;; (C) 1997 Free Software Foundation, Inc. Author: Kurt Hornik +;; Author: John Eaton +;; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; This code is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; This lisp script is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +;; +;; Permission is granted to distribute copies of this lisp script +;; provided the copyright notice and this permission are preserved in +;; all copies. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, you can either send email to this +;; program's maintainer or write to: The Free Software Foundation, +;; Inc.; 675 Massachusetts Avenue; Cambridge, MA 02139, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Commentary: + +;; The GNU-Emacs major mode for the programming language APDL + +;; APDL (Ansys Parametric Design Language) is the solver scripting +;; language of the FEA (Finite Element Analysis) suite Ansys (ANalysis +;; SYStem, registered TM https://www.ansys.com). + +;; APDL-Mode (formerly ANSYS-Mode) represents, in conjunction with the +;; GNU-Emacs editor, an advanced APDL environment with features like +;; keyword completion, code templates, solver communication (GNU-Linux +;; only), license reporting, dedicated keybindings, etc. + +;; Nowadays - with the advent of modern GUIs - I find APDL-Mode also +;; useful for studying solver (.dat) files which were created by +;; WorkBench. Likewise for writing WorkBench `Command' snippets and +;; inspecting longer snippets from other sources. Accessing swiftly the +;; Ansys APDL reference documentation alone is worth using APDL-Mode! + +;; ------------------------------ +;; First usage: + +;; Please type `M-x apdl' to open a buffer under APDL-Mode. From this +;; buffer you can investigate the menu entries `APDL' and `Ansys' and +;; testing some APDL code. + +;; The APDL-Mode help you'll find with typing `C-c C-h' together with a +;; brief tutorial. + +;;; History: + +;; Created: 2006-02 +;; Please check the accompanying NEWS.org. + +;;; Code: + +(require 'apdl-keyword) +(require 'apdl-initialise) +(require 'apdl-process) +(require 'apdl-template) +(require 'apdl-wb-template) +(require 'outline) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- constants --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defconst apdl-parameter-substitution-commands-regexp + "/TITLE\\|/STITLE\\|/COM\\|/AXLAB\\|/GCOLUMN\\|/TLABEL\\|/AN3D" + "Regexp of command names which have a string behind them.") + +(defconst apdl-string-commands-regexp + "C\\*\\*\\*\\|/TITLE\\|/STITLE\\|/COM\\|/AXLAB\\|\ + /GCOLUMN\\|/TLABEL\\|\\*ABBR\\|/AN3D" + "Regexp of command names which have a string behind them.") + +(defconst apdl-variable-defining-commands ; association list + '( + ;; some math apdl commands like *KRON or *MULT define new + ;; variables, but not at the front of their argument list! -> not + ;; implemented + ("\\*ask\\w*" . "*ASK") + ("\\" . "CM") + ("\\" . "\\*DO") + ("\\*dow\\w*" . "\\*DOWHILE") + ("\\*get\\w*". "\\*GET") + ("/inq\\w*"."/INQUIRE") + ("\\*mfu\\w*"."*MFUN") + ("\\*mop\\w*"."*MOPER") + ("\\" ; bug-gnu-emacs@gnu.org + "Address of current maintainer of the APDL-Mode.") + +(defconst apdl-comment-char ?! + "The APDL comment character.") + +;; \sCODE,code +;; -:whitespace +;; <:commentstart + +;; whitespace + +;; $ +;; comment +;; digits + +;; "^\\s-*\\($\\|\\s<\\|[+[:digit:]-]\\)" + + +(defconst apdl-non-code-line-regexp "^\\s-*\\($\\|\\s<\\|[+[:digit:]-]\\)" + "Regexp indicating a comment -, number - or an empty line. +A comment line contrasting a \"code comment\" which follows code +to be analysed from the Ansys solver/interpreter. A \"number +line\" is a line beginning with a number e. g. from an element +block or with a `+' or `-' sign.") + +(defconst apdl-condensed-input-line-regexp ".*\\$" + "Regexp indicating a condensed input line.") + +(defconst apdl-comment-start-skip "\\S<+\\S-*" + "Regexp to match the start of an APDL comment up to its body. +Used for the variable `comment-start-skip'.") + +;; --- defcustoms --- + +(require 'custom) + +(defgroup APDL nil + "Customisation group for the APDL-Mode." + :version "20.5.0" + :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces) + :link '(url-link :tag "Online documentation" + "https://dieter-wilhelm.github.io/apdl-mode ") + :link '(url-link :tag "Code on GitHub" + "https://github.com/dieter-wilhelm/apdl-mode") + :group 'Languages) + +;; two minutes was too long, 2021-08-12 +(defcustom apdl-parameter-help-duration "30" + "Duration for showing the `apdl-show-command-parameters' overlay. +The value is a string expressing a relative time span like \"2 +hours 35 minutes\" or a number of seconds (\"30\") from now. +Acceptable time formats are those recognised by the function +`timer-duration'." + :type '(string number) + :group 'APDL) + +(defcustom apdl-hide-region-before-string "![ ... hidden" + "String to mark the beginning of an invisible region. +This string is not really placed in the text, it is just shown in an +overlay" + :type '(string) + :group 'hide-region) + +(defcustom apdl-hide-region-after-string " region ... ]" + "String to mark the beginning of an invisible region. +This string is not really placed in the text, it is just shown in an overlay" + :type '(string) + :group 'hide-region) + +(defcustom apdl-hide-region-propertize-markers t + "If non-nil, add text properties (colour) to the region markers." + :type 'boolean + :group 'hide-region) + +(defcustom apdl-highlighting-level 2 + "This variable sets the level of highlighting. +There are three levels available, please see the variable +`font-lock-maximum-decoration'. Level 0 means a minimalist level +optimised for speed and working with very large files (like +solver input files from WorkBench), 1 and 2. Level 0 highlights +only the minimum (unambiguous) length of APDL command names and +variable definitions with the '=' operator. Level 1 highlights +complete command names, together with functions, elements, +deprecated elements, undocumented commands, strings from string +commands and the APDL operators. Level 2 is the same as 1, +except that all defined user variables and unambiguous command +names (also interpreter-ignored characters behind them) are +highlighted as well. The user variables are highlighted +\"statically\" only, newly defined variables are only taken into +account after `apdl-display-variables' +\(\\[apdl-display-variables]) is called, this updating is done +dynamically i. e. during editing when the variable +`apdl-dynamic-highlighting-flag' is set to t." + :type 'integer + :group 'APDL + :link '(variable-link 'font-lock-maximum-decoration)) +;; link is only linked in the customisation buffer, sadly not it's +;; documentation string! + +(defcustom apdl-dynamic-highlighting-flag t + "Non-nil means that APDL-Mode highlights user defined variables. +Warning: This option is computational expensive and --depending +on the file size and your hardware --it might make your editing +experience rather sluggish. Currently dynamic highlighting of +user variables is only implemented for files with the extensions +either \".mac\" \".inp\" or \".ans\". To take effect after +setting this variable you might have to restart `apdl-mode'." + :type 'boolean + :group 'APDL) + +(defcustom apdl-indicate-empty-lines-flag nil + "Non-nil means indicate empty lines on window systems. +Do this visually at the end of an APDL buffer in the left +fringe. You have to reload function `apdl-mode' for this +variable to take effect." + :type 'boolean + :group 'APDL) + +(defcustom apdl-comment-padding " " + "Padding string that `comment-dwim' puts between comment chars and text. +Extra spacing between the comment character(s) and the comment +text makes the comment easier to read. This padding is not +effective for code comments (comments behind code)." + :type 'string + :group 'APDL) + +(defcustom apdl-comment-add 1 + "How many additional comment characters are inserted by \\[comment-dwim]. +This determines the default value of the numeric argument of +`comment-dwim'. It should generally stay 0, except for a few +modes like Lisp where it can be convenient to set it to 1 so that +regions are commented with two semi-colons." + :type 'integer + :group 'APDL) + +;; nowadays (2021-08-16) 25 seems ugly and disconnected to the code +(defcustom apdl-code-comment-column 15 + "Column where APDL code comments (behind code) are placed." + :type 'integer + :group 'APDL) + +(defcustom apdl-auto-indent-flag t + "Non-nil means indent line when typing the SPC key. +The space character is also inserted." + :type 'boolean + ;; :options '(t nil) ; not necessary with boolean in Customise + :group 'APDL) + +(defcustom apdl-indent-comment-suffix "" + "String placed after the APDL comment char in an code comment. +See `apdl-indent-comment-string'." + :type 'string + :group 'APDL) + +(defcustom apdl-ruler-wide-flag nil + "Non-nil means show a 80 characters wide temporary ruler. +Nil means show a narrower temporary ruler with 50 characters." + :type 'boolean + :group 'APDL) + +(defcustom apdl-require-spaces-flag nil + "Non-nil means \\[insert-parentheses] inserts whitespace before (). +When there is a region marked then function `insert-parentheses' +inserts the parentheses around the active region." + :type 'boolean + :group 'APDL) + +(defcustom apdl-blink-matching-block-flag t + "Non-nil means blinking of matching APDL block keywords. +Skip temporary to the matching beginning of the block when +inserting a newline after an *ELSE or *END keyword." + :type 'boolean + :group 'APDL) + +(defcustom apdl-blink-matching-delay .7 + "Time in seconds for skipping to a matching block. +See also the variable `apdl-blink-matching-block-flag'." + :type 'number + :group 'APDL) + +(defcustom apdl-block-offset 2 + "Indentation column(s) for statements in a block structure." + :type 'integer + ;; :options only for types hook, plist and alist + :group 'APDL) + +(defcustom apdl-outline-string "@" + "String specifying outline headings (see `outline-regexp'). +Together with the Ansys comment sign '!' at a line beginning. +Per default, the outline heading looks like '!@', subheadings +'!@@' and so forth." + :type 'string + :group 'APDL) + +(defcustom apdl-mode-hook '(apdl-outline-minor-mode) + "Normal hook run before entering APDL-Mode. +A hook is a variable which holds a collection of functions." + :type 'hook + :options '(apdl-show-paren-mode apdl-outline-minor-mode + apdl-ruler-mode apdl-auto-insert-mode) + :group 'APDL) + +(require 'align) + +(defcustom apdl-align-rules-list + '( + (apdl-align-= + (regexp . "\\(\\s-*\\)=") + (modes . '(apdl-mode)) + (justify . t) + (tab-stop . nil)) + + (apdl-align-text-column + (regexp . "=\\(\\s-*[0-9]+\\|\\s-*\\)") + (modes . '(apdl-mode)) + (justify . t) + (tab-stop . nil)) + + (apdl-align-comment + (regexp . "[0-9.)]+\\(\\s-*\\)\\!") + (modes . '(apdl-mode)) + (tab-stop . nil))) + "Rules for aligning APDL variable definitions." + :type align-rules-list-type + :group 'apdl-mode) + +;; (put 'my-align-rules-list 'risky-local-variable t) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- variables --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar apdl-overlay-str "" + "Variable to store previous overlay string.") + +(defvar apdl-hide-region-overlays nil + "Variable to store the regions we put an overlay on.") + +(defvar apdl-help-overlay nil + "Overlay for displaying the Ansys parameter help.") + +(defvar apdl-timer nil + "Timer variable to set up a timer for overlay clearing. +Please have a look at the function `apdl-manage-overlay'.") + +(defvar apdl-indent-comment-string + (concat (char-to-string apdl-comment-char) apdl-indent-comment-suffix) + "String to insert when creating an APDL code comment.") + +(defvar apdl-user-variables nil + "Variable containing the user variables and line No of first occurrence. +The list is used for the display of these + variables (`apdl-display-variables').") + +(defvar apdl-user-variable-regexp nil + "Variable containing the user variables regexp. +The regexp is used for the +fontification (`apdl-highlight-variable') of these variables.") + +(defvar apdl-is-unix-system-flag nil + "Non-nil means the computer runs a Unix system. +Any of GNU-Linux, aix, berkeley-unix, hpux, irix, lynxos 3.0.1 or +usg-unix-v.") + +(defvar apdl-previous-major-mode "" + "The buffer's previous major mode (before APDL-Mode).") + +(defvar apdl-mode-abbrev-table nil + "Abbreviation definition table for the APDL-Mode. +All APDL abbrevs start with a grave accent \"`\". \"`?\" lists +the currently defined abbreviations.") + +(defvar apdl-parameter-help-position) ; for the compiler + +(defvar-local apdl-parameter-help-position 1 + "Cursor position in -show-command-parameters.") + +;;; --- constants --- + +(defconst apdl-continuation-line-regexp ".*?&\\s-*$" + "Regexp indicating a continuation line (of the *MSG command).") + +(defconst apdl-else-keywords + '("\\*[eE][lL][sS][eE][iI][fF]" "\\*[eE][lL][sS][eE]" + "\\*[cC][yY][cC][lL][eE]") + "Regexps describing APDL block else keywords.") + +(defconst apdl-end-keywords + '("\\*[eE][nN][dD][dD][oO]" "\\*[eE][nN][dD][iI][fF]" + "\\*[eE][nN][dD]") + "Regexps describing APDL end keywords.") + +(defconst apdl-number-line-regexp + "^\\s-*[(+-]?[[:digit:]]" + "Regexp describing an APDL number line. +Used for skipping pure number lines and CMBLOCK format strings") + +(defconst apdl-block-else-regexp + (concat "\\(" + (mapconcat #'identity apdl-else-keywords "\\|") + "\\)\\>") + "Regexp containing the APDL else keywords.") + +(defconst apdl-block-end-regexp + (concat "\\(" + (mapconcat #'identity apdl-end-keywords "\\|") + "\\)\\>") + "Regexp containing the APDL end keywords.") + +(defconst apdl-block-begin-or-end-regexp + (concat apdl-block-begin-regexp "\\|" apdl-block-end-regexp) + "Regexp containing APDL begin and end keywords.") + +(defconst apdl-block-else-or-end-regexp + (concat apdl-block-else-regexp "\\|" apdl-block-end-regexp) + "Regexp containing the APDL else or end keywords.") + +(defconst apdl-block-match-alist + '(("*IF" . ("THEN" "*ELSE" "*ELSEIF" "*ENDIF")) + ("*DO" . ("*ENDDO")) + ("*DOWHILE" . ("*ENDDO")) + ("*CREATE" . ("*END"))) + "Alist with APDL's matching block keywords. +It has APDL's begin keywords as keys and a list of the +corresponding else or end keywords as associated values.") + +(defconst apdl-column-ruler-wide + (propertize + (concat + "0 10 20 30 40 50 60 \ +70 80\n" + "| | | | | | | | | | | | | | \ +| | |\n") + 'font-lock-face 'bold) + "Contains the string for the wide ruler. +Ruler strings are displayed above the current line with +\\[apdl-column-ruler].") + +(defconst apdl-column-ruler-narrow + (propertize + (concat + "0 10 20 30 40 50\n" + "| | | | | | | | | | |\n") + 'font-lock-face 'bold) + "Narrow ruler string. +Ruler strings are displayed above the current line with \\[apdl-column-ruler].") + +(when (> emacs-major-version 21) ; insert-pair C-c % + ;;(add-to-list 'insert-pair-alist '(?\* ?\*)) ; why do we need **? + ;; (add-to-list 'insert-pair-alist '(?\$ ?\$)) ; why do we need $$? + (add-to-list 'insert-pair-alist '(?\% ?\%))) + +(defconst apdl-mode-map ;keybindings, keyboard shortcuts + (let ((map (make-sparse-keymap))) + (define-key map "`" 'apdl-abbrev-start) ; ``?' lists abbrevs + (define-key map "\M-?" 'apdl-show-command-parameters) + (define-key map "\C-\M-i" 'apdl-complete-symbol) + ;; --- changed standard Emacs keybindings --- + (define-key map " " 'apdl-electric-space) ; needed for abbrevs + (define-key map "\M-j" 'apdl-indent-format-line) + (define-key map "\n" 'apdl-reindent-then-newline-and-indent) + ;; end block indentation + + ;; --- especially interesting for continuation lines and condensed + ;; --- input + (define-key map "\M-a" 'apdl-command-start) + (define-key map "\M-e" 'apdl-command-end) + ;; -- adaption of mark-paragraph + (define-key map "\M-h" 'apdl-mark-paragraph) + ;; --- command movement --- (like defuns), skip comments and empty + ;; --- lines + (define-key map "\M-n" 'apdl-next-code-line) + (define-key map "\M-p" 'apdl-previous-code-line) + ;; --- block movements --- + (define-key map "\C-\M-b" 'apdl-previous-block-start-and-conditional) + (define-key map "\C-\M-d" 'apdl-down-block) + (define-key map "\C-\M-f" 'apdl-next-block-end) + (define-key map "\C-\M-h" 'apdl-mark-block) ; formerly mark defun + (define-key map "\C-\M-n" 'apdl-skip-block-forward) + (define-key map "\C-\M-p" 'apdl-skip-block-backwards) + (define-key map "\C-\M-u" 'apdl-up-block) + ;; --- further block keys --- + (define-key map "\C-c]" 'apdl-close-block) + (define-key map "\C-c}" 'apdl-number-block-end) + (define-key map "\C-c{" 'apdl-number-block-start) + ;; --- pairs + (define-key map [?\M-\"] 'insert-pair) + (define-key map "\C-c[" 'insert-pair) + (define-key map "\C-c'" 'insert-pair) + (define-key map "\C-c%" 'insert-pair) + + ;; (define-key map [?\C-c?\C-%] 'insert-pair) + ;; (define-key map [?\C-c?\C-[] 'insert-pair) + ;; (define-key map [?\C-c?\C-'] 'insert-pair) + + ;; --- miscellaneous --- + + ;; for emacs < 28 + (when (version< "28" emacs-version) + (define-key map (kbd "TAB") + `(menu-item "" outline-cycle + :filter ,(lambda (cmd) + (when (apdl-on-heading-p) cmd)))) + (when (fboundp 'outline-cycle-buffer) ; sooth compiler version < emacs-28 + (define-key map (kbd "") #'outline-cycle-buffer))) + ;; above is not set by outline-minor-mode!! Borrowed from + ;; outline.el emacs-28.1 + + (define-key map [?\C-c?\C-+] 'apdl-zoom-in) + (define-key map [?\C-c?\C--] 'apdl-zoom-out) + (define-key map [?\C-c?\C-<] 'apdl-move-left) + (define-key map [?\C-c?\C->] 'apdl-move-right) + (define-key map [?\C-c?\C-^] 'apdl-move-up) + (define-key map [?\C-c?\C-_] 'apdl-move-down) + (define-key map "\C-x4k" 'apdl-delete-other-window) + (define-key map "\C-c\C-a" 'apdl-align) + (define-key map "\C-c\C-b" 'apdl-browse-apdl-help) + (define-key map "\C-c\C-c" 'apdl-send-to-ansys) + (define-key map "\C-c\C-d" 'apdl-do) + (define-key map "\C-c\C-e" 'apdl-display-error-file) + (define-key map "\C-c\C-f" 'apdl-fit) + ;; (define-key map "\C-c\C-g" 'apdl-start-graphics) ; reserved + (define-key map "\C-c\C-h" 'apdl-mode-help) ; reserved, C-h no + ;; (define-key map "\C-c\C-i" 'apdl-iso-view) ; reserved: C-tab + ;; (define-key map "\C-c\C-i" 'apdl-if) + (define-key map "\C-c\C-j" 'apdl-send-to-apdl-and-proceed) ; same as ESS + ;; was: (define-key map "\C-c\C-j" (if (boundp 'apdl-job) 'apdl-job)) + (define-key map "\C-c\C-k" 'apdl-kill-ansys) + (define-key map "\C-c\C-l" 'apdl-license-status) + (define-key map "\C-c\C-m" 'apdl-start-ansys) ; == C-c RET!! + (define-key map "\C-c\C-n" 'apdl-no-of-processors) + (define-key map "\C-c\C-o" 'apdl-display-out-file) + (define-key map "\C-c\C-p" 'apdl-start-pzr-box) ; pan-zoom-rotate + (define-key map "\C-c\C-q" 'apdl-query-apdl-command) + (define-key map "\C-c\C-r" 'apdl-replot) + (define-key map "\C-c\C-s" 'apdl-display-skeleton) + (define-key map "\C-c\C-t" 'apdl-license) + (define-key map "\C-c\C-u" 'apdl-copy-or-send-above) + (define-key map "\C-c\C-v" 'apdl-display-variables) + (define-key map "\C-c\C-w" 'apdl-display-wb-skeleton) ; or aim: + ; runwb2--aim? + (define-key map "\C-c\C-x" 'apdl-start-classics) + (define-key map "\C-c\C-y" 'apdl-start-batch-run) + ;; (define-key map "\C-c\C-z" 'apdl-start-anslic_admin) + ;; redundant with C-c C-l + (define-key map "\C-c\C-z" 'apdl-user-license-status) + ;; (define-key map "\C-c\C-z" 'apdl-start-aim) + ;; (define-key map [f1] 'describe-mode) ; [f1] reserved for user + map) + "Keymap for the APDL-Mode.") + +;; borrowed from outline.el 2021-09 +(defun apdl-on-heading-p (&optional invisible-ok) + "Return t if point is on a (visible) heading line. +If INVISIBLE-OK is non-nil, an invisible heading line is ok too." + (save-excursion + (beginning-of-line) + (and (bolp) (or invisible-ok (not (outline-invisible-p))) + (looking-at outline-regexp)))) + +(defun apdl-toggle-mode nil ; -FIXME- this toggles also all ansys + ; minor-hooks? + "Restore the buffer's previous major mode, if possible." + (interactive) + (if (or (string= apdl-previous-major-mode "apdl-mode") + (string= apdl-previous-major-mode "")) + (error "There was no previous major mode except \"APDL-Mode\"") + ;; buffers opened with auto-mode + (funcall apdl-previous-major-mode))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; --- font locking stuff --- + +(defvar apdl-command-regexp) +(defvar apdl-command-regexp) +(defvar apdl-deprecated-element-regexp) +(defvar apdl-undocumented-command-regexp) +(defvar apdl-get-function-regexp) +(defvar apdl-command-regexp-1) +(defvar apdl-command-regexp-2a) +(defvar apdl-command-regexp-2b) +(defvar apdl-command-regexp-2c) +(defvar apdl-element-regexp) +(defvar apdl-parametric-function-regexp) +(defvar apdl-dynamic-prompt) +(defvar apdl-completions) + +(defface apdl-arg-face + '((((min-colors 88) (class color) (background light)) + :foreground "red1") + (((class color) (background light)) + :foreground "red") + (((min-colors 88) (class color) (background dark)) + :foreground "yellow1") + (((class color) (background dark)) + :foreground "yellow") + (t + :weight bold)) + "Face for highlighting local variables AR(G), _return, ..." + :group 'apdl-faces) + +(defvar apdl-arg-face 'apdl-arg-face + "Face name to use for local vars AR(G), _return, ...") + +(let (;; = variable defs + reserved _names + ;; we need something behind the = otherwise it's a cleanup + ;; variables + reserved _names (max. 32 chars long) + (variable_r + "^\\s-*\\([[:alpha:]_][[:alnum:]_]\\{0,31\\}\\)\\s-*=") + ;; reserved vars consisting of a single "_" are valid in Ansys 12.1 + (reserved_vars_r + "\\_<\\(_[[:alnum:]_]\\{0,31\\}\\>\\)")) + + ;; font-lock-keyword-face is the default face + (defconst apdl-font-lock-keywords + `( + (,variable_r 1 font-lock-variable-name-face); overwriting commands + (,(concat "\\(?:^\\|\\$\\)\\s-*\\(" + apdl-command-regexp + "\\)") 1 font-lock-keyword-face))) + + (defconst apdl-font-lock-keywords-1 + `( + ;; /eof is special: it crashes Ansys in interactive mode + ;; -TODO- /eof is highlighted only first in line not behind $ + ("\\(?:^\\|\\$\\)\\s-*\\(/[eE][oO][fF].*\\)" 1 'trailing-whitespace t) + + ;; deprecated ansys * comment with 12.1 fini * bla : returns "* no + ;; longer valid as comment character - please use !" * bla : + ;; returns a warning *bla is not a command bla = 3 * 4 : returns + ;; still 3! + ("[[:alnum:]_]+\\s-+\\(\\*.*$\\)" 1 font-lock-comment-face prepend) + ;; ^[:alnum:] to avoid spurious + ;; asterisk command fontification + ;; some string faces + ("\\(?:^\\|\\$\\)\\s-*\\(?:/TIT\\|/TITL\\|/TITLE\\)\\s-*,\\(.*\\)$" 1 + font-lock-doc-face t) ; titles + ("\\(?:^\\|\\$\\)\\s-*/[cC][oO][mM].?\\(.\\{0,75\\}\\)" + 1 font-lock-doc-face t) + ;; highlight message of comment command /COM (no comment (!) + ;; is possible behind /COM), no separating comma necessary + + (apdl-higlight-percent-and-ampersand (0 'font-lock-type-face t)) + + ;; /SYS command sends string to OP,no parameter substitution! + ("^\\s-*/[sS][yY][sS]\\s-*,\\(.\\{1,75\\}\\)$" 1 + font-lock-doc-face t) + ;; TODO: c*** should get fontification from command regexp + ("^\\s-*\\([cC]\\*\\*\\*\\)[ ,]?\\(.\\{1,75\\}\\)" + (1 font-lock-keyword-face t) (2 font-lock-doc-face t)) + ;; only 75 characters possible no separator necessary + + ("\\<\\(ARG[1-9]\\|AR[1][0-9]\\)\\>" . apdl-arg-face) + + ;; elements + (,apdl-deprecated-element-regexp . font-lock-warning-face) + (,apdl-element-regexp . font-lock-builtin-face) + + ;; reserved vars consisting of a single "_" are valid in A. 12.1 + (,reserved_vars_r 1 font-lock-warning-face) + + ("_RETURN" 0 apdl-arg-face append) + + ;; = variable defs (with reserved _names), overwriting commands + (,variable_r 1 + font-lock-variable-name-face) ; variables (max. 32 chars long) + + (,(concat "\\(?:^\\|\\$\\)\\s-*\\(" + apdl-undocumented-command-regexp + "\\)\\(\\w*\\)") . font-lock-constant-face) + + ;; get- and parametric-functions + (,(concat "\\<\\(" + apdl-get-function-regexp + "\\)(") 1 font-lock-function-name-face) + (,(concat "\\<\\(" + apdl-parametric-function-regexp + "\\)(") 1 font-lock-function-name-face) + + ;; command keywords first + (,(concat "\\(?:^\\|\\$\\)\\s-*\\(" + apdl-command-regexp-1 + "\\)\\>") 1 font-lock-keyword-face) + + ;; some operators + ("\\$" . 'font-lock-type-face) ; condensed input line + (":" . 'font-lock-type-face) ; colon loops only + + ;; deprecated *go labels (max 8 chars including the colon) only at + ;; the line beginning because they might clash with 'colon' loops + ;; GOTO Labels, branching + ("^\\s-*:\\([[:alnum:]_]\\{1,7\\}\\)" 1 font-lock-type-face))) + + ;; C-u C-x = -- describe char + ;; order of execution + + ;; syntactic overwriting nothing fontification + + ;; strings and /eof overwriting syntactic fonts and command face + ;; respectively + + ;; /eof warning: overwriting keyword face + ;; * comments (must overwrite comments behind it) + ;; strings in string commands + ;; ?pairs of %VAR% with valid variable symbols + ;; %X % with format specifier + ;; *msg formatting + ;; & only at line endings + + ;; c*** overwriting everything even %VAR%! + ;; /sys command no parameter substitution + + ;; keep previous stuff + + ;; *use variables in warning face + ;; = defs (overwriting commands) + ;; : $ operators + ;; elements + ;; commands + ;; experimental user variables + + (defconst apdl-font-lock-keywords-2 + `( + ;; /eof is special: it crashes Ansys in interactive mode + ;; -TODO- /eof is highlighted only first in line not behind $ + ("\\(?:^\\|\\$\\)\\s-*\\(/[eE][oO][fF].*\\)" 1 'trailing-whitespace t) + + ;; deprecated ansys * comment with 12.1 fini * bla : returns "* no + ;; longer valid as comment character - please use !" * bla : + ;; returns a warning *bla is not a command bla = 3 *4 : returns + ;; still 3! + ("[[:alnum:]_]+\\s-+\\(\\*.*$\\)" 1 font-lock-comment-face prepend) + ;; ^[:alnum:] to avoid spurious + ;; asterisk command fontification + ;; some string faces + ("\\(?:^\\|\\$\\)\\s-*\\(?:/TIT\\|/TITL\\|/TITLE\\)\\s-*,\\(.*\\)$" 1 + font-lock-doc-face t) ; titles + ("\\(?:^\\|\\$\\)\\s-*/[cC][oO][mM].?\\(.\\{0,75\\}\\)" 1 + font-lock-doc-face t) + ;; highlight message of comment command /COM (no comment (!) + ;; is possible behind /COM), no separating comma necessary + + ;; multi line format constructs + ("^\\s-*\\(?:\\*[mM][sS][gG]\\|\\*[vV][rR][eE]\\|\ + \\*[vV][wW][rR]\\|\\*[mM][wW][rR]\\).*\n\\(\\(?:.*&\\s-*\n\\)+.*\\)" ; format + ; constructs + (1 font-lock-doc-face t)) + + + ;; ("&\\s-*$" 0 font-lock-type-face t) ; format continuation char + ;; ("%" 0 font-lock-type-face prepend) ; single % acts as a format + ;; specifier and pair %.% is a parameter substitution + (apdl-higlight-percent-and-ampersand (0 'font-lock-type-face t)) + ;; ("%\\|&\\s-*$" (0 'font-lock-type-face t)) + + ;; /SYS command sends string to OP,no parameter substitution! + ("^\\s-*/[sS][yY][sS]\\s-*,\\(.\\{1,75\\}\\)$" 1 + font-lock-doc-face t) + ;; -TODO-: c*** should get fontification from command regexp + ("^\\s-*\\([cC]\\*\\*\\*\\)[ ,]?\\(.\\{1,75\\}\\)" + (1 font-lock-keyword-face t) (2 font-lock-doc-face t)) + ;; only 75 characters possible no separator necessary + + ;; *use variables, local macro call arguments + ;; ("\\<\\(ARG[1-9]\\|AR[1][0-9]\\)\\>" . font-lock-warning-face) + ("\\<\\(ARG[1-9]\\|AR[1][0-9]\\)\\>" . apdl-arg-face) + + ;; elements + (,apdl-deprecated-element-regexp . font-lock-warning-face) + (,apdl-element-regexp . font-lock-builtin-face) + + ;; reserved vars consisting of a single "_" are valid in A. 12.1 + (,reserved_vars_r 1 font-lock-warning-face) + + ("_RETURN" 0 apdl-arg-face append) + + ;; = variable defs (with reserved _names), overwriting commands + (,variable_r 1 + font-lock-variable-name-face) ; variables (max. 32 chars long) + + (,(concat "\\(?:^\\|\\$\\)\\s-*\\(" + apdl-undocumented-command-regexp + "\\)\\(\\w*\\)") . font-lock-constant-face) + + ;; get- and parametric-functions + (,(concat "\\<\\(" + apdl-get-function-regexp + "\\)(") 1 font-lock-function-name-face) + (,(concat "\\<\\(" + apdl-parametric-function-regexp + "\\)(") 1 font-lock-function-name-face) + + ;; command keywords first -2a no characters appended + (,(concat "\\(?:^\\|\\$\\)\\s-*\\(" + apdl-command-regexp-2a + "\\)\\>") 1 font-lock-keyword-face) + (,(concat "\\(?:^\\|\\$\\)\\s-*\\(" + apdl-command-regexp-2b + "\\)\\(\\w*\\)") (1 font-lock-keyword-face) + (2 'font-lock-constant-face)) + (,(concat "\\(?:^\\|\\$\\)\\s-*\\(" + apdl-command-regexp-2c + "\\)\\(\\w*\\)") (1 font-lock-keyword-face) + (2 'font-lock-constant-face)) + + ;; user variables + (apdl-highlight-variable . font-lock-variable-name-face) + + ;; some operators + ("\\$" . 'font-lock-type-face) ; condensed input line + (":" . 'font-lock-type-face) ; colon loops only + + ;; deprecated *go labels (max 8 chars including the colon) only at + ;; the line beginning because they might clash with 'colon' loops + ;; GOTO Labels, branching + ("^\\s-*:\\([[:alnum:]_]\\{1,7\\}\\)" 1 font-lock-type-face))) + + ;; testing + (defconst apdl-font-lock-keywords-3 + '( + ("%" (0 font-lock-builtin-face keep)) + ("^/com.*" (0 font-lock-string-face prepend)) + ("bla" (0 font-lock-variable-name-face prepend))))) + +(defconst apdl-font-lock-keyword-list + '( + apdl-font-lock-keywords + apdl-font-lock-keywords-1 + apdl-font-lock-keywords-2 + ;; testing + ; apdl-font-lock-keywords-3 + )) + +(defconst apdl-mode-syntax-table ; FIXME check APDL operators and + ;; allowed variable characters + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\r " " table) + (modify-syntax-entry ?\t " " table) + (modify-syntax-entry ?\$ "." table) + (modify-syntax-entry ?+ "." table) + (modify-syntax-entry ?- "." table) + (modify-syntax-entry ?= "." table) + (modify-syntax-entry ?> "." table) + (modify-syntax-entry ?< "." table) + (modify-syntax-entry ?. "." table) + (modify-syntax-entry ?\% "." table) + (modify-syntax-entry ?| "." table) + (modify-syntax-entry ?\' "." table) + (modify-syntax-entry ?\` "w" table) ; apdl-mode abbreviation specifier, + ;; not an operator but "word". + (modify-syntax-entry ?_ "_" table) ; in APDL symbol component + (modify-syntax-entry ?: "_" table) ; APDL label specifier, not an operator + ;; * and ** are operators! But we also want completion of * and / commands + ;; took care about this in -complete-symbol + (modify-syntax-entry ?* "." table) + ;; with algebraic operators but blink-matching- needs this + (modify-syntax-entry ?/ "." table) ; APDL slash commands + (modify-syntax-entry ?\! "<" table) ; APDL comment character + (modify-syntax-entry ?\n ">" table) + (modify-syntax-entry ?\" "w" table) ; `"' is *not* a string + ; delimiter for APDL + (modify-syntax-entry ?' "\"" table); (modify-syntax-entry ?' "." table) + ;; Normally APDL string delimiter, but might clash + ;; with usages of genitives etc.! + (modify-syntax-entry ?~ "_" table) ; APDL connection commands, + ; not an operator + table) + "Syntax table in use in `apdl-mode' buffers.") + +(defconst apdl-mode-menu + (list + "APDL" + ["Show the Short Command Help" apdl-show-command-parameters + :help "Display a short help for the APDL command near the +cursor with its parameters (apdl-show-command-parameters)"] + ["Browse the APDL Keyword Help" apdl-browse-apdl-help + :help "Open the original APDL documentation for a command or +element name near the cursor (apdl-browse-apdl-help)" + :active (or apdl-current-ansys-version apdl-ansys-help-path)] + ["Interactively Browse Keywords" (apdl-browse-apdl-help t) + :help "Complete a command, element name or other subjects and +browse its original APDL documentation + (apdl-browse-apdl-help)." + :active (or apdl-current-ansys-version apdl-ansys-help-path)] + ["Browse the Ansys APDL Guide" apdl-browse-ansys-apdl-manual + :help "Read the original Ansys Parametric Design Language +Guide in a browser (apdl-browse-ansys-apdl-manual)" + ;; :active (file-readable-p apdl-ansys-help-path) ; now also online :-) + ] + ["Browse Ansys Main Help Page" apdl-start-ansys-help-page + :help "Start the Ansys main help site +(apdl-start-ansys-help-page)."] + ["Browse Ansys Customer Portal" apdl-start-ansys-customer-portal-site + :help "Start the Ansys Customer Portal site +(apdl-start-ansys-customer-portal-site)."] + "--" + ["Preview Macro Template" apdl-display-skeleton + :help "Preview an APDL code template in another window"] + (list + "Insert Macro Template" + ["*IF ... *ENDIF" apdl-if + :help "Insert interactively an *if .. *endif construct"] + ["*DO ... *ENDDO" apdl-do + :help "Insert interactively a *do .. *enddo loop"] + ["*IF ... *ELSEIF" apdl-if-then + :help "Insert interactively an *if,then .. \ +(*elseif .. *else ..) *endif construct."] + ["MP" apdl-mp + :help "Insert interactively an mp statement."] + ["Header" apdl-skeleton-header + :help "Insert interactively the file header template"] + ["Insert Pi" apdl-insert-pi + :help "Insert the variable definition \"Pi = acos(-1) ! +3.1415...\" at point and indent this line."] + "--" + ["Mark Paragraph" apdl-mark-paragraph + :help "Mark a paragraph, make a region out of it."] + ["Comment/Un- Region" comment-dwim + :help "Comment out region or uncomment region, without a +marked region start or realign a code comment in the current +line."] + ["Complete APDL Keyword" apdl-complete-symbol + :help "Complete an APDL command, element or function name"] + ["Send/Copy Region or Paragraph" apdl-send-to-ansys + :label (if + (or apdl-classics-flag (apdl-process-running-p)) + "Send region or paragraph to Ansys" + "Copy region or paragraph to clipboard") + :help "In case of a running solver/interpreter send marked +region or - by default - the current paragraph to the +interpreter, otherwise copy these lines to the system clipboard"] + ["Copy/Send above Code to Ansys" apdl-copy-or-send-above + :label (if + (or apdl-classics-flag (apdl-process-running-p)) + "Send above Code to Ansys" + "Copy above Code") + :help "Either copy the code up to the beginning of file or, +when a run is active, send it to the solver/interpreter"] + ["Close Logical Block" apdl-close-block + :help "Close an open control block with the corresponding end + command"] +;; ["Insert Parentheses" insert-parentheses +;; :help "Insert a pair of parentheses enclosing marked region +;; (insert-parentheses)"] ; -FIXME- redundant, necessary for Emacs-23.1 + ["Align region or paragraph" apdl-align + :help "Align APDL variable definitions in a marked region or +the current paragraph (apdl-align)"] + ["Display Variable Definitions" apdl-display-variables + :help "Display all user variable definitions from the current +file in another window (apdl-display-variables)"] + "--" + ["Configuration" apdl-skeleton-configuration + :help "Configuration code template"] + ["Get- and Fortran functions" apdl-skeleton-get-and-fortran-function + :help "Get- and Fortran functions template"] + ["View Settings" apdl-skeleton-view-settings + :help "View settings like focus point, magnification, ..."] + ["Coordinate Sys. Display" apdl-skeleton-coordinates + :help "Template for creating and handling coordinate + systems"] + ["Working Plane Operations" + apdl-skeleton-working-plane + :help "Template for creating and handling the working + plane"] + ["Multi plot Commands" apdl-skeleton-multi-plot + :help "Graphic commands which show multiple entities + simultaneously"] + ["Numbering Controls" + apdl-skeleton-numbering-controls + :help "Commands for numbering and colouring model entities"] + ["Symbol Controls" apdl-skeleton-symbols + :help "Graphic commands which show boundary conditions, +surface loads and other symbols"] + ["Geometry/Data Import/Export" + apdl-skeleton-import-export + :help "Commands for importing and exporting data and models (e.g. IGES)"] + ["Control flow constructs" apdl-skeleton-looping + :help "Commands for controlling loops (*do) and the program + flow (*if)"] + ["Symmetry Expansions" apdl-skeleton-symmetry-expansion + :help "Commands for expanding the view of symmetric models +to their full view"] + ["Element Definitions" apdl-skeleton-element-definition + :help "2D, 3D, Element definitions and their keyoptions"] + ["Material Definitions" apdl-skeleton-material-definition + :help "Various material definitions: Steel, alu, rubber, ..."] + ["Modelling" apdl-skeleton-geometry + :help "Operations for geometric modelling"] + ["Meshing Controls" apdl-skeleton-meshing + :help "Meshing control commands: Shapes, sizes, ..."] + ["Contact Pair Definition" apdl-skeleton-contact-definition + :help "Full definition of flexible-flexible contact pairs"] + ["Rigid Contact" apdl-skeleton-contact-rigid + :help "Definition of the rigid target contact side"] + ["Contact Template" apdl-skeleton-contact-template + :help "Minimal working contact example"] + ["Boundary Conditions" apdl-skeleton-bc + :help "Commands for establishing boundary conditions"] + ["Buckling Analysis Type" apdl-skeleton-buckling + :help "Commands for establishing a buckling analysis"] + ["Listings, Information, Statistics"apdl-skeleton-information + :help "Parameter listings, graphic options, system +information, run statistics"] + ["Solving" apdl-skeleton-solve + :help "Ansys solver (/solu) commands and solver options"] + ["Post1 Postprocessing" apdl-skeleton-post1 + :help "General postprocessor (/post1) commands"] + ["Array Operations" apdl-skeleton-array + :help "Dimensioning, looping, changing array parameters"] + ["Path plot operations" apdl-skeleton-path-plot + :help "Commands for establishing paths and plotting entities + on paths"] + ["Output to file" apdl-skeleton-output-to-file + :help "Commands for writing data to a file"] + ["Element Table Operations" apdl-skeleton-element-table + :help "Commands for establishing and manipulation element + tables"] + ["Post26 Postprocessing" apdl-skeleton-post26 + :help "Time history (/post26) postprocessing commands"] + ["Components" apdl-skeleton-component + :help "Components (Named selections in WorkBench) template"] + ["Selections" apdl-skeleton-select + :help "How to select stuff template"] + "--" + ["Outline template" apdl-skeleton-outline-template + :help "Empty skeleton of the structure of an APDL simulation, +outlining headers and sections"] + ["Beam template" apdl-skeleton-beam-template + :help "Insert a minimal template for a beam simulation"] + ["Structural template" apdl-skeleton-structural + :help "Insert a minimal template for a structural simulation"] + ["2D structural template" apdl-skeleton-2d-structural + :help "Insert a minimal template for a 2D structural simulation"] + ["Contact template" apdl-skeleton-contact + :help "Insert a minimal template for a structural contact + simulation"] + ["Compilation of templates" apdl-skeleton + :help "Insert a compilation of selected templates"]) + ["Preview WorkBench Template" apdl-display-wb-skeleton + :help "Preview an WorkBench Command (APDL) template in + another window"] + (list + "Insert WorkBench Template" + ["*IF ... *ENDIF" apdl-if + :help "Insert interactively an *if .. *endif construct"] + ["*DO ... *ENDDO" apdl-do + :help "Insert interactively a *do .. *enddo loop"] + ["*IF ... *ELSEIF" apdl-if-then + :help "Insert interactively an *if,then .. (*elseif .. *else +..) *endif construct."] + ["Do loop" apdl-wbt-do + :help "Insert a do loop."] + ["Header" apdl-wbt-if + :help "Insert an if loop."] + ["Insert Pi" apdl-insert-pi + :help "Insert the variable definition \"Pi = acos(-1) ! +3.1415...\" at point and indent this line."] + "--" + ["Post: Press-fit calclationss" apdl-wbt-post-2d-press-fit_calcs + :help "Post: Calculate the maximum torque and other +parameters from a plane stress press-fit simulation."] + ["Post: /post26 harmonic results" apdl-wbt-harmonic-acceleration-result + :help "Post: /post26 harmonic acceleration results. +Visualisation and file output of frequency and vector sum +amplitude."] + ["Post: /post26 general results" apdl-wbt-post26-output + :help "Post: /post26 output template"] + ) + "--" + (list + "Navigate Code Lines" + ["Previous Code Line" apdl-previous-code-line + :help "Goto previous apdl code line"] + ["Next Code Line" apdl-next-code-line + :help "Goto next code line"] + ["Beginning of (Continuation) Command" apdl-command-start + :help "Go to the beginning of the current command"] + ["End of (Continuation) Command" apdl-command-end + :help "Go to the end of the current command"] + "--" + ["Split Format Line at Point" apdl-indent-format-line + :help "Split current line, if in a comment continue the +comment, if in an APDL format line insert the continuation +character before splitting the line"]) + (list + "Work with Logical Blocks" + ["Next Block End" apdl-next-block-end + :help "Go to the end of the current or next control block +(*do, *if, ...)"] + ["Previous Block Start" apdl-previous-block-start-and-conditional + :help "Go to the beginning of the current or next control + block (*do, *if, ...)"] + ["Down Block" apdl-down-block + :help "Move down one control block level"] + ["Up Block" apdl-up-block + :help "Move up one control block level"] + ["Skip Block Forward" apdl-skip-block-forward + :help "Skip to the end of the next control block"] + ["Skip Block Backwards" apdl-skip-block-backwards + :help "Skip to the beginning of previous control block"] + ["Hide Number Blocks" apdl-hide-number-blocks + :help "Hide all APDL number blocks (EBLOCK, NBLOCK, + CMBLOCK)"] + ["Unhide Number Blocks" apdl-unhide-number-blocks + :help "Unhide all APDL number blocks (EBLOCK, NBLOCK, + CMBLOCK)"] + ["Beginning of N. Block" apdl-number-block-start + :help "Go to the beginning of an APDL number blocks +(EBLOCK, NBLOCK, CMBLOCK)"] + ["End of Number Block" apdl-number-block-end + :help "Go to the end of an APDL number blocks (EBLOCK, + NBLOCK, CMBLOCK)"] + "--" + ["Close Block" apdl-close-block + :help "Close the current APDL control block with the +respective closing command"] + ["Mark Block" apdl-mark-block + :help "Mark the current control block"] + ["Hide Region" apdl-hide-region + :help "Hide a marked region and display a hidden region + message"] + ["Unhide Regions" apdl-unhide-number-blocks + :help "Unhide all hidden regions"] + ["Insert Temporary Ruler" apdl-column-ruler + :help "Show a temporary ruler above the current line"]) + "--" + ["Mark Paragraph" apdl-mark-paragraph + :help "Mark a paragraph, make a region out of it."] + ["Comment/Un- Region" comment-dwim + :help "Comment out region or uncomment region, without a +marked region start or realign a code comment in the current +line."] + ["Complete APDL Keyword" apdl-complete-symbol + :help "Complete an APDL command, element or function name"] + ["Send/Copy Region or Paragraph" apdl-send-to-ansys + :label (if + (or apdl-classics-flag (apdl-process-running-p)) + "Send region or paragraph to Ansys" + "Copy region or paragraph to clipboard") + :help "In case of a running solver/interpreter send marked +region or - by default - the current paragraph to the +interpreter, otherwise copy these lines to the system clipboard"] + ["Copy/Send above Code to Ansys" apdl-copy-or-send-above + :label (if + (or apdl-classics-flag (apdl-process-running-p)) + "Send above Code to Ansys" + "Copy above Code") + :help "Either copy the code up to the beginning of file or, +when a run is active, send it to the solver/interpreter"] + ["Close Logical Block" apdl-close-block + :help "Close an open control block with the corresponding end + command"] +;; ["Insert Parentheses" insert-parentheses +;; :help "Insert a pair of parentheses enclosing marked region +;; (insert-parentheses)"] ; -FIXME- redundant, necessary for Emacs-23.1 + ["Align region or paragraph" apdl-align + :help "Align APDL variable definitions in a marked region or +the current paragraph (apdl-align)"] + ["Display Variable Definitions" apdl-display-variables + :help "Display all user variable definitions from the current +file in another window (apdl-display-variables)"] + "--" + (list + "Helper Modes" + ["Ruler Mode" ruler-mode + :style toggle :selected ruler-mode + :help "Toggle display of ruler in header line (Ruler mode)."] + ["Outline Minor Mode" outline-minor-mode + :style toggle :selected outline-minor-mode + :help "Outline Mode is for hiding and selectively displaying +headlines and their sub level contents"] + ["Show Paren Mode" show-paren-mode :style toggle + :selected show-paren-mode + :help "Show Paren Mode highlights matching parenthesis"] + ["Delete Selection Mode" delete-selection-mode + :style toggle :selected delete-selection-mode + :help + "Delete Selection Mode replaces the selection with typed + text"] + ["Electric Pair Mode" electric-pair-mode + :style toggle :selected electric-pair-mode + :help + "Electric Pair Mode insert corresponding closing delimiters" + :visible (version< "24" emacs-version)]) + "--" + ["APDL-Mode Documentation" apdl-mode-help + :help "Display the APDL-Mode Documentation in Emacs' Info Viewer."] + ["Help on APDL-Mode" describe-mode + :help "Open an Emacs window describing APDL-Mode's keybindings / shortcuts"] + ["Customise APDL-Mode" (customize-group "APDL") + :help "Open a special customisation window for changing the +values and inspecting the documentation of its customisation +variables"] + ["List Mode Abbreviations" (list-abbrevs t) + :help + "Display a list of all abbreviation definitions for logical + blocks"] + ["Submit Bug Report" apdl-submit-bug-report + :help "Open a mail template for an APDL-Mode bug report"] + ["Reload APDL-Mode" apdl-reload-apdl-mode + :help "Unloading and reloading the mode definitions for +testing purposes and restarting +apdl-mode (apdl-reload-apdl-mode), this is only active if +'apdl-mode.el' is found in Emacs' load-path!" + :active (file-exists-p "apdl-mode.el")] + "--" + ["Exit APDL-Mode" apdl-toggle-mode + :help "Switch to the previous major mode of the file" + :label (concat "Exit APDL-Mode Version: " apdl-mode-version)]) + "APDL menu items for APDL-Mode.") + +;; +;; -------------------------- MAPDL Menu-------------------------- +;; + +(defconst apdl-task-menu + (list + "MAPDL" + ["Specify License Server or - File" apdl-license-file + :label (if apdl-license-file + "Change License Server or - File" + "Specify License Server or - File [not set]") + ;; :visible apdl-is-unix-system-flag + :help "Change the license server specification (for an +solver/interpreter run or the license status), either naming the +license server machine (with port) or the actual license file"] +;; We do not need this anywhere, any longer 2021-09! +;; ["Specify the License Interconnect Servers" apdl-ansysli-servers +;; :label (if apdl-ansysli-servers +;; "Change License Interconnect Servers" +;; "Specify License Interconnect Servers [not set]") +;; :visible apdl-is-unix-system-flag +;; :help "Change the interconnect server specification (for an +;; solver/ interpreter run)"] + ["Installation Directory" apdl-ansys-install-directory + :label (if apdl-ansys-install-directory + (concat "Change the Installation Directory [" + apdl-current-ansys-version "]") + "Set the Ansys Installation Directory!") + :help "For certain functionality you need to set the +installation directory of Ansys, the path up to the version +number vXXX (apdl-ansys-install-directory)"] + ;; -lmutil-program or -ansys-program + ["Change MAPDL License Type" apdl-license + :label (concat "Change License Type [" apdl-license "]") + :help "Specify the license type for an solver/interpreter run +(apdl-license)" + :active (or (and apdl-lmutil-program + (file-executable-p apdl-lmutil-program) + apdl-license-file) + (and apdl-ansys-program + (file-executable-p apdl-ansys-program) + apdl-license-file)) + ] + ["Change Job Name of Run" apdl-job + :label (concat "Change Job Name [" apdl-job "]") + ;; :visible apdl-is-unix-system-flag + :help "Specify the job name for an solver/interpreter + run (apdl-job)" + :active (and apdl-ansys-program + (file-executable-p apdl-ansys-program) + apdl-license-file) + ] + ["Change the No of Processors" apdl-no-of-processors + :label (format "Change the Number of Processors [%d]" + apdl-no-of-processors) + ;; :visible apdl-is-unix-system-flag + :help "Specify the number of processors to use for the Ansys +run definition (apdl-no-of-processors)" + :active (and apdl-ansys-program + (file-executable-p apdl-ansys-program) + apdl-license-file)] + "--" + ["Start the Ansys Help Viewer" apdl-start-ansys-help + :help "Start the Ansys Help Viewer +(apdl-start-ansys-help). If there is no local help installed or +you configured online help you will be directed to the main +online help page." + ;; we can start the help viewer without -license-file, v211 + ;; 2021-09 + :active (file-executable-p apdl-ansys-help-program)] + ["License Server Status" apdl-license-status + :help "Show the license server status, the number of licenses +available and used (apdl-license-status)" + :active (and apdl-lmutil-program + (file-executable-p apdl-lmutil-program) + apdl-license-file)] + ["License User Status" apdl-user-license-status + :help "Show the license user status, the licenses +used (apdl-user-license-status)" + :active (and apdl-lmutil-program + (file-executable-p apdl-lmutil-program) + apdl-license-file + apdl-username)] + ["Start Ansys WorkBench" apdl-start-wb + :active (and apdl-ansys-wb + (file-executable-p apdl-ansys-wb)) + :help "Start Ansys WorkBench (apdl-start-wb)"] + ["Ansys MAPDL Product Launcher" apdl-start-launcher + :active (and apdl-ansys-launcher + (file-executable-p apdl-ansys-launcher)) + :help "Start the Ansys Mechanical APDL Product Launcher +(apdl-start-launcher)"] + ["Ansys MAPDL Batch Run" apdl-start-batch-run + :active (and apdl-ansys-program + (file-executable-p apdl-ansys-program) + apdl-license-file) + :help "Start an Ansys Mechanical APDL batch run +(apdl-start-batch-run)"] + ["Ansys MAPDL Classics GUI" apdl-start-classics + :active (and apdl-ansys-program + (file-executable-p apdl-ansys-program) + apdl-license-file) + ;; :visible apdl-is-unix-system-flag + :help "Start the Ansys Classics MAPDL + GUI (apdl-start-classics)"] + ["Start Interactive Solver/Interpreter" apdl-start-ansys + :help "Start an interactive MAPDL solver/interpreter run + under Linux (apdl-start-ansys)" + :active (and apdl-is-unix-system-flag + (file-executable-p apdl-ansys-program) + apdl-license-file + (not (apdl-process-running-p)))] + "--" +;; ;; not supported any longer 2020-03 +;; ["Connect to Classics" apdl-toggle-classics +;; :label (if apdl-classics-flag +;; "Switch off sending to Classics MAPDL" +;; "Switch on sending to Classics MAPDL") +;; :active (and apdl-is-unix-system-flag (not (apdl-process-running-p))) +;; :help "Check whether an Ansys Classic is running and toggle sending output +;; to it (apdl-toggle-classics)"] + ["Send/Copy Region or Paragraph" apdl-send-to-ansys + :label (if + (or apdl-classics-flag (apdl-process-running-p)) + "Send region or paragraph to MAPDL" + "Copy region or paragraph to clipboard") + :help "In case of a running solver/interpreter send the +marked region or by default the current paragraph to the +interpreter, otherwise copy these lines to the system +clipboard (apdl-send-to-ansys)"] + ["Send/Copy Line or Region" apdl-send-to-apdl-and-proceed + :label (if (or apdl-classics-flag (apdl-process-running-p)) + "Send line or region to MAPDL" + "Copy line or region to clipboard") + :help "In case of a running solver/interpreter send the +marked region or by default the current line to the interpreter, +otherwise copy these lines to the system +clipboard (apdl-send-to-apdl-and-proceed)"] + ["Copy/Send above Code to Ansys" apdl-copy-or-send-above + :label (if (or apdl-classics-flag (apdl-process-running-p)) + "Send above Code to MAPDL" + "Copy above Code to clipboard") + :help "Either copy the code up to the beginning of file or, +when a run is active, send it to the +solver/interpreter (apdl-copy-or-send-above)"] + (list + "Send Graphics Command" + :active (apdl-process-running-p) + ["Start Graphics Screen" apdl-start-graphics + :help "Open the graphics screen for the interactive MAPDL + mode (apdl-start-graphics)" + :active (apdl-process-running-p)] + ["Start Pan/Zoom/Rot. Dialog" apdl-start-pzr-box + :help "Open the Pan/Zoom/Rotate dialog of the Ansys GUI +(apdl-start-pzr-box)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Replot" apdl-replot + :help "Replot the Ansys graphics window (apdl-replot)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Fit Graphics into screen" apdl-fit + :help "Fit the Ansys graphics into the window (apdl-fit)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Show Graphics in iso-view" apdl-iso-view + :help "Show the current Ansys graphic windows in isometric + view (apdl-iso-view)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Zoom In" apdl-zoom-in + :help "Zoom into the graphics (apdl-zoom-in)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Zoom Out" apdl-zoom-out + :help "Zoom out of the graphics (apdl-zoom-out)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Move Up" apdl-move-up + :help "Move graphics objects up (apdl-move-up)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Move Down" apdl-move-down + :help "Move graphics objects down (apdl-move-down)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Move Right" apdl-move-right + :help "Move graphics objects to the right (apdl-move-right)" + :active (or apdl-classics-flag (apdl-process-running-p))] + ["Move Left" apdl-move-left + :help "Move graphics objects to the left (apdl-move-left)" + :active (or apdl-classics-flag (apdl-process-running-p))]) + ["Send MAPDL Command Interactively" apdl-query-apdl-command + :help "Send interactively an APDL command to a running MAPDL +solver interpreter process (apdl-query-apdl-command)" + :active (or apdl-classics-flag (apdl-process-running-p))] + "--" + ["Display MAPDL Run Status" apdl-process-status + :help "Display the status of the Ansys MAPDL + solver/interpreter run (apdl-process-status)" + :active (apdl-process-running-p)] + ["Display MAPDL Batch Status" apdl-batch-process-status + :help "Display the status of the Ansys MAPDL + solver/interpreter batch run (apdl-batch-process-status)" + :active (process-status apdl-batch-process) + ] + ["Exit MAPDL Run" apdl-exit-ansys + :help "Exit the active MAPDL solver/interpreter + run (apdl-exit-ansys)" + :visible (apdl-process-running-p)] + ["Display MAPDL Out File" apdl-display-out-file + :help "Display in another window in auto-revert-tail-mode the +MAPDL out file (*.out) in the current working +directory (apdl-display-out-file)" + :active (file-readable-p (car (apdl-file-list "\\.out$")))] + ["Display MAPDL Error File" apdl-display-error-file + :help "Display in another window in auto-revert-tail-mode the +MAPDL error file (*.err) in the current working +directory (apdl-display-error-file)" + :active (file-readable-p (car (apdl-file-list "\\.err$")))] + ["Write MAPDL Stop File" apdl-abort-file + ;; we can deactivate the locking mechanism with the env variable + ;;ANSYS_LOCK=OFF :active (file-readable-p (concat + ;;default-directory apdl-job ".lock")) + :help "Write a file: JOB.abt containing the word +\"nonlinear\" for orderly stopping the solver in the current +working directory (apdl-abort-file)"] + "--" + ["Kill MAPDL Run" apdl-kill-ansys + :help "Kill the current MAPDL run (apdl-kill-ansys)" + :active (apdl-process-running-p)] + ["List all Emacs' Processes" list-processes + :help "Show all active processes under Emacs, like shells, + etc. (list-processes)"] + ["View Emacs' Messages" view-echo-area-messages + :help "Display Emacs' latest messages for debugging and + checking purposes"]) + "Ansys menu items for APDL-Mode.") + +;;; --- predicates --- + +(defun apdl-in-asterisk-comment-p () + "Return t if the cursor is inside an APDL asterisk comment." + (save-excursion + (let ((lbp (line-beginning-position))) + (if (search-backward " *" lbp t) + t + nil)))) + +(defun apdl-in-string-command-line-p () + "Return t if in an APDL string command line." + (save-excursion + (back-to-indentation) + (looking-at apdl-string-commands-regexp))) + +(defun apdl-number-line-p () + "Return t if in an APDL number block." + (save-excursion + (beginning-of-line) + (and (not (apdl-in-format-construct-p)) + (looking-at apdl-number-line-regexp)))) ; "(" is for CMBLOCK + ; format string + +(defun apdl-default-command-p () + "Return t if in an APDL default command line. +The current code is reusing the previous APDL command with a line +beginning with a comma." + (save-excursion + (beginning-of-line) + (looking-at "^\\s-*,"))) + +(defun apdl-in-indentation-p () + "Return t if in an indentation." + (if (and (eolp) (bolp)) ; take care of empty lines + nil + (let ((p (point))) + (save-excursion + (back-to-indentation) + (if (<= p (point)) t nil))))) + +(defun apdl-first-line-p () + "Return t if at the first line." + (save-excursion + (beginning-of-line) + (bobp))) + +(defun apdl-last-line-p () + "Return t if at the last line." + (save-excursion + (end-of-line) + (eobp))) + +(defun apdl-continuation-line-p () + "Return t if in a continuation line of certain commands." + (save-excursion + (beginning-of-line) + (if (looking-at apdl-continuation-line-regexp) t nil))) + +(defun apdl-in-format-command-line-p () + "Return t if in an APDL format command line, nil otherwise. +See the constant variable `apdl-format-commands-regexp' which +includes the commands which need formatting lines." + (save-excursion + (beginning-of-line) + (if (looking-at + (concat "^\\s-*\\(" apdl-format-commands-regexp + "\\)")) t nil))) + +(defun apdl-in-format-construct-p () + "Return t if in an APDL format construct. +Otherwise nil, i.e. return nil when in a format command line." + (cond ((apdl-continuation-line-p) t) + ((apdl-first-line-p) nil) + (t (save-excursion + (forward-line -1) + (if (or + (apdl-continuation-line-p) + (apdl-in-format-command-line-p)) t nil))))) + +(defun apdl-condensed-input-line-p () + "Return t if in an APDL condensed (... $ ...) input line." + (save-excursion + (beginning-of-line) + (if (apdl-in-format-construct-p) + nil + (if (looking-at apdl-condensed-input-line-regexp) + t + nil)))) + +(defun apdl-code-line-p () + "Return t if in an APDL code line, nil otherwise. +A code line is the complementary to the regexp +`apdl-non-code-line-regexp'." + (save-excursion + (beginning-of-line) + (if (looking-at apdl-non-code-line-regexp) nil t))) + +(defun apdl-not-in-code-line-p () + "Return t if not in an APDL code line, nil otherwise. +A code line is the complementary to the regexp +`apdl-non-code-line-regexp'." + (save-excursion + (beginning-of-line) + (looking-at apdl-non-code-line-regexp))) + +(defun apdl-at-end-of-text-p () + "Return t if the cursor is at the end of text in a line." + (if (looking-at "\\s-*$") t nil)) + +(defun apdl-at-end-of-code-p () + "Return t if the cursor is at the end of code in a line. +This means at the end of code before whitespace or an APDL +comment." + (if (looking-at "\\s-*$\\|\\s-*!") t nil)) + +(defun apdl-is-unix-system-p () + "Return t when we are on a Unix system. +gnu/linux, aix, berkeley-unix, hpux, irix, lynxos 3.0.1, +usg-unix-v. Ansys supports only GNU-Linux 64 and Windows 64 for +the entire Ansys platform with some support of legacy Unixes (AIX +IBM, HP-UX HP, SGI, Solaris SUN) for standalone apps will be +provided so I won't restrict some aspects of APDL-Mode to +GNU-Linux." + (not + (or (string= system-type "gnu") ; gnu with the hurd kernel + (string= system-type "darwin") ; mac + (string= system-type "ms-dos") + (string= system-type "windows-nt") + (string= system-type "cygwin")))) + +;; FIXME DEFSUBSTs with DEFUNs (apdl-position) inside aren't +;; particularly speedy, are they? + +(defsubst apdl-in-comment-p () + "Return t if the cursor is inside an APDL comment. +The cursor is either in a code comment or comment line." + (save-excursion + (nth 4 (parse-partial-sexp (apdl-position 'bol) + (point))))) ; nth -- nth element of list + +(defsubst apdl-in-comment-line-p () + "Return t if the cursor is in a comment line." + (save-excursion + (back-to-indentation) + (looking-at "!"))) + +(defsubst apdl-in-string-p () ; FIXME:are there strings defined in ansys? + "Return t if the cursor is inside an APDL string." + (save-excursion + (nth 3 (parse-partial-sexp (apdl-position 'bol) (point))))) + +(defsubst apdl-in-empty-line-p() + "Return t if the cursor is in an empty (whitespace) line." + (save-excursion + (beginning-of-line) + (looking-at "^[ \n\t]*$"))) + +(defsubst apdl-not-in-string-or-comment-p() + "Return t if the cursor is not inside a string or comment." + (let ((pps (parse-partial-sexp (apdl-position 'bol) (point)))) + (not (or (nth 3 pps) (nth 4 pps))))) + +(defsubst apdl-in-string-or-comment-p () + "Return t if the cursor is not inside a string or comment." + (let ((pps (parse-partial-sexp (apdl-position 'bol) (point)))) + (or (nth 3 pps) (nth 4 pps)))) + +;; ====================================================================== +;; --- interactive functions --- + +(defun apdl-mode-help () + "Browse the APDL-Mode documentation in the Info Viewer." + (interactive) + (info "(apdl-mode)Top")) + +(defun apdl-mode-browse-online () + "Browse the APDL-Mode online documentations." + (interactive) + (let ((url "https://dieter-wilhelm.github.io/apdl-mode")) + (cond + (apdl-is-unix-system-flag + ;; use browse-url-default-browser! + (if (fboundp 'browse-url-xdg-open) + (browse-url-xdg-open url) + ;; (browse-url-default-browser + ;; (concat path file)) not working with E23.1 on RHEL + (browse-url-firefox url))) + ;; windows + (t + ;; wrapper of ShellExecute MS-Windows API + ;; (message "file:%s path:%s" file path) + ;; (w32-shell-execute "Open" (concat path file))) + (browse-url-default-windows-browser url))))) + +(defun apdl-align (p-min p-max) + "Align current paragraph or selection of APDL variable definitions. +If a region is selected align it (with the region borders P-MIN +and P-MAX) otherwise align the current code paragraph." + (interactive "r") + (if mark-active + (align p-min p-max) + (align-current))) ; align-current needs a mark + + +(defun apdl-add-variable-hooks () + "Add APDL-Mode variable hooks." + (add-hook 'after-change-functions + #'apdl-find-user-variables nil t) + (add-hook 'post-command-hook + #'apdl-update-parameter-help nil t)) + +;; the autoload cookie is copying stuff to the -autoloads.el file +;; check with (update-file-autoloads) + +;;;###autoload (add-to-list 'auto-mode-alist '("\\.mac\\'" . apdl-mode)) +;;;###autoload (add-to-list 'auto-mode-alist '("\\.ans\\'" . apdl-mode)) +;;;###autoload (add-to-list 'auto-mode-alist '("\\.dat\\'" . apdl-mode)) +;;;###autoload (add-to-list 'auto-mode-alist '("\\.inp\\'" . apdl-mode)) + +;;;###autoload +(defun apdl-mode () + "Editor support for the APDL language and working with Ansys MAPDL. + +APDL-Mode (formerly Ansys-Mode) - in conjunction with the +GNU-Emacs editor - is an advanced APDL environment with features +like, pin-pointing the APDL reference documentation, keyword +completion, code templates, dedicated highlighting, solver +communication (GNU-Linux only), license reporting, etc. Over the +years it has accumulated lots of features for writing WorkBench / +Discovery AIM Command (APDL) objects and debugging complete FEA +models in APDL code. + +The extensive documentation can be accessed from the APDL-Mode +menu or by calling the function `apdl-mode-help' with +\\[apdl-mode-help]. + +\\{apdl-mode-map}" + (interactive) + + (unless (string= major-mode "apdl-mode") + (set (make-local-variable 'apdl-previous-major-mode) major-mode)) + (put 'apdl-previous-major-mode 'permanent-local t) + + (when (and (overlayp apdl-help-overlay) + (overlay-buffer apdl-help-overlay)) + (delete-overlay apdl-help-overlay)) + + (kill-all-local-variables) ; convention + (setq major-mode 'apdl-mode) + (setq mode-name "APDL") ; mode line string + + ;; only effective for window systems! + (setq indicate-empty-lines apdl-indicate-empty-lines-flag) + + (setq completion-ignore-case t) ; keyword completion regardless of cases + + ;; --- hooks --- + (run-hooks 'apdl-mode-hook) + ;; we needs this before the -mode-map, which reacts on + ;; outline-minor-mode + + (use-local-map apdl-mode-map) + (set-syntax-table apdl-mode-syntax-table) + (setq local-abbrev-table apdl-mode-abbrev-table) + + (setq font-lock-maximum-decoration + `((apdl-mode . ,apdl-highlighting-level) (t . t))) + + (setq align-mode-rules-list apdl-align-rules-list) + ;; (when (> apdl-highlighting-level 1) + ;; (setq font-lock-multiline t)) ; for *msg, *vwrite,.. format strings + + (make-local-variable 'apdl-user-variable-regexp) ; for font-lock + (setq apdl-user-variable-regexp nil) + + (make-local-variable 'parens-require-spaces) + (setq parens-require-spaces apdl-require-spaces-flag) + + (make-local-variable 'indent-line-function) + (setq indent-line-function 'apdl-indent-line-function) + + (make-local-variable 'comment-start) + (setq comment-start apdl-indent-comment-string) + + (make-local-variable 'comment-padding) + (setq comment-padding apdl-comment-padding) + + (make-local-variable 'comment-add) + (setq comment-add apdl-comment-add) + + (make-local-variable 'comment-column) + (setq comment-column apdl-code-comment-column) + + ;; FIXME: + ;; (setq comment-fill-column 50)??? + ;; comment-indent -> fill-column?? only when line-wrap mode t? + + ;; overlay for command-parameter-help + + ;; (make-local-variable 'apdl-timer) + ;; (make-local-variable 'apdl-help-overlay) + (setq apdl-help-overlay (make-overlay 1 1)) + + ;; look at newcomment.el + (make-local-variable 'comment-start-skip) + (setq comment-start-skip apdl-comment-start-skip) + + ;; (make-local-variable 'parse-sexp-ignore-comments) + ;; (setq parse-sexp-ignore-comments t) + + ;; (make-local-variable 'font-lock-defaults) is always local + (setq font-lock-defaults `(,apdl-font-lock-keyword-list nil 'case-ignore)) + ;; keywords + ;; keywords-only -- nil: syntactic fontification + ;; case-fold -- non nil: ignore case + + (make-local-variable 'outline-regexp) + (make-local-variable 'apdl-hide-region-overlays) + ;; outline-minor-mode searches only at the line beginning + (setq outline-regexp (concat "![" apdl-outline-string "]+")) + + ;; discrepancies from Emacs defaults + (apdl-font-lock-mode) ; switch on font-lock when + ; it's toggled + + ;; It is impolite to enforce below behaviour over possible user + ;; customisation + + ;; ; (delete-selection-mode t) + ;; ; (toggle-truncate-lines 1) + ;; ; (show-paren-mode t) + ;; ; (set (make-local-variable 'scroll-preserve-screen-position) nil) + + (setq apdl-is-unix-system-flag (apdl-is-unix-system-p)) + + ;; menu + (apdl-add-apdl-menu) + + + ;; All files and all buffers use with apdl-mode + + ;; only when apdl-dynamic-highlighting-flag is t + + ;; and + + ;; only: .mac, .ans, .inp can have dynamic highlighting and buffer + ;; *APDL code*, .dat is per default the workbench input file format + + ;; File > 1 MB < 30 MB y-or-n-p: dynamic + ;; highlighting + + ;; file > 30 MB yes or no: (extended) variable highlighting with + ;; apdl-highlight-variable?, never dynamic highlighting + + ;; -highlighting-level [2] >= 2 and apdl-dynamic-highlighting-flag [t] + + ;;apdl-add-variable-hooks + + ;; --- dealing with 1) "extended" variable highlighting and 2) dynamic + ;; variable highlighting --- + + ;; either *APDL code* buffer (we ignore other buffers here) or files + (if (string= (buffer-name) "*APDL code*") + (when apdl-dynamic-highlighting-flag + (apdl-add-variable-hooks)) + (let* ; now we deal with existing files + ((File (buffer-file-name)) + (Size (and File + (nth 7 (file-attributes (buffer-file-name)))))) + (when File + (cond + ((> Size 3000000) ; file > 3 MB, that's very likely WB generated + ;; (when + ;; (yes-or-no-p + ;; "File larger than 3 MB, switch on extended variable highlighting? ") + ;; (apdl-find-user-variables) + ;; (message "Extended, non-dynamic highlighting of variables activated.")) + (message "Non-dynamic highlighting of variables activated.")) + ((> Size 500000) ; file > 0.5 MB editing is becoming very sluggish + ; with dynamic highlighting + (when (or (string= (file-name-extension (buffer-file-name) 'dot) ".ans") + (string= (file-name-extension (buffer-file-name) 'dot) ".inp") + (string= (file-name-extension (buffer-file-name) 'dot) ".mac")) + (apdl-find-user-variables) + (when + (and + apdl-dynamic-highlighting-flag + (yes-or-no-p "File larger than 0.5 MB, switch on dynamic variable highlighting? ")) + (apdl-add-variable-hooks) + (message "Dynamic highlighting of user variables activated.")))) + (t ; file <= 0.5 MB + (apdl-find-user-variables) + (when + (and + apdl-dynamic-highlighting-flag + (or (string= (file-name-extension (buffer-file-name) 'dot) ".ans") + (string= (file-name-extension (buffer-file-name) 'dot) ".inp") + (string= (file-name-extension (buffer-file-name) 'dot) ".mac"))) + (apdl-add-variable-hooks) + (message "Dynamic highlighting of user variables activated."))))))) + + ;; (if (and (>= apdl-highlighting-level 2) ; + ;; apdl-dynamic-highlighting-flag + ;; (or + ;; ;; either *APDL code* buffer + ;; (string= (buffer-name) "*APDL code*") + ;; ;; or .mac or .ans files and both smaller than 30 Mb + ;; ;; .dat and .inp might be huge WorkBench files.. + ;; (and (buffer-file-name) + ;; (or (string= (file-name-extension (buffer-file-name) + ;; 'dot) ".ans") + ;; (string= (file-name-extension (buffer-file-name) + ;; 'dot) ".inp") + ;; (string= (file-name-extension (buffer-file-name) + ;; 'dot) ".mac")) + ;; ;; 30 Mb bigger than file? + ;; (when (file-attributes (buffer-file-name)) ; open an + ;; ; existing + ;; ; file + ;; ;; Emacs-28 large-file-warning-threshold is 10mb + ;; (if (> 30000000 (nth 7 (file-attributes (buffer-file-name)))) + ;; t + ;; (y-or-n-p "File larger than 30 MB, switch on dynamic variable highlighting? ")))))) + ;; (progn + ;; ;; (message "before apdl-update-p.") + ;; (add-hook 'after-change-functions + ;; #'apdl-find-user-variables nil t) + ;; (add-hook 'post-command-hook + ;; #'apdl-update-parameter-help nil t) + ;; (message "Dynamic highlighting of user variables activated.")) + ;; (message "Non-dynamic highlighting of variables activated.")) + + ;; that's the culprit for large files, not the highlighting + ;; (apdl-find-user-variables) + + ;; (if (>= apdl-highlighting-level 2) + ;; (when (or + ;; (when (not buffer-file-name) + ;; t) ; skip below size query (buffer without a file) + ;; (> 30000000 (nth 7 (file-attributes (buffer-file-name)))) + ;; (y-or-n-p + ;; "File is larger than 30 MB, switch on user variable highlighting? ")) + ;; (message "before if.") + ;; (if (and apdl-dynamic-highlighting-flag + ;; (or (string= (buffer-name) "*APDL code*") + + ;; ; (message "before ans.") + ;; (string= (file-name-extension (buffer-file-name) 'dot) ".ans") + ;; ; (message "before mac.") + ;; (string= (file-name-extension (buffer-file-name) 'dot) ".mac"))) + ;; (progn (message "before addhook.") + ;; (add-hook 'after-change-functions + ;; 'apdl-find-user-variables nil t) + ;; (message "before apdl-update-p.") + ;; (add-hook 'post-command-hook + ;; 'apdl-update-parameter-help nil t) + ;; (message "Dynamic highlighting of user variables activated.")) + ;; (message "Non-dynamic highlighting of variables activated.")) + ;; (apdl-find-user-variables))) + + ;; .dat WorkBench solver input files + (when (and buffer-file-name ; a buffer with a file name + (string= (file-name-extension (buffer-file-name) t) ".dat")) + (apdl-hide-number-blocks)) + + ;; a-align needs a mark to work for an unspecified region + ;; (set-mark 0) -TODO- + + ;; initialise system dependent stuff + (unless apdl-initialised-flag + (apdl-initialise)) + ) +;; -- end of apdl-mode -- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;;###autoload +(defun apdl () + "Open a new buffer in APDL-Mode. +You must save the buffer (connect it with a file-name), otherwise +possible edits are lost." + (interactive) + (let ((b "*APDL code*")) + (get-buffer-create b) + (switch-to-buffer b) + (when (< (buffer-size) 1) + (insert "!! This is an unnamed file under APDL-Mode.\n\ +!! Please save it (C-x C-s) and start your APDL hacking...\n\n")) + (apdl-mode))) + +;; FIXME +;; (defun apdl-ansysli-servers-check () +;; "Return t if Ansys interconnect server information is found. +;; Checking whether the variable `apdl-ansysli-servers' is set or +;; otherwise the environment variable AnsysLI_SERVERS. If neither +;; is set return nil" +;; (interactive) +;; (cond +;; (apdl-ansysli-servers +;; ; (setenv "AnsysLI_SERVERS" apdl-ansysli-servers) +;; ; (message "Set process environment variable AnsysLI_SERVERS +;; to apdl-ansysli-servers") +;; t) +;; ((getenv "AnsysLI_SERVERS") +;; (setq apdl-ansysli-servers (getenv "AnsysLI_SERVERS")) +;; (message "Read apdl-ansysli-servers from process environment +;; variable AnsysLI_SERVERS") t) +;; (t nil))) + +;; (defun apdl-license-file-check () +;; "Return t if Ansys license file (server) information is found. +;; Checks whether the variable `apdl-license-file' is set, if not +;; sets its value to the environment variable AnsysLMD_LICENSE_FILE +;; or LM_LICENSE_FILE, in this order of precedence. When the former +;; are not available return nil." +;; (let ((lic1 (getenv "AnsysLMD_LICENSE_FILE")) +;; (lic2 (getenv "LM_LICENSE_FILE")) +;; ) +;; (cond +;; (apdl-license-file +;; ; (setenv "AnsysLMD_LICENSE_FILE" apdl-license-file) +;; ; (message "Set process environment variable AnsysLMD_LICENSE_FILE +;; to apdl-license-file") +;; t) +;; (lic1 ; need this for -license-status +;; (setq apdl-license-file lic1) +;; (message "Set apdl-license-file from AnsysLMD_LICENSE_FILE") +;; (message "apdl-license-file=%s" lic1) +;; t) +;; (lic2 +;; (setq apdl-license-file lic2) +;; (message "Set apdl-license-file from MD_LICENSE_FILE") +;; (message "apdl-license-file=%s" lic2) +;; t) +;; (t +;; nil)))) + + +(defun apdl-mark-paragraph (&optional arg allow-extend) + "Put mark at beginning of this paragraph, point at end. +The paragraph marked is the one that contains point or follows +point. + +With argument ARG, puts point at end of a following paragraph, so +that the number of paragraphs marked equals ARG. + +If ARG is negative, point is put at the beginning of this +paragraph, mark is put at the end of this or a previous +paragraph. + +Interactively, if this command is repeated +or (in Transient Mark mode) if the mark is active, +it marks the next ARG paragraphs after the ones already marked. + +Arg ALLOW-EXTEND is in interactive calls the same as ARG." + (interactive "p\np") + (unless arg (setq arg 1)) + (when (zerop arg) + (error "Cannot mark zero paragraphs")) + (cond ((and allow-extend ; we already called this function + (or (and (eq last-command this-command) (mark t)) + (and transient-mark-mode mark-active))) + (forward-paragraph arg)) + ((and (bolp) (eolp)) ; we are in an empty line + (push-mark nil t t) + (forward-paragraph arg)) + (t ; we are within a paragraph + (backward-paragraph arg) + (push-mark nil t t) + (forward-paragraph arg)))) + +;;;###autoload +(defun apdl-mode-version () + "Display the APDL-Mode version numbering scheme. +Together with the APDL-Mode update date and the Ansys version on +which the keyword- and completion system is based upon." + (interactive) + (message "APDL-Mode version: %s (%s) based on Ansys %s" + apdl-mode-version + apdl-mode-update + apdl-ansys-version)) + +;; ATTENTION: reloading seems to be critical, when there are multiple +;; entries in `load-path' for APDL-Mode! +(defun apdl-reload-apdl-mode () + "Reload APDL-Mode for debugging or testing purposes. +Clear (unload) all mode definitions, if apdl-mode is active, load +the necessary code and call `apdl-mode'. In general, this is +only possible if apdl-mode.el is in the load-path of Emacs." + (interactive) + (progn + (when (featurep 'apdl-mode) + (unload-feature 'apdl-mode) + (unload-feature 'apdl-keyword) + (unload-feature 'apdl-process) + (unload-feature 'apdl-template) + (unload-feature 'apdl-wb-template) + ;; the others rely on -initialise !! + (unload-feature 'apdl-initialise)) +;; (load "apdl-config") ; don't rely on apdl-config! + (if (file-exists-p "apdl-mode.el") + (load "apdl-mode.el") + (error "There is no apdl-mode.el in load-path")) ; load apdl-mode.el + (apdl-mode) + (message "APDL-Mode %s based on Ansys %s reloaded" + apdl-mode-version apdl-ansys-version))) + +(defun apdl-show-paren-mode () ; _C + "Switch on minor mode function `show-paren-mode'. +The Matching parenthesis is highlighted." + (show-paren-mode 1)) + +;; (defun apdl-ruler-mode () ; _C +;; "Toggle display of ruler in header line. +;; This is the minor mode `ruler-mode'." +;; (ruler-mode)) + +(defun apdl-font-lock-mode () + "Switch on function `font-lock-mode'. +Font Lock is also known as \"syntax highlighting\"." + (unless font-lock-mode + (font-lock-mode 1))) + +(defun apdl-outline-minor-mode () + "Switch on mode function `outline-minor-mode'. +Editing with selective display." + (outline-minor-mode 1)) + +(defun apdl-auto-insert-mode () + "Switch on mode function `auto-insert-mode'. +Automatic template insertion is enabled" + (auto-insert-mode 1)) + +(defun apdl-insert-pi () + "Insert the code \"Pi = acos(-1)\" = 3.141.. at point. +Indent the current line according to the context." + (interactive) + (insert "Pi = acos(-1) ! 3.14159265359") + (indent-according-to-mode) + (newline-and-indent)) + +(defun apdl-column-ruler () + "Insert a temporary column ruler above the current line. +The insertion remains until the next keystroke. The key typed is +inserted or evaluated unless it is the SPC key." + (interactive) + (save-excursion + (momentary-string-display + (if apdl-ruler-wide-flag + apdl-column-ruler-wide + apdl-column-ruler-narrow) + (line-beginning-position)))) + +(defun apdl-position (position) ; FIXME: with `line-beginning-position' etc. + ;; redundant function + "Return the value of point at certain POSITIONs." + (save-excursion + (cond + ((eq position 'bol) (beginning-of-line)) ; line-beginning-position + ((eq position 'eol) (end-of-line)) ; line-end-position + ((eq position 'boi) (back-to-indentation)) + ((eq position 'bonl) (forward-line 1)) + ((eq position 'bopl) (forward-line -1)) + (t (error "Unknown buffer position requested: %s" position))) + (point))) + +(defun apdl-close-block () ; FIXME: choices for *IF + "Complete an APDL block command with the appropriate end keyword. +Insert the end keyword on a separate line. An error is signalled +if no block to close is found. For example the *IF command +represents only a proper block command when it is followed by a +THEN action label." + (interactive "*") + (let (bb-keyword str tmp) + (condition-case nil ; more pertinent error message -TODO- + (progn + (save-excursion + (apdl-up-block) + (setq bb-keyword (buffer-substring-no-properties + (match-beginning 1) (match-end 1))) + ;; for *IF we're getting more than one word (*IF,...,THEN) + (setq tmp (compare-strings bb-keyword 0 nil + "*IF" 0 nil 'ignore-case)) + (when (> tmp 2) + (setq bb-keyword + (substring-no-properties + (buffer-substring-no-properties + (match-beginning 1) (match-end 1)) 0 3)))) + ;; prepare insertion of keyword + (setq str (car (reverse ; FIXME: incomplete, why? + ;; RESTRICTED: asssoc-string Emacs 21.4 + (assoc-string bb-keyword + apdl-block-match-alist 1)))) + ;; capitalise properly + (let ((case-fold-search nil)) + (when (string-match + "\\([a-z].\\)\\|\\(\\*\\|/\\|~\\)[a-z]" bb-keyword) + (setq str (downcase str)))) + (cond + ((apdl-in-empty-line-p) + ;; (delete-blank-lines) deletes in 23.1 an isolated empty line + (insert str) + (indent-according-to-mode)) + ((apdl-in-indentation-p) + (beginning-of-line) + (open-line 1) + (insert str) + (indent-according-to-mode) + (forward-line 1) + (indent-according-to-mode) + (forward-line -1) + (end-of-line)) + ((apdl-in-string-or-comment-p) + (end-of-line) + (newline) + (insert str) + (indent-according-to-mode)) + ((and (apdl-code-line-p) + (not (apdl-at-end-of-text-p))) + (indent-according-to-mode) + (newline 2) + (forward-line -1) + (insert str) + (indent-according-to-mode) + (forward-line 1) + (indent-according-to-mode) + (forward-line -1) + (end-of-line)) + (t + (indent-according-to-mode) + (newline) + (insert str) + (indent-according-to-mode))) + (apdl-blink-matching-block) + t) + (error (message "Cannot find a proper block command to close"))))) + +;;; --- Command parameters and command completions ---- +(defsubst apdl-count-commas () + "Return the number of commas in the line before point." + (how-many "," (line-beginning-position) (point))) + +(defun apdl-manage-overlay ( str) + "Display or remove the command help overlay string STR. +Applying this function in the same line erases the help overlay. +The help overlay will be automatically removed after some time +interval." + (interactive) + (let (; (ho (overlay-start apdl-help-overlay)) + (lb (line-beginning-position))) + (if apdl-timer + (cancel-timer apdl-timer)) + (delete-overlay apdl-help-overlay) + ;; (setq apdl-help-overlay-str str) + (move-overlay apdl-help-overlay lb lb) + (overlay-put apdl-help-overlay 'before-string str) + (setq apdl-timer + (run-at-time + apdl-parameter-help-duration nil + (lambda () + (when (overlayp apdl-help-overlay) + (delete-overlay apdl-help-overlay))))))) + +(defun apdl-search-comma (str count) + "Return the index of the COUNT's occurrence of a comma in STR. +Return nil otherwise." + (let ((index 0) + (c 0)) + (while (and (> count c) (not (null index))) + (setq index (string-match "," str (1+ index)) + c (1+ c))) + index)) + +;; function is used as a post-command-hook +;; (defun apdl-update-parameter-help (&optional a b c) +(defun apdl-update-parameter-help () + "Update parameter help counting according to the cursor position. +Check if we are in a help overlay and if the cursor position +changed. Then call `apdl-show-command-parameters'." + (let ((p (point)) + (lo (overlays-in (line-beginning-position) + (1+ (line-beginning-position))))) + (when (and (not (equal p apdl-parameter-help-position)) + (not (equal 1 p)) ; -TODO- not working in the first line + (memq apdl-help-overlay lo)) ;there's an overlay above line + (setq apdl-parameter-help-position (point)) + (apdl-show-command-parameters -1)))) + +;; spec: preserve post-command-hook! => no errors +;; edit command while help overlay! +;; remove overlay and warn when too many commas! +(defun apdl-show-command-parameters (&optional ask-or-toggle) + "Display the APDL parameters help for the command near the cursor. +Show the command name and a brief description. In a second line +its parameters (if any) and in a further line the number of +parameters and highlighting the parameter position (if any) of +the cursor. The command is chosen for the current cursor line, +and for the previous APDL command in an empty line (see the +function `apdl-command-start'). + +In a comment line this function is also looking for an Ansys +keyword. When no word characters are in the line this function +is showing a help for the previous APDL command - which is not +commented out. + +With a prefix argument ASK-OR-TOGGLE of zero switch off the +command parameters highlighting, with an prefix `C-u' or argument +`4' (four) enquire a command name from the mini buffer. Here, +the beginning command characters can be completed with ." + (interactive "p" ) + (let ((case-fold-search t) ; in case customised to nil + (count 0) + substr + tmpstr + start + end + length + str) + ;; enquire a command or search for a valid command name + (cond ((= ask-or-toggle 0)) ; do nothing here (but below) + ;; ------------------------------ + ((= ask-or-toggle -1) ; apdl-update-parameter-help is calling + ;; and thus there's an overlay above us, so stay put + (save-excursion + (back-to-indentation) + (skip-chars-forward "!") ;we might be in a comment line + (re-search-forward "[^[:space:]]\\w*\\>" nil t) + (setq str (match-string-no-properties 0)))) + ;; ------------------------------ + ((= ask-or-toggle 4) + (setq str (completing-read + "Type APDL keyword to get its short help: " + apdl-help-index))) + ;; ------------------------------ + ((apdl-in-comment-line-p) + (save-excursion + (back-to-indentation) + (skip-chars-forward "!") + (re-search-forward "[^[:space:]]\\w*\\>" (line-end-position) t) + (setq str (match-string-no-properties 0)) + (message "keyword1 = %s" str) + ) + (when (string= str "!") ;from skip-chars-forward? + (apdl-command-start) + (re-search-forward "[^[:space:]]\\w*\\>" nil t) + (setq str (match-string-no-properties 0)))) + ;; ------------------------------ + ((apdl-in-indentation-p) ; we are possibly before a command + ;; -TODO- strange bug, when cursor is in a line with only + ;; -commas and no command follows in lines below, then + ;; -match-string-no-properties bails out!? + (save-excursion + (re-search-forward "[^[:space:]]\\w*\\>" nil t) + (setq str (match-string-no-properties 0)))) + ;; ------------------------------ + ((apdl-in-empty-line-p) + ;; we need to follow -command-start otherwise the overlay + ;; is hanging in the "air" + (apdl-command-start) + (save-excursion + ;; (apdl-command-start) + (re-search-forward "[^[:space:]]\\w*\\>" nil t) + (setq str (match-string-no-properties 0)))) + ;; ------------------------------ + ((unless (apdl-in-indentation-p) + (save-excursion + (apdl-command-start) + (re-search-forward "[^[:space:]]\\w*\\>" nil t) + (setq str (match-string-no-properties 0)))))) + ;;(message "keyword after cond: %s" str) + ;; search, amend and display help string in overlay + (if (= ask-or-toggle 0) + (delete-overlay apdl-help-overlay) + (catch 'foo + (dolist (s apdl-dynamic-prompt) + ;; 2 line documentation strings in -dynamic-prompt + (when (and (string-match (concat "^" str) s) + (not (string= "" s))) + (setq length (length s)) + ;; creating additional row with comma counts + (setq start (string-match "\n" s)) ; looking for the first + ; line break + (setq substr (substring s (1+ start))) ;second line + (setq tmpstr (mapconcat ;create third line + (lambda (str) + (cond ((string-match "," (string str)) + (setq count (1+ count)) + (if (> count 9) + (setq count 0)) + (format "%d" count)) + (t "-"))) + substr "")) + (when (> count 0) + (setq s (concat s "\n" tmpstr))) + (setq s (propertize (concat s "\n") 'face 'highlight)) + ;; show different face for current argument + (setq count (apdl-count-commas)) + (setq start (apdl-search-comma s count)) + ;; highlight redundant argument commas + (cond ((null start) + (setq start (length s)) + ;; (setq s (propertize (concat s "Redundant argument") 'face 'highlight)) + ;; (skip-chars-backward "[^,]") + ;;(delete-overlay apdl-help-overlay) + (unless (or (apdl-in-string-command-line-p) + (apdl-in-comment-line-p)) + (message "Redundant comma, command has fewer arguments!") + (beep) + ;;(throw 'foo nil)) + )) + ((= 0 start) + (setq start (1+ (string-match "\n" s))))) + (setq end (apdl-search-comma s (1+ count))) + (unless end + (setq end length)) + (unless (>= start end) + (add-text-properties start end '(face isearch-fail) s)) + (apdl-manage-overlay s) + ;; break dolist when str is found and skip over error + (throw 'foo nil))) + (delete-overlay apdl-help-overlay) + (message "\"%s\" not found in keyword list" str))))) + +(defun apdl-check-capitalisation ( string) + "Check case of APDL keyword STRING. +Return symbols capitalise, upcase and downcase." + (interactive) + ;; preferences: downcase, capitalize, upcase + (cond + ((string= string (downcase string)) 'downcase) + ((string= string (capitalize string)) 'capitalize) + ((string= string (upcase string)) 'upcase) + (t 'downcase))) + +(defun apdl-complete-symbol () + "Perform a completion on APDL keywords preceding the cursor. +Complete the character(s) to APDL's reserved words, functions +and element names, otherwise throw an error. When the keyword or +the completed character(s) represent a unique APDL keyword +indicate this fact with a message. When the completion is not +unique or only partial show the other possible completions in a +temporary completion buffer, from which the completions might be +chosen with the mouse. You might remove the *APDL completion* +buffer with the SPACE key." + ;; This code taken from lisp-complete-symbol + (interactive "*") + (let* ((buffer-name "*APDL-completion*") + (completion-buffer (get-buffer-create buffer-name)) + (completion-window (get-buffer-window completion-buffer))) + (if (and (eq last-command this-command) + completion-window ; already window there? + ;; window is visible + (window-live-p completion-window)) + ;; If this command was repeated, and + ;; there's a fresh completion window with a live buffer, + ;; and this command is repeated, scroll that window. + (with-current-buffer (window-buffer completion-window) + (if (pos-visible-in-window-p (point-max) completion-window) + (set-window-start completion-window (point-min)) + (save-selected-window + (select-window completion-window) + (scroll-up))))) + ;; Do completion. + (let* ((end (progn (skip-chars-backward " \t") (point))) + (beg (save-excursion + (skip-chars-backward "()") + ;; we need to check if we are before * or / in + ;; operator syntax + (if (looking-back "[*/]" (- (point) 1)) + (skip-chars-backward "*/" (- (point) 1))) + ;; are we at a code beginning? + (unless (apdl-in-indentation-p) + (backward-sexp 1)) + ;; we need to check if we are in a * or / command + (if (looking-back "[*/]" (- (point) 1)) + (skip-chars-backward "*/" (- (point) 1))) + (point))) + (completion-string (buffer-substring-no-properties beg end)) + (completion (try-completion + completion-string apdl-completions)) + (completion-list (all-completions + completion-string apdl-completions)) + (cc (apdl-check-capitalisation completion-string))) + + (cond + ;; completion not possible + ((null completion) + (message "\"%s\" cannot be completed to an APDL symbol" + completion-string) + (if completion-window ; bury completion buffer + (save-selected-window + (select-window completion-window) + (bury-buffer))) + (ding)) + + ;; unique and upcased like in the -completions variable + ((equal completion t) + (message "\"%s\" is a unique APDL symbol." + completion-string) + (kill-buffer completion-buffer)) + + ;; unique or uniquely completable, case independent + ((= (length completion-list) 1) ; unique + (setq completion (funcall cc completion)) + (unless (string= completion completion-string) + (setq completion (funcall cc completion)) + (delete-region beg end) + (insert completion)) + ;; possibly move back into parens + (skip-chars-backward ")" (1- (point))) + (kill-buffer completion-buffer) + (message "\"%s\" is a unique APDL symbol." completion)) + + ;; complete or not, but not unique anyway + (t + (setq completion (funcall cc completion)) + (unless (string= completion completion-string) + (delete-region beg end) + (insert completion)) + (with-output-to-temp-buffer buffer-name + (display-completion-list completion-list)) + (if (= (apply #'min (mapcar #'length completion-list)) + (length completion)) + ;; already a complete, valid symbol but fragment is further + ;; completable + (message + ;; (concat "Complete APDL symbol. Hit SPACE to remove the " + (concat "Complete but not unique APDL symbol. \ +Hit SPACE to remove the " + buffer-name " buffer.")) + ;; not yet complete + (message + (concat "Incomplete APDL symbol. Hit SPACE to remove the " + buffer-name " buffer."))) + + ;; mouse selections in the completion buffer? + (let (key + first) + (if (progn + (set-buffer (get-buffer completion-buffer)) + ;; we are temporarily in the completion buffer + (setq key (read-key-sequence nil) + first (aref key 0)) ; first key of key sequence + (and (consp first) ; is cons cell + (consp (event-start first)) + (eq + (window-buffer (posn-window (event-start first))) + (get-buffer completion-buffer)) + ;; (eq (key-binding key) 'choose-completion))) + ;; (choose-completion first) + (eq (key-binding key) 'mouse-choose-completion))); 28 + (when (version< "28" emacs-version) + (with-no-warnings + (easy-menu-add apdl-task-menu-map apdl-mode-map) + (easy-menu-add apdl-mode-menu-map apdl-mode-map)))) + +(defun apdl-calculate-indent () ; FIXME: comment, fixed goal column, + "Return appropriate indentation for the current APDL code line. +Returns an integer (the column to indent to) unless the line is a +comment line with fixed goal column. In that case, returns a +list whose car is the column to indent to, and whose cdr is the +current indentation level." + (let ((column 0) ; column + (keyword_c 0) ; for specified commands + (comma_c nil) ; for default commands + lep ; line end predicate + lbp) ; line beginning predicate + ;; --- first for the previous code line --- + (save-excursion + (when (zerop (apdl-previous-code-line 1)) ; there is a previous + ; code line + (if (or (apdl-condensed-input-line-p) + (and (apdl-in-indentation-p) + (not (apdl-default-command-p)))) + (back-to-indentation) + (apdl-command-start)) ; skip to the beginning of a *msg and + ; default command + (setq keyword_c (current-column)) + (cond + ((looking-at apdl-block-begin-regexp) + ;; checking for then keywords in if +; (when (looking-at "\\*if.*,\\s-*then") ; *if base1 or base2 + ;; must be THEN for being a block keyword + (setq keyword_c (+ keyword_c apdl-block-offset)));) + ((looking-at apdl-block-else-regexp) + (setq keyword_c (+ keyword_c apdl-block-offset))) + ((looking-at "[^\n,]") ; */ are also valid default commands 12.1 + (setq lep (line-end-position)) + (setq comma_c (re-search-forward "\\w+\\s-*" lep 'noerror)) + (when comma_c + (setq lbp (line-beginning-position)) + (setq comma_c (- comma_c lbp)))) + ((looking-at ",") ; -TODO-: shouldn't be possible + (setq lep (line-end-position)) + (setq comma_c (1- (re-search-forward + "," lep 'noerror))) ; excluding the comma + (when comma_c + (setq lbp (line-beginning-position)) + (setq comma_c (- comma_c lbp))))))) + ;; --- now for the current code line --- + (save-excursion + (back-to-indentation) + (if (apdl-first-line-p) ; we are at the first code line + (setq column (current-column)) + (cond + ((and (looking-at apdl-block-else-regexp) + (apdl-not-in-string-or-comment-p)) + (setq column (- keyword_c apdl-block-offset))) + ((and (looking-at apdl-block-end-regexp) + (apdl-not-in-string-or-comment-p)) + (setq column (- keyword_c apdl-block-offset))) + ((and (looking-at ",") ; APDL default command substitution + (apdl-not-in-string-or-comment-p)) ; FIXME:for *msg lines etc.? + (if comma_c + (setq column comma_c) + (setq column keyword_c))) + ((and (looking-at "\\s<\\w") ; FIXME:? this is for "code + ; comments" + (not (looking-at + ( concat + "\\(\\s<\\s<\\s-\\S<\\)\\|\\(\\^\\s<" + apdl-outline-string "+\\)"))) + (setq column comment-column))) + (t + (setq column keyword_c))))) + (when (< column 0) + (error "%s" "Can't deduce sensible column offset")) + column)) + +(defun apdl-indent-line-function (&optional arg) + "Indent current line in APDL coding style. +With optional ARG, use this as offset unless this line is a +comment with fixed goal column. This function is saved in +`indent-line-function'." + (interactive "*p") + (unless arg (setq arg 1)) + (let ((icol (apdl-calculate-indent)) + (relpos (- (current-column) (current-indentation)))) + (if (listp icol) ; FIXME: -calculate-indent returns no list + (setq icol (car icol)) + (setq icol (+ icol (1- arg)))) + (if (< icol 0) + (error "Unmatched end keyword") ; FIXME: this is probably wrong + (indent-line-to icol) + (if (> relpos 0) + (move-to-column (truncate (+ icol relpos))))))) + +;;;; Electric characters & friends + +(defun apdl-abbrev-start () + "Start entering an APDL abbreviation. +If Abbrev mode is turned on, typing ` (grave accent) followed by ? or +\\[help-command] lists all APDL abbrevs. Any other key combination is +executed normally. +Note that all APDL-Mode abbrevs start with a grave accent." + (interactive) + ;; (if (not abbrev-mode) ; FIXME: redundant with E22.? + ;; (self-insert-command 1) + (let (c) + (insert last-command-event) + (if (or (eq (setq c (read-event)) ??) + (eq c help-char)) + (list-abbrevs t) + (setq unread-command-events (list c))))) ; ) + +;; ;; redefine function because of bug in Emacs 23.2 squashed in 23.3 +;; (defun prepare-abbrev-list-buffer (&optional local) +;; "Temporary redefinition of internal Emacs function with the argument LOCAL." +;; (let ((l-a-t-n (abbrev-table-name local-abbrev-table))) +;; (with-current-buffer (get-buffer-create "*Abbrevs*") +;; (erase-buffer) +;; (if local +;; (insert-abbrev-table-description l-a-t-n t) +;; (dolist (table abbrev-table-name-list) +;; (insert-abbrev-table-description table t))) +;; (goto-char (point-min)) +;; (set-buffer-modified-p nil) +;; (edit-abbrevs-mode) +;; (current-buffer)))) + +(defun apdl-indent-format-line () + "Break APDL line at point, continuing comment if within one. +If within code, insert the APDL continuation character `&' +before breaking the line. If within a string, signal an error. +The new line is properly indented." + (interactive "*") + (delete-horizontal-space) + (cond + ((apdl-in-comment-p) + (indent-new-comment-line)) + ((apdl-in-string-p) ; FIXME: there are no strings defined yet + (error "Cannot split a code line inside a string")) + ((apdl-in-format-construct-p) + (insert " &") + (apdl-reindent-then-newline-and-indent)) + (t + (apdl-reindent-then-newline-and-indent)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;; --- Cursor movement --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun apdl-default-command-end () + "Move cursor to the end of an APDL default command construct." + (unless (apdl-default-command-p) + (re-search-forward "^\\s-*,")) + (while (apdl-default-command-p) + (forward-line)) + (forward-line -1) + (end-of-line)) + +(defun apdl-search-number-line (&optional dir) + "Search forward for a line existing purely of numbers. +If not If direction DIR is negative search backwards. The default +for DIR is 1. When already in a number line just go to the line +beginning when DIR is < 1 and when DIR is > to the end. When no +further number line is in the file signal an error." + (interactive "p") + (unless dir (setq dir 1)) + (let ((re apdl-number-line-regexp)) + (unless (apdl-at-end-of-text-p) + (beginning-of-line)) + (cond + ((< dir 1) + (while (progn + (unless (re-search-backward re nil t) + (error "Can't find preceding number line")) + (apdl-in-format-construct-p)))) + (t + (while (progn + (unless (re-search-forward re nil t) + (error "Can't find subsequent number line")) + (apdl-in-format-construct-p))))))) + +(defun apdl-number-block-start () + "Move to the line beginning before a pure number block. +For example an APDL NBLOCK or EBLOCK typically found in +WorkBench APDL files. If there is no code before a number block, +signal an error." + (interactive) + (when (or (apdl-in-indentation-p) + (not (apdl-number-line-p))) + (apdl-search-number-line -1)) + (while (apdl-number-line-p) + (forward-line -1)) + (forward-line)) + +(defun apdl-number-block-end () + "Move to the end of a pure number block. +For example an APDL NBLOCK or EBLOCK typically found in +WorkBench APDL files." + (interactive) + (when (or (apdl-at-end-of-text-p) + (not (apdl-number-line-p))) + (apdl-search-number-line)) + (while (apdl-number-line-p) + (forward-line)) + (forward-line -1) + (end-of-line)) + +(defun apdl-next-code-line (&optional num) + "Move NUM lines of APDL code forward, default for NUM is 1. +Skip past intermediate comment and empty lines." + (interactive "p") + (unless num (setq num 1)) + (unless (memq last-command '(next-line + previous-line + apdl-next-code-line + apdl-previous-code-line)) + (setq temporary-goal-column (current-column))) + (cond ((eobp) + (message "End of buffer")) + (t + (forward-line 1) + (while (and (apdl-not-in-code-line-p) + (not (apdl-last-line-p))) + (forward-line 1)) + ;; (forward-comment (buffer-size)) + ;; temporary-goal-column might be a cons cell since E23.2 + (move-to-column (if (integerp temporary-goal-column) + (truncate temporary-goal-column) + (truncate (car temporary-goal-column)))) + (setq num (1- num)) + (when (and (not (apdl-last-line-p)) + (/= num 0)) + (apdl-next-code-line num))))) + + +(defun apdl-previous-code-line (&optional num) + "Move NUM lines of APDL code backward, default for NUM is 1. +Skip all empty - and comment lines and return the difference +between NUM and actually moved code lines. Check if there is +previous a code line before the cursor." + (interactive "p") + (unless num (setq num 1)) + (unless (memq last-command '(next-line + previous-line + apdl-next-code-line + apdl-previous-code-line)) + (setq temporary-goal-column (current-column))) + (let ((Diff num) + (Goal num)) + (cond + ((= num 0) + (message "%s" "do nothing and return 0") + num) + ((apdl-first-line-p) + (message "Already at first line.") + num) + ((save-excursion ; here we are not at bob + (while (progn + (forward-line -1) + (and (apdl-not-in-code-line-p) + (not (apdl-first-line-p))))) + ;; we are either at the first line or in a code line or both + (if (apdl-not-in-code-line-p) + nil ; first line without code + t)) ; we found a previous code line + (while (progn + (forward-line -1) + (apdl-not-in-code-line-p))) + (setq Goal (1- Goal) ; moved to first previous code line + Diff Goal) + ;; move to goal column + (move-to-column (if (integerp temporary-goal-column) + (truncate temporary-goal-column) + (truncate (car temporary-goal-column)))) + ;; recursion for possibly further code + (unless (= Goal 0) ; = : numerically equal + (setq Diff (apdl-previous-code-line Goal))) + ;; (if (= 1 (- num Diff)) + ;; (message "Moved %d code line" (- num Diff)) + ;; (message "Moved %d code lines" (- num Diff))) + Diff) + (t ; found no code line + ;; (message "No previous code line found.") ; in all templates + num)))) + +(defun apdl-back-to-format-command () + "Move cursor back to the beginning of a previous format command. +Signal an error when there is no format command." + (interactive) + (when (re-search-backward apdl-format-commands-regexp) ; signals error + (back-to-indentation))) + +(defun apdl-move-to-end-of-format-string () + "Move cursor to the end of an format command's format string." + (when (apdl-in-format-command-line-p) + (forward-line)) + (while (and (apdl-continuation-line-p) + (= (forward-line 1) 0))) ; in case of wrong format at eof + (move-end-of-line 1)) + +(defun apdl-move-before-comment() + "Move cursor to the line's end of text (which is not commented out)." + (beginning-of-line) + (search-forward "!" (apdl-position 'eol) 1) + (skip-chars-backward " \t!")) + +(defun apdl-command-start (&optional num) + "Move cursor to the beginning of the NUMth previous command or assignment. +Default for NUM is 1. If in a comment or empty line, go to the +previous command or to the first line if no previous command is +there. When on a condensed input line, go to previous `$' +statement or to the line's first command. When in a format +command string move backward to the beginning of the respective +command. When no APDL command is to be found signal an error. +When NUM is 0 move to the current code line indentation." + (interactive "p") + (unless num (setq num 1)) + (while (> num 0) + (cond + ((apdl-in-format-construct-p) + (apdl-back-to-format-command) + (setq num (1- num))) + ((apdl-number-line-p) + (while (apdl-number-line-p) + (forward-line -1)) + (end-of-line)) + ((apdl-default-command-p) + (while (apdl-default-command-p) + (forward-line -1)) + (end-of-line)) + ((and (not (apdl-code-line-p)) ; in empty line or comment + (not (= num 0)) + (not (apdl-first-line-p))) + (beginning-of-line) + (forward-comment (-(buffer-size)))) + ((apdl-in-indentation-p) + (if (apdl-first-line-p) + (setq num -1) + (forward-comment (-(buffer-size))))) ; skips also \n! + ((apdl-condensed-input-line-p) + (when (looking-back "\\$\\s-*" nil) ; we are already before a $ sign + ;; -TODO- speed things with LIMIT? + (skip-chars-backward " \t$")) ; skip at or before the $ char + (if (re-search-backward "\\$\\s-*" (apdl-position 'bol) t) + (skip-chars-forward "$ \t") + (back-to-indentation)) + (setq num (1- num))) + (t + (back-to-indentation) + (setq num (1- num)))))) + +(defun apdl-command-end (&optional num) + "Move to the end of the NUMth next APDL command or assignment statement. +Default for NUM is 1. If in a comment or empty line, go to the +next command or to the last line if no following command is +there. When on a condensed input line, go to the end of the next +`$' statement or to the line's end. Otherwise, when in a format +command string move forward to the end of the (possibly) +multi-line format string. In a code comment skip back to the end +of uncommenteded code, except when at the end of the code text, +then skip to the next code line's end." + (interactive "p") + (unless num (setq num 1)) + (while (> num 0) + (cond + ((apdl-at-end-of-code-p) + (if (apdl-last-line-p) + (setq num -1) + (forward-comment (buffer-size)))) + ((or (apdl-in-format-command-line-p) + (apdl-in-format-construct-p)) ; not the format command line + (apdl-move-to-end-of-format-string) + (setq num (1- num))) + ((apdl-number-line-p) + (apdl-number-block-end) + (setq num (1- num))) + ((apdl-default-command-p) + (apdl-default-command-end) + (setq num (1- num))) + ((and (not (apdl-code-line-p)) ; in empty line or comment + (not (= num 0)) + (not (apdl-last-line-p))) + (end-of-line) + (forward-comment (-(buffer-size)))) + ((apdl-condensed-input-line-p) + (when (looking-at "\\s-*\\$") ; we are already before a $ sign + (skip-chars-forward " \t$")) ; skip at or before the $ char + (if (re-search-forward "\\s-*\\$" (apdl-position 'eol) t) + (skip-chars-backward " \t$") + (end-of-line)) + (setq num (1- num))) + (t + (back-to-indentation) + (while (not (apdl-at-end-of-code-p)) + (forward-char)) + (setq num (1- num)))))) + +(defun apdl-scan-blocks (count level-offset) + "Scan from (point) COUNT balanced APDL begin-end blocks. +Return the position thus found. COUNT may be negative. + +If LEVEL-OFFSET is nonzero, the block level gets an offset of +LEVEL-OFFSET." + (let ((min-level-offset (if (> level-offset 0) 0 level-offset)) ; level-offset + ;; can become large (we are going deeper down block levels) + ;; but never smaller than min-level-offset + (inc (if (> count 0) 1 -1)) + (pt (point))) + (save-excursion + (while (/= count 0) + (catch 'foo ; end the inner while loop + (while (or (re-search-forward apdl-block-begin-or-end-regexp + nil t inc) ; FIXME:it's not + ; working when + ;; in a block regexp + (when (/= level-offset 0) + (error "Can't reach specified block level"))) + (unless (apdl-in-string-or-comment-p) + (cond + ((match-end 1) (setq level-offset + (+ level-offset inc))) ; begin-block-keywords + ((match-end 2) (setq level-offset + (- level-offset inc)))) ; end-block-keywords + (when (< level-offset min-level-offset) + (if (< min-level-offset 0) + (error "Reached minimum block level: Can't go deeper") + (error "Reached maximum block level: Can't go further up"))) + (when (= level-offset 0) (throw 'foo nil))))) + (setq count (- count inc))) + (if (= pt (point)) + (error "No block keyword found") + (point))))) + +(defun apdl-mark-block () ; FIXME: this is not consistent with + ;; mark-paragraph, cursor below construct + "Mark current block level. +Either inside of block structure or in the line of a block beginning +keyword." + (interactive) + ;; when we are in a line before a block beginning keyword + (if (save-excursion + (back-to-indentation) + (looking-at apdl-block-begin-regexp)) + (progn + (move-beginning-of-line nil) + (set-mark-command nil)) + (progn + (apdl-up-block) + (move-beginning-of-line nil) + (set-mark-command nil))) + (apdl-skip-block-forward) + (forward-line)) + +(defun apdl-skip-block-forward (&optional arg) + ;; &optional: default arg always + ;; nil when non interactively + ;; called + "Move forward across one balanced begin- and end-block keyword pair. +With argument, do it that many times. Negative ARG means move +backward across |ARG| blocks." + (interactive "p") ; "p" defaults to 1 only when interactive + (unless arg (setq arg 1)) + (goto-char (or (apdl-scan-blocks arg 0) + (if (> arg 0) + (message "No %d block end(s) after cursor position" arg) + (message "No %d block start(s) before cursor position" + arg))))) + +(defun apdl-skip-block-backwards (&optional arg) + "Move backward across one balanced APDL begin-end block. +With argument, do it that many times. +Negative ARG means move forward across |ARG| blocks." + (interactive "p") + (unless arg (setq arg 1)) + (apdl-skip-block-forward (- arg))) + +(defun apdl-next-block-end (&optional count) + "Move forwards behind the next block end. +With argument COUNT do that COUNT times. With negative argument +move backwards to the beginning of the |COUNT| previous block +end." + (interactive "p") + (unless count (setq count 1)) + (let ((c) + (dir (if (< count 0 ) -1 1)) + (n (abs count))) + (save-excursion + (dotimes (i n) + (while (progn + (setq c (re-search-forward apdl-block-end-regexp nil t dir)) + (unless c + (if (< dir 0) + (error "No previous block end(s), %d is(are) missing" + (- n i)) + (error "No further block end(s), %d is(are) missing" + (- n i)))) + (apdl-in-string-or-comment-p))))) + (goto-char c))) + +(defun apdl-previous-block-start-and-conditional (&optional count) + "Move backwards to the beginning the previous block start and conditionals. +This includes the conditional command *IF with bases other then +the keyword THEN; furthermore the looping controls *CYCLE and +*EXIT. With argument COUNT do that COUNT times. With negative +argument move forward to the end of the |COUNT| next block start +or conditional or looping construct." + (interactive "p") + (unless count (setq count 1)) + (let ((c) + (dir (if (< count 0 ) -1 1)) + (n (abs count)) + (b-regexp + (concat + apdl-block-begin-regexp + "\\|\\*[iI][fF]\\>\\|\\*[cC][yY][cC]\\|\\*[eE][xX][iI]"))) + (save-excursion + (dotimes (i n) + (while (progn + (setq c (re-search-backward b-regexp nil t dir)) + (unless c + (if (< dir 0) + (error "No further block start(s), %d is(are) missing" + (- n i)) + (error "No previous block start(s), %d is(are) missing" + (- n i)))) + (apdl-in-string-or-comment-p))))) + (goto-char c))) + +(defun apdl-down-block (&optional down-level) + "Move forward down one begin-end block level of APDL code. +Position cursor behind the beginning keyword of the respective +block. With argument DOWN-LEVEL, do this for that many levels. +A negative argument means move backwards up DOWN-LEVEL +levels (see `apdl-up-block')." + (interactive "p") + (unless down-level (setq down-level 1)) + (let ((inc (if (> down-level 0) 1 -1))) + ;; we have to take care whether cursor sits on a beginning keyword + (while (/= down-level 0) + (goto-char (apdl-scan-blocks inc (- inc))) + (setq down-level (- down-level inc))))) + +(defun apdl-up-block (&optional depth) + "Move backwards up one begin-end block level of APDL code. +Position cursor before the beginning keyword of the respective +block. With argument DEPTH, do this for that many levels. A +negative argument DEPTH means move forward down DEPTH levels (see +`apdl-down-block')." + (interactive "p") + (unless depth (setq depth 1)) + (apdl-down-block (- depth))) + +(defun apdl-blink-matching-block () + "Blink the matching APDL begin block keyword. +If point is right after an APDL else or end type block keyword, +move cursor momentarily to the corresponding begin keyword. +Signal an error if the keywords are incompatible." + (interactive) + (when apdl-blink-matching-block-flag + (let (bb-keyword bb-arg eb-keyword pos eol) + (when + (and + (apdl-not-in-string-or-comment-p) + (looking-at "\\>") + (save-excursion + (skip-syntax-backward "w") ; FIXME: is * in word syntax? + (looking-at apdl-block-else-or-end-regexp))) ; FIXME: and + ; otherwise? + (save-excursion + (cond + ((match-end 1) ; else keyword + (setq eb-keyword + (buffer-substring-no-properties + (match-beginning 1) (match-end 1))) + (apdl-up-block)) + ((match-end 2) ; end keyword + (setq eb-keyword + (buffer-substring-no-properties + (match-beginning 2) (match-end 2))) + (apdl-skip-block-backwards))) + (forward-word) + (setq pos (point) + bb-keyword (buffer-substring-no-properties + (match-beginning 0) pos) + ;; pos (1+ pos); FIXME: bb-arg is eating commas + eol (apdl-position 'eol) + bb-arg (save-excursion + (save-restriction + (goto-char pos) + (while (and (skip-syntax-forward "^<" eol) + (apdl-in-string-p) + (not (forward-char 1)))) + (skip-syntax-backward " ") + (buffer-substring-no-properties pos (point))))) + (if (member-ignore-case + eb-keyword (cdr (assoc-string + bb-keyword apdl-block-match-alist 1))) + (progn + (message "`%s' matches `%s%s'" eb-keyword bb-keyword bb-arg) + (when (pos-visible-in-window-p) + (sit-for apdl-blink-matching-delay))) + (error "Block keywords `%s' and `%s' do not match" + bb-keyword eb-keyword))))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; hiding regions heavily borrowed from M. Dahls hide-region.el + +(defun apdl-hide-region () + "Hide a region by making an invisible overlay over it. +Put some markers (`apdl-hide-region-before-string', +`apdl-hide-region-after-string') around and save the overlay in +the `apdl-hide-region-overlays' \"overlay ring\"." + (interactive) + (let ((new-overlay (make-overlay (mark) (point)))) + (push new-overlay apdl-hide-region-overlays) + (overlay-put new-overlay 'invisible t) + (overlay-put new-overlay 'intangible t) + (overlay-put new-overlay 'before-string + (if apdl-hide-region-propertize-markers + (propertize apdl-hide-region-before-string + 'font-lock-face 'region) + apdl-hide-region-before-string)) + (overlay-put new-overlay 'after-string + (if apdl-hide-region-propertize-markers + (propertize apdl-hide-region-after-string + 'font-lock-face 'region) + apdl-hide-region-after-string)))) + +(defun apdl-hide-number-blocks () + "Hide all number blocks (nblock, eblocks, cmblocks) in file. +These constructs appear in WorkBench created solver input files." + (interactive) + (let ((p-orig (point)) + p1 + p2 + lines) + (message "Hiding number blocks ...") + (goto-char (point-min)) + (while (re-search-forward "nblock\\|eblock\\|cmblock" nil t) + (setq p1 (point)) + (re-search-forward "^-1\\|^cmsel\\|^d" nil nil) + (setq p2 (point) + lines (count-lines p1 p2)) + (when (> lines 5) ; only hide blocks if larger then 5 lines + (goto-char p1) + (forward-line 3) ; show one line of numbers before markers + ;;(set-mark (point)) + (push-mark (point) t nil) ; no message, no activated mark + (goto-char p2) + (forward-line -2) ; show one line of numbers after markers + (end-of-line) + (apdl-hide-region))) + (goto-char p-orig))) + +(defun apdl-unhide-number-blocks () + "Unhide all hidden regions in the current buffer." + (interactive) + (while apdl-hide-region-overlays + (if (car apdl-hide-region-overlays) + (progn + (delete-overlay (car apdl-hide-region-overlays)) + (setq apdl-hide-region-overlays (cdr apdl-hide-region-overlays)))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- Abbreviations --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(unless apdl-mode-abbrev-table + (let ((ac abbrevs-changed)) ; inhibit offer to save .abbrev_defs + (define-abbrev-table 'apdl-mode-abbrev-table ()) + (define-abbrev apdl-mode-abbrev-table + "`1" "finish\n/clear\n!y\n" ) ; the first 1 one + (define-abbrev apdl-mode-abbrev-table + "`2" "*afun,deg\n" ) ; the 2nd one ;-) + (define-abbrev apdl-mode-abbrev-table + "`3" "sqrt(3)/2" ) ; the 3rd + (define-abbrev apdl-mode-abbrev-table "`s" "" 'apdl-skeleton-separator-line) + (define-abbrev apdl-mode-abbrev-table "`ss" "" 'apdl-skeleton-section-separator) + (define-abbrev apdl-mode-abbrev-table "`i" "" 'apdl_if) + (define-abbrev apdl-mode-abbrev-table "`d" "" 'apdl_do) + (define-abbrev apdl-mode-abbrev-table + "`p" "*dim,Dir,string,248 ! maximum of 248 characters!\nDir(1) = \ + '/HOME/uidg1626/development/report/ej/95ks91leg0/'\n\ +/syp,ls,Dir(1)\n") ; for path + (define-abbrev apdl-mode-abbrev-table "`p" "" 'apdl-insert-pi) + (define-abbrev apdl-mode-abbrev-table "`if" "" 'apdl-if) + (define-abbrev apdl-mode-abbrev-table "`ie" "" 'apdl-if-then) + (define-abbrev apdl-mode-abbrev-table "`do" "" 'apdl-do) + (define-abbrev apdl-mode-abbrev-table "`e" + "/eof ----------------------------------------\n" + (lambda () (indent-according-to-mode))) + (define-abbrev apdl-mode-abbrev-table + "`c" "!! ========================================\n" + (lambda () (indent-according-to-mode))) + (define-abbrev apdl-mode-abbrev-table "`t" "/title," + (lambda () (indent-according-to-mode))) + (setq abbrevs-changed ac))) ; reset `abbrevs-changed' to previous + ; state + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- Bug reporting --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +(defun apdl-submit-bug-report () ; from Octave + "Open an Emacs mail buffer with an APDL-Mode bug report." + (interactive) + (require 'reporter) + (let ((salutation)) + (when (y-or-n-p "Do you want to write a bug report? ") + (setq salutation + "Please describe briefly what your problem is and + which actions triggered the bug. A self contained, + reproducible test case would be advantageous.") + (reporter-submit-bug-report + apdl-maintainer-address + "APDL-Mode" ; becomes prefix for the subject line + (list + ;; constants + 'apdl-mode-version + 'apdl-mode-update + 'apdl-mode-install-directory + ;; 'apdl-ansys-version ; is in -ansys-install-directory included + ;; variables + 'apdl-initialised-flag + 'apdl-current-ansys-version + 'apdl-is-unix-system-flag + ;; defcustoms + 'apdl-parameter-help-duration + 'apdl-hide-region-before-string + 'apdl-hide-region-after-string + 'apdl-hide-region-propertize-markers + 'apdl-highlighting-level + 'apdl-dynamic-highlighting-flag + 'apdl-indicate-empty-lines-flag + 'apdl-comment-padding + 'apdl-comment-add + 'apdl-code-comment-column + 'apdl-auto-indent-flag + 'apdl-indent-comment-suffix + 'apdl-ruler-wide-flag + 'apdl-require-spaces-flag + 'apdl-blink-matching-block-flag + 'apdl-blink-matching-delay + 'apdl-block-offset + 'apdl-outline-string + 'apdl-mode-hook + 'apdl-align-rules-list + 'apdl-license-occur-regexp + 'apdl-job + 'apdl-license-categories + 'apdl-license + 'apdl-no-of-processors + 'apdl-blink-delay + 'apdl-blink-region-flag + 'apdl-username ; 20.4.0 + 'apdl-ansys-install-directory + 'apdl-ansys-program + 'apdl-ansys-launcher + 'apdl-ansys-wb + 'apdl-ansys-help-program + 'apdl-ansys-help-path + 'apdl-lmutil-program + 'apdl-license-file + 'apdl-ansysli-servers + 'apdl-wb-custom-template-directory ; 20.4.0 + ) + nil + nil + salutation)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- dynamic highlighting --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; ---- Restrictions ---- +;; Variables or 'parameters' in APDL parlance: +;; 1.) Begin with a letter +;; 2.) Contain only letters, numbers and the underscore '_' +;; 3.) Have no more than 32 characters +;; 4.) Any variable ending with an underscore are *not* shown +;; with the *STATUS command +;; 5.) The maximum number of parameter (< 5000) is retrieved by +;; *GET,par,PARM,,MAX +;; 6.) (A: Skip to variable definition.")) + +(defun apdl-display-variables (arg) + "Displays APDL variable assignments in the current buffer. +Together with the corresponding line number. These numbers are +links to the respective APDL buffer. Clicking with the middle +mouse button (button-2) on these numbers is skipping the cursor +to the corresponding line number. You can also use the key +and Shift to skip between the links and type to +activate the links. + +With a prefix argument ARG, the function evaluates the variable +at point. The result is shown in the command process buffer, if +an MAPDL process is running under Emacs (GNU-Linux only)." + (interactive "P") + (cond + (arg ; --- enquire value of variable + (unless (or (apdl-process-running-p) apdl-classics-flag) + (error "No MAPDL process running")) + (let* ( + (pt (point)) + (re "\s_[[:word:]]*") + (lbp (line-beginning-position)) + (str (buffer-substring-no-properties + (save-excursion (+ pt (skip-chars-backward re lbp))) + (save-excursion (+ pt (skip-chars-forward re)))))) + (if apdl-classics-flag + (progn + (kill-new (concat "*status," str "\n")) + (apdl-send-to-classics)) + (comint-send-string (get-process apdl-process-name) + (concat "*status," str "\n")) + (display-buffer (concat "*" apdl-process-name "*") + 'other-window)) + (message (concat "Enquiring status for variable: " str)))) + (t ; ---- display variable definitions + (apdl-find-user-variables) ; set apdl-user-variables + (let* ((current-buffer (buffer-name)) + (buffer-name "*APDL-variables*") + (variable-buffer (get-buffer-create buffer-name)) + str old-num com p1 p2 + (markr (make-marker)) + (num 0)) + ;;(set-buffer variable-buffer) + (with-current-buffer variable-buffer + (use-local-map button-buffer-map) + ;; make buffer writable + (read-only-mode -1) + (kill-region (point-min) (point-max)) + ;; insert header + (insert + (propertize + (concat "-*- APDL variables of " current-buffer + " click with mouse-2 -*-\n") + 'face 'match)) + (insert (propertize " Line | Definition\n" + ;; 'mouse-face 'highlight + 'face 'bold)) + ;; insert variable lines + (dolist (command apdl-user-variables) + (setq old-num num + num (cadr command) ; cadr same as nth 1 + com (apdl-copy-buffer-line current-buffer num) + markr (apdl-buffer-line-marker current-buffer num) + str (concat + (format "%5d " num) + (propertize "| " + ;;'mouse-face 'highlight + 'face 'bold) + com "\n")) + (unless (= num old-num) + (insert str) + (save-excursion + (forward-line -1) + (skip-chars-forward " ") + (setq p1 (point)) + (skip-chars-forward "[:digit:]") + (setq p2 (point))) + (make-text-button p1 p2 + 'type 'apdl-marker + 'action markr))) + (goto-char (point-min)) + ;; make buffer read-only + (read-only-mode 1)) + (set-buffer current-buffer) + (display-buffer buffer-name 'other-window))))) + +(defun apdl-customise-apdl () + "Call the GNU-Emacs customisation facility for APDL-Mode." + (interactive) + (customize-group "APDL")) + +(defun apdl-delete-other-window (&optional win) + "Delete the other, not selected Emacs window. +A window is in Emacs parlance a \"field\" where data is displayed +and possibly others in a window manager frame. The command +deletes only the window and not the buffer, i. e. not the data +itself. A frame can have many windows (and Emacs can also +control multiple frames, by the way), often the Emacs beginners +confuse the term window with an Emacs frame. Optional prefix +argument WIN is the WIN'th different window in the current frame. +The default argument is 1." + (interactive "p") + (unless win (setq win 1)) + (let ((swin (selected-window))) + (other-window win) + (delete-window) + (select-window swin))) + +(provide 'apdl-mode) + +;;; apdl-mode.el ends here + +;; Local Variables: +;; minor-mode: flycheck +;; indicate-empty-lines: t +;; show-trailing-whitespace: t +;; End: diff --git a/lisp/apdl-mode/apdl-mode.info b/lisp/apdl-mode/apdl-mode.info new file mode 100644 index 00000000..0b6c1cdb --- /dev/null +++ b/lisp/apdl-mode/apdl-mode.info @@ -0,0 +1,4803 @@ +This is apdl-mode.info, produced by makeinfo version 6.5 from +apdl-mode.texi. + + +File: apdl-mode.info, Node: Top, Next: Copyright and Copying, Up: (dir) + +The Manual of APDL-Mode +*********************** + +Version 20.7.0 Time-stamp: "2021-10-23" + +* Menu: + +* Copyright and Copying:: +* Foreword:: +* First Step with APDL-Mode:: +* Introductory Tutorial for Emacs Concepts:: +* APDL-Mode Usage:: +* Configuration and Customisation:: +* APDL Reference:: +* Installation and Development:: +* Bugs and Problems:: +* News:: +* Further Resources:: +* Todos:: +* Acknowledgements:: +* GNU Free Documentation License:: +* Variable Index:: +* Concept Index:: + +— The Detailed Node Listing — + +APDL-Mode Usage + +* Finding Help for APDL keywords:: +* Code Templates:: +* Editing Code:: +* Code Navigation, Outlining and Hiding: Code Navigation Outlining and Hiding. +* Variable Definitions:: +* Sophisticated Highlighting:: +* Process Management:: +* MAPDL Solver Control:: + + +Configuration and Customisation + +* Conventions:: +* Important Prerequisite:: +* File suffixes:: +* Auto insertion:: +* Miscellaneous:: +* Outlining: Outlining (1). +* Highlighting (Colourisation):: +* Installation dependent configurations:: +* Ansys processes:: + + +APDL Reference + +* WorkBench to APDL Translation:: +* APDL Reference: APDL Reference (1). +* APDL-Mode Syntax Highlighting Reference:: +* And the rest:: + + +Installation and Development + +* Melpa Installation:: +* Manual Installation:: +* Development and Source Code Installation:: + + +News + +* Version 20.7.0: Version 2070. +* Version 20.6.0, 15 years of APDL-Mode!: Version 2060 15 years of APDL-Mode!. +* Version 20.5.0: Version 2050. +* Version 20.4.0: Version 2040. +* Version 20.3.0: Version 2030. +* Version 20.2.0: Version 2020. +* Version 20.1.1: Version 2011. +* Version 20.1.0: Version 2010. +* Version 162-1:: +* Version 16.1.1: Version 1611. +* Version 15.0.1: Version 1501. +* Version 14.5.2: Version 1452. +* Version 14.5.1: Version 1451. +* Version 14.0.1: Version 1401. +* Version 13.0.1: Version 1301. +* Version 12.0.1: Version 1201. +* Version 11.0.2: Version 1102. +* ansys-mode.el 11.0.1: ansys-modeel 1101. + + +Further Resources + +* Ansys and APDL resources:: +* Emacs editor resources:: +* Other APDL editor resources:: + + +Todos + +* V 20.7.0: V 2070. +* Version 20.6.0: Version 2060. +* Version 20.5.0: Version 2050 (1). +* Version 20.4.0: Version 2040 (1). +* Version 20.3.0: Version 2030 (1). +* Version 20.2.0: Version 2020 (1). +* Version 20.1.1: Version 2011 (1). +* Version 162-2:: + + + + +File: apdl-mode.info, Node: Copyright and Copying, Next: Foreword, Prev: Top, Up: Top + +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, *note GNU Free Documentation +License::. + + +File: apdl-mode.info, Node: Foreword, Next: First Step with APDL-Mode, Prev: Copyright and Copying, Up: Top + +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. + + +File: apdl-mode.info, Node: First Step with APDL-Mode, Next: Introductory Tutorial for Emacs Concepts, Prev: Foreword, Up: Top + +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 *note 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). + + +File: apdl-mode.info, Node: Introductory Tutorial for Emacs Concepts, Next: APDL-Mode Usage, Prev: First Step with APDL-Mode, Up: Top + +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 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 key and the ‘x’ +key at the same time) you are able to access the, so called, +‘minibuffer’ below the status line. *note (emacs)Minibuffer:: 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 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 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 ). + + You can always cancel minibuffer and other commands by typing C-g +(the function ‘keyboard-quit’), i. e. pressing the 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 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 key, when +the cursor is on them (you can skip to these links with the 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’. *note (emacs)Top:: for the complete editor +documentation. + + +File: apdl-mode.info, Node: APDL-Mode Usage, Next: Configuration and Customisation, Prev: Introductory Tutorial for Emacs Concepts, Up: Top + +5 APDL-Mode Usage +***************** + +* Menu: + +* Finding Help for APDL keywords:: +* Code Templates:: +* Editing Code:: +* Code Navigation, Outlining and Hiding: Code Navigation Outlining and Hiding. +* Variable Definitions:: +* Sophisticated Highlighting:: +* Process Management:: +* MAPDL Solver Control:: + + +File: apdl-mode.info, Node: Finding Help for APDL keywords, Next: Code Templates, Up: 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. + +* Menu: + +* Brief Command Help with Argument Counter:: +* Browsing the APDL Keyword Documentation:: + + +File: apdl-mode.info, Node: Brief Command Help with Argument Counter, Next: Browsing the APDL Keyword Documentation, Up: Finding Help for APDL keywords + +5.1.1 Brief Command Help with Argument Counter +---------------------------------------------- + +Typing "M-?", the 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-?"). + + +File: apdl-mode.info, Node: Browsing the APDL Keyword Documentation, Prev: Brief Command Help with Argument Counter, Up: Finding Help for APDL keywords + +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 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 *note (eww)Top:: or other installed browsers. + + Please see Miscellaneous (apdl-config.org) on how to do this. Please +see section *note Configuration and Customisation:: on how to do this. + + +File: apdl-mode.info, Node: Code Templates, Next: Editing Code, Prev: Finding Help for APDL keywords, Up: APDL-Mode Usage + +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. + +* Menu: + +* Model Templates:: +* WorkBench Command Object Templates:: + + +File: apdl-mode.info, Node: Model Templates, Next: WorkBench Command Object Templates, Up: Code Templates + +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 to +complete all available skeleton names. + + Check e. g. ‘apdl-skeleton-outline-template’, type "M-x +apdl-skeleton-outline-template " to insert this skeleton of APDL +code with outline headings. Alternatively you can use the binding +" + u M-x apdl-skeleton-outline-template" for inserting templates +instead of previewing them. + + +File: apdl-mode.info, Node: WorkBench Command Object Templates, Prev: Model Templates, Up: Code Templates + +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. + + +File: apdl-mode.info, Node: Editing Code, Next: Code Navigation Outlining and Hiding, Prev: Code Templates, Up: APDL-Mode Usage + +5.3 Editing Code +================ + +* Menu: + +* Completions and Abbreviations:: +* Comment Handling:: +* Inserting Pairs:: +* Auto-indentation:: +* Closing of Control Blocks:: +* Code Alignment:: +* Auto-insertion:: + + +File: apdl-mode.info, Node: Completions and Abbreviations, Next: Comment Handling, Up: 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 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 + or clicking with the left (or middle) mouse button is completing +the symbol. Hitting the key removes the listing window. + + An example of an abbreviation is typing "‘do" (the backquote "‘" then +"do") and the space key triggers an interactive code template +which inserts a *DO loop (‘apdl-do’). Whereas typing "‘d" (and ) +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 ’ to inspect all definitions. + + Off course, in Emacs you can define your own abbreviations. *note +(emacs)Abbrev Concepts::. 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-/‘. + + +File: apdl-mode.info, Node: Comment Handling, Next: Inserting Pairs, Prev: Completions and Abbreviations, Up: Editing Code + +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. + + +File: apdl-mode.info, Node: Inserting Pairs, Next: Auto-indentation, Prev: Comment Handling, Up: Editing Code + +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. + + +File: apdl-mode.info, Node: Auto-indentation, Next: Closing of Control Blocks, Prev: Inserting Pairs, Up: Editing Code + +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. + + +File: apdl-mode.info, Node: Closing of Control Blocks, Next: Code Alignment, Prev: Auto-indentation, Up: Editing Code + +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. + + +File: apdl-mode.info, Node: Code Alignment, Next: Auto-insertion, Prev: Closing of Control Blocks, Up: Editing Code + +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 + + +File: apdl-mode.info, Node: Auto-insertion, Prev: Code Alignment, Up: Editing Code + +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’. + + +File: apdl-mode.info, Node: Code Navigation Outlining and Hiding, Next: Variable Definitions, Prev: Editing Code, Up: APDL-Mode Usage + +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). + +* Menu: + +* Hiding Number Blocks:: +* Outlining:: + + +File: apdl-mode.info, Node: Hiding Number Blocks, Next: Outlining, Up: Code Navigation Outlining and Hiding + +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. + + +File: apdl-mode.info, Node: Outlining, Prev: Hiding Number Blocks, Up: Code Navigation Outlining and Hiding + +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 + + • and cycle outline states - all outline headings and on a header + line the respective header with the 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 " +or use the customisation system from the menu: ->APDL ->Customise APDL +Mode. + + +File: apdl-mode.info, Node: Variable Definitions, Next: Sophisticated Highlighting, Prev: Code Navigation Outlining and Hiding, Up: APDL-Mode Usage + +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 key and Shift to skip between the links and type +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 *note MAPDL Solver +Control::). + + +File: apdl-mode.info, Node: Sophisticated Highlighting, Next: Process Management, Prev: Variable Definitions, Up: APDL-Mode Usage + +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). + + +File: apdl-mode.info, Node: Process Management, Next: MAPDL Solver Control, Prev: Sophisticated Highlighting, Up: APDL-Mode Usage + +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’). *note (elisp)Regular Expressions:: + 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 ( + 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. + + +File: apdl-mode.info, Node: MAPDL Solver Control, Prev: Process Management, Up: APDL-Mode Usage + +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". + + +File: apdl-mode.info, Node: Configuration and Customisation, Next: APDL Reference, Prev: APDL-Mode Usage, Up: Top + +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 *note (emacs)Easy Customization:: or 2. +by directly manipulating the Emacs configuration file *note (emacs)Init +File::. + + 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 ‘;’). + +* Menu: + +* Conventions:: +* Important Prerequisite:: +* File suffixes:: +* Auto insertion:: +* Miscellaneous:: +* Outlining: Outlining (1). +* Highlighting (Colourisation):: +* Installation dependent configurations:: +* Ansys processes:: + + +File: apdl-mode.info, Node: Conventions, Next: Important Prerequisite, Up: Configuration and Customisation + +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. + + +File: apdl-mode.info, Node: Important Prerequisite, Next: File suffixes, Prev: Conventions, Up: Configuration and Customisation + +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 *note Installation dependent +configurations::. + + +File: apdl-mode.info, Node: File suffixes, Next: Auto insertion, Prev: Important Prerequisite, Up: Configuration and Customisation + +6.3 File suffixes +================= + +For auto loading APDL-Mode please customise your file suffixes for which +Ansys mode is automatically called for. + +* Menu: + +* Macro files:: +* WorkBench generated input files:: +* The Ansys Neutral file format:: + + +File: apdl-mode.info, Node: Macro files, Next: WorkBench generated input files, Up: File suffixes + +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. + + +File: apdl-mode.info, Node: WorkBench generated input files, Next: The Ansys Neutral file format, Prev: Macro files, Up: File suffixes + +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. + + +File: apdl-mode.info, Node: The Ansys Neutral file format, Prev: WorkBench generated input files, Up: File suffixes + +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)) + + +File: apdl-mode.info, Node: Auto insertion, Next: Miscellaneous, Prev: File suffixes, Up: Configuration and Customisation + +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 + + + +File: apdl-mode.info, Node: Miscellaneous, Next: Outlining (1), Prev: Auto insertion, Up: Configuration and Customisation + +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 + + +File: apdl-mode.info, Node: Outlining (1), Next: Highlighting (Colourisation), Prev: Miscellaneous, Up: Configuration and Customisation + +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 + + + +File: apdl-mode.info, Node: Highlighting (Colourisation), Next: Installation dependent configurations, Prev: Outlining (1), Up: Configuration and Customisation + +6.7 Highlighting (Colourisation) +================================ + +* Menu: + +* Dynamic highlighting:: +* Decoration levels:: +* Summary:: + + +File: apdl-mode.info, Node: Dynamic highlighting, Next: Decoration levels, Up: 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 + + +File: apdl-mode.info, Node: Decoration levels, Next: Summary, Prev: Dynamic highlighting, Up: Highlighting (Colourisation) + +6.7.2 Decoration levels +----------------------- + +Highlighting decoration levels 0, 1 and 2 are available. The APDL-Mode +default is level 2. + + +File: apdl-mode.info, Node: Summary, Prev: Decoration levels, Up: Highlighting (Colourisation) + +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 + + + +File: apdl-mode.info, Node: Installation dependent configurations, Next: Ansys processes, Prev: Highlighting (Colourisation), Up: Configuration and Customisation + +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") + + + +File: apdl-mode.info, Node: Ansys processes, Prev: Installation dependent configurations, Up: Configuration and Customisation + +6.9 Ansys processes +=================== + +* Menu: + +* License server:: +* Solver options:: +* Summary: Summary (1). + + +File: apdl-mode.info, Node: License server, Next: Solver options, Up: 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") + + +File: apdl-mode.info, Node: Solver options, Next: Summary (1), Prev: License server, Up: Ansys processes + +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" + + +File: apdl-mode.info, Node: Summary (1), Prev: Solver options, Up: Ansys processes + +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: + + +File: apdl-mode.info, Node: APDL Reference, Next: Installation and Development, Prev: Configuration and Customisation, Up: Top + +7 APDL Reference +**************** + +* Menu: + +* WorkBench to APDL Translation:: +* APDL Reference: APDL Reference (1). +* APDL-Mode Syntax Highlighting Reference:: +* And the rest:: + + +File: apdl-mode.info, Node: WorkBench to APDL Translation, Next: APDL Reference (1), Up: APDL Reference + +7.1 WorkBench to APDL Translation +================================= + +* Menu: + +* Contacts:: +* Material Models:: +* Boundary conditions:: + + +File: apdl-mode.info, Node: Contacts, Next: Material Models, Up: WorkBench to APDL Translation + +7.1.1 Contacts +-------------- + +* Menu: + +* default 3D thermal contact:: + + +File: apdl-mode.info, Node: default 3D thermal contact, Up: 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 + + +File: apdl-mode.info, Node: Material Models, Next: Boundary conditions, Prev: Contacts, Up: WorkBench to APDL Translation + +7.1.2 Material Models +--------------------- + +* Menu: + +* Plasticity:: + + +File: apdl-mode.info, Node: Plasticity, Up: 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! + + +File: apdl-mode.info, Node: Boundary conditions, Prev: Material Models, Up: WorkBench to APDL Translation + +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. + ... + + +File: apdl-mode.info, Node: APDL Reference (1), Next: APDL-Mode Syntax Highlighting Reference, Prev: WorkBench to APDL Translation, Up: APDL Reference + +7.2 APDL Reference +================== + +* Menu: + +* Idiosyncrasies:: +* File types:: +* Defining parameters:: +* Erasing variables from memory:: +* Variable substitution:: +* Expressions:: +* Arrays:: +* debugging:: +* Multiple runs, probabilistic design: Multiple runs probabilistic design. +* Undocumented commands:: + + +File: apdl-mode.info, Node: Idiosyncrasies, Next: File types, Up: APDL Reference (1) + +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 + + +File: apdl-mode.info, Node: File types, Next: Defining parameters, Prev: Idiosyncrasies, Up: APDL Reference (1) + +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 + + +File: apdl-mode.info, Node: Defining parameters, Next: Erasing variables from memory, Prev: File types, Up: APDL Reference (1) + +7.2.3 Defining parameters +------------------------- + +up to 5000 + +* Menu: + +* Double, char38, char8, logical, TODO: Double char38 char8 logical TODO. +* Variable names:: +* Character strings:: + + +File: apdl-mode.info, Node: Double char38 char8 logical TODO, Next: Variable names, Up: Defining parameters + +7.2.3.1 Double, char38, char8, logical, TODO +............................................ + +in table only 8 chars? + + +File: apdl-mode.info, Node: Variable names, Next: Character strings, Prev: Double char38 char8 logical TODO, Up: Defining parameters + +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 + + +File: apdl-mode.info, Node: Character strings, Prev: Variable names, Up: Defining parameters + +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' + + +File: apdl-mode.info, Node: Erasing variables from memory, Next: Variable substitution, Prev: Defining parameters, Up: APDL Reference (1) + +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: + + +File: apdl-mode.info, Node: Variable substitution, Next: Expressions, Prev: Erasing variables from memory, Up: APDL Reference (1) + +7.2.5 Variable substitution +--------------------------- + +with ‘%’ + +* Menu: + +* Substitution of Numeric Variables:: +* Substitution of Character Variables:: +* Dynamic Substitution of Numeric or Character Variables:: + + +File: apdl-mode.info, Node: Substitution of Numeric Variables, Next: Substitution of Character Variables, Up: Variable substitution + +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 + + +File: apdl-mode.info, Node: Substitution of Character Variables, Next: Dynamic Substitution of Numeric or Character Variables, Prev: Substitution of Numeric Variables, Up: Variable substitution + +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 + + +File: apdl-mode.info, Node: Dynamic Substitution of Numeric or Character Variables, Prev: Substitution of Character Variables, Up: Variable substitution + +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 + + +File: apdl-mode.info, Node: Expressions, Next: Arrays, Prev: Variable substitution, Up: APDL Reference (1) + +7.2.6 Expressions +----------------- + +* Menu: + +* Exponentiation Operator:: +* Multiplication Expression:: +* Operators:: + + +File: apdl-mode.info, Node: Exponentiation Operator, Next: Multiplication Expression, Up: Expressions + +7.2.6.1 Exponentiation Operator +............................... + +is ‘**’ + + +File: apdl-mode.info, Node: Multiplication Expression, Next: Operators, Prev: Exponentiation Operator, Up: Expressions + +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 + !! + + +File: apdl-mode.info, Node: Operators, Prev: Multiplication Expression, Up: Expressions + +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 + + +File: apdl-mode.info, Node: Arrays, Next: debugging, Prev: Expressions, Up: APDL Reference (1) + +7.2.7 Arrays +------------ + +4 types: array, char of 8 characters, table and string 128 chars + +* Menu: + +* Specifiying array element values:: +* APDL Math:: + + +File: apdl-mode.info, Node: Specifiying array element values, Next: APDL Math, Up: Arrays + +7.2.7.1 Specifiying array element values +........................................ + + +File: apdl-mode.info, Node: APDL Math, Prev: Specifiying array element values, Up: Arrays + +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 + + +File: apdl-mode.info, Node: debugging, Next: Multiple runs probabilistic design, Prev: Arrays, Up: APDL Reference (1) + +7.2.8 debugging +--------------- + + debug !TODO: undocumented? + + +File: apdl-mode.info, Node: Multiple runs probabilistic design, Next: Undocumented commands, Prev: debugging, Up: APDL Reference (1) + +7.2.9 Multiple runs, probabilistic design +----------------------------------------- + + PDEXE, Slab, MRUN, NFAIL, FOPT, Fname + in V11: *mrun !TODO: + + +File: apdl-mode.info, Node: Undocumented commands, Prev: Multiple runs probabilistic design, Up: APDL Reference (1) + +7.2.10 Undocumented commands +---------------------------- + + !undocumented commands are highlighted differently + /xml !undocumented command /xml + /xfrm !documented command /xfrm + + +File: apdl-mode.info, Node: APDL-Mode Syntax Highlighting Reference, Next: And the rest, Prev: APDL Reference (1), Up: APDL Reference + +7.3 APDL-Mode Syntax Highlighting Reference +=========================================== + +* Menu: + +* Header:: +* Highlighting APDL specials:: +* Implied (or colon) looping:: + + +File: apdl-mode.info, Node: Header, Next: Highlighting APDL specials, Up: 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 + + +File: apdl-mode.info, Node: Highlighting APDL specials, Next: Implied (or colon) looping, Prev: Header, Up: APDL-Mode Syntax Highlighting Reference + +7.3.2 Highlighting APDL specials +-------------------------------- + +* Menu: + +* Reserved words and _RETURN statements:: +* _RETURN values of macros:: +* Old style APDL comments:: +* Ignored characters behind commands:: +* The End Of File command:: +* Ignored characters behind commands: Ignored characters behind commands (1). +* The End Of File command: The End Of File command (1). +* Current element types and deprecated elements:: + + +File: apdl-mode.info, Node: Reserved words and _RETURN statements, Next: _RETURN values of macros, Up: 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 + + +File: apdl-mode.info, Node: _RETURN values of macros, Next: Old style APDL comments, Prev: Reserved words and _RETURN statements, Up: Highlighting APDL specials + +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 + + +File: apdl-mode.info, Node: Old style APDL comments, Next: Ignored characters behind commands, Prev: _RETURN values of macros, Up: Highlighting APDL specials + +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! + !! + + +File: apdl-mode.info, Node: Ignored characters behind commands, Next: The End Of File command, Prev: Old style APDL comments, Up: Highlighting APDL specials + +7.3.2.4 Ignored characters behind commands +.......................................... + + f $ fi $ fin $ fini $ finis $ finish $ finisher + !! + + +File: apdl-mode.info, Node: The End Of File command, Next: Ignored characters behind commands (1), Prev: Ignored characters behind commands, Up: Highlighting APDL specials + +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) + + +File: apdl-mode.info, Node: Ignored characters behind commands (1), Next: The End Of File command (1), Prev: The End Of File command, Up: Highlighting APDL specials + +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 + !! + + +File: apdl-mode.info, Node: The End Of File command (1), Next: Current element types and deprecated elements, Prev: Ignored characters behind commands (1), Up: Highlighting APDL specials + +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 + !! + + +File: apdl-mode.info, Node: Current element types and deprecated elements, Prev: The End Of File command (1), Up: Highlighting APDL specials + +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 + + +File: apdl-mode.info, Node: Implied (or colon) looping, Prev: Highlighting APDL specials, Up: APDL-Mode Syntax Highlighting Reference + +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) + + +File: apdl-mode.info, Node: And the rest, Prev: APDL-Mode Syntax Highlighting Reference, Up: APDL Reference + +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 + + +File: apdl-mode.info, Node: Installation and Development, Next: Bugs and Problems, Prev: APDL Reference, Up: Top + +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. + +* Menu: + +* Melpa Installation:: +* Manual Installation:: +* Development and Source Code Installation:: + + +File: apdl-mode.info, Node: Melpa Installation, Next: Manual Installation, Up: Installation and Development + +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 . + + (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) + + +File: apdl-mode.info, Node: Manual Installation, Next: Development and Source Code Installation, Prev: Melpa Installation, Up: Installation and Development + +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 ’ 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) ’ (it’s an ’ALT + :’ colon!) and then apply +‘M-x package-install-file ’ again. + + +File: apdl-mode.info, Node: Development and Source Code Installation, Prev: Manual Installation, Up: Installation and Development + +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). + + +File: apdl-mode.info, Node: Bugs and Problems, Next: News, Prev: Installation and Development, Up: Top + +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 + . 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). + + +File: apdl-mode.info, Node: News, Next: Further Resources, Prev: Bugs and Problems, Up: Top + +10 News +******* + +Copyright (C) 2006 - 2021 H. Dieter Wilhelm, GPL V3 + +* Menu: + +* Version 20.7.0: Version 2070. +* Version 20.6.0, 15 years of APDL-Mode!: Version 2060 15 years of APDL-Mode!. +* Version 20.5.0: Version 2050. +* Version 20.4.0: Version 2040. +* Version 20.3.0: Version 2030. +* Version 20.2.0: Version 2020. +* Version 20.1.1: Version 2011. +* Version 20.1.0: Version 2010. +* Version 162-1:: +* Version 16.1.1: Version 1611. +* Version 15.0.1: Version 1501. +* Version 14.5.2: Version 1452. +* Version 14.5.1: Version 1451. +* Version 14.0.1: Version 1401. +* Version 13.0.1: Version 1301. +* Version 12.0.1: Version 1201. +* Version 11.0.2: Version 1102. +* ansys-mode.el 11.0.1: ansys-modeel 1101. + + +File: apdl-mode.info, Node: Version 2070, Next: Version 2060 15 years of APDL-Mode!, Up: News + +10.1 Version 20.7.0 +=================== + + • new APDL menu entry: Browse the Customer Portal of Ansys + + +File: apdl-mode.info, Node: Version 2060 15 years of APDL-Mode!, Next: Version 2050, Prev: Version 2070, Up: News + +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 + + (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’) + + +File: apdl-mode.info, Node: Version 2050, Next: Version 2040, Prev: Version 2060 15 years of APDL-Mode!, Up: News + +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. + + +File: apdl-mode.info, Node: Version 2040, Next: Version 2030, Prev: Version 2050, Up: News + +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 + + +File: apdl-mode.info, Node: Version 2030, Next: Version 2020, Prev: Version 2040, Up: News + +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 + + +File: apdl-mode.info, Node: Version 2020, Next: Version 2011, Prev: Version 2030, Up: News + +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. + + +File: apdl-mode.info, Node: Version 2011, Next: Version 2010, Prev: Version 2020, Up: News + +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" + + +File: apdl-mode.info, Node: Version 2010, Next: Version 162-1, Prev: Version 2011, Up: News + +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 + + +File: apdl-mode.info, Node: Version 162-1, Next: Version 1611, Prev: Version 2010, Up: News + +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 + + +File: apdl-mode.info, Node: Version 1611, Next: Version 1501, Prev: Version 162-1, Up: News + +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 + + +File: apdl-mode.info, Node: Version 1501, Next: Version 1452, Prev: Version 1611, Up: News + +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. + + +File: apdl-mode.info, Node: Version 1452, Next: Version 1451, Prev: Version 1501, Up: News + +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 + + +File: apdl-mode.info, Node: Version 1451, Next: Version 1401, Prev: Version 1452, Up: News + +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 + [ strategy] for + 2013. + • Described a poor man’s round() workaround in + ansys-template-function under the nint() entry + + +File: apdl-mode.info, Node: Version 1401, Next: Version 1301, Prev: Version 1451, Up: News + +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). + + +File: apdl-mode.info, Node: Version 1301, Next: Version 1201, Prev: Version 1401, Up: News + +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. + + +File: apdl-mode.info, Node: Version 1201, Next: Version 1102, Prev: Version 1301, Up: News + +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 + + +File: apdl-mode.info, Node: Version 1102, Next: ansys-modeel 1101, Prev: Version 1201, Up: News + +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). + + +File: apdl-mode.info, Node: ansys-modeel 1101, Prev: Version 1102, Up: News + +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: " *" ( 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. + + +File: apdl-mode.info, Node: Further Resources, Next: Todos, Prev: News, Up: Top + +11 Further Resources +******************** + +* Menu: + +* Ansys and APDL resources:: +* Emacs editor resources:: +* Other APDL editor resources:: + + +File: apdl-mode.info, Node: Ansys and APDL resources, Next: Emacs editor resources, Up: 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 + + +File: apdl-mode.info, Node: Emacs editor resources, Next: Other APDL editor resources, Prev: Ansys and APDL resources, Up: Further Resources + +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 mailing list + + +File: apdl-mode.info, Node: Other APDL editor resources, Prev: Emacs editor resources, Up: Further Resources + +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 + + +File: apdl-mode.info, Node: Todos, Next: Acknowledgements, Prev: Further Resources, Up: Top + +12 Todos +******** + +* Menu: + +* V 20.7.0: V 2070. +* Version 20.6.0: Version 2060. +* Version 20.5.0: Version 2050 (1). +* Version 20.4.0: Version 2040 (1). +* Version 20.3.0: Version 2030 (1). +* Version 20.2.0: Version 2020 (1). +* Version 20.1.1: Version 2011 (1). +* Version 162-2:: + + +File: apdl-mode.info, Node: V 2070, Next: Version 2060, Up: Todos + +12.1 V 20.7.0 +============= + +* Menu: + +* Bug:: +* Issue:: +* Wish:: + + +File: apdl-mode.info, Node: Bug, Next: Issue, Up: V 2070 + +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? + + +File: apdl-mode.info, Node: Issue, Next: Wish, Prev: Bug, Up: V 2070 + +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! + + +File: apdl-mode.info, Node: Wish, Prev: Issue, Up: V 2070 + +12.1.3 Wish +----------- + + • check apdl-font-lock-keywords-3 + • asynchronous licensing status + • DONE in dev: Look into derived branch: prog-modes + + +File: apdl-mode.info, Node: Version 2060, Next: Version 2050 (1), Prev: V 2070, Up: Todos + +12.2 *TODO* Version 20.6.0 +========================== + + • Branch 20.6.0 _[2021-10-01 Fr]_ + • Feature freeze: Only bugs or template changes + +* Menu: + +* Todos, bugs: Todos bugs. +* Issues:: +* Checks:: +* Wishes:: +* Done:: +* Push and Release Proceedures:: + + +File: apdl-mode.info, Node: Todos bugs, Next: Issues, Up: Version 2060 + +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 + + +File: apdl-mode.info, Node: Issues, Next: Checks, Prev: Todos bugs, Up: Version 2060 + +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 + + +File: apdl-mode.info, Node: Checks, Next: Wishes, Prev: Issues, Up: Version 2060 + +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) + + +File: apdl-mode.info, Node: Wishes, Next: Done, Prev: Checks, Up: Version 2060 + +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 + +* Menu: + +* Docu:: +* templates:: +* misc:: + + +File: apdl-mode.info, Node: Docu, Next: templates, Up: Wishes + +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! + + +File: apdl-mode.info, Node: templates, Next: misc, Prev: Docu, Up: Wishes + +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? + + +File: apdl-mode.info, Node: misc, Prev: templates, Up: Wishes + +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. + 6. Start optionally runbWB2 –aim, Discovery AIM + + +File: apdl-mode.info, Node: Done, Next: Push and Release Proceedures, Prev: Wishes, Up: Version 2060 + +12.2.5 Done +----------- + + • Make text around #+texinfo: lines self sustained! + • -mode-version working with autoload cookie: works + • include -mode-version in autoload list + + +File: apdl-mode.info, Node: Push and Release Proceedures, Prev: Done, Up: Version 2060 + +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:") + + +File: apdl-mode.info, Node: Version 2050 (1), Next: Version 2040 (1), Prev: Version 2060, Up: Todos + +12.3 *DONE* Version 20.5.0 +========================== + +_[2020-05-01 Fr]_ help for all get- and parametric-functions + + +File: apdl-mode.info, Node: Version 2040 (1), Next: Version 2030 (1), Prev: Version 2050 (1), Up: Todos + +12.4 *DONE* Version 20.4.0 +========================== + +_[2020-04-01 Mi]_ updated to 2020R1 + + +File: apdl-mode.info, Node: Version 2030 (1), Next: Version 2020 (1), Prev: Version 2040 (1), Up: Todos + +12.5 *DONE* Version 20.3.0 +========================== + +_[2020-03-24 Di]_ Melpa feature freeze _[2020-03-20 Fr]_ + + +File: apdl-mode.info, Node: Version 2020 (1), Next: Version 2011 (1), Prev: Version 2030 (1), Up: Todos + +12.6 *DONE* Version 20.2.0 +========================== + +_[2020-03-10 Di]_ + + +File: apdl-mode.info, Node: Version 2011 (1), Next: Version 162-2, Prev: Version 2020 (1), Up: Todos + +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 + + +File: apdl-mode.info, Node: Version 162-2, Prev: Version 2011 (1), Up: Todos + +12.8 Version 162-2 +================== + +* Menu: + +* Bugs:: +* Wish-list:: +* Freeze:: +* Deficiencies:: Deficiencies. +* Procedures:: +* Freeze proceedures:: +* Release:: +* Ideas for further versions:: + + +File: apdl-mode.info, Node: Bugs, Next: Wish-list, Up: 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) + + +File: apdl-mode.info, Node: Wish-list, Next: Freeze, Prev: Bugs, Up: Version 162-2 + +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 + + + + • 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 + + +File: apdl-mode.info, Node: Freeze, Next: Deficiencies, Prev: Wish-list, Up: Version 162-2 + +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 + + +File: apdl-mode.info, Node: Deficiencies, Next: Procedures, Prev: Freeze, Up: Version 162-2 + +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 + + +File: apdl-mode.info, Node: Procedures, Next: Freeze proceedures, Prev: Deficiencies, Up: Version 162-2 + +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! + + +File: apdl-mode.info, Node: Freeze proceedures, Next: Release, Prev: Procedures, Up: Version 162-2 + +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 \\ & \\[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)? + + +File: apdl-mode.info, Node: Release, Next: Ideas for further versions, Prev: Freeze proceedures, Up: Version 162-2 + +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 + + + + Where you will find the latest development version. + + Stable versions and prebuild packages are on the releases page: + + + + Dieter + + +File: apdl-mode.info, Node: Ideas for further versions, Prev: Release, Up: Version 162-2 + +12.8.8 Ideas for further versions +--------------------------------- + +* Menu: + +* Parameter help and documentation:: +* Ansys process and interpreter buffer:: +* Skeletons, outline and abbrevs: Skeletons outline and abbrevs. +* Miscellaneous: Miscellaneous (1). +* Ansys syntax restrictions not (yet) accounted for:: +* Unknown Ansys stuff:: + + +File: apdl-mode.info, Node: Parameter help and documentation, Next: Ansys process and interpreter buffer, Up: 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 button additionally to + 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. + + +File: apdl-mode.info, Node: Ansys process and interpreter buffer, Next: Skeletons outline and abbrevs, Prev: Parameter help and documentation, Up: Ideas for further versions + +12.8.8.2 Ansys process and interpreter buffer +............................................. + +example: gnuplot-mode + • call to start the Ansys solution results tracker for .nlh (xml see + , contact forces) and convergence .gst (binary?, coded? + ) + • implement something like for .cnd files (xml see + ) 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 + + +File: apdl-mode.info, Node: Skeletons outline and abbrevs, Next: Miscellaneous (1), Prev: Ansys process and interpreter buffer, Up: Ideas for further versions + +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? + + +File: apdl-mode.info, Node: Miscellaneous (1), Next: Ansys syntax restrictions not (yet) accounted for, Prev: Skeletons outline and abbrevs, Up: Ideas for further versions + +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). + + +File: apdl-mode.info, Node: Ansys syntax restrictions not (yet) accounted for, Next: Unknown Ansys stuff, Prev: Miscellaneous (1), Up: Ideas for further versions + +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 + + +File: apdl-mode.info, Node: Unknown Ansys stuff, Prev: Ansys syntax restrictions not (yet) accounted for, Up: Ideas for further versions + +12.8.8.6 Unknown Ansys stuff +............................ + + • what the heck is the *UILIST command? + • Is hyper56 a valid element? + + +File: apdl-mode.info, Node: Acknowledgements, Next: GNU Free Documentation License, Prev: Todos, Up: Top + +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 + and John Eaton . + + 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! + + +File: apdl-mode.info, Node: GNU Free Documentation License, Next: Variable Index, Prev: Acknowledgements, Up: Top + +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. + + 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. + + +File: apdl-mode.info, Node: Variable Index, Next: Concept Index, Prev: GNU Free Documentation License, Up: Top + +B Variable Index +**************** + + +File: apdl-mode.info, Node: Concept Index, Prev: Variable Index, Up: Top + +C Concept Index +*************** + +[index] +* Menu: + +* Configuration: Configuration and Customisation. + (line 6) +* Configure APDL-Mode: Configuration and Customisation. + (line 6) +* Customisation: Configuration and Customisation. + (line 6) +* Customise APDL-Mode: Configuration and Customisation. + (line 6) + +Emacs 27.1 (Org mode 9.3) + + +Tag Table: +Node: Top79 +Node: Copyright and Copying2471 +Node: Foreword3024 +Node: First Step with APDL-Mode5091 +Node: Introductory Tutorial for Emacs Concepts5949 +Node: APDL-Mode Usage8502 +Node: Finding Help for APDL keywords8950 +Node: Brief Command Help with Argument Counter9531 +Node: Browsing the APDL Keyword Documentation10487 +Node: Code Templates12319 +Node: Model Templates12919 +Node: WorkBench Command Object Templates13555 +Node: Editing Code13952 +Node: Completions and Abbreviations14296 +Node: Comment Handling16611 +Node: Inserting Pairs17788 +Node: Auto-indentation18568 +Node: Closing of Control Blocks19048 +Node: Code Alignment19458 +Node: Auto-insertion19998 +Node: Code Navigation Outlining and Hiding20579 +Node: Hiding Number Blocks22487 +Node: Outlining22959 +Node: Variable Definitions24334 +Node: Sophisticated Highlighting25498 +Node: Process Management29212 +Node: MAPDL Solver Control33439 +Node: Configuration and Customisation37716 +Node: Conventions40026 +Node: Important Prerequisite40594 +Node: File suffixes42135 +Node: Macro files42520 +Node: WorkBench generated input files43138 +Node: The Ansys Neutral file format43561 +Node: Auto insertion45223 +Node: Miscellaneous46226 +Node: Outlining (1)48420 +Node: Highlighting (Colourisation)49039 +Node: Dynamic highlighting49342 +Node: Decoration levels49911 +Node: Summary50183 +Node: Installation dependent configurations51181 +Node: Ansys processes52942 +Node: License server53187 +Node: Solver options54253 +Node: Summary (1)54697 +Node: APDL Reference56867 +Node: WorkBench to APDL Translation57179 +Node: Contacts57425 +Node: default 3D thermal contact57598 +Node: Material Models59443 +Node: Plasticity59642 +Node: Boundary conditions59945 +Node: APDL Reference (1)65507 +Node: Idiosyncrasies65974 +Node: File types68389 +Node: Defining parameters83471 +Node: Double char38 char8 logical TODO83795 +Node: Variable names84024 +Node: Character strings88312 +Node: Erasing variables from memory88664 +Node: Variable substitution89350 +Node: Substitution of Numeric Variables89705 +Node: Substitution of Character Variables90333 +Node: Dynamic Substitution of Numeric or Character Variables91688 +Node: Expressions92281 +Node: Exponentiation Operator92514 +Node: Multiplication Expression92700 +Node: Operators93139 +Node: Arrays93442 +Node: Specifiying array element values93698 +Node: APDL Math93877 +Node: debugging94390 +Node: Multiple runs probabilistic design94600 +Node: Undocumented commands94914 +Node: APDL-Mode Syntax Highlighting Reference95267 +Node: Header95580 +Node: Highlighting APDL specials97864 +Node: Reserved words and _RETURN statements98446 +Node: _RETURN values of macros98817 +Node: Old style APDL comments99301 +Node: Ignored characters behind commands99718 +Node: The End Of File command100032 +Node: Ignored characters behind commands (1)100476 +Node: The End Of File command (1)100904 +Node: Current element types and deprecated elements101388 +Node: Implied (or colon) looping102182 +Node: And the rest103423 +Node: Installation and Development107158 +Node: Melpa Installation107841 +Node: Manual Installation109025 +Node: Development and Source Code Installation110132 +Node: Bugs and Problems110691 +Node: News111813 +Node: Version 2070112613 +Node: Version 2060 15 years of APDL-Mode!112819 +Node: Version 2050113969 +Node: Version 2040114738 +Node: Version 2030115448 +Node: Version 2020116171 +Node: Version 2011117024 +Node: Version 2010117363 +Node: Version 162-1117908 +Node: Version 1611119428 +Node: Version 1501121057 +Node: Version 1452121888 +Node: Version 1451123289 +Node: Version 1401126440 +Node: Version 1301127895 +Node: Version 1201128810 +Node: Version 1102131177 +Node: ansys-modeel 1101131735 +Node: Further Resources134859 +Node: Ansys and APDL resources135087 +Node: Emacs editor resources136083 +Node: Other APDL editor resources136649 +Node: Todos137563 +Node: V 2070137941 +Node: Bug138079 +Node: Issue138649 +Node: Wish139102 +Node: Version 2060139325 +Node: Todos bugs139682 +Node: Issues140393 +Node: Checks141298 +Node: Wishes141614 +Node: Docu142098 +Node: templates144162 +Node: misc144733 +Node: Done145099 +Node: Push and Release Proceedures145393 +Node: Version 2050 (1)146759 +Node: Version 2040 (1)146983 +Node: Version 2030 (1)147186 +Node: Version 2020 (1)147410 +Node: Version 2011 (1)147595 +Node: Version 162-2148071 +Node: Bugs148349 +Node: Wish-list149257 +Node: Freeze154591 +Node: Deficiencies154956 +Node: Procedures156610 +Node: Freeze proceedures157132 +Node: Release158703 +Node: Ideas for further versions159306 +Node: Parameter help and documentation159737 +Node: Ansys process and interpreter buffer162039 +Node: Skeletons outline and abbrevs164902 +Node: Miscellaneous (1)166636 +Node: Ansys syntax restrictions not (yet) accounted for171628 +Node: Unknown Ansys stuff172533 +Node: Acknowledgements172816 +Node: GNU Free Documentation License173463 +Node: Variable Index198489 +Node: Concept Index198642 + +End Tag Table + + +Local Variables: +coding: utf-8 +End: diff --git a/lisp/apdl-mode/apdl-process.el b/lisp/apdl-mode/apdl-process.el new file mode 100644 index 00000000..2d773785 --- /dev/null +++ b/lisp/apdl-mode/apdl-process.el @@ -0,0 +1,2340 @@ +;;; apdl-process.el --- Managing runs and processes for APDL-Mode -*- lexical-binding: t -*- +;; Time-stamp: <2025-05-05> + +;; Copyright (C) 2006 - 2021 H. Dieter Wilhelm GPL V3 + +;; Author: H. Dieter Wilhelm +;; Maintainer: H. Dieter Wilhelm +;; Package-Requires: ((emacs "25.1")) +;; Keywords: languages, convenience +;; URL: https://github.com/dieter-wilhelm/apdl-mode + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; This code is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; This lisp script is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +;; +;; Permission is granted to distribute copies of this lisp script +;; provided the copyright notice and this permission are preserved in +;; all copies. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, you can either send email to this +;; program's maintainer or write to: The Free Software Foundation, +;; Inc.; 675 Massachusetts Avenue; Cambridge, MA 02139, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Commentary: + +;; Managing runs and processes for APDL-Mode + +;; Ansys MAPDL error codes: +;; Code Explanation +;; 0 Normal Exit +;; 1 Stack Error +;; 2 Stack Error +;; 3 Stack Error +;; 4 Stack Error +;; 5 Command Line Argument Error +;; 6 Accounting File Error +;; 7 Auth File Verification Error +;; 8 Error in Mechanical APDL or End-of-run +;; 11 User Routine Error +;; 12 Macro STOP Command +;; 14 XOX Error +;; 15 Fatal Error +;; 16 Possible Full Disk +;; 17 Possible Corrupted or Missing File +;; 18 Possible Corrupted DB File +;; 21 Authorized Code Section Entered +;; 25 Unable to Open X11 Server +;; 30 Quit Signal +;; 31 Failure to Get Signal +;; >32 System-dependent Error + +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; external defvars + +(defvar apdl-username) +(defvar apdl-help-index) +(defvar apdl-license-file) +(defvar apdl-license-categories) +(defvar apdl-ansys-program) +(defvar apdl-ansys-launcher) +(defvar apdl-ansys-wb) +(defvar apdl-ansys-help-path) +(defvar apdl-mode-install-directory) +(defvar apdl-current-ansys-version) +;; (defvar apdl-ansys-install-directory) +(defvar apdl-ansysli-servers) +;;(defvar apdl-is-unix-system-flag) +(defvar apdl-lmutil-program) +(defvar apdl-ansys-help-program) +(defvar apdl-initialised-flag) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; declare-functions + +(declare-function apdl-initialise "apdl-initialise") +(declare-function apdl-next-code-line "apdl-mode") +(declare-function apdl-code-line-p "apdl-mode") +(declare-function apdl-skip-block-forward "apdl-mode") +(declare-function apdl-in-empty-line-p "apdl-mode") + +;; (declare-function buffer-name "") ; in-built +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; requires + +(require 'comint) +(require 'url) +;;(require 'apdl-mode) recursive loading error! +(require 'apdl-initialise) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- customisation --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defgroup APDL-process nil + "Customisation 'process' subgroup for the APDL-Mode." + :group 'APDL) + +(defcustom apdl-license-occur-regexp + '( + "granta" ; material stuff + "electronics" ; electronics desktop + "spaceclaim" ; spaceclaim + ;; "agppi" ; agppi -- Design Modeler + "cfd" ; Computational Fluid Mechanics + "disc" ; disc* -- discovery procucts + "aim_mp" ; aim_mp -- Discovery Aim + ; standard + "stba" ; stba -- structural solver + "struct" ; struct -- structural + "mpba" ; mpba -- multiphysics solver + "ane3" ; ane3 -- magnetics + ; ane3fl -- multiphysics + "^ansys" ; ansys -- mechanical + "anshpc" ; anshpc -- HighPerformanceComputing + "^preppost" ; preppost -- PrePost + ; processing no solve + "mech_" ; mech_1 -- mechanical pro + ; mech_2 -- mechanical premium + "[0-9][0-9]:[0-9][0-9]:[0-9][0-9]") ; and time XX:XX:XX of status + ; request + "List of regular expression strings of interesting licenses. +This list is concatenated to a regexp for the function +`apdl-occur'." + :type 'list + :group 'APDL-process) + + +(defcustom apdl-job "file" + "String variable storing the Ansys job name. +It is initialised to `file' (which is also the Ansys default job +name). See `apdl-abort-file' for a way of stopping a solver run +in a controlled way and `apdl-display-error-file' for viewing +the respective error file." + :type 'string + :group 'APDL-process) + +(defcustom apdl-license-categories + '("ansys" + "struct" + "ane3" + "ansysds" + "ane3fl" + "preppost") + "List of available license types to choose for an Ansys run. +This list should contain the license types you can choose from. +Below are often used license types (as e.g. seen with the +function `apdl-license-status') and their corresponding WorkBench +terminology. + +\"ansys\" - Mechanical U (without thermal capability) +\"struct\" - Structural U (with thermal capability) +\"ane3\" - Mechanical/Emag (Structural U with electromagnetics) +\"ansysds\" - Mechanical/LS-Dyna (Mechanical U with Ansys LS-Dyna inter-phase) +\"ane3fl\" - Multiphysics +\"preppost\" - PrepPost (no solving capabilities)" + :type 'list + :group 'APDL-process) + +;; under a "prepost" license - propably since V19 - you can issue a +;; solve command, and MAPDL is solving while catching a "meba" license +;; :-) +(defcustom apdl-license "preppost" ; changed from "ansys" 2021-09 + "The License cagegory with which the MAPDL interpreter will be started. +It is also used for displaying the current license usage in +`apdl-license-status'. See the custom variable +`apdl-license-categories' for often used Ansys license types." + ;; :options '("ansys" "struct" "ane3" "ane3fl" "ansysds" "preppost") + :options apdl-license-categories + ;; options not available for strings (only hooks, alists, plists E22) + :type 'string + :group 'APDL-process) + +(defcustom apdl-batch-license "meba" + "The License type for an MAPDL batch run." + :options '("ansys" "struct" "ane3" "ane3fl" "ansysds" "meba" "mech_1" "mech_2") + ;; :options apdl-license-categories + ;; options not available for strings (only hooks, alists, plists E22) + :type 'string + :group 'APDL-process) + +(defcustom apdl-no-of-processors 3 + "No of processors to use for an Ansys MAPDL run. +This value is reccomended to N - 1, with N the total number of +cores in the computer. If smaller then 5 the run does not +require additonal HPC licenses. 2 is the Ansys default for SMP +parallelisation." + :type 'integer + :group 'APDL-process) + +(defcustom apdl-blink-delay .3 + "Number of seconds to highlight the evaluated region." + :group 'APDL-process + :type 'number) + +(defcustom apdl-blink-region-flag t + "Non-nil means highlight the evaluated region." + :group 'APDL-process + :type 'boolean) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- variables --- + +(defvar apdl-is-unix-system-flag nil + "Non-nil means the computer runs a Unix system. +Any of GNU-Linux, aix, berkeley-unix, hpux, irix, lynxos 3.0.1 or +usg-unix-v.") + +(defvar apdl-emacs-window-id nil + "Editing buffer's X11 window id.") + +(defvar apdl-classics-window-id nil + "The X11 window id of the Ansys GUI or the command window.") + +(defvar apdl-classics-flag nil + "Non-nil means that a Classics GUI could be found.") + +;;; --- constants --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defconst apdl-license-description + '((1spacdes . "Geometry Interface for Creo Elements/Direct Modeling") + (a_catv6_reader . "ANSYS CATIA V6 Reader") + (a_dynamics_4_scdm . "ANSYS Dynamics for Spaceclaim by Algoryx") + (a_geometry . "ANSYS Geometry Interfaces") + (a_jt_reader . "Geometry Interface for JT") + (a_lmat . "ANSYS Composite Cure Simulation") + (a_spaceclaim_3dpdf . "3D PDF Reader for SpaceClaim") + (a_spaceclaim_catv5 . "ANSYS SpaceClaim CATIA V5 Interface") + (a_spaceclaim_dirmod . "ANSYS SpaceClaim Direct Modeler") + (a_spaceclaim_faceteddata . "Faceted Data Toolkit for SpaceClaim") + (a_spaceclaim_jt . "JT Open Reader for SpaceClaim") + (aa_a . "ANSYS Academic Associate") + (aa_a_cfd . "ANSYS Academic Associate CFD") + (aa_a_hpc . "ANSYS Academic Associate HPC") + (aa_ds . "ANSYS Academic Teaching DesignSpace") + (aa_dy_p . "ANSYS Academic LS-DYNA Parallel") + (aa_fcell . "ANSYS Academic Fuel Cell Tools") + (aa_mcad . "ANSYS Academic MCAD") + (aa_mesh . "ANSYS Academic Meshing Tools") + (aa_r . "ANSYS Academic Research") + (aa_r_cfd . "ANSYS Academic Research CFD") + (aa_r_dy . "ANSYS Academic Research LS-DYNA") + (aa_r_et . "ANSYS Academic Research Electronics Thermal") + (aa_r_hpc . "ANSYS Academic Research HPC") + (aa_r_me . "ANSYS Academic Research Mechanical") + (aa_r_pf . "ANSYS Academic Research POLYFLOW") + (aa_s_aim . "ANSYS AIM Student") + (aa_t_a . "ANSYS Academic Teaching Advanced") + (aa_t_cfd . "ANSYS Academic Teaching CFD") + (aa_t_i . "ANSYS Academic Teaching Introductory") + (aa_t_me . "ANSYS Academic Teaching Mechanical") + (acdi_ad3dfull . "ANSYS AUTODYN-3D") + (acdi_adprepost . "ANSYS AUTODYN PrepPost") + (acdi_aqwadrft . "ANSYS AQWA - AQWADRFT") + (acdi_aqwafer . "ANSYS AQWA - AQWAFER") + (acdi_aqwags . "ANSYS AQWA - AQWAGS") + (acdi_aqwalbrm . "ANSYS AQWA - AQWALBRM") + (acdi_aqwaline . "ANSYS AQWA - AQWALINE") + (acdi_aqwanaut . "ANSYS AQWA - AQWANAUT") + (acdi_aqwawave . "ANSYS AQWA - AQWAWAVE") + (acdi_asas . "ANSYS ASAS - ASAS") + (acdi_asaslink . "ANSYS ASAS - ASASLINK") + (acdi_asasnl . "ANSYS ASAS - ASASNL") + (acdi_asas-vis . "ANSYS ASAS - ASAS-VIS") + (acdi_beamst . "ANSYS ASAS - BEAMST") + (acdi_cd-ags . "ANSYS AQWA - CD-AGS") + (acdi_cd-drift . "ANSYS AQWA - CD-DRIFT") + (acdi_cd-fer . "ANSYS AQWA - CD-FER") + (acdi_cd-libr . "ANSYS AQWA - CD-LIBR") + (acdi_cd-naut . "ANSYS AQWA - CD-NAUT") + (acdi_comped . "ANSYS ASAS - COMPED") + (acdi_explprof . "ANSYS Explicit STR") + (acdi_fatjack . "ANSYS ASAS - FATJACK") + (acdi_hydrodiff . "ANSYS AQWA - HYDRO-DIFFRACT") + (acdi_loco . "ANSYS ASAS - LOCO") + (acdi_mass . "ANSYS ASAS - MASS") + (acdi_maxmin . "ANSYS ASAS - MAXMIN") + (acdi_post . "ANSYS ASAS - POST") + (acdi_postnl . "ANSYS ASAS - POSTNL") + (acdi_prebeam . "ANSYS ASAS - PREBEAM") + (acdi_prenl . "ANSYS ASAS - PRENL") + (acdi_response . "ANSYS ASAS - RESPONSE") + (acdi_splinter . "ANSYS ASAS - SPLINTER") + (acdi_wave . "ANSYS ASAS - WAVE") + (acdi_windspec . "ANSYS ASAS - WINDSPEC") + (acdi_xtract . "ANSYS ASAS - XTRACT") + (acfd_2 . "ANSYS CFD Premium") + (acfd_3 . "ANSYS CFD Enterprise") + (acfd_fcell . "Fuel Cell Module") + (acfd_ffc . "FfC V5") + (acfd_ffc_pre . "FfC V5 Pre") + (acfd_fluent_solver . "ANSYS FLUENT Solver") + (acfd_ib . "Immersed Boundary Module") + (acfd_mhd . "ANSYS CFD MHD") + (acfd_polyflow_blowmolding . "ANSYS POLYFLOW BlowMolding") + (acfd_polyflow_extrusion . "ANSYS POLYFLOW Extrusion") + (acfd_preppost . "ANSYS CFD PrepPost") + (acfd_rif . "CFX-RIF Flamelet Library Generator") + (acfd_v2f . "V2f Module") + (acfd_vista_tf . "ANSYS Vista TF") + (acfd_vki . "ANSYS VKI library") + (acfdsol2 . "ANSYS CFD Premium Solver") + (acfdsol3 . "ANSYS CFD Enterprise Solver") + (acfx_advanced_turbulence . "ANSYS CFX-5 Advanced Turbulence Models") + (acfx_bldmdlr . "ANSYS BladeModeler") + (acfx_combustion . "ANSYS CFX-5 Reacting and Combusting Species") + (acfx_mfr . "ANSYS CFX-5 Multiple Frames of Reference") + (acfx_multiphase . "ANSYS CFX-5 Multi-Phase Flows") + (acfx_post . "ANSYS CFX-Post") + (acfx_pre . "ANSYS CFX-5 Pre") + (acfx_radiation . "ANSYS CFX-5 Radiation Models") + (acfx_turbogrid . "ANSYS CFX-TurboGrid") + (acfx_turbulence_transition . "ANSYS CFX-5 Turbulence Transition") + (acpreppost . "ANSYS Composite PrepPost") + (act_cadfem_gominterface . "TPA GOM Interface CADFEM") + (act_demsol_edemforansys . "TPA EDEM for ANSYS DEM Solutions") + (act_edrmed_ASMEFat . "TPA ASME Fatigue EDR Medeso") + (act_edrmed_ASMELF . "TPA ASME Local Failure EDR Medeso") + (act_edrmed_bolttoolkit . "TPA Bolt Toolkit EDR Medeso") + (act_edrmed_reportgenerator . "TPA Report Generator EDR Medeso") + (act_edrmed_weldfatigue . "TPA Weld Fatigue EDR Medeso") + (act_edrmed_weldstrength . "TPA Weld Strength EDR Medeso") + (act_es_multiplerun . "TPA MultipleRun EnginSoft SPA") + (act_FBay_MBDforANSYSmodeler . "TPA MBD for ANSYS Modeler FunctionBay") + (act_ges_utilizationplot . "TPA Utilization Plot General Engineering Solutions") + (act_greact_ntoplatticeworkflow . "TPA nTopology Lattice Custom Workflow Groupe Reaction") + (act_infini_exportresults . "TPA Export Results Infinite Simulation Systems") + (act_mminc_multimech . "TPA MultiMech MultiMechanics") + (act_oei_simnotebook . "TPA Simulation Notebook Ozen Eng") + (act_PERA_PCBTraceImageImport . "TPA PCBTraceImageFileImport Pera Global") + (act_phimec_exporteverything . "TPA Export Everything PHI-MECA Eng") + (act_prosol_rfi . "TPA RFlex Generator for RecurDyn Pro-Lambda Solutions") + (act_rbf_rbfmorph . "TPA - RBF Morph ACT Extension for Mechanical - RBF Morph") + (act_sorvim_designbooster . "TPA SORVI Design Booster Sorvimo Optimointipalvelut Oy") + (advanced_meshing . "Advanced Meshing") + (afsp_fensapice_cfd . "ANSYS FENSAP-ICE") + (afsp_gui . "ANSYS FENSAP-ICE GUI") + (afsp_optigrid . "ANSYS FENSAP-ICE OptiGrid") + (afsp_viewmerical . "ANSYS FENSAP-ICE Viewmerical") + (agppi . "ANSYS DesignModeler") + (aiacis . "ANSYS ICEM CFD ACIS to Tetin Converter") + (aibfcart . "ANSYS ICEM CFD BF-Cart") + (aice_mesher . "ANSYS IcePak Mesher") + (aice_pak . "ANSYS IcePak") + (aice_solv . "ANSYS IcePak Solver") + (aidxf . "ANSYS ICEM CFD DXF to Tetin Converter") + (aihexa . "ANSYS ICEM CFD Hexa Add-on") + (aiiges . "ANSYS ICEM CFD IGES to Tetin Converter") + (aim_mp1 . "ANSYS AIM Standard") + (aimed . "ANSYS ICEM CFD Mesh Editor") + (aimshcrt . "ANSYS ICEM CFD Cart3D Mesher") + (aioutcfd . "ANSYS ICEM CFD Translators for CFD Codes") + (aioutput . "ANSYS ICEM CFD Output Interfaces") + (aiprism . "ANSYS ICEM CFD Prism Mesher") + (aiquad . "ANSYS ICEM CFD Quad Mesher") + (aitetra . "ANSYS ICEM CFD Tetra Mesher") + (al4allegro . "ALinks Cadence Allegro integration") + (al4ansoft . "Import ANF Neutral Files") + (al4apd . "ALinks Cadence APD integration") + (al4boardstation . "ALinks Mentor Boardstation Integretion") + (al4cadvance . "ALinks for cadvance") + (al4cds . "ALinks for CDS") + (al4encore . "ALinks Synopsis Encore Integration") + (al4expedition . "ALinks Mentor Expedition Integration") + (al4first . "ALinks for First") + (al4gem . "ALinks for GEM Design Technologies") + (al4generic . "Import from 3rd Party exported data") + (al4odb++ . "ALinks ODB++ integration") + (al4powerpcb . "ALinks PowerPCB integration") + (al4virtuoso . "ALinks Virtuoso integration") + (al4zuken . "ALinks Zuken integration") + (algoryx_momentum . "ANSYS Discovery Algoryx Momentum") + (alinks_gui . "ALinks GUI") + (am_module . "ANSYS Additive Manufacturing Module") + (am_prep . "ANSYS Additive Prep") + (am_print . "ANSYS Additive Print") + (amesh . "ANSYS Mesh") + (amesh_extended . "ANSYS Extended Meshing") + (ancfx . "ANSYS Mechanical/CFX-Flo") + (ancode_acc_testing . "ANSYS nCode Accelerated Testing") + (ancode_composite . "ANSYS nCode DesignLife Composites") + (ancode_hpc . "ANSYS nCode Parallelization") + (ancode_standard . "ANSYS nCode Standard") + (ancode_thermo_mech . "ANSYS nCode DesignLife Thermo-Mechanical Module") + (ancode_vibration . "ANSYS nCode Vibration") + (ancode_welds . "ANSYS nCode Welds") + (ane3 . "ANSYS Mechanical/Emag") + (ane3fl . "ANSYS Multiphysics") + (ans_act . "ANSYS Customization Module") + (ans_dp_pack . "ANSYS HPC Parametric Pack") + (anshpc . "ANSYS HPC") + (anshpc_pack . "ANSYS HPC Pack") + (ansoft_distrib_engine . "ANSYS DSO") + (ansrom . "ANSYS ROM Builder") + (ansys . "ANSYS Mechanical") + (aqwa_pre . "AQWA Pre") + (aqwa_solve . "AQWA Solve") + (aspeos_solver . "ANSYS SPEOS Solver") + (caewbpl3 . "ANSYS DesignSpace") + (capricatv5 . "CADNexus/CAPRI CAE Gateway for CATIA V5") + (cfd_base . "CFD Base") + (cfd_polyflow_ui . "Polyflow UI") + (cfd_preppost . "CFD PrepPost") + (cfd_solve_level1 . "CFD Solver - Level 1") + (cfd_solve_level2 . "CFD Solver - Level 2") + (cfd_solve_level3 . "CFD Solver - Level 3") + (deba . "ANSYS DesignSpace Batch") + (designer_hspice . "ANSYS Designer HSPICE") + (dfatigue . "ANSYS Fatigue Module") + (disc_ess . "ANSYS Discovery Essentials") + (disc_sta . "ANSYS Discovery Standard") + (disc_ult . "ANSYS Discovery Ultimate") + (disc_ult_cpuext . "ANSYS Discovery Ultimate CPU Core Extension") + (disco_level1 . "Discovery - Level 1") + (disco_level2 . "Discovery - Level 2") + (disco_level3 . "Discovery - Level 3") + (discovery_geom . "ANSYS Discovery Ultimate Geometry Interface Bundle") + (discovery_geom_catia . "ANSYS Discovery Ultimate Geometry Interface Bundle for CATIA") + (dsdxm . "ANSYS DesignXplorer") + (dspi . "DesignSpace PlugIn") + (dyna . "ANSYS LS-DYNA") + (dynamics . "ANSYS Dynamics") + (dynapp . "ANSYS LS-DYNA PrepPost") + (dynardo_osl . "ANSYS optiSLang") + (dynardo_osp . "ANSYS optiSLang Post") + (dynardo_sig . "dynardo_sig") + (dysmp . "ANSYS LS-DYNA Parallel") + (electronics_desktop . "ANSYS Electronics Desktop") + (electronics2d_gui . "ANSYS Electronics 2D GUI") + (electronics3d_gui . "ANSYS Electronics 3D GUI") + (electronicsckt_gui . "ANSYS Electronics Circuit GUI") + (emag . "ANSYS Emag") + (emit_legacy_gui . "Emit Legacy GUI") + (emit_solve . "Emit Solve") + (ensemble_25_sim . "Planar EM 2.5D solver") + (ensight . "ANSYS EnSight") + (ensight_enterprise . "ANSYS EnSight Enterprise") + (ensight_jt_exporter . "ANSYS EnSight JT Exporter") + (ensight_mr . "ANSYS EnSight MR") + (ensight_vr . "ANSYS EnSight VR") + (envision_pro . "ANSYS EnVision Pro") + (explicit_advanced . "Explicit - Advanced") + (explicit_basic . "Explicit - Basic") + (filter_synthesis . "ANSYS filter_synthesis") + (forte_3 . "ANSYS Chemkin Enterprise Forte") + (granta_mi_pro . "ANSYS Granta MI Pro") + (granta_selector . "Granta CES Selector") + (granta_sim_mat_data . "Granta Simulation Materials Data") + (granta_spl_mat_bundle_1 . "Granta Complete Materials Reference Data Bundle #1") + (granta_spl_mat_bundle_2 . "Granta Complete Materials Reference Data Bundle #2") + (granta_spl_mat_bundle_3 . "Granta Complete Materials Reference Data Bundle #3") + (hfss_solve . "HFSS solver") + (hfss_transient_solve . "HFSS Transient") + (hfsssbr_solve . "HFSS SBR+ Solve") + (keyshot_spaceclaim_hd . "ANSYS Discovery KeyShot HD") + (keyshot_spaceclaim_pro . "ANSYS Discovery KeyShot Pro") + (kinemat . "ANSYS Kinematics") + (linux_catiav5 . "ANSYS Geometry Interface for Catia V5 Linux") + (m2dfs_qs_solve . "Maxwell 2D Quasistatic Solver") + (m2dfs_solve . "Maxwell 2D Solver") + (m3dfs_qs_solve . "Maxwell 3D Quasistatic Solver") + (m3dfs_solve . "Maxwell 3D solver") + (mat_designer . "Material Designer") + (meba . "ANSYS Mechanical Batch") + (mech_1 . "ANSYS Mechanical Pro") + (mech_2 . "ANSYS Mechanical Premium") + (MeshViewer . "Helic products (legacy) - mesh viewer") + (mpba . "ANSYS Multiphysics Batch") + (nexxim_ami . "NEXXIM AMI") + (nexxim_dc . "NEXXIM DC") + (nexxim_eye . "NEXXIM Eye") + (nexxim_hb . "NEXXIM HB") + (nexxim_osc . "NEXXIM OSC") + (nexxim_tran . "NEXXIM Tran") + (nexxim_tvnoise . "NEXXIM TVNOISE") + (optimetrics . "Optimetrics") + (paramesh . "ANSYS MeshMorpher") + (pdmiman . "ANSYS Interface for Team Center Engineering") + (pemag . "PEmag Modeling Tool") + (pexprt . "PExprt Design Tool") + (piautoin . "Geometry Interface for Autodesk Inventor") + (picatv5 . "Geometry Interface for CATIA V5") + (pimedesk . "Geometry Interface for Mechanical Desktop") + (piproe . "Geometry Interface for Pro/ENGINEER") + (pisoledg . "Geometry Interface for SolidEdge") + (pisolwor . "Geometry Interface for SolidWorks") + (piug . "Geometry Interface for NX") + (preppost . "ANSYS Mechanical PrepPost") + (prf . "ANSYS Professional NLT") + (prfnls . "ANSYS Professional NLS") + (RaptorX . "RaptorX - enable GUI") + (rbfmorph . "ANSYS RBF Morph Module") + (rd_ckcompute . "ANSYS RD CHEMKIN HPC") + (rd_ckgraph . "ANSYS RD CHEMKIN GRAPH") + (rd_ckpost . "ANSYS RD CHEMKIN POST") + (rd_ckpreproc . "ANSYS RD CHEMKIN PREPROC") + (rd_ckui . "ANSYS RD CHEMKIN UI") + (rd_energico . "ANSYS RD ENERGICO") + (rd_fortejob . "ANSYS RD FORTE JOB") + (rd_fortemesh . "ANSYS RD FORTE MESH") + (rd_forteui . "ANSYS RD FORTE UI") + (rd_forteviz . "ANSYS RD FORTE VIZ") + (rd_kineticsapi . "ANSYS RD KINETICS") + (rd_mechforte . "ANSYS RD MECH FORTE") + (rd_mechmfc . "ANSYS RD Model Fuel") + (rd_mechsoot . "ANSYS RD Soot") + (rd_mechwb . "ANSYS RD Workbench") + (rd_reactionwbui . "ANSYS RD Workbench UI") + (rdacis . "Geometry Interface for SAT") + (rdpara . "Geometry Interface for Parasolid") + (rmxprt_bcm . "RMxprt Brush Commutator Machine") + (rmxprt_ecm . "RMxprt Electronic Commutator Machine") + (rmxprt_im . "RMxprt Induction Machine") + (rmxprt_sym . "RMxprt Synchronus+E298 Machine") + (RXBackAnnotation . "RaptorX (legacy) - schematic backannotation module") + (savant_legacy_gui . "Savant Legacy GUI") + (sherlock . "ANSYS Sherlock") + (si2d_solve . "Q3D Extractor 2D solver") + (si3d_solve . "Q3D Extractor 3D solver") + (simplorer_advanced . "Simplorer Advanced") + (simplorer_control . "Simplorer Control") + (simplorer_CProgrInterface . "Simplorer C Programming Interface") + (simplorer_desktop . "Simplorer Desktop") + (simplorer_gui . "Simplorer GUI") + (simplorer_LibSMPS . "Simplorer LibSMPS") + (simplorer_model_export . "Simplorer Model Export") + (simplorer_modelica . "Simplorer Modelica") + (simplorer_modelon_base . "Modelon Base Library") + (simplorer_modelon_hl . "Hydraulics Library") + (simplorer_modelon_pl . "Pneumatics Library") + (simplorer_sim . "Simplorer Simulator") + (simplorer_sim_entry . "ANSYS Simplorer Entry") + (simplorer_twin_models . "ANSYS Twin Builder") + (simplorer_vhdlams . "Simplorer VHDLAMS") + (SIwave_gui . "SIwave GUI") + (SIwave_level1 . "SIwave Solver - Level 1 functionality") + (SIwave_level2 . "SIwave Solver - Level 2 functionality") + (SIwave_level3 . "SIwave Solver - Level 3 functionality") + (SIwave_psi_ac_solve . "SIwave PSI Solver") + (stba . "ANSYS Structural Batch") + (stl_prep . "ANSYS Discovery Essentials STL Prep for 3D Printng") + (struct . "ANSYS Structural") + (symphony_dt_sim . "Discrete Time Domain System Engine Solver") + (symphony_fd_sim . "Frequency Domain System Engine Solver") + (TransformerWizard . "VeloceRF (legacy) - transformer synthesis module") + (twin_builder_dynamic_rom . "twin_builder_dynamic_rom") + (twin_builder_rapidprototype . "twin_builder_rapidprototype") + (twin_builder_rapidprototypesim . "twin_builder_rapidprototypesim") + (twin_builder_runtime_export . "twin_builder_runtime_export") + (VeloceAdaptiveCompaction . "Helic products (legacy) - compact model extraction") + (VelocePolygonEngine . "Helic products (legacy) - mesh generation module") + (VeloceRaptor . "Helic products (legacy) - extraction engine") + (VeloceRF . "VeloceRF - enable GUI") + (vmotion . "ANSYS Motion") + (vmotion_car . "ANSYS Motion Car Toolkit") + (vmotion_catiai . "ANSYS Motion CATIA Import") + (vmotion_drtrain . "ANSYS Motion Drivetrain Toolkit") + (vmotion_links . "ANSYS Motion Links Toolkit") + (vmotion_mesh . "ANSYS Motion Physics Meshing Toolkit") + (vmotion_para . "ANSYS Motion Parasolid Translator") + (vmotion_step . "ANSYS Motion STEP Translator")) + "Association list: Feature name . feature description. +Status: Ansys v201 from about the beginning of 2020.") + +(defconst apdl-begin-keywords + '("\\*[dD][oO]" "\\*[dD][oO][wW][hH]?[iI]?[lL]?[eE]?" + "\\*[iI][fF].*[tT][hH][eE][nN]" "\\*[cC][rR][eE][aA][tT][eE]") + "Regexps describing APDL block begin keywords.") + +(defconst apdl-block-begin-regexp + (concat "\\(" + (mapconcat 'identity apdl-begin-keywords "\\|") + "\\)\\>") + "Regexp containing the APDL begin keywords.") + +(defconst apdl-process-name "MAPDL" + "Variable containing the name of an MAPDL interactive process. +Variable is used internally only.") + +(defconst apdl-classics-process "Classics" + "Variable containing the name of an MAPDL GUI process. +Variable is used internally only.") + +(defconst apdl-batch-process "MAPDL-Batch" + "Variable containing the name of an MAPDL batch process. +Variable is used internally only.") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- functions --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun apdl-is-unix-system-p () + "Return t when we are on a Unix system. +gnu/linux, aix, berkeley-unix, hpux, irix, lynxos 3.0.1, +usg-unix-v. Ansys supports only GNU-Linux 64 and Windows 64 for +the entire Ansys platform with some support of legacy Unices (AIX +IBM, HP-UX HP, SGI, Solaris SUN) for standalone apps will be +provided so I won't restrict some aspects of APDL-Mode to +GNU-Linux." + (not + (or (string= system-type "gnu") ; gnu with the hurd kernel + (string= system-type "darwin") ; mac + (string= system-type "ms-dos") + (string= system-type "windows-nt") + (string= system-type "cygwin")))) + +(defun apdl-toggle-classics () + "Toogle sending output to Ansys Classics. +Try to locate an Ansys Classics GUI or the command dialog box and +switch output to it." + (interactive) + (if apdl-classics-flag + (progn + (setq apdl-classics-flag nil) + (message "Disconnected from Classics.")) + (if (apdl-classics-p) + (progn (setq apdl-classics-flag t) + (message "Connected to Classics.")) + (error "No Ansys Classics window found")))) + +(defun apdl-classics-p () + "Check whether Ansys Classics is running. +Return nil if we can't find an MAPDL GUI." + (let ((aID (replace-regexp-in-string + "\n" "" + (shell-command-to-string "~/a-m/X11/xGetClassicsWindow"))) + (eID (replace-regexp-in-string + "\n" "" + (shell-command-to-string "~/a-m/X11/xGetFocusWindow")))) + (if (string= "" aID) + ;; (error "No Ansys MAPDL window found") + nil + (setq apdl-emacs-window-id eID) + (setq apdl-classics-window-id aID) + ;; (setq x-select-enable-clipboard t) ; for kill-new necessary + (setq select-enable-clipboard t) ; for kill-new necessary + aID))) + +;;;###autoload +(defun apdl-start-classics () ; C-c C-x + "Start the Ansys MAPDL Classics graphical user interface. +The output of the solver is captured in an Emacs buffer called +*Classics* under GNU-Linux. Under Windows it is not possible to +capture the output here, only the exit code. Please +see `apdl-start-batch-run' for the documentation of these codes. + +MAPDL command line options: +-aas : implies -b +-b : implies -i and -o + +-lch : undocumented, command line built from the Ansys Launcher +-t : undocumented, maximum solver time -t 10:30:00 + +V2020R2: + +-aas : Enables server mode. When enabling server mode, a custom + name for the keyfile can be specified using the -iorFile + option. For more information, see Mechanical APDL as a Server + User's Guide. + +-acc device : Enables the use of GPU hardware to accelerate the + analysis. See GPU Accelerator Capability in the Parallel + Processing Guide for more information. + +-amfg : Enables the additive manufacturing capability (requires + an additive manufacturing license). For general information + about this feature, see AM Process Simulation in Ansys + Workbench. + +-ansexe : In the Ansys Workbench environment, activates a custom + Mechanical APDL executable. + +-b list or nolist : Activates the Mechanical APDL program in + batch mode. The options -b list or -b by itself cause the input + listing to be included in the output. The -b nolist option + causes the input listing not to be included. For more + information about running Mechanical APDL in batch mode, see + Batch Mode. + +-custom : Calls a custom Mechanical APDL executable. See Running + Your Custom Executable in the Programmer's Reference for more + information. + +-d device : Specifies the type of graphics device. This option + applies only to interactive mode. For Linux systems, graphics + device choices are X11, X11C, or 3D. For Windows systems, + graphics device options are WIN32 or WIN32C, or 3D. + +-db value : Defines the portion of workspace (memory) to be used + as the initial allocation for the database. The default is 1024 + MB. Specify a negative number (-value) to force a fixed size + throughout the run; useful on small memory systems. + +-dir : Defines the initial working directory. Using the -dir + option overrides the ANSYS212_WORKING_DIRECTORY environment + variable. + +-dis : Enables Distributed Ansys. See the Parallel Processing + Guide for more information. + +-dvt : Enables Ansys DesignXplorer advanced task (add-on). + +-g : Launches the Mechanical APDL program with the Graphical User + Interface (GUI) on. If you select this option, an X11 graphics + device is assumed for Linux unless the -d option specifies a + different device. This option is not used on Windows + systems. To activate the GUI after Mechanical APDL has started, + enter two commands in the input window: /SHOW to define the + graphics device, and /MENU,ON to activate the GUI. The -g + option is valid only for interactive mode. Note: If you start + Mechanical APDL via the -g option, the program ignores any + /SHOW command in the start.ans file and displays a splash + screen briefly before opening the GUI windows. + +-i inputname : Specifies the name of the file to read input into + Mechanical APDL for batch processing. On Linux, the preferred + method to indicate an input file is <. + +-iorFile keyfile_name : Specifies the name of the server keyfile + when enabling server mode. If this option is not supplied, the + default name of the keyfile is aas_MapdlID.txt. For more + information, see Mechanical APDL as a Server Keyfile in the + Mechanical APDL as a Server User's Guide. + +-j Jobname : Specifies the initial jobname, a name assigned to + all files generated by the program for a specific model. If you + omit the -j option, the jobname is assumed to be file. + +-l language : Specifies a language file to use other than US + English. This option is valid only if you have a translated + message file in an appropriately named subdirectory in + /ansys_inc/v212/ansys/docu (or Program Files\\ANSYS + Inc\\V212\\ANSYS\\docu on Windows systems). + +-m workspace : Specifies the total size of the workspace (memory) + in megabytes used for the initial allocation. If you omit the + -m option, the default is 2 GB (2048 MB). Specify a negative + number (-value) to force a fixed size throughout the run. + +-machines : Specifies the machines on which to run a Distributed + Ansys analysis. See Starting Distributed Ansys in the Parallel + Processing Guide for more information. + +-mpi : Specifies the type of MPI to use. See the Parallel + Processing Guide for more information. + +-mpifile : Specifies an existing MPI file (appfile) to be used in + a Distributed Ansys run. See Using MPI Files in the Parallel + Processing Guide for more information. + +-na : Specifies the number of GPU accelerator devices per machine + or compute node when running with the GPU accelerator + feature. See GPU Accelerator Capability in the Parallel + Processing Guide for more information. + +-name value : Defines Mechanical APDL parameters at program + start-up. The parameter name must be at least two characters + long. For details about parameters, see the Ansys Parametric + Design Language Guide. + +-np : Specifies the number of processors to use when running + Distributed Ansys or Shared-memory Ansys. See the Parallel + Processing Guide for more information. + +-o outputname : Specifies the name of the file to store the + output from a batch execution of Mechanical APDL. On Linux, the + preferred method to indicate an output file is >. + +-p productname : Defines which Ansys product will run during the + session. For more detailed information about the -p option, see + Selecting an Ansys Product via the Command Line. + +-ppf license feature name : Specifies which HPC license to use + during a parallel processing run. See HPC Licensing in the + Parallel Processing Guide for more information. + +-rcopy : On a Linux cluster, specifies the full path to the + program used to perform remote copy of files. The default value + is /usr/bin/scp. + +-s read or noread : Specifies whether the program reads the + start.ans file at start-up. If you omit the -s option, + Mechanical APDL reads the start.ans file in interactive mode + and not in batch mode. + +-schost host name : Specifies the host machine on which the + coupling service is running (to which the co-simulation + participant/solver must connect) in a System Coupling analysis. + +-scid value : Specifies the licensing ID of the System Coupling + analysis. + +-sclic port@host : Specifies the licensing port@host to use for + the System Coupling analysis. + +-scname name of the solver : Specifies the unique name used by + the co-simulation participant to identify itself to the + coupling service in a System Coupling analysis. For Linux + systems, you need to quote the name to have the name recognized + if it contains a space: ansys212 -scname \"Solution 1\" + +-scport port number : Specifies the port on the host machine upon + which the coupling service is listening for connections from + co-simulation participants in a System Coupling analysis. + +-smp : Enables shared-memory parallelism. See the Parallel + Processing Guide for more information. + +-usersh : Directs the MPI software (used by Distributed Ansys) to + use the remote shell (rsh) protocol instead of the default + secure shell (ssh) protocol. See Configuring Distributed Ansys + in the Parallel Processing Guide for more information. + +-v : Returns the Mechanical APDL release number, update number, + copyright date, customer number, and license manager version + number. +" + (interactive) + ;; initialise system dependent stuff in case this command was + ;; invoked before APDL-Mode. + (unless apdl-initialised-flag + (apdl-initialise)) + + (let ((bname (concat "*"apdl-classics-process"*"))) + ;; check against .lock file + (when (file-readable-p (concat default-directory apdl-job ".lock")) + (if (yes-or-no-p + (concat "Warning: There is a \""apdl-job".lock" "\" in " + default-directory ". This might indicate that there \ +is already a solver running. Do you wish to kill the lock file? ")) + (delete-file (concat apdl-job ".lock")) + (error "Starting the MAPDL GUI (Ansys Classics) canceled"))) + (if (y-or-n-p + (concat + "Start MAPDL GUI: " + apdl-ansys-program + ", license: " apdl-license + ;; "Start run? (license type: " (if (boundp + ;; 'apdl-license) apdl-license) + (if (> apdl-no-of-processors 4) + (concat ", No of procs: " + (number-to-string apdl-no-of-processors)) + "") + ", job: " (if (boundp 'apdl-job) apdl-job) + " in " default-directory ", lic server: " + apdl-license-file " ")) + (message "Starting MAPDL in GUI mode (Ansys Classics) ...") + (error "Starting MAPDL GUI (Ansys Classics) canceled")) + ;; -d : device + ;; -g : graphics mode + ;; -p : license + ;; -np: no of PROCs, Ansys default 2, >4 HPC licenses req. + ;; -j : jobname + ;; v195 new params?: -t -lch + ;; -g -p ansys -np 2 -j "file" -d 3D + (start-process apdl-classics-process + (if apdl-is-unix-system-flag + bname + nil) ;nil process not associated with a + ;buffer + apdl-ansys-program + "-g" + "-p" apdl-license + "-lch" + "-np" (number-to-string apdl-no-of-processors) + "-j" apdl-job + "-s read" + "-l en-us" + "-t" + "-d 3D" ; 3d device, win32 + ) + ;; (with-temp-message "bla bla for 10 s" + ;; (run-with-timer 10 nil '(lambda()))) + (if apdl-is-unix-system-flag + (display-buffer bname 'other-window) + ))) + +(defun apdl-start-batch-run () + "Start an Ansys MAPDL batch run locally on the current script. +The output of the process is captured in an Emacs buffer called +*APDL-Batch*. You should finish your script with a \"finish\" +command, otherwise you'll get an error code 8. + +Here are the Ansys MAPDL error codes: + +Code Explanation +------------------- +0 Normal Exit +1 Stack Error +2 Stack Error +3 Stack Error +4 Stack Error +5 Command Line Argument Error +6 Accounting File Error +7 Auth File Verification Error +8 Error in Mechanical APDL or End-of-run +11 User Routine Error +12 Macro STOP Command +14 XOX Error +15 Fatal Error +16 Possible Full Disk +17 Possible Corrupted or Missing File +18 Possible Corrupted DB File +21 Authorized Code Section Entered +25 Unable to Open X11 Server +30 Quit Signal +31 Failure to Get Signal +>32 System-dependent Error +" + (interactive) + ;; initialise system dependent stuff in case this command was + ;; invoked before APDL-Mode. + (unless apdl-initialised-flag + (apdl-initialise)) + + (let ((bname (concat "*"apdl-batch-process"*"))) + ;; check against .lock file + (when (buffer-modified-p (current-buffer)) + (if (y-or-n-p + (concat "Warning: Buffer \"" + (file-name-nondirectory buffer-file-name) + "\" is modified, do you want to save it?")) + (save-buffer) + (message "APDL file not saved"))) + (when (file-readable-p (concat default-directory apdl-job ".lock")) + (if (yes-or-no-p + (concat "Warning: There is a \"" apdl-job ".lock" "\" in " + default-directory ". This might indicate that there \ +is already a solver running. Do you wish to kill the lock file? ")) + (delete-file (concat apdl-job ".lock")) + (error "MAPDL batch run canceled"))) + (if (y-or-n-p + (concat + "Start batch run: " + apdl-ansys-program + ", input file: " (buffer-file-name) + ", license: " apdl-batch-license + ;; "Start run? (license type: " (if (boundp + ;; 'apdl-license) apdl-license) + (if (> apdl-no-of-processors 4) + (concat ", No of procs: " + (number-to-string apdl-no-of-processors)) + "") + ", job: " (if (boundp 'apdl-job) apdl-job) + " in " default-directory ", lic server: " + apdl-license-file " ")) + (message "Starting MAPDL batch run ...") + (error "MAPDL batch run canceled")) + ;; -d : device + ;; -g : graphics mode + ;; -p : license + ;; -np: no of PROCs + ;; -j : job + ;; v195 new params?: -t -lch + ;; -g -p ansys -np 2 -j "file" -d 3D + (start-process apdl-batch-process bname + ;; (if apdl-is-unix-system-flag + ;; bname + ;; nil) ;nil process not associated with a + ;; ;buffer + apdl-ansys-program + ;;"-g" + "-p" apdl-batch-license + "-lch" default-directory + "-smp" ;smp: shared memory run + "-np" (number-to-string apdl-no-of-processors) + "-j" apdl-job ;job name + "-s" "noread" ;don't read startup script + "-l en-us" ;language + "-b" ;batch + "-i" (buffer-file-name) + "-o" (concat apdl-job ".out") + ;; "-t" + ;;"-d 3D" ; 3d device, win32 + ) + ;;(if apdl-is-unix-system-flag + (display-buffer bname 'other-window) + ;; ) + )) + +;;;###autoload +(defun apdl-start-launcher () + "Start the Ansys Launcher." + (interactive) + ;; initialise system dependent stuff in case this command was + ;; invoked before APDL-Mode. + (unless apdl-initialised-flag + (apdl-initialise)) + + (start-process "Launcher" nil apdl-ansys-launcher) + (message "Started the Ansys Launcher...")) + +(defun apdl-start-wb () + "Start the Ansys WorkBench." + (interactive) + ;; initialise system dependent stuff in case this command was + ;; invoked before APDL-Mode. + (unless apdl-initialised-flag + (apdl-initialise)) + (start-process "WorkBench" nil apdl-ansys-wb) + (message "Started the Ansys WorkBench...")) + +(defun apdl-write-abort-file ( filename) + "Open file FILENAME, clear it's contents and insert \"nonlinear\"." + (interactive) + (find-file filename) + (delete-region (point-min) (point-max)) + (insert "nonlinear\n") + (save-buffer) + (message "Wrote \"%s\" into \"%s\"." filename default-directory)) + +(defun apdl-abort-file (&optional arg) + "Writes an Ansys abort file for stopping the current run. +The abort file does not terminate the current session but +triggers the solver to stop solving in an orderly manner. This +function prompts for a job name when ARG is negative. Otherwise +it tries to guess it from the current file (for a /filname +command), if this fails the jobname is taken from the variable +`apdl-job', you can change this variable by calling the equally +named interactive function (i. e. typing \\[apdl-job]) or +setting it directly as Lisp expression (i. e. typing +\"\\[eval-expression] (setq apdl-job \"jobname\")\", where +jobname is a name of your liking but must be enclosed with double +quotes (\") to represent a lisp string). The file jobname.abt in +the current directory contains the sole word \"nonlinear\". In +case the `default-directory' is not the working directory of your +respective job, you can change it with \"\\[cd]\"." + (interactive "p") + (let ((job apdl-job) + file + ;;lfile ; lock file mechanism, might be switched off + name) + (cond + ((< arg 0) ; ask for job-name + (setq name + (read-string + (concat "Job name [" job "]: ") nil nil job))) + (t ; search for /filn + (save-excursion + (goto-char (point-min)) + (if (re-search-forward "/filn.*,\\(\\w+\\)" nil 'noerror) + (setq name (match-string 1)) + (setq name job))))) + ;; we might have circumvented the locking with environment + ;; variable ANSYS_LOCK=OFF, this is interesting if you are using + ;; Classics as a "viewer" with prepost license (on Windows + ;; removing the .lock file would be blocked), moreover below + ;; condition was already interceped already in the apdl-mode menu, + + ;; (setq lfile (concat name ".lock")) + ;; (unless (file-readable-p lfile) + ;; (error "No \"%s\" in %s" lfile default-directory)) + (setq file (concat name ".abt")) + (if (yes-or-no-p (concat "Write stop file \"" default-directory file "\"? ")) + (progn + (apdl-write-abort-file file) + (message "Wrote MAPDL stop file %s in %s." file + default-directory)) + (message "Writing MAPDL stop file canceled!")))) + +(defun apdl-file-list( regex) + "List of files matching REGEX in current working directory. +The list is sorted according to their modification times and +might be nil if there is no file matching." + ; (interactive) + (let* ((File-name buffer-file-name) + (CWD (if File-name ;in buffer with filename? + (file-name-directory File-name) + default-directory)) + (File-list (directory-files CWD nil regex)) + (Latest-file-list (sort File-list #'file-newer-than-file-p))) + Latest-file-list)) + +(defun apdl-display-error-file (&optional arg) + "Open the latest \"*.err\" file in the current working directory. +There might be multiple error files when using multiple +processors. With a prefix argument you can choose between the +list of all \"*.err\" files. + +This file will be opened in \"auto-revert-mode\" so that the +current output at the end of the file is always visible. + +The error file names consists of the current job name and the +suffix '.out'. For the job name the variable `apdl-job' is used. +You can change the job name interactively either with the +\"\\[apdl-job]\" or in the customisation facility (by calling +`apdl-customise-apdl'). + +You might also change the working directory with `M-x cd '." + (interactive "P") + (let* ((Regex "\\.err$") + (File-list (apdl-file-list Regex)) + (Latest-file (car File-list)) + (File)) + (if arg + (setq File + (completing-read + "Choose an \".err\" file ( to complete): " File-list)) + (setq File Latest-file)) + (when (null File) + (error "No file is matching \"%s\" in the current directory" Regex)) + (find-file-read-only-other-window File) + (goto-char (point-max)) + (auto-revert-tail-mode 1))) + +(defun apdl-display-out-file (&optional arg) + "Open the latest \".out\" file in the current working directory. +There might be multiple out files when using multiple processors. +With a prefix argument you can choose between the list of all +\".out\" files. + +This file will be opened in \"auto-revert-mode\" so that the +current output at the end of the file is always visible. + +The regular out file name consists of the current job name and +the suffix '.out'. For the job name the variable +`apdl-job' is used. You can change the job name interactively +either with the \"\\[apdl-job]\" or in the customisation +facility (by calling `apdl-customise-apdl'). + +But you might specify your own output file with the MAPDL +\"/out\" command. And you might change Emacs' working directory +with `M-x cd '." + (interactive "P") + (let* ((Regex "\\.out$") + (File-list (apdl-file-list Regex)) + (Latest-file (car File-list)) + (File)) + (if arg + (setq File + (completing-read + "Choose an \".out\" file ( to complete): " File-list)) + (setq File Latest-file)) + (when (null File) + (error "No file is matching \"%s\" in the current directory" Regex)) + (find-file-read-only-other-window File) + (goto-char (point-max)) + (auto-revert-tail-mode 1))) + +(defun apdl-copy-or-send-above() + "Copy or send above file content to the current cursor position." + (interactive) + (let ((process (get-process + (if (boundp 'apdl-process-name) + apdl-process-name + "APDL")))) + ;; no-property stuff necessary????? + ;; (if (y-or-n-p + ;; (concat + ;; "Start this Ansys run: (lic: " apdl-license ", job: " apdl-job ")? ")) + ;; (message "Starting run...") + ;; (error "Run canceled")) + (cond (apdl-classics-flag + (clipboard-kill-ring-save (point-min) (point)) + (apdl-send-to-classics) + (message "Send above file content to the Classics GUI" )) + ((apdl-process-running-p) + (comint-send-region process (point-min) (point)) + (display-buffer-other-frame (process-buffer process))) + (t + (clipboard-kill-ring-save (point-min) (point)) ; point-min is heeding narrowing + (message "Copied from beginning of buffer to cursor."))))) + +(defvar apdl-current-region-overlay + (let ((overlay (make-overlay (point) (point)))) + (overlay-put overlay 'face 'highlight) + overlay) + "The overlay for highlighting currently evaluated region or line.") + +(defun apdl-blink-region (start end) + "Let the region blink between START and END." + (when apdl-blink-region-flag + (move-overlay apdl-current-region-overlay start end) + (run-with-timer apdl-blink-delay nil + (lambda () + (delete-overlay apdl-current-region-overlay))))) + +(defun apdl-send-to-classics () + "Sending clipboard content to the Classics GUI." + ;; (let ((win (call-process "/home/uidg1626/script/ctrlv.sh"))) + (let () + (sleep-for .5) ; wait till user lifts CTRL! + (call-process (concat apdl-mode-install-directory + "X11/xPasteToWin") nil nil nil apdl-classics-window-id) + (sleep-for .1) ; seems to take at least 0.1 s for the clipboard to copy! + (call-process (concat apdl-mode-install-directory + "X11/xSendReturn") nil nil nil + apdl-emacs-window-id apdl-classics-window-id) + ;; repeating this as workaround... TODO + (sleep-for .1) ; seems to take 0.1 s for the clipboard to copy! + (call-process (concat apdl-mode-install-directory + "X11/xSendReturn") nil nil nil + apdl-emacs-window-id apdl-classics-window-id))) + +(defun apdl-send-to-ansys ( &optional move) + "Send a region to the Ansys MAPDL interpreter. +If the interpreter is not active, just copy it. If there is no +region marked, send (or copy) the current paragraph. With a +prefix argument MOVE equal to `4' or `C-u' skip to the next code +line after this region (or paragraph)." + (interactive "p") + (let (code + beg + end + (point (point)) + (process (get-process + (if (boundp 'apdl-process-name) apdl-process-name))) + (region (and transient-mark-mode mark-active))) + ;; (region (region-active-p))) ; this is for Emacs-23.1 + ;; make a valid region if possible, when region is not active: + ;; "region" will be the whole code line (including \n) + (unless region + (mark-paragraph)) + (setq beg (region-beginning) + end (region-end)) + ;; invalidate region + (deactivate-mark) ; for Emacs 23.1 no arguments + ;; (deactivate-mark nil) + (apdl-blink-region beg end) + ;; send or copy region or line + (cond (apdl-classics-flag + (clipboard-kill-ring-save beg end) + (apdl-send-to-classics) + (message "Sent to Classics GUI")) + ((apdl-process-running-p) + (setq code (buffer-substring-no-properties beg end)) + (comint-send-string process + ;; "\n"); why did I do \n? + (concat code "")) + (display-buffer-other-frame (concat "*" apdl-process-name "*")) + (message "Sent region to solver.")) + (t + (clipboard-kill-ring-save beg end) + (message "Copied region."))) + (if (= move 4) + (progn + (goto-char end) + (apdl-next-code-line)) + (goto-char point)))) + +(defun apdl-send-to-apdl-and-proceed ( &optional stay) + "Send a region or code line to the Ansys MAPDL interpreter. +When there is no running Ansys interpreter process just copy the +respective region or code line to the system clipboard and skip +to the subsequent code line. With a prefix argument STAY of `4' +or `C-u' copy or send the code and remain at the current cursor +position. The command can be repeated by typing just the final +character `j' (or `C-j')." + (interactive "p") + (let (; code + beg + end + (process (get-process + (if (boundp 'apdl-process-name) apdl-process-name))) + (region (and transient-mark-mode mark-active)) + (block (save-excursion + (back-to-indentation) + (looking-at apdl-block-begin-regexp))) + (code (apdl-code-line-p)) + (column (current-column))) + ;; (region (region-active-p))) ; this is for Emacs-23.1 + ;; make a valid region if possible, when region is not active: + ;; "region" will be the whole code line (including \n) + (message "column: %d" column) + (cond + (region + (setq beg (region-beginning) + end (region-end))) + (block + (move-beginning-of-line 1) + (setq beg (point)) + (apdl-skip-block-forward) + (setq end (point)) + (setq region t)) ; block considered a region + (code + (setq beg (line-beginning-position)) + (save-excursion + (forward-line 1) + (setq end (point)))) + (t + (unless (= stay 4) + (apdl-next-code-line)) + (error "There was no active region or code line"))) + ;; move cursor to subsequent code line unless stay + (unless (= stay 4) + (if (and region + (< (point) end)) + (exchange-point-and-mark)) + (move-to-column column) ; stay in the previous column + (apdl-next-code-line)) + ;; invalidate region + (setq mark-active nil) + ;; set-transient-map since 24.4 + (when (fboundp 'set-transient-map) + (set-transient-map + (let ((map (make-sparse-keymap))) + (define-key map "j" + 'apdl-send-to-apdl-and-proceed) + (define-key map "\C-j" + 'apdl-send-to-apdl-and-proceed) + map))) + ;; send or copy region or line + (cond (apdl-classics-flag + (clipboard-kill-ring-save beg end) + (if (fboundp 'set-transient-map) + (if region + (message "Sent region, type \"j\" or \"C-j\" to sent next line or block.") + (message "Sent line, type \"j\" or \"C-j\" to sent next line or block.")) + (if region + (message "Sent region.") + (message "Sent line."))) + (apdl-send-to-classics)) + ((apdl-process-running-p) + (setq code (buffer-substring-no-properties beg end)) + (comint-send-string process + ;; "\n"); why did I do \n? + (concat code "")) + (display-buffer-other-frame (concat "*" apdl-process-name "*")) + ;; Issue a hint to the user + (if (fboundp 'set-transient-map) + (if region + (message "Sent region, type \"j\" or \"C-j\" to sent next line or block.") + (message "Sent line, type \"j\" or \"C-j\" to sent next line or block.")) + (if region + (message "Sent region.") + (message "Sent line.")))) + (t + (clipboard-kill-ring-save beg end) + (if (fboundp 'set-transient-map) + (if region + (message "Copied region, type \"j\" or \"C-j\" to copy next line or block.") + (message "Copied line, type \"j\" or \"C-j\" to copy next line or block.")) + (if region + (message "Copied region.") + (message "Copied line."))))))) + +(defun apdl-process-running-p () + "Return nil if no Ansys interpreter process is running." + (let ((proc (get-process + (if (boundp 'apdl-process-name) apdl-process-name)))) + (if proc + (string= "run" (process-status proc)) + nil))) + +(defun apdl-query-apdl-command ( &optional arg) + "Ask for a string which will be sent to the interpreter. +The string is completable to all current APDL commands and with +an optional prefix argument ARG the current command line is the +initial input." + (interactive "P") + (unless (or apdl-classics-flag (apdl-process-running-p)) + (error "No MAPDL process is running")) + (let (s) + (if arg + (setq s (read-minibuffer "Send to interpreter: " + (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)))) + (setq s (completing-read "Send to interpreter: " + apdl-help-index nil 'confirm))) + (cond + (apdl-classics-flag + (kill-new s) + (apdl-send-to-classics)) + (t + (comint-send-string (get-process + (if (boundp 'apdl-process-name) + apdl-process-name)) (concat s "\n")) + (display-buffer (concat "*" apdl-process-name "*") 'other-window))))) + +;; from product launcher: Tools -> +;; "C:\CAx\App\ANSYS Inc\v201\ansys\bin\winx64\MAPDL.exe" -g -p ansys -lch -dir "H:\" -j "file" -s read -l en-us -t -d 3D +;; Test function +;; (defun apdl-start-mapdl () +;; "Start the MAPDL interpreter (Ansys Classics) under Windows." +;; (interactive) +;; ;(setq default-directory "c:/CAx/") +;; (start-process ; asynchronous process +;; "MAPDL" "*MAPDL*" ; "c:/CAx/App/ANSYS Inc/v201/ansys/bin/winx64/MAPDL.exe" +;; apdl-ansys-program +;; "-g" "-p" apdl-license "-lch" (concat "-j " apdl-job) "-s read" "-l en-us" "-t" "-d 3D" +;; ;; (concat "-g -p " apdl-license " -j " apdl-job "-d 3D") +;; ;; (concat " -g -p " apdl-license ) +;; ;; (concat "-dir " default-directory) +;; )) + +(defun apdl-start-ansys () ; C-c C-m + "Start the MAPDL interpreter under Linux or the launcher under Windows. +For the interpreter process summarise the run's configuration +first. The specified No of cores is not shown if they are chosen +smaller than 3 (see `apdl-number-of-processors')." + (interactive) + (let (apdl-process-buffer) + (when (apdl-process-running-p) + (error "An Ansys interpreter is already running under Emacs")) + (message "Preparing an Ansys interpreter run...") + (if (y-or-n-p + (concat + "Start run? (version: " + apdl-current-ansys-version + ", license type: " apdl-license + (if (>= apdl-no-of-processors 3) + (concat ", No of processors: " (number-to-string apdl-no-of-processors)) + "") + ", job: " (if (boundp 'apdl-job) apdl-job) + " in " default-directory ", server: " apdl-license-file)) + (message "Starting the Ansys interpreter...") + (error "Function apdl-start-ansys canceled")) + (setq apdl-process-buffer + (make-comint apdl-process-name apdl-ansys-program nil + (if (>= apdl-no-of-processors 3) + (concat "-np " (number-to-string apdl-no-of-processors) + " -p " apdl-license " -j " apdl-job) + (concat "-p " apdl-license " -j " apdl-job)))) + ;; (comint-send-string (get-process apdl-process-name) "\n") + (setq apdl-classics-flag nil) + (display-buffer apdl-process-buffer 'other-window) + ;; (switch-to-buffer apdl-process-buffer) + (other-window 1) + (setq comint-prompt-regexp "BEGIN:\\|PREP7:\\|SOLU_LS[0-9]+:\\|POST1:\\|POST26:\\|RUNSTAT:\\|AUX2:\\|AUX3:\\|AUX12:\\|AUX15:") + (font-lock-add-keywords nil (list comint-prompt-regexp)))) + +(defun apdl-kill-ansys () + "Kill the current Ansys run under Emacs. +The function asks for confirmation before actually killing the +process. Warning: Ansys writes a lock file (jobname.lock) if the +process is killed and not regularly exited. You should prefer +the function `apdl-exit-ansys'." + (interactive) + (unless (apdl-process-running-p) + (error "No active Ansys solver process")) + (if (yes-or-no-p + "Do you want to kill the running MAPDL solver?") + (progn + ;; (message "Killing run...") + (delete-process (get-process apdl-process-name)) + (message "Killing Mechanical APDL run...done.") + (display-buffer (concat "*" apdl-process-name "*") 'otherwindow)) + (message "Killing of Ansys run canceled."))) + +(defun apdl-exit-ansys () + "Exit normally the current Ansys run under Emacs. +The function asks for confirmation before exiting the process +with the APDL /EXIT,all command which saves all model data." + (interactive) + (unless (apdl-process-running-p) + (error "Error: No active Ansys process")) + (if (yes-or-no-p + "Do you want to exit the Ansys run?") + (progn + (message "Trying to exit run ...") + (process-send-string (get-process apdl-process-name) + "finish $ /exit,all\n")) + ;; (setq mode-line-process (format ":%s" (process-status apdl-process))) + ;; (force-mode-line-update)) + (error "Exiting of Ansys run canceled"))) + +;; Unfortunately there's no html TOC for the locally installed help +;; pages yet (v201) so it remains only the online help +;; https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/main_page.html?lang=en +(defun apdl-start-ansys-help-page () + "Start the Ansys main online help page." + (interactive) + (let ((file "main_page.html")) + (browse-url (concat "https://ansyshelp.ansys.com/" + "account/secured?returnurl=/Views/Secured/" + file)) + ;; (if (string> apdl-current-ansys-version "v200") + ;; (browse-url (concat "https://ansyshelp.ansys.com/" + ;; "account/secured?returnurl=/Views/Secured/corp/" + ;; apdl-current-ansys-version "/en/" file)) + ;; (browse-url (concat "https://ansyshelp.ansys.com" + ;; "/account/secured?returnurl=/Views/Secured/corp/" + ;; apdl-current-ansys-version "/" file))) + )) + +;; 2021-10-14 +(defun apdl-start-ansys-customer-portal-site () + "Start the Ansys Customer Portal site in a browser. +You need to register or have an account." + (interactive) + (browse-url "https://support.ansys.com/Home/HomePage")) + +(defun apdl-start-ansys-help () + "Start the Ansys Help Viewer. +When there is no local help installed or online help is +configured you will be redirected to the main Ansys online help +page. + +Alternatively, you can use the APDL command line \"/SYS, +anshelp201\" for a Unix system (AnsysHelpViewer.exe for a Windows +operating system) when running Ansys MAPDL interactively. +Provided that `anshelp201' is found in the search paths for +executables (these are stored in the PATH environment variable on +both systems)." + (interactive) + (unless apdl-ansys-help-program + (error "Help executable `apdl-ansys-help-program' not set")) + (progn + (cond + (apdl-is-unix-system-flag + (start-process "apdl-ansys-help-program" nil apdl-ansys-help-program) + (message "Started the Ansys Help Viewer...")) + ((string= system-type "windows-nt") + (if (fboundp 'w32-shell-execute) + (w32-shell-execute + "Open" (concat "\"" apdl-ansys-help-program "\"") ) + (error "Function w32-shell-execute not bound")) + (message "Started the Ansys Help Viewer...")) + (t + (error "Can only start the Ansys help on Windows and GNU-Linux systems"))))) + +;; thing-at-point command, get- or parametric function +;; ~ and * are symbol components under a-m mode, paren ( is not! + +;; 1. we are on a keyword, first functions, then element or command +;; 2. we are behind a keyword, first function, then e. or c. +;; 3. we are before a keyword (for example in indentation) +;; 4. we are in a default command with only commas + +;; defun is used in apdl-browse-apdl-help searching in apdl-help-index +(defun apdl-search-keyword() + "Search and return a valid keyword string from the current line. +Signal an error if the cursor is in an empty line or no valid +keyword from `apdl-help-index' is found." + (when (apdl-in-empty-line-p) + (error "Cannot find a keyword in an empty line")) + (let* ((pt (point)) + (re "~/*[:word:]") ; keyword components + (lbp (line-beginning-position)) + ;; (eolp (save-excursion (end-of-line) (point))) + ;; 1. we are on a keyword + (str (upcase (buffer-substring-no-properties + (save-excursion + (+ pt (skip-chars-backward re lbp))) + (save-excursion + (+ pt (skip-chars-forward re) + (skip-chars-forward "(")))))) + (cmpl (try-completion str apdl-help-index))) + ;; (message "keyword: %s" str) + + ;; 2. possibly behind a function keyword + (when (or (string= str "") (not cmpl)) + (save-excursion + (skip-chars-backward "^(") + (setq pt (point) + str (upcase + (buffer-substring-no-properties + (+ pt (skip-chars-backward "(" lbp) + (skip-chars-backward re lbp)) + pt)) + cmpl (try-completion str apdl-help-index)))) + + ;; 3. try command keyword at indentation + (when (or (string= str "") (not cmpl)) + ;; we are surrounded by whities, or not on a valid keyword, try + ;; the first command (possibly behind an comment char) + (save-excursion + (move-beginning-of-line 1) + (skip-chars-forward " !") + (setq pt (point) + str (upcase + (buffer-substring-no-properties pt + (+ pt (skip-chars-forward re)))))) + (setq cmpl (try-completion str apdl-help-index))) + + ;; output + (cond ((stringp cmpl) ; not unique + cmpl) + ((not cmpl) + (error "\"%s\" is not a valid keyword" str)) + (t ; perfect match + str)))) + +(require 'browse-url) + +(defun apdl-browse-ansys-apdl-manual () + "Open the Ansys Parametric Design Language Guide in a browser." + (interactive) + (let ((file "ans_apdl/Hlp_P_APDLTOC.html") + (path apdl-ansys-help-path)) + (if path + ;; file:/// is working since at least Emacs-27 (windows and + ;; linux) 2021-08, see -browse-apdl-help!!! + ;;(browse-url-of-file (concat "file:///" path file)) + (browse-url-of-file (concat path file)) + (if (string> apdl-current-ansys-version "v200") + (browse-url + (concat "https://ansyshelp.ansys.com/" + "account/secured?returnurl=/Views/Secured/corp/" + apdl-current-ansys-version "/en/" file)) + (browse-url (concat "https://ansyshelp.ansys.com/" + "account/secured?returnurl=/Views/Secured/corp/" + apdl-current-ansys-version "/" file)))))) + +;; strategy: local help path unavailable -> online help (> V24R1 public site) +(defun apdl-browse-apdl-help (&optional arg) + "Browse the Ansys help for APDL commands, elements and other topics. + +ATTENTION: If you are using the Ansys online help - default since +V20R1 up to V24R2 - then you need to register at the Ansys help +site! Please start some help topic with an Ansys application, +afterwards you can use APDL-Mode for pin-pointing your topics. + +For a faster access I recommend installing the local Ansys help +and or using Emacs' own `eww' text Browser. + +The function is looking for the next keyword before or at the +cursor location. If that fails the command is looking for the +keyword at the line beginning. (This is working in a comment +line as well.) If there is an optional argument ARG, query for a +manual search keyword input. Besides the regular command and +element names you can also input predefined help sections or +element categories. The use of completions is advisable, for +example: Type the character `\"' and the key and you will +see completions of the following: + +Help sections: + +\"RELEASE NOTES\" +\"CONTACT TECHNOLOGY GUIDE\" +\"PARAMETRIC DESIGN LANGUAGE GUIDE\" +\"STRUCTURAL ANALYSIS GUIDE\" +\"ADVANCED ANALYSIS TECHNIQUES GUIDE\" +\"MATERIAL MODELS\" + +Element categories: + +\"SHELLS\" = \"ALL\"SHELLS +\"PLANES\" = \"ALL\"PLANES +\"SOLIDS\" = \"ALL\"SOLIDS + +\"ALL\" -- Element categories + +\"ALL\"BEAMS -- Beam elem. +\"ALL\"CIRCUS -- Electric/magnetic circuit elem. +\"ALL\"COMBINS -- Combination elem. +\"ALL\"COMBIS -- Combination elem. +\"ALL\"CONTACS -- Contact elem. +\"ALL\"CONTAS -- Contact elem. +\"ALL\"CPTS -- Coupled pore-pressure mechanical solid elem. +\"ALL\"FLUIDS -- Fluid elem. +\"ALL\"FOLLW -- Follower load elem. +\"ALL\"HFS -- High Frequency elem. +\"ALL\"HSFLDS -- Hydrostatic elem. +\"ALL\"INFINS -- Infinite Boundary/Solid elem. +\"ALL\"INTERS -- Interface magnetic/gasket/cohesive elem. +\"ALL\"LINKS -- Link radiation/conduction/convection/thermal-electric/spar/\ +elem. +\"ALL\"MASS -- Mass elem +\"ALL\"MATRIXS -- Matrix stiffness/damping/super elem +\"ALL\"MESHS -- Mesh facet elem. +\"ALL\"MPCS -- Structural multipoint constraint +\"ALL\"PIPES -- Pipe/Elbow elem. +\"ALL\"PLANES -- Plane elem. +\"ALL\"PRETS -- Pretension combination elem. +\"ALL\"REINF -- Reinforcing elem. +\"ALL\"ROMS -- Reduced order electrostatic-structural coupled-field elem. +\"ALL\"SHELLS -- Shell elem. +\"ALL\"SOLIDS -- Solid elem. +\"ALL\"SOLSHS -- Structural solid shell elem. +\"ALL\"SOURCS -- Magnetic Electric Current source elem. +\"ALL\"SURFS -- Surface elem. +\"ALL\"TARGES -- Target elem. +\"ALL\"TRANS -- Electromechanical solid/transducer elem." + (interactive "P") + (let ( + file + (path apdl-ansys-help-path) ;local help path + command) + (if arg + (setq command (completing-read "Browse help for keyword [TAB to complete]: " + apdl-help-index)) + (setq command (apdl-search-keyword))) + (setq file (nth 1 (assoc-string command apdl-help-index t))) + + (unless file + (error "Keyword \"%s\" is not uniquely completable" command)) + + ;; ;; we must adapt the path to various items! + ;; ;; since 201 not any longer + + ;; (cond + ;; ((string-match "_C_" file) + ;; (setq file (concat "ans_cmd/" file))) + ;; ((string-match "_E_" file) + ;; (setq file (concat "ans_elem/" file))) + ;; ((string-match "_P_APDL" file) + ;; (setq file (concat "ans_apdl/" file))) + ;; ((string-match "_G_AdvTOC" file) + ;; (setq file (concat "ans_adv/" file))) + ;; ((string-match "_G_StrTOC" file) + ;; (setq file (concat "ans_str/" file))) + ;; ((string-match "ans_mat.html" file) + ;; (setq file (concat "ans_mat/" file))) + ;; ((string-match "ctectoc.html" file) + ;; (setq file (concat "ans_ctec/" file))) + ;; ((string-match "ansysincrelease" file) + ;; (setq file (concat "ai_rn/" file))) + ;; ((string-match "ansys.theory" file) + ;; (setq file (concat "ans_thry/" file)))) + ;; (if path + ;; (progn + ;; (when (eq browse-url-browser-function 'eww-browse-url) + ;; (switch-to-buffer-other-window nil)) + ;; file:/// is not working with tramp remotely 2020-04-03 + ;; (browse-url-of-file (concat "file:/" path file))) + + ;; Emacs 27.1. file:/ is working on windows, but not for eww + ;; with svg images! And file:/ is not working under linux + ;; for eww, reverting to file:/// 2021-08-28 + ;;(browse-url-of-file (concat "file:///" path file)) + ;; reverting again for Emacs 29 and Ansys v241 + ;; (browse-url-of-file (concat path file)) + ;; ) + ;; (unless apdl-current-ansys-version + ;; (error "Please set `apdl-current-ansys-version' for reaching help pages!") + ;; ) + (cond + ( path + (when (eq browse-url-browser-function 'eww-browse-url) + (switch-to-buffer-other-window nil)) + ;; file:/// is not working with tramp remotely 2020-04-03 + ;; (browse-url-of-file (concat "file:/" path file))) + + ;; Emacs 27.1. file:/ is working on windows, but not for eww + ;; with svg images! And file:/ is not working under linux + ;; for eww, reverting to file:/// 2021-08-28 + ;;(browse-url-of-file (concat "file:///" path file)) + ;; reverting again for Emacs 29 and Ansys v241 + (browse-url-of-file (concat path file)) + ) + ;; since v201: Changed the path to the online help! Need to be + ;; online help needs corporate license registration :-/: + ( (string< (downcase apdl-current-ansys-version) "v242") + (browse-url + (concat + "https://ansyshelp.ansys.com/" + "Views/Secured/corp/" apdl-current-ansys-version "/en/" file))) + ;; PUBLIC ansyshelp.com documentation starting with v242 + ( (string> apdl-current-ansys-version "v241") + (browse-url + (concat + "https://ansyshelp.ansys.com/public/" + "/Views/Secured/corp/" apdl-current-ansys-version "/en/" file)))))) + +(defun apdl-process-status () + "Show the process status in the Emacs command line (minibuffer). + + `run' + for a process that is running. + `stop' + for a process that is stopped but continuable. + `exit' + for a process that has exited. + `signal' + for a process that has received a fatal signal. + `open' + for a network connection that is open. + `closed' + for a network connection that is closed. Once a connection + is closed, you cannot reopen it, though you might be able to + open a new connection to the same place. + `connect' + for a non-blocking connection that is waiting to complete. + `failed' + for a non-blocking connection that has failed to complete. + `listen' + for a network server that is listening. + `nil' + if PROCESS-NAME is not the name of an existing process." + (interactive) + (let ((status (process-status apdl-process-name))) + (if status + (message "Ansys process is in state \"%s\"" ; process identification No: %d" + (symbol-name status)) + (message "No Ansys interpreter process is running.")))) + +(defun apdl-batch-process-status () + "Show the process status in the Emacs command line (minibuffer). + + `run' + for a process that is running. + `stop' + for a process that is stopped but continuable. + `exit' + for a process that has exited. + `signal' + for a process that has received a fatal signal. + `open' + for a network connection that is open. + `closed' + for a network connection that is closed. Once a connection + is closed, you cannot reopen it, though you might be able to + open a new connection to the same place. + `connect' + for a non-blocking connection that is waiting to complete. + `failed' + for a non-blocking connection that has failed to complete. + `listen' + for a network server that is listening. + `nil' + if PROCESS-NAME is not the name of an existing process." + (interactive) + (let ((status (process-status apdl-batch-process))) + (if status + (message "Ansys batch process is in state \"%s\"" ; process identification No: %d" + (symbol-name status)) + (message "No Ansys batch process is running.")))) + + +(defun apdl-occur () + "Show selected licenses in an occur buffer. +Interesting licenses are compiled in the string +`apdl-license-occur-regexp' which is used in the function +`apdl-license-status'." + (interactive) + (occur + (mapconcat 'identity apdl-license-occur-regexp "\\|"))) + +;;;###autoload +(defun apdl-user-license-status () + "Display only licenses which are used by the user. +Show the status for the user `apdl-username' in a separate buffer +*User-Licenses*. The license type variable `apdl-license' +determines a highlighting of the license server summary rows. +There are additional keybindings for the license buffer +*User-licenses*: + +- `d' for a license description of all available features +- `g' for updating the license status +- `?' and `h' for showing this help, +- `l' for the general license status and +- `q' for burying the *User-licenses* buffer +- `Q' for killing the Buffer" + (interactive) + (require 'apdl-mode) + (unless apdl-initialised-flag + (apdl-initialise)) + (cond + ((and apdl-lmutil-program apdl-license-file) + ;; lmutil calls with many license server specified takes loooooonnnnggg + (message "Retrieving user licenses, this may take some time...") + (with-current-buffer (get-buffer-create "*User-licenses*") + (delete-region (point-min) (point-max))) + ;; syncronous call + (call-process apdl-lmutil-program nil "*User-licenses*" nil "lmstat" "-c " apdl-license-file "-a") + (let ((user apdl-username)) + (with-current-buffer "*User-licenses*" + ;; below key settings are only allowed in fundamental mode + ;; otherwise it supposedly overwrites major modes keymaps! + (local-set-key (kbd "Q") 'kill-this-buffer) + (local-set-key (kbd "q") 'bury-buffer) + (local-set-key (kbd "d") (lambda () + (interactive) + (apdl-license-status 1))) + (local-set-key (kbd "h") (lambda () + (interactive) + (describe-function + 'apdl-user-license-status))) + (local-set-key (kbd "?") (lambda () + (interactive) + (describe-function + 'apdl-user-license-status))) + (local-set-key (kbd "l") 'apdl-license-status) + (local-set-key (kbd "g") 'apdl-user-license-status) + + ;; remove empty lines + (goto-char (point-min)) + (delete-matching-lines "^$") + + ;; remove lines with expiry: date + (goto-char (point-min)) + (delete-matching-lines "expiry:") + + ;; shorten lines + (goto-char (point-min)) + (while (re-search-forward "Total of \\|Users of " nil t) + (replace-match "")) + + ;; keep either lines with user or lines not beginning with + ;; whitespace + (goto-char (point-min)) + (keep-lines (concat "^[^ ]\\|" user)) + + ;; keep double line only with user in 2nd line + (goto-char (point-min)) + (keep-lines (concat "^[^ ]+.*\n[ ]+" user)) + + ;; add some comments + (goto-char (point-min)) + (insert (propertize + (concat " -*- User license status" ;" from " apdl-license-file + " type h or ? for help -*-\n") 'face 'match)) + (goto-char (point-max)) + (insert "\n") + (insert (propertize (concat (current-time-string) "\n") + 'face 'match)) + + ;; on Windows the license stat buffer doesn't move to point without: + (unless apdl-is-unix-system-flag + (set-window-point (get-buffer-window "*User-licenses*") (point))))) + (unless (equal (current-buffer) (get-buffer "*User-licenses*")) + (display-buffer "*User-licenses*" 'otherwindow)) + (message "Updated user license status: %s." (current-time-string))) + (t + (message "No license information or lmutil program found")))) + +;;;###autoload +(defun apdl-license-status (&optional features) + "Display the lmutil license status. +With the optional argument FEATURES non nil summarise all license +features with the Ansys license feature description. Show the +status and summary in a separate buffer, the license type +variable `apdl-license' determines a highlighting of the license +server summary rows. There are additional keybindings for the +license buffer *APDL-licenses*: + +- `g' updating the license status, +- `d' updating the license status with feature descriptions +- `o' for showing an occur buffer with the interesting licenses from + `apdl-license-occur-regexp', +- `u' for displaying all the user license, +- `?' and `h' for showing this help, +- `Q' for killing the Buffer and +- `q' for burying it below another buffer." + (interactive "P") + (require 'apdl-mode) + (let (bol eol match desc (lic-buffer "*APDL-licenses*")) + (unless apdl-initialised-flag (apdl-initialise)) + (cond + ((and apdl-lmutil-program apdl-license-file) + ;; lmutil calls with many license servers specified takes loooooonnnnggg + (if features + (message + "Retrieving summary license (%s) status, please wait." apdl-license) + (message + "Retrieving lmutil license (%s) status, please wait..." apdl-license)) + (with-current-buffer (get-buffer-create lic-buffer) + (delete-region (point-min) (point-max))) + ;; syncronous call + (call-process apdl-lmutil-program nil lic-buffer nil "lmstat" "-c " + apdl-license-file "-a") + (with-current-buffer lic-buffer + (setq-local truncate-lines t) + + ;; remove uninteresting licenses + + ;; (goto-char (point-min)) + ;; (delete-matching-lines "\\") + + ;; below key settings are only allowed in fundamental mode + ;; otherwise it supposedly overwrites major modes keymaps! + (local-set-key (kbd "Q") 'kill-this-buffer) + (local-set-key (kbd "q") 'bury-buffer) + (local-set-key (kbd "d") (lambda () + (interactive) + (apdl-license-status 1))) + (local-set-key (kbd "g") 'apdl-license-status) + (local-set-key (kbd "o") 'apdl-occur) + (local-set-key (kbd "h") (lambda () + (interactive) + (describe-function + 'apdl-license-status))) + (local-set-key (kbd "?") (lambda () + (interactive) + (describe-function + 'apdl-license-status))) + (local-set-key (kbd "u") 'apdl-user-license-status) + + ;; remove empty lines + (goto-char (point-min)) + (delete-matching-lines "^$") + + ;; remove lines with expiry: date + (goto-char (point-min)) + (delete-matching-lines "expiry:") + + ;; ;; sorting + ;; (sort-lines nil (point-min) (point-max)) + (when features + ;; remove user parts + (goto-char (point-min)) + (while (not (eobp)) + (push-mark (point)) + (search-forward-regexp "Users of " nil t) + (beginning-of-line) + (delete-region (mark) (point)) + (forward-line 1)) + (goto-char (point-max)) + (push-mark (point)) + (search-backward-regexp "Users of " nil t) + (forward-line 1) + (delete-region (mark) (point)) + ;; shorten lines + (goto-char (point-min)) + (while (re-search-forward "Total of \\|Users of " nil t) + (replace-match "")) + ;; insert explanations + (goto-char (point-min)) + (while (re-search-forward "^\\(.+\\):" nil t) + (setq match (match-string 1)) + (message "match string: %s" match) + (setq desc + (cdr + (assoc + (intern match) + apdl-license-description))) + (message "assoc match: %s" desc) + (when match + (replace-match (concat match ":" desc))))) + + ;; shorten lines + (goto-char (point-min)) + (while (re-search-forward "Total of \\|Users of " nil t) + (replace-match "")) + + ;; add some comments + (goto-char (point-min)) + (insert (propertize + (concat " -*- License status" ; from " apdl-license-file + ", type h or ? for help -*-\n") 'face 'match)) + (goto-char (point-max)) + (insert "\n") + (insert (propertize (concat (current-time-string) "\n") + 'face 'match)) + + ;; higlight current -license + (goto-char (point-min)) + ;; issue with the apdl-license-categories "ansys" and the + ;; apdl-license-file server name. LMUTIL puts a colon after + ;; the license types, used to make the search unique and "^" + ;; suppresses composed license names e.g. "cfdpreppost" + (search-forward-regexp (concat "^" apdl-license ":") nil t) + (forward-line) + (setq eol (point)) + (forward-line -1) + (setq bol (point)) + (put-text-property bol eol 'face 'font-lock-warning-face) + ;; on Windows the license stat buffer doesn't move to point without: + (unless apdl-is-unix-system-flag + (set-window-point (get-buffer-window lic-buffer) (point)))) + (unless (equal (current-buffer) (get-buffer lic-buffer)) + (display-buffer lic-buffer 'otherwindow)) + (message "Updated license status: %s." (current-time-string))) + (t + (message "No license information or lmutil program found"))))) + +;; starting in GUI mode (/menu,on) does inhibit the process intercommunication +;; => /menu,graph +;; env variable ANS_CONSEC=YES disables dialog boxes + +(defun apdl-start-graphics () + "Start - in interactive mode - the MAPDL display window." + (interactive) + (unless + (apdl-process-running-p) + (error "No interactive MAPDL process is running")) + (progn (comint-send-string + (get-process apdl-process-name) + ;; "/show,X11c\n/menu,grph\n" + "/show,3d\n/menu,grph\n") + (display-buffer (concat "*" apdl-process-name "*") 'other-window))) + +(defun apdl-start-pzr-box () + "Start the Ansys Pan/Zoom/Rotate dialog box." + (interactive) + (cond + (apdl-classics-flag + (kill-new "/ui,view\n") + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) "/ui,view\n") + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No interactive MAPDL process running or Classics GUI can be found")))) + +(defun apdl-iso-view () + "Show current display in isometric view (/view,,1,1,1)." + (interactive) + (cond + (apdl-classics-flag + (kill-new "/view,,1,1,1\n/replot\n") + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) "/view,,1,1,1\n/replot\n") + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No interactive MAPDL process running or Classics GUI can be found")))) + +(defun apdl-move-up (arg) + "Move geometry up ARG steps in the graphics window. +A Negative ARG moves ARG steps down." + (interactive "p") + (cond + (apdl-classics-flag + (kill-new (format "/focus,,,-0.25*(%d),,1\n/replot\n" arg)) + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) + (format "/focus,,,-0.25*(%d),,1\n/replot\n" arg)) + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No Ansys process is running")))) + +(defun apdl-move-down (arg) + "Move geometry down ARG steps in the graphics window. +A Negative ARG moves ARG steps up." + (interactive "p") + (apdl-move-up (- arg))) + +(defun apdl-move-right (arg) + "Move geometry right ARG steps in the graphics window. +A Negative ARG moves ARG steps left." + (interactive "p") + (cond + (apdl-classics-flag + (kill-new (format "/focus,,-0.25*(%d),,,1\n/replot\n" arg)) + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) + (format "/focus,,-0.25*(%d),,,1\n/replot\n" arg)) + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No Ansys process is running")))) + +(defun apdl-move-left (arg) + "Move geometry left ARG steps in the graphics window. +A Negative ARG moves ARG steps right." + (interactive "p") + (apdl-move-right (- arg))) + +(defun apdl-zoom-in () + "Zoom into the graphics window." + (interactive) + (cond + (apdl-classics-flag + (kill-new "/dist,,.7,1\n/replot\n") + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) "/dist,,.7,1\n/replot\n") ; valid in any processor + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No interactive MAPDL process running or Classics GUI can be found")))) + +(defun apdl-zoom-out () + "Zoom out of the graphics window." + (interactive) + (cond + (apdl-classics-flag + (kill-new "/dist,,1.4,1\n/replot\n") + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) "/dist,,1.4,1\n/replot\n") ; valid in any processor + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No interactive MAPDL process running or no Classics GUI can be found")))) + +(defun apdl-replot () + "Replot the Ansys graphics screen." + (interactive) + (cond + (apdl-classics-flag + (kill-new "/replot\n") + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) "/replot\n") ; valid in any processor + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No interactive MAPDL process running or no Classics GUI can be found")))) + +(defun apdl-fit () + "Fit FEA entities to the Ansys interactive graphics screen." + (interactive) + (cond + (apdl-classics-flag + (kill-new "/dist\n/replot\n") + (apdl-send-to-classics)) + ((apdl-process-running-p) + (comint-send-string (get-process apdl-process-name) "/dist\n/replot\n") + (display-buffer (concat "*" apdl-process-name "*") 'other-window)) + (t + (error "No interactive MAPDL process running or no Classics GUI can be found")))) + +(defun apdl-ansys-program ( exec) + "Change the Ansys executable name to EXEC. +And set the variable `apdl-ansys-program' accordingly if the for +executable EXEC can be found on the system's search path." + (interactive "FAnsys interpreter executable: ") + (when (string= exec "") + (setq exec apdl-ansys-program)) + (setq apdl-ansys-program exec) + (if (executable-find exec) + (message "apdl-ansys-program is set to \"%s\"." apdl-ansys-program) + (error "Cannot find Ansys interpreter executable \"%s\" on the system" exec))) + +(defun apdl-ansys-help-program ( exec) + "Change the Ansys help executable to EXEC and check for its existence. +And store the value EXEC in the variable `apdl-ansys-help-program'." + (interactive "FAnsys help executable: ") + (when (string= exec "") + (setq exec apdl-ansys-help-program)) + (setq apdl-ansys-help-program exec) + (if (executable-find exec) + (message "apdl-ansys-program is set to \"%s\"." exec) + (error "Cannot find the Ansys help executable \"%s\" on the system" exec))) + +(defun apdl-lmutil-program ( exec) + "Change the Ansys license management utility executable to EXEC. +And specify it in the variable `apdl-lmutil-program'. The +function inserts the string `default-directory' in the prompt +when the variable `insert-default-directory' is not nil. For +Lin64 it is the `lmutil' executable +/ansys_inc/shared_files/licensing/linx64/lmutil." + (interactive "FAnsys License Management Utility executable: ") + (when (string= exec "") ; use default + (setq exec apdl-lmutil-program)) + (setq apdl-lmutil-program exec) + (if (executable-find exec) + (message "apdl-lmutil-program is set to \"%s\"." apdl-lmutil-program) + (error "Cannot find Ansys LM Utility executable \"%s\" on this system" exec))) + +(defun apdl-job () + "Change the Ansys job name. +And write it into the variable `apdl-job'." + (interactive) + (let ((job-name)) + (if apdl-job + (setq job-name (read-string "job name: " apdl-job)) + (setq job-name (read-string "job name: "))) + (if (string= job-name "") + (error "Variable `job-name' must not be the empty string") + (message (concat "Job name is set to \"" job-name "\"."))) + (setq apdl-job job-name))) + +(defun apdl-no-of-processors () + "Change the No of processors to use for an Anys run. +The number of processors will be put into the integer variable +`apdl-no-of-processors'. If this number is below 3 the variable +won't affect the run definition since the default No of +processors (if available) for a structural analysis in Ansys is +2." + (interactive) + (let ((no-string (number-to-string apdl-no-of-processors)) + no + query + s) + (setq query (concat "Put in the No of processors to use [" no-string "]: ") + s (read-string query nil nil no-string) + no (string-to-number s)) + (if (integerp no) + (setq apdl-no-of-processors no) + (error "Specified number is not an integer")) + (message "No of processors for the next run definition is %d" apdl-no-of-processors))) + +(defun apdl-license-file (file) + "Change the Ansys license file name or license server(s). +And specify the string FILE in the variable `apdl-license-file' +which can either be the license file name or license server(s) +specification. The server specification must include the port +number (default port 1055), multiple server names are separated +by colons `:' on Linux, semi-colons `;' on Windows , for example +\"27005@rbgs421x:27005@rbgs422x\". The license specification is +stored in the environment variable APDL-LICENSE-FILE." + (interactive + (list (read-string + (concat "License server or license file [" apdl-license-file "]: ") + nil nil apdl-license-file))) + (cond ((null file) + (buffer-name)) + (t + (setq apdl-license-file file) + (setenv "AnsysLMD_LICENSE_FILE" file) + (message (concat "Set apdl-license-file to \"" + apdl-license-file "\"."))))) + +(defun apdl-ansysli-servers ( servers) + "Change the Ansys interconnect servers to SERVERS. +And specify it in the variable `apdl-ansysli-servers'. The +server specification must include the port number even when it is +2325, the default port number: port_number@server_name, multiple +server names are separated by a colon, for example +\"rbgs421x:rbgs422x:...\"." + (interactive + (list (read-string (concat "Interconnect license server(s) [" apdl-ansysli-servers "]: ") + nil nil apdl-ansysli-servers))) + (cond ((null servers) + (buffer-name)) + (t + (setq apdl-ansysli-servers servers) + (setenv "AnsysLI_SERVERS" servers) + (message (concat "Set apdl-ansysli-servers to \"" + apdl-ansysli-servers "\"."))))) + +;; FIXME: +;; (error "Please specify the license server information with +;; the `apdl-license-file' function or either set +;; AnsysLMD_LICENSE_FILE or LM-LICENSE-FILE environment +;; variable") + +;;;###autoload +(defun apdl-license () + "Change the Ansys license type. +And store it in the variable `apdl-license'." + (interactive) + (let ((lic (if (not (string= apdl-license "")) + apdl-license + "struct"))) + (setq apdl-license + (completing-read + (concat "License type [" lic "] (TAB for completion): ") + apdl-license-categories + nil nil nil nil lic)) + (message + (concat "Ansys license type is now set to \"" apdl-license "\".")))) + +(provide 'apdl-process) + +;;; apdl-process.el ends here + +;; Local Variables: +;; mode: outline-minor +;; indicate-empty-lines: t +;; show-trailing-whitespace: t +;; word-wrap: t +;; time-stamp-active: t +;; time-stamp-format: "%:y-%02m-%02d" +;; End: diff --git a/lisp/apdl-mode/apdl-template.el b/lisp/apdl-mode/apdl-template.el new file mode 100644 index 00000000..63c85acf --- /dev/null +++ b/lisp/apdl-mode/apdl-template.el @@ -0,0 +1,3332 @@ +;;; apdl-template.el --- APDL code templates for the APDL-Mode -*- lexical-binding: t; -*- + +;; Copyright (C) 2006 - 2025 H. Dieter Wilhelm GPL V3 + +;; Author: H. Dieter Wilhelm +;; Maintainer: H. Dieter Wilhelm +;; Package-Requires: ((emacs "25.1")) +;; Keywords: languages, convenience, Ansys, tools, APDL +;; URL: https://github.com/dieter-wilhelm/apdl-mode + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; This code is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; This lisp script is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +;; +;; Permission is granted to distribute copies of this lisp script +;; provided the copyright notice and this permission are preserved in +;; all copies. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, you can either send email to this +;; program's maintainer or write to: The Free Software Foundation, +;; Inc.; 675 Massachusetts Avenue; Cambridge, MA 02139, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Comment: +;; Convention used for outlining +;; !@ is surrounded by 30 equal signs !! ============================== +;; !@ === Title +;; !@@ by 30 dashes !! ------------------------------ +;; !@@ --- Subtitle +;; !@@@ by 30 dots !! .............................. +;; !@@@ ... Subsubtitle + +;; Separator lines with `s [SPACE] +;; !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Commentary: +;; Collection of APDL templates + +;;; Code: + +(require 'apdl-initialise) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- variables --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +(defcustom apdl-custom-template-directory + apdl-mode-install-directory + "Directory where your APDL template macros reside. +Collect your APDL macro files into this directory and define your +own templates with these in apdl-templates.el: + +(define-skeleton apdl-skeleton-your-example-template + \"Your documentation for your example template.\" + nil + (insert-file + (concat apdl-custom-template-directory + \"your-example-template.mac\"))) + +Then you can preview or include it with C-c C-s, as the others. +" + :type '(directory) + :group 'APDL-template) + + +(defvar apdl-skeleton-overlay) +(make-local-variable 'apdl-skeleton-overlay) + +(defvar apdl-last-skeleton nil + "Variable containing the last previewed skeleton.") + +(defconst apdl-default-template-directory + (concat apdl-mode-install-directory "template/") + "Directory where the APDL-Mode template macro files reside.") + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- functions --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare-function apdl-mode "apdl-mode") + +(defun apdl-display-skeleton (&optional arg) + "Display or insert code templates. +With an argument ARG not equal to 1 insert the template into the +current buffer instead of previewing it in a separate window. +You might trigger a completion of templates with the or +key and choose with the mouse 2 button." + (interactive "p") + (let* ( + (old-buffer (buffer-name)) + (new-buffer-name "*APDL-skeleton*") + (skeleton-buffer + (get-buffer-create new-buffer-name)) + s ; yellow indicator line in the preview buffer above content + ;; if skeleton window is visible in selected frame + (visible (get-buffer-window new-buffer-name nil)) + (skel-string + ;; we might want to insert it while previewing... + (if (and (not (= arg 1)) apdl-last-skeleton visible) + apdl-last-skeleton + "apdl-skeleton-")) + (skel + (if (= arg 1) + (completing-read "Preview template [TAB to complete]: " + obarray 'commandp t skel-string nil) + (completing-read "Insert template [TAB to complete]: " + obarray 'commandp t skel-string nil)))) + (setq apdl-last-skeleton skel) + (cond ((= arg 1) + (switch-to-buffer-other-window skeleton-buffer) + (setq buffer-read-only nil) + (remove-overlays) ; from beginnin and end of buffer + (setq apdl-skeleton-overlay (make-overlay 1 1)) + (kill-region (point-min) (point-max)) + (funcall (intern-soft skel)) + ;; (apdl-skeleton-numbering-controls) + ;; (insert "bla\n") + (goto-char (point-min)) + (unless (eq major-mode 'apdl-mode) + (apdl-mode)) + (setq s (propertize + (concat "-*- APDL template: " + skel " -*-\n") 'face 'match)) + (overlay-put apdl-skeleton-overlay 'before-string s) + (set-buffer-modified-p nil) + (setq buffer-read-only t) + (switch-to-buffer-other-window old-buffer)) + (t + (funcall (intern-soft skel)))))) + +;; for abbrevs +(define-skeleton apdl_do + "Insert a *do .. *enddo loop." + nil + "*do,I,1,10,1" > \n + - \n + "*cycle ! continue loop but bypass below commands" > \n + "nplot ! this command is not executed *cycle" \n + "*enddo" > \n) + +;; for abbrevs +(define-skeleton apdl_if + "Insert an *if .. *endif construct." + nil + "*if,I,eq,J,then" > \n + > _ \n + "!! *elseif,K,gt,L" > \n + "!! *else" > \n + "*endif" >) + +;; switched strategy to include APDL files into template +;; definitions. This is way easier for users to setup their own +;; example templates! + +(define-skeleton apdl-skeleton-2d-structural + "Short but complete plane stress structural APDL template." + nil + "/com,==============================================================\n" + "/com, Inserted: "(current-time-string)", APDL-Mode: "apdl-mode-version"\n" + "/com,==============================================================\n" + (insert-file + (concat apdl-wb-default-template-directory + "plane-stress_structural_example.mac"))) + + +;; ------------- "old" skeleton descriptions ------- + +(define-skeleton apdl-skeleton-looping + "Control constructs" + nil + "!! .............................." \n + "!@@@ ... Branching, looping and control structures ..." \n + "!! .............................." \n + \n + "!! if controls" \n + "*if,I,eq,1,then" \n + "*elseif,I,le,10" > \n + "*else" > \n + "*endif" > \n + \n + "!! *if,val1,oper1,val2,base1,val3,oper2,val4,base2" \n + "!! oper: eq,ne,lt,gt,le,ge,ablt,abgt," \n + "!! base: stop,exit,cycle,and,or,xor" \n + \n + "!! do loops" \n + "*do,I,1,6,2" \n + "!!*exit ! exit loop" > \n + "*cycle" > \n + "nplot ! this command is not executed *cycle" \n + "*enddo" > \n + \n + "*dowhile,PAR ! do until PAR == 0" \n + "PAR = 0" \n + "!!*exit ! stop do loop" > \n + "*cycle" > \n + "nplot ! this command is not executed <- *cycle" \n + "*enddo" > \n + \n + "!! implicit looping" \n + "lfillt,(1:2),(3:4),5" \n + \n + "!! command repetition" \n + "e,1,2" \n + "*repeat,5,0,1" \n + \n + "!! goto branching, not in interactive sessions possible!" \n + "*go,:BRANCH ! or with label STOP like /eof" \n + ":BRANCH" \n) + +;; str must occur before it can be used internally (setq str +;; read-skeleton...) +(define-skeleton apdl-skeleton-section-separator + "Insert comment section strings to distinguish topics." + "Which section type? section type 1, subsect.: 2, or subsubsect.: [3] " + "!!" str + (cond ((string= str "1") + (insert "==============================")) + ((string= str "2") + (insert "------------------------------")) + ((string= str "3") + (insert "..............................")) + (t + (insert "3.............................."))) + \n + (cond ((string= str "1") + (insert (concat "!" apdl-outline-string " === "))) + ((string= str "2") + (insert (concat "!" apdl-outline-string apdl-outline-string " --- "))) + (t + (insert (concat "!" apdl-outline-string apdl-outline-string + apdl-outline-string " ... ")))) + (skeleton-read "Brief description of the section: ") + (cond ((string= str "1") + (insert " =====")) + ((string= str "2") + (insert " ----")) + (t + (insert " ..."))) + \n + (cond ((string= str "1") + (insert "!! ==============================")) + ((string= str "2") + (insert "!! ------------------------------")) + (t + (insert "!! .............................."))) + \n + \n) +;; str must occur somewhere outside cond otherwise an error!! + +(define-skeleton apdl-skeleton-separator-line + "Insert one comment line to separate topics." + nil + "!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" \n + \n) + +(define-skeleton apdl-skeleton-header + "Insert a file header for an APDL script. +Together with an Emacs Time-stamp string. You might update the +time stamp with the Emacs command M-x `time-stamp'." + "Brief description of the file: " + "! ==============================" \n + "!" apdl-outline-string " === Header =====" \n + "! ==============================" \n + ;; "!! FILENAME: " (file-name-nondirectory (if (buffer-file-name) + ;; (buffer-file-name) + ;; (buffer-name))) \n + "!! Time-stamp: <" (current-time-string) ">" \n + "!! Ansys version: " apdl-current-ansys-version \n + ;; "!! UNITS: mm-t-s" \n + "!! Note: " str \n + "!! ------------------------------" \n + \n + "!! fini" \n + "!! /clear" \n + "!! y" \n + "/units,mpa ! indicate mm-t-s unit system" \n + \n) + +(define-skeleton apdl-skeleton-information + "Information gathering with APDL commands." + nil + ;; "!! ------------------------------" \n + ;; "!@@ -- informations --" \n + ;; "!! ------------------------------" \n + "!! .............................." \n + "!@@@ ... Measurements ..." \n + "!! .............................." \n + \n + "nx(NodeNo)|y|z ! x|y|z-coordinate of node NodeNo " \n + "kx(KPoint)|y|z ! x|y|z-coordinate of KP KeyPoint " \n + "distnd(N1,N2) ! distance between nodes" \n + "distkp(k1,k2) ! distance between keypoints" \n + "disten(e,n) ! distance between element centroid and node" \n + \n + "!! .............................." \n + "!@@@ ... Center of mass, mass, and mass moments of inertia ..." \n + "!! .............................." \n + \n + "!! --- partial solution for mass calculation ---" \n + "/solu ! for psolve" \n + "outpr,basic,all" \n + "irlf,-1 ! inertia relief option" \n + "/output,mass_output,txt" \n + "psolve,elform ! only partial solution" \n + "psolve,elprep" \n + "/output" \n + "*list,mass_output,txt"\n + "irlist ! print inertia relief summary" \n + \n + "/prep7 ! for gsum" \n + "gsum ! for selected entities: combination of ksum, lsum, asum and vsum" \n + "!! mass, centroids, moments of inertia, length, area, volumen, ..." \n + "*get,bla,area,0,imc,y ! moment of inertia about y w.r.t. mass centroid" \n + \n + "!! .............................." \n + "!@@@ ... Job items ..." \n + "!! .............................." \n + \n + "/inquire,Job_name,jobname ! get string array jobname|directory|user|psearch" \n + "*stat,Job_name(1)" \n + "/com,This is the jobname: \"%Job_name(1)%\"" \n + "/inquire,Dirname,directory" \n + "*stat,Dirname(1)" \n + "/inquire,param,date,file,ext ! get date(size,lines) of file.ext" \n + \n + "!! .............................." \n + "!@@@ ... Stati ..." \n + "!! .............................." \n + \n + "/status ! [all],capabilities: title,units,mem,db,config,global,solu,prod" \n + "*list,file,ext ! list file content" \n + "/runst ! enter run statistics processor" \n + "/pstatus ! display window stats specifications" \n + "list: k-,l-,a-,v-,n-,e-,ce-,cp-,mp-,f-,bf-,d-,da-,dk-,dl-,fk-,af-,sf-,sfl-, \ +bfa-,bfe-,bfk-,bfl-,bfv-,ic-,r-,tb-,s-,m-,sw-" \n + \n + "*status ! parameters, arrays and abbreviations" \n + "*status,_STATUS ! return value: 0:no error, 1:note, 2:warning, 3:error" \n + "*stat,argx ! list all local ARGx values" \n + "*status,_RETURN ! some solid modelling commands return this parameter" \n + "!! (see the _return value list below)" \n + "*vstat ! status on arry operations" \n + \n + "!! .............................." \n + "!@@@ ... Material info ..." \n + "!! .............................." \n + \n + "*get,Density,dens,ID,temperature ! get the properties of material ID" \n + "mplist,all" \n + "tblist" \n + "tbplot,biso,1" \n + \n + "!! .............................." \n + "!@@@ ... Geom info ..." \n + "!! .............................." \n + \n + "/prep7" \n + "lsum ! or gsum" \n + "*get,LLen,line,,leng ! combined length of all selected lines" \n + "asum ! or gsum" \n + "*get,Area,area,,area ! combined area of all selected areas" \n + "vsum ! or gsum" \n + "*get,Volume,volu,,volu ! combined volume of all selected volumes" \n + \n + "!! .............................." \n + "!@@@ ... Solution info ..." \n + "!! .............................." \n + \n + "set,list ! list a summary of each load step" \n + "wpstyl,stat ! working plane status" \n + "status,solu" \n + \n + "!! .............................." \n + "!@@@ ... Postproc info ..." \n + "!! .............................." \n + \n + "*get,NS,active,,set,nset ! No of load steps" \n + "*get,T,active,,set,time ! Time of current set" \n + \n + "!! .............................." \n + "!@@@ ... \"stat\" database settings ... " \n + "!! .............................." \n + \n + "/prep7" \n + "etype" \n + "stat ! load step options" \n + "rcon$stat" \n + "!! prep7 stat topics" \n + "ETYPE $ stat ! - Element types" \n + "RCON $ stat ! - Real constants" \n + "MATER $ stat ! - Material properties" \n + "TBLE $ stat ! - Data table properties" \n + "PRIM $ stat ! - Solid model primitives" \n + "KEYPTS $ stat ! - Keypoints" \n + "LINE $ stat ! - Lines" \n + "AREAS $ stat ! - Areas" \n + "VOLUMES $ stat ! - Volumes" \n + "GEOMETRY $ stat ! - Solid model information" \n + "MESHING $ stat ! - Meshing" \n + "BOOL $ stat ! - Booleans" \n + "NODES $ stat ! - Nodes" \n + "ELEM $ stat ! - Elements" \n + "SELM $ stat ! - Superelements" \n + ;; Pipe is not supported any longer in v130 "PIPE $ stat ! - Pipe + ;; modeling" \n + "DIGIT $ stat ! - Node digitizing" \n + "COUPLE $ stat ! - Node coupling" \n + "CEQN $ stat ! - Constraint equations" \n + "REORDER $ stat ! - Model reordering" \n + \n + "!! solution stat topics" \n + "ATYPE $ stat ! - Analysis types" \n + "MASTER $ stat ! - Master DOF" \n + "GAP $ stat ! - Reduced transient gap conditions" \n + "DEACT $ stat ! - Element birth and death (deactivation)" \n + "LSOPER $ stat ! - Load step operations" \n + "FECONS $ stat ! - Constraints on nodes" \n + "FEFOR $ stat ! - Forces on nodes" \n + "FESURF $ stat ! - Surface loads on elements" \n + "FEBODY $ stat ! - Body loads on elements" \n + "SMCONS $ stat ! - Constraints on the solid model" \n + "SMFOR $ stat ! - Forces on the solid model" \n + "SMSURF $ stat ! - Surface loads on the solid model" \n + "SMBODY $ stat ! - Body loads on the solid model" \n + "INRTIA $ stat ! - Inertial loads" \n + "GENOPT $ stat ! - General options" \n + "DYNOPT $ stat ! - Dynamic analysis options" \n + "NLOPT $ stat ! - Nonlinear analysis options" \n + "OUTOPT $ stat ! - Output options" \n + "BIOOPT $ stat ! - Biot-Savart options" \n + "SPTOPT $ stat ! - Spectrum analysis options" \n + "SOLUOPT $ stat ! - Solution options" \n + "FLOTRAN $ stat ! - FLOTRAN data settings" \n + \n + "!! post1 stat topics" \n + "DEFINE $ stat ! - Data definition settings" \n + "SORT $ stat ! - Sort settings" \n + "PRINT $ stat ! - Print settings" \n + "DISPLAY $ stat ! - Display settings" \n + "CALC $ stat ! - Calculation settings" \n + "PATH $ stat ! - Path data settings" \n + "LCCALC $ stat ! - Load case settings" \n + "DATADEF $ stat ! - Directly defined data status" \n + "FATIGUE $ stat ! - Fatigue data status" \n + "POINT $ stat ! - Point flow tracing settings" \n + "SPEC $ stat ! - Miscellaneous specifications" \n + \n + "!! post26" \n + "extrem,2 ! post26 variable extrema listing" \n + "*get,Extr,vari,2,extrem,vmax ! get max extreme value" \n + "*get,Extr,vari,2,extrem,vmin ! get min extreme value" \n + "!! post26 stat topics" \n + "DEFINE $ stat ! - Data definition settings" \n + "OPERATE $ stat ! - Operation data" \n + "PRINT $ stat ! - Print settings" \n + "PLOTTING $ stat ! - Plotting settings" \n + \n + "!! .............................." \n + "!@@@ ... aux3 result file edit routine ..." \n + "!! .............................." \n + \n + "/aux3" \n + "list ! result statistics" \n + "!! .............................." \n + "!@@@ ... *get ..." \n + "!! .............................." \n + \n + "*get,bla,active,,mat ! [|csys|type|real|esys]" \n + \n + "*status,_RETURN ! command, documentation, _return value" \n + "!! Keypoints -" \n + "K ! Defines a keypoint - keypoint number" \n + "KL ! Keypoint on a line - Keypoint number" \n + "KNODE ! Keypoint at node - Keypoint number" \n + "KBETW ! Keypoint between two keypoints - KP number" \n + "KCENTER ! Keypoint at center - KP number" \n + "!! Lines -" \n + "BSPLIN ! Generate spline - Line number" \n + "CIRCLE ! Generate circular arc lines - First line number" \n + "L ! Line between two keypoints - Line number" \n + "L2ANG ! Line at angle with two lines - Line number" \n + "LANG ! Line tangent to two lines - Line number" \n + "LARC ! Defines a circular arc - Line number" \n + "LAREA ! Line between two keypoints - Line number" \n + "LCOMB ! Combine two lines into one - Line number" \n + "LDIV ! Divide line into two or more lines - First keypoint number" \n + "LDRAG ! Line by keypoint sweep - First line number" \n + "LFILLT ! Fillet line between two liens - Fillet line number" \n + "LROTAT ! Arc by keypoint rotation - First line number" \n + "LSTR ! Straight line - Line number" \n + "LTAN ! Line at end and tangent - Line number" \n + "SPLINE ! Segmented spline - First line number" \n + "!! Areas -" \n + "A ! Area connecting keypoints - Area number" \n + "ACCAT ! Concatenate two or more areas - Area number" \n + "ADRAG ! Drag lines along path - First area number" \n + "AFILLT ! Fillet at intersection of two areas - Fillet area number" \n + "AL ! Area bounded by lines - Area number" \n + "ALPFILL ! All loops - Area number" \n + "AOFFST ! Area offset from given area - Area number" \n + "AROTAT ! Rotate lines around axis - First area number" \n + "ASKIN ! Skin surface through guiding lines - First area number" \n + "ASUB ! Area using shape of existing area - Area number" \n + "!! Volumes - " \n + "V ! Volume through keypoints - Volume number" \n + "VA ! Volume bounded through areas - Volume number" \n + "VDRAG ! Drag area pattern to create volume - First volume number" \n + "VEXT ! Volume by extruding areas - First volume number" \n + "VOFFST ! Volume offset from given area - Volume number" \n + "VROTAT ! Volume by rotating areas - First volume number" \n) + +(define-skeleton apdl-skeleton-configuration + "Configuration skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Configurations ----" \n + "!! ------------------------------" \n + \n + "*afun,deg ! [rad],deg" \n + "Pi = acos(-1)" \n + "*afun,deg ! deg: trig. functions accept and return angle arguments" \n + "True = 1" \n + "False = 0" \n + "/mplib,read,YourLibraryPath ! define material library path" \n + "/mplib,stat ! stat defined material library paths" \n + "/units,MPA ! I'm using mostly MPA (Tmms) \ +(important only for material libs)" \n + "mpread,steel_elastic,,,lib" \n + \n + "!! --- Directory and file names -- " \n + "*dim,Dir,string,248 ! string array with maximum of 248 characters!" \n + "Dir(1) = '/very/very/very/long/path/to/heaven/'" \n + "/cwd,/tmp ! change the current working dir" \n + "filnam,bla ! change the jobname" \n + "resume ! resume the database" \n + "file ! result file" \n + "/title," _ \n + "!! --- display options ---" \n + "/plopts,wp ! switch off working plane" \n + "/plopts,wp,1 ! display working plane" \n + "/plopts,minm,0 ! 0: switch off min max" \n + "/triad,rbot ! off, orig, ltop, ..." \n + "!! --- graphics ---" \n + "/gfile,1200 ! set height resolution [800] to 1200, width=1.33*height" \n + "/graphics,power" \n + "/efacet,4" \n + "/type,4 ! better hidden line removal" \n + \n) + +(define-skeleton apdl-skeleton-view-settings + "View settings skeleton." + nil + "!! ------------------------------" \n + "!@@ --- View settings ----" \n + "!! ------------------------------" \n + \n + "/color,wbak,whit ! white background on plot window" \n + "/RGB,index,100,100,100,0" \n + "/RGB,index,0,0,0,15" \n + "immed,1 ! immediate display of generated geom. in /prep7" \n + "/graphics,power" \n + "/uis,replot,0 ! suppress automatic replot" \n + \n + "!! -- views --" \n + "/view,,1,1,1 ! viewing direction vector [0,0,1]"_ \n + "/view,,wp ! view normal to working plane" \n + "/focus,1 $ /repl ! focus wn 1 to csys,0" \n + "!! /focus,1,,.5,,1 $ /repl !focus with screen coordinate multiplier" \n + "/angle,1,10,xs,1 ! rotation {x,y,z}m global {x,y,z}s screen 1:cumulative 0: \ +absolut" \n + "/dist,1,1/2.,1 $ /repl ! 1/2:distance (zoom) to object <1 nearer/larger, \ +1:use multiplier" \n + "/dscale,all,10 ! set displacment multiplier" \n + "/zoom,1,off ! refit image to window" \n + "/zoom,1,rect,0,0,1,1 ! fit image to rectangel X1,Y1 & X2,Y2" \n + "/auto ! automatic fit mode" \n + "/angle,,5,xm,1 ! turn view about x " \n + "/angle,,-20,ym,1 ! turn view about y"\n + "/user ! keep last display scaling" \n + \n + "!! -- style options ---" \n + "/device,text,1,140 ! enlarge 140 % the text size" \n + "/plopts,minm ! switch off[on] (both!) min & max" \n + "/plopts,info,off ! switch off all descriptive text" \n + "/plopts,wp,1 ! display working plane" \n + "/plopts,wp,off ! switch off wp" \n + "/plopts,frame,off ! switch off graphics frame" \n + "/plopts,logo,off ! switch off Ansys logo" \n + "/plopts,date,1 ! show only date and not time" \n + "/plopts,title,off ! switch of title display" \n + "!! --- WB like legend display --- " \n + "/plopt,leg3,on ! contour section of legend" \n + "/plopt,leg1,on ! legend header" \n + "/plopt,info,3 ! show legend info on the left side" \n + "/udoc,,cntr,bottom ! show legend on bottom" \n + "/pstatus ! display window stats specifications" \n + \n + "!! -- wp & coordinate systems display" + "/psymb,cs,1 ! display local coord." \n + "/psymb,ndir,1 ! display (only) rotated nodal coordinates" \n + "/plopts,wp,1 ! display working plane" \n + "/plopts,wp,off ! switch off wp" \n + "/triad,off ! orig,lbot,rbot,ltop,rtop" \n + "/triad,rbot" \n + "/triad,off" \n + \n + "!! .............................." \n + "!@@@ ... Translucency / transparency ..." \n + "!! .............................." \n + \n + "/trlcy,elem,.5,all ! make all selected elements translucent" \n + \n + "!! .............................." \n + "!@@@ ... material display ..." \n + "!! .............................." \n + \n + "/number,1 ! 0:colours & numbers,1:colours,2:numbers" \n + "/pnum,mat,1 ! 1: turn on numbering" \n + "!! NODE ELEM MAT TYPE REAL LOC SVAL ESYS KP LINE AREA VOLU STAT TABN \ + SEC DOMA DEFA" \n + "/pnum,defa ! 1: turn off any numbering" \n + \n + "!! .............................." \n + "!@@@ ... Element shape display ..." \n + "!! .............................." \n + \n + "/efacet,2 ! display 2 element facets (curvature) with power graphics" \n + "/eshape,1 ! 1:use real constant def. for element shapes" \n + "/graphics,power ! for post1 results" \n + \n + "!! .............................." \n + "!@@@ ... Shrink display ..." \n + "!! .............................." \n + \n + "/graphics,full ! /shrink doesn't work with power graphics" \n + "/shrink,0.5 ! for geom and elements " \n + "eplot" \n + "vplot" \n + \n + "!! .............................." \n + "!@@@ ... Multi window plots ..." \n + "!! .............................." \n + "/window,2,dele" \n + "/window,1,dele" \n + "/erase" \n + "/window,2,-1,-.5,.5,1 ! from -1 to 1 is the full screen" \n + "aplot" \n + "/window,2,off" \n + "/noerase" \n + "!/window,1,rbot ! from -1 to 1 is the full screen" \n + "/window,1,full ! from -1 to 1 is the full screen" \n + "!/window,3,rbot ! full,righ,top,bot,ltop,lbot,rtop,rbot" \n + "eplot" \n + "/window,2,on" \n + "/erase" \n + \n + "!! .............................." \n + "!@@@ ... Legend range and contours ..." \n + "!! .............................." \n + "!! 9 X11 or WIN32 and up to 128 for X11c or WIN32C " \n + "/contour,,10,0,,2000 ! wn,ncont[9],vmin,vinc,vmax" \n + "!! 3-D device" \n + "/dv3d,contr,off ! [on]" \n + "/contour,, ! wn,ncont[128],vmin,vinc,vmax" \n + \n + "!! .............................." \n + "!@@@ ... Cutting planes and power graphics ..." \n + "!! .............................." \n + \n + "/graphics,power ! power (surface) graphics" \n + "/shade,,0 ! bug in 14.5, shouldn't be necessary" \n + "/type,,zcap ! capped z-buffered" \n + "/type,,zqsl ! sliced z-buffered" \n + "/gline,,1 ! elem outlines [0] solid, 1 dashed, -1 no outl." \n + \n + "!! .............................." \n + "!@@@ ... Mesh line display ..." \n + "!! .............................." \n + \n + "/edge,,1 ! 1:display elements in contour plots" \n + "/edge,,0 ! 0:switch off display of elements in contour plots" \n + \n + "!! .............................." \n + "!@@@ ... Coordinate system display ..." \n + "!! .............................." \n + \n + "csys ! [0]:cartesian, 1:cylindrical, 2:spherical, 3:toroidal, 4:wp" \n + "clocal,11,0 ! define local coord. sys. from active" \n + "/psymb,cs,1 ! display local coord." \n + "/psymb,ndir,1 ! display (only) rotated nodal coord." \n + "/plopts,wp,off ! switch off wp" \n + "/triad,rbot"_ \n + "/triad,off" \n + \n) + +(define-skeleton apdl-skeleton-import-export + "Import commands." + nil + "!! ------------------------------" \n + "!" apdl-outline-string apdl-outline-string " --- cad import ---- " \n + "!! ------------------------------" \n + \n + "~cat5in" \n + "~catiain" \n + "~parain" \n + "~proein" \n + "~satin" \n + "~ugin" \n + "/aux15" \n + "ioptn,iges,nodefeat" \n + "ioptn,merge,yes" \n + "ioptn,solid,yes" \n + "ioptn,small,yes" \n + "ioptn,gtoler,defa" \n + "igesin,'test','iges'" \n + "!! IGES Export" \n + "igesout,bla,iges" \n + "finish" \n + \n + "/input,filename,anf ! for APDL based input" \n + "/facet,fine" \n + "/title,new title" \n + \n + "!! read array from file: Variable of *vread must be dimensioned!" \n + "/inquire,Numlines,LINES,'%Dir(1)%ground_plate_temperature',csv" \n + "*dim,bla,Numlines,1" \n + "!! lines might be skipped with the SKIP parameter" \n + "*vread,Bla,file,ext,,ijk,Numlines,2,,skip" \n + "(E10.3)" \n + "*vplot,Bla(1,1),Bla(1,2) " + "! works only with FORTRAN not C specifiers!" \n + \n + "!!read table from file: Variable of *tread must be dimensioned!" \n + "!!*tread: tab-delimited, blank-delimited, or comma-delimited file format" \n + "/inquire,Numlines,LINES,'%Dir(1)%ground_plate_temperature',csv" \n + "*dim,Hans,table,Numlines,4 !column and row 0 must not be dimensioned!" \n + "!! lines might be skipped with the SKIP parameter" \n + "*tread,Hans,tmp,out,,skip !the value Hans(0,0) must be smaller then \ +Hans(0,1) and Hans(1,0)!" \n + "*vplot,Hans(1,0),Hans(1,1),2,3" \n + \n) + +(define-skeleton apdl-skeleton-symmetry-expansion + "Graphical expansion of models utilising symmetry conditions." + nil + "!! .............................." \n + "!@@@ ... Symmetry expansion ..." \n + "!! .............................." \n + \n + "!/EXPAND, Nrepeat1, Type1, Method1, DX1, DY1, DZ1, Nrepeat2, Type2, \ +Method2, DX2, DY2, DZ2, Nrepeat3, Type3, Method3, DX3, DY3, DZ3" \n + "!DX1,DY1,DZ1,... 1.) normal vector of reflection plane 2.) \ +increments between patterns" \n + "! full: no tranlation<-small nonzero value, half: mirroring, \ +increment is doubled" \n + "/expand,2,rect,half,,-1e-6,,2,rect,half,-1e-6 ! cartesian,\ +half:mirror" \n + "/repl" \n + "!! /expand,2,lrect,half,,-1e-6,,2,rect,half,-1e-6 !local cartesian,\ +half:mirror" \n + "!! -- polar expansion --" \n + "/expand,8,polar,half,,45 ! polar expansion, full:normal exp." \n + "!! /expand,8,lpolar,half,,45 ! local polar expansion, full:normal exp." \n + "!! -- axissymmtric expansion --" \n + "/expand,18,axis,,,10 !axisymmetric (180 ° rot. around y-axis)" \n + "/expand !switch off expansion" \n + "!! -- cyclic expansion --" \n + "/prep7" \n + "cyclic,status ! status of cyclic analysis (/prep7)" \n + "/post1" \n + "/cycexpand,,amount,nrepeat,6 ! expand graphics rep." \n + "!!/cycexpand,,off ! deactivate cyclic expansion" \n + "/cycexpand ! deactivate cyclic expansion" \n + \n) + +(define-skeleton apdl-skeleton-contact-definition + "Contact definitons skeleton." + nil + "!! -------------------------------" \n + "!@@ --- General contact definitions (since Ansys 16) ----" \n + "!! -------------------------------" \n + \n + "!! 2D and 3D elements are automatically selected!" \n + "gcgen ! contacts on all exterior element faces" \n + "gcgen,,,,,select! only contacts for selected elements!" \n + "gcgen,,,,part! sectionIDs only for parts!" \n + "gcdef, Option, SECT1, SECT2, MATID, REALID" \n + "tb,inter,MatID,,,bonded !contact interaction" \n + "mp,mu,MatID,.1 !friction " \n + "!! rigid targets without real constants are allowed with general \ +contact definitons!" \n + "ET,100,170,,1" \n + "TYPE,100" \n + "SECNUM,101" \n + "REAL,0" \n + "MAT,0" \n + "keyopt,gcn,2,3! keyopt for ALL general contacts" \n + "gcgen,select !select all general contacts and deselect others!" \n + "elist !get sectionID and typeID" \n + "/pnum,sect,on !display section type" \n + \n + "!! -------------------------------" \n + "!@@ --- Contact pair definitions ----" \n + "!! -------------------------------" \n + \n + "Contact=10"_ \n + "Target=Contact+1" \n + "Mu = 0.1 !friction factor" \n + "r,Contact !define a real set" \n + "et,Contact,conta174 !3d, 8 node" \n + "et,Contact,conta173 !3d, 4 node" \n + "et,Contact,conta172 !2d, 3 node" \n + "et,Contact,conta171 !2d, 2 node" \n + "et,Contact,conta175 !2/3d node to surf" \n + "et,Contact,conta176 !3d line to line, 3 node" \n + "et,Contact,conta177 !3d line to surf, 3 node" \n + "!! --- targets ---" \n + "et,Target,targe170 !3d area,line,(pilot-)node" \n + "et,Target,targe169 !2d" \n + \n + "!! --- contact options --" \n + "keyo,Contact,2,1 !ALGORITHM [0]:augm. Lagrange,1:penalty,2:MPC,4:pure Lagrange" \n + "!! " \n + "Fkn = .1 !contact stiffness (default 1, divided by 100 if plastic mat. \ +ONLY Ansys version < 12.0!)" \n + "rmodif,Contact,3,Fkn !FKN:normal penalty stiffness factor (default:1) +!! smaller: bigger penetration, easier convergence" \n + "!rmod,Contact,12,0. !FKT:tangent stiffness factor,0:means 1 for Ansys!!!" \n + \n + "!Ftoln = .1 !penetration tolerance [.1] for lagr. mult. & chattering \ +control" \n + "!rmod,Contact,4,Ftoln !FTOLN penetration tolerance (augm. Lagrance! default:0.1) \ +bigger: less chattering" \n + \n + "!Pinb = -0.1 !search radius, neg: absolut value ( > CNOF!!!!)" \n + "!rmod,Contact,6,Pinb !PINB:pinball radius (negative: no scaling:absolute \ +distance)" \n + \n + "!move open contact points to onto target surface" \n + "!ICONT = -0.05 !initial contact closure [0] relative band size \ +(neg. absolut)" \n + "!rmod,Contact,5,Icont !ICONT:amount of initial contact closure \ +(positiv:penetration)" \n + \n + "!shift complete open contact surface to target surf. " \n + "!CNOF = 0 !contact surface offset (complete shift) ([0], neg.: penetr.)" \n + "!rmod,Contact,10,Cnof !CNOF (thickness effects):contact normal offset \ +(e.g. beams)" \n + \n + "!keyo,Contact,4,0 !keyo(4): location of contact detection" \n + " !! [0]:Gauss points, 3(V13):surface projection method" \n + "!keyo,Contact,5,4 !EFFEKT of CNOF (surface offset) or ICON \ +(node movement in a band)" \n + " !! 0: no adjustm." \n + " !! 1: close gap with auto CNOF" \n + " !! 2: reduce penetr. w. auto CNOF" \n + " !! 3: close gap/red. pene. w. auto CNOF" \n + " !! 4: auto ICONT" \n + "!keyo,Contact,9,1 ! corresponds to Adjust To Touch in WB" \n + "keyo,Contact,9,4 !HANDLING of initial penetration/gap and CNOF" \n + " !! 0: include everything" \n + " !! 1: remove everything" \n + " !! 2: include everyth. ramped" \n + " !! 3: include offset only" \n + " !! 4: incl. offset only, ramped" \n + "keyo,Contact,10,2 !Stiffness UPDATE,[0]:each LS,2:each NR iteration, \ +1:each substep" \n + "!keyo,Contact,11,1 !SHELL thickness effect" \n + "keyo,Contact,12,0 !BEHAVIOUR,[0]:frictional/-less,1:rough,2:no separation, \ +3:bonded" \n + "real,Contact" \n + \n + "!rmod,Contact,11,-1 !FKOP contact opening stiffness & contact damping, \ +must be neg." \n + \n + "Mu = 0.1 !Mu is the friction factor" \n + "!Mu = 0 ! frictionless" \n + "mp,mu,Contact,Mu" \n + "mat,Contact" \n + \n + "!! ------------------------------" \n + "!@@ -- Contact generation --" \n + "!! ------------------------------" \n + \n + "type,Contact" \n + "real,Contact" \n + "esurf !,,top ![default] beam element's top direction" \n + "esurf !,,bottom ! for beam elements top direction" \n + "esurf !,,reverse ! reverse dir. on existing elem." \n + "!! -- Target generation --" \n + "type,Target" \n + \n + "!! check of contact normals" \n + "esel,s,type,,Contact" \n + "esel,a,type,,Target" \n + "/psymb,esys,1" \n + "eplot" \n + \n + "enorm ! change the underlying elem." \n + \n + "!! .............................." \n + "!@@@ ... Check contact status ..." \n + "!! .............................." \n + \n + "!!cncheck !list contact pair properties" \n + "cncheck,summary !list only open/closed status" \n + "!!cncheck,adjust !adjust physically the elements!" \n + "/solu" \n + "cncheck,post !write contact config to jobname.rcn" \n + \n + "/post1" \n + "/inquire,Job_name,jobname!get string array jobname|directory|user|psearch" \n + "/inquire,param,date,file,ext !get date(size,lines) of file.ext" \n + "save" \n + "file,Job_name(1),rcn ! set result file to file.rcn" \n + "set,first" \n + "plnsol,cont,gap,0,1" \n + "esel,s,type,,Contact" \n + "etable,Stat,cont,stat !3-closed sticking" \n + " !2-closed sliding" \n + " !1-open near" \n + " !0-open far" \n + "!/efacet,2" \n + "plls,stat,stat" \n + "etable,Pene,cont,pene !pres|sfric|stot|slide|gap|flux|cnos|fprs" \n + "plls,Pene,Pene !line element results" \n + "resume,Job_name,db" \n + "ssum !sum of element table items" \n + \n) + +(define-skeleton apdl-skeleton-contact-rigid + "Rigid contacts skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Rigid target creation ----" \n + "!! ------------------------------" \n + \n + "Contact="_ \n + "Target=Contact+1" \n + "real,Contact" \n + "type,Target" \n + "tshap,line ! 2d/3d, automatically fixed" \n + "cncheck,summary" \n + "!! tshap,para !parabola 2d/3d" \n + "!! tshap,arc !clockwise arc 2d (targe169)" \n + "!! tshap,carc !counterclockwise arc 2d (targe169)" \n + "!! tshap,circ !2d (targe169)" \n + "!! tshap,tria !3d" \n + "!! tshap,tri6 !6 node triangle 3d" \n + "!! tshap,quad !3d" \n + "!! tshap,quad8 !8-node quadrilateral 3D" \n + "!! tshap,cyli !3d" \n + "!! tshap,cone" \n + "!! tshap,sphe !sphere 3d" \n + "!! tshap,pilo !2d/3d" \n + "!! tshap,point !2d/3d" \n + "*get,Nmax,node,,num,max" \n + "n,Nmax+1,1,1,0" \n + " ,Nmax+2,1,2,0" \n + "e,Nmax+1,Nmax+2" \n + "tshap,pilo ! 2d/3d" \n + "e,Nmax+1" \n + "!! .............................." \n + "!@@@ .... 3D line to line beams ... " \n + "!! .............................." \n + "Contact = 10" \n + "ID = Contact" \n + "real = ID" \n + "et,ID, conta177 ! 177 3D line to line, 175 node to surface contact element" \n + "r,ID,R1,R2 !R1, R2 of line elements" \n + "Target = 20" \n + "ID = Target" \n + "real = Contact ! must be the same as for the contact elements" \n + "et,ID,targe170 !170 3D line segments" \n + "keyopt,ID,9,0 !external contact should, be default!" \n + "!! targets tshap,line !staight line" \n + "tshap,para !parabola not circle" \n + "type,Target" \n + "real,Contact" \n + "!!lsel,s,,,LNo" \n + "e,1,2,3" \n + ";; contacts" \n + "esel,s,type,,Steel" \n + "lsel,u,,,1,LNo" \n + "nsll,s" \n + "esln,s" \n + "type,Contact" \n + "real,Contact" \n + "esurf" \n + \n) + +(define-skeleton apdl-skeleton-coordinates + "Co-ordinate systems skeleton." + nil + "!! .............................." \n + "!@@@ ... Coordinate system creations and modifications ..." \n + "!! .............................." \n + \n + "csys,4 ! [0]:cartesian, 1:cylindrical, 2:spherical, 3:toroidal, 4:wp" \n + "clocal,11,cylin ! define local coord. sys. 11 from active, with \ +type cylindrical" \n + "wpcsys,12 ! set working plane to coordinate system 12" \n + "wprota,,,90 ! rotate wp" \n + "wpstyl,SNAP,GRSPAC,GRMIN,GRMAX,WPTOL,WPCTYP,GRTYPE,WPVIS,SNAPANG \ +! styles of wp" \n + "!! ..............................." \n + "!@@@ ... Display / print in coordinate system ..." \n + "!! ..............................." \n + "dsys,1 ! display coordinate system" \n + "rsys,1 ! activate coordinate system" \n + "fsum,rsys ! results in rsys coordinates" \n + \n + "!! ..............................." \n + "!@@@ ... Coordinate system display ..." \n + "!! ..............................." \n + \n + "/psymb,cs,1 ! display local coord." \n + "/psymb,ndir,1 ! display (only) rotated nodal coord." \n + "/plopts,wp,1 ! display working plane" \n + "/plopts,wp,off ! switch off wp" \n + "/triad,rbot"_ \n + "/triad,off" + \n) + +(define-skeleton apdl-skeleton-working-plane + "Settings for the working plane and related stuff." + nil + "!! .............................." \n + "!@@@ ... Working plane setup ..." \n + "!! .............................." \n + \n + "/plopts,wp,1 ! display working plane" \n + "/repl" \n + "wpcsys,1,0 ! align wp in WIN with specified c-sys" \n + "csys,wp !activate wp (=csys,4)" \n + "wpoffs,,-100 ! x,y,z offset from current wp position" \n + "wprota,0,90,0 ! z,x,y axis of rotation!" \n + "kwplan,wn,orig,xax,normal ! working plane from keypoints" \n + "wpave,x1,y1,z1,x2,y2,z2,x3,y3,z3 !move origin to (average of) point(s) !" \n + "wplane,wn,0,0,0,1,... ! defines a wp" \n + "/plopts,wp,off ! switch off wp" \n + "/triad,off ! off: switch off co-ordinate triad, rbot, ltop, ..." \n + "/plopts,frame,off ! switch off graphics frame" \n + "/plopts,logo,off ! switch off Ansys logo" \n + "wpstyl,,,,,,1 ! type spec 0,1,2 cartesian,cylindrical,spherical" \n + "wpstyl,,,,,,,0 ! grid spec: 0 grid+triad,1 grid,2 [triad]" \n + "!! wpstyl,stat" \n + "csys,wp ! or csys,4: change csys to wp" \n + \n) + +;; PlotCtrls ->Multi-plot-Ctrls??? +(define-skeleton apdl-skeleton-multi-plot + "Multi-plot skeleton" + nil + "!! .............................." \n + "!@@@ ... Multiplot controls ..." \n + "!! .............................." \n + \n + "/gcmd,1,u,sum" \n + "/gtype,all,node,0 ! turn off nodes (elem,keyp,line,area)" \n + "/gtype,,volu,1 ! turn on volumens" \n + "gplot" \n + \n) + +;; PlotCtrls ->Numbering Controls +(define-skeleton apdl-skeleton-numbering-controls + "Numbering controls skeleton." + nil + "!! .............................." \n + "!@@@ ... Numbering controls ..." \n + "!! .............................." \n + \n + "/pnum,kp,1 ! line;area;volu;node;elem;mat;type;tabn;sval,on" \n + "/number,2 ! [0]: colour & number, 1:colour only, 2 number only" \n + "/pnum,defa ! 1: turn off any numbering" \n + "/replot" \n + \n) + +;; PlotCtrls -> Symbols +(define-skeleton apdl-skeleton-symbols + "Symbols skeleton." + nil + "!! .............................." \n + "!@@@ ... Symbol display ..." \n + "!! .............................." \n + \n + "/vscale,,10 ! scale displayed vectors" \n + "/psf,pres,,2 ! 2 arrows, surface loads" \n + "/pbf !body loads" \n + "/psf,conv,hcoef ! plot surface loads" \n + "/pbf,hgen ! plot body force loads (temp,...) as contours" \n + "/pbc,all,,1 ! bc symbols" \n + "/pbc,f,,1 !1:show applied force symbols" \n + "/pbc,nfor,,1 ! show nodal forces" \n + "/pbc,rfor,,1 ! [0],1:show reaction forces" \n + "/pbc,defa ! reset /pbc" \n + "/pice !element initial condition symbols" \n + "!! coordinates" \n + "/psymb,esys,1 ! [0],1: display of element co-ordinate sys." \n + "/psymb,ndir,1 ! only for rotated nodal co-ordinate systems!" \n + "/psymb,stat" \n + "/repl" \n + \n) + +(define-skeleton apdl-skeleton-element-table + "Element tables." + nil + "!! ------------------------------" \n + "!@@ --- Etables, element tables ----" \n + "!! ------------------------------" \n + \n + "!! etables don't take into account higher element order!" \n + "!! they are averaged over the element" \n + "!! ---- Mohr-Coulomb failure criterion" \n + "Z1 = 60 ! tensile strength" \n + "Z3 = 160 ! compressive strength" \n + "etable,S1,s,1" \n + "etable,S3,s,3" \n + "sadd,R,S1,S3,1/Z1,-1/Z3" \n + "sexp,X,S1,,-1 ! warning: sexp uses modulus of S!!!!!" \n + "!! constant element values are transfered to the nodes and optionally \ +averaged" \n + "pletab,R,avg ! avg: average over nodes of neigbouring elements" \n + "esel,s,type,,2" \n + "etable,Pene,cont,pene" \n + "!! etable,chat,cont,cnos ! chattering levels" \n + "!! etable,cpre,cont,pres" \n + "!! plls,Pene,Pene ! line elem. results" \n + "esort,etab,R" \n + "etable,refl ! refill all element tables for latest load set" \n + "*get,Mc,etab,sort,,max" \n + "*msg,,Mc" \n + "Mohr-Coulomb criterion (< 1): %G" \n + "ssum ! Calculate and print the sum of element table items." \n + "sabs,1 ! 1: absolut values, [0] algebraic values for table operations" \n + "*get,My_magnet_force1,ssum,,item,S1 " \n + \n) + +(define-skeleton apdl-skeleton-beam-template + "Minimal example of a modal analysis with beams" + nil + '(apdl-skeleton-header) + "!! ==============================" \n + "!@ === Preprocessing =====" \n + "!! ==============================" \n + "/prep7" \n + "!! ------------------------------" \n + "!@@ --- Elements ----" \n + "!! ------------------------------" \n + "Steel = 1" \n + "ID = Steel" \n + "et,ID,beam188 ! 189 3d 3node, 188 3d, 2 node beam" \n + "keyopt, ID, 1 ! 1 deformation only in xy plane" \n + "" \n + "!! real = ID+1" \n + "!! et,ID+1,mass21,,,2 ! no rotary intertia" \n + "!! R,ID+1,100*7850e-12" \n + "!! ! keyopt,ID+1,3,2" \n + "" \n + "!! ------------------------------" \n + "!@@ --- Material ----" \n + "!! ------------------------------" \n + "mp,nuxy,Steel,0.3 ! Poisson No" \n + "mp,ex,Steel,200000 ! Elastic modulus" \n + "mp,dens,Steel,7850e-12 ! density in t/mm³" \n + "" \n + "!! ------------------------------" \n + "!@@ --- Modeling ----" \n + "!! ------------------------------" \n + "sectype,1,beam,rect" \n + "secdata,1,1 ! width, height, number of cells width (2)" \n + "slist, 1, 1 ! list section properties" \n + "secplot,1 ! show beam section" \n + "!! nodes" \n + "n,1,0" \n + "*repeat,11,1,1" \n + "!! meshing" \n + "type,1" \n + "mat,Steel" \n + "e,1,2" \n + "*repeat,10,1,1" \n + "" \n + "!! type,ID+1" \n + "!! real,ID+1" \n + "!! e,11" \n + "" \n + "!! ------------------------------" \n + "!@@ --- BCs, Loads ----" \n + "!! ------------------------------" \n + "nsel,s,loc,x,0" \n + "d,all,all" \n + "" \n + "!! nsel,s,loc,x,1" \n + "!! d,all,uy,-.1" \n + "!! allsel" \n + "!! save" \n + "!! ==============================" \n + "!@ === Solving =====" \n + "!! ==============================" \n + "/solu" \n + "allsel" \n + "antype,modal" \n + "modopt,lanb,10,10,1e10 ! method,No of modes,freqB,freqE" \n + "outres,all,all" \n + "mxpand,,,,yes ! write results to the results file" \n + "solve" \n + "save" \n + "" \n + "/solu" \n + "solve" \n + "!! ==============================" \n + "!@ === Postprocessing =====" \n + "!! ==============================" \n + "/post1" \n + "/graphics,power ! for 3d result views" \n + "set,list" \n + "set,1,1 ! 1st eigenfrequency" \n + "prnsol,dof ! print nodal solution results" \n + "prrsol,node ! reaction solution" \n + "" \n + "/eshape,1" \n + "/graphics,power ! for post1 results" \n + "/view,,1,1,1" \n + "pldisp" \n + "plnsol,u,sum,2" \n + "anmode" \n) + +(define-skeleton apdl-skeleton-element-definition + "Element definitions skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Element definitions ----" \n + "!! ------------------------------" \n + \n + "!! --- Solid elements ---" \n + "*get,ET,etyp,,num,max ! get maximum element type" \n + "Solid = ET+1" \n + "ID = Solid" \n + "real,ID" \n + "et,ID,solid186 ! 3d, 20 nodes" \n + "etlist ! list defined elements" \n + \n + "et,ID,solid185 ! 3d, 8 nodes" \n + \n + "!! --- A plane element type --- " \n + "*get,ET,etyp,,num,max ! get maximum element type" \n + "Plane = ET+1" \n + "ID = Plane" \n + "real,ID" \n + "et,ID,plane183,,,3 ! 2d, 8 node (3)0:plane stress, 1:axissymmetric, \ +2:plane strain, 3:plane stress with thickness real constant" \n + "/eshape,1 ! 1:use real constant def. for element shapes" \n + "/graphics,power ! for post1 results" \n + "r,ID,13 ! thickness" \n + \n + "et,ID,plane182 ! 2d, 4 node" \n + "keyopt,ID,3,1 ! (3)=0:plane stress,1:axissym,2:plain strain." \n + "keyopt,ID,1,0 ! (1)=0:reduced integr.2:enhanced strain for bending" \n + "!! for most elements the radial direction is the x-axis" \n + \n + "!! -------------------------------" \n + "!@@ --- Contact pair definitions ----" \n + "!! -------------------------------" \n + \n + "*get,ET,etyp,,num,max ! get maximum element type" \n + "Contact = ET+1" \n + "ID = Contact" \n + "Target=Contact+1" \n + "r,Contact ! define a real set" \n + "et,Contact,conta174 ! 3d, 8 nodes" \n + \n + "et,Contact,conta173 ! 3d, 4 nodes" \n + "et,Contact,conta172 ! 2d, 3 nodes" \n + "et,Contact,conta171 ! 2d, 2 nodes" \n + "et,Contact,conta175 ! 2/3d node to surf" \n + "et,Contact,conta176 ! 3d line to line, 3 node" \n + "et,Contact,conta177 ! 3d line to surf, 3 node" \n + \n + "et,Target,targe170 ! 3d area,line,(pilot-)node" \n + \n + "et,Target,targe169 ! 2d" \n + \n + + "!! .............................." \n + "!@@@ ... Structural shells, beams, masses and planes ..." \n + "!! .............................." \n + \n + "et,ID,shell181 ! 3d 4/3-node structural shell" \n + "Shell = 1" \n + "ID = Shell" \n + "sectype,ID,shell" \n + "Secdata,ShellThickness" \n + "et,ID,shell281 ! 3d 8/6-node structural shell" \n + \n + "!! - beams -" \n + "et,ID,beam188 ! 3d 2-node beam, shows only line results" \n + "et,ID,beam189 ! 3d 3-node beam, shows 3d results with power graphics" \n + "sectype,ID,beam,rect" \n + "secdata,1,1 ! rect: width,height" \n + "secplot,1" \n + "slist, 1, 1 ! list section properties" \n + "secnum,1 ! set section pointer to ID" \n + "!! - mass -" \n + "et,ID,mass21,,,2 ! (3)2 no rotary inertia" \n + "et,ID,mass21 ! keyo(3)=0 3d mass with rotary inertia" \n + "!keyopt,ID,1,1 ! keyopt(1)=1: volume and rotary intertias/density" \n + "r,ID,1,...,R6 ! mass or mass per density" \n + "rmore,ID,R7,... R12" \n + "mp,dens,ID,Density ! if keyopt(1)=1" \n + "!! - planes -" \n + "et,ID,plane182 ! 2d 4/3-node structural solid" \n + "et,ID,plane183 ! 2d 8/6-node structural solid" \n + \n + "!! .............................." \n + "!@@@ ... Thermal ..." \n + "!! .............................." \n + \n + "et,ID,plane35 ! 2d 6-node triangular thermal solid" \n + "et,ID,plane77,,,3 ! 2d 8-node thermal solid, keyopt(3)=3 thickness" \n + "r,ID,length ! plane77 has only 1 real const.: thk" \n + "et,ID,solid90 ! 3D 20 nodes thermal solid" \n + \n + "!! .............................." \n + "!@@@ ... Magnetics ..." \n + "!! .............................." \n + \n + "et,ID,plane13 ! 2d, legacy 4-node coupled-field ->plane233 8-node" \n + "keyopt,ID,3,1 ! (3)=1:axissym." \n + "keyopt,ID,5,2 ! (5)=2:nodal magnetic field printout" \n + "et,ID,infin110 ! 2d semi infinit electromagnetic elem." \n + "!! only 1 element layer, sized in the order of the problem domain" \n + "keyopt,ID,3,1 ! (3)=1:axissym." \n + "keyopt,ID,2,1 ! (2)=0:4-node,1:8-n" \n + \n + "!! .............................." \n + "!@@@ ... Assign attributes ..." \n + "!! .............................." \n + \n + "aatt,MAT,REAL,TYPE ! associate prop. with selected areas" \n + \n + "!! /pnum,type,1 $ eplot ! display materials" \n + \n) + +(define-skeleton apdl-skeleton-meshing + "Meshing skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Meshing ----" \n + "!! ------------------------------" \n + "shpp,off !switch off shape checking" \n + \n + "!! mat,Steel" \n + "mshkey,1 ! 1: mapped meshing,2: mapped if possible" \n + "mshape,0,3d ! 0: quads/hex 1:tri/tets, dimensions: 2d/3d" \n + "esize,1 ! element edge length" \n + "aesize,ANUM,SIZE ! element SIZE on area ANUM (or ALL)" \n + "lesize,all,,,3 ! SPACE neg: center to end division" \n + \n + "!! max and min element sizes for a given 'lesize' spacing ratio" \n + "Length = 10 ! line segment length" \n + "Ratio = 1/500.0 ! spacing ratio" \n + "N = 10 !number of line divisions" \n + "!! lesize uses a geometric series" \n + "Res = Length*(1-Ratio**(1/(N-1.0)))/(1-Ratio**(N/(N-1.0)))" \n + "/go" \n + "/com,first line segment length: %Res%" \n + "/nopr" \n + "Res = Res*Ratio" \n + "/go" \n + "/com,last line segment length: %Res%" \n + \n + "lcomb,all ! combine adjacent lines" \n + "ldiv,all,1 ! divide a single line" \n + "lccat,all ! concatenate lines for meshing" \n + \n + "esys,12 ! set element coordinates for a and v elements to 12" \n + "shpp,off,,nowarn ! control mesh shape checking" \n + "type ! element type" \n + "secnum,1 ! set section pointer to ID" \n + "mat,1 ! set mat pointer"\n + "real,1 ! set real const."\n + "vmesh,all" \n + "amesh,all" \n + "/shrink,.5 ! [0] 0 to max 0.5, shrink elem.,l,a,v" \n + "eplot" \n + "lsel,s,lcca ! select all concatenated lines" \n + "ldele,all" \n + \n + "!! -- extrusion --" \n + "! ESIZE must be set before vext extrusion!" \n + "esize,,1 ! here: one element per extrusion" \n + "vext ! extrude areas by offset" \n + "vdrag ! extrude areas along lines" \n + \n + "!! -- cyclic symmetric meshing --" \n + "cyclic ! check sectors in case of cyclic sym." \n + "*status ! look for CYCLIC_XREF" \n + "cyclic,status" \n + "/cycexpand ! expand graphics rep." \n + \n + "/pnum,mat,1 $ eplot" \n + \n) + +(define-skeleton apdl-skeleton-get-and-fortran-function + "Standard FORTRAN and get functions." + nil + "!! ==============================" \n + "!@ === \"*get\" function =====" \n + "!! ==============================" \n + "!! selected /post1 applications" \n + "*get,SS,active,,set,nset,last !number of SubSteps in current load step" \n + "*get,Rfy,node,1,rf,fy !reaction y-force of node 1" \n + "*get,Uy,node,1,u,y ! y-displacement of node 1" \n + \n + "!! ==============================" \n + "!@ === Parameteric functions =====" \n + "!! ==============================" \n + "X = 2 $ Y = 1/3 ! Base X and (real) exponent Y for the following:" \n + "A = X**Y ! Exponentiation x**y (x^y)" \n + "A = ABS() ! abs(x) absolute value" \n + "A = SIGN() ! sign(x,y) absolute value of x with sign of y" \n + "A = CXABS() ! cxabs(x,y) absolute value of complex number x+i*y" \n + "A = EXP() ! exp(x) exponential (e^x)" \n + "A = LOG() ! log(x) natural log ln(x)" \n + "A = LOG10() ! log10(x) common log, Briggs' log" \n + "A = SQRT() ! sqrt(x) square root" \n + "A = NINT() ! nint(x) nearest integer" \n + "A = nint(x*100)/100 ! poor man's round" \n + "A = MOD() ! mod(x,y): modulo x/y" \n + "A = RAND() ! rand(lower_bound,upper_bound): uniform dist." \n + "A = GDIS() ! gdis(mean,stdd): gaussian distribution" \n + "!! the default for the trig. is radians, change this with *afun" \n + "A = SIN() ! sin(x) sine" \n + "A = COS() ! cos(x) cosine" \n + "A = TAN() ! tan(x) tangent" \n + "A = SINH() ! sinh(x) hyperbolic sine" \n + "A = COSH() ! cosh(x) hyperbolic cosine" \n + "A = TANH() ! tanh(x) hyperbolic tangent" \n + "A = ASIN() ! asin(x) arcsine,arg. between -1.0 and +1.0 " \n + "A = ACOS() ! acos(x) arccosine,arg. between -1.0 and +1.0 " \n + "A = ATAN() ! atan(x) arctangent" \n + "A = ATAN2() ! atan2(x,y): arctangent of y/x with the sign of each \ +component considered" \n + \n + "!! ==============================" \n + "!@ === \"get\" functions =====" \n + "!! ==============================" \n + "!! -- selections -- " \n + "NSEL(N) ! Status of node N: -1=unselected, 0=undefined, 1=selected." \n + "ESEL(E) ! Status of element E: -1=unselected, 0=undefined, 1=selected." \n + "KSEL(K) ! Status of keypoint K: -1=unselected, 0=undefined, 1=selected." \n + "LSEL(L) ! Status of line L: -1=unselected, 0=undefined, 1=selected." \n + "ASEL(A) ! Status of area A: -1=unselected, 0=undefined, 1=selected." \n + "VSEL(V) ! Status of volume V: -1=unselected, 0=undefined, 1=selected." \n + "!! -- Next Selected Entity --" \n + "NDNEXT(N) ! Next selected node having a node number greater than N." \n + "ELNEXT(E) ! Next selected element having an element number greater \ +than E." \n + "KPNEXT(K) ! Next selected keypoint having a keypoint number greater \ +than K." \n + "LSNEXT(L) ! Next selected line having a line number greater than L." \n + "ARNEXT(A) ! Next selected area having an area number greater than A." \n + "VLNEXT(V) ! Next selected volume having a volume number greater than V." \n + "!! -- Locations --" \n + "CENTRX(E) ! Centroid X-coordinate of element E in global Cartesian \ +coordinate system. Centroid is determined from the selected nodes on the \ +element." \n + "CENTRY(E) ! Centroid Y-coordinate of element E in global Cartesian +coordinate system. Centroid is determined from the selected nodes on the +element." \n + "CENTRZ(E) ! Centroid Z-coordinate of element E in global Cartesian coordinate \ + system. Centroid is determined from the selected nodes on the element." \n + "NX(N) ! X-coordinate of node N in the active coordinate system." \n + "NY(N) ! Y-coordinate of node N in the active coordinate system." \n + "NZ(N) ! Z-coordinate of node N in the active coordinate system." \n + "KX(K) ! X-coordinate of keypoint K in the active coordinate system" \n + "KY(K) ! Y-coordinate of keypoint K in the active coordinate system" \n + "KZ(K) ! Z-coordinate of keypoint K in the active coordinate system" \n + "LX(L,LFRAC) ! X-coordinate of line L at length fraction \ +LFRAC (0.0 to 1.0)." \n + "LY(L,LFRAC) ! Y-coordinate of line L at length fraction \ +LFRAC (0.0 to 1.0)." \n + "LZ(L,LFRAC) ! Z-coordinate of line L at length fraction \ +LFRAC (0.0 to 1.0)." \n + "LSX(L,LFRAC) ! X slope of line L at length fraction LFRAC (0.0 to 1.0)." \n + "LSY(L,LFRAC) ! Y slope of line L at length fraction LFRAC (0.0 to 1.0)." \n + "LSZ(L,LFRAC) ! Z slope of line L at length fraction LFRAC (0.0 to 1.0)." \n + "!! -- Nearest to Location --" \n + "NODE(X,Y,Z) ! Number of the selected node nearest the X,Y,Z point \ +(in the active coordinate system, lowest number for coincident nodes)." \n + "KP(X,Y,Z) ! Number of the selected keypoint nearest the X,Y,Z point \ +(in the active coordinate system, lowest number for coincident nodes)." \n + "!! -- Distances --" \n + "DISTND(N1,N2) ! Distance between nodes N1 and N2." \n + "DISTKP(K1,K2) ! Distance between keypoints K1 and K2." \n + "DISTEN(E,N) ! Distance between the centroid of element E and node N. \ +Centroid is determined from the selected nodes on the element." \n + "!! -- Angles (in radians by default -- see the *AFUN command) --" \n + "ANGLEN(N1,N2,N3) ! Subtended angle between two lines (defined by three \ +nodes where N1 is the vertex node). Default is in radians." \n + "ANGLEK(K1,K2,K3) ! Subtended angle between two lines (defined by three \ +keypoints where K1 is the vertex keypoint). Default is in radians." \n + "!! -- Nearest to Entity --" \n + "NNEAR(N) ! Selected node nearest node N." \n + "KNEAR(K) ! Selected keypoint nearest keypoint K." \n + "ENEARN(N) ! Selected element nearest node N. The element position is \ +calculated from the selected nodes." \n + "!! -- Areas --" \n + "AREAND(N1,N2,N3) ! Area of the triangle with vertices at nodes N1, N2, \ +and N3." \n + "AREAKP(K1,K2,K3) ! Area of the triangle with vertices at keypoints K1, K2, \ +and K3." \n + "ARNODE(N) ! Area at node N apportioned from selected elements attached to \ +node N. For 2-D planar solids, returns edge area associated with the node. \ +For axisymmetric solids, returns edge surface area associated with the node. \ +For 3-D volumetric solids, returns face area associated with the node. For \ +3?D, select all the nodes of the surface of interest before using ARNODE." \n + "!! -- Normals --" \n + "NORMNX(N1,N2,N3) ! X-direction cosine of the normal to the plane containing \ +nodes N1, N2, and N3." \n + "NORMNY(N1,N2,N3) ! Y-direction cosine of the normal to the plane containing \ +nodes N1, N2, and N3." \n + "NORMNZ(N1,N2,N3) ! Z-direction cosine of the normal to the plane containing \ +nodes N1, N2, and N3." \n + "NORMKX(K1,K2,K3) ! X-direction cosine of the normal to the plane containing \ +keypoints K1, K2, and K3." \n + "NORMKY(K1,K2,K3) ! Y-direction cosine of the normal to the plane containing \ +keypoints K1, K2, and K3." \n + "NORMKZ(K1,K2,K3) ! Z-direction cosine of the normal to the plane containing \ keypoints K1, K2, and K3." \n + "! -- Connectivity --" \n + "ENEXTN(N,LOC) ! Element connected to node N. LOC is the position in the \ +resulting list when many elements share the node. A zero is returned at the \ +end of the list." \n + "NELEM(E,NPOS) ! Node number in position NPOS (1--20) of element E." \n + "NODEDOF(N) ! Returns the bit pattern for the active DOFs at the specified \ +node.bit 0 is UX, bit 1 is UY,... bit 5 is ROTZ bits 6,7,8 are AX,AY,AZ bits \ +9,10,11 are VX,VY,VZ bit 18 is PRES, bit 19 is TEMP, bit 20 is VOLT, bit 21 \ +is MAG bit 24 is EMF, bit 25 is CURR For a node with UX,UY,UZ the return value \ +will be 7 (bits 0,1,2) For a node with UX,UY,UZ,ROTX,ROTY,ROTZ the return value \ +will be 63 (bits 0,1,2,3,4,5)" \n + "!! -- Faces --" \n + "ELADJ(E,FACE) ! For 2-D planar solids and 3-D volumetric \ +solids, element adjacent to a face (FACE) of element E. The \ +face number is the same as the surface load key number. Only \ +elements of the same dimensionality and shape are considered. A \ +-1 is returned if more than one is adjacent." \n + "NDFACE(E,FACE,LOC) ! Node in position LOC of a face number \ +FACE of element E. The face number is the same as the surface \ +load key number. LOC is the nodal position on the face (for an \ +IJLK face, LOC=1 is at node I, 2 is at node J, etc.)" \n + "NMFACE(E) ! Face number of element E containing the selected \ +nodes. The face number output is the surface load key. If \ +multiple load keys occur on a face (such as for line and area \ +elements) the lowest load key for that face is output." \n + "ARFACE(E) ! For 2-D planar solids and 3-D volumetric solids, \ +returns the area of the face of element E containing the \ +selected nodes. For axisymmetric elements, the area is the \ +full (360 degree) area." \n + "!! -- Degree of Freedom Results --" \n + "UX(N) ! UX structural displacement at node N." \n + "UY(N) ! UY structural displacement at node N." \n + "UZ(N) ! UZ structural displacement at node N." \n + "ROTX(N) ! ROTX structural rotation at node N." \n + "ROTY(N) ! ROTY structural rotation at node N." \n + "ROTZ(N) ! ROTZ structural rotation at node N." \n + "TEMP(N) ! Temperature at node N. For SHELL131 and SHELL132 \ + elements with KEYOPT(3) = 0 or 1, use TBOT(N), TE2(N), TE3(N), \ + . . ., TTOP(N) instead of TEMP(N)." \n + "PRES(N) ! Pressure at node N." \n + "VX(N) ! VX fluid velocity at node N." \n + "VY(N) ! VY fluid velocity at node N." \n + "VZ(N) ! VZ fluid velocity at node N." \n + "ENKE(N) ! Turbulent kinetic energy (FLOTRAN) at node N." \n + "ENDS(N) ! Turbulent energy dissipation (FLOTRAN) at node N." \n + "VOLT(N) ! Electric potential at node N." \n + "MAG(N) ! Magnetic scalar potential at node N." \n + "AX(N) ! AX magnetic vector potential at node N." \n + "AY(N) ! AY magnetic vector potential at node N." \n + "AZ(N) ! AZ magnetic vector potential at node N." \n + "!! -- Return information about the data base manager --" \n + "VIRTINQR(1) ! Number of pages in core." \n + "VIRTINQR(4) ! Page size in integer words." \n + "VIRTINQR(7) ! Maximum number of pages allowed on disk." \n + "VIRTINQR(8) ! Number of read/write operations on page." \n + "VIRTINQR(9) ! Maximum record number on page." \n + "VIRTINQR(11) ! Maximum pages touched." \n + "!! -- Return the current value of APDL filtering keywords. --" \n + "KWGET(KEYWORD) ! Returns the current value the keyword \ + specified by KEYWORD. See the APDL UIDL Programmer's Guide for \ + a list of keywords and values." \n + "!! -- Character String Functions Strings must be \ + dimensioned (see *DIM) as a character parameter or enclosed in \ + single apostrophes ('char'). --" \n + "!! -- Functions which return a double precision value of a \ + numeric character string. --" \n + "VALCHR(a8) ! a8 is a decimal value expressed in a string." \n + "VALOCT(a8) ! a8 is an octal value expressed in a string." \n + "VALHEX(a8) ! a8 is a hex value expressed in a string." \n + "!! -- Functions which return an 8 character string of a numeric value. --" \n + "CHRVAL(dp) ! dp is a double precision variable." \n + "CHROCT(dp) ! dp is an integer value." \n + "CHRHEX(dp) ! dp is an integer value." \n + "!! -- Functions which manipulate strings: StrOut is the output \ + string (or character parameter) Str1 and Str2 are input \ + strings. Strings are a maximum of 128 characters. (see *DIM) \ + StrOut = STRSUB(Str1, nLoc,nChar) Get the nChar substring \ + starting at character nLoc in Str1. StrOut = STRCAT(Str1,Str2) \ + Add Str2 at the end of Str1. --" \n + "STRFILL(Str1,Str2,nLoc) ! StrOut = STRFILL(Str1,Str2,nLoc) Add \ + Str2 to Str1 starting at character nLoc." \n + "STRCOMP(Str1) ! StrOut = STRCOMP(Str1) Remove all blanks from Str1" \n + "STRCOMP(Str1) ! Left-justify Str1" \n + "STRPOS(Str1,Str2) ! nLoc = STRPOS(Str1,Str2) Get starting \ + location of Str2 in Str1." \n + "STRLENG(Str1) ! nLoc = STRLENG(Str1) Location of last nonblank character" \n + "UPCASE(Str1) ! StrOut = UPCASE(Str1) Upper case of Str1" \n + "LWCASE(Str1) ! StrOut = LWCASE(Str1) Lower case of Str1" \n + "!! -- The following functions manipulate file names. --" \n + "JOIN('directory','filename','extension') ! Path String = \ + JOIN ('directory','filename','extension') Produces a contiguous \ + pathstring. e.g. directory/filename.ext" \n + "JOIN('directory','filename') ! Path String = \ + JOIN ('directory','filename') Produces a contiguous \ + pathstring. e.g. directory/filename" \n + "SPLIT('PathString', 'DIR') ! Produces a separate output of \ + the directory from the pathstring." \n + "SPLIT('PathString', 'FILE') ! Produces a separate output of \ + the complete filename (with extension) from the pathstring." \n + "SPLIT('PathString', 'NAME') ! Produces a separate output of \ + the filename from the pathstring." \n + "SPLIT('PathString', 'EXT') ! Produces a separate output of \ + the file extension from the pathstring." \n) + +(define-skeleton apdl-skeleton-geometry + "Geometry definitions skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Geometry ----" \n + "!! ------------------------------" \n + \n + "/prep7" \n + "X1 = 0" \n + "X2 = 1" \n + "Y1 = X1" \n + "Y2 = X2" \n + "Z1 = 0" \n + "Z2 = 1" \n + "!! .............................." \n + "!@@@ ... Volumes ..." \n + "!! .............................." \n + "block,X1,X2,Y1,Y2,Z1,Z2 ! 3d hexahedron (wp)" \n + "sphere,Rad1,Rad2,Th1,Th2 ! spherical volume" \n + "cylind,R1,R2,Z1,Z2,Th1,Th2 ! cylinder V>0! " \n + "!!arsym,y,all ! reflection of areas " + "Xc = 0 !centre x-coord." \n + "Yc = 0 !centre y-coord." \n + "!! .............................." \n + "!@@@ ... AREAS ..." \n + "!! .............................." \n + "rectng,X1,X2,Y1,Y2 ! 2d rectangle" \n + "wpcsys" \n + "R1 = 4" \n + "R2 = 20" \n + "N = 14." \n + "Th1 = -360./(2*N)" \n + "Th2 = +360./(2*N)" \n + "Depth=30" \n + "pcirc,R1[0],R2,Th1[0°],Th2[360°] ! circular area on WP" \n + "rpr4,3,10,0,1.2,! polygonal area or prism volume" + "rcon$stat ! status of real constands" \n + "*get,RN,rcon,,num,max ! maximum real set no"\n + "Cylinder = RN + 1 ! new real set" \n + "ID = Cylinder" \n + "r,ID,Length" \n + "!! --- VOLUMES (or AREAS) -- "\n + "cyl4,Xc,Yc,R1,Th1,R2,Th2,Depth=>0 !circular area or cylindrical volume" \n + "pcirc,Diam/2,Diam/2+Thic,90-22.5,90" \n + "!! .............................." \n + "!@@@ ... KeyPoints ..." \n + "!! .............................." \n + "source,X,Y,Z ! default undefined kp and node location" \n + "kl,L1,Ratio,KPNo ! keypoint on line" \n + "!! .............................." \n + "!@@@ ... LINES ..." \n + "!! .............................." \n + "l,KP1,KP2, NDIV, SPACE, slope vector XV1, YV1, ZV1, XV2, YV2, \ + ZV2 ! line in the respective CS with opt. slope" \n + "lstr,KP1,KP2 ! straight line irrespective of current CS" \n + "larc,Kp1,Kp2,Kpc,rad ! if rad is blank, fit throught KPs, no 180° arcs!" \n + "circle,centreKp,radiusKp," \n + \n + "!! .............................." \n + "!@@@ ... Checks ..." \n + "!! .............................." \n + \n + "/prep7" \n + "gsum ! geometry stats" \n + "asum ! area statistics, mass, inertia" \n + "vsum ! volume statistics" \n + "*get,Par,volu,,volu ! get volume from last vsum" \n + \n + "!! .............................." \n + "!@@@ ... Operations ..." \n + "!! .............................." \n + "Y=Diam/2+Thic"\n + "source,Thic,Y-Interf,0 ! make location unambiguous for kmove!!"\n + "Interf = 0.01"\n + "!! transfering entities to coordinate system" \n + "ktran,to_coord-sys,kp1,kp2,ninc,kinc,noelem,imove !imove=1: only move" \n + "!![k,l,a,v]tran" \n + "kmove,10,0,U,Y-Interf,0,1,Y,U,0 ! move KP to intersection"\n + "move,10,0,U,Y-Interf,0,1,Y,U,0 ! move node to intersection"\n + \n + "nummrg,all ! merge coincident items" \n + "vglue ! a-,l- glue items together" \n + "boptn,stat ! boolean operation options" \n + "!! --- lines ---" \n + "ldrag,kp1,kp2,,,,,line1,line2,,,, !drag KPs on lines -> lines" \n + "lfillt,l1,l2,rad ! fillet between intersecting lines" \n + "lglue,all ! glue lines, retaining area attributes" \n + "ldiv,1,.5 ! divide line 1 in ratio .5" \n + "!! --- areas ---" \n + "arsym,X|Y|Z, NA1, NA2, NINC, KINC, NOELEM, IMOVE ! cartesian \ +reflection normal to X,y,z" + "agen,ITIME,NA1,NA2,NINC,DX,DY,DZ,KINC,NOELEM,IMOVE ! Generate \ + areas from a pattern of areas" \n + "atran ! Transfers a pattern of areas to another coord.-system." \n + "arotat ! areas from rotated lines" \n + "adrag,to-be-dragged-l1,l2,,,,,path1,path2,, ! areas from dragged \ +lines over path lines" \n + "!! --- volume ---" \n + "vdele,all,,,1 ! delete volumes and everything below" \n + "vrotat,A1,A2,,,,,axis1,axis2,arc ! volumes from areas around axis" \n + \n + "!! .............................." \n + "!@@@ ... Booleans ..." \n + "!! .............................." \n + \n + "!! area" \n + "btol,1e-6" \n + "asbl,all,all ! substract area by line" \n + "aovlap,all ! overlap areas" \n + "asba,A1,A2,SEPO,KEEP1,KEEP2 ! SEPO: seperate entities" \n + "asbw, ! substract by wp" \n + "/pnum,area,1 $ aplot" \n + \n + "!! volume" \n + "vglue,all" \n + "vsbw,all,,delete ! v substracted by wp" \n + "vdele,all,,,1 ! skwp 1:delete kp,l,a as well" \n + "vsym ! symmetry reflections: arsym,esym" \n + \n) + +(define-skeleton apdl-skeleton-material-definition + "Material definitons skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Material definitions ----" \n + "!! ------------------------------" \n + \n + "!! --- material library ---" \n + "!! convention: file suffix: .unitssystem_MPL" \n + "!! unitsystems:" \n + "!! USER — User-defined system (default)." \n + "/units,mpa !indicate MPA system for material defs." \n + "!! SI — International system (m, kg, s, K)." \n + "!! MKS — MKS system (m, kg, s, °C)." \n + "!! uMKS — μMKS system (μm, kg, s, °C)." \n + "!! CGS — CGS system (cm, g, s, °C)." \n + "!! MPA — MPA system (mm, Mg, s, °C)." \n + "!! BFT — U. S. Customary system using feet (ft, slug, s, °F)." \n + "!! BIN — U. S. Customary system using inches (in, lbf*s2/in, s, °F)." \n + \n + "!! --- material library --- " \n + "/mplib,write,/HOME/uidg1626/a-m/matlib" \n + "!! --- It is advisable to make the material files which are \ + commented read only!" \n + "/mplib,read,/HOME/uidg1626/a-m/matlib" \n + "/mplib,stat !shows the read write directories" \n + "!! which materials are in the mplib?" \n + "/sys,ls ~/a-m/matlib" \n + "/units,mpa ! default extension for mpread is now MPA_MPL" \n + "mat,Steel ! set the material number" \n + "mpread,St37,,,lib" \n + "!! mpwrite" \n + "mplist" \n + \n + "*get,MN,mat,,count,max ! get maximum material no" \n + "Steel=NM+1" \n + "ID = Steel" \n + "!! MP: constat properties or up to 4th order polynomials in temperature" \n + "mp,nuxy,ID,0.3 ! Poisson No" \n + "mp,ex,ID,200000 ! Elastic modulus" \n + "mp,dens,ID,7850e-12 ! Density in t/mm³" \n + "AlphaSteel = 12e-6 ! Thermal expansion in 1/K" \n + "mp,alpx,ID,AlphaSteel ! Secant modulus of therm. exp.!" \n + "!! Temperature dependent secant modulus" \n + "mpamod,ID,20 ! [0] only when not issued mp,reft or tref" \n + "mptemp,1,100,200,300 ! 3 temperatures" \n + "mpdata,alpx,ID,1,20e-6,21e-6,22e-6 ! 3 secant moduli" \n + "!mp,ctex,ID,12e-6 ! instantaneous coofficient of therm. exp." \n + "KSteel = 60.5 ! Conductivity in W/(mK)" \n + "mp,kxx,ID,KSteel" \n + "mplist,ID,,,all ! Show all properties of mat. ID" \n + "mpplot,ex,ID,100,500 ! plot mat. vs temp." \n + \n + "!! --- Nonlinear materials ---" \n + "tb,biso,ID,1 ! bilinear isotropic plasticity" \n + "Yield_stress = 160" \n + "Tensile_strain = 0.3" \n + "True_tensile_strain = log( 1+Tensile_strain)" \n + "Tensile_stress = 260" \n + "True_tensile_stress = Tensile_stress*(1+Tensile_strain)" \n + "Tangent_modulus = (True_tensile_stress-Yield_stress) / \ + True_tensile_strain" \n + "tbdata,,Yield_stress,Tangent_modulus" \n + "tblist,all,ID ! list properties" \n + "tbplot,biso,ID" \n + "/com, === Material %ID% is steel. ===" \n + "Alu=2" \n + "mp,nuxy,Alu,0.3" \n + "mp,ex,Alu,70000" \n + "tb,biso,Alu,1" \n + "tbdata,,Yield_stress,Tangent_modulus" \n + \n + "!! - KINH: Multilinear kinematic hardening of 0.5 mm hardened \ + C75S spring sheet steel - " \n + "Steel = 1" \n + "ID = Steel" \n + "mp,nuxy,ID,0.3 ! Poisson No" \n + "mp,ex,ID,200000 ! Elastic modulus" \n + "mp,dens,ID,7850e-12 ! density in t/mm³" \n + "AlphaSteel = 12e-6 ! thermal expansion in 1/K" \n + "mp,alpx,ID,AlphaSteel ! secant modulus of therm. exp.!" \n + "!mp,ctex,ID,12e-6 ! instantaneous coofficient of therm. exp." \n + "KSteel = 60.5 ! conductivity in W/(mK)" \n + "mp,kxx,ID,KSteel" \n + "tbdele,kinh,Steel ! redefine material" \n + "tb,kinh,Steel,1,8,0 ! 1 temperature, 8 data points,0:total strain" \n + "tbtemp,20 !measurements @RT" \n + "tbpt,,.6e-2,1300." \n + "tbpt,,.75e-2,1430." \n + "tbpt,,1.e-2,1500." \n + "tbpt,,1.5e-2,1550." \n + "tbpt,,2.e-2,1580." \n + "tbpt,,4.e-2,1645." \n + "tbpt,,5.e-2,1640." \n + "tbpt,,5.4e-2,1600." \n + "mp,ex,Steel,1300/.6e-2 ! Elastic modulus" \n + "!! -- mpwrite overwrites without warning existing files! " \n + "mpwrite,C75S_hardened,MPA_MPL,,lib,Steel ! write to library" \n + \n + "!! --- kinh (max 20 data points) defined with plastic strain -- " \n + "PPS = 1" \n + "tbpt,,ID = PPS" \n + "mptemp ! erase temp table" \n + "mptemp,1,23" \n + "mptemp,2,70" \n + "mpdata,nuxy,ID,,0.4,0.4" \n + "mpdata,ex,ID,,13000,11568" \n + "mplist" \n + "tbdele,kinh,ID ! redefine material" \n + "tb,kinh,ID,1,10,4 ! 1 temperature, 9 data sets,4: plastic strain!" \n + "tbtemp,70 ! 70 °C" \n + "tbpt,, 0.000000e+00, 20.824" \n + "tbpt,, 6.845947e-05, 40.856" \n + "tbpt,, 3.125624e-04, 58.856" \n + "tbpt,, 8.648098e-04, 74.448" \n + "tbpt,, 1.530734e-03, 87.568" \n + "tbpt,, 2.393046e-03, 98.416" \n + "tbpt,, 3.430311e-03, 107.240" \n + "tbpt,, 4.619708e-03, 114.304" \n + "tbpt,, 5.946024e-03, 119.784" \n + "tbpt,, 7.496811e-03, 123.824" \n + \n + "!! - specific heat -" \n + "mptemp ! erase temperature table" \n + "mpdata,c,Alu,, ! specific heat in W/(mK)" \n + "!! - conductivity -" \n + "mptemp ! erase temperature table" \n + "mptemp,,-100,0,100,200 ! 4 temperatures" \n + "mpdata,kxx,Alu,,114,144,165,175 ! conductivities in W/(mK)" \n + "mptemp" \n + "/com, === Material %Alu% is Aluminium. ===" \n + "Air=3" \n + "mp,dens,Air,1.2e-12 !t/mm³" \n + "mptemp,,-150,0,100,200,300,500,1000" \n + "mpdata,kxx,Air,,.012,.0243,.0314,.0386,.0454,.057,.0662" \n + "mptemp" \n + \n + "!! -- orthotropic linear material --" \n + "esel,s,mat,,bla" \n + "emodif,all,esys,12 ! modify esys" \n + "mp, e{x,y,z}, Steel, VAL" \n + "mp, alp{x,y,z}, Steel, VAL ! in element co-ordinate system" \n + \n + "!! --- Elastomers (hyperelasticity) ---" \n + \n + "!! --- Neo Hook ---" \n + "!! for 30 % strain" \n + "Shore = 60" \n + "ShearModule = 0.086*1.045**Shore ! guestimate" \n + "NeoHook = 1" \n + "tb,hyper,NeoHook,,,neo" \n + "BulkModulus = 2000" \n + "tbdata,1,ShearModulus,1/(2*BulkModulus)" \n + \n + "!! --- Mooney-Rivlin ---" \n + "!! for 30 % compression 100 % tension strain" \n + "Mooney = 2" \n + "tb,hyper,Mooney,,,MOONEY" \n + "tbdata,1,3*ShearModule/6.6" \n + "tbdata,2,.3*ShearModule/6.6" \n + "!! -- check whether to drop elem. midside nodes and use u-p formulation" \n + "!! -- u-p is not needed in plane stress configurations!" \n + "keyopt,Mooney,6,1 ! (6)1: mixed u-p formulation" \n + "!! --- Ogden for high strain applic. (700 % strain) ---" \n + "Ogden = 3" \n + "tb,hyper,Ogden,1,2,OGDEN ! 2nd order Ogden model" \n + "tbdata,1,3.5809,1.05e-9,3.8485e5" \n + "tbdata,4,-2.2e6,-.8778,0" \n + \n + "!! swelling, depending on \ + fluence (humidity,precipitation,radiation,...) load" \n + "tb,swell,ID,1,1,line ! linear swelling" \n + "tbdata,1,Swelling" \n + "tblist,swell,ID" \n + "!! bfe,all,flue,,1 ! bc" \n + \n + "!! --- Magnetic materials ---" \n + "Air = 4" \n + "mp,murx,Air,1 ! murx permeability" \n + "Magnet = 5" \n + "Hc = 2.8e5 ! ferrit magnet coercive force in A/m" \n + "mp,mgxx,Magnet,Hc " \n + "*afun,rad" \n + "Pi = acos(-1)" \n + "Mu0 = .4*Pi*1e-6 ! field constant in Vs/(Am)" \n + "Br = .4 ! residual induction in Tesla" \n + "mp,murx,Magnet,Br/(Mu0*Hc)" \n + \n + "/pnum,mat,1 $ eplot" \n + \n) + +(define-skeleton apdl-skeleton-component + "Component (Named Selections in WorkBench) skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Components ----" \n + "!! ------------------------------" \n + \n + "cm,cmName,volu ! ,,area;line;kp;elem;node" \n + "cmsel,s,cmName ! select components cmName" \n + "cmsel,s,,volu ! select all volume components" \n + "cmsel,all ! additional select all components" \n + "cmdele,cmName ! delete component cmName" \n + "*GET, Parameter, COMP, 0, ncomp ! Get the number of components" \n + \n) + +(define-skeleton apdl-skeleton-bc + "Boundary conditions skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Boundary conditions ----" \n + "!! ------------------------------" \n + \n + "/prep7" \n + \n + "kbc,1 ![0](antype,static):ramped, 1:stepped loading" \n + \n + "!! .............................." \n + "!@@@ ... DOF constraints ..." \n + "!! .............................." \n + \n + "nsel,s,loc,y,0" \n + ",a,loc,y,1" > \n + ",r,loc,x,0" > \n + "d,all,ux,0,,,,uy,uz,rotx,roty,rotz ! apply to other labels" \n + "!! After second load step fix current displacment" \n + "d,all,ux,%_FIX%" \n + "d,all,all!dk,dl,da" \n + "/pbc,u,,on !plot translational constraints" \n + "/pbc,rot,,on !plot rotational constraints" \n + "dlist,all" \n + \n + "!! .............................." \n + "!@@@ ... Concentrated loads ..." \n + "!! .............................." \n + \n + "f,all,fx,1,1 !@nodes:real,imag" \n + "f,all,fx,%table% !table values" \n + "f,node(0,0,0),m,y !torque load" \n + "/pbc,m,,on !show torque loads" \n + "fk,all,fx,1,1 !@keypoints:real,imag" \n + "/pbc,f,,on !show force loads" \n + "flist,all !fklist" \n + \n + "!! .............................." \n + "!@@@ ... Surface loads ..." \n + "!! .............................." \n + \n + "sf,all,pres,1 !surface loads on nodes" \n + "sflist,all" \n + "sfe,all,pres" \n + "sfelist,all" \n + "sfl,all,pres" \n + "sfllist,all" \n + "sfa,all,,pres," \n + "sfalist,all" \n + \n + "!! .............................." \n + "!@@@ ... Body loads ..." \n + "!! .............................." \n + \n + "tref,23 ![0] degree reference temperature" \n + "tunif,30 !uniform temperature (default step applied!)" \n + "bf,all,temp,30 !bfe,bfk,bfl,bfa,bfv" \n + "bflist,all !list body loads" \n + "!! e. g.: as harmonic acceleration load with amplitude steps" \n + "*dim,mytab,table,5,1,,freq" \n + "mytab(1,0)= 20, 199, 200, 999,1000" \n + "mytab(1,1)=100e3,100e3,30e3,30e3,10e3" \n + "acel,%mytab%,, !acceleration in global coordinates" \n + \n + "!! .............................." \n + "!@@@ ... Inertia relief and mass summary ..." \n + "!! .............................." \n + \n + "!! LOADS: nonlinearities aren't supported, fix all DOFs!" \n + "/solu" \n + "irlf,1 !0: none,1:ir on,-1:printout masses" \n + "nsel,s,loc,x,1" \n + "!! --- partial solution for mass calculation ---" \n + "outpr,basic,all" \n + "irlf,-1 " \n + "/output,mass_output,txt" \n + "psolve,elform !partial solution" \n + "psolve,elprep" \n + "/output" \n + "*list,mass_output,txt" + "irlist ! print masses and load summaries" \n + \n + "!! .............................." \n + "!@@@ ... Corriolis effects ..." \n + "!! .............................." \n + \n + "cgomga,x,y,z, ! rotational velocity about globla coord. sys." \n + "dcgomg,x,y,z ! rotational acceleration about global coord. sys." \n + \n + "!! .............................." \n + "!@@@ ... Node coupling ..." \n + "!! .............................." \n + \n + "nsel,s,loc,x,1" \n + "cp,next,uy,all !couple dofs" \n + \n + "!! .............................." \n + "!@@@ ... Constraint equations ..." \n + "!! .............................." \n + \n + "nsel,s,loc,x,1" \n + "ce,next,0,N1,uy,fact1,N2,ux,fact2 !constrain node dofs" \n + \n + "allsel" \n + "/pbc,all,on" \n + "gplot" \n + \n + "!! .............................." \n + "!@@@ ... Magnetics ..." \n + "!! .............................." \n + \n + "!! fmagbc,'Component' ! flag force calculation" \n + "bfa,all,js, ! js current density" \n + "bflist,all" \n + "dl,all,,asym ! flux parallel to lines" \n + "nsel,s,ext ! select exterior nodes" \n + "dsym,asym ! flux parallel to lines" \n + \n + "!! ------------------------------" \n + "!@@ --- Plot BCs ----" \n + "!! ------------------------------" \n + \n + "/psf,conv,hcoef ! plot surface loads" \n + "/pbf,hgen ! plot body force loads (temp,...) as contours" \n + "/pbc,f,,1 !1:show applied force symbols" \n + "/pbc,nfor,,1 ! show nodal forces" \n + "/pbc,rfor,,1 ![0],1:show reaction forces" \n + "/pbc,defa !reset /pbc" \n + \n) + +(define-skeleton apdl-skeleton-buckling + "Buckling skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Buckling ----" \n + "!! ------------------------------" \n + \n + "!! -- static --" + "/solu" \n + "allsel" \n + "outres,all,all" \n + "pstres,on" \n + "solve" \n + "" \n + "!! -- buckling --" \n + "" \n + "fini $ /solu" \n + "antype,buckle" \n + "bucopt,lanb,3" \n + "outres,all,all" \n + "solve" \n + "fini $ /solu !switch to another loadstep?" \n + "expass,on" \n + "mxpand,3" \n + \n) + +(define-skeleton apdl-skeleton-solve + "Solving /solu skeleton." + nil + "!! ==============================" \n + "!@ === Solution =====" \n + "!! ==============================" \n + \n + "/solu" \n + "allsel" \n + \n + "!! --- basics ---" \n + "solcontrol,on ! optimised nonlinear solution defaults" \n + "!! implies /kbc,0: ramped loading" \n + "N1=20 ! No of substeps for the first one" \n + "N2=N1*100 ! maximum No of substemps" \n + "N3=N1/4 ! minimum No of substeps " \n + "nsubst,N1,N2,N3" \n + "outres,all,all ! ,item,freq,cname" \n + "antype,static ! ,rest,LoadStep,SubStep ![new]rest: perform \ + restart operation" \n + "antype,buckle ! [static],modal,harmic,trans,substr,spectr " \n + "nlgeom,on" \n + "autots,on" \n + \n + "/gst,on !activate graphical solution tracking (convergence norms only?)" \n + "solve" \n + \n + "!! --- advanced controls ---" \n + "cnvtol,u,,0.1 ! convergence [0.5 % solcontrol, on: 5 %] manipulation" \n + "cnvtol,f,,0.05 ! solcontol,on: [0.5% F,M; 5% U]" \n + "neqit,30! No of equilibr. iterations" \n + "!! nonlinear tracking" \n + "nlhist,on ! [off], on: track all nonlinear variables in .nlh" \n + "nlhist,pair,ContArea,cont,carea,4 ! monitor contact area, of cid 4" \n + "!! nonlinear diagnostics" \n + "nldiag,maxf,2 ! maximum files nrXXX or ndXXX to be written" \n + "nldiag,cont,iter ! contact information file .cnd" \n + "nldiag,cont,stat ! status" \n + "nldiag,nrre,on ! store residual file .nrXXX" \n + "!! plnsol,nrres" \n + "rescontrol,,1,last ! create restart file(s)" \n + ",status" > \n + "/config,nres,2000 ! No of substeps in result file [1000]" \n + "/solu" \n + "!! --- birth & death ---" \n + "ekill,all ! deactivate elements" \n + "ealive,all ! reactivate elements" + \n + "eqslv,pcg,1e-4" \n + "nropt,unsym ! frictional contacts not converging?" \n + "coupling of sliding and normal stiffness" \n + "!! --- unstable structures: stabilisaton methods " \n + "stabilize,constant,energy,1e-4 ! constant over LS" \n + "stabilize,reduce,energy,1e-4 ! reduce to the end of LS" \n + "stabilize ! decactivate stabilisation" \n + "antyp,,rest,1, ! next-to-last-converged substep!!!!!!! to \ + calculate the stabilistation factors" \n + "!! --- or arclength method ---" \n + "arclen,on ! arclen stabilisation method" \n + \n + "/runst ! enter the run statistics processor" \n + "rall ! run statistics estimator" \n + \n + "rescontrol,file_summary ! check restart files" \n + "antyp,,rest,1,last" \n + "time,1.2 ! time at the end of load step" \n + \n + "!! ------------------------------" \n + "!@@ --- Inertia ----" \n + "!! ------------------------------" \n + \n + "omega,,,2*Pi*Rpm/60 ! rotational ANGULAR velocity" \n + \n + "!! ------------------------------" \n + "!@@ --- Modal ----" \n + "!! ------------------------------" \n + \n + "antype,modal" \n + "modopt,lanb,10,10,1e10 ! method,No of modes,freqB,freqE" \n + "mxpand" \n + \n + "!! ------------------------------" \n + "!@@ --- Harmonics ----" \n + "!! ------------------------------" \n + \n + "antype,harmic" \n + "dmprat,.02 ! constant damping ratio" \n + "hropt,full ! Full harmonic response" \n + "hrout,off ! Print results as amplitudes and phase angles" \n + "outpr,basic,1 ! solution item printout" \n + "nsubst,30 ! 30 Intervals within freq. range" \n + "harfrq,,7.5 ! Frequency range from 0 to 7.5 HZ" \n + "kbc,1 ! Step boundary condition" \n + \n + "!! ------------------------------" \n + "!@@ --- Linear buckling ----" \n + "!! ------------------------------" \n + \n + "!! static pstres solu" \n + "/solu" \n + "allsel" \n + "pstres,on" \n + "rescontrol,linear,all,1" \n + "solve" \n + "y" \n + "finish" \n + "/solu" \n + "antype,buckle" \n + "bucopt,lanb,3" \n + "mxpand,3" \n + "solve" \n + "finish" \n + \n + "!! Nonlinar buckling with deformed shape" \n + "/prep7" \n + "upcoord,2e-1" \n + "eplot" \n + "!! nwrite,nodes,dat" \n + \n + "!! ------------------------------" \n + "!@@ --- Magnetics ----" \n + "!! ------------------------------" \n + \n + "magsolv" \n + \n + "solve" \n + "!! ------------------------------" \n + "!@@ --- Cyclic symmetry ----" \n + "!! ------------------------------" \n + \n + "cycopt,status" \n + \n) + +(define-skeleton apdl-skeleton-post1 + "Postprocessing /postXX skeleton." + nil + "!! ==============================" \n + "!@ === Post1 =====" \n + "!! ==============================" \n + \n + "/post1" \n + "!! --- theory reference: Nodal and centroidal data evaluation ---" \n + "eresx!defa->elastic:extrapolate from integration points to \ + nodes, nonlinear:copy, yes->extrapolate linear part, no->copy \ + to nodes" \n + "!! --- derived nodal data computation ---" \n + "avprin !principal sums and vector sums" \n + "avres !result averaging for PowerGraphics" \n + "plnsol !continuous contours, averaged at neighbouring nodes" \n + "plesol !no nodal averaging" \n + "pletab !constant (centroidal) value per element" \n + "pletab,avg !constant element value, averaged at neigbouring nodes" \n + "/inquire,job_name,jobname" \n + "!! resume,job_name,db" \n + "set,last" \n + "pldisp,2 !display displaced structure" \n + "!! - contours -" \n + "plnsol,u,sum,2 !0:deformed only, 1:with undef model 2:with \ + undeformed edges" \n + "plnsol,s,eqv ! von Mises" \n + "shell,bot, ![top],mid select shell location for result ouput" \n + "plnsol,s,1 ! maximum principle: Lamé" \n + "plnsol,s,int ! stress intensity: Tresca" \n + "prnsol,s,x !|presol components in global x-dir (except \ + transformed:nrotat,rsys)" \n + "plnsol,s,xy ! shear in xy-dir." \n + "plnsol,epto,1!principal total mechanical strain (excluding \ + thermal) (EPEL + EPPL + EPCR)," \n + "plnsol,eptt,1!principal total mechanical strain + thermal strain" \n + "!! - vectors -" \n + "plvect,u !display vector results" \n + "plvect,epto" \n + "plvect,s" \n + \n + "!! .............................." \n + "!@@@ ... Temperature ..." \n + "!! .............................." \n + \n + "plnsol,temp" \n + "!! .............................." \n + "!@@@ ... Reactions ..." \n + "!! .............................." \n + \n + "fsum !force sum from all selected elements" \n + "*get,Fy,fsum,,item,fy" \n + "*get,T,active,,set,time" \n + "nforce !list of all nodal forces" \n + "/gcolumn,1,'Reaction'" \n + "/axlab,x,Substep" \n + "/axlab,y,Force in N" \n + "/gropt,fill,1 ! fill curves" \n + "*vplot,,Reaction" \n + \n + "/dscale,,1 !do not scale (for nlgeom)" \n + "/dscale,,auto !or 0:scale automatically" \n + "*get,Ds,graph,WN,dscale,dmult" \n + "/contour,,ncont,min,inc,max" \n + "/contour !,,auto !switch off user contours" \n + "/cval,,10,20,30,40,50 !explicit contour values" \n + "/edge,,1 !1:display elements in contour plots" \n + "/edge,,0 !0:switch off display of elements in contour plots" \n + "/plopts,minm,off !switch off min-max symbols" \n + "/plopts,minm,on" \n + "/dist,,1/2,1 !enlarge twice" \n + "/noerase ! don't erase screen between plots" \n + "/erase" \n + "/triad,rbot ! coordinate system to right bot" \n + "/plopts,wp ! switch off working plane" \n + "/plopts,minm ! switch off min max" \n + \n + "!! /image is not possible in batch mode" \n + "/image,save,test !save XWindow Dump xwd (or bmp on Windows)" \n + "/sys,convert test test.png" \n + "!! -- graphics output & invert background colour --" \n + "/color,wbak,whit !white background" \n + "!! or" \n + "/color,wbak,whit !white background or:" \n + "/RGB,index,100,100,100,0" \n + "/RGB,index,0,0,0,15" \n + "/gfile,1200 !resolution height of /show 1000 [256,[800],2400], \ + width is 1.33*height" \n + "/show,png !creates jobnameXXX.png files quality not as good as \ + with /image" \n + "pngr,stat !additional png options (orientation,compression,...)" \n + "plvect,B" \n + "/noerase" \n + "lplot" \n + "/show,close" \n + "/erase" \n + \n + "!! ------------------------------" \n + "!@@ --- Plot BCs ----" \n + "!! ------------------------------" \n + \n + "/pbc,f,,1 !1:show applied force symbols" \n + "/pbc,nfor,,1 ! show nodal forces" \n + "/pbc,rfor,,1 ![0],1:show reaction forces" \n + "/pbc,defa !reset /pbc" \n + \n + "!! ------------------------------" \n + "!@@ --- Acoustics ----" \n + "!! ------------------------------" \n + \n + "/view,,1,1,1" \n + "/graphics,full" \n + "/sscale,,1e5 !topographic display scaling" \n + "plnsol,pres" \n + "!! sound pressure level" \n + "etable,spl,nmisc,4 !read SPL into table" \n + "pletab,spl" \n + "!! SPL in nodal display" \n + \n + "!! .............................." \n + "!@@@ ... Multi window plots ..." \n + "!! .............................." \n + "/window,2,dele" \n + "/window,1,dele" \n + "/erase" \n + "/window,2,-1,-.5,.5,1 !from -1 to 1 is the full screen" \n + "aplot" \n + "/window,2,off" \n + "/noerase" \n + "!! /window,1,rbot !from -1 to 1 is the full screen" \n + "/window,1,full !from -1 to 1 is the full screen" \n + "!! /window,3,rbot !full,righ,top,bot,ltop,lbot,rtop,rbot" \n + "eplot" \n + "/window,2,on" \n + "/erase" \n + \n + "!! ------------------------------" \n + "!@@ --- Magnetics ----" \n + "!! ------------------------------" \n + \n + "/efacet,2" \n + ;; "psdisp,0" \n + "/graphics,full ! results averaging also from interior" \n + "pletab,Pene" \n + "plls,Pene,Pene !line element results" \n + "plf2d,27 ! flux lines, equipotentials" \n + "plvect,b,! induction vector plot" \n + "fmagsum,'component_name'" \n + \n + "!! ------------------------------" \n + "!@@ --- Modal ----" \n + "!! ------------------------------" \n + \n + "*get,Freq1,mode,1,freq! first eigenfrequency" \n + "pldisp,2 !show deformed shape and undefomed (2) contours" \n + \n + "!! ------------------------------" \n + "!@@ --- Harmonics ----" \n + "!! ------------------------------" \n + \n + "!! animation" \n + "lcdef,1,,1 !real" \n + "lcdef,2,,1,1 !complex" \n + "/show,pscr,,,8 ! 8 colour planes" \n + "*afun,deg" \n + "N = 20" \n + "I = 1" \n + "*do,Theta,0,360-360/N,360/N" \n + "/syp,rm -v file*.eps" \n + "Real = cos(Theta)" \n + "Imag = sin(Theta)" \n + "lcfact,1,real" \n + "lcfact,2,imag" \n + "*if,Real,eq,0,then" \n + "lcfact,1,1e-10" \n + "*endif" > \n + "*if,Imag,eq,0,then" \n + "lcfact,2,1e-10" \n + "*endif" > \n + "lcase,1" \n + "lcoper,add,2" \n + "/title, New title" \n + "/replot ! replot currently stored plot item" \n + "File='-o=eigenmodes/anim%I%.pdf'" \n + "I = I+1" \n + "/syp,epstopdf file000.eps,File" \n + "*enddo" > \n + "!! /seg,off" \n + "!! anim,5,1" \n + "/show,close" \n + \n + "!! ------------------------------" \n + "!@@ --- Contact status ----" \n + "!! ------------------------------" \n + \n + "nldpost,nrre,stat !element information nonlinear" \n + "plnsol,nrre,,,,001 !plot residual file .nr001 " \n + "etable,Pene,cont,pene" \n + "etable,chat,cont,cnos" \n + "etable,cpre,cont,pres" \n + "etable,Slid,cont,slide" \n + "etable,St,cont,stat !3-closed sticking" \n + "!! !2-closed sliding" \n + "!! !1-open but near" \n + "!! !0-open and far, outside pinball" \n + "set,list" \n + "set,last!first,next,previous" \n + "set,2,last ! set,last,last does not work!" \n + \n + "!! ------------------------------" \n + "!@@ --- Animations ----" \n + "!! ------------------------------" \n + \n + "plnsol,s,1" \n + "/anfile,save !save/resume animation to/from jobname.anim" \n + "/anfile,save,cylind !save animation to cylind.anim" \n + "anim,20,1,.3 !cycles:20[5],mode:1[0],forward-reverse \ + 1:forward-forward,delay: .3[.1]" \n + "anmode !mode shape animation" \n + "anharm,40,.3,1 !40[12]frames,.3[.1] s delay,1[5] \ + cycles,harmonics animation or complex mode shapes" \n + "antime,20,.3,1,0,0,0,2!animate time data,20[5]: frames, \ + .3[.1]: s delay, 1[5]: anim. cycles, [0]:no scaling,[0] current \ + LS, 2:range,min tim, max time" \n + "andata !contour animation over result data range" \n + "anmres !multiple result files" \n + \n + "/show,spring_washer6,grph !Ansys graphics format for the display utility" \n + "!! display is saveing the animation in the HOME folder on Windows" \n + "*get,Nls,active,,set,nset" \n + "set,first" \n + "/user,! inhibit image size fit under large displacements" \n + "*do,I,1,Nls" \n + " plnsol,epto,eqv" > \n + " set,next" > \n + "*enddo" > \n + "/show,close" \n + "!! cycexpand,on ! graphical expansion" \n + \n) + +(define-skeleton apdl-skeleton-output-to-file + "In/Output to file skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Output to file ----" \n + "!! ------------------------------" \n + \n + "Write all parameters to text file,(arrays in 4 column formatting!)" \n + "parsav,all ! [file.parm] " \n + "Pares,! read from .parm file" \n + \n + "!! --- 0.) usable in interactive sessions without calling a macro file!" \n + "*del, RTable,, nopr ! nopr: no query dialog" \n + "paget, RTable, Table !write path into an array" \n + "*dmat, Tmp,, import, APDL, RTable !write array into a dense APDL math matrix" \n + "*export, Tmp, csv, sphere.csv! export matrix to CSV file" \n + \n + "!! --- 1.) write macro file without parameter substitution" \n + "!! *vwrite works only in batch mode!" \n + "*create,tmp,mac ! macro file, no parameter substitution!" \n + "/output,tmp,out ! redirect output to tmp.out" \n + "bla=otto" \n + "*vwrite,bla,otto" \n + "%G %G" \n + "/output" \n + "*end !write into file up to this command" > \n + "!! can be used with the *use command to pass params into it" \n + "!! /input does not allow parameters" \n + \n + "*list,tmp,mac ! display external file" \n + "/input,tmp,mac,,:LABEL ! read from label LABEL onwards" \n + \n + "! --- 2.) redirect ansys text output to file" \n + "/output,%Dir(1)%%FileName%,txt,," \n + "/com, #Time/s, WireTemp/°C InsulationTemp/°C YokeTemp/°C" \n + "/output" \n + "*do,I,1,NS" \n + "set,,,,,,,I" > \n + "!! etable,Temptab,temp" > \n + "*get,Tim,active,,set,time" > \n + "*vget,TempArray(1),node,,temp" > \n + "*vmask,WireMask(1)" > \n + "*vscfun,WireT,mean,TempArray(1)" > \n + "*vmask,InsuMask(1)" > \n + "*vscfun,InsuT,mean,TempArray(1)" > \n + "*vmask,YokeMask(1)" > \n + "*vscfun,YokeT,mean,TempArray(1)" > \n + "/output,%Dir(1)%%FileName%,txt,,append" > \n + "/com, %Tim% %WireT% %InsuT% %YokeT%" > \n + "/output" > \n + "*enddo" > \n + \n + "tmp ! read tmp.mac into the interpreter" \n + \n + "!! --- 3.) create a 'command' file test.mac with parameter substitution" \n + "*create,test,mac !write macro file" \n + "*cfopen,test,txt,,append ! appending to file" > \n + "*cfwrite,A=5 ! interpreted output" \n + "!! SET strings are limited to 32 characters!!!" \n + "*cfwrite,Strg1='# cylindrical magnet: radius = %Rad%'" \n + "*cfwrite,Strg2=', length = %Len%'" \n + "*cfwrite,Strg3=', distance, magnetic induction'" \n + "*cfwrite,*vwrite,Strg1, Strg2, Strg3" \n + "*cfwrite,%S %S% %S" \n + "*vwrite,B(1,1),B(1,2)" > \n + "%E %E" > \n + "*cfclos ! close file" \n + "*end ! end macro file" > \n + "/input,test,mac,,:LABEL ! read macro file from label LABEL onwards" \n + \n + "!! --- 4.) output includes responses from commands, notes, \ + errors and warnings" \n + "/output,bla,mac ! write macro file, overwrite content,up to 75 \ + characters only!" \n + "!/output,bla,mac,,append !append to macro file" \n + "/com,*mwrite,B(1),'bla','txt'" \n + "/com,%G" \n + "/output !redirect to standard ouput " \n + "/input,bla,mac" \n + \n + "!! -- 5.) output from /post26" \n + "*get,Size,VARI,,NSETS !No of result sets" \n + "*dim,Accx,array,Size" \n + "*dim,Tim,array,Size" \n + "*dim,Accy,array,Size" \n + "vget,Accx(1),5,,0 ! post26 variable 5, 0:real into array" \n + "vget,Accy(1),7,,1 ! variable 7 complex value" \n + "vget,Tim(1),1 ! time or frequency" \n + "!! - export arrays -" \n + "*create,tmp,mac" \n + "*cfopen,sim,csv ! don't indent the output format strings" \n + "Strg='T AX AY'" \n + "*vwrite,Strg" \n + "%S" \n + "*vwrite,Tim(1), Accx(1), Accy(1)" \n + "%G %G %G" \n + "*cfclos"> \n + "*end"> \n + "*list,tmp,mac" \n + \n + "/input,tmp,mac" \n + "*list,sim,csv" \n + \n + "!! -- 6.) output from etable" \n + "!! *vput: etable -> array" \n + "!! *vwrite: array -> file" \n + \n + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" \n + "!! --- input from file ---" \n + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" \n + "!! read in all parameters written with parsav" \n + "parres,change ![file.parm] extend parameter set, replace \ + existing parameters" \n + "!! read in table" \n + \n + "*dim,Rolf,,5,5" \n + "*do,I,1,5,1" \n + "*do,J,1,5,1"> \n + "Rolf(I,J)=(I+1)*J"> \n + "*enddo"> \n + "*enddo"> \n + \n + "*create,tmp,mac" \n + "/output,tmp,out" \n + "*vwrite,Rolf(1,1),Rolf(1,2),Rolf(1,3),Rolf(1,4),Rolf(1,5)" \n + "% G % G % G %G %G" \n + "/output" \n + "*end"> \n + "*list,tmp,mac" \n + \n + "/input,tmp,mac" \n + "*list,tmp,out" \n + \n + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" \n + "!! --- graphical output ---" \n + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" \n + "!! --- 1.) device ouput ---" \n + \n + "!! --- PNG ---" \n + "!/color,wbak,whit ! white background or:" \n + "/RGB,index,100,100,100,0 ! white background" \n + "/RGB,index,0,0,0,15" \n + "/gfile,1200 !set height resolution [800] to 1200, width=1.33*height" \n + "/sys,rm file*.png" \n + "/show,png ! creates jobname###.png files" \n + "pngr ! additional options" \n + "pngr,stat" \n + "plvect,B" \n + "/noerase ! prevent screen erase" \n + "lplot" \n + "/show,close" \n + "/erase !erase screen" \n + "/sys,display file*.png" \n + \n + "!! --- EPS ---" \n + "!! -- eps output, default white background" \n + "pscr,color,2 ! coloured output" \n + "pscr,paper,a4,landscape" \n + "pscr,hires,1 ! 1:high resolution" \n + "pscr,LWID,5 ! line width factor [3] 1-99" \n + "pscr,stat" \n + "/device,text,1,140 ! enlarge 140 % the text size" \n + "/plopts,info,off ! switch off all descriptive text" \n + "/triad,off" \n + "/plopts,wp,1 ! display working plane" \n + "/plopts,wp,off ! switch off wp" \n + "/plopts,frame,off ! switch off graphics frame" \n + "!! title below plot" \n + "/title" \n + "/sys,rm file*.eps" \n + "/show,pscr,,,8! 8 colour planes" \n + "eplot" \n + "/show,close" \n + "/sys,epstopdf file000.eps" \n + "/sys,display file000.pdf" \n + "*dim,Dir,string,248 ! string array with maximum of 248 characters!" \n + "Dir(1) = '/very/very/very/long/path/to/heaven/'" \n + "*stat,Dir" \n + "/com, %Dir(1)%bla.mac ! bug (V15) in /com: substitution not \ + directly behind comma" \n + "/syp,ls, Dir(1)" \n + "File = 'eptoeqv_at_shaft_press-fit'" \n + "/syp,mv file000.png, '%Dir(1)%%File%.png'" \n + \n + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" \n + "!! --- 2.) screen capture" \n + "!! /image does not work in batch mode" \n + "File = 'blabla'" \n + "/image,save,%File%,xwd ! write in xwd bitmap format" \n + "/syp,mogrify -format png, '%File%.xwd'" \n + \n + "/sys,rm file*.jpg file*.eps file*.tiff" \n + "/ui,copy,save,jpeg,graph,color,norm,portrait,yes,100 ! 100 max qality " \n + "/sys,display *.jpg" \n + "!! eps not supported by org, emacs' docview" \n + "/ui,copy,save,pscr,graph,color,norm,portrait,yes,100 ! 100 max qality" \n + "/sys,convert file000.eps file000.png" \n + "/ui,copy,save,tiff,graph,color,norm,portrait,yes,100 ! 100 max qality" \n + "/sys,ls *.eps" \n + "/sys,display *.eps" \n + \n) + +(define-skeleton apdl-skeleton-select + "The selections skeleton. +Select or deselect various elements: Geometry, elements, nodes, + ..." nil + "!! .............................." \n + "!@@@ ... Select stuff ..." \n + "!! .............................." \n + \n + "allsel !(re)select everything"\n + "!!allsel,below,area !select everything below areas"\n + "asel,,item,comp,vmin,vmax,vinc,kswp ![s] select new set" \n + "asel,r, !reselect new set" \n + "asel,a, !additionally select new set" \n + "asel,u, !unselect new set" \n + "asel,all, !select all entities" \n + "asel,inve, !invert current set" \n + "!! --- nodes --- " \n + "nsll,s,1 !select nodes associated with lines, 1: all, 0: no corner nodes" + "nsle,s,all ! s,[all]|corner|mid| select all nodes belonging to selected elements" \n + "nslk,s ! s|r|u|a select all nodes belonging to selected keypoints" \n + "!! --- elements --- " \n + "!!esel,s,adj|elem|cent|type|ename|mat|real|esys|part(ls-dyna)| \ +live|layer|sec|stra|sfe|bfe|path|etab"\n + "esel,a,ename,172 !select additionally conta172 elements" \n + \n + "!! lowest face No of element E from selected nodes" \n + "!! a=nmface(E) !plane elements:faces =^= el. sides" \n + "!! node in POS of element E" \n + "bla=nelem(E,POS) !pos. ijklmnop =^= [1:8]" \n + "!! unsel midnodes of 8-node 2d elem" \n + "*get,En,elem,,count !No of elements" \n + "*get,E,elem,,num,min !min node No" \n + "*do,I,1,En,1" \n + "Face = nmface(E)" > \n + "Ntmp = ndface(E,Face,3)"> \n + "nsel,u,,,Ntmp"> \n + "*get,E,elem,E,nxth" \n + "*enddo"> \n + \n) + +(define-skeleton apdl-skeleton-path-plot + "Path plot skeleton." + nil + "!! ------------------------------" \n + "!@@ --- Path plot ----" \n + "!! ------------------------------" \n + \n + "!! avoid element borders for inaccuracies of the rounding algorithm." \n + \n + "path,Name,nPts[2],nSets[30],nDiv[20] ! define active path \"Name\"" \n + "!! ppath,P,N,x,y,z,CS !coord. in global cartesian csys, but use \ + CS for path interpolation" \n + "ppath,1,N ! define path point by node No N" \n + "ppath,2,,X,Y,Z ! path point by coordinates" \n + "pdef,By,b,y" \n + "pcalc,add,Res,By,Bx,2 ! add Bx to 2*By" \n + "pcalc,intg,Res,By,S ! integrate By with respect to the path length" \n + "pcalc,intg,L,1,S ! path length?" \n + "/axlab,x,distance ! axis label" \n + "psel,s,axis,... ! select multiple paths" \n + "plpath,By ! plot in graph" \n + "plpagm,By,5 ! plot on geom." \n + "!! write into table variable content: x,y,z,path length?,v1,v2,..." \n + "paget,Path,table" \n + "!! path $ stat" \n + \n) + +(define-skeleton apdl-skeleton-post26 + "Time postprocessing /post26 skeleton." + nil + "!! ==============================" \n + "!@ === (Time)-history postprocessing =====" \n + "!! ==============================" \n + \n + "/post26" \n + "numvar,200 !200 maximum variables, default 10" \n + "nv = 1 is always time!" \n + "esol,2,1,,u,z,'displ z'" \n + "nsol,2,1,u,z" \n + "deriv,3,2,1,,vz !time derivative of uz" \n + "extrem,2 !list (only real parts!) extrema" \n + "*get,Max,vari,2,extrem,vmax! get max extreme value" \n + "*get,Min,vari,2,extrem,vmin! get min extreme value" \n + "*get,Maxr,vari,4,rtime,2230 !real part at freq or time 2230" \n + "*get,Maxi,vari,4,itime,2230 !imag part at freq 2230" \n + "rforce,3,1,f,z ! reaction force" \n + "filldata,7,1,10,,20 !fill a variable by a ramp or constant" \n + "add,4,2,3,,Name,,,-1 !sum variables with Naming" \n + "prod,3,2,3,,Name,,,-N*2 !product of variables" \n + "quot,3,2,,,,,,-N*2 !Divides variables" \n + "!! Operations: abs,add,atan,clog,conjug,deriv,exp,filldata,imagin,large," \n + "!! prod,quot,realvar,small,sqrt" \n + "/grid,1" \n + "/gmarker,1,1 !curve marking: 1: triangles,2: squares" \n + "xvar,2 !specify the variable for the x-axis" \n + "/xrange,0,1" \n + "/xrange,default" \n + "/yrange,0,1" \n + "/axlab,x,x-axis" \n + "/axlab,y,y-axis" \n + "/gthk,curve,3!set line thickness" \n + "!!store, new! store post26 data" \n + "!!timerange,1,2 ! timerange to store" \n + "!! title below plot" \n + "/title,blabla" \n + "/stitle,,blabla !subtitle line 1 (not shown in plot)" \n + "/stitle,2,blabla !subtitle line 2" \n + "/tlabel,x,y,bla !annotation at (x,y)" \n + "!! .............................." \n + "!@@@ ... Graphical output ..." \n + "!! .............................." \n + "/color,wbak,whit !white background" \n + "!! invert background colour" \n + "/color,wbak,whit !white background" \n + "/RGB,index,100,100,100,0" \n + "/RGB,index,0,0,0,15" \n + "/show,png !creates jobnameXXX.png files" \n + "plvar,3" \n + "/show,close" \n + "!! .............................." \n + "!@@@ ... Listing of vars ..." \n + "!! .............................." \n + "nprint,5 !which time points are to be listed" \n + "prtime,min,max !time range to be listed" \n + "prvar,3" \n + "!! .............................." \n + "!@@@ ... Data output ..." \n + "!! .............................." \n + "*get,Size,VARI,,NSETS !No of sets" \n + "*dim,Accx,array,Size" \n + "*dim,Tim,array,Size" \n + "*dim,Accy,array,Size" \n + "vget,Accx(1),5 ! post26 variable 5 into array" \n + "vget,Accy(1),7" \n + "vget,Tim(1),1" \n + "!! - export arrays -" \n + "*create,tmp,mac" \n + "*cfopen,sim,txt" \n + "Strg='T AX AY'" \n + "*vwrite,Strg" \n + "%S" \n + "*vwrite,Tim(1), Accx(1), Accy(1)" \n + "%G %G %G" \n + "*cfclos"> \n + "*end" > \n + "*list,tmp,mac" \n + "/input,tmp,mac" \n + "*list,sim,txt" \n + \n) + +(define-skeleton apdl-skeleton-array + "Fields and arrays skeleton." + nil + "!! ------------------------------" \n + "!@@ --- \"table\" arrays ----" \n + "!! ------------------------------" \n + \n + "!! table arrays interpolate linearly between their values" \n + "!! and might be accessed with real indices" \n + "!! the last value remains constant" \n + "NSS=100" \n + "*dim,F_y,table,NSS,3! three columns" \n + "F_y(0,1) = 1,2,3 ! column 'index'" \n + "*do,I,1,NSS" \n + "set,1,I"> \n + "fsum !sum nodal forces of selected elements"> \n + "*get,Tim,active,,set,time"> \n + "Strain = Tim*100*Displ/Leng"> \n + "F_y(I,0) = Strain ! row 'index'"> \n + "*get,Forc,fsum,,item,fy"> \n + "F_y(I,1) = Forc/(Width*Thick)"> \n + "*enddo"> \n + "!! e. g.: as harmonic acceleration load (with amplitude steps)" \n + "!! primary value: frequency" \n + "*taxis ! specify index values, only 10" \n + "*taxis,Test(1,0),.1,.2,.3,.4,.5,.6,.7,.8,.9,.10" \n + "Test(1,0) = .1,.2,.3,.4,.5,.6,.7,.8,.9,.10" \n + "*toper,R3,R1,add,R2,2 !add tables with mult. factors" \n + "*dim,mytab,table,5,1,,freq" \n + "mytab(1,0)= 50, 199, 200, 999,1000" \n + "mytab(1,1)=100e3,100e3,30e3,30e3,10e3" \n + "acel,,,%mytab% !acceleration in global coordinates" \n + "!! apply factor to table/array" \n + "Fact = 1e-3" \n + "*vfact = Fact" \n + "*vstat ! list current values" \n + "*vfun,mytab,copy,mytab" \n + \n + "!! ------------------------------" \n + "!@@ --- Arrays ----" \n + "!! ------------------------------" \n + \n + \n + "!! .............................." \n + "!@@@ ... String arrays ..." \n + "!! .............................." \n + \n + "*dim,Dir,string,248 ! maximum of 248 characters!" \n + "Dir(1) = '/HOME/uidg1626/development/report/ej/95ks91leg0/'" \n + "*stat,Dir" \n + "/com, %Dir(1)%bla.mac! bug (V15) in /com: substitution not \ + directly behind comma" \n + "/syp,ls, Dir(1)" \n + "File = 'eptoeqv_at_shaft_press-fit'" \n + "/syp,mv file000.png, '%Dir(1)%%File%.png'" \n + \n + "!! .............................." \n + "!@@@ ... Fortran arrays ..." \n + "!! .............................." \n + \n + "*dim,A,,10,1 ! type array is default, No of rows, No of columns" \n + "*del,B,,nopr !undocumented feature: deleting without warning" \n + "*dim,B,table,10,1,1,TIME !table type interpolating" \n + "B(1,0,1) = 0." \n + "B(2,0,1) = 1." \n + "*get,A,x,,item,fx" \n + \n + "*get,Nn,node,,count" \n + "*vget,PAR,node,,nlist! array of nodenumbers" \n + "A = 1,2,3,4,5" \n + "*voper,R3,R1,prod,R2,50! operate on arrys" \n + \n + "!! -- check dimensions --" \n + "*get,Dim,parm,A,dim,x" \n + "*if,Dim,le,1,then" \n + "!! or just deleting with warning: A =" > \n + "!! deleting before (re)dimensioning without warning: *del,A,,nopr" > \n + "*dim,A,array,10,1" > \n + "*endif" > \n + "*do,I,1,Ns" \n + "set,Ls,I" > \n + "fsum ! sum nodal forces of selected elements" \n + "Reaction(I)=Fx" \n + "*enddo" > \n + "!! -- plotting --" \n + "!! arrays are plotted as histograms,tables are plotted as curves" + "/gcol,1,'curve1'" \n + "/gropt,fill,1 !fill lines" + "/axlab,x,'x-variable in mm'" \n + "/xrange,0,10 !xrange of plot" \n + "*vplot,time(1,1),A(1,2)!plot column 2 of A " \n + "/gmarker,1,3,10" \n + "/gcolumn,1,'Neo-Hook'" \n + "/gcolumn,2,'Mooney-R'" \n + "/gcolumn,3,'Ogden'" \n + "/gthk,curve,4 !curve thickness" \n + "*vplot,F_y(1,0),F_y(1,1),2.0" + \n) + +(define-skeleton apdl-skeleton-structural-template + "Minimal running structural APDL template." + nil ; no interactor needed + '(apdl-skeleton-header) + "!! ==============================" \n + "!@ === Preprocessing =====" \n + "!! ==============================" \n + "/prep7" \n + "!! ------------------------------" \n + "!@@ --- Elements ----" \n + "!! ------------------------------" \n + "Steel = 1" \n + "ID = Steel" \n + "real = Steel" \n + "et,ID,solid186 !3d, 20 node" \n + "!! ------------------------------" \n + "!@@ --- Material ----" \n + "!! ------------------------------" \n + "mp,nuxy,Steel,0.3 ! Poisson No" \n + "mp,ex,Steel,200000 ! Elastic modulus" \n + "!! ------------------------------" \n + "!@@ --- Modeling ----" \n + "!! ------------------------------" \n + "block,0,1,0,1,0,1" \n + "!! ------------------------------" \n + "!@@ --- Meshing ----" \n + "!! ------------------------------" \n + "vmesh,all" \n + "!! ------------------------------" \n + "!@@ --- BCs, Loads ----" \n + "!! ------------------------------" \n + "nsel,s,loc,x,0" \n + "d,all,all" \n + "nsel,s,loc,x,1" \n + "d,all,uy,-.1" \n + "allsel" \n + "save" \n + "!! ==============================" \n + "!@ === Solving =====" \n + "!! ==============================" \n + "/solu" \n + "solve" \n + "!! ==============================" \n + "!@ === Postprocessing =====" \n + "!! ==============================" \n + "/post1" \n + "/view,,1,1,1" \n + "plnsol,u,sum,2" \n + "nsel,s,loc,x,0" \n + "fsum ! sum nodal forces/moments of selected elements" \n + \n) + +(define-skeleton apdl-skeleton-contact-template + "Minimum working structural contact APDL template." + nil ; no interactor needed + '(apdl-skeleton-header) + "!! ==============================" \n + "!@ === Preprocessing =====" \n + "!! ==============================" \n + "/prep7" \n + "!! ------------------------------" \n + "!@@ --- Elements ----" \n + "!! ------------------------------" \n + "Steel = 1" \n + "ID = Steel" \n + "real = Steel" \n + "et,ID,solid186 ! 3d, 20 nodes" \n + "tid = 4" \n + "cid = 3" \n + "r,cid" \n + "et,tid,170" \n + "et,cid,174" \n + "!! ------------------------------" \n + "!@@ --- Material ----" \n + "!! ------------------------------" \n + "mp,nuxy,Steel,0.3 ! Poisson No" \n + "mp,ex,Steel,200000 ! Elastic modulus" \n + "!! ------------------------------" \n + "!@@ -- Modeling --" \n + "!! ------------------------------" \n + "block,0,1,0,1,0,1" \n + "block,1,2,0,1,0,1" \n + "!! ------------------------------" \n + "!@@ --- Meshing ----" \n + "!! ------------------------------" \n + "vmesh,all" \n + "vsel,s,,,1" \n + "eslv,s" \n + "nsle,s" \n + "nsel,r,loc,x,1" \n + "type,cid" \n + "real,cid" \n + "esurf" \n + "" \n + "type,tid" \n + "real,cid" \n + "vsel,s,,,2" \n + "eslv,s" \n + "nsle,s" \n + "nsel,r,loc,x,1" \n + "esurf" \n + "keyo,cid,12,5 ! bonded always" \n + "keyo,cid,2,1 ! penalty function only" \n + "keyo,cid,9,1 ! ignore initial gaps/penetration" \n + "keyo,cid,7,0 ! No Prediction" \n + "rmod,cid,3,10. ! FKN" \n + "rmod,cid,5,0. ! ICONT" \n + "rmod,cid,6,0. ! PINB" \n + "rmod,cid,10,0. ! CNOF" \n + "rmod,cid,12,0. ! FKT" \n + "!! ------------------------------" \n + "!@@ --- Loads ----" \n + "!! ------------------------------" \n + "nsel,s,loc,x,0" \n + "d,all,all" \n + "nsel,s,loc,y,1" \n + "esln,s" \n + "sf,all,pres,1e3" \n + "allsel" \n + "save" \n + "!! ==============================" \n + "!@ === Solving =====" \n + "!! ==============================" \n + "/solu" \n + "nsubst,10" \n + "solve" \n + "!! ==============================" \n + "!@ === Postprocessing =====" \n + "!! ==============================" \n + "/post1" \n + "plnsol,u,sum" \n + \n) + +(defun apdl-skeleton-compilation-template () + "Your collection of selected code templates." + (interactive) + (apdl-skeleton-header) + (goto-char (point-max)) + (apdl-skeleton-configuration) + (goto-char (point-max)) + (apdl-skeleton-import-export) + (goto-char (point-max)) + (apdl-skeleton-geometry) + (goto-char (point-max)) + (apdl-skeleton-material-definition) + (goto-char (point-max)) + (apdl-skeleton-element-definition) + (goto-char (point-max)) + (apdl-skeleton-meshing) + (goto-char (point-max)) + (apdl-skeleton-bc) + (goto-char (point-max)) + (apdl-skeleton-solve) + (goto-char (point-max)) + (apdl-skeleton-post1)) + +(define-skeleton apdl-skeleton-outline-template + "Insert outline framework into an Ansys APDL file." + "Insert brief purpose of file: " + "!! ==============================" \n + "!" apdl-outline-string " === Header =====" \n + "!! ==============================" \n + \n + "!! FILENAME: " (buffer-file-name) \n + "!! CREATION DATE: " (current-time-string) \n + "!! Ansys VERSION: " apdl-current-ansys-version \n + "!! DESCRIPTION: " str \n + \n + "!! ==============================" \n + "!" apdl-outline-string " === Setup =====" \n + "!! ==============================" \n + \n + "finish " \n + "!/clear" \n + "!y" \n + "*afun,rad ![rad],deg" \n + "Pi = acos(-1)" \n + "*afun,deg !Use degrees [rad] for input and output angular functions" \n + "/title," - \n + \n + "!! ==============================" \n + "!" apdl-outline-string " === Preprocessing ===== " \n + "!! ==============================" \n + \n + "!! ------------------------------" \n + "!" apdl-outline-string apdl-outline-string " --- Cad Import ---- " \n + "!! ------------------------------" \n + \n + "/aux15 !Enter the IGES file transfer processor" \n + "!ioptn, Lab, VAL1 !Control options relating to importing" \n + "!igesin, Fname, Ext," \n + "!/facet,fine" \n + "/title," \n + "!!otherwise the title is defined with the iges import" \n + \n + ;; "!! ----------------------------------------" \n + ;; "!" apdl-outline-string apdl-outline-string + ;; " ---- General Preprocessing ---- " \n + ;; "!! ----------------------------------------" \n + ;; \n + "/prep7" \n + \n + "!! ------------------------------" \n + "!" apdl-outline-string + apdl-outline-string " --- Materials and element types ----" \n + "!! ------------------------------" \n + \n + "!! .............................." \n + "!" apdl-outline-string apdl-outline-string + apdl-outline-string " ... Materials ..." \n + "!! .............................." \n + \n + "!! .............................." \n + "!" apdl-outline-string apdl-outline-string + apdl-outline-string " ... Solid elements ..." \n + "!! .............................." \n + \n + "!! .............................." \n + "!" apdl-outline-string apdl-outline-string + apdl-outline-string " ... Contact elements ..." \n + "!! .............................." \n + \n + "!! .............................." \n + "!" apdl-outline-string apdl-outline-string + apdl-outline-string " ... Geometry ..." \n + "!! .............................." \n + \n + "!! .............................." \n + "!" apdl-outline-string apdl-outline-string + apdl-outline-string " ... Meshing ..." \n + "!! .............................." \n + \n + "!! .............................." \n + "!" apdl-outline-string apdl-outline-string + apdl-outline-string " ... Boundary conditions ..." \n + "!! .............................." \n + \n + "!! ==============================" \n + "!" apdl-outline-string " === Solution ===== " \n + "!! ==============================" \n + \n + "/solu" \n + "allsel" \n + \n + "!! ------------------------------" \n + "!" apdl-outline-string apdl-outline-string + " --- Solution controls ---- " \n + "!! ------------------------------" \n + \n + "!!/eof --- for batch runs only------------" \n + \n + "!! ==============================" \n + "!" apdl-outline-string " === Postprocessing =====" \n + "!! ==============================" \n + \n + "!! ------------------------------" \n + "!" apdl-outline-string apdl-outline-string + " --- General Postprocessing ---- " \n + "!! ------------------------------" \n + \n + "/post1" \n + \n + "!! ------------------------------" \n + "!" apdl-outline-string + apdl-outline-string " --- Time-History Postprocessing ----" \n + "!! ------------------------------" \n + \n + "/post26" \n + \n + "!! --------------------- eof ------------------------------" \n) + +(define-skeleton apdl-if + "Insert interactively an *if .. *endif construct." + "Value/Parameter 1 [I]: " + "*if," str | "I" "," + (completing-read "Operand [eq] (use TAB to complete): " + '("eq" "ne" "lt" "gt" "le" "ge" "ablt" "abgt") + nil ; predicate + t ; require-match + nil ; inital input + nil ; history + ;; default + "eq") + "," + (skeleton-read "Value/Parameter 2 [J]: ") | "J" + "," + (completing-read "Action [then] (use TAB to complete): " + '(":label" "stop" "exit" "cycle" "then") + nil + t + nil + nil + "then") > \n + - \n + "*endif" > \n + \n) + +(define-skeleton apdl-if-then + "Insert an *if,then .. (*elseif .. *else ..) *endif construct." + "Value/Parameter 1 [I]: " + "*if," str | "I" "," + (completing-read "Operand [eq] (use TAB to complete): " + '("eq" "ne" "lt" "gt" "le" "ge" "ablt" "abgt") + nil ; predicate + t ; require-match + nil ; inital input + nil ; history + ;; default + "eq") + "," + (skeleton-read "Value/Parameter 2 [J]: ") | "J" + "," + (completing-read "Action [then] (use TAB to complete): " + '(":label" "stop" "exit" "cycle" "then") + nil + t + nil + nil + "then") > _ \n + ;; * elsif subskeleton + ("*elseif construct(s)? Value/Paramter 1: (%s) " + > "*elseif," str "," + (completing-read + "Operand [eq] (ne, lt, gt, le, ge, ablt, abgt, use TAB to complete): " + '("eq" "ne" "lt" "gt" "le" "ge" "ablt" "abgt") + nil ; predicate + t ; require-match + nil ; inital input + nil ; history + ;; default + "eq") + "," + (read-string "Next Value/Parameter 2: ") + ",then" _ > + \n) ; -- e o subskeleton + ;; else subskeleton + '(if (y-or-n-p "*else construct? ") + (insert "*else")) > + "\n*endif" > + "\n") + +(define-skeleton apdl-do + "Insert interactively a *do .. *enddo loop." + "Loop parameter [I]: " + "*do," str | "I" "," + (read-string "Start Value/Parameter [1]: ") | "1" + "," + (read-string "Finish Value/Parameter: ") + "," + (read-string "Increment Value/Parameter [1]: ") | "1" \n + > _ \n + "*enddo" > \n) + +(define-skeleton apdl-mp ; FIXME: skeleton a bit over the top + "Insert interactively an mp statement." + "Material Property: (EX,ALPX,PRXY,NUXY,GXY,DAMP,MU,DENS,KXX) " + "MP," str "," + (read-string "Material Number: ") + "," + (read-string "Constant Value: ") + "," + (read-string "Linear Coefficient? : ") + "," + (read-string "Quadratic Coefficient? : ") + "," + (read-string "Cubic Coefficient? : ") + "," + (read-string "Quartic Coefficient? : ") \n + \n) + +(provide 'apdl-template) + +;;; apdl-template.el ends here + +;; Local Variables: +;; mode: outline-minor +;; indicate-empty-lines: t +;; word-wrap: t +;; End: diff --git a/lisp/apdl-mode/apdl-wb-template.el b/lisp/apdl-mode/apdl-wb-template.el new file mode 100644 index 00000000..cc108832 --- /dev/null +++ b/lisp/apdl-mode/apdl-wb-template.el @@ -0,0 +1,226 @@ +;;; apdl-wb-template.el --- APDL WorkBench/AIM templates for the APDL-Mode -*- lexical-binding: t -*- +;; Time-stamp: <2021-10-01> + +;; Copyright (C) 2020 - 2021 H. Dieter Wilhelm GPL V3 + +;; Author: H. Dieter Wilhelm +;; Maintainer: H. Dieter Wilhelm +;; Package-Requires: ((emacs "25.1")) +;; Keywords: languages, convenience, Ansys, tools, APDL +;; URL: https://github.com/dieter-wilhelm/apdl-mode + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; This code is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; This lisp script is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +;; +;; Permission is granted to distribute copies of this lisp script +;; provided the copyright notice and this permission are preserved in +;; all copies. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, you can either send email to this +;; program's maintainer or write to: The Free Software Foundation, +;; Inc.; 675 Massachusetts Avenue; Cambridge, MA 02139, USA. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;;; Commentary: + +;; Collection of templates for WorkBench and AIM Command (APDL) +;; objects + +;; Convention used for outlining +;; !@ is surrounded by 30 equal signs ============================== +;; !@@ by 30 dashes ------------------------------ +;; !@@@ by 30 dots .............................. +;; and empty lines + +;;; Code: + +(defvar apdl-last-skeleton) +(defvar apdl-skeleton-overlay) +(defvar apdl-mode-install-directory) + +(defconst apdl-wb-default-template-directory + (concat apdl-mode-install-directory "template/") + "Directory where the APDL-Mode Workbench template macro files reside.") + +(defgroup APDL-template nil + "Customisation 'template' subgroup" + :group 'APDL) + +(defcustom apdl-wb-custom-template-directory + apdl-mode-install-directory + "Directory where your Worbench / Discovery Aim templates are residing. +You should customise this variable to your needs and apply it for +your own templates." + :type '(directory) + :group 'APDL-template) + +(declare-function apdl-mode "apdl-mode") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; --- functions --- +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun apdl-display-wb-skeleton (&optional arg) + "Display or insert WorkBench Command (APDL) templates. +With an argument ARG not equal to 1 insert the template into the +current buffer instead of previewing it in a separate window. +You might trigger a completion of templates with the or +key and choose with the mouse 2 button." + (interactive "p") + (let* ( + (old-buffer (buffer-name)) + (new-buffer-name "*APDL-skeleton*") + (skeleton-buffer + (get-buffer-create new-buffer-name)) + s ; yellow indicator line in the preview buffer above content + ;; if skeleton window is visible in selected frame + (visible (get-buffer-window new-buffer-name nil)) + (skel-string + ;; we might want to insert it while previewing... + (if (and (not (= arg 1)) apdl-last-skeleton visible) + apdl-last-skeleton + "apdl-wbt-")) + (skel + (if (= arg 1) + (completing-read "Preview template [TAB to complete]: " + obarray 'commandp t skel-string nil) + (completing-read "Insert template [TAB to complete]: " + obarray 'commandp t skel-string nil)))) + (setq apdl-last-skeleton skel) + (cond ((= arg 1) + (switch-to-buffer-other-window skeleton-buffer) + (setq buffer-read-only nil) + (remove-overlays) ; from beginnin and end of buffer + (setq apdl-skeleton-overlay (make-overlay 1 1)) + (kill-region (point-min) (point-max)) + (funcall (intern-soft skel)) + ;; (apdl-skeleton-numbering-controls) + ;; (insert "bla\n") + (goto-char (point-min)) + (unless (eq major-mode 'apdl-mode) + (apdl-mode)) + (setq s (propertize + (concat "-*- APDL template: " + skel " -*-\n") 'face 'match)) + (overlay-put apdl-skeleton-overlay 'before-string s) + (set-buffer-modified-p nil) + (setq buffer-read-only t) + (switch-to-buffer-other-window old-buffer)) + (t + (funcall (intern-soft skel)))))) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; wbt workbench templates: +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; test interregion templates! + +;; ;; skeleton-insert +;; ;; docu string +;; ;; interactor string or nil +;; ;; strings "here comes\n" str | "default" " again." + +;; ;; default values +;; (define-skeleton apdl-wbt-test +;; "Write greetings" +;; "Type name of idiot: " +;; "hello, " str | "Otto von Bernstein" "!\n" +;; "Here it goes.\n") + +;; ;; skeleton in skeleton +;; ;; _ interesting / cursor region +;; (define-skeleton apdl-wbt-test2 +;; "Write greetings" +;; "Type name of idiot: " +;; ("Put a name in: " "hello, " str "!\n") +;; "Here "_ "it goes.\n") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; "./" seems to be extracted to the Emacs folder ~/.emacs.d/ !!! + +;; There are the following Command types in WorkBench: +;; 1. Prep (/prep7) items, without geometry objects available, only selections +;; 2. Solu (/solu) items, before solve +;; 3. Post (/post) items, after solve + +(define-skeleton apdl-wbt-harmonic-acceleration-result + "/post26 harmonic acceleration results. +Visualisation and file output of frequency and vector sum +aplitude." + nil + "/com,==============================================================\n" + "/com, Inserted: "(current-time-string)", APDL-Mode: "apdl-mode-version"\n" + "/com,==============================================================\n" + (insert-file + (concat apdl-wb-default-template-directory + "harmonic_acceleration_results.mac"))) + +(define-skeleton apdl-wbt-post26-output + "/post26 workbench output template." + nil + "/com,==============================================================\n" + "/com, Inserted: "(current-time-string)", APDL-Mode: "apdl-mode-version"\n" + "/com,==============================================================\n" + (insert-file + (concat apdl-wb-default-template-directory + "post26_output.mac"))) + +(define-skeleton apdl-wbt-post-2d-press-fit_calcs + "Calculate the transmissible torque from contact results. +And other parameters from a plane stress press-fit simulation." + nil + "/com,==============================================================\n" + "/com, Inserted: "(current-time-string)", APDL-Mode: "apdl-mode-version"\n" + "/com,==============================================================\n" + (insert-file + (concat apdl-wb-default-template-directory + "plane_stress_press-fit_torque_calculations.mac"))) + +(define-skeleton apdl-wbt-post-3d-press-fit_calcs + "Calculate the transmissible torque from contact results. +And other parameters from a 3d stress press-fit simulation." + nil + "/com,==============================================================\n" + "/com, Inserted: "(current-time-string)", APDL-Mode: "apdl-mode-version"\n" + "/com,==============================================================\n" + (insert-file + (concat apdl-wb-default-template-directory + "3d_stress-press-fit_torque_calculations.mac"))) + +(define-skeleton apdl-wbt-do + "Insert a *do .. *enddo loop." + nil + "*do,I,1,10,1" > \n + - \n + "!! *cycle ! bypass below commands in *do loop" > \n + "*enddo" > \n) + +(define-skeleton apdl-wbt-if + "Insert an *if .. *endif construct." + nil + "*if,I,eq,J,then" > \n + - \n + "!! *elseif,K,gt,L" > \n + "!! *else" > \n + "*endif" >) + +(provide 'apdl-wb-template) + +;;; apdl-wb-template.el ends here + +;; Local Variables: +;; mode: outline-minor +;; indicate-empty-lines: t +;; show-trailing-whitespace: t +;; word-wrap: t +;; time-stamp-active: t +;; time-stamp-format: "%:y-%02m-%02d" +;; End: diff --git a/lisp/apdl-mode/dir b/lisp/apdl-mode/dir new file mode 100644 index 00000000..154a58b6 --- /dev/null +++ b/lisp/apdl-mode/dir @@ -0,0 +1,19 @@ +This is the file .../info/dir, which contains the +topmost node of the Info hierarchy, called (dir)Top. +The first time you invoke Info you start off looking at this node. + +File: dir, Node: Top This is the top of the INFO tree + + This (the Directory node) gives a menu of major topics. + Typing "q" exits, "?" lists all Info commands, "d" returns here, + "h" gives a primer for first-timers, + "mEmacs" visits the Emacs manual, etc. + + In Emacs, you can click mouse button 2 on a menu item or cross reference + to select it. + +* Menu: + +Development +* APDL Mode: (apdl-mode). The major mode for the scripting language APDL + diff --git a/lisp/apdl-mode/matlib/42CrMo4_biso_Rp850.MPA_MPL b/lisp/apdl-mode/matlib/42CrMo4_biso_Rp850.MPA_MPL new file mode 100644 index 00000000..518cf559 --- /dev/null +++ b/lisp/apdl-mode/matlib/42CrMo4_biso_Rp850.MPA_MPL @@ -0,0 +1,24 @@ +/COM,ANSYS RELEASE 15.0 UP20131014 10:18:20 07/10/2014 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 5, 1, -100.000000 , 0.00000000 , 20.0000000 +MPTEMP,R5.0, 5, 4, 100.000000 , 200.000000 , +MPDATA,R5.0, 5,EX ,_MATL , 1, 21700.0000 , 21300.0000 , 21200.0000 +MPDATA,R5.0, 5,EX ,_MATL , 4, 20700.0000 , 19900.0000 , +MPTEMP,R5.0, 5, 1, -100.000000 , 0.00000000 , 20.0000000 +MPTEMP,R5.0, 5, 4, 100.000000 , 200.000000 , +MPDATA,R5.0, 5,NUXY,_MATL , 1, 0.300000000 , 0.300000000 , 0.300000000 +MPDATA,R5.0, 5,NUXY,_MATL , 4, 0.300000000 , 0.300000000 , +MPTEMP,R5.0, 5, 1, -100.000000 , 0.00000000 , 20.0000000 +MPTEMP,R5.0, 5, 4, 100.000000 , 200.000000 , +MPDATA,R5.0, 5,ALPX,_MATL , 1, 1.050000000E-05, 1.140000000E-05, 1.150000000E-05 +MPDATA,R5.0, 5,ALPX,_MATL , 4, 1.210000000E-05, 1.270000000E-05, +MPTEMP,R5.0, 5, 1, -100.000000 , 0.00000000 , 20.0000000 +MPTEMP,R5.0, 5, 4, 100.000000 , 200.000000 , +MPDATA,R5.0, 5,DENS,_MATL , 1, 7.850000000E-09, 7.850000000E-09, 7.850000000E-09 +MPDATA,R5.0, 5,DENS,_MATL , 4, 7.850000000E-09, 7.850000000E-09, +/GO +/NOP +/GO diff --git a/lisp/apdl-mode/matlib/AlSi9Cu3_biso.MPA_MPL b/lisp/apdl-mode/matlib/AlSi9Cu3_biso.MPA_MPL new file mode 100644 index 00000000..636d25d2 --- /dev/null +++ b/lisp/apdl-mode/matlib/AlSi9Cu3_biso.MPA_MPL @@ -0,0 +1,19 @@ +/com,AlSi9Cu3(Fe) DIN EN 1706: 1998-06 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 75000.0000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 21.00000000E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 2750.000000E-06, +TB,BISO,_MATL , 1 +TBTEM, 0.00000000 , 1 +TBDAT, 1, 160.000000 , 5615.02961 , +/GO +mplist +tblist diff --git a/lisp/apdl-mode/matlib/Al_a2024-T3.SI_MPL b/lisp/apdl-mode/matlib/Al_a2024-T3.SI_MPL new file mode 100644 index 00000000..c4c4c9df --- /dev/null +++ b/lisp/apdl-mode/matlib/Al_a2024-T3.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Al_a2024-T3.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 7.300000000E+10, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.330000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 2.270000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 2770.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 190.000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 963.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/Al_a6061-T6.SI_MPL b/lisp/apdl-mode/matlib/Al_a6061-T6.SI_MPL new file mode 100644 index 00000000..ee992afb --- /dev/null +++ b/lisp/apdl-mode/matlib/Al_a6061-T6.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Al_a6061-T6.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 7.300000000E+10, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.330000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 2.430000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 2700.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 156.000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 963.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/Al_a7079-T6.SI_MPL b/lisp/apdl-mode/matlib/Al_a7079-T6.SI_MPL new file mode 100644 index 00000000..7557fd33 --- /dev/null +++ b/lisp/apdl-mode/matlib/Al_a7079-T6.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Al_a7079-T6.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 7.170000000E+10, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.330000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 2.470000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 2740.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 121.000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 963.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/C75s_hardened_kinh.MPA_MPL b/lisp/apdl-mode/matlib/C75s_hardened_kinh.MPA_MPL new file mode 100644 index 00000000..303211bf --- /dev/null +++ b/lisp/apdl-mode/matlib/C75s_hardened_kinh.MPA_MPL @@ -0,0 +1,28 @@ +/COM,C75s hardened 0.5 mm sheet metal +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 216666.667 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 1.200000000E-05, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,KXX ,_MATL , 1, 60.5000000 , +TB,KINH,_MATL , 1, 8, +TBTEMP,20.000000 +TBPT,, 6.00000e-03, 1.30000e+03, +TBPT,, 7.50000e-03, 1.43000e+03, +TBPT,, 1.00000e-02, 1.50000e+03, +TBPT,, 1.50000e-02, 1.55000e+03, +TBPT,, 2.00000e-02, 1.58000e+03, +TBPT,, 4.00000e-02, 1.64500e+03, +TBPT,, 5.00000e-02, 1.64000e+03, +TBPT,, 5.40000e-02, 1.60000e+03, +/GO +/NOP +/GO diff --git a/lisp/apdl-mode/matlib/Cu_pure.SI_MPL b/lisp/apdl-mode/matlib/Cu_pure.SI_MPL new file mode 100644 index 00000000..a45bcc95 --- /dev/null +++ b/lisp/apdl-mode/matlib/Cu_pure.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Cu_pure.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 1.170000000E+11, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 1.660000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 8900.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 393.000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 385.200000 , +/GO diff --git a/lisp/apdl-mode/matlib/M250-35A_aniso.MPA_MPL b/lisp/apdl-mode/matlib/M250-35A_aniso.MPA_MPL new file mode 100644 index 00000000..8bca51c5 --- /dev/null +++ b/lisp/apdl-mode/matlib/M250-35A_aniso.MPA_MPL @@ -0,0 +1,23 @@ +/COM,ANSYS RELEASE 15.0 UP20131014 13:19:48 07/07/2014 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 185000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EY ,_MATL , 1, 200000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +TB,ANIS,_MATL +TBDAT, 1, 430.000000 , 451.500000 , 0.00000000 +TBDAT, 4, 1086.00000 , 1140.00000 , 0.00000000 +TBDAT, 7, 0.00000000 , 0.00000000 , 0.00000000 +TBDAT, 10, 0.00000000 , 0.00000000 , 0.00000000 +TBDAT, 13, 0.00000000 , 0.00000000 , 0.00000000 +TBDAT, 16, 0.00000000 , 0.00000000 , 0.00000000 +/GO +/NOP +/GO diff --git a/lisp/apdl-mode/matlib/M250-35A_biso.MPA_MPL b/lisp/apdl-mode/matlib/M250-35A_biso.MPA_MPL new file mode 100644 index 00000000..6eb2aaac --- /dev/null +++ b/lisp/apdl-mode/matlib/M250-35A_biso.MPA_MPL @@ -0,0 +1,17 @@ +/COM,M250-35 electrical steel +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 192500.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +TB,BISO,_MATL , 1 +TBTEM, 0.00000000 , 1 +TBDAT, 1, 430.000000 , 1086.27599 , +/GO +mplist +tblist diff --git a/lisp/apdl-mode/matlib/M250-35A_orthotropic_elastic.MPA_MPL b/lisp/apdl-mode/matlib/M250-35A_orthotropic_elastic.MPA_MPL new file mode 100644 index 00000000..62a7d391 --- /dev/null +++ b/lisp/apdl-mode/matlib/M250-35A_orthotropic_elastic.MPA_MPL @@ -0,0 +1,21 @@ +/COM,ANSYS RELEASE 15.0 UP20131014 14:53:04 07/07/2014 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 185000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EY ,_MATL , 1, 200000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,GXY ,_MATL , 1, 74038.0000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +TB,BISO,_MATL , 1 +TBTEM, 0.00000000 , 1 +TBDAT, 1, 430.000000 , 1086.27599 , +/GO +/NOP +/GO diff --git a/lisp/apdl-mode/matlib/M800-65A_biso.MPA_MPL b/lisp/apdl-mode/matlib/M800-65A_biso.MPA_MPL new file mode 100644 index 00000000..f0073544 --- /dev/null +++ b/lisp/apdl-mode/matlib/M800-65A_biso.MPA_MPL @@ -0,0 +1,18 @@ +/COM,M800-65 1.081 electrical steel Thyssen Krupp +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 200000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +TB,BISO,_MATL , 1 +TBTEM, 0.00000000 , 1 +TBDAT, 1, 317.000000 , 884.497284 , +/GO +/NOP +/GO +tblist,all,all \ No newline at end of file diff --git a/lisp/apdl-mode/matlib/Mg_AZ31B-H24.SI_MPL b/lisp/apdl-mode/matlib/Mg_AZ31B-H24.SI_MPL new file mode 100644 index 00000000..46713514 --- /dev/null +++ b/lisp/apdl-mode/matlib/Mg_AZ31B-H24.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Mg_AZ31B-H24.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 4.480000000E+10, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.350000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 2.610000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 1770.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 95.2000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 1047.00000 , +/GO diff --git a/lisp/apdl-mode/matlib/Mg_HK31A-H24.SI_MPL b/lisp/apdl-mode/matlib/Mg_HK31A-H24.SI_MPL new file mode 100644 index 00000000..a6510069 --- /dev/null +++ b/lisp/apdl-mode/matlib/Mg_HK31A-H24.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Mg_HK31A-H24.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 4.410000000E+10, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.350000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 2.520000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 1790.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 114.000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 544.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/NdFeB_magnet.MPA_MPL b/lisp/apdl-mode/matlib/NdFeB_magnet.MPA_MPL new file mode 100644 index 00000000..bd6c6b8f --- /dev/null +++ b/lisp/apdl-mode/matlib/NdFeB_magnet.MPA_MPL @@ -0,0 +1,20 @@ +/COM,ANSYS RELEASE 15.0 UP20131014 14:05:41 07/09/2014 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 150000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1,-2.000000000E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPY,_MATL , 1, 7.000000000E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPZ,_MATL , 1, 7.000000000E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.600000000E-09, +/GO +/NOP +/GO diff --git a/lisp/apdl-mode/matlib/Ni_pure.SI_MPL b/lisp/apdl-mode/matlib/Ni_pure.SI_MPL new file mode 100644 index 00000000..19c1c2ff --- /dev/null +++ b/lisp/apdl-mode/matlib/Ni_pure.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Ni_pure.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 2.210000000E+11, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 1.300000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 8900.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 91.7000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 461.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/PPS.MPA_MPL b/lisp/apdl-mode/matlib/PPS.MPA_MPL new file mode 100644 index 00000000..e629ebd6 --- /dev/null +++ b/lisp/apdl-mode/matlib/PPS.MPA_MPL @@ -0,0 +1,22 @@ +/com, PPS 40% glass fibre here: Celanese Fortron 1140L4 +/com, Young's modulus 80 % reduced to tensile test specimen +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 1.2E4, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.4, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 1.65E-09, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 30E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,C,_MATL , 1, 1500e3, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,KXX,_MATL , 1, 0.2E-3, +/GO +/NOP +/GO +mplist,all \ No newline at end of file diff --git a/lisp/apdl-mode/matlib/PPS_Fortron1140L4_70degC_kinh.MPA_MPL b/lisp/apdl-mode/matlib/PPS_Fortron1140L4_70degC_kinh.MPA_MPL new file mode 100644 index 00000000..49f945bf --- /dev/null +++ b/lisp/apdl-mode/matlib/PPS_Fortron1140L4_70degC_kinh.MPA_MPL @@ -0,0 +1,24 @@ +/COM,/COM,PPS Fortron 1140L4 @ 70 °C, ca. 2014 Campus data from Celanese +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 70.0000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 11570.0000 , +MPTEMP,R5.0, 1, 1, 70.0000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.400000000 , +TB,KINH,_MATL , 1, 10, +TBTEMP,70.000000 +TBPT,, 1.80000e-03, 2.08240e+01, +TBPT,, 3.60000e-03, 4.08560e+01, +TBPT,, 5.40000e-03, 5.88560e+01, +TBPT,, 7.30000e-03, 7.44480e+01, +TBPT,, 9.10000e-03, 8.75680e+01, +TBPT,, 1.09000e-02, 9.84160e+01, +TBPT,, 1.27000e-02, 1.07240e+02, +TBPT,, 1.45000e-02, 1.14304e+02, +TBPT,, 1.63000e-02, 1.19784e+02, +TBPT,, 1.82000e-02, 1.23824e+02, +/GO +/NOP +/GO diff --git a/lisp/apdl-mode/matlib/README.org b/lisp/apdl-mode/matlib/README.org new file mode 100644 index 00000000..ad33bafa --- /dev/null +++ b/lisp/apdl-mode/matlib/README.org @@ -0,0 +1,105 @@ +#+DATE: Time-stamp: <2020-02-28> +#+bind: org-html-preamble-format (("en" "%d")) +#+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:{} arch:headline +#+OPTIONS: author:t c:nil creator:comment d:(not "LOGBOOK") date:t +#+OPTIONS: e:t email:nil f:t inline:t num:t p:nil pri:nil prop:nil +#+OPTIONS: stat:t tags:t tasks:t tex:t timestamp:t toc:t todo:t |:t +#+AUTHOR: H. Dieter Wilhelm +#+EMAIL: dieter@duenenhof-wilhelm.de +#+DESCRIPTION: +#+KEYWORDS: +#+LANGUAGE: en +#+SELECT_TAGS: export +#+EXCLUDE_TAGS: noexport +#+OPTIONS: html-link-use-abs-url:nil html-postamble:t html-preamble:t +#+OPTIONS: html-scripts:t html-style:t html5-fancy:nil tex:t +#+HTML_DOCTYPE: xhtml-strict +#+HTML_CONTAINER: div +#+HTML_LINK_HOME: https://github.com/dieter-wilhelm/apdl-mode +#+HTML_LINK_UP: ../index.html +#+HTML_HEAD: +#+HTML_HEAD_EXTRA: +#+HTML_MATHJAX: +#+INFOJS_OPT: +#+LATEX_HEADER: + +#+STARTUP: showall +#+TITLE: This Apdl-Mode's README.org for the matlib/ directory + Its text is best read in Emacs' Org mode. + + Copyright (C) 2015 - 2020 H. Dieter Wilhelm, GPL V3 + + If not indicated otherwise in the file name, material properties are + linear and for room temperature. + +* Usage in an APDL file + Specify the material library to read from: + #+BEGIN_SRC emacs-lisp + /mplib,read,/HOME/uidg1626/a-m/matlib + /mplib,stat !show the material directories + !! which materials are acutally in the material library? + /sys,ls ~/a-m/matlib + #+END_SRC + + You have to indicate the unit system. + + - SI — International system (m, kg, s, K). + - MKS — MKS system (m, kg, s, °C). + - uMKS — μMKS system (μm, kg, s, °C). + - CGS — CGS system (cm, g, s, °C). + - MPA — MPA system (mm, Mg, s, °C). + - BFT — U. S. Customary system using feet (ft, slug, s, °F). + - BIN — U. S. Customary system using inches (in, lbf*s2/in, s, °F). + + For example: +#+BEGIN_SRC emacs-lisp + /units,mpa !indicate MPA system for subsequent material definitions + mpread,St37,,,lib +#+END_SRC + + The following block is writing a material definition into the + library. +#+BEGIN_SRC emacs-lisp +/mplib,write,/HOME/uidg1626/a-m/matlib +!! --- It is advisable to make the material files which are commented read only! +/units,mpa !default extension for mpread/write is now MPA_MPL +mat,Steel ! set the appropriate material number +mpwrite +mplist ! Check + #+END_SRC + +* Materials defined in Apdl-Mode's library + - 42CrMo4_biso_Rp850.MPA_MPL :: + - AlSi9Cu3_biso.MPA_MPL :: + - C75s_hardened_kinh.MPA_MPL :: + - construction_steel.MPA_MPL :: + - copper.MPA_MPL :: + - M250-35A_aniso.MPA_MPL :: + - M250-35A_biso.MPA_MPL :: + - M250-35A_orthotropic_elastic.MPA_MPL :: + - M800-65A_biso.MPA_MPL :: + - NdFeB_magnet.MPA_MPL :: + - PPS_Fortron1140L4_70degC_kinh.MPA_MPL :: + - PPS.MPA_MPL :: Celanese Fortron 1140L4 40 % glass fibre, Young's + modulus 80 % reduced compared to test specimen to + replicate a random fibre orientation. + - St37_elastic.MPA_MPL :: + - St37.MPA_MPL :: + - St70_biso.MPA_MPL :: + - X46Cr13.MPA_MPL :: + +* Other material data + - creep_curves_PPS_Fortron1140l4_120degC.csv :: A 40 % short glas + fibre filled PPS. The stress - creep strain curves are scaled + with a factor of 0.8 from test specimen to account for a random + fibre orientation in thick walled parts. They might be used as + an example for data fitting with the TBFT command. +----- +* COMMENT Restrictions of the material models +# LOCAL variables: +# word-wrap: t +# show-trailing-whitespace: t +# indicate-empty-lines: t +# time-stamp-active: t +# time-stamp-format: "%:y-%02m-%02d" +# end: diff --git a/lisp/apdl-mode/matlib/St37.MPA_MPL b/lisp/apdl-mode/matlib/St37.MPA_MPL new file mode 100644 index 00000000..0dce0e67 --- /dev/null +++ b/lisp/apdl-mode/matlib/St37.MPA_MPL @@ -0,0 +1,21 @@ +/com,St37 DIN 1629 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 210000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 12E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,C,_MATL , 1, 434E-3, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,KXX,_MATL , 1, 60.5E-3, +/GO +/NOP +/GO +mplist,all \ No newline at end of file diff --git a/lisp/apdl-mode/matlib/St37_elastic.MPA_MPL b/lisp/apdl-mode/matlib/St37_elastic.MPA_MPL new file mode 100644 index 00000000..498a777a --- /dev/null +++ b/lisp/apdl-mode/matlib/St37_elastic.MPA_MPL @@ -0,0 +1,21 @@ +/com,St37 DIN 1629 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 210000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 12E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,C,_MATL , 1, 434E3, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,KXX,_MATL , 1, 60.5E-3, +/GO +/NOP +/GO +mplist,all \ No newline at end of file diff --git a/lisp/apdl-mode/matlib/St70_biso.MPA_MPL b/lisp/apdl-mode/matlib/St70_biso.MPA_MPL new file mode 100644 index 00000000..b10e093f --- /dev/null +++ b/lisp/apdl-mode/matlib/St70_biso.MPA_MPL @@ -0,0 +1,17 @@ +/COM,St 70, according to WIAM: DIN 17100 1980-01 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 192500.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +TB,BISO,_MATL , 1 +TBTEM, 0.00000000 , 1 +TBDAT, 1, 365.000000 , 4091 , +/GO +mplist +tblist diff --git a/lisp/apdl-mode/matlib/Stl_AISI-304.SI_MPL b/lisp/apdl-mode/matlib/Stl_AISI-304.SI_MPL new file mode 100644 index 00000000..544a7ea0 --- /dev/null +++ b/lisp/apdl-mode/matlib/Stl_AISI-304.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Stl_AISI-304.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 1.930000000E+11, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.290000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 1.780000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 8030.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 16.3000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 502.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/Stl_AISI-C1020.SI_MPL b/lisp/apdl-mode/matlib/Stl_AISI-C1020.SI_MPL new file mode 100644 index 00000000..01754ef1 --- /dev/null +++ b/lisp/apdl-mode/matlib/Stl_AISI-C1020.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Stl_AISI-C1020.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 2.070000000E+11, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.290000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 1.510000000E-05, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 7850.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 46.7000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 419.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/Ti_B-120VCA.SI_MPL b/lisp/apdl-mode/matlib/Ti_B-120VCA.SI_MPL new file mode 100644 index 00000000..c6938d81 --- /dev/null +++ b/lisp/apdl-mode/matlib/Ti_B-120VCA.SI_MPL @@ -0,0 +1,21 @@ +! ANSYS $RCSfile: Ti_B-120VCA.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/COM,Typical material properties for DEMO purposes only +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,EX ,_MATL , 1, 1.020000000E+11, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,ALPX,_MATL , 1, 9.360000000E-06, +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,DENS,_MATL , 1, 4850.00000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,KXX ,_MATL , 1, 7.44000000 , +MPTEMP,R5.0, 1, 1, 0.000000000E+00, +MPDATA,R5.0, 1,C ,_MATL , 1, 544.000000 , +/GO diff --git a/lisp/apdl-mode/matlib/X46Cr13.MPA_MPL b/lisp/apdl-mode/matlib/X46Cr13.MPA_MPL new file mode 100644 index 00000000..27f4395d --- /dev/null +++ b/lisp/apdl-mode/matlib/X46Cr13.MPA_MPL @@ -0,0 +1,15 @@ +/com,X46Cr13 DIN EN 10088-1 +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 215000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7850E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 10.5E-06, +/GO +mplist \ No newline at end of file diff --git a/lisp/apdl-mode/matlib/construction_steel.MPA_MPL b/lisp/apdl-mode/matlib/construction_steel.MPA_MPL new file mode 100644 index 00000000..468b2d95 --- /dev/null +++ b/lisp/apdl-mode/matlib/construction_steel.MPA_MPL @@ -0,0 +1,14 @@ +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 200000.000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.300000000 , +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 7.850000000E-09, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 12E-06, +/GO +mplist,all \ No newline at end of file diff --git a/lisp/apdl-mode/matlib/copper.MPA_MPL b/lisp/apdl-mode/matlib/copper.MPA_MPL new file mode 100644 index 00000000..048e908f --- /dev/null +++ b/lisp/apdl-mode/matlib/copper.MPA_MPL @@ -0,0 +1,22 @@ +/com,copper alloy from Ansys WB +/NOP +/COM,Internal UNITS set at file creation time = MPA +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,EX ,_MATL , 1, 1.1E5, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,NUXY,_MATL , 1, 0.34, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,DENS,_MATL , 1, 8.3E-09, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,ALPX,_MATL , 1, 18E-06, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,C,_MATL , 1, 385E3, +MPTEMP,R5.0, 1, 1, 0.00000000 , +MPDATA,R5.0, 1,KXX,_MATL , 1, 401E-3, + +/GO +/NOP +/GO +mplist,all \ No newline at end of file diff --git a/lisp/apdl-mode/matlib/creep_curves_PPS_Fortron1140l4_120degC.csv b/lisp/apdl-mode/matlib/creep_curves_PPS_Fortron1140l4_120degC.csv new file mode 100644 index 00000000..0208599f --- /dev/null +++ b/lisp/apdl-mode/matlib/creep_curves_PPS_Fortron1140l4_120degC.csv @@ -0,0 +1,54 @@ +/temp,120 +/1,time +/2,seqv +/3,creq +1 1.8 1e-04 +1 3.6 3e-04 +1 5.4 4e-04 +1 7.2 6e-04 +1 9 9e-04 +1 10.8 0.0011 +1 12.6 0.0015 +1 14.4 0.0019 +1 16.2 0.0024 +1 18 0.0031 +10 1.8 1e-04 +10 3.6 3e-04 +10 5.4 5e-04 +10 7.2 7e-04 +10 9 9e-04 +10 10.8 0.0013 +10 12.6 0.0017 +10 14.4 0.0023 +10 16.2 0.0031 +10 18 0.0041 +100 1.8 2e-04 +100 3.6 3e-04 +100 5.4 5e-04 +100 7.2 8e-04 +100 9 0.0012 +100 10.8 0.0016 +100 12.6 0.0022 +100 14.4 0.003 +100 16.2 0.0041 +100 18 0.0055 +1000 1.8 3e-04 +1000 3.6 7e-04 +1000 5.4 0.001 +1000 7.2 0.0015 +1000 9 0.002 +1000 10.8 0.0027 +1000 12.6 0.0035 +1000 14.4 0.0045 +1000 16.2 0.0058 +1000 18 0.0075 +10000 1.8 7e-04 +10000 3.6 0.0013 +10000 5.4 0.002 +10000 7.2 0.0028 +10000 9 0.0036 +10000 10.8 0.0045 +10000 12.6 0.0055 +10000 14.4 0.0067 +10000 16.2 0.008 +10000 18 0.0094 diff --git a/lisp/apdl-mode/matlib/emagCopper.SI_MPL b/lisp/apdl-mode/matlib/emagCopper.SI_MPL new file mode 100644 index 00000000..b4aa5ab2 --- /dev/null +++ b/lisp/apdl-mode/matlib/emagCopper.SI_MPL @@ -0,0 +1,23 @@ +! ANSYS $RCSfile: emagCopper.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +/COM,Copper +/COM,********* Typical properties for demo purposes ********* +/com,********* Use with TUNIF or body temperature loads ********* +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +MPTEMP,R5.0, 7, 1, 0.000000000E+00, 20.0000000 , 50.0000000 +MPTEMP,R5.0, 7, 4, 75.0000000 , 150.000000 , 200.000000 +MPTEMP,R5.0, 7, 7, 300.000000 , +MPDATA,R5.0, 7,RSVX,_MATL , 1, 1.588774356E-08, 1.724137931E-08, 1.927272447E-08 +MPDATA,R5.0, 7,RSVX,_MATL , 4, 2.096981186E-08, 2.573340196E-08, 2.842766580E-08 +MPDATA,R5.0, 7,RSVX,_MATL , 7, 3.448275862E-08, +MPTEMP,R5.0, 7, 1, 0.000000000E+00, 20.0000000 , 50.0000000 +MPTEMP,R5.0, 7, 4, 75.0000000 , 150.000000 , 200.000000 +MPTEMP,R5.0, 7, 7, 300.000000 , +MPDATA,R5.0, 7,MURX,_MATL , 1, 1.00000000 , 1.00000000 , 1.00000000 +MPDATA,R5.0, 7,MURX,_MATL , 4, 1.00000000 , 1.00000000 , 1.00000000 +MPDATA,R5.0, 7,MURX,_MATL , 7, 1.00000000 , +/GO diff --git a/lisp/apdl-mode/matlib/emagM3.SI_MPL b/lisp/apdl-mode/matlib/emagM3.SI_MPL new file mode 100644 index 00000000..ff6fb715 --- /dev/null +++ b/lisp/apdl-mode/matlib/emagM3.SI_MPL @@ -0,0 +1,39 @@ +! ANSYS $RCSfile: emagM3.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +/COM, M3 Steel +/COM,********* Typical B-H properties for demo purposes ********* +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +TB,BH ,_MATL , 1, 30 +TBTEM, 0.000000000E+00, 1 +TBPT,, 11.5300000 , 0.100000000 +TBPT,, 20.8500000 , 0.200000000 +TBPT,, 28.4100000 , 0.300000000 +TBPT,, 35.2500000 , 0.400000000 +TBPT,, 41.3800000 , 0.500000000 +TBPT,, 46.9500000 , 0.600000000 +TBPT,, 52.1200000 , 0.700000000 +TBPT,, 57.0600000 , 0.800000000 +TBPT,, 61.8300000 , 0.900000000 +TBPT,, 66.0500000 , 1.00000000 +TBPT,, 71.0300000 , 1.10000000 +TBPT,, 76.4000000 , 1.20000000 +TBPT,, 82.4400000 , 1.30000000 +TBPT,, 90.1600000 , 1.40000000 +TBPT,, 99.5500000 , 1.50000000 +TBPT,, 109.580000 , 1.60000000 +TBPT,, 130.910000 , 1.70000000 +TBPT,, 324.766000 , 1.80000000 +TBPT,, 1358.00000 , 1.90000000 +TBPT,, 3581.00000 , 2.02000000 +TBPT,, 6525.00000 , 2.08000000 +TBPT,, 13052.0000 , 2.12500000 +TBPT,, 26104.0000 , 2.15000000 +TBPT,, 52208.0000 , 2.18300000 +TBPT,, 104416.000 , 2.24900000 +TBPT,, 208832.000 , 2.38000000 +TBPT,, 417664.000 , 2.64300000 +/GO diff --git a/lisp/apdl-mode/matlib/emagM54.SI_MPL b/lisp/apdl-mode/matlib/emagM54.SI_MPL new file mode 100644 index 00000000..8bd3bac4 --- /dev/null +++ b/lisp/apdl-mode/matlib/emagM54.SI_MPL @@ -0,0 +1,34 @@ +! ANSYS $RCSfile: emagM54.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +/COM,M54 Steel +/COM,********* Typical B-H properties for demo purposes ********* +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +TB,BH ,_MATL , 1, 40 +TBTEM, 0.000000000E+00, 1 +TBPT,, 91.9036000 , 0.400000000 +TBPT,, 104.384800 , 0.500000000 +TBPT,, 116.799300 , 0.600000000 +TBPT,, 129.866300 , 0.700000000 +TBPT,, 143.689300 , 0.800000000 +TBPT,, 159.143700 , 0.900000000 +TBPT,, 175.839600 , 1.00000000 +TBPT,, 194.373700 , 1.10000000 +TBPT,, 215.947800 , 1.20000000 +TBPT,, 242.965100 , 1.30000000 +TBPT,, 281.792100 , 1.40000000 +TBPT,, 369.099200 , 1.50000000 +TBPT,, 788.214200 , 1.60000000 +TBPT,, 2136.65450 , 1.70000000 +TBPT,, 4509.73260 , 1.80000000 +TBPT,, 7977.87680 , 1.90000000 +TBPT,, 15000.0000 , 1.97500000 +TBPT,, 30000.0000 , 2.05500000 +TBPT,, 60000.0000 , 2.14500000 +TBPT,, 120000.000 , 2.23500000 +TBPT,, 240000.000 , 2.37900000 +TBPT,, 480000.000 , 2.68100000 +/GO diff --git a/lisp/apdl-mode/matlib/emagSa1010.SI_MPL b/lisp/apdl-mode/matlib/emagSa1010.SI_MPL new file mode 100644 index 00000000..3309b3b2 --- /dev/null +++ b/lisp/apdl-mode/matlib/emagSa1010.SI_MPL @@ -0,0 +1,38 @@ +! ANSYS $RCSfile: emagSa1010.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +/COM,SA1010 Steel +/COM,********* Typical B-H properties for demo purposes ********* +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +TB,BH ,_MATL , 1, 40 +TBTEM, 0.000000000E+00, 1 +TBPT,, 90.0000000 , 0.500000000 +TBPT,, 270.000000 , 1.00000000 +TBPT,, 318.250000 , 1.10000000 +TBPT,, 384.500000 , 1.20000000 +TBPT,, 479.500000 , 1.30000000 +TBPT,, 608.562000 , 1.38750000 +TBPT,, 755.437000 , 1.45000000 +TBPT,, 939.185000 , 1.50000000 +TBPT,, 1188.93000 , 1.54500000 +TBPT,, 1407.93000 , 1.57500000 +TBPT,, 2077.31000 , 1.62750000 +TBPT,, 3117.93000 , 1.67375000 +TBPT,, 3969.37000 , 1.70225000 +TBPT,, 4843.66000 , 1.72750000 +TBPT,, 6081.34000 , 1.75825000 +TBPT,, 8581.09000 , 1.80875000 +TBPT,, 11066.4000 , 1.85000000 +TBPT,, 14985.7000 , 1.90250000 +TBPT,, 33003.3000 , 2.05000000 +TBPT,, 59203.3000 , 2.15000000 +TBPT,, 93214.9000 , 2.22625000 +TBPT,, 118884.000 , 2.27000000 +TBPT,, 163558.000 , 2.33375000 +TBPT,, 220788.000 , 2.40750000 +TBPT,, 373973.000 , 2.60000000 +TBPT,, 692281.000 , 3.00000000 +/GO diff --git a/lisp/apdl-mode/matlib/emagSilicon.SI_MPL b/lisp/apdl-mode/matlib/emagSilicon.SI_MPL new file mode 100644 index 00000000..aa90d959 --- /dev/null +++ b/lisp/apdl-mode/matlib/emagSilicon.SI_MPL @@ -0,0 +1,28 @@ +! ANSYS $RCSfile: emagSilicon.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +/COM,Silicon Core Iron +/COM,********* Typical B-H properties for demo purposes ********* +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +TB,BH ,_MATL , 1, 20 +TBTEM, 0.000000000E+00, 1 +TBPT,, 59.5238095 , 0.200000000 +TBPT,, 119.047619 , 0.400000000 +TBPT,, 158.730159 , 0.550000000 +TBPT,, 396.825397 , 1.15000000 +TBPT,, 555.555556 , 1.30000000 +TBPT,, 793.650794 , 1.40000000 +TBPT,, 1587.30159 , 1.55000000 +TBPT,, 3968.25397 , 1.63500000 +TBPT,, 7936.50794 , 1.65500000 +TBPT,, 15873.0159 , 1.67500000 +TBPT,, 31746.0317 , 1.70138960 +TBPT,, 63492.0635 , 1.75000000 +TBPT,, 95238.0952 , 1.79000000 +TBPT,, 190476.190 , 1.90980000 +TBPT,, 285714.286 , 2.02960000 +TBPT,, 380952.381 , 2.14950000 +/GO diff --git a/lisp/apdl-mode/matlib/emagVanad.SI_MPL b/lisp/apdl-mode/matlib/emagVanad.SI_MPL new file mode 100644 index 00000000..52237f8b --- /dev/null +++ b/lisp/apdl-mode/matlib/emagVanad.SI_MPL @@ -0,0 +1,35 @@ +! ANSYS $RCSfile: emagVanad.SI_MPL,v $ +! Modified on $Date: 2009/11/13 16:18:22 $ +! Source ID = $Revision: 1.3 $ +/NOP +/COM,Internal UNITS set at file creation time = SI (MKS) +/COM,Iron Cobalt Vanadium +/COM,********* Typical B-H properties for demo purposes ********* +TBDEL,ALL,_MATL +MPDEL,ALL,_MATL +TB,BH ,_MATL , 1, 40 +TBTEM, 0.000000000E+00, 1 +TBPT,, 170.000000 , 1.53960800 +TBPT,, 210.000000 , 1.71974500 +TBPT,, 250.000000 , 1.82620500 +TBPT,, 290.000000 , 1.89563200 +TBPT,, 330.000000 , 1.94421800 +TBPT,, 370.000000 , 1.98006600 +TBPT,, 410.000000 , 2.00762400 +TBPT,, 470.000000 , 2.03886300 +TBPT,, 560.000000 , 2.07188000 +TBPT,, 695.000000 , 2.10459900 +TBPT,, 897.500000 , 2.13547000 +TBPT,, 1201.25000 , 2.16379600 +TBPT,, 1656.87500 , 2.18955700 +TBPT,, 2340.31300 , 2.21303500 +TBPT,, 3365.46900 , 2.23454800 +TBPT,, 4903.20300 , 2.25434900 +TBPT,, 7209.80500 , 2.27262100 +TBPT,, 14420.0000 , 2.29000000 +TBPT,, 28840.0000 , 2.30900000 +TBPT,, 57680.0000 , 2.34600000 +TBPT,, 115360.000 , 2.41900000 +TBPT,, 230720.000 , 2.56400000 +TBPT,, 461440.000 , 2.85500000 +/GO diff --git a/lisp/apdl-mode/template/3d_press-fit_torque_calculations.mac b/lisp/apdl-mode/template/3d_press-fit_torque_calculations.mac new file mode 100644 index 00000000..1fe8b8ed --- /dev/null +++ b/lisp/apdl-mode/template/3d_press-fit_torque_calculations.mac @@ -0,0 +1,26 @@ + +!prerequisits +!1. local cylindrical coordinate system 12 +!2. correct symmetry factor +!3. friction factor +!4. 3d ASYMMETRICAL contacts + +frict=0.1 ! friction co-efficient +symm=6 ! symmetry factor + +set,last +esel,s,ename,,conta174 ! 174: 3d asymetrical contact! +csys,12 ! local cylindrical co-ordinate system +*get,en,elem,,count +etable,r,cent,x +csys +etable,cp,cont,pres +etable,a,volu!contact element areas +smult,tang,cp,a,frict*symm ! tangential forces over the whole circumference +smult,res,tang,r ! moment +!smult,cpres,cp,,1/en +ssum +*get,my_torque,ssum,,item,res +*get,my_force,ssum,,item,tang +*get,my_carea,ssum,,item,a +alls diff --git a/lisp/apdl-mode/template/harmonic_acceleration_results.mac b/lisp/apdl-mode/template/harmonic_acceleration_results.mac new file mode 100644 index 00000000..3ccb0af9 --- /dev/null +++ b/lisp/apdl-mode/template/harmonic_acceleration_results.mac @@ -0,0 +1,142 @@ +! Commands inserted into this file will be executed immediately after the ANSYS /POST1 command. + +! Active UNIT system in Workbench when this object was created: Metric (m, kg, N, s, V, A) +! NOTE: Any data that requires units (such as mass) is assumed to be in the consistent solver unit system. +! See Solving Units in the help system for more information. + +/com,*** Begin of /post26 output macro *** + +!! macro calculates the vector sum of node accelerations of harmonics +!! Prerequisits: +!! 1.) Configure: Analysis Settings -> Solution Data Management -> +!! Save MAPDL Database: yes +!! 2.) Create Named Selection of one mesh node: SensorNode + +!! Output: +!! graph and result file + +/post26 + +resume +!! we need more than 10 /post26 variables here !! +numvar,20 + +nsel,s,,,SensorNode +NN = Ndnext(0) + +Ux = 2 $ Uy = 3 $ Uz = 4 + +nsol,Ux,NN,U,x, DisplX ! Get x-deflection data +nsol,Uy,NN,U,y, DisplY +nsol,Uz,NN,U,z, DisplZ +!! above are complex displacements if damping or phase shifted loads + +!! acceleration is only valid for transient runs, not harmonics! +!! NSOL,2,NN,acc,x, Ax ! Get x-acceleration data +!! NSOL,3,NN,acc,y, Ay +!! NSOL,4,NN,acc,z, Az + +!! velocity +Pi=acos(-1) +!! get velocity +Vx = 5 $ Vy = 6 $ Vz = 7 +!! complex scaling, needs to be applied after each operation +cfact,0,2*Pi,1,0 +prod,Vx,1,Ux,,VeloX +cfact,0,2*Pi,1,0 +prod,Vy,1,Uy,,VeloY +cfact,0,2*Pi,1,0 +prod,Vz,1,Uz,,VeloZ + +Ax = 8 $ Ay = 9 $ Az = 10 +cfact,0,2*Pi,1,0 +prod,Ax,1,Vx,,AcelX +cfact,0,2*Pi,1,0 +prod,Ay,1,Vy,,AcelY +cfact,0,2*Pi,1,0 +prod,Az,1,Vz,,AcelZ + +!! calculate the vector sum + +!! REALVAR,3,2,,,REAL2 ! Variable 3 is real part of variable 2, name = REAL2 +!! IMAGIN,4,2,,,IMAG2 ! Variable 4 is imaginary part + +AxAx = 11 $ AyAy = 12 $ AzAz = 13 +prod,AxAx,Ax,Ax +prod,AyAy,Ay,Ay +Prod,AzAz,Az,Az +AsumAsum = 14 +add,AsumAsum,AxAx,AyAy,AzAz,Asum2 +!! had to write a name in above add otherwise it was confused with +!! Asum below! I consider this as a serious bug in apdl! +Asum = 15 +sqrt,Asum,AsumAsum,,,AccelSum + +!! QUOT,5,3,4 ! Fractions +!! ATAN,7,5,,,PHASE2 ! Variable 7 is the phase angle + +!! display of result +!! toggle output of result representation with plcplx +plcplx,0 +!! 0 Amplitude, the default. +!! 1 Phase angle. +!! 2 Real part. +!! 3 Imaginary part. + +!! invert image background colour +/RGB,INDEX,100,100,100, 0 +!! /RGB,INDEX, 80, 80, 80,13 +!! /RGB,INDEX, 60, 60, 60,14 +/RGB,INDEX, 0, 0, 0,15 + +/grid,1 + +/title,Displacement Components over Frequency +/axlab,x,Frequency in Hz +/axlab,y,Displacement in m +/show,png +plvar,Ux,Uy,uz +/show,close + +/title,Velocity Components over Frequency +!! /axlab,x,Frequency in Hz +/axlab,y,Velocity in m/s +/show,png +plvar,Vx,Vy,Vz +/show,close + +/title,Acceleration Components over Frequency +!! /axlab,x,Frequency in Hz +/axlab,y,Acceleration m/s^2 +/show,png +plvar,Ax,Ay,Az +/show,close + +/title,Acceleration Vector Sum Amplitude over Frequency +/show,png +plvar,Ax,Ay,Az,Asum +/show,close + +!! output of variables into file +*GET,Size,VARI,,NSETS +*dim,Freq,arry,Size +*dim,ACC,array,Size ! Create array parameter +vget,Freq(1),1 ! Store freq data of variable into array +vget,ACC(1),Asum ! Store freq data of variable into array +!! overwriting existing file! +*cfopen,acceleration_sum,txt +!! The units are dependent of Workbench settings!!!! +Strg='Freq. in Hz, Acceleration in m/s^2' +*vwrite,Strg +%S +*VWRITE,Freq(1),ACC(1) ! Write array in given format to file +%G %G +*CFCLOSE + +store,MERGE +!! switch back to /post1 +/post1 +allsel + +/com,*** post 26 output...done *** +!! ++++++++++++++++++++++++++++++ \ No newline at end of file diff --git a/lisp/apdl-mode/template/plane-stress_structural_example.mac b/lisp/apdl-mode/template/plane-stress_structural_example.mac new file mode 100644 index 00000000..54759d44 --- /dev/null +++ b/lisp/apdl-mode/template/plane-stress_structural_example.mac @@ -0,0 +1,105 @@ +fini +/clear +!! y +/units,mpa ! indicate mm-t-s unit system +!@ ============================== +!@ --- Preprocessing --- +!@ ============================== +/prep7 + +Thick = 10.5 !element thickness, spring depth in mm +W = 0.1 !spring thickness in mm +Rad = 1.5 !Spring radius + +!@@ -- Elements -- + +Steel = 1 +ID = Steel +real = Steel + +!! plane stress with thickness +!! et,ID,plane182 !2d, 4 node +et,ID,plane183,,,3 !2d, 8 node (3)0:plane stress, 1:axissymmetric, 2:plane + !strain, 3:plane stress with thickness real + !constant +r,ID,Thick ! element thickness + +!! contacts: targe169 - conta172 + +/eshape,1 ! 1:use real constant def. for element shapes +/graphics, power ! for post1 results + +!@@ -- Material -- +mp,nuxy,Steel,0.3 ! Poisson No +mp,ex,Steel,200000 ! Elastic modulus + +!@@ -- Modeling -- + +k,1,0,.25 +k,2,0,.25 + W +k,3,.25 +k,4,.25, W +a,1,3,4,2 + +k,5,2.5 - Rad +k,6,2.5 - Rad,W +a,3,5,6,4 + +!!*get,LN, + +k,7,2.5,-Rad +k,8,2.5+W,-Rad +!! centre kp for radius +k,9,2.5-Rad,-Rad +larc,5,7,9,Rad +l,7,8 +larc,8,6,9,Rad+W +l,6,5 +!!/pnum,lines,on +!!lplot +al,6,8,9,10 +!!aplot,all + +!@@ -- Meshing -- +mshkey,1 ! 1: mapped meshing,2: mapped if possible +esize,W/4 +amesh,all + +!@@ -- BCs, Loads -- +!! symmetry +nsel,s,loc,x,0 +d,all,ux + +!! displacement +nsel,r,loc,y,.25 +d,all,uy,.5 + +!! fixation +nsel,s,loc,y,-Rad +d,all,all + +allsel + +!@ ============================== +!@ --- Solving --- +!@ ============================== + +/solu +nlgeom,on +!!outres,all,all ! ,item,freq,cname +solve +save + +!@ ============================== +!@ --- Postprocessing --- +!@ ============================== + +/post1 +set,last !for fsum +/view,,.1,.1,1 +!!plnsol,u,sum,2 +/expand,2,rect,half,-1e-6 +/dscale,,1 +plnsol,s,1,2 +nsel,s,loc,y,-Rad +fsum ! sum nodal forces/moments of selected elements diff --git a/lisp/apdl-mode/template/plane_stress_press-fit_torque_calculations.mac b/lisp/apdl-mode/template/plane_stress_press-fit_torque_calculations.mac new file mode 100644 index 00000000..71955c4c --- /dev/null +++ b/lisp/apdl-mode/template/plane_stress_press-fit_torque_calculations.mac @@ -0,0 +1,38 @@ + +!! Prerequisites: +!! 1.) 2d plane stress model with element length adjusted!!!! +!! 2.) Define assymetrical contact options +!! 3.) Local, cylindrical coordinate system ID:12 + +!! Adjust the variables +friction = 0.1 !friction co-efficient +symmetry = 1 !symmetry order (1 means full model, 2 means half + !model, etc.) + +!! *if + !! esel,s,type,,cid_press_fit ! must be asymetrical contact +!! Requires element type variable 'cid_press_fit' and input argument +!! arg1 +!! *endif +csys,12 ! local cylindrical co-ordinate system + +set,last +esel,s,ename,,conta172 ! only asymetrical contacts please! +etable,a,volu ! contact element areas (or path) +etable,r,cent,x ! element centres +!! pressing-out torque +smult,forc,cp,a,friction,symmetry +!! Torque +smult,torq,forc,r +!! Average contact pressure +etable,cp,cont,pres +*get,en,elem,,count +smult,cpres,cp,,1/en + +ssum ! summations for all selected elements +*get,my_force,ssum,,item,forc ! pressing-out force +*get,my_torque,ssum,,item,torq ! transmissible torque +*get,my_avg_contact_pressure,ssum,,item,cpres !average contact pressure + +allsel + diff --git a/lisp/apdl-mode/template/post26_output.mac b/lisp/apdl-mode/template/post26_output.mac new file mode 100644 index 00000000..89a7f378 --- /dev/null +++ b/lisp/apdl-mode/template/post26_output.mac @@ -0,0 +1,39 @@ +!! ****************************** +!! check symmetry variable +!! +/com,*** post26 output *** +/go +/post26 + +!! invert background colour +/RGB,INDEX,100,100,100, 0 +!! /RGB,INDEX, 80, 80, 80,13 +!! /RGB,INDEX, 60, 60, 60,14 +/RGB,INDEX, 0, 0, 0,15 + +symmetry=2 +nsol,2,nn,u,z +rforce,3,nn,f,z +add,4,2,,,displ,,,-1 +add,5,3,,,force,,,-symmetry +/gmarker,1,1 !curve_no,marker_key (1=triangle) + !(2=squares,3=diamonds,4=crosses) +/grid,1 +/axlab,x,displacement in mm +/axlab,y,F in N +!! store,appen +!! timerange,0,1 +!! /xrange,0,.16 +!! /yrange,0,40 +xvar,4 +spring_thick=0.4 +/title,Spring thickness %spring_thick% mm +/show,png +plvar,5 +/show,close !or /graphics,off + +/post1 !don't forget this with multiple loadsteps + +/nopr +/com,*** post 26 output...done *** +!! ++++++++++++++++++++++++++++++ \ No newline at end of file diff --git a/lisp/diff-hl/diff-hl-pkg.el b/lisp/diff-hl/diff-hl-pkg.el index 518fcf9b..6b353e4e 100644 --- a/lisp/diff-hl/diff-hl-pkg.el +++ b/lisp/diff-hl/diff-hl-pkg.el @@ -1,11 +1,11 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "diff-hl" "20251125.238" +(define-package "diff-hl" "20251216.242" "Highlight uncommitted changes using VC." '((cl-lib "0.2") (emacs "26.1")) :url "https://github.com/dgutov/diff-hl" - :commit "8dc486f568afa08dcf9932f4045677df6f5a23f8" - :revdesc "8dc486f568af" + :commit "e79aa49ad3cbbe85379cf6646db3aaacd3b04708" + :revdesc "e79aa49ad3cb" :keywords '("vc" "diff") :authors '(("Dmitry Gutov" . "dmitry@gutov.dev")) :maintainers '(("Dmitry Gutov" . "dmitry@gutov.dev"))) diff --git a/lisp/diff-hl/diff-hl-show-hunk.el b/lisp/diff-hl/diff-hl-show-hunk.el index c23ccb5c..641683d7 100644 --- a/lisp/diff-hl/diff-hl-show-hunk.el +++ b/lisp/diff-hl/diff-hl-show-hunk.el @@ -1,6 +1,6 @@ ;;; diff-hl-show-hunk.el --- Integrate popup/posframe and diff-hl-diff-goto-hunk -*- lexical-binding: t -*- -;; Copyright (C) 2020-2021 Free Software Foundation, Inc. +;; Copyright (C) 2020-2025 Free Software Foundation, Inc. ;; Author: Álvaro González diff --git a/lisp/diff-hl/diff-hl.el b/lisp/diff-hl/diff-hl.el index 2b307bc3..e68c64ea 100644 --- a/lisp/diff-hl/diff-hl.el +++ b/lisp/diff-hl/diff-hl.el @@ -5,8 +5,8 @@ ;; Author: Dmitry Gutov ;; URL: https://github.com/dgutov/diff-hl ;; Keywords: vc, diff -;; Package-Version: 20251125.238 -;; Package-Revision: 8dc486f568af +;; Package-Version: 20251216.242 +;; Package-Revision: e79aa49ad3cb ;; Package-Requires: ((cl-lib "0.2") (emacs "26.1")) ;; This file is part of GNU Emacs. @@ -422,7 +422,8 @@ It can be a relative expression as well, such as \"HEAD^\" with Git, or (or (memq state '(edited conflict)) (and (eq state 'up-to-date) ;; VC state is stale in after-revert-hook. - (or (static-if (>= emacs-major-version 31) + (or (static-if (boundp 'revert-buffer-in-progress) + ;; Emacs 31. revert-buffer-in-progress revert-buffer-in-progress-p) ;; Diffing against an older revision. @@ -741,9 +742,36 @@ Return a list of line overlays used." (defun diff-hl--resolve (value-or-buffer cb) (if (listp value-or-buffer) (funcall cb value-or-buffer) - (with-current-buffer value-or-buffer - (vc-run-delayed - (funcall cb (diff-hl-changes-from-buffer (current-buffer))))))) + (static-if (fboundp 'vc-run-delayed-success) + ;; Emacs 31. + (with-current-buffer value-or-buffer + (vc-run-delayed-success 1 + (funcall cb (diff-hl-changes-from-buffer (current-buffer))))) + (diff-hl--when-done value-or-buffer + #'diff-hl-changes-from-buffer + cb)))) + +(defun diff-hl--when-done (buffer get-value callback &optional proc) + (let ((proc (or proc (get-buffer-process buffer)))) + (cond + ;; If there's no background process, just execute the code. + ((or (null proc) (eq (process-status proc) 'exit)) + ;; Make sure we've read the process's output before going further. + (when proc (accept-process-output proc)) + (when (get-buffer buffer) + (with-current-buffer buffer + (funcall callback (funcall get-value buffer))))) + ;; If process was deleted, we ignore it. + ((eq (process-status proc) 'signal)) + ;; If a process is running, set the sentinel. + ((eq (process-status proc) 'run) + (set-process-sentinel + proc + (lambda (proc _status) + ;; Delegate to the parent cond for decision logic. + (diff-hl--when-done buffer get-value callback proc)))) + ;; Maybe we should ignore all other states as well. + (t (error "Unexpected process state"))))) (defun diff-hl--autohide-margin () (let ((width-var (intern (format "%s-margin-width" diff-hl-side)))) diff --git a/lisp/emacsql/emacsql-pg.el b/lisp/emacsql/emacsql-pg.el index d15ed597..649423f2 100644 --- a/lisp/emacsql/emacsql-pg.el +++ b/lisp/emacsql/emacsql-pg.el @@ -22,12 +22,12 @@ (if (>= emacs-major-version 28) (require 'pg nil t) (message "emacsql-pg.el requires Emacs 28.1 or later")) -(declare-function pg-connect "pg" +(declare-function pg-connect "ext:pg" ( dbname user &optional (password "") (host "localhost") (port 5432) (tls nil))) -(declare-function pg-disconnect "pg" (con)) -(declare-function pg-exec "pg" (connection &rest args)) -(declare-function pg-result "pg" (result what &rest arg)) +(declare-function pg-disconnect "ext:pg" (con)) +(declare-function pg-exec "ext:pg" (connection &rest args)) +(declare-function pg-result "ext:pg" (result what &rest arg)) (defclass emacsql-pg-connection (emacsql-connection) ((pgcon :reader emacsql-pg-pgcon :initarg :pgcon) diff --git a/lisp/emacsql/emacsql-pkg.el b/lisp/emacsql/emacsql-pkg.el index dd1fbdac..505c3465 100644 --- a/lisp/emacsql/emacsql-pkg.el +++ b/lisp/emacsql/emacsql-pkg.el @@ -1,9 +1,9 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "emacsql" "20251116.1655" +(define-package "emacsql" "20251130.1841" "High-level SQL database front-end." '((emacs "26.1")) :url "https://github.com/magit/emacsql" - :commit "e1908de2cf2c7b77798ef6645d514dded1d7f8a4" - :revdesc "e1908de2cf2c" + :commit "f177a41e93b92a4b1139a553eed5415ca33f439c" + :revdesc "f177a41e93b9" :authors '(("Christopher Wellons" . "wellons@nullprogram.com")) :maintainers '(("Jonas Bernoulli" . "emacs.emacsql@jonas.bernoulli.dev"))) diff --git a/lisp/emacsql/emacsql-sqlite-module.el b/lisp/emacsql/emacsql-sqlite-module.el index 413a6260..be91b6bd 100644 --- a/lisp/emacsql/emacsql-sqlite-module.el +++ b/lisp/emacsql/emacsql-sqlite-module.el @@ -17,9 +17,11 @@ (require 'emacsql-sqlite) (require 'sqlite3 nil t) -(declare-function sqlite3-open "ext:sqlite3-api") -(declare-function sqlite3-exec "ext:sqlite3-api") -(declare-function sqlite3-close "ext:sqlite3-api") +;; Prevent check-declare from finding the defining file but then making +;; noise because it fails to find the definition because it is a module. +(declare-function sqlite3-open "ext:module:sqlite3-api") +(declare-function sqlite3-exec "ext:module:sqlite3-api") +(declare-function sqlite3-close "ext:module:sqlite3-api") (defvar sqlite-open-readwrite) (defvar sqlite-open-create) diff --git a/lisp/emacsql/emacsql.el b/lisp/emacsql/emacsql.el index 5651f31f..74c4213c 100644 --- a/lisp/emacsql/emacsql.el +++ b/lisp/emacsql/emacsql.el @@ -6,8 +6,8 @@ ;; Maintainer: Jonas Bernoulli ;; Homepage: https://github.com/magit/emacsql -;; Package-Version: 20251116.1655 -;; Package-Revision: e1908de2cf2c +;; Package-Version: 20251130.1841 +;; Package-Revision: f177a41e93b9 ;; Package-Requires: ((emacs "26.1")) ;; SPDX-License-Identifier: Unlicense diff --git a/lisp/ess/ess-custom.el b/lisp/ess/ess-custom.el index 08a84091..66108222 100644 --- a/lisp/ess/ess-custom.el +++ b/lisp/ess/ess-custom.el @@ -1571,6 +1571,12 @@ by `ess-function-template'." :group 'ess :type 'regexp) +(defcustom ess-r-outline-regexp + "^[ \t]*#+ +.*\\(?:----\\|====\\|####\\)\\s-*$" + "Regexp used to detect the beginning of R headings." + :group 'ess-R + :type 'regexp) + ; ess-inf: variables for inferior-ess. diff --git a/lisp/ess/ess-pkg.el b/lisp/ess/ess-pkg.el index 3a35cd86..90e2bd86 100644 --- a/lisp/ess/ess-pkg.el +++ b/lisp/ess/ess-pkg.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "ess" "20251015.1619" +(define-package "ess" "20251212.937" "Emacs Speaks Statistics." '((emacs "25.1")) :url "https://ess.r-project.org/" - :commit "a7d685bd9a3dbc8540edf86318012a0a0528e49e" - :revdesc "a7d685bd9a3d" + :commit "e39ca8fa7fce703aa2851e83987a412737d575f0" + :revdesc "e39ca8fa7fce" :authors '(("David Smith" . "dsmith@stats.adelaide.edu.au") ("A.J. Rossini" . "blindglobe@gmail.com") ("Richard M. Heiberger" . "rmh@temple.edu") diff --git a/lisp/ess/ess-r-mode.el b/lisp/ess/ess-r-mode.el index 2a6c3293..8cb0d9e0 100644 --- a/lisp/ess/ess-r-mode.el +++ b/lisp/ess/ess-r-mode.el @@ -299,6 +299,14 @@ When t, loading a file into a namespaced will output information about which objects are exported and which stay hidden in the namespace.") +(defun ess-r-outline-level () + "R mode `outline-level` function." + (save-excursion + (beginning-of-line) + (if (looking-at "^[ \t]*\\(#+\\)\\s-") + (length (match-string 1)) + 1000))) + ;; The syntax class for '\' is punctuation character to handle R 4.1 ;; lambdas. Inside strings it should be treated as an escape ;; character which we ensure here. @@ -855,6 +863,9 @@ top level functions only." (setq imenu-generic-expression ess-imenu-S-generic-expression) (when ess-imenu-use-S (imenu-add-to-menubar "Imenu-R")) + ;; outline + (setq-local outline-level #'ess-r-outline-level) + (setq-local outline-regexp ess-r-outline-regexp) (setq-local beginning-of-defun-function #'ess-r-beginning-of-defun) (setq-local end-of-defun-function #'ess-r-end-of-defun) (ess-roxy-mode)) diff --git a/lisp/ess/ess.el b/lisp/ess/ess.el index 00186524..f0218023 100644 --- a/lisp/ess/ess.el +++ b/lisp/ess/ess.el @@ -17,8 +17,8 @@ ;; ;; Maintainer: ESS Core Team ;; Created: 7 Jan 1994 -;; Package-Version: 20251015.1619 -;; Package-Revision: a7d685bd9a3d +;; Package-Version: 20251212.937 +;; Package-Revision: e39ca8fa7fce ;; URL: https://ess.r-project.org/ ;; Package-Requires: ((emacs "25.1")) ;; ESSR-Version: 1.8 diff --git a/lisp/ess/ess.info b/lisp/ess/ess.info index f93e5716..510828d3 100644 --- a/lisp/ess/ess.info +++ b/lisp/ess/ess.info @@ -3267,6 +3267,7 @@ ESS has a few extra features, which didn't fit anywhere else. * Parens:: Parenthesis matching * Graphics:: Using graphics with ESS * Imenu:: Support for Imenu in ESS +* Outline:: Use outline-minor-mode in R scripts * Toolbar:: Support for toolbar in ESS * Xref:: Xref * Rdired:: Directory editor for R objects @@ -3482,7 +3483,7 @@ interaction and graphics within S-PLUS. (Thanks to Tim Hesterberg for this information.)  -File: ess.info, Node: Imenu, Next: Toolbar, Prev: Graphics, Up: Extras +File: ess.info, Node: Imenu, Next: Outline, Prev: Graphics, Up: Extras 11.7 Imenu ========== @@ -3501,9 +3502,42 @@ uses, check the value of ‘imenu-generic-expression’. This value is set by various ESS variables such as ‘ess-imenu-S-generic-expression’.  -File: ess.info, Node: Toolbar, Next: Xref, Prev: Imenu, Up: Extras +File: ess.info, Node: Outline, Next: Toolbar, Prev: Imenu, Up: Extras -11.8 Toolbar +11.8 Outline navigation +======================= + +R editing buffers integrate with ‘outline-minor-mode’. When you toggle +the minor mode (for example via ‘M-x outline-minor-mode’ or by adding it +to ‘ess-r-mode-hook’), ESS assigns ‘ess-r-outline-level’ to +‘outline-level’ and installs ‘ess-r-outline-regexp’ so that comment +headings drive folding. Lines that begin with one or more ‘#’, followed +by text and a trailing marker of ‘----’, ‘====’, or ‘####’, are treated +as outline headings. This matches the section markers convention +adopted by RStudio. + + # Setup ---- + ## Data ---- + ### Models ==== + #### Helpers #### + + The number of leading ‘#’ characters sets the outline depth. Use +standard Outline commands (such as ‘C-c C-t’) to cycle visibility once +the minor mode is active. To enable Outlining automatically, add it to +the R mode hook: + + (add-hook 'ess-r-mode-hook #'outline-minor-mode) + + -- User Option: ess-r-outline-regexp + Regular expression used by ESS to recognise outline headings in R + buffers. The default matches the RStudio-style sections shown + above, but you can customise it if you prefer a different comment + convention. + + +File: ess.info, Node: Toolbar, Next: Xref, Prev: Outline, Up: Extras + +11.9 Toolbar ============ The R and S editing modes have support for a toolbar. This toolbar @@ -3515,8 +3549,8 @@ ways to change the toolbar.  File: ess.info, Node: Xref, Next: Rdired, Prev: Toolbar, Up: Extras -11.9 Xref -========= +11.10 Xref +========== Xref is an Emacs interface that supports finding "identifiers," usually function definitions in ESS's view. ESS ships with support for Xref in @@ -3526,7 +3560,7 @@ Emacs versions 25.1 and higher. For how to use this feature, see *Note  File: ess.info, Node: Rdired, Next: Package listing, Prev: Xref, Up: Extras -11.10 Rdired +11.11 Rdired ============ Ess-rdired provides a dired-like buffer for viewing, editing and @@ -3558,7 +3592,7 @@ the object, 'v' will view it, and 'd' will mark the object for deletion  File: ess.info, Node: Package listing, Next: Org, Prev: Rdired, Up: Extras -11.11 Package listing +11.12 Package listing ===================== ESS[R] provides several commands to list and manage packages and objects @@ -3598,7 +3632,7 @@ bindings in this mode (type ‘?’ in this buffer for a description).  File: ess.info, Node: Org, Next: Sweave and AUCTeX, Prev: Package listing, Up: Extras -11.12 Interaction with Org mode +11.13 Interaction with Org mode =============================== Org-mode () now supports reproducible research and @@ -3617,7 +3651,7 @@ R process. (This section contributed by Dan Davison and Eric Schulte.)  File: ess.info, Node: Sweave and AUCTeX, Prev: Org, Up: Extras -11.13 Support for Sweave in ESS and AUCTeX +11.14 Support for Sweave in ESS and AUCTeX ========================================== Libraries for literate data analysis are obsolete and not loaded by @@ -4778,6 +4812,7 @@ Function and program index * ess-quit: Hot keys. (line 70) * ess-quit <1>: Help. (line 170) * ess-R-complete-object-name: roxygen2. (line 80) +* ess-r-outline-level: Outline. (line 6) * ess-r-package-list-available-packages: Package listing. (line 12) * ess-r-package-list-local-packages: Package listing. (line 9) * ess-r-package-update-packages: Package listing. (line 16) @@ -4827,6 +4862,7 @@ Function and program index * mark-paragraph: roxygen2. (line 85) * newline-and-indent: roxygen2. (line 102) * objects(): Hot keys. (line 24) +* outline-minor-mode: Outline. (line 6) * printer(): printer. (line 11) * q(): Hot keys. (line 71) * R: Starting up. (line 11) @@ -4877,6 +4913,8 @@ Variable index * ess-r-flymake-linters: ESS Flymake. (line 16) * ess-r-flymake-lintr-cache: ESS Flymake. (line 23) * ess-R-font-lock-keywords: Highlighting. (line 19) +* ess-r-outline-regexp: Outline. (line 6) +* ess-r-outline-regexp <1>: Outline. (line 27) * ess-search-list: Source Directories. (line 62) * ess-source-directory: Source Directories. (line 22) * ess-style: Styles. (line 21) @@ -4915,6 +4953,7 @@ Concept Index * changing ESS processes: Multiple ESS processes. (line 6) * cleaning up: Hot keys. (line 71) +* code folding: Outline. (line 6) * comint: Credits. (line 6) * command history: Command History. (line 6) * command line arguments: iESS(R)--Inferior ESS processes. @@ -4997,6 +5036,7 @@ Concept Index (line 6) * new objects, creating: Edit buffer. (line 14) * objects: Hot keys. (line 24) +* outline-minor-mode: Outline. (line 6) * pages in the process buffer: Transcript. (line 24) * paging commands in help buffers: Help. (line 28) * paragraphs in the process buffer: Transcript. (line 13) @@ -5111,50 +5151,51 @@ Node: R documentation files132772 Node: roxygen2136587 Node: Namespaced Evaluation141110 Node: Extras143124 -Node: ESS ElDoc144148 -Node: ESS Flymake145728 -Node: Handy commands146858 -Node: Highlighting148135 -Node: Parens149186 -Node: Graphics149662 -Node: printer150333 -Node: X11151105 -Node: winjava151444 -Node: Imenu151856 -Node: Toolbar152711 -Node: Xref153119 -Node: Rdired153447 -Node: Package listing154526 -Node: Org155974 -Node: Sweave and AUCTeX156928 -Node: ESS for R159560 -Node: ESS(R)--Editing files159860 -Node: iESS(R)--Inferior ESS processes160365 -Node: Philosophies for using ESS(R)163084 -Node: Example ESS usage164011 -Node: ESS for SAS165415 -Node: ESS(SAS)--Design philosophy166142 -Node: ESS(SAS)--Editing files167079 -Node: ESS(SAS)--TAB key169023 -Node: ESS(SAS)--Batch SAS processes170437 -Node: ESS(SAS)--Function keys for batch processing175657 -Node: iESS(SAS)--Interactive SAS processes185564 -Node: iESS(SAS)--Common problems189506 -Node: ESS(SAS)--Graphics191120 -Node: ESS(SAS)--Windows191919 -Node: ESS for BUGS192503 -Node: ESS for JAGS194315 -Node: Mailing lists/bug reports197811 -Node: Bugs198075 -Node: Reporting Bugs199751 -Node: Mailing Lists200670 -Node: Help with Emacs201408 -Node: Customization201944 -Node: Indices202722 -Node: Key index202897 -Node: Function and program index208029 -Node: Variable index217449 -Node: Concept index221010 +Node: ESS ElDoc144216 +Node: ESS Flymake145796 +Node: Handy commands146926 +Node: Highlighting148203 +Node: Parens149254 +Node: Graphics149730 +Node: printer150401 +Node: X11151173 +Node: winjava151512 +Node: Imenu151924 +Node: Outline152779 +Node: Toolbar154091 +Node: Xref154501 +Node: Rdired154831 +Node: Package listing155910 +Node: Org157358 +Node: Sweave and AUCTeX158312 +Node: ESS for R160944 +Node: ESS(R)--Editing files161244 +Node: iESS(R)--Inferior ESS processes161749 +Node: Philosophies for using ESS(R)164468 +Node: Example ESS usage165395 +Node: ESS for SAS166799 +Node: ESS(SAS)--Design philosophy167526 +Node: ESS(SAS)--Editing files168463 +Node: ESS(SAS)--TAB key170407 +Node: ESS(SAS)--Batch SAS processes171821 +Node: ESS(SAS)--Function keys for batch processing177041 +Node: iESS(SAS)--Interactive SAS processes186948 +Node: iESS(SAS)--Common problems190890 +Node: ESS(SAS)--Graphics192504 +Node: ESS(SAS)--Windows193303 +Node: ESS for BUGS193887 +Node: ESS for JAGS195699 +Node: Mailing lists/bug reports199195 +Node: Bugs199459 +Node: Reporting Bugs201135 +Node: Mailing Lists202054 +Node: Help with Emacs202792 +Node: Customization203328 +Node: Indices204106 +Node: Key index204281 +Node: Function and program index209413 +Node: Variable index218979 +Node: Concept index222686  End Tag Table diff --git a/lisp/flycheck/flycheck-pkg.el b/lisp/flycheck/flycheck-pkg.el index e7a2462b..f7d9a27b 100644 --- a/lisp/flycheck/flycheck-pkg.el +++ b/lisp/flycheck/flycheck-pkg.el @@ -1,11 +1,11 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "flycheck" "20251119.1203" +(define-package "flycheck" "20251128.1706" "On-the-fly syntax checking." '((emacs "27.1") (seq "2.24")) :url "https://www.flycheck.org" - :commit "1eafe2911d50c9f58efce81ff8abea59495e1ff3" - :revdesc "1eafe2911d50" + :commit "62570fafbedb8fa3f7d75a50a9364feca3b294ef" + :revdesc "62570fafbedb" :keywords '("convenience" "languages" "tools") :authors '(("Sebastian Wiesner" . "swiesner@lunaryorn.com")) :maintainers '(("Clément Pit-Claudel" . "clement.pitclaudel@live.com") diff --git a/lisp/flycheck/flycheck.el b/lisp/flycheck/flycheck.el index 2989e501..939bdec4 100644 --- a/lisp/flycheck/flycheck.el +++ b/lisp/flycheck/flycheck.el @@ -10,8 +10,8 @@ ;; Bozhidar Batsov ;; URL: https://www.flycheck.org ;; Keywords: convenience, languages, tools -;; Package-Version: 20251119.1203 -;; Package-Revision: 1eafe2911d50 +;; Package-Version: 20251128.1706 +;; Package-Revision: 62570fafbedb ;; Package-Requires: ((emacs "27.1") (seq "2.24")) ;; This file is not part of GNU Emacs. @@ -10502,30 +10502,54 @@ CHECKER and BUFFER denoted the CHECKER that returned OUTPUT and the BUFFER that was checked respectively. See URL `https://proselint.com/' for more information about proselint." - (mapcar (lambda (err) - (let-alist err - (flycheck-error-new-at-pos - .start - (pcase .severity - (`"suggestion" 'info) - (`"warning" 'warning) - (`"error" 'error) - ;; Default to error - (_ 'error)) - .message - :id .check - :buffer buffer - :checker checker - ;; See https://github.com/amperser/proselint/issues/1048 - :end-pos .end))) - (let-alist (car (flycheck-parse-json output)) - .data.errors))) + (let ((response (flycheck-parse-json output))) + (if (eq (caaar response) 'data) + ;; Proselint versions <= 0.14.0: + (mapcar (lambda (err) + (let-alist err + (flycheck-error-new-at-pos + .start + (pcase .severity + (`"suggestion" 'info) + (`"warning" 'warning) + (`"error" 'error) + ;; Default to error + (_ 'error)) + .message + :id .check + :buffer buffer + :checker checker + ;; See https://github.com/amperser/proselint/issues/1048 + :end-pos .end))) + (let-alist (car response) + .data.errors)) + ;; Proselint versions >= 0.16.0 + (mapcar (lambda (err) + (let-alist err + (flycheck-error-new-at-pos + (nth 0 .span) + 'warning + .message + :id .check_path + :buffer buffer + :checker checker + :end-pos (nth 1 .span)))) + (let-alist (car response) + .result..diagnostics))))) (flycheck-define-checker proselint "Flycheck checker using Proselint. See URL `https://proselint.com/'." - :command ("proselint" "--json" "-") + :command ("proselint" + (eval + (if (= (call-process (or flycheck-proselint-executable "proselint") + nil nil nil "--version") + 0) + ;; Proselint versions <= 0.14.0: + (list "--json" "-") + ;; Proselint versions >= 0.16.0 + (list "check" "--output-format=json")))) :standard-input t :error-parser flycheck-proselint-parse-errors :modes (text-mode markdown-mode gfm-mode message-mode org-mode)) diff --git a/lisp/ledger-mode/ledger-commodities.el b/lisp/ledger-mode/ledger-commodities.el index 75bcd65e..7b189dfb 100644 --- a/lisp/ledger-mode/ledger-commodities.el +++ b/lisp/ledger-mode/ledger-commodities.el @@ -157,14 +157,22 @@ longer ones are after the value." (concat str " " commodity) (concat commodity " " str)))) -(defun ledger-read-commodity-string (prompt) - "Read an amount from mini-buffer using PROMPT." - (let ((str (read-from-minibuffer - (concat prompt " (" ledger-reconcile-default-commodity "): "))) - comm) - (when (and (> (length str) 0) - (ledger-split-commodity-string str)) - (setq comm (ledger-split-commodity-string str)) +(defvar ledger-read-commodity-history nil + "Default history variable for `ledger-read-commodity-string'.") + +(defun ledger-read-commodity-string (prompt &optional history) + "Read an amount from mini-buffer using PROMPT. + +If not supplied as input, the commodity defaults to +`ledger-reconcile-default-commodity'. + +If HISTORY is non-nil, it should be a minibuffer history variable. +Otherwise, default to `ledger-read-commodity-history'." + (let ((str (read-string + (format "%s (%s): " prompt ledger-reconcile-default-commodity) + nil (or history 'ledger-read-commodity-history)))) + (when-let* (((> (length str) 0)) + (comm (ledger-split-commodity-string str))) (if (cadr comm) comm (list (car comm) ledger-reconcile-default-commodity))))) diff --git a/lisp/ledger-mode/ledger-complete.el b/lisp/ledger-mode/ledger-complete.el index 36430a62..8ef40981 100644 --- a/lisp/ledger-mode/ledger-complete.el +++ b/lisp/ledger-mode/ledger-complete.el @@ -304,11 +304,17 @@ an alist (ACCOUNT-ELEMENT . NODE)." (match-string 2) (match-string 3) (match-string 4) (match-string 5) (match-string 6) (= (line-end-position) (match-end 0))))) + (;; Transaction comments + (eq 'comment (car (cdr (ledger-context-at-point)))) + (save-excursion + (back-to-indentation) + (setq start (point))) + (setq collection (cons 'nullary #'ledger-comments-list))) (;; Payees (eq 'transaction - (save-excursion - (prog1 (ledger-thing-at-point) - (setq start (point))))) + (save-excursion + (prog1 (ledger-thing-at-point) + (setq start (point))))) (setq collection (cons 'nullary #'ledger-payees-list))) (;; Accounts (save-excursion @@ -322,10 +328,10 @@ an alist (ACCOUNT-ELEMENT . NODE)." (- (match-beginning 0) end))) realign-after t collection (cons 'nullary - (if ledger-complete-in-steps - (lambda () - (ledger-complete-account-next-steps start end)) - #'ledger-accounts-list))))) + (if ledger-complete-in-steps + (lambda () + (ledger-complete-account-next-steps start end)) + #'ledger-accounts-list))))) (when collection (let ((prefix (buffer-substring-no-properties start end))) (list start end @@ -352,6 +358,20 @@ an alist (ACCOUNT-ELEMENT . NODE)." (defun ledger-trim-trailing-whitespace (str) (replace-regexp-in-string "[ \t]*$" "" str)) +(defun ledger-comments-list () + "Collect comments from the buffer." + (let ((comments '())) + (save-excursion + (goto-char (point-min)) + ;; FIXME: This only catches comments at beginning of lines and starting + ;; with some spaces (so "transaction comments"). There can also be + ;; comments after payees or prices too, as well as comments outside of + ;; transactions (the latter should be completed over separately). + ;; TODO: Unify this regex with `ledger-comment-regex' + (while (re-search-forward "^[ \t]+\\(?1:;.+\\)$" nil t) + (push (match-string-no-properties 1) comments))) + (sort (delete-dups comments) #'string-lessp))) + (defun ledger-fully-complete-xact () "Completes a transaction if there is another matching payee in the buffer. diff --git a/lisp/ledger-mode/ledger-mode-pkg.el b/lisp/ledger-mode/ledger-mode-pkg.el index ac1ff04f..41503395 100644 --- a/lisp/ledger-mode/ledger-mode-pkg.el +++ b/lisp/ledger-mode/ledger-mode-pkg.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "ledger-mode" "20250821.1439" +(define-package "ledger-mode" "20251219.2350" "Helper code for use with the \"ledger\" command-line tool." '((emacs "26.1")) :url "https://github.com/ledger/ledger-mode" - :commit "e9bb645e8f05cf7ad0819b0450db7e84c9ed3f41" - :revdesc "e9bb645e8f05") + :commit "40e6a167530e21968e3ce7b8cb74e7595cb6009a" + :revdesc "40e6a167530e") diff --git a/lisp/ledger-mode/ledger-mode.el b/lisp/ledger-mode/ledger-mode.el index a6dff02f..746b2a56 100644 --- a/lisp/ledger-mode/ledger-mode.el +++ b/lisp/ledger-mode/ledger-mode.el @@ -4,8 +4,8 @@ ;; This file is not part of GNU Emacs. -;; Package-Version: 20250821.1439 -;; Package-Revision: e9bb645e8f05 +;; Package-Version: 20251219.2350 +;; Package-Revision: 40e6a167530e ;; Package-Requires: ((emacs "26.1")) ;; This is free software; you can redistribute it and/or modify it under diff --git a/lisp/ledger-mode/ledger-reconcile.el b/lisp/ledger-mode/ledger-reconcile.el index 12dfc291..bcf7319f 100644 --- a/lisp/ledger-mode/ledger-reconcile.el +++ b/lisp/ledger-mode/ledger-reconcile.el @@ -92,7 +92,7 @@ Default is `ledger-default-date-format'." :type 'string :group 'ledger-reconcile) -(defcustom ledger-reconcile-target-prompt-string "Target amount for reconciliation " +(defcustom ledger-reconcile-target-prompt-string "Target amount for reconciliation" "Prompt for reconcile target." :type 'string :group 'ledger-reconcile) @@ -522,7 +522,6 @@ Return a count of the uncleared transactions." (delete-char -1)) ;gets rid of the extra line feed at the bottom of the list (goto-char (point-min)) (set-buffer-modified-p nil) - (setq buffer-read-only t) (length xacts))) @@ -617,21 +616,37 @@ reconciliation, otherwise prompt for TARGET." (ledger-reconcile-change-target target) (ledger-display-balance)))))) -(defvar ledger-reconcile-mode-abbrev-table) +(defvar ledger-reconcile-target-history nil + "Minibuffer history for `ledger-reconcile-change-target'") (defun ledger-reconcile-change-target (&optional target) "Change the TARGET amount for the reconciliation process." (interactive) - (setq ledger-reconcile-target (or target (ledger-read-commodity-string ledger-reconcile-target-prompt-string))) + (setq ledger-reconcile-target + (or target (ledger-read-commodity-string + ledger-reconcile-target-prompt-string + 'ledger-reconcile-target-history))) (ledger-display-balance)) -(defmacro ledger-reconcile-change-sort-key-and-refresh (sort-by) - "Set the sort-key to SORT-BY." - `(lambda () - (interactive) +(defun ledger-reconcile--change-sort-key-and-refresh (sort-key) + "Set the sort-key to SORT-KEY and refresh the buffer." + (setq ledger-reconcile-sort-key sort-key) + (ledger-reconcile-refresh)) - (setq ledger-reconcile-sort-key ,sort-by) - (ledger-reconcile-refresh))) +(defmacro ledger-reconcile--define-sort-command (name expr) + "Define a sorting command named ledger-reconcile-sort-by-NAME. + +The command will re-sort the reconcile buffer by EXPR." + (let ((command (intern (concat "ledger-reconcile-sort-by-" (symbol-name name))))) + `(defun ,command () + ,(concat "Sort reconcile buffer by " (symbol-name name) " and refresh.") + (interactive) + (ledger-reconcile--change-sort-key-and-refresh ,expr)))) + +(ledger-reconcile--define-sort-command file-order "(0)") +(ledger-reconcile--define-sort-command amount "(amount)") +(ledger-reconcile--define-sort-command date "(date)") +(ledger-reconcile--define-sort-command payee "(payee)") (defvar ledger-reconcile-mode-map (let ((map (make-sparse-keymap))) @@ -652,19 +667,16 @@ reconciliation, otherwise prompt for TARGET." (define-key map (kbd "b") #'ledger-display-balance) (define-key map (kbd "B") #'ledger-reconcile-display-balance-in-header-mode) - (define-key map (kbd "C-c C-o") (ledger-reconcile-change-sort-key-and-refresh "(0)")) - - (define-key map (kbd "C-c C-a") (ledger-reconcile-change-sort-key-and-refresh "(amount)")) - - (define-key map (kbd "C-c C-d") (ledger-reconcile-change-sort-key-and-refresh "(date)")) - - (define-key map (kbd "C-c C-p") (ledger-reconcile-change-sort-key-and-refresh "(payee)")) + (define-key map (kbd "C-c C-o") #'ledger-reconcile-sort-by-file-order) + (define-key map (kbd "C-c C-a") #'ledger-reconcile-sort-by-amount) + (define-key map (kbd "C-c C-d") #'ledger-reconcile-sort-by-date) + (define-key map (kbd "C-c C-p") #'ledger-reconcile-sort-by-payee) map) "Keymap for `ledger-reconcile-mode'.") (easy-menu-define ledger-reconcile-mode-menu ledger-reconcile-mode-map - "Ledger reconcile menu" - `("Reconcile" + "Ledger reconcile menu." + '("Reconcile" ["Save" ledger-reconcile-save] ["Refresh" ledger-reconcile-refresh] ["Finish" ledger-reconcile-finish] @@ -674,10 +686,10 @@ reconciliation, otherwise prompt for TARGET." ["Change Target Balance" ledger-reconcile-change-target] ["Show Cleared Balance" ledger-display-balance] "---" - ["Sort by payee" ,(ledger-reconcile-change-sort-key-and-refresh "(payee)")] - ["Sort by date" ,(ledger-reconcile-change-sort-key-and-refresh "(date)")] - ["Sort by amount" ,(ledger-reconcile-change-sort-key-and-refresh "(amount)")] - ["Sort by file order" ,(ledger-reconcile-change-sort-key-and-refresh "(0)")] + ["Sort by payee" ledger-reconcile-sort-by-payee] + ["Sort by date" ledger-reconcile-sort-by-date] + ["Sort by amount" ledger-reconcile-sort-by-amount] + ["Sort by file order" ledger-reconcile-sort-by-file-order] "---" ["Toggle Entry" ledger-reconcile-toggle] ["Add Entry" ledger-reconcile-add] @@ -687,10 +699,9 @@ reconciliation, otherwise prompt for TARGET." ["Visit Source" ledger-reconcile-visit] ["Previous Entry" previous-line] "---" - ["Quit" ledger-reconcile-quit] - )) + ["Quit" ledger-reconcile-quit])) -(define-derived-mode ledger-reconcile-mode text-mode "Reconcile" +(define-derived-mode ledger-reconcile-mode special-mode "Reconcile" "A mode for reconciling ledger entries.") (define-minor-mode ledger-reconcile-display-balance-in-header-mode diff --git a/lisp/ledger-mode/ledger-regex.el b/lisp/ledger-mode/ledger-regex.el index c390bf67..97bd5d2e 100644 --- a/lisp/ledger-mode/ledger-regex.el +++ b/lisp/ledger-mode/ledger-regex.el @@ -98,15 +98,15 @@ (let* ((regex (eval regex)) (group-count (regexp-opt-depth regex)) (defs - (list - `(defconst - ,(intern (concat "ledger-" (symbol-name name) "-regexp")) - ,regex - ,docs) - `(defconst - ,(intern (concat "ledger-regex-" (symbol-name name) - "-group--count")) - ,group-count))) + (list + `(defconst + ,(intern (concat "ledger-" (symbol-name name) "-regexp")) + ,regex + ,docs) + `(defconst + ,(intern (concat "ledger-regex-" (symbol-name name) + "-group--count")) + ,group-count))) (addend 0) last-group) (if (null args) (progn diff --git a/lisp/ledger-mode/ledger-report.el b/lisp/ledger-mode/ledger-report.el index 60c2f527..7726eb35 100644 --- a/lisp/ledger-mode/ledger-report.el +++ b/lisp/ledger-mode/ledger-report.el @@ -557,10 +557,10 @@ specific posting at point instead." (when (and file xact-position) (find-file-other-window file) (widen) - (if (markerp xact-position) - (goto-char xact-position) - (progn (goto-char (point-min)) - (forward-line (1- xact-position)))) + (if (markerp xact-position) + (goto-char xact-position) + (progn (goto-char (point-min)) + (forward-line (1- xact-position)))) (when ledger-report-links-beginning-of-xact (ledger-navigate-beginning-of-xact))))) diff --git a/lisp/magit-section/magit-section-pkg.el b/lisp/magit-section/magit-section-pkg.el index 235669ab..d23fa1fa 100644 --- a/lisp/magit-section/magit-section-pkg.el +++ b/lisp/magit-section/magit-section-pkg.el @@ -1,5 +1,5 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "magit-section" "20251108.1923" +(define-package "magit-section" "20251220.917" "Sections for read-only buffers." '((emacs "28.1") (compat "30.1") @@ -7,8 +7,8 @@ (llama "1.0") (seq "2.24")) :url "https://github.com/magit/magit" - :commit "2d8f43e68125d9f7cf97ba182a5d266fe1a52c67" - :revdesc "2d8f43e68125" + :commit "649b4c972151c0ee495876c0d4c8c13787614886" + :revdesc "649b4c972151" :keywords '("tools") :authors '(("Jonas Bernoulli" . "emacs.magit@jonas.bernoulli.dev")) :maintainers '(("Jonas Bernoulli" . "emacs.magit@jonas.bernoulli.dev"))) diff --git a/lisp/magit-section/magit-section.el b/lisp/magit-section/magit-section.el index c299fcfd..48fae5f2 100644 --- a/lisp/magit-section/magit-section.el +++ b/lisp/magit-section/magit-section.el @@ -8,8 +8,8 @@ ;; Homepage: https://github.com/magit/magit ;; Keywords: tools -;; Package-Version: 20251108.1923 -;; Package-Revision: 2d8f43e68125 +;; Package-Version: 20251220.917 +;; Package-Revision: 649b4c972151 ;; Package-Requires: ( ;; (emacs "28.1") ;; (compat "30.1") @@ -105,8 +105,8 @@ similar defect.") (define-obsolete-variable-alias 'magit-keep-region-overlay 'magit-section-keep-region-overlay "Magit-Section 4.0.0") -(define-obsolete-variable-alias 'magit-section-visibility-indicator - 'magit-section-visibility-indicators "Magit-Section 4.4.3") +(make-obsolete-variable 'magit-section-visibility-indicator + 'magit-section-visibility-indicators "Magit-Section 4.5.0") ;;; Hooks @@ -392,7 +392,7 @@ but that ship has sailed, thus this option." "Face used for the left margin. Currently this is only used for section visibility indicators, and only -when `magit-section-visibility-indicator' is configured to show them in +when `magit-section-visibility-indicators' is configured to show them in the margin. Due to limitations of how the margin works in Emacs, this is only used @@ -1991,10 +1991,9 @@ When `magit-section-preserve-visibility' is nil, return nil." (cl-defun magit-section-cache-visibility (&optional (section magit-insert-section--current)) "Cache SECTION's current visibility." - (setf (compat-call alist-get - (magit-section-ident section) - magit-section-visibility-cache - nil nil #'equal) + (setf (alist-get (magit-section-ident section) + magit-section-visibility-cache + nil nil #'equal) (if (oref section hidden) 'hide 'show))) (cl-defun magit-section-maybe-cache-visibility diff --git a/lisp/magit/AUTHORS.md b/lisp/magit/AUTHORS.md index 879ffc2b..e1673d29 100644 --- a/lisp/magit/AUTHORS.md +++ b/lisp/magit/AUTHORS.md @@ -169,6 +169,7 @@ All Contributors - Hannu Koivisto - Hans-Peter Deifel - hokomo +- Huon Wilson - Hussein Ait-Lahcen - Ian Eure - Ian Milligan diff --git a/lisp/magit/git-commit.el b/lisp/magit/git-commit.el index 915f4229..82c4dee0 100644 --- a/lisp/magit/git-commit.el +++ b/lisp/magit/git-commit.el @@ -216,36 +216,6 @@ Also note that `git-commit-mode' (which see) is not a major-mode.") git-commit-propertize-diff bug-reference-mode)) -(defcustom git-commit-post-finish-hook nil - "Hook run after the user finished writing a commit message. - -\\\ -This hook is only run after pressing \\[with-editor-finish] in a buffer used -to edit a commit message. If a commit is created without the -user typing a message into a buffer, then this hook is not run. - -This hook is not run until the new commit has been created. If -that takes Git longer than `git-commit-post-finish-hook-timeout' -seconds, then this hook isn't run at all. For certain commands -such as `magit-rebase-continue' this hook is never run because -doing so would lead to a race condition. - -Also see `magit-post-commit-hook'." - :group 'git-commit - :type 'hook - :get #'magit-hook-custom-get) - -(defcustom git-commit-post-finish-hook-timeout 2 - "Time in seconds to wait for git to create a commit. - -The hook `git-commit-post-finish-hook' (which see) is run only -after git is done creating a commit. If it takes longer than -`git-commit-post-finish-hook-timeout' seconds to create the -commit, then the hook is not run at all." - :group 'git-commit - :safe 'numberp - :type 'number) - (defcustom git-commit-finish-query-functions (list #'git-commit-check-style-conventions) "List of functions called to query before performing commit. @@ -586,17 +556,7 @@ Used as the local value of `header-line-format', in buffer using (when (fboundp 'magit-commit--reset-command) (add-hook 'with-editor-post-finish-hook #'magit-commit--reset-command) (add-hook 'with-editor-post-cancel-hook #'magit-commit--reset-command)) - (unless (memq last-command - '(magit-sequencer-continue - magit-sequencer-skip - magit-am-continue - magit-am-skip - magit-rebase-continue - magit-rebase-skip)) - (add-hook 'with-editor-post-finish-hook - (apply-partially #'git-commit-run-post-finish-hook - (magit-rev-parse "HEAD")) - nil t)) + (git-commit-add-post-finish-hook) (setq with-editor-cancel-message #'git-commit-cancel-message) (git-commit-setup-font-lock) @@ -615,17 +575,6 @@ Used as the local value of `header-line-format', in buffer using (setq with-editor-usage-message git-commit-usage-message)) (with-editor-usage-message)) -(defun git-commit-run-post-finish-hook (previous) - (when git-commit-post-finish-hook - (if (with-timeout (git-commit-post-finish-hook-timeout) - (while (equal (magit-rev-parse "HEAD") previous) - (sit-for 0.01)) - t) - (run-hooks 'git-commit-post-finish-hook) - (message "No commit created after %s second. Not running %s." - git-commit-post-finish-hook-timeout - 'git-commit-post-finish-hook)))) - (define-minor-mode git-commit-mode "Auxiliary minor mode used when editing Git commit messages. This mode is only responsible for setting up some key bindings. @@ -1201,6 +1150,62 @@ Elisp doc-strings, including this one. Unlike in doc-strings, (1 font-lock-constant-face prepend)) ("\"[^\"]*\"" (0 font-lock-string-face prepend)))) +;;; Post Hook + +(defcustom git-commit-post-finish-hook nil + "Hook run after the user finished writing a commit message. + +\\\ +This hook is only run after pressing \\[with-editor-finish] in a buffer used +to edit a commit message. If a commit is created without the +user typing a message into a buffer, then this hook is not run. + +This hook is not run until the new commit has been created. If +that takes Git longer than `git-commit-post-finish-hook-timeout' +seconds, then this hook isn't run at all. For certain commands +such as `magit-rebase-continue' this hook is never run because +doing so would lead to a race condition. + +Also see `magit-post-commit-hook'." + :group 'git-commit + :type 'hook + :get #'magit-hook-custom-get) + +(defcustom git-commit-post-finish-hook-timeout 2 + "Time in seconds to wait for git to create a commit. + +The hook `git-commit-post-finish-hook' (which see) is run only +after git is done creating a commit. If it takes longer than +`git-commit-post-finish-hook-timeout' seconds to create the +commit, then the hook is not run at all." + :group 'git-commit + :safe 'numberp + :type 'number) + +(defun git-commit-add-post-finish-hook () + (unless (memq last-command + '(magit-sequencer-continue + magit-sequencer-skip + magit-am-continue + magit-am-skip + magit-rebase-continue + magit-rebase-skip)) + (add-hook 'with-editor-post-finish-hook + (apply-partially #'git-commit-run-post-finish-hook + (magit-rev-parse "HEAD")) + nil t))) + +(defun git-commit-run-post-finish-hook (previous) + (when git-commit-post-finish-hook + (if (with-timeout (git-commit-post-finish-hook-timeout) + (while (equal (magit-rev-parse "HEAD") previous) + (sit-for 0.01)) + t) + (run-hooks 'git-commit-post-finish-hook) + (message "No commit created after %s second. Not running %s." + git-commit-post-finish-hook-timeout + 'git-commit-post-finish-hook)))) + ;;; _ (define-obsolete-function-alias diff --git a/lisp/magit/git-hooks/applypatch-msg b/lisp/magit/git-hooks/applypatch-msg new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/applypatch-msg @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/commit-msg b/lisp/magit/git-hooks/commit-msg new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/commit-msg @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/fallthrough b/lisp/magit/git-hooks/fallthrough new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/fallthrough @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/fsmonitor-watchman b/lisp/magit/git-hooks/fsmonitor-watchman new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/fsmonitor-watchman @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/p4-changelist b/lisp/magit/git-hooks/p4-changelist new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/p4-changelist @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/p4-post-changelist b/lisp/magit/git-hooks/p4-post-changelist new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/p4-post-changelist @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/p4-pre-submit b/lisp/magit/git-hooks/p4-pre-submit new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/p4-pre-submit @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/p4-prepare-changelist b/lisp/magit/git-hooks/p4-prepare-changelist new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/p4-prepare-changelist @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/post-applypatch b/lisp/magit/git-hooks/post-applypatch new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/post-applypatch @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/post-checkout b/lisp/magit/git-hooks/post-checkout new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/post-checkout @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/post-commit b/lisp/magit/git-hooks/post-commit new file mode 100755 index 00000000..79b9aa0e --- /dev/null +++ b/lisp/magit/git-hooks/post-commit @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +if [[ "$INSIDE_EMACS" == *magit ]] +then + for arg in "$@"; do args+="\"$arg\""; done + $GIT_EDITOR --eval \ + "(magit-run-git-hook '(common-post-commit post-commit) ${args[@]})" +fi + +if [[ -x "$SHADOWED_GITHOOK_DIRECTORY" ]] +then + "$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" "$@" +fi diff --git a/lisp/magit/git-hooks/post-index-change b/lisp/magit/git-hooks/post-index-change new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/post-index-change @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/post-merge b/lisp/magit/git-hooks/post-merge new file mode 100755 index 00000000..5716dee0 --- /dev/null +++ b/lisp/magit/git-hooks/post-merge @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +if [[ "$INSIDE_EMACS" == *magit ]] +then + for arg in "$@"; do args+="\"$arg\""; done + $GIT_EDITOR --eval \ + "(magit-run-git-hook '(common-post-commit post-merge) ${args[@]})" +fi + +if [[ -x "$SHADOWED_GITHOOK_DIRECTORY" ]] +then + "$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" "$@" +fi diff --git a/lisp/magit/git-hooks/post-receive b/lisp/magit/git-hooks/post-receive new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/post-receive @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/post-rewrite b/lisp/magit/git-hooks/post-rewrite new file mode 100755 index 00000000..128ddaaa --- /dev/null +++ b/lisp/magit/git-hooks/post-rewrite @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +if [[ "$INSIDE_EMACS" == *magit ]] +then + for arg in "$@"; do args+="\"$arg\""; done + $GIT_EDITOR --eval \ + "(magit-run-git-hook '(common-post-commit post-rewrite) ${args[@]})" +fi + +if [[ -x "$SHADOWED_GITHOOK_DIRECTORY" ]] +then + "$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" "$@" +fi diff --git a/lisp/magit/git-hooks/post-update b/lisp/magit/git-hooks/post-update new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/post-update @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/pre-applypatch b/lisp/magit/git-hooks/pre-applypatch new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/pre-applypatch @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/pre-auto-gc b/lisp/magit/git-hooks/pre-auto-gc new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/pre-auto-gc @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/pre-commit b/lisp/magit/git-hooks/pre-commit new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/pre-commit @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/pre-merge-commit b/lisp/magit/git-hooks/pre-merge-commit new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/pre-merge-commit @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/pre-push b/lisp/magit/git-hooks/pre-push new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/pre-push @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/pre-rebase b/lisp/magit/git-hooks/pre-rebase new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/pre-rebase @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/pre-receive b/lisp/magit/git-hooks/pre-receive new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/pre-receive @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/prepare-commit-msg b/lisp/magit/git-hooks/prepare-commit-msg new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/prepare-commit-msg @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/proc-receive b/lisp/magit/git-hooks/proc-receive new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/proc-receive @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/push-to-checkout b/lisp/magit/git-hooks/push-to-checkout new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/push-to-checkout @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/reference-transaction b/lisp/magit/git-hooks/reference-transaction new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/reference-transaction @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/sendemail-validate b/lisp/magit/git-hooks/sendemail-validate new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/sendemail-validate @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/git-hooks/update b/lisp/magit/git-hooks/update new file mode 100755 index 00000000..51928e7f --- /dev/null +++ b/lisp/magit/git-hooks/update @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +hook="$SHADOWED_GITHOOK_DIRECTORY/$(basename $0)" + +if [[ -x "$hook" ]] +then + "$hook" "$@" +fi diff --git a/lisp/magit/magit-autorevert.el b/lisp/magit/magit-autorevert.el index 95b47fff..3b0c465a 100644 --- a/lisp/magit/magit-autorevert.el +++ b/lisp/magit/magit-autorevert.el @@ -29,10 +29,12 @@ ;;; Code: -(require 'magit-process) - (require 'autorevert) +(declare-function magit-file-tracked-p "magit-git" (file)) +(declare-function magit-toplevel "magit-git" (&optional directory)) +(declare-function magit-git-executable "magit-git" ()) + ;;; Options (defgroup magit-auto-revert nil @@ -105,43 +107,50 @@ seconds of user inactivity. That is not desirable." ;;; Mode ;;;###autoload -(progn ; magit-custom-initialize-after-init - (defun magit-custom-initialize-after-init (symbol value) - ;; Use `apply-partially' instead of the wonders of lexical bindings, - ;; because of bugs in the autoload handling of package managers, which - ;; cause these variables to be treated as dynamic. See #5476 and #5485. +(progn ; magit-auto-revert-mode--initialize + (defun magit-auto-revert-mode--initialize (symbol value) (internal--define-uninitialized-variable symbol) - (cond ((not after-init-time) - (letrec ((f (apply-partially - (lambda (symbol value) - (ignore-errors - (remove-hook 'after-init-hook f)) - (custom-initialize-set symbol value)) - symbol value))) - (add-hook 'after-init-hook f))) - ((not load-file-name) - (custom-initialize-set symbol value)) - ((letrec ((f (apply-partially - (lambda (thisfile symbol value file) - (when (equal file thisfile) - (ignore-errors - (remove-hook 'after-load-functions f)) - (custom-initialize-set symbol value))) - load-file-name symbol value))) - (add-hook 'after-load-functions f)))))) + (if (not load-file-name) + (custom-initialize-set symbol value) + ;; Bugs in package managers prevent the use of lexical + ;; bindings in autoloaded code. See #5476 and #5485. + (defalias 'magit-auto-revert-mode--after-load + (apply-partially + (lambda (symbol value mode-file file) + (when (equal file mode-file) + (remove-hook 'after-load-functions + 'magit-auto-revert-mode--after-load) + (fmakunbound 'magit-auto-revert-mode--after-load) + (if after-init-time + (custom-initialize-set symbol value) + ;; Delay activation in case the user disables the mode + ;; after loading this library but still during startup. + (defalias 'magit-auto-revert-mode--after-init + (apply-partially + (lambda (symbol value) + (remove-hook 'after-init-hook + 'magit-auto-revert-mode--after-init) + (fmakunbound 'magit-auto-revert-mode--after-init) + (custom-initialize-set symbol value)) + symbol value)) + (add-hook 'after-init-hook 'magit-auto-revert-mode--after-init)))) + symbol value load-file-name)) + (add-hook 'after-load-functions 'magit-auto-revert-mode--after-load)))) (defun magit-turn-on-auto-revert-mode-if-desired (&optional file) (cond (file - (when-let ((buffer (find-buffer-visiting file))) - (with-current-buffer buffer - (magit-turn-on-auto-revert-mode-if-desired)))) + (let ((buffer (find-buffer-visiting file))) + (when buffer + (with-current-buffer buffer + (magit-turn-on-auto-revert-mode-if-desired))))) ((and (not auto-revert-mode) ; see #3014 (not global-auto-revert-mode) ; see #3460 buffer-file-name (or auto-revert-remote-files ; see #5422 (not (file-remote-p buffer-file-name))) (file-readable-p buffer-file-name) - (compat-call executable-find (magit-git-executable) t) + (require 'magit-process) + (executable-find (magit-git-executable) t) (magit-toplevel) (or (not magit-auto-revert-tracked-only) (magit-file-tracked-p buffer-file-name))) @@ -155,7 +164,7 @@ seconds of user inactivity. That is not desirable." :group 'magit-auto-revert :group 'magit-essentials :init-value (not (or global-auto-revert-mode noninteractive)) - :initialize #'magit-custom-initialize-after-init) + :initialize #'magit-auto-revert-mode--initialize) (defun magit-auto-revert-mode--disable () "When enabling `global-auto-revert-mode', disable `magit-auto-revert-mode'." @@ -236,6 +245,7 @@ defaults to nil) for any BUFFER." (unless (and magit-auto-revert-toplevel (= (cdr magit-auto-revert-toplevel) magit-auto-revert-counter)) + (require 'magit-process) (setq magit-auto-revert-toplevel (cons (or (magit-toplevel) 'no-repo) magit-auto-revert-counter))) @@ -263,15 +273,5 @@ defaults to nil) for any BUFFER." ;;; _ (provide 'magit-autorevert) -;; Local Variables: -;; read-symbol-shorthands: ( -;; ("and$" . "cond-let--and$") -;; ("and>" . "cond-let--and>") -;; ("and-let" . "cond-let--and-let") -;; ("if-let" . "cond-let--if-let") -;; ("when-let" . "cond-let--when-let") -;; ("while-let" . "cond-let--while-let") -;; ("match-string" . "match-string") -;; ("match-str" . "match-string-no-properties")) -;; End: +;; `cond-let' intentionally not used. ;;; magit-autorevert.el ends here diff --git a/lisp/magit/magit-commit.el b/lisp/magit/magit-commit.el index 4e4771c5..53e845d7 100644 --- a/lisp/magit/magit-commit.el +++ b/lisp/magit/magit-commit.el @@ -71,20 +71,6 @@ an error while using those is harder to recover from." :group 'magit-commands :type 'boolean) -(defcustom magit-post-commit-hook nil - "Hook run after creating a commit without the user editing a message. - -This hook is run by `magit-refresh' if `this-command' is a member -of `magit-post-commit-hook-commands'. This only includes commands -named `magit-commit-*' that do *not* require that the user edits -the commit message in a buffer and then finishes by pressing -\\\\[with-editor-finish]. - -Also see `git-commit-post-finish-hook'." - :package-version '(magit . "2.90.0") - :group 'magit-commands - :type 'hook) - (defcustom magit-commit-diff-inhibit-same-window nil "Whether to inhibit use of same window when showing diff while committing. @@ -113,6 +99,44 @@ Also see https://github.com/magit/magit/issues/4132." :group 'magit-commands :type 'boolean) +(defvar magit-common-git-post-commit-functions nil + "Hook run by Git hooks `post-commit', `post-merge' and `post-rewrite'. + +This hook is run if `magit-overriding-githook-directory' is non-nil. +The functions are called with the same arguments as the Git hook. + +This hook is still experimental.") + +(defvar magit-git-post-commit-functions nil + "Hook run by Git hook `post-commit'. + +This hook is run if `magit-overriding-githook-directory' is non-nil. +The functions are called with the same arguments as the Git hook. + +See also `magit-common-git-post-commit-functions'. + +This hook is still experimental.") + +(defvar magit-git-post-merge-functions nil + "Hook run by Git hook `post-merge'. + +This hook is run if `magit-overriding-githook-directory' is non-nil. +The functions are called with the same arguments as the Git hook. + +See also `magit-common-git-post-commit-functions'. + +This hook is still experimental.") + +(defvar magit-git-post-rewrite-functions nil + "Hook run by Git hook `post-rewrite'. + +This hook is run if `magit-overriding-githook-directory' is non-nil. +The functions are called with the same arguments as the Git hook. + +See also `magit-common-git-post-commit-functions'. + +This hook is still experimental.") + ;;; Popup ;;;###autoload(autoload 'magit-commit "magit-commit" nil t) @@ -637,21 +661,6 @@ an alternative implementation." :argument "--strict=" :reader #'transient-read-number-N0) -;;;; Hooks - -(defvar magit-post-commit-hook-commands - (list #'magit-commit-extend - #'magit-commit-fixup - #'magit-commit-augment - #'magit-commit-instant-fixup - #'magit-commit-instant-squash)) - -;;;###autoload -(defun magit-run-post-commit-hook () - (when (and (not this-command) - (memq last-command magit-post-commit-hook-commands)) - (run-hooks 'magit-post-commit-hook))) - ;;; Pending Diff (defun magit-commit-diff () @@ -812,6 +821,35 @@ actually insert the entry." (insert (format "(%s): \n" defun)) (backward-char))))))) +;;; Post Hook + +(defcustom magit-post-commit-hook nil + "Hook run after creating a commit without the user editing a message. + +This hook is run by `magit-refresh' if `this-command' is a member +of `magit-post-commit-hook-commands'. This only includes commands +named `magit-commit-*' that do *not* require that the user edits +the commit message in a buffer and then finishes by pressing +\\\\[with-editor-finish]. + +Also see `git-commit-post-finish-hook'." + :package-version '(magit . "2.90.0") + :group 'magit-commands + :type 'hook) + +(defvar magit-post-commit-hook-commands + (list #'magit-commit-extend + #'magit-commit-fixup + #'magit-commit-augment + #'magit-commit-instant-fixup + #'magit-commit-instant-squash)) + +;;;###autoload +(defun magit-run-post-commit-hook () + (when (and (not this-command) + (memq last-command magit-post-commit-hook-commands)) + (run-hooks 'magit-post-commit-hook))) + ;;; _ (provide 'magit-commit) ;; Local Variables: diff --git a/lisp/magit/magit-diff.el b/lisp/magit/magit-diff.el index 1f57cec5..3b6ff333 100644 --- a/lisp/magit/magit-diff.el +++ b/lisp/magit/magit-diff.el @@ -89,7 +89,7 @@ (declare-function magit-smerge-keep-base "magit-apply" ()) (declare-function magit-smerge-keep-lower "magit-apply" ()) -(eval-and-compile +(eval-and-compile ;declare slot names (cl-pushnew 'orig-rev eieio--known-slot-names) (cl-pushnew 'action-type eieio--known-slot-names) (cl-pushnew 'target eieio--known-slot-names)) @@ -1794,19 +1794,19 @@ the Magit-Status buffer for DIRECTORY." (list new-rev new-file)))) (defun magit-diff-visit--position (buffer rev file goto-from goto-file) - (and-let ((hunk (magit-diff--hunk-section))) - (let ((line (magit-diff-hunk-line hunk goto-from)) - (column (magit-diff-hunk-column hunk goto-from))) - (with-current-buffer buffer - (when (and goto-file (not (equal rev "{worktree}"))) - (setq line (magit-diff-visit--offset - file (if (equal rev "{index}") nil rev) line))) - (save-restriction - (widen) - (goto-char (point-min)) - (forward-line (1- line)) - (move-to-column column) - (point)))))) + (and-let* ((hunk (magit-diff--hunk-section)) + (line (magit-diff-hunk-line hunk goto-from)) + (column (magit-diff-hunk-column hunk goto-from))) + (with-current-buffer buffer + (when (and goto-file (not (equal rev "{worktree}"))) + (setq line (magit-diff-visit--offset + file (if (equal rev "{index}") nil rev) line))) + (save-restriction + (widen) + (goto-char (point-min)) + (forward-line (1- line)) + (move-to-column column) + (point))))) (defun magit-diff-hunk-line (section goto-from) (save-excursion diff --git a/lisp/magit/magit-git.el b/lisp/magit/magit-git.el index fb1ecf0d..99fea61c 100644 --- a/lisp/magit/magit-git.el +++ b/lisp/magit/magit-git.el @@ -29,6 +29,7 @@ (require 'magit-base) (require 'format-spec) +(require 'server) ;; From `magit-branch'. (defvar magit-branch-prefer-remote-upstream) @@ -67,7 +68,7 @@ ;; From `magit-status'. (defvar magit-status-show-untracked-files) -(eval-and-compile +(eval-and-compile ;declare slot names (cl-pushnew 'orig-rev eieio--known-slot-names) (cl-pushnew 'number eieio--known-slot-names)) @@ -94,6 +95,13 @@ this." :type '(choice (coding-system :tag "Coding system to decode Git output") (const :tag "Use system default" nil))) +(defun magit--early-process-lines (program &rest args) + "Only used to initialize custom options." + (let ((process-environment + (append magit-git-environment process-environment))) + (ignore-error file-missing + (apply #'process-lines-ignore-status program args)))) + (defvar magit-git-w32-path-hack nil "Alist of (EXE . (PATHENTRY)). This specifies what additional PATH setting needs to be added to @@ -105,31 +113,29 @@ successfully.") ;; Avoid the wrappers "cmd/git.exe" and "cmd/git.cmd", ;; which are much slower than using "bin/git.exe" directly. (and-let ((exec (executable-find "git"))) - (ignore-errors - ;; Git for Windows 2.x provides cygpath so we can - ;; ask it for native paths. - (let* ((core-exe - (car - (process-lines - exec "-c" - "alias.X=!x() { which \"$1\" | cygpath -mf -; }; x" - "X" "git"))) - (hack-entry (assoc core-exe magit-git-w32-path-hack)) - ;; Running the libexec/git-core executable - ;; requires some extra PATH entries. - (path-hack - (list (concat "PATH=" - (car (process-lines - exec "-c" - "alias.P=!cygpath -wp \"$PATH\"" - "P")))))) - ;; The defcustom STANDARD expression can be - ;; evaluated many times, so make sure it is - ;; idempotent. - (if hack-entry - (setcdr hack-entry path-hack) - (push (cons core-exe path-hack) magit-git-w32-path-hack)) - core-exe)))) + ;; Git for Windows 2.x provides cygpath so we can + ;; ask it for native paths. + (let* ((core-exe + (car (magit--early-process-lines + exec "-c" + "alias.X=!x() { which \"$1\" | cygpath -mf -; }; x" + "X" "git"))) + (hack-entry (assoc core-exe magit-git-w32-path-hack)) + ;; Running the libexec/git-core executable + ;; requires some extra PATH entries. + (path-hack + (list (concat "PATH=" + (car (magit--early-process-lines + exec "-c" + "alias.P=!cygpath -wp \"$PATH\"" + "P")))))) + ;; The defcustom STANDARD expression can be + ;; evaluated many times, so make sure it is + ;; idempotent. + (if hack-entry + (setcdr hack-entry path-hack) + (push (cons core-exe path-hack) magit-git-w32-path-hack)) + core-exe))) (and (eq system-type 'darwin) (executable-find "git")) "git") @@ -148,9 +154,52 @@ option." :group 'magit-process :type 'string) +(defvar magit--overriding-githook-directory nil) + +(defcustom magit-overriding-githook-directory nil + "Directory containing the Git hook scripts used by Magit. + +No Magit-specific Git hook scripts are used if this is nil, which it +is the default. This feature is still experimental. + +Git does not allow overriding just an individual hook. It is only +possible to point Git at an alternative directory containing hook +scripts, using the Git variable `core.hooksPath'. When doing that, +the hooks located in `$GIT_DIR/hooks' are ignored. + +If `magit', use the directory containing Git hook scripts distributed +with Magit. To counteract Git's limited granularity, Magit provides a +script for every Git hook, most of which only run the respective script +located in `$GIT_DIR/hooks', provided it exists and is executable. + +A few Git hooks additionally run Lisp hooks: + +- `post-commit' runs `magit-git-post-commit-functions' +- `post-merge' runs `magit-git-post-merge-functions' +- `post-rewrite' runs `magit-git-post-rewrite-functions' + +All of these hooks also run `magit-common-git-post-rewrite-functions'. +For many uses this hook variable is more useful than the three above. + +If you want to teach additional Git hooks to run Lisp hooks, you have to +copy Magit's hook script directory elsewhere, modify the hook scripts in +question, and point this variable at the used directory. + +Magit only sets `core.hooksPath' when calling Git asynchronously. Doing +the same when calling Git synchronously would cause Git and Magit to wait +on one another." + :package-version '(magit . "4.5.0") + :group 'magit-process + :set (lambda (symbol value) + (set-default-toplevel-value symbol value) + (setq magit--overriding-githook-directory nil)) + :type '(choice (const :tag "Do not shadow Git's hook directory" nil) + (const :tag "Use Magit's hook directory" magit) + (directory :tag "Custom directory"))) + (defcustom magit-git-global-arguments `("--no-pager" "--literal-pathspecs" - "-c" "core.preloadindex=true" + "-c" "core.preloadIndex=true" "-c" "log.showSignature=false" "-c" "color.ui=false" "-c" "color.diff=false" @@ -331,7 +380,11 @@ is remote." magit-remote-git-executable magit-git-executable)) -(defun magit-process-git-arguments (args) +(defun magit-process-git-arguments--length () + (+ (length magit-git-global-arguments) + (if magit--overriding-githook-directory 2 0))) + +(defun magit-process-git-arguments (args &optional async) "Prepare ARGS for a function that invokes Git. Magit has many specialized functions for running Git; they all @@ -339,9 +392,27 @@ pass arguments through this function before handing them to Git, to do the following. * Prepend `magit-git-global-arguments' to ARGS. +* If ASYNC is non-nil and `magit-overriding-githook-directory' is non-nil + and valid, set `core.hooksPath' by adding additional aguments to ARGS. * Flatten ARGS, removing nil arguments. * If `system-type' is `windows-nt', encode ARGS to `w32-ansi-code-page'." - (setq args (append magit-git-global-arguments (flatten-tree args))) + (cond ((not async)) + (magit--overriding-githook-directory) + ((eq magit-overriding-githook-directory 'magit) + (setq magit--overriding-githook-directory + (expand-file-name "git-hooks" + (locate-dominating-file + (locate-library "magit.el") "git-hooks")))) + ((and magit-overriding-githook-directory + (file-directory-p magit-overriding-githook-directory)) + (setq magit--overriding-githook-directory + magit-overriding-githook-directory))) + (setq args + (append magit-git-global-arguments + (and magit--overriding-githook-directory + (list "-c" (format "core.hooksPath=%s" + magit--overriding-githook-directory))) + (flatten-tree args))) (if (and (eq system-type 'windows-nt) (boundp 'w32-ansi-code-page)) ;; On w32, the process arguments *must* be encoded in the ;; current code-page (see #3250). @@ -606,7 +677,7 @@ executable." (error "`git --exec-path' failed")))) exec-suffixes #'file-executable-p) - (compat-call executable-find command t))) + (executable-find command t))) ;;; Git Version @@ -953,7 +1024,7 @@ returning the truename." "(see https://magit.vc/goto/e6a78ed2)")) (defun magit--assert-usable-git () - (if (not (compat-call executable-find (magit-git-executable) t)) + (if (not (executable-find (magit-git-executable) t)) (signal 'magit-git-executable-not-found (magit-git-executable)) (let ((magit-git-debug (lambda (err) @@ -1208,14 +1279,11 @@ or if no rename is detected." "Failed to parse Cygwin mount: %S" mount))) ;; If --exec-path is not a native Windows path, ;; then we probably have a cygwin git. - (let ((process-environment - (append magit-git-environment - process-environment))) - (and (not (string-match-p - "\\`[a-zA-Z]:" - (car (process-lines - magit-git-executable "--exec-path")))) - (ignore-errors (process-lines "mount"))))) + (and (not (string-match-p + "\\`[a-zA-Z]:" + (car (magit--early-process-lines + magit-git-executable "--exec-path")))) + (magit--early-process-lines "mount"))) #'> :key (pcase-lambda (`(,cyg . ,_win)) (length cyg)))) "Alist of (CYGWIN . WIN32) directory names. Sorted from longest to shortest CYGWIN name." @@ -2896,6 +2964,34 @@ out. Only existing branches can be selected." (magit-confirm t nil (format "%s %%d modules" verb) nil modules) (list (magit-read-module-path (format "%s module" verb) predicate))))) +;;; Git Hooks + +(defun magit-run-git-hook (githook &rest args) + (dolist (githook (ensure-list githook)) + (let* ((githook (symbol-name githook)) + (hook (save-match-data + (if (string-match "\\`common-" githook) + (intern (format "magit-common-git-%s-functions" + (substring githook (match-end 0)))) + (intern (format "magit-git-%s-functions" githook)))))) + (when (and (boundp hook) + (symbol-value hook)) + (magit--client-message "Running %s..." hook) + (apply #'run-hook-with-args hook args) + (magit--client-message "Running %s...done" hook)))) + ;; Emacsclient prints the returned value to stdout. We cannot prevent + ;; that, but we can use something that looks like we actually *wanted* + ;; to print (which we don't). + '---) + +(defun magit--client-message (format-string &rest args) + ;; See `server-process-filter'. + (let ((msg (format "-print %s\n" + (server-quote-arg + (apply #'format-message format-string args))))) + (dolist (client server-clients) + (server-send-string client msg)))) + ;;; _ (provide 'magit-git) ;; Local Variables: diff --git a/lisp/magit/magit-log.el b/lisp/magit/magit-log.el index c6bcdd93..c2345d26 100644 --- a/lisp/magit/magit-log.el +++ b/lisp/magit/magit-log.el @@ -535,7 +535,7 @@ commits before and half after." ("r" "current" magit-reflog-current) ("O" "other" magit-reflog-other) ("H" "HEAD" magit-reflog-head)] - [:if-mode magit-wip-mode + [:if-non-nil magit-wip-mode :description "Wiplog" ("i" "index" magit-wip-log-index) ("w" "worktree" magit-wip-log-worktree)] diff --git a/lisp/magit/magit-mode.el b/lisp/magit/magit-mode.el index cb0b0bcd..661fa4be 100644 --- a/lisp/magit/magit-mode.el +++ b/lisp/magit/magit-mode.el @@ -1509,10 +1509,10 @@ repositories." (cond-let ((eq repository 'all) (dolist (cache magit-repository-local-cache) - (setf cache (compat-call assoc-delete-all key cache)))) + (setf cache (assoc-delete-all key cache)))) ([cache (assoc (or repository (magit-repository-local-repository)) magit-repository-local-cache)] - (setf cache (compat-call assoc-delete-all key cache))))) + (setf cache (assoc-delete-all key cache))))) (defmacro magit--with-repository-local-cache (key &rest body) (declare (indent 1) (debug (form body))) diff --git a/lisp/magit/magit-pkg.el b/lisp/magit/magit-pkg.el index 9f5ecf63..0995cf36 100644 --- a/lisp/magit/magit-pkg.el +++ b/lisp/magit/magit-pkg.el @@ -1,5 +1,5 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "magit" "20251125.101" +(define-package "magit" "20251217.1836" "A Git porcelain inside Emacs." '((emacs "28.1") (compat "30.1") @@ -10,8 +10,8 @@ (transient "0.10") (with-editor "3.4")) :url "https://github.com/magit/magit" - :commit "ced3d5afc33d06305f04dd1557bf2fe849914511" - :revdesc "ced3d5afc33d" + :commit "655bc502a3bdd7f07928524515a736e4b8101eaf" + :revdesc "655bc502a3bd" :keywords '("git" "tools" "vc") :authors '(("Marius Vollmer" . "marius.vollmer@gmail.com") ("Jonas Bernoulli" . "emacs.magit@jonas.bernoulli.dev")) diff --git a/lisp/magit/magit-process.el b/lisp/magit/magit-process.el index 7d4cc829..b47237ee 100644 --- a/lisp/magit/magit-process.el +++ b/lisp/magit/magit-process.el @@ -119,13 +119,8 @@ displays the text of `magit-process-error-summary' instead." "\\`\\(?:\\(?:/.*/\\)?git-credential-\\)?cache\\'" prog) (or (cadr (member "--socket" args)) (expand-file-name "~/.git-credential-cache/socket"))))) - ;; Note: `magit-process-file' is not yet defined when - ;; evaluating this form, so we use `process-lines'. - (ignore-errors - (let ((process-environment - (append magit-git-environment process-environment))) - (process-lines magit-git-executable - "config" "--get-all" "credential.helper")))) + (magit--early-process-lines + magit-git-executable "config" "--get-all" "credential.helper")) "If non-nil, start a credential cache daemon using this socket. When using Git's cache credential helper in the normal way, Emacs @@ -529,12 +524,26 @@ eol conversion." (default-process-coding-system (magit--process-coding-system))) (apply #'process-file process infile buffer display args))) +(defvar magit--shadowed-githook-directory nil) + +(defun magit--shadowed-githook-directory () + (or magit--shadowed-githook-directory + (setq magit--shadowed-githook-directory + (let ((magit-git-global-arguments nil)) + (cl-letf (((symbol-function 'magit-process-environment) + (lambda () process-environment))) + (or (magit-get "core.hooksPath") + (expand-file-name "hooks" (magit-gitdir)))))))) + (defun magit-process-environment () ;; The various w32 hacks are only applicable when running on the local ;; machine. A local binding of process-environment different from the ;; top-level value affects the environment used by Tramp. (let ((local (not (file-remote-p default-directory)))) (append magit-git-environment + (and magit-overriding-githook-directory + (list (concat "SHADOWED_GITHOOK_DIRECTORY=" + (magit--shadowed-githook-directory)))) (and local (cdr (assoc magit-git-executable magit-git-w32-path-hack))) (and local magit-need-cygwin-noglob @@ -574,7 +583,7 @@ flattened before use." (run-hooks 'magit-pre-call-git-hook) (pcase-let* ((process-environment (magit-process-environment)) (default-process-coding-system (magit--process-coding-system)) - (flat-args (magit-process-git-arguments args)) + (flat-args (magit-process-git-arguments args t)) (`(,process-buf . ,section) (magit-process-setup (magit-git-executable) flat-args)) (inhibit-read-only t)) @@ -657,7 +666,7 @@ See `magit-start-process' for more information." (run-hooks 'magit-pre-start-git-hook) (let ((default-process-coding-system (magit--process-coding-system))) (apply #'magit-start-process (magit-git-executable) input - (magit-process-git-arguments args)))) + (magit-process-git-arguments args t)))) (defun magit-start-process (program &optional input &rest args) "Start PROGRAM, prepare for refresh, and return the process object. @@ -730,7 +739,7 @@ Magit status buffer." process)) (defun magit-parse-git-async (&rest args) - (setq args (magit-process-git-arguments args)) + (setq args (magit-process-git-arguments args t)) (let ((command-buf (current-buffer)) (stdout-buf (generate-new-buffer " *git-stdout*")) (stderr-buf (generate-new-buffer " *git-stderr*")) @@ -797,7 +806,7 @@ Magit status buffer." (defun magit-process--format-arguments (program args) (cond ((and args (equal program (magit-git-executable))) - (let ((global (length magit-git-global-arguments))) + (let ((global (magit-process-git-arguments--length))) (concat (propertize (file-name-nondirectory program) 'font-lock-face 'magit-section-heading) @@ -869,7 +878,7 @@ Magit status buffer." `((commit . ,(magit-rev-parse "HEAD")) (,(pcase (car (seq-drop (process-command process) - (1+ (length magit-git-global-arguments)))) + (1+ (magit-process-git-arguments--length)))) ((or "rebase" "am") 'rebase-sequence) ((or "cherry-pick" "revert") 'sequence))) (status))))) @@ -1106,7 +1115,7 @@ as argument." (defun magit-process-set-mode-line (program args) "Display the git command (sans arguments) in the mode line." (when (equal program (magit-git-executable)) - (setq args (nthcdr (length magit-git-global-arguments) args))) + (setq args (nthcdr (magit-process-git-arguments--length) args))) (let ((str (concat " " (propertize (concat (file-name-nondirectory program) (and args (concat " " (car args)))) diff --git a/lisp/magit/magit-sequence.el b/lisp/magit/magit-sequence.el index f12e311d..d3af3ad0 100644 --- a/lisp/magit/magit-sequence.el +++ b/lisp/magit/magit-sequence.el @@ -32,11 +32,14 @@ ;; For `magit-rebase--todo'. (declare-function git-rebase-current-line "git-rebase" (&optional batch)) -(eval-and-compile - (cl-pushnew 'action-type eieio--known-slot-names) + +(eval-and-compile ;declare slot names + (cl-pushnew 'abbrev eieio--known-slot-names) (cl-pushnew 'action eieio--known-slot-names) (cl-pushnew 'action-options eieio--known-slot-names) - (cl-pushnew 'target eieio--known-slot-names)) + (cl-pushnew 'action-type eieio--known-slot-names) + (cl-pushnew 'target eieio--known-slot-names) + (cl-pushnew 'trailer eieio--known-slot-names)) ;;; Options ;;;; Faces diff --git a/lisp/magit/magit-status.el b/lisp/magit/magit-status.el index 0ac1169a..b9638644 100644 --- a/lisp/magit/magit-status.el +++ b/lisp/magit/magit-status.el @@ -28,6 +28,8 @@ (require 'magit) +(declare-function magit-dired-jump "magit-dired" (&optional other-window)) + ;;; Options (defgroup magit-status nil diff --git a/lisp/magit/magit-wip.el b/lisp/magit/magit-wip.el index 06210626..51c64a13 100644 --- a/lisp/magit/magit-wip.el +++ b/lisp/magit/magit-wip.el @@ -61,12 +61,19 @@ collected. This is currently the default. If `immediately', then use `git-commit-post-finish-hook' to create the merge commit. This is discouraged because it can -lead to a race condition, e.g., during rebases." +lead to a race condition, e.g., during rebases. + +If `githook', then use `magit-common-git-post-commit-hook' to +create the merge commit. This uses the experimental support for +calling Lisp hooks from Git hooks, which is disabled by default, +Customize `magit-overriding-githook-directory' to enable use of +Git hooks." :package-version '(magit . "2.90.0") :group 'magit-wip :type '(choice (const :tag "Yes (safely, just in time)" t) (const :tag "Yes (immediately, with race condition)" immediately) + (const :tag "Yes (using experimental Git hook support)" githook) (const :tag "No" nil))) (defcustom magit-wip-namespace "refs/wip/" @@ -79,6 +86,14 @@ is used as `branch-ref'." :group 'magit-wip :type 'string) +(defcustom magit-wip-debug nil + "Whether to record commands used to update wip refs. +If non-nil, log the used commands and their output in the process +buffer." + :package-version '(magit . "4.5.0") + :group 'magit-wip + :type 'boolean) + ;;; Mode (defvar magit--wip-inhibit-autosave nil) @@ -95,12 +110,14 @@ is used as `branch-ref'." (add-hook 'magit-after-apply-functions #'magit-wip-commit) (add-hook 'magit-before-change-functions #'magit-wip-commit) (add-hook 'before-save-hook #'magit-wip-commit-initial-backup) + (add-hook 'magit-common-git-post-commit-functions #'magit-wip-post-commit) (add-hook 'git-commit-post-finish-hook #'magit-wip-commit-post-editmsg)) (t (remove-hook 'after-save-hook #'magit-wip-commit-buffer-file) (remove-hook 'magit-after-apply-functions #'magit-wip-commit) (remove-hook 'magit-before-change-functions #'magit-wip-commit) (remove-hook 'before-save-hook #'magit-wip-commit-initial-backup) + (remove-hook 'magit-common-git-post-commit-functions #'magit-wip-post-commit) (remove-hook 'git-commit-post-finish-hook #'magit-wip-commit-post-editmsg)))) (defun magit-wip-commit-buffer-file (&optional msg) @@ -138,6 +155,10 @@ is used as `branch-ref'." (magit-wip-commit-buffer-file "autosave %s before save")) (setq magit-wip-buffer-backed-up t))) +(defun magit-wip-post-commit (&rest _) + (when (eq magit-wip-merge-branch 'githook) + (magit-wip-commit))) + (defun magit-wip-commit-post-editmsg () (when (eq magit-wip-merge-branch 'immediately) (magit-wip-commit))) @@ -179,24 +200,34 @@ commit message." ;; Note: `update-index' is used instead of `add' ;; because `add' will fail if a file is already ;; deleted in the temporary index. - (magit-call-git "update-index" "--add" "--remove" + (magit-wip--git "update-index" "--add" "--remove" "--ignore-skip-worktree-entries" "--" files) (magit-with-toplevel - (magit-call-git "add" "-u" "."))) + (magit-wip--git "add" "-u" "."))) (magit-git-string "write-tree")))) (magit-wip-update-wipref ref wipref tree parent files msg "worktree")))) +(defun magit-wip--git (&rest args) + (if magit-wip-debug + (let ((default-process-coding-system (magit--process-coding-system))) + (apply #'magit-call-process + (magit-git-executable) + (magit-process-git-arguments args))) + (apply #'magit-process-file + (magit-git-executable) nil nil nil + (magit-process-git-arguments args)))) + (defun magit-wip-update-wipref (ref wipref tree parent files msg start-msg) (cond ((and (not (equal parent wipref)) (or (not magit-wip-merge-branch) (not (magit-rev-verify wipref)))) (setq start-msg (concat "start autosaving " start-msg)) - (magit-update-ref wipref start-msg - (magit-git-string "commit-tree" "--no-gpg-sign" - "-p" parent "-m" start-msg - (concat parent "^{tree}"))) + (magit-wip--update-ref wipref start-msg + (magit-git-string "commit-tree" "--no-gpg-sign" + "-p" parent "-m" start-msg + (concat parent "^{tree}"))) (setq parent wipref)) ((and magit-wip-merge-branch (or (not (magit-rev-ancestor-p ref wipref)) @@ -206,11 +237,11 @@ commit message." "^2") ref)))) (setq start-msg (format "merge %s into %s" ref start-msg)) - (magit-update-ref wipref start-msg - (magit-git-string "commit-tree" "--no-gpg-sign" - "-p" wipref "-p" ref - "-m" start-msg - (concat ref "^{tree}"))) + (magit-wip--update-ref wipref start-msg + (magit-git-string "commit-tree" "--no-gpg-sign" + "-p" wipref "-p" ref + "-m" start-msg + (concat ref "^{tree}"))) (setq parent wipref))) (when (magit-git-failure "diff-tree" "--quiet" parent tree "--" files) (unless (and msg (not (= (aref msg 0) ?\s))) @@ -222,9 +253,15 @@ commit message." (file-relative-name (car files) (magit-toplevel))))) msg)))) - (magit-update-ref wipref msg - (magit-git-string "commit-tree" "--no-gpg-sign" - "-p" parent "-m" msg tree)))) + (magit-wip--update-ref wipref msg + (magit-git-string "commit-tree" "--no-gpg-sign" + "-p" parent "-m" msg tree)))) + +(defun magit-wip--update-ref (ref message rev) + (let ((magit--refresh-cache nil)) + (unless (zerop (magit-wip--git "update-ref" "--create-reflog" + "-m" message ref rev)) + (error "Cannot update %s with %s" ref rev)))) (defun magit-wip-get-ref () (let ((ref (or (magit-git-string "symbolic-ref" "HEAD") "HEAD"))) diff --git a/lisp/magit/magit.el b/lisp/magit/magit.el index e9f29b19..16afef3c 100644 --- a/lisp/magit/magit.el +++ b/lisp/magit/magit.el @@ -17,8 +17,8 @@ ;; Homepage: https://github.com/magit/magit ;; Keywords: git tools vc -;; Package-Version: 20251125.101 -;; Package-Revision: ced3d5afc33d +;; Package-Version: 20251217.1836 +;; Package-Revision: 655bc502a3bd ;; Package-Requires: ( ;; (emacs "28.1") ;; (compat "30.1") @@ -773,11 +773,12 @@ For X11 something like ~/.xinitrc should work.\n" (require 'magit-stash) (require 'magit-blame) (require 'magit-submodule) - ;; The `provide' form may be missing so we have to - ;; try harder to ensure this is loaded exactly once. - (unless (or (featurep 'magit-autoloads) + (unless (or noninteractive + ;; The `provide' form may be missing, so we have to + ;; try harder to ensure this is loaded exactly once. + (featurep 'magit-autoloads) (autoloadp (symbol-function 'magit-patch)) - (load "magit-autoloads" t)) + (load "magit-autoloads" t t)) (require 'magit-patch) (require 'magit-subtree) (require 'magit-ediff) diff --git a/lisp/magit/magit.info b/lisp/magit/magit.info index 1d42fe59..dcf8a7f0 100644 --- a/lisp/magit/magit.info +++ b/lisp/magit/magit.info @@ -7401,6 +7401,11 @@ Also see *note (gitman)git-worktree::. If the worktree at point is the one whose status is already being displayed in the current buffer, then show it in Dired instead. + If you want the status buffer to list worktrees, add the function +‘magit-insert-worktrees’ to ‘magit-status-sections-hook’ as described in +*note Status Sections::. If there is only one worktree, this function +inserts nothing. +  File: magit.info, Node: Sparse checkouts, Next: Bundle, Prev: Worktree, Up: Miscellaneous @@ -10973,63 +10978,63 @@ Ref: Listing Submodules314190 Ref: Submodule Transient316251 Node: Subtree318604 Node: Worktree320535 -Node: Sparse checkouts321611 -Node: Bundle324383 -Node: Common Commands324758 -Node: Wip Modes327384 -Ref: Wip Graph331958 -Node: Commands for Buffers Visiting Files334397 -Node: Minor Mode for Buffers Visiting Blobs342736 -Node: Customizing343899 -Node: Per-Repository Configuration345491 -Node: Essential Settings347745 -Ref: Safety348034 -Ref: Performance349709 -Ref: Log Performance352500 -Ref: Diff Performance353799 -Ref: Refs Buffer Performance355140 -Ref: Committing Performance355713 -Ref: Microsoft Windows Performance356693 -Ref: MacOS Performance357780 -Ref: Global Bindings358663 -Ref: Essential Settings-Footnote-1360836 -Node: Plumbing360918 -Node: Calling Git361743 -Ref: Getting a Value from Git363202 -Ref: Calling Git for Effect366820 -Node: Section Plumbing372759 -Ref: Creating Sections372911 -Ref: Section Selection376721 -Ref: Matching Sections378418 -Node: Refreshing Buffers384320 -Node: Conventions387460 -Ref: Theming Faces387624 -Node: FAQ395657 -Node: FAQ - How to ...?396093 -Ref: How to pronounce Magit?396226 -Ref: How to show git's output?396918 -Ref: How to install the gitman info manual?397535 -Ref: How to show diffs for gpg-encrypted files?398340 -Ref: How does branching and pushing work?398749 -Ref: Should I disable VC?398913 -Node: FAQ - Issues and Errors399396 -Ref: Magit is slow399541 -Ref: I changed several thousand files at once and now Magit is unusable399687 -Ref: I am having problems committing400226 -Ref: I am using MS Windows and cannot push with Magit400491 -Ref: I am using macOS and SOMETHING works in shell but not in Magit400889 -Ref: Expanding a file to show the diff causes it to disappear401476 -Ref: Point is wrong in the COMMIT_EDITMSG buffer401826 -Ref: The mode-line information isn't always up-to-date402650 -Ref: A branch and tag sharing the same name breaks SOMETHING403481 -Ref: My Git hooks work on the command-line but not inside Magit404129 -Ref: git-commit-mode isn't used when committing from the command-line404721 -Ref: Point ends up inside invisible text when jumping to a file-visiting buffer406709 -Ref: I am no longer able to save popup defaults407301 -Node: Debugging Tools408094 -Node: Keystroke Index412029 -Node: Function and Command Index450125 -Node: Variable Index501697 +Node: Sparse checkouts321850 +Node: Bundle324622 +Node: Common Commands324997 +Node: Wip Modes327623 +Ref: Wip Graph332197 +Node: Commands for Buffers Visiting Files334636 +Node: Minor Mode for Buffers Visiting Blobs342975 +Node: Customizing344138 +Node: Per-Repository Configuration345730 +Node: Essential Settings347984 +Ref: Safety348273 +Ref: Performance349948 +Ref: Log Performance352739 +Ref: Diff Performance354038 +Ref: Refs Buffer Performance355379 +Ref: Committing Performance355952 +Ref: Microsoft Windows Performance356932 +Ref: MacOS Performance358019 +Ref: Global Bindings358902 +Ref: Essential Settings-Footnote-1361075 +Node: Plumbing361157 +Node: Calling Git361982 +Ref: Getting a Value from Git363441 +Ref: Calling Git for Effect367059 +Node: Section Plumbing372998 +Ref: Creating Sections373150 +Ref: Section Selection376960 +Ref: Matching Sections378657 +Node: Refreshing Buffers384559 +Node: Conventions387699 +Ref: Theming Faces387863 +Node: FAQ395896 +Node: FAQ - How to ...?396332 +Ref: How to pronounce Magit?396465 +Ref: How to show git's output?397157 +Ref: How to install the gitman info manual?397774 +Ref: How to show diffs for gpg-encrypted files?398579 +Ref: How does branching and pushing work?398988 +Ref: Should I disable VC?399152 +Node: FAQ - Issues and Errors399635 +Ref: Magit is slow399780 +Ref: I changed several thousand files at once and now Magit is unusable399926 +Ref: I am having problems committing400465 +Ref: I am using MS Windows and cannot push with Magit400730 +Ref: I am using macOS and SOMETHING works in shell but not in Magit401128 +Ref: Expanding a file to show the diff causes it to disappear401715 +Ref: Point is wrong in the COMMIT_EDITMSG buffer402065 +Ref: The mode-line information isn't always up-to-date402889 +Ref: A branch and tag sharing the same name breaks SOMETHING403720 +Ref: My Git hooks work on the command-line but not inside Magit404368 +Ref: git-commit-mode isn't used when committing from the command-line404960 +Ref: Point ends up inside invisible text when jumping to a file-visiting buffer406948 +Ref: I am no longer able to save popup defaults407540 +Node: Debugging Tools408333 +Node: Keystroke Index412268 +Node: Function and Command Index450364 +Node: Variable Index501936  End Tag Table diff --git a/lisp/markdown-mode/markdown-mode-pkg.el b/lisp/markdown-mode/markdown-mode-pkg.el index fad532dc..5bb7ec97 100644 --- a/lisp/markdown-mode/markdown-mode-pkg.el +++ b/lisp/markdown-mode/markdown-mode-pkg.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "markdown-mode" "20251028.412" +(define-package "markdown-mode" "20251204.852" "Major mode for Markdown-formatted text." '((emacs "28.1")) :url "https://jblevins.org/projects/markdown-mode/" - :commit "b524618c3ed28906a7522482727f121428ce7e2e" - :revdesc "b524618c3ed2" + :commit "92802fae9ebbc8c2e4c281c06dcdbd74b8bca80e" + :revdesc "92802fae9ebb" :keywords '("markdown" "github flavored markdown" "itex") :authors '(("Jason R. Blevins" . "jblevins@xbeta.org")) :maintainers '(("Jason R. Blevins" . "jblevins@xbeta.org"))) diff --git a/lisp/markdown-mode/markdown-mode.el b/lisp/markdown-mode/markdown-mode.el index dae2049d..d0a9f482 100644 --- a/lisp/markdown-mode/markdown-mode.el +++ b/lisp/markdown-mode/markdown-mode.el @@ -6,8 +6,8 @@ ;; Author: Jason R. Blevins ;; Maintainer: Jason R. Blevins ;; Created: May 24, 2007 -;; Package-Version: 20251028.412 -;; Package-Revision: b524618c3ed2 +;; Package-Version: 20251204.852 +;; Package-Revision: 92802fae9ebb ;; Package-Requires: ((emacs "28.1")) ;; Keywords: Markdown, GitHub Flavored Markdown, itex ;; URL: https://jblevins.org/projects/markdown-mode/ @@ -9760,6 +9760,18 @@ This function assumes point is on a table." (cl-loop for c across line always (member c '(?| ?- ?: ?\t ? ))))) +(defun markdown-table-align-raw (cells fmtspec widths) + (let (fmt width) + (mapconcat + (lambda (cell) + (setq fmt (car fmtspec) fmtspec (cdr fmtspec)) + (setq width (car widths) widths (cdr widths)) + (if (equal fmt 'c) + (setq cell (concat (make-string (/ (- width (length cell)) 2) ?\s) cell))) + (unless (equal fmt 'r) (setq width (- width))) + (format (format " %%%ds " width) cell)) + cells "|"))) + (defun markdown-table-align () "Align table at point. This function assumes point is on a table." @@ -9784,8 +9796,6 @@ This function assumes point is on a table." (maxcells (if cells (apply #'max (mapcar #'length cells)) (user-error "Empty table"))) - ;; Empty cells to fill short lines - (emptycells (make-list maxcells "")) maxwidths) ;; Calculate maximum width for each column (dotimes (i maxcells) @@ -9797,20 +9807,20 @@ This function assumes point is on a table." (setq fmtspec (markdown-table-colfmt fmtspec)) ;; Compute formats needed for output of table lines (let ((hfmt (concat indent "|")) - (rfmt (concat indent "|")) - hfmt1 rfmt1 fmt) - (dolist (width maxwidths (setq hfmt (concat (substring hfmt 0 -1) "|"))) - (setq fmt (pop fmtspec)) - (cond ((equal fmt 'l) (setq hfmt1 ":%s-|" rfmt1 " %%-%ds |")) - ((equal fmt 'r) (setq hfmt1 "-%s:|" rfmt1 " %%%ds |")) - ((equal fmt 'c) (setq hfmt1 ":%s:|" rfmt1 " %%-%ds |")) - (t (setq hfmt1 "-%s-|" rfmt1 " %%-%ds |"))) - (setq rfmt (concat rfmt (format rfmt1 width))) + hfmt1 fmt (fmts fmtspec)) + (dolist (width maxwidths) + (setq fmt (car fmts) fmts (cdr fmts)) + (cond ((equal fmt 'l) (setq hfmt1 ":%s-|")) + ((equal fmt 'r) (setq hfmt1 "-%s:|")) + ((equal fmt 'c) (setq hfmt1 ":%s:|")) + (t (setq hfmt1 "-%s-|"))) (setq hfmt (concat hfmt (format hfmt1 (make-string width ?-))))) ;; Replace modified lines only (dolist (line lines) (let ((line (if line - (apply #'format rfmt (append (pop cells) emptycells)) + (concat indent "|" + (markdown-table-align-raw (pop cells) fmtspec maxwidths) + "|") hfmt)) (previous (buffer-substring (point) (line-end-position)))) (if (equal previous line) diff --git a/lisp/nerd-icons/nerd-icons-pkg.el b/lisp/nerd-icons/nerd-icons-pkg.el index ad31b1c6..2a59cbfd 100644 --- a/lisp/nerd-icons/nerd-icons-pkg.el +++ b/lisp/nerd-icons/nerd-icons-pkg.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "nerd-icons" "20251125.1823" +(define-package "nerd-icons" "20251214.1318" "Emacs Nerd Font Icons Library." '((emacs "25.1")) :url "https://github.com/rainstormstudio/nerd-icons.el" - :commit "772987a28d6408f840331c52c91d04b623a87048" - :revdesc "772987a28d64" + :commit "081f6f4f99b9460b63b5a2a6087b62fefd06a5d0" + :revdesc "081f6f4f99b9" :keywords '("lisp") :authors '(("Hongyu Ding" . "rainstormstudio@yahoo.com") ("Vincent Zhang" . "seagle0128@gmail.com")) diff --git a/lisp/nerd-icons/nerd-icons.el b/lisp/nerd-icons/nerd-icons.el index 20f11f02..6c63e973 100644 --- a/lisp/nerd-icons/nerd-icons.el +++ b/lisp/nerd-icons/nerd-icons.el @@ -4,8 +4,8 @@ ;; Author: Hongyu Ding , Vincent Zhang ;; Keywords: lisp -;; Package-Version: 20251125.1823 -;; Package-Revision: 772987a28d64 +;; Package-Version: 20251214.1318 +;; Package-Revision: 081f6f4f99b9 ;; Package-Requires: ((emacs "25.1")) ;; URL: https://github.com/rainstormstudio/nerd-icons.el ;; Keywords: convenient, lisp @@ -87,6 +87,7 @@ (defvar nerd-icons-extension-icon-alist '( + ;; Shell ("fish" nerd-icons-devicon "nf-dev-terminal" :face nerd-icons-lpink) ("zsh" nerd-icons-devicon "nf-dev-terminal" :face nerd-icons-lcyan) ("sh" nerd-icons-devicon "nf-dev-terminal" :face nerd-icons-purple) @@ -119,17 +120,18 @@ ("dockerignore" nerd-icons-devicon "nf-dev-docker" :face nerd-icons-dblue) ("plist" nerd-icons-faicon "nf-fa-file_code" :face nerd-icons-dsilver) ("xml" nerd-icons-faicon "nf-fa-file_code_o" :face nerd-icons-lorange) - ("json" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) - ("jsonc" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) - ("jsonl" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("json" nerd-icons-mdicon "nf-md-code_json" :face nerd-icons-yellow) + ("jsonc" nerd-icons-mdicon "nf-md-code_json" :face nerd-icons-yellow) + ("jsonl" nerd-icons-mdicon "nf-md-code_json" :face nerd-icons-yellow) ("cson" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) ("yml" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-dyellow) ("yaml" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-dyellow) - ("toml" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-orange) + ("toml" nerd-icons-sucicon "nf-custom-toml" :face nerd-icons-orange) ("conf" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-dorange) ("editorconfig" nerd-icons-sucicon "nf-seti-editorconfig" :face nerd-icons-silver) ("idekeybindings" nerd-icons-faicon "nf-fa-file_code_o" :face nerd-icons-lblue) ("cfg" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-dorange) + ("env" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) ;; ? ("pkg" nerd-icons-octicon "nf-oct-package" :face nerd-icons-dsilver) ("rpm" nerd-icons-octicon "nf-oct-package" :face nerd-icons-dsilver) @@ -193,6 +195,7 @@ ("pro" nerd-icons-sucicon "nf-seti-prolog" :face nerd-icons-lmaroon) ("proog" nerd-icons-sucicon "nf-seti-prolog" :face nerd-icons-lmaroon) ("py" nerd-icons-devicon "nf-dev-python" :face nerd-icons-dblue) + ("pyc" nerd-icons-devicon "nf-dev-python" :face nerd-icons-dsilver) ;; ("idr" nerd-icons-devicon "idris") TODO: idris ("ipynb" nerd-icons-devicon "nf-dev-jupyter" :face nerd-icons-orange) ("gem" nerd-icons-codicon "nf-cod-ruby" :face nerd-icons-red) @@ -245,6 +248,8 @@ ("ledger" nerd-icons-mdicon "nf-md-file_table_box_multiple" :face nerd-icons-green) ("rkt" nerd-icons-sucicon "nf-custom-scheme" :face nerd-icons-red) ("scrbl" nerd-icons-sucicon "nf-custom-scheme" :face nerd-icons-blue) + ;; Vim + ("vim" nerd-icons-sucicon "nf-custom-vim" :face nerd-icons-dgreen) ;; Stylesheeting ("css" nerd-icons-devicon "nf-dev-css3" :face nerd-icons-yellow) ("scss" nerd-icons-mdicon "nf-md-sass" :face nerd-icons-pink) @@ -288,6 +293,8 @@ ("tsx" nerd-icons-devicon "nf-dev-react" :face nerd-icons-lblue) ("njs" nerd-icons-mdicon "nf-md-nodejs" :face nerd-icons-lgreen) ("vue" nerd-icons-sucicon "nf-seti-vue" :face nerd-icons-lgreen) + ("mjs" nerd-icons-devicon "nf-dev-javascript" :face nerd-icons-yellow) + ("cjs" nerd-icons-devicon "nf-dev-javascript" :face nerd-icons-yellow) ("sbt" nerd-icons-sucicon "nf-seti-sbt" :face nerd-icons-red) ("scala" nerd-icons-devicon "nf-dev-scala" :face nerd-icons-red) @@ -469,7 +476,9 @@ ;; backup ("backup" nerd-icons-mdicon "nf-md-file_restore" :face nerd-icons-lblue) ("old" nerd-icons-mdicon "nf-md-file_restore" :face nerd-icons-lblue) - ("bak" nerd-icons-mdicon "nf-md-file_restore" :face nerd-icons-lblue))) + ("bak" nerd-icons-mdicon "nf-md-file_restore" :face nerd-icons-lblue) + ;; Lock + ("lock" nerd-icons-octicon "nf-oct-lock" :face nerd-icons-red))) (defvar nerd-icons-regexp-icon-alist '( @@ -483,6 +492,7 @@ ;; misc GNU documentation files ("^\\(MAINTAINERS\\|CONTRIBUTE\\|BUGS\\).*$" nerd-icons-mdicon "nf-md-book" :face nerd-icons-blue) + ("^code-of-conduct$" nerd-icons-octicon "nf-oct-code_of_conduct" :face nerd-icons-pink) ;; (info "(standards) NEWS File") ("^NEWS.*$" nerd-icons-faicon "nf-fa-newspaper" :face nerd-icons-green) @@ -493,13 +503,46 @@ ("^INSTALL.*$" nerd-icons-faicon "nf-fa-file_arrow_down" :face nerd-icons-green) ;; autotools related - ("^Makefile.\\(am\\|in\\)$" nerd-icons-sucicon "nf-seti-makefile" :face nerd-icons-lsilver) + ("^Makefile.\\(am\\|in\\)$" nerd-icons-sucicon "nf-seti-makefile" :face nerd-icons-lsilver) ("^configure.\\(in\\|ac\\)" nerd-icons-mdicon "nf-md-file_cog" :face nerd-icons-lsilver) - ("^configure$" nerd-icons-devicon "nf-dev-terminal" :face nerd-icons-lsilver) + ("^configure$" nerd-icons-devicon "nf-dev-terminal" :face nerd-icons-lsilver) ("^config.\\(guess\\|rpath\\|status\\|sub\\)$" nerd-icons-devicon "nf-dev-terminal" :face nerd-icons-lsilver) ("^\\(ar-lib\\|depmond\\|install-sh\\|missing\\|mkdep\\|mkinstalldirs\\|move-if-change\\|symlink-tree\\|test-driver\\|ylwrap\\)$" nerd-icons-devicon "nf-dev-terminal" :face nerd-icons-lsilver) + ("^\\.editorconfig$" nerd-icons-sucicon "nf-seti-editorconfig" :face nerd-icons-silver) + + ;; Env + ("^\\.env$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.defaults$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.example$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.sample$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.template$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.schema$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.dev$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.development$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.alpha$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.e2e$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.qa$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.dist$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.prod$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.production$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.stage$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.staging$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.preview$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.test$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.testing$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.dev\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.development\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.qa\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.prod\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.production\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.staging\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.test\\.local$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.uat$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.env\\.cat$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + ("^\\.envrc$" nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) ;; Config ("nginx$" nerd-icons-devicon "nf-dev-nginx" :face nerd-icons-dgreen) @@ -513,7 +556,10 @@ ("^meson_options.txt$" nerd-icons-sucicon "nf-seti-makefile" :face nerd-icons-purple) ;; TODO: meson ;; Docker - ("^\\.?Dockerfile" nerd-icons-sucicon "nf-seti-docker" :face nerd-icons-blue) + ("^\\.dockerignore$" nerd-icons-devicon "nf-dev-docker" :face nerd-icons-dblue) + ("^\\.?\\(Container\\|Docker\\)file" nerd-icons-sucicon "nf-seti-docker" :face nerd-icons-blue) + ("^\\(docker-\\)?compose\\.ya?ml$" nerd-icons-sucicon "nf-seti-docker" :face nerd-icons-cyan) + ("^\\docker-compose\\.gitlab\\.ya?ml" nerd-icons-sucicon "nf-seti-docker" :face nerd-icons-cyan) ;; Homebrew ("^Brewfile$" nerd-icons-faicon "nf-fa-beer" :face nerd-icons-lsilver) @@ -554,11 +600,18 @@ ("-?test\\.jsx$" nerd-icons-mdicon "nf-md-react" :face nerd-icons-blue-alt) ;; Git + ("^\\.git$" nerd-icons-sucicon "nf-seti-git" :face nerd-icons-lred) + ("^\\.gitattributes$" nerd-icons-sucicon "nf-seti-git" :face nerd-icons-lred) + ("^\\.gitignore$" nerd-icons-sucicon "nf-seti-git" :face nerd-icons-lred) + ("^\\.gitmodules$" nerd-icons-sucicon "nf-seti-git" :face nerd-icons-lred) ("^MERGE_" nerd-icons-octicon "nf-oct-git_merge" :face nerd-icons-red) ("^COMMIT_EDITMSG" nerd-icons-octicon "nf-oct-git_commit" :face nerd-icons-red) + ;; Gitlab + ("^\\.gitlab-ci\\.ya?ml$" nerd-icons-devicon "nf-dev-gitlab" :face nerd-icons-orange) + ;; Stylesheeting - ("^stylelint" nerd-icons-sucicon "nf-seti-stylelint" :face nerd-icons-lyellow) + ("^stylelint" nerd-icons-sucicon "nf-seti-stylelint" :face nerd-icons-lyellow) ;; JavaScript ("^package.json$" nerd-icons-devicon "nf-dev-npm" :face nerd-icons-red) @@ -568,7 +621,13 @@ ("^bower.json$" nerd-icons-devicon "nf-dev-bower" :face nerd-icons-lorange) ("^gulpfile" nerd-icons-devicon "nf-dev-gulp" :face nerd-icons-lred) ("^gruntfile" nerd-icons-devicon "nf-dev-grunt" :face nerd-icons-lyellow) - ("^webpack" nerd-icons-mdicon "nf-md-webpack" :face nerd-icons-lblue) + ("^webpack" nerd-icons-devicon "nf-dev-webpack" :face nerd-icons-lblue) + ("^\\.?eslint" nerd-icons-devicon "nf-dev-eslint" :face nerd-icons-lblue) + ("^\\.?prettier" nerd-icons-sucicon "nf-custom-prettier" :face nerd-icons-gray) + ("^\\.?babel" nerd-icons-sucicon "nf-seti-babel" :face nerd-icons-yellow) + ("^vite.config" nerd-icons-devicon "nf-dev-vitest" :face nerd-icons-yellow) + ("^vitest" nerd-icons-devicon "nf-dev-vitest" :face nerd-icons-yellow) + ("^\\.?jest" nerd-icons-devicon "nf-dev-jest" :face nerd-icons-lred) ;; Go ("^go.mod$" nerd-icons-sucicon "nf-seti-config" :face nerd-icons-blue-alt) @@ -590,6 +649,9 @@ ("^Cargo.toml$" nerd-icons-devicon "nf-dev-rust" :face nerd-icons-yellow) ("^Cargo.lock$" nerd-icons-devicon "nf-dev-rust" :face nerd-icons-dyellow) + ;; Nix + ("^flake\\.lock$" nerd-icons-mdicon "nf-md-nix" :face nerd-icons-blue) + ("^\\." nerd-icons-octicon "nf-oct-gear"))) (defvar nerd-icons-default-file-icon @@ -761,14 +823,14 @@ (docker-compose-mode nerd-icons-sucicon "nf-seti-docker" :face nerd-icons-lblue) (nxml-mode nerd-icons-faicon "nf-fa-file_code_o" :face nerd-icons-lorange) (conf-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-lyellow) - (json-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) - (json-ts-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) - (jsonc-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) + (json-mode nerd-icons-mdicon "nf-md-code_json" :face nerd-icons-yellow) + (json-ts-mode nerd-icons-mdicon "nf-md-code_json" :face nerd-icons-yellow) + (jsonc-mode nerd-icons-mdicon "nf-md-code_json" :face nerd-icons-yellow) (jsonian-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-yellow) (yaml-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-dyellow) (yaml-ts-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-dyellow) - (toml-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-orange) - (toml-ts-mode nerd-icons-codicon "nf-cod-settings" :face nerd-icons-orange) + (toml-mode nerd-icons-sucicon "nf-custom-toml" :face nerd-icons-orange) + (toml-ts-mode nerd-icons-sucicon "nf-custom-toml" :face nerd-icons-orange) (elisp-byte-code-mode nerd-icons-octicon "nf-oct-file_binary" :face nerd-icons-dsilver) (archive-mode nerd-icons-octicon "nf-oct-file_zip" :face nerd-icons-lmaroon) (elm-mode nerd-icons-sucicon "nf-custom-elm" :face nerd-icons-blue) @@ -1200,10 +1262,10 @@ ARG-OVERRIDES should be a plist containining `:height', inserting functions." (let* ((name (file-name-nondirectory file)) (ext (file-name-extension name)) - (icon (or (and ext + (icon (or (nerd-icons-match-to-alist name nerd-icons-regexp-icon-alist) + (and ext (cdr (assoc (downcase ext) nerd-icons-extension-icon-alist))) - (nerd-icons-match-to-alist name nerd-icons-regexp-icon-alist) nerd-icons-default-file-icon)) (args (cdr icon))) (when arg-overrides (setq args (append `(,(car args)) arg-overrides (cdr args)))) diff --git a/lisp/org-ref/org-ref-export.el b/lisp/org-ref/org-ref-export.el index 68c226d7..f2ed26e4 100644 --- a/lisp/org-ref/org-ref-export.el +++ b/lisp/org-ref/org-ref-export.el @@ -294,7 +294,7 @@ REF is a plist data structure returned from `org-ref-parse-cite-path'." ;; and the rest is the suffix text. ;; For example: ch. 5, for example ;; would be label = ch., locator=5, ",for example" as suffix. - (let* ((full-suffix (string-trim (or (plist-get ref :suffix) ""))) + (let* ((full-suffix (string-trim (or (plist-get ref :suffix) ""))) locator label locator suffix) @@ -317,10 +317,10 @@ REF is a plist data structure returned from `org-ref-parse-cite-path'." ;; number or numeric ranges (group-n 2 (one-or-more digit) (optional "-" (one-or-more digit))) ;; everything else - (group-n 3 (* ".")))) + (group-n 3 (* ".")))) full-suffix) (match-string 2 full-suffix) - (not (string= "" (match-string 2 full-suffix)))) + (not (string= "" (match-string 2 full-suffix)))) ;; We found a locator (setq label (match-string 1 full-suffix) locator (match-string 2 full-suffix) @@ -328,11 +328,11 @@ REF is a plist data structure returned from `org-ref-parse-cite-path'." (setq label nil locator nil suffix full-suffix)) - + ;; Let's assume if you have a locator but not a label that you mean page. (when (and locator (string= "" (string-trim label))) (setq label "page")) - + `((id . ,(plist-get ref :key)) (prefix . ,(plist-get ref :prefix)) (suffix . ,suffix) @@ -553,14 +553,14 @@ BACKEND is the org export backend." (setq s1 (format "" - ;; I hard coded this factor of 0.6 from the oc-csl code. + ;; I hard coded this factor of 0.6 from the oc-csl code. (* 0.6 (or (cdr (assq 'max-offset bib-parameters)) 0))))) ;; hard-coded the hanging indent. oc-csl uses a variable for this. I ;; guess we could too, but this seems simpler. (when (cdr (assq 'hanging-indent bib-parameters)) (setq s2 "")) - + (setq rendered-bib (concat s1 s2 rendered-bib))))) @@ -617,7 +617,7 @@ VISIBLE-ONLY BODY-ONLY and INFO." (goto-char (marker-position mm)) (org-ref-process-buffer backend subtreep) (set-marker mm nil) - + (pcase backend ;; odt is a little bit special, and is missing one argument ('odt (org-open-file (org-odt-export-to-odt async subtreep visible-only @@ -882,6 +882,99 @@ I am not positive on this though." (define-obsolete-function-alias 'org-ref-export-from-hydra #'org-ref-export-dispatch "3.1") +;; * exporting formatted citations +;; ** with user defined templates +(defcustom org-ref-format-templates + '(("article" . "${author} (${year}). /${title}/. ${journal}, *${volume}(${number})*, ${pages}.${doi}") + ("inproceedings" . "${author} (${year}). ${title}. In ${editor}, ${booktitle} (pp. ${pages}). ${address}: ${publisher}.") + ("book" . "${author} (${year}). ${title}. ${address}: ${publisher}.") + ("phdthesis" . "${author} (${year}). ${title} (Doctoral dissertation). ${school}, ${address}.") + ("inbook" . "${author} (${year}). ${chapter}. In ${editor} (Eds.), ${title} (pp. ${pages}). ${address}: ${publisher}.") + ("incollection" . "${author} (${year}). ${title}. In ${editor} (Eds.), ${booktitle} (pp. ${pages}). ${address}: ${publisher}.") + ("proceedings" . "${editor} (Eds.). (${year}). ${booktitle}. ${address}: ${publisher}.") + ("unpublished" . "${author} (${year}). ${title}. Unpublished manuscript.") + ("misc" . "${author} (${year}). ${title}.")) + "a-list of templates for formatting references. +The car is the BibTeX entry type, and the cdr is a template for `org-ref--format-template'.") + + +(defun org-ref-format-reference (key) + "Insert a formatted reference at point using `org-ref-format-templates'." + (let* ((entry (org-ref-bibtex-get-entry key)) + (type (cdr (assoc "=type=" entry))) + (fmt (cdr (assoc (downcase type) org-ref-format-templates))) + (result (org-ref--format-template fmt entry))) + + (setq + ;; remove ${...} patterns that were not filled in + result (replace-regexp-in-string "\\${[^}]*}" "" result) + ;; clean up multiple spaces/newlines/tabs + result (replace-regexp-in-string "[ \t\r\n]+" " " result)) + result)) + + +(defun org-ref-insert-formatted-reference () + "Insert a formatted reference at point." + (interactive) + (let* ((bibtex-completion-bibliography (org-ref-find-bibliography)) + (candidates (bibtex-completion-candidates)) + (key (completing-read "Key: " candidates + nil t)) + (entry (assoc key candidates)) + (actual-key (cdr (assoc "=key=" entry)))) + (insert (org-ref-format-reference actual-key)))) + + +;; ** with csl styles + +(defun org-ref-format-reference-csl (key &optional style-file) + "Return a formatted reference for KEY using CSL style. + STYLE-FILE is a path to a CSL style file. If nil, uses apa.csl + from the standard csl-styles location." + (let* ((bibfiles (org-ref-find-bibliography)) + (style (or style-file (expand-file-name + org-ref-csl-default-style + (org-ref--file-join (file-name-directory + (locate-library "org-ref")) + "citeproc/csl-styles")))) + ;; Create item getter from your bib files + (item-getter (citeproc-hash-itemgetter-from-any bibfiles)) + ;; Get the item data for this key + (item-data (cdr (car (funcall item-getter (list key))))) + ;; Create a minimal style object + (proc-style (citeproc-create-style + style + (citeproc-locale-getter-from-dir + (org-ref--file-join (file-name-directory + (locate-library "org-ref")) + "citeproc/csl-locales"))))) + (when item-data + ;; Render as org format with 'bib mode for bibliography-style output + (citeproc-render-item item-data proc-style 'bib 'org)))) + + +(defun org-ref-insert-formatted-reference-csl (&optional arg) + "Insert a formatted reference at point using citeproc." + (interactive "P") + (let* ((bibtex-completion-bibliography (org-ref-find-bibliography)) + (candidates (bibtex-completion-candidates)) + (ref (completing-read "Reference: " candidates + nil t)) + (entry (assoc ref candidates)) + (key (cdr (assoc "=key=" entry))) + (style (if arg + (read-file-name "CSL style file: " + (org-ref--file-join (file-name-directory + (locate-library "org-ref")) + "citeproc/csl-styles")) + nil)) + (actual-key (or key ref)) + (result (org-ref-format-reference-csl key style))) + (insert (or result + (format "Could not format reference for %s" + actual-key))))) + + (provide 'org-ref-export) ;;; org-ref-export.el ends here diff --git a/lisp/org-ref/org-ref-pkg.el b/lisp/org-ref/org-ref-pkg.el index 6d09252a..c7f71bde 100644 --- a/lisp/org-ref/org-ref-pkg.el +++ b/lisp/org-ref/org-ref-pkg.el @@ -1,5 +1,5 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "org-ref" "20251123.1710" +(define-package "org-ref" "20251206.1422" "Citations, cross-references and bibliographies in org-mode." '((org "9.4") (htmlize "0") @@ -11,8 +11,8 @@ (ox-pandoc "0") (request "0")) :url "https://github.com/jkitchin/org-ref" - :commit "5275e58bca7e36c588e519c1b3ebe1e6b28a0654" - :revdesc "5275e58bca7e" + :commit "dc2481d430906fe2552f9318f4405242e6d37396" + :revdesc "dc2481d43090" :keywords '("org-mode" "cite" "ref" "label") :authors '(("John Kitchin" . "jkitchin@andrew.cmu.edu")) :maintainers '(("John Kitchin" . "jkitchin@andrew.cmu.edu"))) diff --git a/lisp/org-ref/org-ref.el b/lisp/org-ref/org-ref.el index eb71b625..49206987 100644 --- a/lisp/org-ref/org-ref.el +++ b/lisp/org-ref/org-ref.el @@ -4,8 +4,8 @@ ;; Author: John Kitchin ;; URL: https://github.com/jkitchin/org-ref -;; Package-Version: 20251123.1710 -;; Package-Revision: 5275e58bca7e +;; Package-Version: 20251206.1422 +;; Package-Revision: dc2481d43090 ;; Keywords: org-mode, cite, ref, label ;; Package-Requires: ((org "9.4") (htmlize "0") (transient "0") (avy "0") (parsebib "0") (bibtex-completion "0") (citeproc "0") (ox-pandoc "0") (request "0")) ;; This file is not currently part of GNU Emacs. diff --git a/lisp/org/doc/org-version.inc b/lisp/org/doc/org-version.inc index 57e16fc1..1b2d33e0 100644 --- a/lisp/org/doc/org-version.inc +++ b/lisp/org/doc/org-version.inc @@ -1,3 +1,3 @@ @c automatically generated, do not edit -@set VERSION 9.7.38 (9.7.38-a8fd61) -@set DATE 2025-11-24 +@set VERSION 9.7.39 (9.7.39-b7bc0e) +@set DATE 2025-12-25 diff --git a/lisp/org/org-archive.el b/lisp/org/org-archive.el index c66dc216..102ac359 100644 --- a/lisp/org/org-archive.el +++ b/lisp/org/org-archive.el @@ -207,8 +207,9 @@ an error if LOCATION is not a valid archive location." "Move the current subtree to the archive. The archive can be a certain top-level heading in the current file, or in a different file. The tree will be moved to that -location, the subtree heading be marked DONE, and the current -time will be added. +location. If `org-archive-mark-done' is non-nil and the subtree +has a TODO keyword, the subtree heading will be marked DONE. +And the current time will be added. When called with a single prefix argument FIND-DONE, find whole trees without any open TODO items and archive them (after getting diff --git a/lisp/org/org-loaddefs.el b/lisp/org/org-loaddefs.el index 05576956..4a108521 100644 --- a/lisp/org/org-loaddefs.el +++ b/lisp/org/org-loaddefs.el @@ -1093,8 +1093,9 @@ archive file is. Move the current subtree to the archive. The archive can be a certain top-level heading in the current file, or in a different file. The tree will be moved to that -location, the subtree heading be marked DONE, and the current -time will be added. +location. If `org-archive-mark-done' is non-nil and the subtree +has a TODO keyword, the subtree heading will be marked DONE. +And the current time will be added. When called with a single prefix argument FIND-DONE, find whole trees without any open TODO items and archive them (after getting diff --git a/lisp/org/org-pkg.el b/lisp/org/org-pkg.el index 7da8ef5a..95ba91db 100644 --- a/lisp/org/org-pkg.el +++ b/lisp/org/org-pkg.el @@ -1,2 +1,2 @@ ;; Generated package description from org.el -*- no-byte-compile: t -*- -(define-package "org" "9.7.38" "Outline-based notes management and organizer" '((emacs "26.1")) :commit "a8fd61c53d1b2cb68956287ee12c00c81099f701" :authors '(("Carsten Dominik" . "carsten.dominik@gmail.com")) :maintainer '("Ihor Radchenko" . "yantar92@posteo.net") :keywords '("outlines" "hypermedia" "calendar" "text") :url "https://orgmode.org") +(define-package "org" "9.7.39" "Outline-based notes management and organizer" '((emacs "26.1")) :commit "b7bc0ede67f3e2a477f4d6ad0c46a6d80bca5aea" :authors '(("Carsten Dominik" . "carsten.dominik@gmail.com")) :maintainer '("Ihor Radchenko" . "yantar92@posteo.net") :keywords '("outlines" "hypermedia" "calendar" "text") :url "https://orgmode.org") diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index 5334b735..3c6ac21b 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -5,13 +5,13 @@ (defun org-release () "The release version of Org. Inserted by installing Org mode or when a release is made." - (let ((org-release "9.7.38")) + (let ((org-release "9.7.39")) org-release)) ;;;###autoload (defun org-git-version () "The Git version of Org mode. Inserted by installing Org or when a release is made." - (let ((org-git-version "9.7.38-a8fd61")) + (let ((org-git-version "9.7.39-b7bc0e")) org-git-version)) (provide 'org-version) diff --git a/lisp/org/org.el b/lisp/org/org.el index decd65a0..4c10d619 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -9,7 +9,7 @@ ;; URL: https://orgmode.org ;; Package-Requires: ((emacs "26.1")) -;; Version: 9.7.38 +;; Version: 9.7.39 ;; This file is part of GNU Emacs. ;; diff --git a/lisp/org/org.info b/lisp/org/org.info index 13509b1c..26d8eaca 100644 --- a/lisp/org/org.info +++ b/lisp/org/org.info @@ -1,4 +1,4 @@ -This is org.info, produced by makeinfo version 7.1.1 from org.texi. +This is org.info, produced by makeinfo version 7.2 from org.texi. This manual is for Org version 9.7. @@ -507,7 +507,6 @@ Tables in Arbitrary Syntax * A LaTeX example:: Step by step, almost a tutorial. * Translator functions:: Copy and modify. -  File: org.info, Node: Introduction, Next: Document Structure, Prev: Top, Up: Top @@ -16441,7 +16440,6 @@ block for execution, like a reset instruction. For example, you may use (add-to-list 'org-babel-default-header-args:gnuplot '((:prologue . "reset"))) - Likewise, the value of the ‘epilogue’ header argument is for appending to the end of the code block for execution. @@ -21192,7 +21190,7 @@ D Main Index * enum, Texinfo attribute: Plain lists in Texinfo export. (line 6) * epilogue, header argument: Environment of a Code Block. - (line 372) + (line 371) * escape character: Escape Character. (line 6) * escape syntax, for links: Link Format. (line 17) * eval, header argument: Evaluating Code Blocks. @@ -24437,605 +24435,605 @@ org-customize’ and then click yourself through the tree. * user-full-name: Export Settings. (line 25) * user-mail-address: Export Settings. (line 35) -  Tag Table: -Node: Top870 -Node: Introduction22985 -Node: Summary23447 -Node: Installation26596 -Ref: Using Emacs packaging system27517 -Ref: Using Org's git repository28021 -Ref: Installing Org's contributed packages28969 -Node: Activation29595 -Ref: Activation-Footnote-131267 -Node: Feedback31395 -Ref: How to create a useful backtrace34600 -Ref: How to profile Org performance35714 -Ref: Feedback-Footnote-137939 -Node: Conventions38065 -Ref: TODO keywords tags properties etc38236 -Ref: Key bindings and commands39129 -Node: Document Structure39759 -Node: Headlines40931 -Ref: Headlines-Footnote-142230 -Node: Visibility Cycling42509 -Node: Global and local cycling42899 -Ref: Global and local cycling-Footnote-145610 -Ref: Global and local cycling-Footnote-245672 -Node: Initial visibility45976 -Ref: Initial visibility-Footnote-147166 -Node: Catching invisible edits47359 -Node: Motion48101 -Node: Structure Editing49565 -Node: Sparse Trees56145 -Ref: Sparse Trees-Footnote-158742 -Ref: Sparse Trees-Footnote-258857 -Node: Plain Lists58933 -Ref: Plain Lists-Footnote-166509 -Ref: Plain Lists-Footnote-266873 -Ref: Plain Lists-Footnote-366973 -Ref: Plain Lists-Footnote-467230 -Ref: Plain Lists-Footnote-567405 -Ref: Plain Lists-Footnote-667509 -Ref: Plain Lists-Footnote-767615 -Node: Drawers67685 -Ref: Drawers-Footnote-169380 -Node: Blocks69492 -Node: Tables70085 -Node: Built-in Table Editor70768 -Ref: Creation and conversion72502 -Ref: Re-aligning and field motion73440 -Ref: Column and row editing74375 -Ref: Regions76805 -Ref: Calculations78200 -Ref: Miscellaneous (1)79013 -Ref: Built-in Table Editor-Footnote-181490 -Node: Column Width and Alignment81598 -Node: Column Groups84933 -Node: Orgtbl Mode86500 -Node: The Spreadsheet87315 -Node: References88787 -Ref: Field references89246 -Ref: Range references91677 -Ref: Field coordinates in formulas92936 -Ref: Named references93921 -Ref: Remote references94888 -Ref: References-Footnote-195810 -Ref: References-Footnote-296038 -Ref: References-Footnote-396141 -Node: Formula syntax for Calc96466 -Ref: Formula syntax for Calc-Footnote-1102328 -Node: Formula syntax for Lisp102651 -Node: Durations and time values105180 -Node: Field and range formulas106567 -Node: Column formulas109035 -Node: Lookup functions111147 -Node: Editing and debugging formulas113116 -Ref: Using multiple TBLFM lines117632 -Ref: Debugging formulas118475 -Node: Updating the table118893 -Node: Advanced features120265 -Ref: Advanced features-Footnote-1124716 -Node: Org Plot124824 -Ref: Graphical plots using Gnuplot125025 -Ref: Plot options127546 -Ref: ASCII bar plots130461 -Node: Hyperlinks131710 -Node: Link Format132574 -Ref: Link Format-Footnote-1134737 -Ref: Link Format-Footnote-2134969 -Node: Internal Links135100 -Ref: Internal Links-Footnote-1137658 -Ref: Internal Links-Footnote-2137898 -Node: Radio Targets138039 -Node: External Links138756 -Ref: External Links-Footnote-1144362 -Node: Handling Links144786 -Ref: Handling Links-Footnote-1153297 -Ref: Handling Links-Footnote-2153487 -Ref: Handling Links-Footnote-3153621 -Ref: Handling Links-Footnote-4153917 -Ref: Handling Links-Footnote-5154179 -Ref: Handling Links-Footnote-6154301 -Node: Using Links Outside Org154376 -Node: Link Abbreviations154851 -Node: Search Options157811 -Ref: Search Options-Footnote-1159956 -Node: Custom Searches160037 -Node: TODO Items161071 -Ref: TODO Items-Footnote-1162196 -Node: TODO Basics162310 -Node: TODO Extensions164939 -Node: Workflow states165992 -Ref: Workflow states-Footnote-1167391 -Node: TODO types167507 -Ref: TODO types-Footnote-1169316 -Node: Multiple sets in one file169388 -Node: Fast access to TODO states171332 -Ref: Fast access to TODO states-Footnote-1172212 -Node: Per-file keywords172319 -Ref: Per-file keywords-Footnote-1173787 -Node: Faces for TODO keywords173991 -Node: TODO dependencies175064 -Node: Progress Logging177553 -Node: Closing items178690 -Ref: Closing items-Footnote-1179690 -Ref: Closing items-Footnote-2179764 -Node: Tracking TODO state changes179842 -Ref: Tracking TODO state changes-Footnote-1182976 -Ref: Tracking TODO state changes-Footnote-2183038 -Ref: Tracking TODO state changes-Footnote-3183195 -Node: Tracking your habits183473 -Node: Priorities187983 -Ref: Priorities-Footnote-1190491 -Node: Breaking Down Tasks190564 -Ref: Breaking Down Tasks-Footnote-1192611 -Node: Checkboxes192718 -Ref: Checkboxes-Footnote-1198432 -Ref: Checkboxes-Footnote-2198560 -Ref: Checkboxes-Footnote-3198740 -Node: Tags198854 -Node: Tag Inheritance199947 -Ref: Tag Inheritance-Footnote-1201468 -Node: Setting Tags201572 -Ref: Setting Tags-Footnote-1208340 -Ref: Setting Tags-Footnote-2208518 -Node: Tag Hierarchy208596 -Node: Tag Searches212191 -Node: Properties and Columns213416 -Node: Property Syntax214804 -Node: Special Properties219401 -Ref: Special Properties-Footnote-1221150 -Node: Property Searches221446 -Node: Property Inheritance222832 -Node: Column View224704 -Node: Defining columns225948 -Node: Scope of column definitions226333 -Node: Column attributes227392 -Ref: Column attributes-Footnote-1231795 -Ref: Column attributes-Footnote-2231926 -Ref: Column attributes-Footnote-3232124 -Node: Using column view232263 -Ref: Turning column view on or off232429 -Ref: Editing values233470 -Ref: Modifying column view on-the-fly234873 -Node: Capturing column view235568 -Ref: Capturing column view-Footnote-1239542 -Node: Dates and Times239678 -Node: Timestamps240847 -Ref: Timestamps-Footnote-1243811 -Ref: Timestamps-Footnote-2244107 -Node: Creating Timestamps244895 -Node: The date/time prompt247906 -Ref: The date/time prompt-Footnote-1252859 -Ref: The date/time prompt-Footnote-2253030 -Ref: The date/time prompt-Footnote-3253141 -Ref: The date/time prompt-Footnote-4253392 -Node: Custom time format253490 -Node: Deadlines and Scheduling255257 -Ref: Deadlines and Scheduling-Footnote-1258825 -Node: Inserting deadline/schedule258988 -Ref: Inserting deadline/schedule-Footnote-1260980 -Ref: Inserting deadline/schedule-Footnote-2261141 -Ref: Inserting deadline/schedule-Footnote-3261267 -Node: Repeated tasks261393 -Ref: Repeated tasks-Footnote-1266109 -Ref: Repeated tasks-Footnote-2266192 -Ref: Repeated tasks-Footnote-3266475 -Node: Clocking Work Time266697 -Ref: Clocking Work Time-Footnote-1267900 -Ref: Clocking Work Time-Footnote-2268053 -Node: Clocking commands268195 -Ref: Clocking commands-Footnote-1273424 -Ref: Clocking commands-Footnote-2273535 -Ref: Clocking commands-Footnote-3273617 -Ref: Clocking commands-Footnote-4273680 -Node: The clock table273763 -Ref: The clock table-Footnote-1281871 -Ref: The clock table-Footnote-2281980 -Ref: The clock table-Footnote-3282078 -Node: Resolving idle time282203 -Ref: Resolving idle time (1)282399 -Ref: Continuous clocking285582 -Ref: Clocking out automatically after some idle time286088 -Ref: Resolving idle time-Footnote-1286718 -Node: Effort Estimates287165 -Ref: Effort Estimates-Footnote-1290120 -Node: Timers290231 -Node: Refiling and Archiving292444 -Node: Refile and Copy293007 -Ref: Refile and Copy-Footnote-1295835 -Node: Archiving295949 -Node: Moving subtrees296662 -Node: Internal archiving298788 -Node: Capture and Attachments301515 -Node: Capture302320 -Node: Setting up capture302840 -Node: Using capture303203 -Node: Capture templates305597 -Node: Template elements307638 -Ref: Template elements-Footnote-1315901 -Ref: Template elements-Footnote-2316234 -Ref: Template elements-Footnote-3316579 -Node: Template expansion316674 -Ref: Template expansion-Footnote-1320975 -Ref: Template expansion-Footnote-2321066 -Ref: Template expansion-Footnote-3321256 -Node: Templates in contexts321355 -Node: Attachments322194 -Node: Attachment defaults and dispatcher323224 -Ref: Attachment defaults and dispatcher-Footnote-1326562 -Node: Attachment options326713 -Node: Attachment links330730 -Node: Automatic version-control with Git331369 -Node: Attach from Dired331884 -Node: RSS Feeds333248 -Node: Agenda Views334699 -Node: Agenda Files337106 -Ref: Agenda Files-Footnote-1340015 -Ref: Agenda Files-Footnote-2340159 -Node: Agenda Dispatcher340357 -Ref: Agenda Dispatcher-Footnote-1343231 -Node: Built-in Agenda Views343329 -Node: Weekly/daily agenda343926 -Ref: Calendar/Diary integration345381 -Ref: Anniversaries from BBDB347455 -Ref: Appointment reminders349244 -Ref: Weekly/daily agenda-Footnote-1349794 -Ref: Weekly/daily agenda-Footnote-2350038 -Node: Global TODO list350258 -Node: Matching tags and properties353109 -Ref: Matching tags and properties-Footnote-1361592 -Node: Search view361697 -Node: Stuck projects363344 -Node: Presentation and Sorting365471 -Node: Categories366448 -Node: Time-of-day specifications367194 -Ref: Time-of-day specifications-Footnote-1369183 -Node: Sorting of agenda items369306 -Node: Filtering/limiting agenda items370894 -Ref: Filtering in the agenda371599 -Ref: Computed tag filtering375733 -Ref: Setting limits for the agenda377225 -Ref: Filtering/limiting agenda items-Footnote-1378774 -Node: Agenda Commands379325 -Ref: Motion (1)380054 -Ref: View/Go to Org file380257 -Ref: Change display381763 -Ref: Remote editing389534 -Ref: Bulk remote editing selected entries394887 -Ref: Calendar commands397975 -Ref: Quit and exit399855 -Ref: Agenda Commands-Footnote-1400217 -Ref: Agenda Commands-Footnote-2400293 -Ref: Agenda Commands-Footnote-3400397 -Node: Custom Agenda Views400484 -Node: Storing searches401136 -Ref: Storing searches-Footnote-1404087 -Ref: Storing searches-Footnote-2404204 -Node: Block agenda404450 -Node: Setting options405779 -Node: Exporting Agenda Views409386 -Ref: Exporting Agenda Views-Footnote-1413924 -Ref: Exporting Agenda Views-Footnote-2414141 -Ref: Exporting Agenda Views-Footnote-3414291 -Ref: Exporting Agenda Views-Footnote-4414478 -Node: Agenda Column View414560 -Node: Markup for Rich Contents417901 -Node: Paragraphs419198 -Node: Emphasis and Monospace420333 -Ref: Emphasis and Monospace-Footnote-1421914 -Node: Subscripts and Superscripts422000 -Ref: Subscripts and Superscripts-Footnote-1423738 -Node: Special Symbols423855 -Ref: Special Symbols-Footnote-1425765 -Ref: Special Symbols-Footnote-2425930 -Node: Embedded LaTeX426027 -Ref: Embedded LaTeX-Footnote-1426875 -Node: LaTeX fragments427065 -Ref: LaTeX fragments-Footnote-1429518 -Node: Previewing LaTeX fragments429711 -Ref: Previewing LaTeX fragments-Footnote-1431193 -Node: CDLaTeX mode431442 -Ref: CDLaTeX mode-Footnote-1434191 -Node: Literal Examples434338 -Ref: Literal Examples-Footnote-1439441 -Ref: Literal Examples-Footnote-2439897 -Ref: Literal Examples-Footnote-3440075 -Ref: Literal Examples-Footnote-4440229 -Ref: Literal Examples-Footnote-5440457 -Ref: Literal Examples-Footnote-6440642 -Node: Images440740 -Ref: Images-Footnote-1444805 -Ref: Images-Footnote-2444928 -Ref: Images-Footnote-3445089 -Node: Captions445175 -Node: Horizontal Rules445873 -Node: Creating Footnotes446129 -Ref: Creating Footnotes-Footnote-1449256 -Ref: Creating Footnotes-Footnote-2449362 -Node: Exporting449469 -Node: The Export Dispatcher452237 -Node: Export Settings455693 -Ref: Export Settings-Footnote-1464443 -Ref: Export Settings-Footnote-2464555 -Ref: Export Settings-Footnote-3464656 -Node: Table of Contents464852 -Ref: Table of Contents-Footnote-1467511 -Node: Include Files467677 -Ref: Include Files-Footnote-1470762 -Node: Macro Replacement470940 -Ref: Macro Replacement-Footnote-1474816 -Node: Comment Lines475033 -Ref: Comment Lines-Footnote-1475896 -Node: ASCII/Latin-1/UTF-8 export476000 -Ref: ASCII export commands476854 -Ref: ASCII specific export settings477387 -Ref: Header and sectioning structure477830 -Ref: Quoting ASCII text478104 -Ref: ASCII specific attributes478474 -Ref: ASCII special blocks478750 -Node: Beamer Export479096 -Node: Beamer export commands479846 -Node: Beamer specific export settings480551 -Node: Frames and Blocks in Beamer482453 -Ref: Frames and Blocks in Beamer-Footnote-1485800 -Node: Beamer specific syntax485959 -Node: Editing support487932 -Node: A Beamer example488403 -Node: HTML Export489657 -Node: HTML export commands490845 -Node: HTML specific export settings491387 -Node: HTML doctypes493596 -Node: HTML preamble and postamble495766 -Node: Bare HTML496819 -Node: Quoting HTML tags497407 -Node: Headlines in HTML export498087 -Node: Links in HTML export498682 -Node: Tables in HTML export500139 -Node: Images in HTML export501592 -Node: Math formatting in HTML export503080 -Ref: Math formatting in HTML export-Footnote-1504470 -Ref: Math formatting in HTML export-Footnote-2504662 -Node: Text areas in HTML export504945 -Node: CSS support506086 -Ref: CSS support-Footnote-1509715 -Node: JavaScript support509895 -Node: LaTeX Export513074 -Ref: LaTeX Export-Footnote-1515298 -Node: LaTeX/PDF export commands515446 -Ref: LaTeX/PDF export commands-Footnote-1516947 -Node: LaTeX specific export settings517145 -Node: LaTeX header and sectioning520764 -Node: Quoting LaTeX code524577 -Node: Tables in LaTeX export525460 -Node: Images in LaTeX export530706 -Node: Plain lists in LaTeX export533354 -Node: Source blocks in LaTeX export534373 -Ref: Source blocks in LaTeX export-Footnote-1536499 -Node: Example blocks in LaTeX export536657 -Node: Special blocks in LaTeX export537382 -Node: Horizontal rules in LaTeX export538641 -Node: Verse blocks in LaTeX export539077 -Node: Quote blocks in LaTeX export541800 -Node: Markdown Export542918 -Ref: Markdown export commands543647 -Ref: Header and sectioning structure (1)544084 -Node: OpenDocument Text Export544628 -Ref: OpenDocument Text Export-Footnote-1545733 -Node: Pre-requisites for ODT export545883 -Node: ODT export commands546260 -Node: ODT specific export settings547440 -Node: Extending ODT export548485 -Ref: Automatically exporting to other formats549293 -Ref: Converting between document formats549718 -Node: Applying custom styles550259 -Ref: Applying custom styles the easy way550790 -Ref: Using third-party styles and templates551744 -Node: Links in ODT export552040 -Node: Tables in ODT export552702 -Node: Images in ODT export554708 -Ref: Embedding images554912 -Ref: Embedding clickable images555228 -Ref: Sizing and scaling of embedded images555562 -Ref: Anchoring of images557240 -Node: Math formatting in ODT export557561 -Node: LaTeX math snippets557990 -Ref: LaTeX math snippets-Footnote-1560239 -Ref: LaTeX math snippets-Footnote-2560298 -Node: MathML and OpenDocument formula files560344 -Node: Labels and captions in ODT export560852 -Node: Literal examples in ODT export562120 -Node: Advanced topics in ODT export562959 -Ref: Configuring a document converter563268 -Ref: Working with OpenDocument style files564206 -Ref: x-orgodtstyles-xml564672 -Ref: x-orgodtcontenttemplate-xml565014 -Ref: x-overriding-factory-styles565658 -Ref: Creating one-off styles566901 -Ref: Customizing tables in ODT export568902 -Ref: Validating OpenDocument XML573762 -Ref: Advanced topics in ODT export-Footnote-1574556 -Ref: Advanced topics in ODT export-Footnote-2574661 -Ref: Advanced topics in ODT export-Footnote-3574754 -Node: Org Export575102 -Ref: Org export commands575456 -Node: Texinfo Export575762 -Node: Texinfo export commands576802 -Node: Texinfo specific export settings577427 -Node: Texinfo file header579135 -Node: Texinfo title and copyright page580115 -Node: Info directory file581478 -Node: Headings and sectioning structure582192 -Node: Indices584213 -Node: Quoting Texinfo code585239 -Node: Plain lists in Texinfo export585737 -Node: Tables in Texinfo export590465 -Node: Images in Texinfo export590960 -Node: Quotations in Texinfo export591597 -Node: Key bindings in Texinfo export592549 -Node: Special blocks in Texinfo export593350 -Node: A Texinfo example594183 -Node: iCalendar Export596274 -Ref: iCalendar Export-Footnote-1601491 -Node: Other Built-in Backends601674 -Node: Advanced Export Configuration602300 -Ref: Export hooks602499 -Ref: Filters603719 -Ref: Defining filters for individual files606219 -Ref: Summary of the export process607024 -Ref: Extending an existing backend612373 -Ref: Advanced Export Configuration-Footnote-1614714 -Ref: Advanced Export Configuration-Footnote-2615070 -Ref: Advanced Export Configuration-Footnote-3615219 -Node: Export Region615305 -Node: Publishing616363 -Node: Configuration617237 -Node: Project alist618019 -Node: Sources and destinations619157 -Node: Selecting files620475 -Node: Publishing action621428 -Ref: Publishing action-Footnote-1623261 -Node: Publishing options623424 -Ref: Generic properties624176 -Ref: ASCII specific properties626864 -Ref: Beamer specific properties628464 -Ref: HTML specific properties629096 -Ref: LaTeX specific properties634332 -Ref: Markdown specific properties637840 -Ref: ODT specific properties638137 -Ref: Texinfo specific properties639134 -Node: Publishing links640562 -Node: Site map642012 -Node: Generating an index644838 -Node: Uploading Files645630 -Node: Sample Configuration647411 -Node: Simple example647909 -Node: Complex example648625 -Node: Triggering Publication650713 -Node: Citation handling651739 -Node: Citations654781 -Node: Citation export processors657143 -Node: Bibliography printing660613 -Node: Bibliography options in the biblatex and csl export processors661761 -Node: Working with Source Code663878 -Node: Features Overview666183 -Node: Structure of Code Blocks668928 -Node: Using Header Arguments671790 -Ref: System-wide header arguments672515 -Ref: Header arguments in Org mode properties674186 -Ref: Code block specific header arguments676010 -Ref: Header arguments in function calls677509 -Node: Environment of a Code Block678183 -Ref: Passing arguments678397 -Ref: Using sessions686936 -Ref: Choosing a working directory688335 -Ref: Inserting headers and footers690637 -Node: Evaluating Code Blocks691147 -Ref: How to evaluate source code691600 -Ref: Limit code block evaluation694546 -Ref: Cache results of evaluation695532 -Ref: Evaluating Code Blocks-Footnote-1698043 -Ref: Evaluating Code Blocks-Footnote-2698177 -Node: Results of Evaluation698335 -Ref: Collection699142 -Ref: Type700601 -Ref: Format704621 -Ref: Handling707213 -Ref: Post-processing708604 -Ref: Results of Evaluation-Footnote-1710354 -Node: Exporting Code Blocks710512 -Node: Extracting Source Code714183 -Ref: Header arguments715164 -Ref: Functions719391 -Ref: Tangle hooks719642 -Ref: Jumping between code and Org720418 -Node: Languages720927 -Node: Editing Source Code721928 -Node: Noweb Reference Syntax724866 -Ref: Noweb Reference Syntax-Footnote-1731593 -Ref: Noweb Reference Syntax-Footnote-2731684 -Ref: Noweb Reference Syntax-Footnote-3732297 -Node: Library of Babel732417 -Node: Key bindings and Useful Functions733131 -Node: Batch Execution735556 -Node: Miscellaneous736337 -Node: Completion737798 -Node: Structure Templates739721 -Ref: Structure Templates-Footnote-1741471 -Node: Speed Keys741563 -Node: Clean View742730 -Node: Org Indent Mode743930 -Ref: Org Indent Mode-Footnote-1745136 -Node: Hard indentation745360 -Ref: Hard indentation-Footnote-1746841 -Ref: Hard indentation-Footnote-2746947 -Node: Execute commands in the active region747091 -Node: Dynamic Headline Numbering748103 -Node: The Very Busy C-c C-c Key749269 -Node: In-buffer Settings751257 -Ref: In-buffer Settings-Footnote-1761195 -Node: Regular Expressions761393 -Node: Org Syntax762015 -Node: Documentation Access763632 -Node: Escape Character764049 -Node: Code Evaluation Security764910 -Node: Interaction767775 -Node: Cooperation768196 -Node: Conflicts771262 -Node: TTY Keys775851 -Node: Protocols777488 -Node: The store-link protocol778949 -Node: The capture protocol780108 -Node: The open-source protocol781761 -Node: Org Crypt785009 -Node: Org Mobile786882 -Node: Setting up the staging area788267 -Ref: Setting up the staging area-Footnote-1789507 -Ref: Setting up the staging area-Footnote-2789714 -Node: Pushing to the mobile application789886 -Ref: Pushing to the mobile application-Footnote-1790897 -Ref: Pushing to the mobile application-Footnote-2790988 -Ref: Pushing to the mobile application-Footnote-3791355 -Node: Pulling from the mobile application791431 -Ref: Pulling from the mobile application-Footnote-1793744 -Node: Drag and Drop & yank-media793797 -Ref: Drag and Drop & yank-media-Footnote-1795422 -Node: Hacking795568 -Node: Hooks796516 -Node: Add-on Packages796800 -Node: Adding Hyperlink Types797269 -Node: Adding Export Backends801079 -Node: Tables in Arbitrary Syntax802322 -Node: Radio tables803586 -Node: A LaTeX example805717 -Ref: A LaTeX example-Footnote-1809567 -Ref: A LaTeX example-Footnote-2809610 -Ref: A LaTeX example-Footnote-3809771 -Node: Translator functions810223 -Node: Dynamic Blocks812405 -Node: Special Agenda Views814649 -Ref: Special Agenda Views-Footnote-1818360 -Ref: Special Agenda Views-Footnote-2818566 -Node: Speeding Up Your Agendas818698 -Node: Extracting Agenda Information819921 -Node: Using the Property API823726 -Node: Using the Mapping API827075 -Node: History and Acknowledgments831106 -Ref: From Carsten831304 -Ref: From Bastien834741 -Ref: List of Contributions836869 -Node: GNU Free Documentation License845513 -Ref: ADDENDUM How to use this License for your documents869274 -Node: Main Index870663 -Node: Key Index971217 -Node: Command and Function Index1028440 -Node: Variable Index1077237 +Node: Top868 +Node: Introduction22982 +Node: Summary23444 +Node: Installation26593 +Ref: Using Emacs packaging system27514 +Ref: Using Org's git repository28018 +Ref: Installing Org's contributed packages28966 +Node: Activation29592 +Ref: Activation-Footnote-131264 +Node: Feedback31392 +Ref: How to create a useful backtrace34597 +Ref: How to profile Org performance35711 +Ref: Feedback-Footnote-137936 +Node: Conventions38062 +Ref: TODO keywords tags properties etc38233 +Ref: Key bindings and commands39126 +Node: Document Structure39756 +Node: Headlines40928 +Ref: Headlines-Footnote-142227 +Node: Visibility Cycling42506 +Node: Global and local cycling42896 +Ref: Global and local cycling-Footnote-145607 +Ref: Global and local cycling-Footnote-245669 +Node: Initial visibility45973 +Ref: Initial visibility-Footnote-147163 +Node: Catching invisible edits47356 +Node: Motion48098 +Node: Structure Editing49562 +Node: Sparse Trees56142 +Ref: Sparse Trees-Footnote-158739 +Ref: Sparse Trees-Footnote-258854 +Node: Plain Lists58930 +Ref: Plain Lists-Footnote-166506 +Ref: Plain Lists-Footnote-266870 +Ref: Plain Lists-Footnote-366970 +Ref: Plain Lists-Footnote-467227 +Ref: Plain Lists-Footnote-567402 +Ref: Plain Lists-Footnote-667506 +Ref: Plain Lists-Footnote-767612 +Node: Drawers67682 +Ref: Drawers-Footnote-169377 +Node: Blocks69489 +Node: Tables70082 +Node: Built-in Table Editor70765 +Ref: Creation and conversion72499 +Ref: Re-aligning and field motion73437 +Ref: Column and row editing74372 +Ref: Regions76802 +Ref: Calculations78197 +Ref: Miscellaneous (1)79010 +Ref: Built-in Table Editor-Footnote-181487 +Node: Column Width and Alignment81595 +Node: Column Groups84930 +Node: Orgtbl Mode86497 +Node: The Spreadsheet87312 +Node: References88784 +Ref: Field references89243 +Ref: Range references91674 +Ref: Field coordinates in formulas92933 +Ref: Named references93918 +Ref: Remote references94885 +Ref: References-Footnote-195807 +Ref: References-Footnote-296035 +Ref: References-Footnote-396138 +Node: Formula syntax for Calc96463 +Ref: Formula syntax for Calc-Footnote-1102325 +Node: Formula syntax for Lisp102648 +Node: Durations and time values105177 +Node: Field and range formulas106564 +Node: Column formulas109032 +Node: Lookup functions111144 +Node: Editing and debugging formulas113113 +Ref: Using multiple TBLFM lines117629 +Ref: Debugging formulas118472 +Node: Updating the table118890 +Node: Advanced features120262 +Ref: Advanced features-Footnote-1124713 +Node: Org Plot124821 +Ref: Graphical plots using Gnuplot125022 +Ref: Plot options127543 +Ref: ASCII bar plots130458 +Node: Hyperlinks131707 +Node: Link Format132571 +Ref: Link Format-Footnote-1134734 +Ref: Link Format-Footnote-2134966 +Node: Internal Links135097 +Ref: Internal Links-Footnote-1137655 +Ref: Internal Links-Footnote-2137895 +Node: Radio Targets138036 +Node: External Links138753 +Ref: External Links-Footnote-1144359 +Node: Handling Links144783 +Ref: Handling Links-Footnote-1153294 +Ref: Handling Links-Footnote-2153484 +Ref: Handling Links-Footnote-3153618 +Ref: Handling Links-Footnote-4153914 +Ref: Handling Links-Footnote-5154176 +Ref: Handling Links-Footnote-6154298 +Node: Using Links Outside Org154373 +Node: Link Abbreviations154848 +Node: Search Options157808 +Ref: Search Options-Footnote-1159953 +Node: Custom Searches160034 +Node: TODO Items161068 +Ref: TODO Items-Footnote-1162193 +Node: TODO Basics162307 +Node: TODO Extensions164936 +Node: Workflow states165989 +Ref: Workflow states-Footnote-1167388 +Node: TODO types167504 +Ref: TODO types-Footnote-1169313 +Node: Multiple sets in one file169385 +Node: Fast access to TODO states171329 +Ref: Fast access to TODO states-Footnote-1172209 +Node: Per-file keywords172316 +Ref: Per-file keywords-Footnote-1173784 +Node: Faces for TODO keywords173988 +Node: TODO dependencies175061 +Node: Progress Logging177550 +Node: Closing items178687 +Ref: Closing items-Footnote-1179687 +Ref: Closing items-Footnote-2179761 +Node: Tracking TODO state changes179839 +Ref: Tracking TODO state changes-Footnote-1182973 +Ref: Tracking TODO state changes-Footnote-2183035 +Ref: Tracking TODO state changes-Footnote-3183192 +Node: Tracking your habits183470 +Node: Priorities187980 +Ref: Priorities-Footnote-1190488 +Node: Breaking Down Tasks190561 +Ref: Breaking Down Tasks-Footnote-1192608 +Node: Checkboxes192715 +Ref: Checkboxes-Footnote-1198429 +Ref: Checkboxes-Footnote-2198557 +Ref: Checkboxes-Footnote-3198737 +Node: Tags198851 +Node: Tag Inheritance199944 +Ref: Tag Inheritance-Footnote-1201465 +Node: Setting Tags201569 +Ref: Setting Tags-Footnote-1208337 +Ref: Setting Tags-Footnote-2208515 +Node: Tag Hierarchy208593 +Node: Tag Searches212188 +Node: Properties and Columns213413 +Node: Property Syntax214801 +Node: Special Properties219398 +Ref: Special Properties-Footnote-1221147 +Node: Property Searches221443 +Node: Property Inheritance222829 +Node: Column View224701 +Node: Defining columns225945 +Node: Scope of column definitions226330 +Node: Column attributes227389 +Ref: Column attributes-Footnote-1231792 +Ref: Column attributes-Footnote-2231923 +Ref: Column attributes-Footnote-3232121 +Node: Using column view232260 +Ref: Turning column view on or off232426 +Ref: Editing values233467 +Ref: Modifying column view on-the-fly234870 +Node: Capturing column view235565 +Ref: Capturing column view-Footnote-1239539 +Node: Dates and Times239675 +Node: Timestamps240844 +Ref: Timestamps-Footnote-1243808 +Ref: Timestamps-Footnote-2244104 +Node: Creating Timestamps244892 +Node: The date/time prompt247903 +Ref: The date/time prompt-Footnote-1252856 +Ref: The date/time prompt-Footnote-2253027 +Ref: The date/time prompt-Footnote-3253138 +Ref: The date/time prompt-Footnote-4253389 +Node: Custom time format253487 +Node: Deadlines and Scheduling255254 +Ref: Deadlines and Scheduling-Footnote-1258822 +Node: Inserting deadline/schedule258985 +Ref: Inserting deadline/schedule-Footnote-1260977 +Ref: Inserting deadline/schedule-Footnote-2261138 +Ref: Inserting deadline/schedule-Footnote-3261264 +Node: Repeated tasks261390 +Ref: Repeated tasks-Footnote-1266106 +Ref: Repeated tasks-Footnote-2266189 +Ref: Repeated tasks-Footnote-3266472 +Node: Clocking Work Time266694 +Ref: Clocking Work Time-Footnote-1267897 +Ref: Clocking Work Time-Footnote-2268050 +Node: Clocking commands268192 +Ref: Clocking commands-Footnote-1273421 +Ref: Clocking commands-Footnote-2273532 +Ref: Clocking commands-Footnote-3273614 +Ref: Clocking commands-Footnote-4273677 +Node: The clock table273760 +Ref: The clock table-Footnote-1281868 +Ref: The clock table-Footnote-2281977 +Ref: The clock table-Footnote-3282075 +Node: Resolving idle time282200 +Ref: Resolving idle time (1)282396 +Ref: Continuous clocking285579 +Ref: Clocking out automatically after some idle time286085 +Ref: Resolving idle time-Footnote-1286715 +Node: Effort Estimates287162 +Ref: Effort Estimates-Footnote-1290117 +Node: Timers290228 +Node: Refiling and Archiving292441 +Node: Refile and Copy293004 +Ref: Refile and Copy-Footnote-1295832 +Node: Archiving295946 +Node: Moving subtrees296659 +Node: Internal archiving298785 +Node: Capture and Attachments301512 +Node: Capture302317 +Node: Setting up capture302837 +Node: Using capture303200 +Node: Capture templates305594 +Node: Template elements307635 +Ref: Template elements-Footnote-1315898 +Ref: Template elements-Footnote-2316231 +Ref: Template elements-Footnote-3316576 +Node: Template expansion316671 +Ref: Template expansion-Footnote-1320972 +Ref: Template expansion-Footnote-2321063 +Ref: Template expansion-Footnote-3321253 +Node: Templates in contexts321352 +Node: Attachments322191 +Node: Attachment defaults and dispatcher323221 +Ref: Attachment defaults and dispatcher-Footnote-1326559 +Node: Attachment options326710 +Node: Attachment links330727 +Node: Automatic version-control with Git331366 +Node: Attach from Dired331881 +Node: RSS Feeds333245 +Node: Agenda Views334696 +Node: Agenda Files337103 +Ref: Agenda Files-Footnote-1340012 +Ref: Agenda Files-Footnote-2340156 +Node: Agenda Dispatcher340354 +Ref: Agenda Dispatcher-Footnote-1343228 +Node: Built-in Agenda Views343326 +Node: Weekly/daily agenda343923 +Ref: Calendar/Diary integration345378 +Ref: Anniversaries from BBDB347452 +Ref: Appointment reminders349241 +Ref: Weekly/daily agenda-Footnote-1349791 +Ref: Weekly/daily agenda-Footnote-2350035 +Node: Global TODO list350255 +Node: Matching tags and properties353106 +Ref: Matching tags and properties-Footnote-1361589 +Node: Search view361694 +Node: Stuck projects363341 +Node: Presentation and Sorting365468 +Node: Categories366445 +Node: Time-of-day specifications367191 +Ref: Time-of-day specifications-Footnote-1369180 +Node: Sorting of agenda items369303 +Node: Filtering/limiting agenda items370891 +Ref: Filtering in the agenda371596 +Ref: Computed tag filtering375730 +Ref: Setting limits for the agenda377222 +Ref: Filtering/limiting agenda items-Footnote-1378771 +Node: Agenda Commands379322 +Ref: Motion (1)380051 +Ref: View/Go to Org file380254 +Ref: Change display381760 +Ref: Remote editing389531 +Ref: Bulk remote editing selected entries394884 +Ref: Calendar commands397972 +Ref: Quit and exit399852 +Ref: Agenda Commands-Footnote-1400214 +Ref: Agenda Commands-Footnote-2400290 +Ref: Agenda Commands-Footnote-3400394 +Node: Custom Agenda Views400481 +Node: Storing searches401133 +Ref: Storing searches-Footnote-1404084 +Ref: Storing searches-Footnote-2404201 +Node: Block agenda404447 +Node: Setting options405776 +Node: Exporting Agenda Views409383 +Ref: Exporting Agenda Views-Footnote-1413921 +Ref: Exporting Agenda Views-Footnote-2414138 +Ref: Exporting Agenda Views-Footnote-3414288 +Ref: Exporting Agenda Views-Footnote-4414475 +Node: Agenda Column View414557 +Node: Markup for Rich Contents417898 +Node: Paragraphs419195 +Node: Emphasis and Monospace420330 +Ref: Emphasis and Monospace-Footnote-1421911 +Node: Subscripts and Superscripts421997 +Ref: Subscripts and Superscripts-Footnote-1423735 +Node: Special Symbols423852 +Ref: Special Symbols-Footnote-1425762 +Ref: Special Symbols-Footnote-2425927 +Node: Embedded LaTeX426024 +Ref: Embedded LaTeX-Footnote-1426872 +Node: LaTeX fragments427062 +Ref: LaTeX fragments-Footnote-1429515 +Node: Previewing LaTeX fragments429708 +Ref: Previewing LaTeX fragments-Footnote-1431190 +Node: CDLaTeX mode431439 +Ref: CDLaTeX mode-Footnote-1434188 +Node: Literal Examples434335 +Ref: Literal Examples-Footnote-1439438 +Ref: Literal Examples-Footnote-2439894 +Ref: Literal Examples-Footnote-3440072 +Ref: Literal Examples-Footnote-4440226 +Ref: Literal Examples-Footnote-5440454 +Ref: Literal Examples-Footnote-6440639 +Node: Images440737 +Ref: Images-Footnote-1444802 +Ref: Images-Footnote-2444925 +Ref: Images-Footnote-3445086 +Node: Captions445172 +Node: Horizontal Rules445870 +Node: Creating Footnotes446126 +Ref: Creating Footnotes-Footnote-1449253 +Ref: Creating Footnotes-Footnote-2449359 +Node: Exporting449466 +Node: The Export Dispatcher452234 +Node: Export Settings455690 +Ref: Export Settings-Footnote-1464440 +Ref: Export Settings-Footnote-2464552 +Ref: Export Settings-Footnote-3464653 +Node: Table of Contents464849 +Ref: Table of Contents-Footnote-1467508 +Node: Include Files467674 +Ref: Include Files-Footnote-1470759 +Node: Macro Replacement470937 +Ref: Macro Replacement-Footnote-1474813 +Node: Comment Lines475030 +Ref: Comment Lines-Footnote-1475893 +Node: ASCII/Latin-1/UTF-8 export475997 +Ref: ASCII export commands476851 +Ref: ASCII specific export settings477384 +Ref: Header and sectioning structure477827 +Ref: Quoting ASCII text478101 +Ref: ASCII specific attributes478471 +Ref: ASCII special blocks478747 +Node: Beamer Export479093 +Node: Beamer export commands479843 +Node: Beamer specific export settings480548 +Node: Frames and Blocks in Beamer482450 +Ref: Frames and Blocks in Beamer-Footnote-1485797 +Node: Beamer specific syntax485956 +Node: Editing support487929 +Node: A Beamer example488400 +Node: HTML Export489654 +Node: HTML export commands490842 +Node: HTML specific export settings491384 +Node: HTML doctypes493593 +Node: HTML preamble and postamble495763 +Node: Bare HTML496816 +Node: Quoting HTML tags497404 +Node: Headlines in HTML export498084 +Node: Links in HTML export498679 +Node: Tables in HTML export500136 +Node: Images in HTML export501589 +Node: Math formatting in HTML export503077 +Ref: Math formatting in HTML export-Footnote-1504467 +Ref: Math formatting in HTML export-Footnote-2504659 +Node: Text areas in HTML export504942 +Node: CSS support506083 +Ref: CSS support-Footnote-1509712 +Node: JavaScript support509892 +Node: LaTeX Export513071 +Ref: LaTeX Export-Footnote-1515295 +Node: LaTeX/PDF export commands515443 +Ref: LaTeX/PDF export commands-Footnote-1516944 +Node: LaTeX specific export settings517142 +Node: LaTeX header and sectioning520761 +Node: Quoting LaTeX code524574 +Node: Tables in LaTeX export525457 +Node: Images in LaTeX export530703 +Node: Plain lists in LaTeX export533351 +Node: Source blocks in LaTeX export534370 +Ref: Source blocks in LaTeX export-Footnote-1536496 +Node: Example blocks in LaTeX export536654 +Node: Special blocks in LaTeX export537379 +Node: Horizontal rules in LaTeX export538638 +Node: Verse blocks in LaTeX export539074 +Node: Quote blocks in LaTeX export541797 +Node: Markdown Export542915 +Ref: Markdown export commands543644 +Ref: Header and sectioning structure (1)544081 +Node: OpenDocument Text Export544625 +Ref: OpenDocument Text Export-Footnote-1545730 +Node: Pre-requisites for ODT export545880 +Node: ODT export commands546257 +Node: ODT specific export settings547437 +Node: Extending ODT export548482 +Ref: Automatically exporting to other formats549290 +Ref: Converting between document formats549715 +Node: Applying custom styles550256 +Ref: Applying custom styles the easy way550787 +Ref: Using third-party styles and templates551741 +Node: Links in ODT export552037 +Node: Tables in ODT export552699 +Node: Images in ODT export554705 +Ref: Embedding images554909 +Ref: Embedding clickable images555225 +Ref: Sizing and scaling of embedded images555559 +Ref: Anchoring of images557237 +Node: Math formatting in ODT export557558 +Node: LaTeX math snippets557987 +Ref: LaTeX math snippets-Footnote-1560236 +Ref: LaTeX math snippets-Footnote-2560295 +Node: MathML and OpenDocument formula files560341 +Node: Labels and captions in ODT export560849 +Node: Literal examples in ODT export562117 +Node: Advanced topics in ODT export562956 +Ref: Configuring a document converter563265 +Ref: Working with OpenDocument style files564203 +Ref: x-orgodtstyles-xml564669 +Ref: x-orgodtcontenttemplate-xml565011 +Ref: x-overriding-factory-styles565655 +Ref: Creating one-off styles566898 +Ref: Customizing tables in ODT export568899 +Ref: Validating OpenDocument XML573759 +Ref: Advanced topics in ODT export-Footnote-1574553 +Ref: Advanced topics in ODT export-Footnote-2574658 +Ref: Advanced topics in ODT export-Footnote-3574751 +Node: Org Export575099 +Ref: Org export commands575453 +Node: Texinfo Export575759 +Node: Texinfo export commands576799 +Node: Texinfo specific export settings577424 +Node: Texinfo file header579132 +Node: Texinfo title and copyright page580112 +Node: Info directory file581475 +Node: Headings and sectioning structure582189 +Node: Indices584210 +Node: Quoting Texinfo code585236 +Node: Plain lists in Texinfo export585734 +Node: Tables in Texinfo export590462 +Node: Images in Texinfo export590957 +Node: Quotations in Texinfo export591594 +Node: Key bindings in Texinfo export592546 +Node: Special blocks in Texinfo export593347 +Node: A Texinfo example594180 +Node: iCalendar Export596271 +Ref: iCalendar Export-Footnote-1601488 +Node: Other Built-in Backends601671 +Node: Advanced Export Configuration602297 +Ref: Export hooks602496 +Ref: Filters603716 +Ref: Defining filters for individual files606216 +Ref: Summary of the export process607021 +Ref: Extending an existing backend612370 +Ref: Advanced Export Configuration-Footnote-1614711 +Ref: Advanced Export Configuration-Footnote-2615067 +Ref: Advanced Export Configuration-Footnote-3615216 +Node: Export Region615302 +Node: Publishing616360 +Node: Configuration617234 +Node: Project alist618016 +Node: Sources and destinations619154 +Node: Selecting files620472 +Node: Publishing action621425 +Ref: Publishing action-Footnote-1623258 +Node: Publishing options623421 +Ref: Generic properties624173 +Ref: ASCII specific properties626861 +Ref: Beamer specific properties628461 +Ref: HTML specific properties629093 +Ref: LaTeX specific properties634329 +Ref: Markdown specific properties637837 +Ref: ODT specific properties638134 +Ref: Texinfo specific properties639131 +Node: Publishing links640559 +Node: Site map642009 +Node: Generating an index644835 +Node: Uploading Files645627 +Node: Sample Configuration647408 +Node: Simple example647906 +Node: Complex example648622 +Node: Triggering Publication650710 +Node: Citation handling651736 +Node: Citations654778 +Node: Citation export processors657140 +Node: Bibliography printing660610 +Node: Bibliography options in the biblatex and csl export processors661758 +Node: Working with Source Code663875 +Node: Features Overview666180 +Node: Structure of Code Blocks668925 +Node: Using Header Arguments671787 +Ref: System-wide header arguments672512 +Ref: Header arguments in Org mode properties674183 +Ref: Code block specific header arguments676007 +Ref: Header arguments in function calls677506 +Node: Environment of a Code Block678180 +Ref: Passing arguments678394 +Ref: Using sessions686933 +Ref: Choosing a working directory688332 +Ref: Inserting headers and footers690634 +Node: Evaluating Code Blocks691143 +Ref: How to evaluate source code691596 +Ref: Limit code block evaluation694542 +Ref: Cache results of evaluation695528 +Ref: Evaluating Code Blocks-Footnote-1698039 +Ref: Evaluating Code Blocks-Footnote-2698173 +Node: Results of Evaluation698331 +Ref: Collection699138 +Ref: Type700597 +Ref: Format704617 +Ref: Handling707209 +Ref: Post-processing708600 +Ref: Results of Evaluation-Footnote-1710350 +Node: Exporting Code Blocks710508 +Node: Extracting Source Code714179 +Ref: Header arguments715160 +Ref: Functions719387 +Ref: Tangle hooks719638 +Ref: Jumping between code and Org720414 +Node: Languages720923 +Node: Editing Source Code721924 +Node: Noweb Reference Syntax724862 +Ref: Noweb Reference Syntax-Footnote-1731589 +Ref: Noweb Reference Syntax-Footnote-2731680 +Ref: Noweb Reference Syntax-Footnote-3732293 +Node: Library of Babel732413 +Node: Key bindings and Useful Functions733127 +Node: Batch Execution735552 +Node: Miscellaneous736333 +Node: Completion737794 +Node: Structure Templates739717 +Ref: Structure Templates-Footnote-1741467 +Node: Speed Keys741559 +Node: Clean View742726 +Node: Org Indent Mode743926 +Ref: Org Indent Mode-Footnote-1745132 +Node: Hard indentation745356 +Ref: Hard indentation-Footnote-1746837 +Ref: Hard indentation-Footnote-2746943 +Node: Execute commands in the active region747087 +Node: Dynamic Headline Numbering748099 +Node: The Very Busy C-c C-c Key749265 +Node: In-buffer Settings751253 +Ref: In-buffer Settings-Footnote-1761191 +Node: Regular Expressions761389 +Node: Org Syntax762011 +Node: Documentation Access763628 +Node: Escape Character764045 +Node: Code Evaluation Security764906 +Node: Interaction767771 +Node: Cooperation768192 +Node: Conflicts771258 +Node: TTY Keys775847 +Node: Protocols777484 +Node: The store-link protocol778945 +Node: The capture protocol780104 +Node: The open-source protocol781757 +Node: Org Crypt785005 +Node: Org Mobile786878 +Node: Setting up the staging area788263 +Ref: Setting up the staging area-Footnote-1789503 +Ref: Setting up the staging area-Footnote-2789710 +Node: Pushing to the mobile application789882 +Ref: Pushing to the mobile application-Footnote-1790893 +Ref: Pushing to the mobile application-Footnote-2790984 +Ref: Pushing to the mobile application-Footnote-3791351 +Node: Pulling from the mobile application791427 +Ref: Pulling from the mobile application-Footnote-1793740 +Node: Drag and Drop & yank-media793793 +Ref: Drag and Drop & yank-media-Footnote-1795418 +Node: Hacking795564 +Node: Hooks796512 +Node: Add-on Packages796796 +Node: Adding Hyperlink Types797265 +Node: Adding Export Backends801075 +Node: Tables in Arbitrary Syntax802318 +Node: Radio tables803582 +Node: A LaTeX example805713 +Ref: A LaTeX example-Footnote-1809563 +Ref: A LaTeX example-Footnote-2809606 +Ref: A LaTeX example-Footnote-3809767 +Node: Translator functions810219 +Node: Dynamic Blocks812401 +Node: Special Agenda Views814645 +Ref: Special Agenda Views-Footnote-1818356 +Ref: Special Agenda Views-Footnote-2818562 +Node: Speeding Up Your Agendas818694 +Node: Extracting Agenda Information819917 +Node: Using the Property API823722 +Node: Using the Mapping API827071 +Node: History and Acknowledgments831102 +Ref: From Carsten831300 +Ref: From Bastien834737 +Ref: List of Contributions836865 +Node: GNU Free Documentation License845509 +Ref: ADDENDUM How to use this License for your documents869270 +Node: Main Index870659 +Node: Key Index971213 +Node: Command and Function Index1028436 +Node: Variable Index1077233  End Tag Table  Local Variables: coding: utf-8 +Info-documentlanguage: en End: diff --git a/lisp/org/orgguide.info b/lisp/org/orgguide.info index 2f068bb3..f01a94bf 100644 --- a/lisp/org/orgguide.info +++ b/lisp/org/orgguide.info @@ -1,4 +1,4 @@ -This is orgguide.info, produced by makeinfo version 7.1.1 from +This is orgguide.info, produced by makeinfo version 7.2 from orgguide.texi. Copyright © 2004-2025 Free Software Foundation, Inc. @@ -123,7 +123,6 @@ Exporting * LaTeX Export:: Exporting to LaTeX and processing to PDF. * iCalendar Export:: Exporting to iCalendar. -  File: orgguide.info, Node: Introduction, Next: Document Structure, Prev: Top, Up: Top @@ -2554,112 +2553,112 @@ file, use #+STARTUP: hidestars odd -  Tag Table: -Node: Top909 -Node: Introduction5638 -Ref: Installation6324 -Ref: Activation7036 -Ref: Feedback7479 -Node: Document Structure7736 -Node: Headlines8807 -Ref: Headlines-Footnote-19689 -Node: Visibility Cycling9812 -Node: Motion11206 -Node: Structure Editing11800 -Ref: Structure Editing-Footnote-113232 -Node: Sparse Trees13336 -Ref: Sparse Trees-Footnote-114446 -Node: Plain Lists14561 -Node: Tables17350 -Ref: Creation and conversion19043 -Ref: Re-aligning and field motion19643 -Ref: Column and row editing20403 -Node: Hyperlinks21754 -Ref: Internal links22512 -Ref: External Links22965 -Ref: Handling Links24795 -Node: TODO Items26285 -Node: TODO Basics27262 -Node: Multi-state Workflow28794 -Node: Progress Logging30584 -Ref: Closing items31348 -Ref: Tracking TODO state changes31903 -Ref: Progress Logging-Footnote-132902 -Ref: Progress Logging-Footnote-232975 -Node: Priorities33053 -Node: Breaking Down Tasks33970 -Node: Checkboxes34773 -Node: Tags35910 -Ref: Tag inheritance36535 -Ref: Setting tags37273 -Ref: Tag groups39051 -Ref: Tag searches39843 -Ref: Tags-Footnote-140923 -Node: Properties41027 -Node: Dates and Times42839 -Node: Timestamps43876 -Node: Creating Timestamps46630 -Node: Deadlines and Scheduling48473 -Ref: Deadlines and Scheduling-Footnote-150537 -Ref: Deadlines and Scheduling-Footnote-250698 -Node: Clocking Work Time50861 -Node: Capture Refile Archive52296 -Node: Capture53104 -Ref: Setting up capture53406 -Ref: Using capture53677 -Ref: Capture templates54373 -Ref: Capture-Footnote-155806 -Ref: Capture-Footnote-255917 -Node: Refile and Copy56008 -Node: Archiving57318 -Node: Agenda Views58694 -Node: Agenda Files60149 -Node: Agenda Dispatcher60897 -Node: Built-in Agenda Views61817 -Node: Global TODO List62930 -Node: Matching Tags and Properties63691 -Node: Search View65721 -Node: Agenda Commands66831 -Ref: Motion (1)67430 -Ref: View/Go to Org file67633 -Ref: Change display68071 -Ref: Remote editing69441 -Ref: Quit and exit71029 -Node: Custom Agenda Views71283 -Node: Markup72759 -Node: Paragraphs73585 -Node: Emphasis and Monospace74707 -Node: Embedded LaTeX75125 -Node: Literal examples75994 -Node: Images77084 -Node: Creating Footnotes77685 -Node: Exporting78659 -Node: The Export Dispatcher79535 -Node: Export Settings80091 -Node: Table of Contents80916 -Node: Include Files81649 -Node: Comment Lines82335 -Node: ASCII/UTF-8 Export83060 -Node: HTML Export83793 -Node: LaTeX Export84831 -Node: iCalendar Export86574 -Node: Publishing87351 -Node: Working with Source Code89082 -Ref: Using header arguments90349 -Ref: Evaluating code blocks91524 -Ref: Results of evaluation92413 -Ref: Exporting code blocks93633 -Ref: Extracting source code94097 -Node: Miscellaneous94632 -Ref: Completion94755 -Ref: Structure Templates95092 -Ref: Clean view95456 +Node: Top907 +Node: Introduction5635 +Ref: Installation6321 +Ref: Activation7033 +Ref: Feedback7476 +Node: Document Structure7733 +Node: Headlines8804 +Ref: Headlines-Footnote-19686 +Node: Visibility Cycling9809 +Node: Motion11203 +Node: Structure Editing11797 +Ref: Structure Editing-Footnote-113229 +Node: Sparse Trees13333 +Ref: Sparse Trees-Footnote-114443 +Node: Plain Lists14558 +Node: Tables17347 +Ref: Creation and conversion19040 +Ref: Re-aligning and field motion19640 +Ref: Column and row editing20400 +Node: Hyperlinks21751 +Ref: Internal links22509 +Ref: External Links22962 +Ref: Handling Links24792 +Node: TODO Items26282 +Node: TODO Basics27259 +Node: Multi-state Workflow28791 +Node: Progress Logging30581 +Ref: Closing items31345 +Ref: Tracking TODO state changes31900 +Ref: Progress Logging-Footnote-132899 +Ref: Progress Logging-Footnote-232972 +Node: Priorities33050 +Node: Breaking Down Tasks33967 +Node: Checkboxes34770 +Node: Tags35907 +Ref: Tag inheritance36532 +Ref: Setting tags37270 +Ref: Tag groups39048 +Ref: Tag searches39840 +Ref: Tags-Footnote-140920 +Node: Properties41024 +Node: Dates and Times42836 +Node: Timestamps43873 +Node: Creating Timestamps46627 +Node: Deadlines and Scheduling48470 +Ref: Deadlines and Scheduling-Footnote-150534 +Ref: Deadlines and Scheduling-Footnote-250695 +Node: Clocking Work Time50858 +Node: Capture Refile Archive52293 +Node: Capture53101 +Ref: Setting up capture53403 +Ref: Using capture53674 +Ref: Capture templates54370 +Ref: Capture-Footnote-155803 +Ref: Capture-Footnote-255914 +Node: Refile and Copy56005 +Node: Archiving57315 +Node: Agenda Views58691 +Node: Agenda Files60146 +Node: Agenda Dispatcher60894 +Node: Built-in Agenda Views61814 +Node: Global TODO List62927 +Node: Matching Tags and Properties63688 +Node: Search View65718 +Node: Agenda Commands66828 +Ref: Motion (1)67427 +Ref: View/Go to Org file67630 +Ref: Change display68068 +Ref: Remote editing69438 +Ref: Quit and exit71026 +Node: Custom Agenda Views71280 +Node: Markup72756 +Node: Paragraphs73582 +Node: Emphasis and Monospace74704 +Node: Embedded LaTeX75122 +Node: Literal examples75991 +Node: Images77081 +Node: Creating Footnotes77682 +Node: Exporting78656 +Node: The Export Dispatcher79532 +Node: Export Settings80088 +Node: Table of Contents80913 +Node: Include Files81646 +Node: Comment Lines82332 +Node: ASCII/UTF-8 Export83057 +Node: HTML Export83790 +Node: LaTeX Export84828 +Node: iCalendar Export86571 +Node: Publishing87348 +Node: Working with Source Code89079 +Ref: Using header arguments90346 +Ref: Evaluating code blocks91521 +Ref: Results of evaluation92410 +Ref: Exporting code blocks93630 +Ref: Extracting source code94094 +Node: Miscellaneous94629 +Ref: Completion94752 +Ref: Structure Templates95089 +Ref: Clean view95453  End Tag Table  Local Variables: coding: utf-8 +Info-documentlanguage: en End: diff --git a/lisp/parsebib/parsebib-pkg.el b/lisp/parsebib/parsebib-pkg.el index 604e60cc..9f76d2a1 100644 --- a/lisp/parsebib/parsebib-pkg.el +++ b/lisp/parsebib/parsebib-pkg.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "parsebib" "20250922.1100" +(define-package "parsebib" "20251125.1320" "A library for parsing bib files." '((emacs "25.1")) :url "https://github.com/joostkremers/parsebib" - :commit "4a9df6f1b4f37bbf4f8712eac99c8a25698f1c0e" - :revdesc "4a9df6f1b4f3" + :commit "b3990a18984284f0809e6e095196936e65fda2eb" + :revdesc "b3990a189842" :keywords '("text" "bibtex") :authors '(("Joost Kremers" . "joostkremers@fastmail.fm")) :maintainers '(("Joost Kremers" . "joostkremers@fastmail.fm"))) diff --git a/lisp/parsebib/parsebib.el b/lisp/parsebib/parsebib.el index cdc6d8d3..0aea3846 100644 --- a/lisp/parsebib/parsebib.el +++ b/lisp/parsebib/parsebib.el @@ -6,8 +6,8 @@ ;; Author: Joost Kremers ;; Maintainer: Joost Kremers ;; Created: 2014 -;; Package-Version: 20250922.1100 -;; Package-Revision: 4a9df6f1b4f3 +;; Package-Version: 20251125.1320 +;; Package-Revision: b3990a189842 ;; Keywords: text bibtex ;; URL: https://github.com/joostkremers/parsebib ;; Package-Requires: ((emacs "25.1")) @@ -284,18 +284,18 @@ sequences)." (parsebib--skip-whitespace) (let ((beg (point)) (n-braces 1) - (skip-chars (format "^%c%c" open close))) + (skip-chars (format "^%c%c%c" open close esc))) (parsebib--char (list open)) (while (and (> n-braces 0) (not (eobp))) (skip-chars-forward skip-chars) (cond + ((eq (char-after) esc) + (forward-char 1)) ((eq (char-after) open) - (unless (eq (char-before) esc) - (setq n-braces (1+ n-braces)))) + (setq n-braces (1+ n-braces))) ((eq (char-after) close) - (unless (eq (char-before) esc) - (setq n-braces (1- n-braces))))) + (setq n-braces (1- n-braces)))) (ignore-error end-of-buffer (forward-char 1))) (if (= n-braces 0) (buffer-substring-no-properties beg (point)) @@ -1046,6 +1046,10 @@ FIELDS is nil, all fields are returned." This function looks for a local value of the variable `bibtex-dialect' in the local variable block at the end of the file. Return nil if no dialect is found." + ;; We only want to find the value of `bibtex-dialect'; we don't want to + ;; set the variable, nor do we want to set any other file-local + ;; variables, and we also don't want to activate `bibtex-mode'. All of + ;; this means that `hack-local-variables' is a non-starter. (save-excursion (goto-char (point-max)) (let ((case-fold-search t) diff --git a/lisp/polymode/polymode-core.el b/lisp/polymode/polymode-core.el index 4c8e150d..8f64a890 100644 --- a/lisp/polymode/polymode-core.el +++ b/lisp/polymode/polymode-core.el @@ -85,7 +85,10 @@ (with-no-warnings (eieio-object-name-string obj))) - +;; avoids appending random numbers to buffer name when multiple windows are involved +(defun pm--buffer-hiddenp () + "Check whether the Emacs buffer is hidden." + (= ?\ (string-to-char (buffer-name)))) ;; CORE EMACS COMPATS @@ -1108,7 +1111,8 @@ switch." (mkt (mark t)) (hlf header-line-format)) - (when pm-hide-implementation-buffers + (when (and pm-hide-implementation-buffers + (not (pm--buffer-hiddenp))) (rename-buffer (pm--buffer-name 'hidden))) (setq pm/current nil) @@ -1144,7 +1148,8 @@ switch." (deactivate-mark) (activate-mark)) - (when pm-hide-implementation-buffers + (when (and pm-hide-implementation-buffers + (pm--buffer-hiddenp)) (rename-buffer (pm--buffer-name))) ;; avoid display jumps diff --git a/lisp/polymode/polymode-pkg.el b/lisp/polymode/polymode-pkg.el index 908ea71c..741fab3b 100644 --- a/lisp/polymode/polymode-pkg.el +++ b/lisp/polymode/polymode-pkg.el @@ -1,9 +1,9 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "polymode" "20250617.1033" +(define-package "polymode" "20251217.1327" "Extensible framework for multiple major modes." '((emacs "25")) :url "https://github.com/polymode/polymode" - :commit "25ba9463a443f0e904147138f226284e437248d3" - :revdesc "25ba9463a443" + :commit "a48648fe2b2e7ca7675ae88ddc2d197c25914eb9" + :revdesc "a48648fe2b2e" :keywords '("languages" "multi-modes" "processes") :maintainers '(("Vitalie Spinu" . "spinuvit@gmail.com"))) diff --git a/lisp/polymode/polymode.el b/lisp/polymode/polymode.el index c2be1b3c..6a2f835c 100644 --- a/lisp/polymode/polymode.el +++ b/lisp/polymode/polymode.el @@ -3,8 +3,8 @@ ;; Author: Vitalie Spinu ;; Maintainer: Vitalie Spinu ;; Copyright (C) 2013-2022 Free Software Foundation, Inc. -;; Package-Version: 20250617.1033 -;; Package-Revision: 25ba9463a443 +;; Package-Version: 20251217.1327 +;; Package-Revision: a48648fe2b2e ;; Package-Requires: ((emacs "25")) ;; URL: https://github.com/polymode/polymode ;; Keywords: languages, multi-modes, processes diff --git a/lisp/spacemacs-theme/spacemacs-theme-pkg.el b/lisp/spacemacs-theme/spacemacs-theme-pkg.el index fffc50f7..ee8acf27 100644 --- a/lisp/spacemacs-theme/spacemacs-theme-pkg.el +++ b/lisp/spacemacs-theme/spacemacs-theme-pkg.el @@ -1,8 +1,8 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "spacemacs-theme" "20251015.1823" +(define-package "spacemacs-theme" "20251221.1656" "Color theme with a dark and light versions." () :url "https://github.com/nashamri/spacemacs-theme" - :commit "f4757d701aa64bc3e1a5963c8a4f52cfd135cfed" - :revdesc "f4757d701aa6" + :commit "5635d6bbc76e6f06b99fa5dac6e6fd6675459ca6" + :revdesc "5635d6bbc76e" :keywords '("color" "theme")) diff --git a/lisp/spacemacs-theme/spacemacs-theme.el b/lisp/spacemacs-theme/spacemacs-theme.el index ac85b29e..2d95aceb 100644 --- a/lisp/spacemacs-theme/spacemacs-theme.el +++ b/lisp/spacemacs-theme/spacemacs-theme.el @@ -5,8 +5,8 @@ ;; Author: Nasser Alshammari ;; URL: ;; -;; Package-Version: 20251015.1823 -;; Package-Revision: f4757d701aa6 +;; Package-Version: 20251221.1656 +;; Package-Revision: 5635d6bbc76e ;; Keywords: color, theme ;; Package-Requires: ((emacs "24")) @@ -343,6 +343,22 @@ to `auto', tags may not be properly aligned. " `(dired-symlink ((,class (:foreground ,cyan :background ,bg1 :inherit bold)))) `(dired-warning ((,class (:foreground ,war)))) +;;;;; diredfl + `(diredfl-file-name ((,class (:foreground ,base)))) + `(diredfl-file-suffix ((,class (:foreground ,magenta)))) + `(diredfl-dir-name ((,class (:foreground ,keyword :inherit bold)))) + `(diredfl-symlink ((,class (:foreground ,cyan :background ,bg1 :inherit bold)))) + `(diredfl-deletion-file-name ((,class (:foreground ,red)))) + `(diredfl-ignored-file-name ((,class (:inherit shadow)))) + `(diredfl-dir-heading ((,class (:foreground ,comp :inherit bold)))) + `(diredfl-date-time ((,class (:foreground ,yellow)))) + `(diredfl-number ((,class (:foreground ,keyword)))) + `(diredfl-write-priv ((,class (:foreground ,magenta)))) + `(diredfl-exec-priv ((,class (:foreground ,cyan)))) + `(diredfl-read-priv ((,class (:foreground ,aqua)))) + `(diredfl-no-priv ((,class (:foreground ,base)))) + `(diredfl-dir-priv ((,class (:foreground ,type)))) + ;;;;; dired-subtree `(dired-subtree-depth-1-face ((,class (:background ,bg1)))) `(dired-subtree-depth-2-face ((,class (:background ,bg1)))) diff --git a/lisp/transient/transient-pkg.el b/lisp/transient/transient-pkg.el index 2ec01196..eb6ae2df 100644 --- a/lisp/transient/transient-pkg.el +++ b/lisp/transient/transient-pkg.el @@ -1,13 +1,13 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "transient" "20251120.1950" +(define-package "transient" "20251215.2209" "Transient commands." '((emacs "28.1") (compat "30.1") (cond-let "0.2") (seq "2.24")) :url "https://github.com/magit/transient" - :commit "453376f2f1a0beab45da06c84a9e57692afc0607" - :revdesc "453376f2f1a0" + :commit "066b985b19afbcc8f2f344cebb8d2f4c626b1bdc" + :revdesc "066b985b19af" :keywords '("extensions") :authors '(("Jonas Bernoulli" . "emacs.transient@jonas.bernoulli.dev")) :maintainers '(("Jonas Bernoulli" . "emacs.transient@jonas.bernoulli.dev"))) diff --git a/lisp/transient/transient.el b/lisp/transient/transient.el index 6fa43faa..e8244d8a 100644 --- a/lisp/transient/transient.el +++ b/lisp/transient/transient.el @@ -6,8 +6,8 @@ ;; Homepage: https://github.com/magit/transient ;; Keywords: extensions -;; Package-Version: 20251120.1950 -;; Package-Revision: 453376f2f1a0 +;; Package-Version: 20251215.2209 +;; Package-Revision: 066b985b19af ;; Package-Requires: ( ;; (emacs "28.1") ;; (compat "30.1") @@ -725,15 +725,16 @@ See also option `transient-highlight-mismatched-keys'." (insert-file-contents file) (read (current-buffer)))))) -(defun transient--pp-to-file (list file) - (make-directory (file-name-directory file) t) - (setq list (cl-sort (copy-sequence list) #'string< :key #'car)) - (with-temp-file file - (let ((print-level nil) - (print-length nil) - (pp-default-function 'pp-28) - (fill-column 999)) - (pp list (current-buffer))))) +(defun transient--pp-to-file (value file) + (when (or value (file-exists-p file)) + (make-directory (file-name-directory file) t) + (setq value (cl-sort (copy-sequence value) #'string< :key #'car)) + (with-temp-file file + (let ((print-level nil) + (print-length nil) + (pp-default-function 'pp-28) + (fill-column 999)) + (pp value (current-buffer)))))) (defvar transient-values (transient--read-file-contents transient-values-file) @@ -1699,20 +1700,20 @@ See info node `(transient)Modifying Existing Transients'." (setq group (transient--get-layout group))) (when (vectorp loc) (setq loc (append loc nil))) - (if (listp loc) - (and-let* ((match (transient--nth (pop loc) (aref group 2)))) - (if loc - (transient--locate-child - match (cond ((or (stringp (car loc)) - (symbolp (car loc))) - (car loc)) - ((symbolp match) - (vconcat (cons 0 loc))) - ((vconcat loc)))) - (list match group))) - (seq-some (lambda (child) - (transient--match-child group loc child)) - (aref group 2)))) + (cond-let + ((atom loc) + (seq-some (lambda (child) + (transient--match-child group loc child)) + (aref group 2))) + ([match (transient--nth (pop loc) (aref group 2))] + (cond (loc (transient--locate-child + match (cond ((or (stringp (car loc)) + (symbolp (car loc))) + (car loc)) + ((symbolp match) + (vconcat (cons 0 loc))) + ((vconcat loc))))) + ((list match group)))))) (defun transient--match-child (group loc child) (cl-etypecase child @@ -3425,21 +3426,22 @@ transient is active." ;;;; Help -(defun transient-help (&optional interactive) +(defun transient-help (&optional interactivep) "Show help for the active transient or one of its suffixes. \n(fn)" (interactive (list t)) - (if interactive - (setq transient--helpp t) + (cond + (interactivep + (setq transient--helpp t)) + ((lookup-key transient--transient-map + (this-single-command-raw-keys)) + (setq transient--helpp nil) (with-demoted-errors "transient-help: %S" - (when (lookup-key transient--transient-map - (this-single-command-raw-keys)) - (setq transient--helpp nil) - (transient--display-help #'transient-show-help - (if (eq this-original-command 'transient-help) - transient--prefix - (or (transient-suffix-object) - this-original-command))))))) + (transient--display-help #'transient-show-help + (if (eq this-original-command 'transient-help) + transient--prefix + (or (transient-suffix-object) + this-original-command))))))) (transient-define-suffix transient-describe () "From a transient menu, describe something in another buffer. @@ -4205,17 +4207,18 @@ a string, using the empty string for the empty value, or nil if the option does not appear in ARGS. Append \"=\ to ARG to indicate that it is an option." - (if (string-suffix-p "=" arg) - (save-match-data - (and-let* ((match (let ((case-fold-search nil) - (re (format "\\`%s\\(?:=\\(.+\\)\\)?\\'" - (substring arg 0 -1)))) - (cl-find-if (lambda (a) - (and (stringp a) - (string-match re a))) - args)))) - (or (match-string 1 match) ""))) - (and (member arg args) t))) + (save-match-data + (cond-let + ((member arg args) t) + ([_(string-suffix-p "=" arg)] + [match (let ((case-fold-search nil) + (re (format "\\`%s\\(?:=\\(.+\\)\\)?\\'" + (substring arg 0 -1)))) + (cl-find-if (lambda (a) + (and (stringp a) + (string-match re a))) + args))] + (match-string 1 match))))) ;;; Return @@ -4285,21 +4288,23 @@ be non-nil. If either is non-nil, try the following in order: class definition or using its `transient-init-scope' method. If no prefix matches, return nil." - (if (or prefixes classes) - (let ((prefixes (ensure-list prefixes)) - (type (if (symbolp classes) classes (cons 'or classes)))) - (if-let ((obj (cl-flet ((match (obj) - (and obj - (or (memq (oref obj command) prefixes) - (cl-typep obj type)) - obj))) - (or (match transient-current-prefix) - (match transient--prefix))))) - (oref obj scope) - (and (get (car prefixes) 'transient--prefix) - (oref (transient--init-prefix (car prefixes)) scope)))) - (and-let* ((obj (transient-prefix-object))) - (oref obj scope)))) + (cond-let + ((or prefixes classes) + (let* ((prefixes (ensure-list prefixes)) + (type (if (symbolp classes) classes (cons 'or classes))) + (match (lambda (obj) + (and obj + (or (memq (oref obj command) prefixes) + (cl-typep obj type)) + obj)))) + (cond-let + ([obj (or (funcall match transient-current-prefix) + (funcall match transient--prefix))] + (oref obj scope)) + ((get (car prefixes) 'transient--prefix) + (oref (transient--init-prefix (car prefixes)) scope))))) + ([obj (transient-prefix-object)] + (oref obj scope)))) ;;; History @@ -4739,7 +4744,7 @@ and its value is returned to the caller." (cl-defmethod transient-format-description ((obj transient-value-preset)) (pcase-let* (((eieio description key set) obj) - ((eieio value) transient--prefix) + (value (transient--get-extended-value)) (active (seq-set-equal-p set value))) (format "%s %s" @@ -4860,23 +4865,22 @@ apply the face `transient-unreachable' to the complete string." (propertize "|" 'face 'transient-delimiter)))))) (cl-defmethod transient--get-description ((obj transient-child)) - (and-let* ((desc (oref obj description))) - (if (functionp desc) - (if (= (car (transient--func-arity desc)) 1) - (funcall desc obj) - (funcall desc)) - desc))) + (cond-let* [[desc (oref obj description)]] + ((functionp desc) + (condition-case nil + (funcall desc obj) + (wrong-number-of-arguments (funcall desc)))) + (desc))) (cl-defmethod transient--get-face ((obj transient-suffix) slot) - (and-let* ((_(slot-boundp obj slot)) - (face (slot-value obj slot))) - (if (and (not (facep face)) - (functionp face)) - (let ((transient--pending-suffix obj)) - (if (= (car (transient--func-arity face)) 1) - (funcall face obj) - (funcall face))) - face))) + (cond-let* ((not (slot-boundp obj slot)) nil) + [[face (slot-value obj slot)]] + ((facep face) face) + ((functionp face) + (let ((transient--pending-suffix obj)) + (condition-case nil + (funcall face obj) + (wrong-number-of-arguments (funcall face))))))) (defun transient--add-face (string face &optional append beg end) (let ((str (copy-sequence string))) @@ -5383,9 +5387,6 @@ we stop there." (face-remap-reset-base 'default) (face-remap-add-relative 'default 'fixed-pitch)) -(defun transient--func-arity (fn) - (func-arity (advice--cd*r (if (symbolp fn) (symbol-function fn) fn)))) - (defun transient--seq-reductions-from (function sequence initial-value) (let ((acc (list initial-value))) (seq-doseq (elt sequence) diff --git a/lisp/transient/transient.info b/lisp/transient/transient.info index 5fbb6318..d578ac3a 100644 --- a/lisp/transient/transient.info +++ b/lisp/transient/transient.info @@ -964,9 +964,9 @@ after the infix argument that is bound to ‘-3’ in ‘magit-patch-apply’. These functions operate on the information stored in the ‘transient--layout’ property of the PREFIX symbol. Elements in that -tree are not objects but have the form ‘(CLASS PLIST) for suffixes’ and +tree are not objects but have the form ‘(CLASS PLIST)’ for suffixes and ‘[CLASS PLIST CHILDREN]’ for groups. At the root of the tree is an -element ‘[N Nil CHILDREN]’, where ‘N’ is the version of the layout +element ‘[N nil CHILDREN]’, where ‘N’ is the version of the layout format, currently and hopefully for a long time 2. While that element looks like a group vector, that element does not count when identifying a group using a coordinate vector, i.e., ‘[0]’ is its first child, not diff --git a/lisp/web-mode/web-mode-pkg.el b/lisp/web-mode/web-mode-pkg.el index fbc0c852..ddf09448 100644 --- a/lisp/web-mode/web-mode-pkg.el +++ b/lisp/web-mode/web-mode-pkg.el @@ -1,9 +1,9 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "web-mode" "20250827.1315" +(define-package "web-mode" "20251214.1728" "Major mode for editing web templates." '((emacs "23.1")) :url "https://web-mode.org" - :commit "1eb0abb1a9bffbb33db7bbfc6efe5b48bf416d57" - :revdesc "1eb0abb1a9bf" + :commit "1e7694aee87722f9e51b6e39c35d175d83a1fb2c" + :revdesc "1e7694aee877" :keywords '("languages") :maintainers '(("François-Xavier Bois" . "fxbois@gmail.com"))) diff --git a/lisp/web-mode/web-mode.el b/lisp/web-mode/web-mode.el index a9d16a82..4d179eb2 100644 --- a/lisp/web-mode/web-mode.el +++ b/lisp/web-mode/web-mode.el @@ -2,8 +2,8 @@ ;; Copyright 2011-2025 François-Xavier Bois -;; Package-Version: 20250827.1315 -;; Package-Revision: 1eb0abb1a9bf +;; Package-Version: 20251214.1728 +;; Package-Revision: 1e7694aee877 ;; Author: François-Xavier Bois ;; Maintainer: François-Xavier Bois ;; Package-Requires: ((emacs "23.1")) @@ -5676,6 +5676,17 @@ Also return non-nil if it is the command `self-insert-command' is remapped to." ;; (6)value-uq (7)value-sq (8)value-dq (9)value-bq : jsx attr={} ;; (10)value-block +(defun web-mode--indentless-attribute-p (attr) + "Return t if ATTR is in `web-mode-indentless-attributes'. + Handles wildcards where '*' matches any suffix." + (let ((found nil)) + (dolist (pattern web-mode-indentless-attributes found) + (if (string-suffix-p "*" pattern) + (when (string-prefix-p (substring pattern 0 -1) attr) + (setq found t)) + (when (string= pattern attr) + (setq found t)))))) + (defun web-mode-attr-skip (limit) (let ((tag-flags 0) (attr-flags 0) (continue t) (attrs 0) (brace-depth 0) @@ -5767,7 +5778,7 @@ Also return non-nil if it is the command `self-insert-command' is remapped to." name-end (1- pos)) (setq state 4) (setq attr (buffer-substring-no-properties name-beg (1+ name-end))) - (when (and web-mode-indentless-attributes (member (downcase attr) web-mode-indentless-attributes)) + (when (and web-mode-indentless-attributes (web-mode--indentless-attribute-p (downcase attr))) (setq attr-flags (logior attr-flags 8))) ) diff --git a/lisp/yasnippet-snippets/yasnippet-snippets-pkg.el b/lisp/yasnippet-snippets/yasnippet-snippets-pkg.el index 619dc4f0..508bd155 100644 --- a/lisp/yasnippet-snippets/yasnippet-snippets-pkg.el +++ b/lisp/yasnippet-snippets/yasnippet-snippets-pkg.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "yasnippet-snippets" "20251010.1018" +(define-package "yasnippet-snippets" "20251215.1231" "Collection of yasnippet snippets." '((yasnippet "0.8.0")) :url "https://github.com/AndreaCrotti/yasnippet-snippets" - :commit "182a43cb937d98847448c17466eed224d8893930" - :revdesc "182a43cb937d" + :commit "606ee926df6839243098de6d71332a697518cb86" + :revdesc "606ee926df68" :keywords '("snippets") :authors '(("Andrea Crotti" . "andrea.crotti.0@gmail.com")) :maintainers '(("Andrea Crotti" . "andrea.crotti.0@gmail.com"))) diff --git a/lisp/yasnippet-snippets/yasnippet-snippets.el b/lisp/yasnippet-snippets/yasnippet-snippets.el index a6072233..552fafef 100644 --- a/lisp/yasnippet-snippets/yasnippet-snippets.el +++ b/lisp/yasnippet-snippets/yasnippet-snippets.el @@ -4,8 +4,8 @@ ;; Author: Andrea Crotti ;; Keywords: snippets -;; Package-Version: 20251010.1018 -;; Package-Revision: 182a43cb937d +;; Package-Version: 20251215.1231 +;; Package-Revision: 606ee926df68 ;; Package-Requires: ((yasnippet "0.8.0")) ;; Keywords: convenience, snippets ;; Homepage: https://github.com/AndreaCrotti/yasnippet-snippets