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.4 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 WRTCSV (NCRV, MAXPTS, NPTS, PTS, TXLAB, NAMES, DOLEGN,
* MAPEL, MAPND)
C=======================================================================
C --*** WRTCSV *** (XYPLOT) Write curve to CSV neutral file
C --
C --WRTCSV writes the data for a curve to a neutral file which is
C --in a comma-separated format. The first
C --time the routine is called, the neutral file is opened.
C --
C --Parameters:
C -- NPTS - IN - the number of points on the curve
C -- PTS - IN - the plot data;
C -- PTS(x,NTPVAR+1) holds the times if TIMPLT
C -- PTS(x,NTPVAR+2) holds the compressed times if TIMPLT and needed
C -- PLTITL - IN - the plot title describing the curve
C -- (e.g. "TIME vs SIGXX at ELEMENT 30")
C -- TXLAB, TYLAB - IN - the X and Y axis labels, either the
C -- user-input labels or the plot variable descriptions
C --
PARAMETER (MAXLEG = 4096)
include 'dbname.blk'
include 'dbtitl.blk'
include 'legopt.blk'
include 'xylim.blk'
include 'csv.blk'
include 'params.blk'
include 'tpvars.blk'
CHARACTER*2048 filnam, errmsg
INTEGER NPTS(*)
REAL PTS(MAXPTS,*)
CHARACTER*(*) TXLAB, NAMES(*)
LOGICAL DOLEGN
INTEGER MAPEL(*), MAPND(*)
CHARACTER*(MAXLEG) LEGEND
CHARACTER*(MXLNLN) PV
IF (.NOT. CSVOPN) THEN
filnam = basenam(:lenstr(basenam)) // '.csv'
C --Open the csv neutral file and write the title line
write (*,*) "CSV File: ", filnam(:lenstr(filnam))
open (unit=ncsv, file=filnam(:lenstr(filnam)), form='formatted',
* status='unknown', iostat=ierr)
IF (IERR .NE. 0) THEN
ERRMSG = 'Neutral CSV file "'//FILNAM(:LENSTR(FILNAM))//
* '" could not be opened.'
CALL PRTERR ('CMDERR', ERRMSG(:LENSTR(ERRMSG)))
GOTO 170
END IF
CSVOPN = .TRUE.
END IF
legend = 'TIME'
if (timplt) then
n = 1
else
n = 2
end if
do i = n, ncrv+n-1
call tplabv(0, itvid(i), names(itvid(i)), itvne(i), pv,
* MAPEL, MAPND)
lpv = lenstr(pv)
lleg = lenstr(legend)+1
if (lleg+lpv-1+2 .gt. maxleg) go to 100
legend(lleg:lleg+lpv-1+2) = ', '//pv(:lpv)
end do
100 continue
if (dolegn) then
write (ncsv, '(A)') legend(:lenstr(legend))
end if
IF (TIMPLT) THEN
IF (NPTS(1) .EQ. MAXPTS) THEN
NX = NTPVAR+1
ELSE
NX = NTPVAR+2
END IF
ELSE
NX = 1
END IF
do itim = 1, npts(1)
IF (TIMPLT) THEN
NY = 1
ELSE
NY = 2
END IF
write (ncsv, 10100) pts(itim, nx),
* (pts(itim,nn),nn=ny,ny+ncrv-1)
10100 FORMAT (1pe15.7E3,100(', ',1pe15.7E3))
end do
if (.not. dolegn) then
write (*,*) 'The data file contains these data:'
write (*, '(A)') legend(:lenstr(legend))
else
write (*,*) NCRV, ' Curves written to CSV file.'
end if
write (ncsv,*) ' '
170 continue
RETURN
END