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.

63 lines
2.1 KiB

2 years ago
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 MXCOMP (MYV, VOID, LVOID,
* NVOIDS, DPOINT, LDICT, NNAMES, CHRCOL, LASTER)
IMPLICIT INTEGER (A-Z)
INCLUDE 'params.inc'
C THIS ROUTINE PERFORMS THE NUMERIC DATA COMPRESSION OPERATION.
C************************************************************************
C MYV Reference array
C VOID Void table
C LVOID Dimension of VOID
C NVOIDS Number of voids
C DPOINT Dictionary pointer table
C LDICT Dimension of DPOINT
C NNAMES Number of names
C CHRCOL Column for character tables
C LASTER Error return code
DIMENSION DPOINT(LDICT,CHRCOL,2), VOID(LVOID,CHRCOL,2), MYV(*)
DIMENSION NNAMES(2), NVOIDS(2)
C************************************************************************
LASTER = SUCCESS
C The basic strategy is to look for an array in the dictionary
C which is immediately preceded by a void. If found, a shift
C is performed, and the void table is updated.
IVOID = 0
100 CONTINUE
IVOID = IVOID + 1
110 IF (IVOID .GT. NVOIDS(1)) GO TO 130
VADDR = VOID(IVOID,1,1) + VOID(IVOID,1,2)
DO 120 IDICT = 1, NNAMES(1)
DADDR = DPOINT(IDICT,1,1)
IF (VADDR .EQ. DADDR .AND. DPOINT(IDICT,1,2) .GT. 0) THEN
C Perform data shift and update void table.
CALL SHFTI (MYV, 1, 1,
* DADDR, DADDR+DPOINT(IDICT,1,2)-1, VOID(IVOID,1,2))
DPOINT(IDICT,1,1) = VOID(IVOID,1,1)
VOID(IVOID,1,1) = DPOINT(IDICT,1,1) + DPOINT(IDICT,1,2)
CALL VTABLE (0, 0, VOID, LVOID, NVOIDS(1), CHRCOL,
* LASTER)
IF (LASTER .NE. SUCCESS) RETURN
GO TO 110
END IF
120 CONTINUE
GO TO 100
130 CONTINUE
RETURN
END