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.
 
 
 
 
 
 

128 lines
4.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========================================================================
*DECK, ELTON0
SUBROUTINE ELTON0(ICONA,NELTN,SOLEA,SOLENA,
& IDBLK,XA,YA,ZA,ISTP,ITT,iblk)
C *********************************************************************
C Subroutine ELTON0 extracts nodal values of element variables by
C looping over each element and summing the value of the variable
C at that element to each node in the connectivity list for that
C element. Then the nodal summation of element variables is divided
C by the number of elements that contributed to that node (resulting
C in a nodal average of the element value.) This is done for the old
C mesh elements and nodes to facilitate interpolation.
C Each element block must be processed independently in order to
C avoid averaging element variables across material boundaries.
C Note: the last set of DO loops acts over all nodes; to make sense
C one element block must be completely processed before another
C element block is sent into this subroutine.
C Calls subroutine VOL
c Called by MAPVAR
C *********************************************************************
C ICONA mesh-A connectivity (1:nelnda,1:numeba)
C NELTN number of elements tied to each node (1:nodesa)
C SOLEA element variables (1:numeba,1:nvarel)
C SOLENA element variables at nodes (1:nodesa,1:nvarel)
C IDBLK current element block I.D.
C XA,YA,ZA coordinates
C XX,YY,ZZ vector of coordinates of nodes for an element
C ISTP current time step
C ITT truth table
C iblk element block being processed (not ID)
C *********************************************************************
include 'aexds1.blk'
include 'aexds2.blk'
include 'amesh.blk'
include 'ebbyeb.blk'
include 'ex2tp.blk'
include 'tapes.blk'
DIMENSION ICONA(NELNDA,*), NELTN(*)
DIMENSION SOLEA(NUMEBA,*), SOLENA(NODESA,NVAREL), ITT(NVAREL,*)
DIMENSION XA(*), YA(*), ZA(*), XX(27), YY(27), ZZ(27)
C *********************************************************************
IF (ITYPE .EQ. 4 .OR. ITYPE .EQ. 5)THEN
CALL ERROR('ELTON0','ELEMENT TYPE',' ',ITYPE,
& 'ELEMENT VARIABLE PROCESSING NOT YET IMPLEMENTED',
& 0,' ',' ',1)
END IF
DO I = 1, NODESA
NELTN(I) = 0
DO J = 1, NVAREL
SOLENA(I,J) = 0.
end do
end do
C NNODES = NNELM(ITYPE)
NNODES = NELNDA
IF (ITYPE .EQ. 6) NNODES = 4
DO NEL = 1, NUMEBA
DO I = 1, NNODES
C number of elements associated with each node - used for
C computing an average later on
NELTN(ICONA(I,NEL)) = NELTN(ICONA(I,NEL)) + 1
end do
end do
DO IVAR = 1, NVAREL
IF (ITT(IVAR,iblk) .EQ. 0)GO TO 40
CALL EXGEV(NTP2EX,ISTP,IVAR,IDBLK,NUMEBA,SOLEA(1,IVAR),IERR)
IF (NAMVAR(nvargp+IVAR)(1:6) .EQ. 'ELMASS') THEN
C replace element mass with nodal density for interpolation
DO IEL = 1, NUMEBA
DO I = 1, NNODES
XX(I) = XA(ICONA(I,IEL))
YY(I) = YA(ICONA(I,IEL))
IF (NDIMA .EQ. 3)THEN
ZZ(I) = ZA(ICONA(I,IEL))
ELSE
ZZ(I) = 0.
END IF
end do
CALL VOL(ITYPE,XX,YY,ZZ,VOLUME)
SOLEA(IEL,IVAR) = SOLEA(IEL,IVAR) / VOLUME
end do
END IF
C accumulate element variables to nodes
DO NEL = 1, NUMEBA
DO I = 1, NNODES
SOLENA(ICONA(I,NEL),IVAR) =
& SOLENA(ICONA(I,NEL),IVAR) + SOLEA(NEL,IVAR)
end do
end do
C divide by number of elements contributing to each node (average)
DO I = 1, NODESA
IF(NELTN(I) .NE. 0)THEN
SOLENA(I,IVAR) = SOLENA(I,IVAR) / dble(NELTN(I))
END IF
end do
40 CONTINUE
end do
RETURN
END