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.
 
 
 
 
 
 

54 lines
2.1 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 mapev(nold, nnew, nvar, map, vars, scr)
C=======================================================================
C --*** MAPVAR *** (GREPOS) Map values from old array to new.
C --
C --MAPVAR reorders the data in VARS based on the map in MAP
C --
C --Parameters:
C -- NOLD - IN - number of old values,
C -- NNEW - IN - number of new values
C -- NVAR - IN - the number of variables
C -- NVARDM - IN - the row dimension of VARNP
C -- MAP - IN - map from new value to old MAP(NEW) = OLD
C size is 'nnew'
C -- VARS - IN/OUT - the values. On input in old order,
C on output in new order
C -- SCR - TMP - temporary storage area
integer map(*)
real vars(*)
c real vars(nold, nvar)
real scr(*)
C ... VARS is treated as a doubly-dimensioned array (NOLD, NVAR),
C on input and (NNEW, NVAR) on output.
C The dimensions need to be in this order so we can read them
C in using exgev and exgnv. Note that dbist2 ensures that there
C are values for all elements for each variable even if the
C variable does not exist for a particular block. This makes it
C easier to transfer variables from old to new. We don't need to
C worry about the truth table in this routine; just transfer
C all variables from old to new and the output takes care
C of truth table handling. This is a little extra work
C done in this routine, but permits modifying truth table or
C combining element blocks with different truth tables.
do 30 ivar = 1, nvar
do 10 i = 1, nnew
scr(i) = vars(map(i) + nold * (ivar-1))
10 continue
do 20 i = 1, nnew
vars(i + nnew * (ivar-1)) = scr(i)
20 continue
30 continue
return
end