** Next:** Customised Analysis Environments
**Up:** FG-User-Routines
** Previous:** Array Size Considerations

CALL UANTYP(FULNAM,ABBNAM)

This routine returns both the full and abbreviated names of the analysis type for the current model, or blank character strings if none specified. This routine can be used to partition the list of elements in 'userEL' or the list of materials, physical properties and loads in 'userIQ'.

UBDRY3SubroutineGet a boundary condition

CALL UBDRY3(INO,ANAME,ICOTYP,IPART1,IDOF1,IPART2,IDOF2,VALUE,IERR)

Where degrees of freedom have been released the indicator -1 is used in array IDOF1. For types 5 through 8 routines URBEAM, URBODY, UCONCT, and UEQUA should be used to determine the complex node connections for these constraints. Prescribed constraints are not returned by this routine, use routine UPRESC for these prescribed values. Degrees of freedom have fixed meanings for freedoms 1-10, degrees of freedom 11 to 16 can be programmed to mean anything using the FEMGV resource file femsys.ini (see chapter 3).

UBODY2SubroutineGet body data

CALL UBODY2(INO,ANAME,IBOD,IERR)

The first and last element numbers include the element number offset NEBAS.

UCLOSSubroutineTo close a database file opened with USTRT2

CALL UCLOS

This routine is not needed for internal interfaces. In this case, FEMGEN performs all file closing functions.

UCOCYLSubroutineCalculate the local cartesian system at a given point

CALL UCOCYL(ISYSTY,AXESIN,P1,P2,AXES)

This routine takes as input, a local axis system definition, and the coordinates of a point at which the local axes are needed. The output is in the form of a local system unique to that point. This routine is used in conjunction with UCSYS2 for spherical and cylindrical systems. For rectangular systems, the local system is the same at all points in space and so array AXESIN is simply copied to array AXES.

UCONCTSubroutineGet Node connections for MPC RCONNECT

CALL UCONCT(ICO,IWORK,IWDIM,IDOF,IERR)

For MPC RCONNECT FEMGEN will first attempt to evaluate an edge-edge connection involving 1-1 or 1-2 node connections and is commonly used for mesh refinement. Where the parts involved for the constraint are not two edges the routine will attempt to evaluate a number of 1-1 connections based on a proximity algorithm.

Node pairs are output as Slave_node, Nmastr, mastr1-n and for this routine Nmastr will be equal to 1 or 2. The list is terminated by a slave node ID of zero.

When the connection involves a large number of nodes, a warning message is issued as the process may be slow.

UCONE3SubroutineGet the external constraint for a single node

CALL UCONE3(INOD,ICONST,ISYSP,IERR)

This routine is used to determine which external degrees of freedom are constrained on a given node. Where a node lies on the boundary between two parts, each having an external constraint definition, the constrained degrees of freedom at boundary nodes are automatically summed. Elastic and General constraints can only be accessed using UBDRY3, internal constraints can be accessed in a similar way to UCONE3 via routine UCONS3.

UCONS3SubroutineGet the summed constraints for a single node

CALL UCONS3(INOD,ICONST,ISYSP,IESUPP,IERR)

This routine is used to determine which degrees of freedom are constrained on a given node. Where a node lies on the boundary between two parts, each having a constraint definition, the constrained degrees of freedom at boundary nodes are automatically summed. Elastic and General constraints can only be accessed using UBDRY3, Externals can be accessed in a similar way to UCONS3 via routine UCONE3. Degrees of freedom have fixed meanings for freedoms 1-10, degrees of freedom 11 to 16 can be programmed to mean anything using the FEMGV resource file femsys.ini (see chapter 3).

UCSYS2SubroutineGet a nodal coordinate system and the nodes to which it applies

CALL UCSYS2(ICOSYS,ISYSTY,AXES,IP1,IP2,IP3,NSEL,IWORK,IWDIM,IERR)

If parameter IWDIM is set to zero, the check on array size will be omitted. The local axis system at a particular point in space may be determined using routine UCOCYL.

UCURVTSubroutineGet time curve information

CALL UCURVT(ITC,IEVAL,TNAME,ITTYPE,SMOOTH,ICYCLE,IWORK,IWDIM,

WORK,IWDIM2,NVAL,IERR)

This routine will normally be used with IEVAL set to 1 so that the time curve will always produce a list of point pairs. For those analysis packages that support functions the function option might prove useful in reducing the size of input files.

UECENTSubroutineCalculate the coordinates of an element centroid

CALL UECENT(IFGELT,IELEM,COORD,IERR)

This routine takes as input the element node list and returns the coordinates of the element centroid. This routine is useful for calculating the coordinates of a point for input to ULEVAL.

UEFACESubroutineGet the face identifier of an element adjacent to a loaded part

CALL UEFACE(IEL,IELTYP,IPATY,IPANO,IFATYP,NNEF,

IWORK,IWDIM,IWOFF,IFACE,IERR)

This routine should be used for elemental load when element faces are loaded. Routine UFACG2 only returns the face identifier of the first element found on the loaded part and this routine ensures that, for each element of the loaded part, the element face identifier is found. Array IWORK is used for temporary storage and the offset IWOFF enables any current storage in IWORK not to be overwritten (only IWORK space from IWOFF+1 to IWDIM is used by UEFACE).

UELEMSubroutineGet the nodes on an element

CALL UELEM(IE,IELEM,NNODE,IERR)

The node ordering for the element will need to be changed by the interface to ensure compatibility with the analysis package. The FEMGEN node numbering conventions are illustrated in appendix C of the FEMGV User Manual. The element number given as input to this routine should include the element number offset NEBAS, the node numbers returned include the node number offset NNBAS.

UELEMGSubroutineTo select elements on a geometric part

CALL UELEMG(IPATY,IPANO,NE0,NE1,IELT,IVAR,IMID,IPID,IELGR,IERR)

Combined lines are not supported by this routine, and elements on such
geometries should be accessed via the constituent lines. Parameters NE0 and NE1 include
the element number offset NEBAS (see routine USIZE).

FEMGEN has an option for
applying a loading condition to the whole model and routine ULOAD4
will indicate this by returning a part type of zero. Where an analysis package
supports this concept the information may be used directly, otherwise routine UELEMG
should be used to get NE0 and NE1 to load the elements explicitly.

Note that in all cases NE0 and NE1 only give the minimum and maximum element numbers on the
part and some element numbers between these values may not exist. Routine UELEM should
be used to check that a particular element within the range does exist.

UELSETSubroutineTo select the elements on all parts within a set

CALL UELSET(IPANO,NELO,IWORK,IWDIM,IERR)

The element numbers are sorted into ascending order, and include the element number offset (NEBAS) from USIZE.

UEQUASubroutineGet Node connections for MPC EQUA

CALL UEQUA(ICO,IWORK,IWDIM,NSLAVE,IDOFS,COEF,NMASTR,

IDOFM,COEFFM,RHS,IERR)

Master node groups are output as Nmastr, mastr1-n. The list is terminated by Nmastr = 0

UFACESubroutineGet loaded face on a single element

CALL UFACE(INELEM,NNODE,IELTYP,NNEF,IPNE,IFACE,JAC,IERR)

Where no loaded face is found IFACE is set to -9999, and IERR to 2. For 2D elements where all nodes are loaded, IFACE is set to zero, and IPNE is not used. For interface elements (IP11,IL22,IL32,IL33,IL44,IL55, IS33,IS44,IS84,IS66,IS88), the two faces are defined as: Face 1 is the bottom surface and contains node 1, and Face 2 is the top surface; any other case is not a valid face and IFACE is set to 0.

IFACE | BE2 | BE3 | ||

0 | Normal to element | Normal to element | ||

1 | End 1 | 1 | ||

2 | End 2 | 2 | ||

IFACE | QU4 | QU8 | QU12 | |

0 | Normal to element | Normal to element | Normal to element | |

1 | Side 1-2 | 1-2-3 | 1-2-3-4 | |

2 | Side 2-3 | 3-4-5 | 4-5-6-7 | |

3 | Side 3-4 | 5-6-7 | 7-8-9-10 | |

4 | Side 4-1 | 7-8-1 | 10-11-12-1 | |

IFACE | TR3 | TR6 | TR9 | TR15 |

0 | Normal to element | Normal to element | Normal to element | Normal to element |

1 | Side 1-2 | 1-2-3 | 1-2-3-4 | 1-2-3-4-5 |

2 | Side 2-3 | 3-4-5 | 4-5-6-7 | 5-6-7-8-9 |

3 | Side 3-1 | 5-6-1 | 7-8-9-1 | 9-10-11-12-1 |

IFACE | HE8 | HE20/HE27 | HE32 | |

1 | Face 1-2-3-4 | 1-9-2-10-3-11-4-12 | 1-13-17-21-32-31-30-20-16-10-11-12 | |

2 | Face 5-6-7-8 | 5-13-6-14-7-15-8-16 | 4-5-6-7-15-19-27-26-25-24-18-14 | |

3 | Face 1-2-6-5 | 1-9-2-18-6-13-5-17 | 1-2-3-4-14-18-24-23-22-21-17-13 | |

4 | Face 2-3-7-6 | 2-10-3-19-7-14-6-18 | 7-8-9-10-16-20-30-29-28-27-19-15 | |

5 | Face 3-4-8-7 | 3-11-4-20-8-15-7-19 | 1-12-11-10-9-8-7-6-5-4-3-2 | |

6 | Face 4-1-5-8 | 4-12-1-17-5-16-8-20 | 21-22-23-24-25-26-27-28-29-30-31-32 | |

IFACE | PE6 | PE15 | PE24 | |

1 | Face 1-2-3 | 1-7-2-8-3-9 | 1-9-8-7-6-5-4-3-2 | |

2 | Face 4-5-6 | 4-10-5-11-6-12 | 16-17-18-19-20-21-22-23-24 | |

3 | Face 1-2-5-4 | 1-7-2-14-5-10-4-13 | 4-5-6-7-12-15-22-21-20-19-14-11 | |

4 | Face 2-3-6-5 | 2-8-3-15-6-11-5-14 | 1-10-13-16-24-23-22-15-12-7-8-9 | |

5 | Face 3-1-4-6 | 3-9-1-13-4-12-6-15 | 1-2-3-4-11-14-19-18-17-16-13-10 | |

IFACE | TE4 | TE10 | TE16 | |

1 | Face 1-2-3 | 1-5-2-6-3-7 | 4-5-6-7-12-15-16-14-11 | |

2 | Face 1-2-4 | 1-5-2-9-4-8 | 1-10-13-16-15-12-7-8-9 | |

3 | Face 2-3-4 | 2-6-3-10-4-9 | 1-2-3-4-11-14-16-13-10 | |

4 | Face 3-1-4 | 3-7-1-8-4-10 | 1-9-8-7-6-5-4-3-2 |

UFACG2SubroutineGet loaded elements on or adjacent to a loaded part

CALL UFACG2(IPATY,IPANO,IPATYE,IPANOE,

IPATY2,IPANO2,NNEF,IPNE,IFACE,JAC,NSEL,IWORK,IWDIM,IERR)

The routine can be given the part with elements to assist in cases where ambiguity might exist (i.e. where the loaded part is adjacent to 2 higher order parts). The element numbers are not sorted, and include the element number offset (NEBAS) from USIZE. Where no loaded face is found IFACE is set to -9999, and IERR to 2. For 2D elements where all nodes are loaded, IFACE is set to zero, and IPNE is not used.

UFCENTSubroutineCalculate the coordinates of an element face centroid

CALL UFCENT(IFGELT,IELEM,IPNE,NNEF,IFATYP,COORD,IERR)

This routine takes as input various element and face information and returns the coordinates of the face centroid. This routine is useful for calculating the coordinates of a point for input to ULEVAL.

UFGELTSubroutineGet an element name and variant

CALL UFGELT(IFGELT,IELVAR,ELNAME,IERR)

Get a FEMGEN element name. Should be replaced by a FE-program specific routine to get the element-name which corresponds to the given FEMGEN element type and element variant. Returns FEMGEN element name in position 1 of ELNAME, and element variant in position 2. Both are stored as A4 packed characters.

UGELEMSubroutineTo get information on an element

CALL UGELEM(IE,IPATY,IPANO,IELT,IVAR,IMID,IPID,IELGR,IERR)

An element number (including the element number offset (see NCONST(18) in USIZE)) is input, information on the element is output.

UICON2SubroutineGet detailed initial condition data from the database

CALL UICON2(INO,ANAME,AICTYP,IAPPL,ISC,ILM,ICS,IPATY,

IPANO,IPATYE,IPANOE,NVALS,WORK,IWDIM,IERR)

This routine may be used with any environment. Subroutine ULODE2 should be used to get the elements for element-wise initial conditions, where INO loops from IPATY to IPANO. If IPATYE and IPANOE are returned as known these will be used in ULODE2 to resolve ambiguity. The part, given by IPATY and IPANO, should be an edge of the part given by IPATYE and IPANOE. Note that where the ALL option has been used in FEMGEN to specify which parts are referenced, IPATY will be returned as zero for both nodal and element-wise initial conditions. Where an analysis package has an option to apply initial conditions to all nodes/elements, this information may be used directly. For analysis packages without such a facility routines UNODEG, and UELEMG may be used to get all nodes/elements in the model.

Parameters ISC, ILM, and ICS may be used in conjunction with ULEVAL to evaluate an initial condition at various points in space. These points will typically be nodes, element centroids or element face centres. Routines UFCENT and UECENT may be useful for determining the coordinates of element face centres and element centroids.

UIDNT2SubroutineDetermine the type and number of an entity from its name

CALL UIDNT2(ANAME,ITY,INO,IERR)

ULEVALSubroutineEvaluate a load at a point in space.

CALL ULEVAL(IFIRST,ILM,ISC,ICS,COORD,IPATY,IPANO,ISTAT,

VALUE,AXESO,IWORK,IWDIM,IERR)

This routine is used in conjunction with ULOAD4, and ULODE2. Given the coordinate of any point in space, a load mask, space curve, and/or local system identifier this routine will determine whether the point is in or out of the load mask, give the value of the space curve at the point and a 3*3 transformation which may be used to transform vector loads originally specified in the global system.

The use of IWORK is necessary for evaluating space curve data and can usually be very small (dimension 40). However where large space curve lists have been imported into FEMGEN more of IWORK will be needed. The part types IPATY and IPANO are needed only for the evaluation of parametric space curves and may be taken from the output of ULOAD4 directly or via ULODE2 for element-wise loads.

The initialisation flag IFIRST is used to reduce the amount of calculation required for each point. On the first call to the routine key information is calculated and saved for use in subsequent calls. IFIRST should be re-set to zero for each load for nodal loads or for each call to ULODE2 for element-wise loads.

Routines UFCENT and UECENT may be useful for determining the coordinates of element face centres and element centroids.

**Care must be taken not to destroy any data in IWORK which is currently being used to
store node and element lists. It is recommended that the last 10000 places in IWORK be passed
to this routine in order to avoid this problem**

ULINE2SubroutineGet line data

CALL ULINE2(INO,ANAME,ILIN,RLENG,IERR)

Single Line | Combined line | |

1 | Line relative length | NOT USED |

2 | Sequence number of start point | Sequence number of start point |

3 | Sequence number of end point | Sequence number of end point |

4 | Number of divisions indicator (IDIV) | Number of divisions indicator (IDIV) |

5 | 100*Shape1+Shape2 for intersection lines, or node1 | NOT USED |

6 | centre, or pdef, or node2 | Number of lines in combined line |

7 | NOT USED | NOT USED |

8 | First element number | Sequence number of line 1 |

9 | Last element number | Sequence number of line 2 |

10 | Local coordinate system sequence number | Sequence number of line 3 |

11 | Material sequence number | Sequence number of line 4 |

12 | Physical property sequence number | NOT USED |

13 | Element group number | NOT USED |

14 | Type of line | Type of line |

1 Straight | ||

2 Arc | ||

3 Cut | ||

4 Polyline | ||

5 Spline | ||

6 Curve | ||

99 Manual | ||

9 Line Combination | 9 Line Combination | |

15 | FEMGEN element type number | NOT USED |

16 | Element variant number | NOT USED |

The first and last element numbers include the element number offset NEBAS.

ULISTSubroutineGet a list of sets

CALL ULIST(INO,NUMB,IWORK,IWDIM,NPART,IERR)

Lists of sets are only used for regions and prisms to store the sets that define holes. These sets are loops of lines or surfaces having a sense in which they are ordered (clockwise or anti-clockwise with regard to a particular direction). The reference to a set in the list IWORK is negative if its sense is not as required. The sequence number of the list INO is given by routines USURF2 for regions and UBODY2 for prisms.

ULOAD4SubroutineGet detailed load data from the database

CALL ULOAD4(INO,ANAME,ALOTYP,LCAS,IAPPL,ITC,ISC,ILM,ICS,

IPATY,IPANO,IPATYE,IPANOE,NVALS,WORK,IWDIM,IERR)

This routine may be used with any environment. Subroutine ULODE2 should be used to get the loaded elements for element loads, where INO loops from IPATY to IPANO, if IPATYE and IPANOE are returned as known these will be used in ULODE2 to resolve ambiguity. The loaded part, given by IPATY and IPANO, should be an edge of the part given by IPATYE and IPANOE. Note that where the ALL option has been used in FEMGEN to specify which parts are loaded, IPATY will be returned as zero for both nodal and element-wise loads. Where an analysis package has an option to load all nodes/elements, this information may be used directly. For analysis packages without such a facility routines UNODEG, and UELEMG may be used to get all nodes/elements in the model.

Parameter ITC is the identification number of a time curve attached to the load. This may be used as an amplitude reference and the time curve data itself accessed via routine UCURVT. Parameters ISC, ILM, and ICS may be used in conjunction with ULEVAL to evaluate a load at various points in space. These points will typically be nodes, element centroids or element face centres. Routines UFCENT and UECENT may be useful for determining the coordinates of element face centres and element centroids.

ULODE2SubroutineGet expanded element load data

CALL ULODE2(INO,IPATY,IPANO,IPATYE,IPANOE,IFATYP,IERR)

This routine is used together with ULOAD4. It will always work if parameter INO is taken from the pointers IPATY and IPANO. In cases where a load has been applied to the whole model this routine may be used but will simply produce values of zero for IPATY and IPANO.

ULOADMSubroutineGet primary information for a moving load

CALL ULOADM(INO,IWORK,IWDIM,ANAME,ALOTYP,LNAME,LCAS,ILANE,

IPATY,IPANO,NSTPOS,IERR)

This routine provides primary information on a moving load. Array IWORK is used in the case where the moving load is defined by a loadpath (see FEMGV User Manual) to temporarily store the line(s) that constitute the loadpath. A moving load represents a series of stopping positions for the group of loads it refers to, and each stopping position corresponds to a loadcase. The range of loadcases is determined by LCAS, the first loadcase number, and NSTPOS, the total number of stopping positions.

Once a valid moving load has been found parameter INO may be used as input to routine USETL to get an ordered list of elements (and faces) and nodes on the affected geometry. Then by looping over the number of stopping positions routine ULOADT can be called to determine the values of the moving load for each stopping position.

Refer to Appendix D for an example of a moving load file.

ULOADTSubroutineGet a moving load definition at a specific stopping position

CALL ULOADT(INO,IPOS,IWORK,IWDIM,RWORK,IWDIM2,IERR)

This routine returns a transformed moving load definition for the requested stopping position. The interface programmer must determine the spatial relationship between these transformed moving load definitions and the element edges generated by USETL.

Array IWORK is used in the case where the moving load is defined by a loadpath (see FEMGV User Manual) to temporarily store the line(s) that constitute the loadpath. The recommended dimension for array RWORK is 10000.

UMAT3SubroutineGet material property data from the database

CALL UMAT3(IMID,ANAME,AMATYP,IMTYPE,NVALS,WORK,IWDIM,IERR)

This routine may be used with any environment. Material properties data is stored in array WORK in a form defined using 'userIQ'. For external materials (IMTYPE = 2) array work will contain a number of text strings which must be decoded; subroutine UMATE is supplied for this purpose.

UMATESubroutineDecode material property names

CALL UMATE(WORK,IWDIM,MAXNAM,NNAMES,LNAMES,CNAMES,IERR)

This routine may be used to extract a list of names (MAXNAM being the maximum allowed) from the work array output of UMAT3. This routine is provided because the names and number of names are packed into array work.

These names can be used in any way to reference an external material file or database. Function KFVOPN described in chapter 5 should be used to open any additional files.

**Parameter MAXNAM was added to UMATE at version 2.1 of the FEMGEN
user routines, dimension of LNAMES and CNAMES was previously set to 4.**

UNAMG2SubroutineGet a name

CALL UNAMG2(ITY,INO,ANAME,IERR)

UNODESubroutineGet node coordinates

CALL UNODE(INO,COOR,IERR)

The coordinates returned by this routine will always be expressed in the global cartesian system, regardless of the system used to define a model.The node number must include the node number offset NNBAS.

UNODEGSubroutineTo select nodes on a geometric part

CALL UNODEG(IPATY,IPANO,NSEL,IWORK,IWDIM,IERR)

The node numbers are not sorted, and include the node number offset (NNBAS) from USIZE. For IPATY=0 all nodes in the model are placed directly into IWORK. In such cases a speed improvement may be possible by omitting the call to UNODEG and simply looping on the number of nodes in the model directly.

UPHYS4SubroutineGet physical property data from the database

CALL UPHYS4(IPID,ANAME,APHTYP,IPTYPE,IFORI,IFOFF,NVALS,WORK,IWDIM,IERR)

This routine may be used with any environment. Physical properties data is stored in array WORK in a form defined using 'userIQ'. For external properties (IPTYPE = 2) array work will contain a number of text strings which must be decoded; subroutine UPHYSE is supplied for this purpose.

UPHYSESubroutineDecode physical property names

CALL UPHYSE(WORK,IWDIM,MAXNAM,NNAMES,LNAMES,CNAMES,IERR)

This routine may be used to extract a list of names (MAXNAM being the maximum allowed) from the work array output of UPHYS3. This routine is provided because the names and number of names are packed into array work.

These names can be used in any way to reference an external physical file or database. Function KFVOPN described in chapter 5 should be used to open any additional files.

**Parameter MAXNAM was added to UPHYSE at version 2.1 of the FEMGEN
user routines, dimension of LNAMES and CNAMES was previously set to 4.**

UPNT2SubroutineGet point data

CALL UPNT2(INO,ANAME,PNTS,IERR)

The point coordinates are expressed in the global cartesian coordinate system regardless of the system used to define the point.

UPRESCSubroutineGet a prescribed degree of freedom

CALL UPRESC(ICO,ANAME,IPATY,IPANO,IDOF,VALUE,LCAS,IERR)

This routine is used to get a prescribed degree of freedom for a constraint. The nodes to which it applies may be determined using UNODEG. This routine should be used for prescribing degrees of freedom where the analysis package does not support a single point constraint definition or where a zero definition is not sensible (e.g. for temperatures). Prescribed values will normally hold for an entire analysis but where it is desired to vary these conditions for a series of loadcases the LCAS parameter is provided to enable this level of control. Degrees of freedom have fixed meanings for freedoms 1-11, degrees of freedom 12 to 16 can be programmed to mean anything using the FEMGV resource file femsys.ini (see chapter 3).

URBEAMSubroutineGet Node connections for MPC RBEAM

CALL URBEAM(ICO,IWORK,IWDIM,IDOF,IERR)

MPC RBEAM nodes are connected as a many to one relationship (like a bicycle wheel). Node pairs are output as Slave_node, Nmastr, mastr1-n and for this routine Nmastr will always be equal to 1. The list is terminated by a slave node ID of zero.

URBODYSubroutineGet Node connections for MPC RBODY

CALL URBODY(ICO,IWORK,IWDIM,IM,IDOFM,COEF,NSLAVE,IDOFS,IERR)

For MPC RBODY the slave node groups are output as Nslave, slave1-n. The list is terminated by Nslave = 0

USET2SubroutineGet the part numbers within a set

CALL USET2(INO,IWANT,ANAME,IWORK,IWDIM,NPART,IERR)

USETLSubroutineGet an ordered list of elements on loaded geometry

CALL USETL(INO,IWORK,IWDIM,NELEMS,IERR)

This routine should be used for loads which are validated by routine ULOADM. The routine returns an ordered list of elements on the lines which make up the loaded geometry. The elements in this list should be used in conjunction with the moving load definitions from ULOADT in order to determine which elements are affected by the moving load.

USHPE2SubroutineGet shape data

CALL USHPE2(INO,ANAME,ISHTY,KPNTS,RADS,IERR)

If plane then | |

1 | origin point or coordinate system (if type 11) |

2 | x direction point (type 1 only) |

3 | y direction point (type 1 only) |

If sphere then | If cylinder then | If cone then | |

1 | origin point | origin point | origin point |

2 | axis direction point | axis direction point |

If nurb curve then | If nurb surface then | |

1 | Upper index (number of control points - 1) (K) | Upper index in first parametric direction |

(number of control points - 1) (K1) | ||

2 | Degree of basis functions (M) | Upper index in second parametric direction (K2) |

3 | Type: (as for nurb surface) | Degree of basis functions in first direction (M1) |

4 | Degree of basis functions in second direction (M2) | |

5 | Type:- 1 : uniform | |

:- 2 : non-uniform (with knots) | ||

:- 3 : rational (with knots and weights) |

If intersection curve | If box then | |

1 | first shape | origin point (types 301,311,321) |

2 | second shape | x-direction point (type 301) or diagonal point (type 311) |

3 | y-direction point (type 301) | |

4 | z-direction point (type 301) | |

5 | Coordinate system (types 311,321,331) |

If plane then | |

1 | x component of normal (if type 11) |

2 | y component of normal (type 11) |

3 | z component of normal (type 11) |

4 | normal distance to origin (type 11) |

If sphere then | If cylinder then | If cone then | |

1 | radius | radius | radius at origin point |

2 | length (type 23) | radius at axis direction point | |

3 | offset (type 23) | length (type 24) | |

4 | offset (type 24) |

If nurb curve then | If nurb surface then | |

1 | (K+M+2)*(values of knot sequences) | (K1+M1+2)*(values of knot sequences first direction) |

(K+1)*(weights) | (K2+M2+2)*(values of knot sequences second direction) | |

(K+1)*(x,y,z coordinates of control points) | (K1+1)*(K2+1)*(weights) | |

start value of parameter | (K1+1)*(K2+1)*(x,y,z coordinates of control points) | |

end value of parameter | start value of parameter in first direction | |

end value of parameter in first direction | ||

start value of parameter in second direction | ||

end value of parameter in second direction |

If intersection curve | If box then | |

1 | not defined | x origin (types 321,331) |

2 | y origin (types 321,331) | |

3 | z origin (types 321,331) | |

4 | x length (types 321,331) | |

5 | y length (types 321,331) | |

6 | z length (types 321,331) |

Shape types include:

- Plane, where type 1 is defined by three points and type 11 is defined by a normal, distance and coordinate system.
- Cylinder, where type 3 is infinite, type 13 is truncated by end points and type 23 is truncated with a length and an offset values, both taken from the first point in the direction of the second point.
- Cone, where type 4 is infinite, type 14 is truncated by end points and type 24 is truncated with a length and an offset values, both taken from the first point in the direction of the second point.

Real array RADS can potentially be very large if nurb curves or nurb surfaces are present in the model.

USIZESubroutineGet structure size data

CALL USIZE(NCONST)

The maximum numbers output by this routine do not take into account any deleted entities. This is determined later on in subsequent routines. The numbers output by this routine thus indicate the range of entity numbers over which to search when scanning the database.

USTRT2SubroutineOpen a database

CALL USTRT2(FILNAM,IWORK,IWDIM,IERR)

The full file name including extension should be passed to this routine. The file name is case sensitive. This routine is not needed for internal interfaces. In this case, FEMGEN performs all file opening and naming functions.

Channel numbers: FEMGV will perform its own file management and it is assumed that the pre-connected channel numbers for terminal I/O are available. Any additional channel numbers required by the user should be obtained using function KFVOPN after the call to USTRT2 has been made.

USURF2SubroutineGet surface data

CALL USURF2(INO,ANAME,ISUR,IERR)

The first and last element numbers include the element number offset NEBAS. ISHPE and ITRF are respectively the shape sequence number and the transformation sequence number used to define the surface.

UTITL2SubroutineGet model description

CALL UTITL2(TNAME)

Returns the model description or blank if none entered. This routine replaces UTITLE which was limited to a 20 character title.

UTRANSubroutineGet transformation data

CALL UTRAN(INO,ANAME,ITRTY,KPNTS,RDATA,IERR)

If translation then | If rotation then | If mirror or scale then | |||

1 | from point | origin point | origin point | origin point | origin point |

2 | to point | axis direction point | from point | axis direction point | axis direction point |

3 | to point | from point | |||

3 | to point |

If translation then | If rotation then | If mirror then | If scale then | |

1 | x component | angle | not defined | axial scale |

2 | y component | radial scale | ||

3 | z component |

8/18/1999