Collapse all
/- Preface
- I. Guide to Interfacing with Mechanical APDL
- 1. Format of Binary Data Files
- 1.1. Understanding Mechanical APDL Binary Files
- 1.2. Description of the Results File
- 1.3. Description of the Reduced Displacement File
- 1.4. Description of the Reduced Complex Displacement File
- 1.5. Description of the Modal Results File
- 1.6. Description of the Element Matrices File
- 1.7. Description of the Substructure Matrices File
- 1.8. Description of the Component Mode Synthesis Matrices (CMS) File
- 1.9. Description of the Full Stiffness-Mass File
- 1.10. Description of the Substructure Displacement File
- 2. Accessing Binary Data Files
- 2.1. Accessing Mechanical APDL Binary Files
- 2.1.1. Access Routines for Results Files
- 2.1.2. Characteristics of Mechanical APDL Binary Files
- 2.1.3. Viewing Binary File Contents
- 2.1.4. Abbreviations
- 2.1.5. binini (Initializing Buffered Binary I/O Systems)
- 2.1.6. Function sysiqr (Retrieving the Status of a File)
- 2.1.7. Function biniqr8 (Retrieving System-Dependent Parameters)
- 2.1.8. Function binset (Opening a Blocked Binary File or Initializing Paging Space)
- 2.1.9. Subroutine bintfo (Defining Data for a Standard Mechanical APDL File Header)
- 2.1.10. Subroutine binhed8 (Writing the Standard Mechanical APDL File Header)
- 2.1.11. Subroutine binrd8 (Reading Data from a Buffered File)
- 2.1.12. Subroutine binwrt8 (Writing Data to a Buffered File)
- 2.1.13. Subroutine exinc4 (Decoding an Integer String into a Character String)
- 2.1.14. Subroutine inexc4 (Coding a Character String into an Integer String)
- 2.1.15. Subroutine binclo (Closing or Deleting a Blocked Binary File)
- 2.1.16. Subroutine largeIntGet (Converting Two Integers into a Pointer)
- 2.2. Demonstration Routines
- 2.2.1. Program bintst (Demonstrates Dumping a Binary File and Copying It for Comparison Purposes)
- 2.2.2. Subroutine bintrd (Demonstrates Printing a Dump of File Contents)
- 2.2.3. Subroutine bintwr (Demonstrates Copying Binary File Contents)
- 2.2.4. Program ResRdDemo (Demonstrates Reading a Results File)
- 2.2.5. Program ResWrDemo (Demonstrates Writing a Results File)
- 2.3. Retrieving Data from the Results File
- 3. The CDWRITE (CDB) File Format
- 3.1. Using the CDWRITE Command
- 3.2. Coded Database File Commands
- 3.2.1. BFBLOCK Command
- 3.2.2. BFEBLOCK Command
- 3.2.3. CE Command
- 3.2.4. CP Command
- 3.2.5. CMBLOCK Command
- 3.2.6. CYCLIC Command
- 3.2.7. EBLOCK Command
- 3.2.8. EN Command
- 3.2.9. ETBLOCK Command
- 3.2.10. LOCAL Command
- 3.2.11. M Command
- 3.2.12. MPDATA Command
- 3.2.13. MPTEMP Command
- 3.2.14. N Command
- 3.2.15. NBLOCK Command
- 3.2.16. *PREAD Command
- 3.2.17. R Command
- 3.2.18. RLBLOCK Command
- 3.2.19. SE Command
- 3.2.20. SECBLOCK Command
- 3.2.21. SFBEAM Command
- 3.2.22. SFE Command
- 3.2.23. SFEBLOCK Command
- II. Guide to User-Programmable Features
- 1. Understanding User-Programmable Features (UPFs)
- 1.1. What Are User-Programmable Features?
- 1.2. What You Should Know Before Using UPFs
- 1.3. Planning Your UPFs
- 1.4. Studying the Mechanical APDL User Routines
- 1.5. Programming in Languages Other Than Fortran
- 1.6. Developing UPFs: a Suggested Strategy
- 1.7. Include Decks
- 1.8. Choosing a Linking Method
- 1.9. Compiling and Linking UPFs on Linux Systems
- 1.10. Sharing Data Between User Routines
- 1.11. Compiling and Linking UPFs on Windows Systems
- 1.12. Activating UPFs
- 1.13. Running Your Custom Executable
- 1.14. Verifying Your Routines
- 1.15. Debugging Commands
- 1.16. Other Useful Commands
- 1.17. Generating Output
- 1.18. Reading Large Data Files More Rapidly
- 2. UPF Subroutines and Functions
- 2.1. Creating a New Element
- 2.2. Supporting Subroutines for Element Creation
- 2.2.1. Subroutine nminfo (Returning Element Reference Names)
- 2.2.2. Subroutine svgidx (Fetching the Index for Saved Variables)
- 2.2.3. Subroutine svrget (Fetching Saved Variable Data for an Element)
- 2.2.4. Subroutine svrput (Writing an Element's Saved Variable Set)
- 2.2.5. Subroutine svpidx (Writing the Saved Variable Element Index to a File)
- 2.2.6. Subroutine mreuse (Determining Which Element Matrices Can Be Reused)
- 2.2.7. Subroutine subrd (Reading Element Load Data for a Substructure Generation Run)
- 2.2.8. Subroutine subwrt (Writing an Element Load Vector to a File for a Substructure Generation Run)
- 2.2.9. Subroutine rvrget (Fetching Real Constants for an Element)
- 2.2.10. Subroutine propev (Evaluating a Group of Material Properties)
- 2.2.11. Subroutine prope1 (Evaluating One Material Property)
- 2.2.12. Subroutine pstev1 (Evaluating Material Properties for 1D Elements)
- 2.2.13. Subroutine tbuser (Retrieving User Table Data)
- 2.2.14. Subroutine plast1 (Updating an Element's Plastic History)
- 2.2.15. Subroutine plast3 (Updating an Element's Plastic History, 4 or 6 components)
- 2.2.16. Subroutine creep1 (Updating an Element's Creep History)
- 2.2.17. Subroutine creep3 (Updating an Element's Creep History, 3D Elements)
- 2.2.18. Subroutine swell1 (Updating an Element's Swelling History)
- 2.2.19. Subroutine swell3 (Updating an Element's Swelling History, 3D Elements)
- 2.2.20. Function elLenPsvrBuf (Determining Additional ESAV Record for Plasticity)
- 2.2.21. Function tbgettbtype (Retrieving the Unique Index Associated with a TB Table)
- 2.2.22. Function tbgetnumtables (Retrieving the Number of Subtables for a TB Type)
- 2.2.23. Function tbgetnumfldvars (Retrieving the Number of Field Variables for a TB Type)
- 2.2.24. Function tbgetfldvars (Retrieving Field Variable Types for a TB Type)
- 2.2.25. Function tbgetfldname (Retrieving a Field Variable Name)
- 2.2.26. Function tbgettbopt (Retrieving the
TBOPT
Associated with a TB Type) - 2.2.27. Function tbgettboptname (Retrieving a String or Documented Name Associated with a
TBOPT
) - 2.2.28. Function tbgetdataperfield (Retrieving the Data per Field for Each Subtable)
- 2.2.29. Function tbgetnumfldsets (Retrieving the Number of
TBFIELD+TBDATA/
TBOPT
Sets) - 2.2.30. Function tbgettabledata (Retrieving All Table Data and Field Variable Values)
- 2.2.31. Function tbgettabledatasz (Retrieving All Table Data and Field Variable Sizes)
- 2.2.32. Function nlget (Retrieving Material Nonlinear Property Information)
- 2.2.33. Subroutine usereo (Storing Data in the nmisc Record)
- 2.2.34. Subroutine eldwrtL (Writing Element Data to a File)
- 2.2.35. Subroutine eldwrnL (Writing Element Nonsummable Miscellaneous Data to the Results File)
- 2.2.36. Subroutine trrot (Calculating the Rotation Vector)
- 2.2.37. Subroutine rottr (Calculating the Transformation Matrix)
- 2.2.38. Subroutine xyzup3 (Updating an Element's 3D Nodal Coordinates)
- 2.2.39. Subroutine tmpget (Defining Current Temperature Loads)
- 2.2.40. Subroutine prsget (Defining Current Pressure Loads)
- 2.2.41. Subroutine cnvget (Defining Current Convection Loads)
- 2.2.42. Subroutine hgnget (Defining Current Heat Generation Loads)
- 2.2.43. Subroutine prinst (Calculating Principal Stress and Stress Intensity)
- 2.3. Subroutines for Modifying and Monitoring Existing Elements
- 2.3.1. Subroutine userou (Storing User-Provided Element Output)
- 2.3.2. Subroutine useran (Modifying Orientation of Material Properties)
- 2.3.3. Subroutine userrc (Performing User Operations on COMBIN37 Parameters)
- 2.3.4. Subroutine UElMatx (Accessing Element Matrices and Load Vectors)
- 2.3.5. Subroutine uthick (Getting User-Defined Initial Thickness)
- 2.3.6. Subroutine uflex (Calculating Flexibility Factors for PIPE288 and PIPE289)
- 2.3.7. Subroutine UTimeInc (Overriding the Program-Determined Time Step)
- 2.3.8. Subroutine UCnvrg (Overriding the Program-Determined Convergence)
- 2.4. Subroutines for Customizing Material Behavior
- 2.4.1. Subroutine UserMat (Creating Your Own Material Model)
- 2.4.2. Subroutine UserMatTh (Creating Your Own Thermal Material Model)
- 2.4.3. Subroutine UserHyper (Writing Your Own Isotropic Hyperelasticity Laws)
- 2.4.4. Subroutine UserHyperAniso (Writing Your Own Anisotropic Hyperelasticity Laws)
- 2.4.5. Subroutine userMullins (Writing Your Own Pseudo-Elastic Mullins Effect Law)
- 2.4.6. Subroutine UserCreep (Defining Your Own Implicit Creep Material Behavior)
- 2.4.7. Subroutine UserCr (Defining Your Own Explicit Creep Material Behavior)
- 2.4.8. Subroutine user_tbelastic (Defining Material Linear Elastic Properties)
- 2.4.9. Subroutine userfc (Defining Your Own Failure Criteria)
- 2.4.10. Subroutine userCZM (Creating Your Own Cohesive Zone Material)
- 2.4.11. Subroutine userswstrain (Defining Your Own Swelling Laws)
- 2.4.12. Subroutine userthstrain (Defining Your Own Thermal Strain)
- 2.4.13. Subroutine userfreestrain (Defining Your Own Free-Strain Increment)
- 2.4.14. Subroutine userfld (Update User-Defined Field Variables)
- 2.4.15. Subroutine UsrShift (Calculating a Pseudotime Time Increment)
- 2.4.16. Subroutine userck (Checking User-Defined Material Data)
- 2.4.17. Support Function egen
- 2.5. Subroutines for Customizing Contact Interfacial Behavior
- 2.6. Subroutines for Customizing Loads
- 2.6.1. Subroutine usrefl (Changing Scalar Fields to User-Defined Values)
- 2.6.2. Subroutine userpr (Changing Element Pressure Information)
- 2.6.3. Subroutine usercv (Changing Element Face Convection Surface Information)
- 2.6.4. Subroutine userfx (Changing Element Face Heat Flux Surface Information)
- 2.6.5. Subroutine userch (Changing Element Face Charge Density Surface Information)
- 2.6.6. Subroutine userfd (Calculating the Complex Load Vector for Frequency Domain Logic)
- 2.6.7. Function userpe (Calculating Rotation Caused by Internal Pressure)
- 2.6.8. Subroutine usrsurf116 (Modifying SURF151 and SURF152 Film Coefficients and Bulk Temperatures)
- 2.6.9. Subroutine User116Cond (Calculating the Conductance Coefficient for FLUID116)
- 2.6.10. Subroutine User116Hf (Calculating the Film Coefficient for FLUID116)
- 2.6.11. Subroutine userPartVelAcc (Calculating Particle Velocities and Accelerations of Ocean Waves)
- 2.6.12. Subroutine userPanelHydFor (Calculating Panel Loads Caused by Ocean Loading)
- 2.7. Subroutines for Sharing Data Between User Routines
- 2.8. Running Mechanical APDL as a Subroutine
- 2.9. Defining Your Own Commands
- 2.10. Support Subroutines
- 2.10.1. Function GetRForce (Getting Nodal Reaction Force Values)
- 2.10.2. Function GetStackDisp (Getting Current Displacement Values)
- 2.10.3. Subroutine ElResultStrt (Getting Load Data from Analysis Results)
- 2.10.4. Subroutine ElResultGet (Getting Results Values at Selected Points)
- 2.10.5. Subroutine ElInterp (Finding Element Coordinates)
- 2.11. Access at the Beginning and End of Various Operations
- 2.12. Memory-Management Subroutines
- 2.13. Parameter-Processing Subroutines
- 2.14. Other Useful Functions
- 3. Accessing the Mechanical APDL Database
- 3.1. Routines for Selecting and Retrieving Nodes and Elements
- 3.1.1. Function ndnext (Getting the Next Node Number)
- 3.1.2. Function ndprev (Getting the Number of the Previous Selected Node)
- 3.1.3. Function ndnxdf (Getting the Number of the Next Defined Node)
- 3.1.4. Function ndsel (Selecting, Unselecting, Deleting, or Inverting a Node)
- 3.1.5. Function elnext (Getting the Number of the Next Element)
- 3.1.6. Function elprev (Getting the Number of the Previous Selected Element)
- 3.1.7. Function elnxdf (Getting the Number of the Next Defined Element)
- 3.1.8. Subroutine elsel (Selecting, Unselecting, Deleting, or Inverting an Element)
- 3.2. Node Information Routines
- 3.3. Element Attribute Routines
- 3.3.1. Function elmiqr (Getting Information About an Element)
- 3.3.2. Function elmget (Getting an Element's Attributes and Nodes)
- 3.3.3. Subroutine elmput (Storing an Element)
- 3.3.4. Function etyiqr (Getting a Data Item About an Element Type)
- 3.3.5. Function etyget (Getting Information About an Element Type)
- 3.3.6. Subroutine etyput (Storing Element Type Data)
- 3.3.7. Subroutine echrtr (Getting Information About Element Characteristics)
- 3.3.8. Subroutine etysel (Selecting, Unselecting, Deleting, or Inverting an Element Type)
- 3.3.9. Function mpinqr (Getting Information About a Material Property)
- 3.3.10. Function mpget (Getting a Material Property Table)
- 3.3.11. Subroutine mpput (Storing a Material Property Table)
- 3.3.12. Subroutine mpdel (Deleting a Material Property Table)
- 3.3.13. Function rlinqr (Getting Information About a Real Constant Set)
- 3.3.14. Function rlget (Getting Real Constant Data)
- 3.3.15. Subroutine rlsel (Selecting or Deleting a Real Constant Set)
- 3.3.16. Function csyiqr (Getting Information About a Coordinate System)
- 3.3.17. Function csyget (Getting a Coordinate System)
- 3.3.18. Subroutine csyput (Storing a Coordinate System)
- 3.3.19. Subroutine csydel (Deleting a Coordinate System)
- 3.3.20. Subroutine userac (Demonstrates Use of Element Attribute Routines)
- 3.4. Coupling and Constraint Routines
- 3.4.1. Function cpinqr (Getting Information About a Coupled Set)
- 3.4.2. Function cpget (Getting a Coupled Set)
- 3.4.3. Subroutine cpput (Storing a Coupled Set)
- 3.4.4. Subroutine cpsel (Selecting or Deleting a Coupled Set)
- 3.4.5. Function ceinqr (Getting Information About a Constraint Equation Set)
- 3.4.6. Function ceget (Getting a Constraint Equation)
- 3.4.7. Subroutine ceput (Storing a Constraint Equation)
- 3.4.8. Subroutine cesel (Deleting or Selecting a Constraint Equation)
- 3.5. Nodal Loading Routines
- 3.5.1. Function disiqr (Getting Information About Constraints)
- 3.5.2. Function disget (Getting a Constraint at a Node)
- 3.5.3. Subroutine disput (Storing a Constraint at a Node)
- 3.5.4. Subroutine disdel (Deleting a Constraint at a Node)
- 3.5.5. Function foriqr (Getting Information About Nodal Loads)
- 3.5.6. Function forget (Getting a Nodal Load at a Node)
- 3.5.7. Subroutine forput (Storing a Nodal Load at a Node)
- 3.5.8. Subroutine fordel (Deleting a Nodal Load at a Node)
- 3.5.9. Function ansNodeBodyLoadIqr (Getting Information About a Nodal Body Load)
- 3.5.10. Function ansNodeBodyLoadGet (Getting a Nodal Body Load Value)
- 3.5.11. Subroutine ansNodeBodyLoadPut (Storing a Nodal Body Load)
- 3.5.12. Subroutine ansNodeBodyLoadDel (Deleting a Nodal Body Load)
- 3.6. Element Loading Routines
- 3.6.1. Function ansElemBodyLoadIqr (Getting Information About an Element Body Load)
- 3.6.2. Function ansElemBodyLoadGet (Getting an Element Body Load Value)
- 3.6.3. Subroutine ansElemBodyLoadPut (Storing an Element Body Load)
- 3.6.4. Subroutine ansElemBodyLoadDel (Deleting an Element Body Load)
- 3.6.5. Function ansElemSurfLoadIqr (Getting Information About an Element Surface Load)
- 3.6.6. Function ansElemSurfLoadGet (Getting an Element Surface Load Value)
- 3.6.7. Subroutine ansElemSurfLoadPut (Storing an Element Surface Load)
- 3.6.8. Subroutine ansElemSurfLoadDel (Deleting an Element Surface Load)
- 3.7. Results Information Routines
- 3.7.1. Function dspiqr (Getting Information About Nodal Results)
- 3.7.2. Function dspget (Getting a Nodal Result from the Database)
- 3.7.3. Subroutine dspput (Storing a Result at a Node)
- 3.7.4. Subroutine dspdel (Deleting a Result at a Node)
- 3.7.5. Function emsiqr (Getting Information About an Element's Miscellaneous Summable Data)
- 3.7.6. Function emsget (Getting an Element's Miscellaneous Summable Data)
- 3.7.7. Subroutine emsput (Storing an Element's Miscellaneous Summable Data)
- 3.7.8. Subroutine emsdel (Deleting an Element's Miscellaneous Summable Data)
- 3.7.9. Function enfiqr (Getting Information About Element Nodal Forces)
- 3.7.10. Function enfget (Getting an Element's Nodal Forces)
- 3.7.11. Subroutine enfput (Storing an Element's Nodal Forces)
- 3.7.12. Subroutine enfdel (Deleting an Element's Nodal Forces)
- 3.7.13. Function ensiqr (Getting Information About an Element's Nodal Stresses)
- 3.7.14. Function ensget (Getting an Element's Nodal Stresses)
- 3.7.15. Subroutine ensput (Storing Nodal Stresses at an Element)
- 3.7.16. Subroutine ensdel (Deleting an Element's Nodal Stresses)
- 3.7.17. Function esfiqr (Getting Information About Element Surface Stress Data)
- 3.7.18. Function esfget (Getting Element Surface Stress Data)
- 3.7.19. Subroutine esfput (Storing Element Surface Stress Data)
- 3.7.20. Subroutine esfdel (Deleting an Element's Surface Stress Data)
- 3.7.21. Function engiqr (Getting Information About an Element's Energies)
- 3.7.22. Function engget (Getting an Element's Energies)
- 3.7.23. Subroutine engput (Storing an Element's Energies and Volume)
- 3.7.24. Subroutine engdel (Deleting an Element's Energies)
- 3.7.25. Function egriqr (Getting Information About an Element's Nodal Gradients)
- 3.7.26. Function egrget (Getting an Element's Nodal Gradients)
- 3.7.27. Subroutine egrput (Storing an Element's Nodal Gradients)
- 3.7.28. Subroutine egrdel (Deleting an Element's Nodal Gradients)
- 3.7.29. Function eeliqr (Getting Information About an Element's Nodal Elastic Strains)
- 3.7.30. Function eelget (Getting an Element's Nodal Elastic Strains)
- 3.7.31. Subroutine eelput (Storing an Element's Nodal Elastic Strains)
- 3.7.32. Subroutine eeldel (Deleting an Element's Nodal Elastic Strains)
- 3.7.33. Function epliqr (Getting Information About an Element's Nodal Plastic Strains)
- 3.7.34. Function eplget (Getting an Element's Nodal Plastic Strains)
- 3.7.35. Subroutine eplput (Storing an Element's Nodal Plastic Strains)
- 3.7.36. Subroutine epldel (Deleting an Element's Nodal Plastic Strains)
- 3.7.37. Function ecriqr (Getting Information About an Element's Nodal Creep Strains)
- 3.7.38. Function ecrget (Getting an Element's Nodal Creep Strains)
- 3.7.39. Subroutine ecrput (Storing an Element's Nodal Creep Strains)
- 3.7.40. Subroutine ecrdel (Deleting an Element's Nodal Creep Strains)
- 3.7.41. Function ethiqr (Getting Information About an Element's Nodal Thermal Strains)
- 3.7.42. Function ethget (Getting an Element's Nodal Thermal Strains)
- 3.7.43. Subroutine ethput (Storing an Element's Nodal Thermal Strains)
- 3.7.44. Subroutine ethdel (Deleting an Element's Thermal, Initial, and Swelling Strains)
- 3.7.45. Function euliqr (Getting Information About an Element's Euler Angles)
- 3.7.46. Function eulget (Getting an Element's Nodal Euler Angles)
- 3.7.47. Subroutine eulput (Storing an Element's Euler Angles)
- 3.7.48. Subroutine euldel (Deleting an Element's Euler Angles)
- 3.7.49. Function efxiqr (Getting Information About Element Fluxes)
- 3.7.50. Function efxget (Getting an Element Flux)
- 3.7.51. Subroutine efxput (Storing an Element's Fluxes)
- 3.7.52. Subroutine efxdel (Deleting Element Fluxes)
- 3.7.53. Function elfiqr (Getting Information About Element Local Forces)
- 3.7.54. Function elfget (Getting an Element Local Force)
- 3.7.55. Subroutine elfput (Storing an Element's Local Forces)
- 3.7.56. Subroutine elfdel (Deleting Element Local Forces)
- 3.7.57. Function emniqr (Getting Information About Element Miscellaneous Non-summable Data)
- 3.7.58. Function emnget (Getting an Element's Miscellaneous Non-summable Data)
- 3.7.59. Subroutine emnput (Storing an Element's Miscellaneous Non-summable Data)
- 3.7.60. Subroutine emndel (Deleting an Element's Miscellaneous Non-summable Data)
- 3.7.61. Function ecdiqr (Getting Information About Element Current Densities)
- 3.7.62. Function ecdget (Getting an Element Current Density)
- 3.7.63. Subroutine ecdput (Storing an Element's Current Densities)
- 3.7.64. Subroutine ecddel (Deleting Element Current Densities)
- 3.7.65. Function enliqr (Getting Information About Element Nonlinear Tables)
- 3.7.66. Function enlget (Getting Element Nonlinear Tables)
- 3.7.67. Subroutine enlput (Storing an Element's Nonlinear Tables)
- 3.7.68. Subroutine enldel (Deleting Element Nonlinear Tables)
- 3.7.69. Function ehciqr (Getting Information About Calculated Element Heat Generations)
- 3.7.70. Function ehcget (Getting a Calculated Element Heat Generation)
- 3.7.71. Subroutine ehcput (Storing an Element's Calculated Heat Generations)
- 3.7.72. Subroutine ehcdel (Deleting Element Calculated Heat Generations)
- 4. Subroutines for Your Convenience
- 4.1. Input and Output Abbreviations
- 4.2. General Subroutines
- 4.2.1. Subroutine dptoch (Retrieve Eight Characters From a Double Precision Variable)
- 4.2.2. Function ppinqr (Obtain Information About Threads)
- 4.2.3. Function pplock (Locking a Thread in Shared Memory)
- 4.2.4. Function ppunlock (Unlocking a Thread in Shared Memory)
- 4.2.5. Function ppproc (Get the Active Thread Index)
- 4.2.6. Function wrinqr (Obtain Information About Output)
- 4.2.7. Subroutine erinqr (Obtaining Information from the Errors Common)
- 4.2.8. Subroutine erhandler (Displaying Program Errors)
- 4.2.9. Subroutine intrp (Doing Single Interpolation)
- 4.2.10. Subroutine tranx3 (Processing Geometry for 3D Line Elements)
- 4.2.11. Subroutine systop (Stopping a Program Run)
- 4.3. Vector Functions
- 4.3.1. Function vdot (Computing the Dot Product of Two Vectors)
- 4.3.2. Function vidot (Computing the Dot Product of Two Vectors with Increments)
- 4.3.3. Function vsum (Summing Vector Components)
- 4.3.4. Function vmax (Retrieving the Maximum Vector Value at a Given Location)
- 4.3.5. Function lastv (Retrieving the Position of the Last Nonzero Term in a Double Precision Vector)
- 4.3.6. Function izero (Setting an Integer Vector to Zero)
- 4.3.7. Function imove (Assigning Equal Values to Two Integer Vectors)
- 4.3.8. Subroutine vzero (Initializing a Vector to Zero)
- 4.3.9. Subroutine vmove (Moving One Vector into Another)
- 4.3.10. Subroutine vimove (Moving One Vector into Another Incrementally)
- 4.3.11. Subroutine vinit (Assigning a Scalar Constant to a Vector)
- 4.3.12. Subroutine viinit (Assigning a Scalar Constant to a Vector Incrementally)
- 4.3.13. Subroutine vapb (Setting a Vector to Sum of Two vectors)
- 4.3.14. Subroutine vapb1 (Combining Two Vectors in One)
- 4.3.15. Subroutine vapcb1 (Multiplying a Vector to a Constant)
- 4.3.16. Subroutine vamb (Gets a Third Vector by Subtracting One Vector from Another)
- 4.3.17. Subroutine vamb1 (Subtracting One Vector from Another)
- 4.3.18. Subroutine vmult (Multiplying a Vector by a Constant)
- 4.3.19. Subroutine vmult1 (Multiplying a Vector by a Constant)
- 4.3.20. Subroutine vcross (Defining a Vector via a Cross Product)
- 4.3.21. Subroutine vnorme (Normalizing a Three-Component Vector)
- 4.3.22. Subroutine vnorm (Normalizing a Vector to Unit Length)
- 4.3.23. Function ndgxyz (Getting the X,Y,Z Vector for a Node)
- 4.3.24. Subroutine ndpxyz (Storing X,Y,Z for a Node)
- 4.4. Matrix Subroutines
- 4.4.1. Subroutine maxv (Multiplying a Vector by a Matrix)
- 4.4.2. Subroutine maxv1 (Multiplying a Vector by a Matrix)
- 4.4.3. Subroutine matxv (Multiplying a Vector by a Full Transposed Matrix)
- 4.4.4. Subroutine matxv1 (Multiplying a Vector by a Full Transposed Matrix)
- 4.4.5. Subroutine matxb (Transposing a matrix)
- 4.4.6. Subroutine maat (Changing a Matrix Value via Addition, Multiplication, and Transposition)
- 4.4.7. Subroutine matba (Updating Matrix Value via Transposition, Multiplications, and Addition)
- 4.4.8. Subroutine matsym (Filling the Upper Triangle from the Lower Triangle)
- 4.4.9. Subroutine mctac (Transposing a symmetric matrix)
- 4.4.10. Subroutine tran (Transposing a matrix)
- 4.4.11. Subroutine symeqn (Solving Simultaneous Linear Equations)
- 5. Using Python to Code UPF Subroutines
- A. Creating External Commands for Linux
- B. Creating External Commands for Windows
- B.1. Tasks in Creating an External Command
- B.1.1. Creating Compatible Code
- B.1.2. Creating a Visual Studio Project
- B.1.3. Creating an External Definition File
- B.1.4. Creating a Shared Library
- B.1.5. Creating an External Table File
- B.1.6. Setting the ANSYS_EXTERNAL_PATH Environment Variable
- B.1.7. Using External Commands
- B.1.8. Checking External Command Status
- B.1.9. Resetting External Commands
- B.1.10. Example: Creating an External Command Using Visual Studio 2019 Professional
- C. User Material (UserMat) Subroutine Example
- D. Structural-Thermal User Material (UserMat, UserMatTh) Example
- E. Fully Coupled Wind Turbine Example in Mechanical APDL