Next: Subroutine UITERM
Up: FEMGEN Geometry User Routines
Previous: Subroutine UISHAP
SUBROUTINE UISURF(IWHAT,INDEX,NAME,ISTYPE,
1 LREAL,RDATA,LINTG,IDATA,LPTR,IPTR,
2 IERROR)
C U I S U R F
C ===========
C********************************************************************
C
C --- PURPOSE : INTERFACE TO SURFACE ENTITY IN FEMGEN DATA BASE
C
C --- IN : IWHAT : ACTION REQUESTED ON ENTITY
C : 1 : CREATE
C : 2 : FIND
C : 3 : REPLACE
C : 4 : READ
C : 5 : DELETE
C
C --- IN/OUT : INDEX : POINTER TO INSTANCE
C : NAME : ENTITY NAME
C : ISTYPE : ENTITY SUB-TYPE
C : LREAL : NUMBER OF REALS
C : RDATA : REAL DATA
C : LINTG : NUMBER OF INTEGERS
C : IDATA : INTEGER DATA
C : LPTR : NUMBER OF POINTERS
C : IPTR : POINTER DATA
C
C --- OUT : IERROR : 0 : OK
C : 1 : ILLEGAL ACTION REQUESTED
C : 2 : INCORRECT POINTER TO ENTITY
C : 3 : ILLEGAL SUB-TYPE
C : 5 : INCORRECT DATA
C
C********************************************************************
C
C --- METHOD : THE DATA PASSED TO OR OUTPUT FROM THIS ROUTINE IS
C DEPENDENT ON THE RELEVANT SUB-TYPE.
C
C ISTYPE = 1 : BOUNDARY INTERPOLATION
C : LINTG = 4
C : IDATA(1) = ELEMENT TYPE
C : IDATA(2) = ELEMENT VARIANT
C : IDATA(3) = ELEMENT GROUP
C : IDATA(4) = NUMBER OF BOUNDING SIDES (NBS)
C : LPTR = NUMBER OF POINTERS
C : IPTR(1:NBS) = INDICES TO LINE INSTANCES
C : IPTR(NBS+1) = INDEX TO FIRST ELEMENT INSTANCE
C : IPTR(NBS+2) = INDEX TO LAST ELEMENT INSTANCE
C : IPTR(NBS+3) = INDEX TO COORDINATE SYSTEM INSTANCE
C : IPTR(NBS+4) = INDEX TO MATERIAL INSTANCE
C : IPTR(NBS+5) = INDEX TO PHYSICAL INSTANCE
C
C ISTYPE = 2 : PROJECTED ONTO A SHAPE
C : LINTG = 4
C : IDATA(1) = ELEMENT TYPE
C : IDATA(2) = ELEMENT VARIANT
C : IDATA(3) = ELEMENT GROUP
C : IDATA(4) = NUMBER OF BOUNDING SIDES (NBS)
C : LPTR = NUMBER OF POINTERS
C : IPTR(1:NBS) = INDICES TO LINE INSTANCES
C : IPTR(NBS+1) = INDEX TO FIRST ELEMENT INSTANCE
C : IPTR(NBS+2) = INDEX TO LAST ELEMENT INSTANCE
C : IPTR(NBS+3) = INDEX TO COORDINATE SYSTEM INSTANCE
C : IPTR(NBS+4) = INDEX TO MATERIAL INSTANCE
C : IPTR(NBS+5) = INDEX TO PHYSICAL INSTANCE
C : IPTR(NBS+6) = INDEX TO SHAPE INSTANCE
C
C ISTYPE = 3 : TRANSFORMATION
C : LINTG = 4
C : IDATA(1) = ELEMENT TYPE
C : IDATA(2) = ELEMENT VARIANT
C : IDATA(3) = ELEMENT GROUP
C : IDATA(4) = NUMBER OF BOUNDING SIDES (NBS)
C : LPTR = NUMBER OF POINTERS
C : IPTR(1:NBS) = INDICES TO LINE INSTANCES
C : IPTR(NBS+1) = INDEX TO FIRST ELEMENT INSTANCE
C : IPTR(NBS+2) = INDEX TO LAST ELEMENT INSTANCE
C : IPTR(NBS+3) = INDEX TO COORDINATE SYSTEM INSTANCE
C : IPTR(NBS+4) = INDEX TO MATERIAL INSTANCE
C : IPTR(NBS+5) = INDEX TO PHYSICAL INSTANCE
C : IPTR(NBS+6) = INDEX TO TRANSFORM INSTANCE
C
C
C ISTYPE = 4 REGION
C : LINTG = 4
C : IDATA(1) = ELEMENT TYPE
C : IDATA(2) = ELEMENT VARIANT
C : IDATA(3) = ELEMENT GROUP
C : IDATA(4) = NUMBER OF HOLES (NHS)
C : LPTR = NUMBER OF POINTERS = 7 + NHS
C : IPTR(1) = INDEX OF OUTER BOUNDARY SET
C : IPTR(2:NHS+1) = INDICES TO HOLE SETS (IF ANY)
C : IPTR(NHS+2) = INDEX TO FIRST ELEMENT INSTANCE
C : IPTR(NHS+3) = INDEX TO LAST ELEMENT INSTANCE
C : IPTR(NHS+4) = INDEX TO COORDINATE SYSTEM INSTANCE
C : IPTR(NHS+5) = INDEX TO MATERIAL INSTANCE
C : IPTR(NHS+6) = INDEX TO PHYSICAL INSTANCE
C : IPTR(NHS+7) = INDEX TO SHAPE INSTANCE
C
C********************************************************************
C
REAL RDATA(*)
INTEGER IWHAT,INDEX,ISTYPE,LREAL,LINTG,LPTR,IERROR
INTEGER IDATA(*),IPTR(*)
CHARACTER*(*) NAME
C
C********************************************************************