The following subroutines are available as a convenience for general applications:
- 2.11.1. Function GetRForce (Getting Nodal Reaction Force Values)
- 2.11.2. Function GetStackDisp (Getting Current Displacement Values)
- 2.11.3. Subroutine ElResultStrt (Getting Load Data from Analysis Results)
- 2.11.4. Subroutine ElResultGet (Getting Results Values at Selected Points)
- 2.11.5. Subroutine ElInterp (Finding Element Coordinates)
*deck,GetRForce
function GetRForce (Node,Label,Value)
c primary function: Get the K * u - F at a node from the rfsum vector.
c warning: This routine is called after the elements
c are formed, but before solution. Therefore,
c F is from the current iteration, but
c u is from the previous iteration. At convergence,
c this difference will have little effect.
c The computations are done immediately after the
c call to UElMatx.
c Use the RFSUM command to ask for the summation.
c Use *GET,Parm,NODE,num,RF,DOFLAB to access the reaction
c sum from the command line.
c secondary functions: Return pointer for fast access
c object/library: usr
c *** Notice - This file contains ANSYS Confidential information ***
c Prolog is not CONFIDENTIAL INFORMATION
c input arguments:
c variable (typ,siz,intent) description
c Node (int,sc,in) - Node Number (User)
c Label (ch*4,sc,in) - DOF Label (Upper Case)
c 'UX ','UY ','TEMP','VOLT','ROTY', etc
c output arguments:
c GetRForce (int,func,out) - status/pointer
c = 0 - data not valid
c > 0 - Rfsum pointer to data for fast access
c see comments below
c Value (dp,sc,out) - Solution value for Node,Label
c All results are in the nodal coordinate
c system
c example usage:
c external GetRForce
c integer GetRForce, ptr, Node2
c double precision Value
c #include "handlecom.inc" (if Value = Rfsum(ptr) form is to be used)
c ptr = GetRForce (Node2,'UY ',Value)
c later...
c Value = Rfsum(ptr)
c directionID is used to translate label into corresponding position in dislab's position
*deck,GetStackDisp
function GetStackDisp (Node,Label,Value)
c primary function: Get the displacement at a node from the disp vector
c secondary functions: Return pointer for fast access
c object/library: usr
c *** Notice - This file contains ANSYS Confidential information ***
c Prolog is not CONFIDENTIAL INFORMATION
c typ=int,dp,log,chr,dcp siz=sc,ar(n) intent=in,out,inout
c input arguments:
c variable (typ,siz,intent) description
c Node (int,sc,in) - Node Number (User)
c Label (ch*4,sc,in) - DOF Label (Upper Case)
c 'UX ','UY ','TEMP','VOLT','ROTY', etc
c output arguments:
c variable (typ,siz,intent) description
c GetStackDisp (int,sc,out) - status/pointer
c = 0 - data not valid
c > 0 - UDisp pointer to data for fast access
c see comments below
c Value (dp,sc,out) - Solution value for Node,Label
c example usage:
c external GetStackDisp
c#include "handlecom.inc" (only if UDisp(ptr) form is used
c integer GetStackDisp, ptr, Node2
c double precision Value
c ptr = GetStackDisp (Node2,'UY ',Value)
c later...
c Value = UDisp(ptr)
*deck,ElResultStrt
subroutine ElResultStrt (Label,Comp,LabAvg,TypeData,nVal,iLoc)
c *** primary function: (post1) Load data for later ElResultGet
c *** Notice - This file contains ANSYS Confidential information ***
c (prolog is not confidential)
c input arguments:
c Label (ch*4,sc,in) - Result Type
c Comp (ch*4,sc,in) - Result Component (8 char for ESTR)
c LabAvg (ch*4,sc,in) - 'AVG ' or 'NOAV' ('AVG ' default)
c output arguments:
c TypeData (int,sc,out) - Code for data type
c nVal (int,sc,out) - Number of values per point
c If 0, no data
c iLoc (int,sc,out) - Location of Comp in values
*deck,ElResultGet
subroutine ElResultGet (nPoints,ebest,elcord,TypeData,iLoc,
x nVal,result)
c *** primary function: (post1) Get results at selected points
c *** Notice - This file contains ANSYS Confidential information ***
c (prolog is not confidential)
c input arguments:
c nPoints (int,sc,in) - Number of evaluation points
c *** from ElInterp ***
c ebest (int,ar(nPoints),in) - Element(s) containing points
c elcord (dp,ar(3,nPoints),in) - Element coordinates
c *** from ElResultStrt ***
c TypeData (int,sc,in) - Data type code
c iLoc (int,sc,in) - Start of selected data
c nVal (int,sc,in) - Number of results per point
c output arguments:
c Result (dp,ar(nvar,nPoints),out) - Array of results
*deck,ElInterp
subroutine ElInterp (piFEML,nPoints,xyzPoints,tolInsidein,
x tolOutsidein,MoveTol,ebest,elcord)
c primary function: Find element numbers containing xyz points
c secondary functions: Find element coordinates of these points
c object/library: upf
c *** Notice - This file contains ANSYS Confidential information ***
c (Prolog is not CONFIDENTIAL INFORMATION)
c input arguments:
c piFEML (ptr,sc,in) - If non 0, pointer of a FEM Object
c nPoints (int,sc,in) - Number of points to find (do in one group)
c xyzPoints(dp,ar(3,nPoints),in)- XYZ coordinates of each point
c tolInsidein(dp,sc,in) - Tolerance for point inside element
c (0.0d0 defaults to 1.0d-4)
c tolOutsidein(dp,sc,in) - Maximum distance outside to be associated
c with an element (0.0d0 defaults to 0.25)
c MoveTol (dp,sc,in) - Node move tolerance (0.0d0, no move)
c output arguments:
c ebest (int,ar(nPoints),out) - Best element number for each point
c elcord (dp,ar(3,nPoints),out) - Element coordinates of the point