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.
74 lines
2.6 KiB
74 lines
2.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
|
|
C=======================================================================
|
|
SUBROUTINE NXMMAX (ISTEP, MMNUM, IVAR, NVAR, NUM, VAR,
|
|
& OLDMIN, OLDMAX, XMIN, XMAX,
|
|
& MINSTE, MAXSTE, MINNE, MAXNE, NMIN, NMAX)
|
|
C=======================================================================
|
|
|
|
C --*** NXMMAX *** (EXPLORE) Find the min/max for this time step
|
|
C --
|
|
C --NXMMAX finds an incremental minimum and maximum of a variable
|
|
C --for this time step. It does not reset the min/max if not on the
|
|
C --first step. It may find the min/max that are greater/less than
|
|
C --the previous values.
|
|
C --
|
|
C --Parameters:
|
|
C -- ISTEP - IN - the current step number, previous XMIN and XMAX
|
|
C -- are overwritten if <=1
|
|
C -- MMNUM - IN - number of sequential min/max requests for this
|
|
C -- variable, if >1 then find next min/max
|
|
C -- IVAR - IN - min/max variable number
|
|
C -- NUM - IN - the number of nodes or elements or 1 for global
|
|
C -- VAR - IN - the variables for current time step
|
|
C -- OLDMIN, OLDMAX - IN/OUT - the last minimum and maximum values,
|
|
C -- only if MMNUM > 1
|
|
C -- XMIN, XMAX - IN/OUT - the minimum and maximum values
|
|
C -- MINSTE, MAXSTE - IN/OUT - the step number where the minimum and
|
|
C -- maximum were found
|
|
C -- MINNE, MAXNE - IN/OUT - the node or element number where the
|
|
C -- minimum and maximum were found
|
|
C -- NMIN, NMAX - IN/OUT - the number of values equal to the minimum
|
|
C -- and maximum were found
|
|
|
|
REAL VAR(NUM, NVAR)
|
|
|
|
IF (ISTEP .LE. 1) THEN
|
|
XMIN = 1.0E36
|
|
XMAX = - 1.0E36
|
|
IF (MMNUM .LE. 1) THEN
|
|
OLDMIN = - 1.0E36
|
|
OLDMAX = 1.0E36
|
|
ELSE
|
|
OLDMIN = XMAX
|
|
OLDMAX = XMIN
|
|
END IF
|
|
END IF
|
|
|
|
DO 100 I = 1, NUM
|
|
IF ((XMIN .GT. VAR(I,IVAR))
|
|
& .AND. (VAR(I,IVAR) .GT. OLDMIN)) THEN
|
|
XMIN = VAR(I,IVAR)
|
|
MINSTE = ISTEP
|
|
MINNE = I
|
|
NMIN = 1
|
|
ELSE IF (XMIN .EQ. VAR(I,IVAR)) THEN
|
|
NMIN = NMIN + 1
|
|
END IF
|
|
|
|
IF ((XMAX .LT. VAR(I,IVAR))
|
|
& .AND. (VAR(I,IVAR) .LT. OLDMAX)) THEN
|
|
XMAX = VAR(I,IVAR)
|
|
MAXSTE = ISTEP
|
|
MAXNE = I
|
|
NMAX = 1
|
|
ELSE IF (XMAX .EQ. VAR(I,IVAR)) THEN
|
|
NMAX = NMAX + 1
|
|
END IF
|
|
100 CONTINUE
|
|
|
|
RETURN
|
|
END
|
|
|