The following subroutines are available as a convenience for general applications:
- 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)
*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