Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

100 lines
3.6 KiB

C Copyright(C) 1999-2020 National Technology & Engineering Solutions
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
C NTESS, the U.S. Government retains certain rights in this software.
C
C See packages/seacas/LICENSE for details
SUBROUTINE MXEXEC (MYV, MYCV, MYLOC, MYCLOC, UCLOC, COFFST,
* OFFSET, DPOINT, LDICT, NNAMES,
* VOID, LVOID, NVOIDS, FILL, FDATA, CFILL, CFDATA, CHRNUM,
* CHRCOL, LASTER)
IMPLICIT INTEGER (A-Z)
INCLUDE 'params.inc'
C This routine satisfies deferred memory requests.
C It will service both numeric and character
C deferred requests in the mixed mode. In the nonmixed mode,
C character memory is not deferred.
C***********************************************************************
C MYV Internal reference vector.
DIMENSION MYV(*)
C MYCV Internal reference array.
CHARACTER MYCV(*)
C MYLOC Address of internal reference vector.
C MYCLOC Address of internal character array.
C UCLOC Address of user's character array.
C COFFST Offset between internal numeric array and user's
C character array.
C OFFSET Offset address between internal and user arrays.
C DPOINT Dictionary pointer table.
C LDICT Dimension of dictionary table.
C NNAMES Number of names in dictionary.
DIMENSION DPOINT(LDICT,CHRCOL,3), NNAMES(2)
C VOID Void table.
C LVOID Dimension of void table.
C NVOIDS Number of voids.
DIMENSION VOID(LVOID,CHRCOL,2), NVOIDS(2)
C FILL Flag for data fill.
C FDATA Data for fill.
LOGICAL FILL
C CFILL Flag for character data fill.
C CFDATA Data for fill.
LOGICAL CFILL
CHARACTER*1 CFDATA
C CHRNUM Number of characters per numeric storage unit
C CHRCOL Column for character tables.
C LASTER Error return.
C***********************************************************************
LASTER = SUCCESS
MEM = 0
DO 100 IDICT = 1, NNAMES(1)
MEM = MEM + MIN(0, DPOINT(IDICT,1,2))
100 CONTINUE
IF (MEM .EQ. 0) RETURN
MEM = - MEM
CALL MXGET (MYLOC, MEM, VOID, LVOID, NVOIDS,
* CHRCOL, LASTER, VROW)
IF (LASTER .NE. SUCCESS) RETURN
C Now satisfy all the deferred requests.
DO 130 IDICT = 1, NNAMES(1)
IF (DPOINT(IDICT,1,2) .LT. 0) THEN
IF (DPOINT(IDICT,1,3) .EQ. -1) THEN
MYV(DPOINT(IDICT,1,1) - MYLOC + 1) =
* VOID(VROW,1,1) + OFFSET
ELSE
MYV(DPOINT(IDICT,1,1) - MYLOC + 1) =
* (VOID(VROW,1,1) - 1) * CHRNUM + 1 + COFFST
END IF
VOID(VROW,1,2) = VOID(VROW,1,2) + DPOINT(IDICT,1,2)
DPOINT(IDICT,1,2) = - DPOINT(IDICT,1,2)
DPOINT(IDICT,1,1) = VOID(VROW,1,1)
VOID(VROW,1,1) = VOID(VROW,1,1) + DPOINT(IDICT,1,2)
C Perform data fill if appropriate.
IF (FILL .AND. DPOINT(IDICT,1,3) .EQ. -1) THEN
DO 110 I = DPOINT(IDICT,1,1),
* DPOINT(IDICT,1,1)+DPOINT(IDICT,1,2)-1
MYV(I) = FDATA
110 CONTINUE
ELSE IF (CFILL .AND. DPOINT(IDICT,1,3) .GT. 0) THEN
TLOC = (DPOINT(IDICT,1,1) - 1) * CHRNUM + 1 + COFFST
* + UCLOC - MYCLOC
DO 120 I = TLOC, TLOC + DPOINT(IDICT,1,3) - 1
MYCV(I) = CFDATA
120 CONTINUE
END IF
END IF
130 CONTINUE
CALL VTABLE (0, 0, VOID, LVOID, NVOIDS(1), CHRCOL, LASTER)
RETURN
END