next up previous contents
Next: Example Subroutine 'userIQ' Up: Customised Analysis Environments Previous: Top Level Interface Subroutines

Subroutine 'userEL'

      SUBROUTINE USEREL(IFGELT,IELVAR,ELNAME,IERR)                  
C
C     ******************************************************************
C     *   PURPOSE :- TO PERFORM ELEMENT VARIANT MAPPINGS FOR USER      *
C     *   IN :-                                                        *
C     *   IFGELT :- FEMGEN ELEMENT TYPE (INTEGER)                      *
C     *   IELVAR :- FEMGEN ELEMENT VARIANT (INTEGER)                   *
C     *   OUT :-                                                       *
C     *   ELNAME :- USER ELEMENT NAME (REAL ARRAY*2)                   *
C     *   IERR   :- ERROR CODE (INTEGER)                               *
C     *          : 0 :- OK                                             *
C     *          : 1 :- NO ELEMENT OF THIS TYPE OR VARIANT             *
C     *          : 2 :- UNUSED SLOT IN ELEMENT VARIANT LISTS           *
C     ******************************************************************
C
      DIMENSION MAP(20), ELNAME(2)
      CHARACTER*8 NAMES(20,10)
C
C --- SEE APPENDIX D FOR FEMGEN ELEMENT TYPE NUMBERS
C
      DATA MAP/3,B,C,0,D,0,E,0,F,G,H,0,I,J,K,0,L,0,0,M/
      DATA (NAMES(1,I),I=1,3) /'ELTYPE1 ','ELTYPE2 ','ELTYPE3 '/
      DATA (NAMES(2,I),I=1,B)      .          .          .
      DATA (NAMES(3,I),I=1,C)      .          .          .
      DATA (NAMES(5,I),I=1,D)      .          .          .
      DATA (NAMES(7,I),I=1,E)      .          .          .
      DATA (NAMES(9,I),I=1,F) /'ELTYPE4 ','--------','ELTYPE5 '/
      DATA (NAMES(10,I),I=1,G)     .          .          . 
      DATA (NAMES(11,I),I=1,H)     .          .          .
      DATA (NAMES(13,I),I=1,I)     .          .          .
      DATA (NAMES(14,I),I=1,J)     .          .          .
      DATA (NAMES(15,I),I=1,K)     .          .          .
      DATA (NAMES(17,I),I=1,L)     .          .          .
      DATA (NAMES(20,I),I=1,M)     .          .          .
C
      IERR=0
      IF(IELVAR.LT.0) GOTO 9100
      IF(IELVAR.EQ.0) IELVAR=1
      IF( (IFGELT.LT.1).OR.(IFGELT.GT.20) ) GOTO 9100
      NVARS = MAP(IFGELT)
      IF( NVARS.EQ.0 )      GOTO 9100
      IF( IELVAR.GT.NVARS ) GOTO 9100
      IF( NAMES(IFGELT,IELVAR).EQ.'--------' ) THEN
         IERR = 2
         GOTO 9999
      ENDIF
      READ(NAMES(IFGELT,IELVAR),10) ELNAME(1),ELNAME(2)
   10 FORMAT(2A4)
      GOTO 9999
 9100 IERR = 1
 9999 CONTINUE
      RETURN
      END



Femsys Limited
8/18/1999