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.
 
 
 
 
 
 

116 lines
3.9 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, SETON0
SUBROUTINE SETON0(ICONA,NELTN,SOLEA,SOLENA,IDBLK,XA,YA,ZA,ISTP,
& ITT,iblk)
C
C *********************************************************************
C
C Subroutine SETON0 extracts nodal values of shell element variables by
C looping over each element and summing the value of the variable
C in 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
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
C Calls subroutine VOL
C
c Called by MAPVAR
C
C *********************************************************************
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
C *********************************************************************
C
include 'aexds1.blk'
include 'aexds2.blk'
include 'amesh.blk'
include 'ebbyeb.blk'
include 'ex2tp.blk'
include 'tapes.blk'
C
DIMENSION ICONA(NELNDA,*), NELTN(*)
DIMENSION SOLEA(NUMEBA,*), SOLENA(NODESA,NVAREL), ITT(NVAREL,*)
DIMENSION XA(*), YA(*), ZA(*), XX(27), YY(27), ZZ(27)
C
C *********************************************************************
C
NNODES = 4
DO I = 1, NODESA
NELTN(I) = 0
DO J = 1, NVAREL
SOLENA(I,J) = 0.
end do
end do
C
DO NEL = 1, NUMEBA
DO I = 1, NNODES
C
C number of elements associated with each node - used for
C computing an average later on
C
NELTN(ICONA(I,NEL)) = NELTN(ICONA(I,NEL)) + 1
end do
end do
C
DO IVAR = 1, NVAREL
IF (ITT(IVAR,iblk) .EQ. 0)GO TO 40
CALL EXGEV(NTP2EX,ISTP,IVAR,IDBLK,NUMEBA,SOLEA(1,IVAR),IERR)
C
IF (NAMVAR(nvargp+IVAR)(1:6) .EQ. 'ELMASS') THEN
C
C replace element mass with nodal density for interpolation
C
DO IEL = 1, NUMEBA
DO I = 1, NNODES
XX(I) = XA(ICONA(I,IEL))
YY(I) = YA(ICONA(I,IEL))
ZZ(I) = ZA(ICONA(I,IEL))
end do
CALL VOL(ITYPE,XX,YY,ZZ,VOLUME)
SOLEA(IEL,IVAR) = SOLEA(IEL,IVAR) / VOLUME
end do
END IF
C
C accumulate element variables to nodes
C
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
C divide by number of elements contributing to each node (average)
C
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