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.
77 lines
2.7 KiB
77 lines
2.7 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
|
||
|
C=======================================================================
|
||
|
SUBROUTINE RWXYZ (NDBIN, NDBOUT, NDIM, NUMNP, NUMNPO,
|
||
|
& IXNODE, CORD, CRDSCR)
|
||
|
C=======================================================================
|
||
|
|
||
|
C --*** RWXYZ *** (ALGEBRA) Read and write database coordinates
|
||
|
C -- Written by Amy Gilkey - revised 11/30/87
|
||
|
C -- Modified for EXODUSIIV2 format 8/29/95
|
||
|
C --
|
||
|
C --RWXYZ reads and writes the coordinate array to the database.
|
||
|
C --Deleted nodes are removed.
|
||
|
C --
|
||
|
C --Parameters:
|
||
|
C -- NDBIN, NDBOUT - IN - the input and output database file
|
||
|
C -- NDIM - IN - the number of coordinates per node
|
||
|
C -- NUMNP - IN - the number of nodes
|
||
|
C -- NUMNPO - IN - the number of nodes
|
||
|
C -- IXNODE - IN - the indices of the output nodes (iff NUMNPO <> NUMNP)
|
||
|
C -- CORD - SCRATCH - coordinate I/O
|
||
|
C -- CRDSCR - SCRATCH - coordinate I/O
|
||
|
|
||
|
INTEGER NDBIN, NDBOUT
|
||
|
INTEGER NDIM
|
||
|
INTEGER NUMNP
|
||
|
INTEGER IXNODE(*)
|
||
|
REAL CORD(NUMNP,NDIM)
|
||
|
REAL CRDSCR(NUMNPO,NDIM)
|
||
|
|
||
|
if (ndim .eq. 2) then
|
||
|
CALL EXGCOR(ndbin, cord(1,1), cord(1,2), rdum, ierr)
|
||
|
else if (ndim .eq. 3) then
|
||
|
CALL EXGCOR(ndbin, cord(1,1), cord(1,2),
|
||
|
& cord(1,3), ierr)
|
||
|
else
|
||
|
call prterr('FATAL', 'Illegal model dimension')
|
||
|
RETURN
|
||
|
end if
|
||
|
|
||
|
IF ((NUMNPO .GT. 0) .AND. (NDIM .GT. 0)) THEN
|
||
|
IF (NUMNP .EQ. NUMNPO) THEN
|
||
|
if (ndim .eq. 2) then
|
||
|
CALL EXPCOR(ndbout, cord(1,1), cord(1,2), rdum, ierr)
|
||
|
else if (ndim .eq. 3) then
|
||
|
CALL EXPCOR(ndbout, cord(1,1), cord(1,2),
|
||
|
& cord(1,3), ioerr)
|
||
|
else
|
||
|
call prterr('FATAL', 'Illegal model dimension')
|
||
|
RETURN
|
||
|
end if
|
||
|
ELSE
|
||
|
do 20 idim=1, ndim
|
||
|
do 10 ix=1, numnpo
|
||
|
crdscr(ix,idim) = cord(ixnode(ix),idim)
|
||
|
10 continue
|
||
|
20 continue
|
||
|
if (ndim .eq. 2) then
|
||
|
CALL EXPCOR(ndbout, crdscr(1,1), crdscr(1,2),
|
||
|
& rdum, ioerr)
|
||
|
else if (ndim .eq. 3) then
|
||
|
CALL EXPCOR(ndbout, crdscr(1,1), crdscr(1,2),
|
||
|
& crdscr(1,3), ioerr)
|
||
|
else
|
||
|
call prterr('FATAL', 'Illegal model dimension')
|
||
|
end if
|
||
|
END IF
|
||
|
ELSE
|
||
|
continue
|
||
|
END IF
|
||
|
|
||
|
RETURN
|
||
|
END
|