INTEGER FUNCTION KFWRITE( FNAME, COL, ROW, SDATE, STIME, KFLEN, VBLES )
CHARACTER*(*), INTENT(IN ) :: FNAME ! logical file name
INTEGER , INTENT(IN ) :: COL ! column number for this event
INTEGER , INTENT(IN ) :: ROW ! row number for this event
INTEGER , INTENT(IN ) :: SDATE ! starting date, formatted YYYYDDD
INTEGER , INTENT(IN ) :: STIME ! starting time, formatted HHMMSS
INTEGER , INTENT(IN ) :: KFLEN ! event duration, formatted HHMMSS
REAL , INTENT(IN ) :: VBLES(*) ! output buffer array
FNAME,
along with writing the event's description:
COL is the grid-column for this event.
ROW is the grid-row.
SDATE is the
event starting date, formatted YYYYDDD
STIME is the
event starting time, formatted HHMMSS
KFLEN is the
event event duration, formatted HHMMSS
VBLES(NLAYS3D,NVARS3D)
is the event's output data.
KFWRITE() is OpenMP thread-safe.
Returns the record number at which the event is written (e.g., for further use with KFREAD()), or -1 if it fails. For failure, writes a log message indicating the nature of the failure.
INCLUDE 'IODECL3.EXT'
and
INCLUDE 'FDESC3.EXT' for Fortran.
I/O API must already be initialized by a call to INIT3() .
FNAME must have length at most 16.
FNAME must already have been opened by OPEN3() or KFOPEN().
Dimensionality of the VBLES
argument should be VBLES(NLAYS3D,NVARS3D).
...
INCLUDE 'IODECL3.EXT'
INCLUDE 'PARMS3.EXT'
...
INTEGER NCOLS, NROWS, NLAYS, NTHIK
PARAMETER ( NCOLS = ??, NROWS = ??, NLAYS = ??, NTHIK = ?? )
...
INTEGER ECOUNT ! # of events for this col-row
INTEGER SDATES(NTHIK) ! starting date, formatted YYYYDDD
INTEGER STIMES(NTHIK) ! starting time, formatted HHMMSS
INTEGER KFLENS(NTHIK) ! event duration, formatted HHMMSS
INTEGER EVENTS(NTHIK) ! event numbers
REAL TA(NLAYS) ! buffer for variable 'TA'
REAL QV(NLAYS) ! buffer for variable 'QV'
REAL PR(NLAYS) ! buffer for variable 'PR'
REAL VBLES(NLAYS,3)
EQUIVALENCE ( VBLES(1,1), TA(1) )
EQUIVALENCE ( VBLES(1,2), QV(1) )
EQUIVALENCE ( VBLES(1,3), PR(1) )
INTEGER C, R, IEVENT
INTEGER JDATE, JTIME, KFLEN
...
!! suppose MYFILE is opened, and has 3 vbles TA, QV, PR, etc.
...
DO R = 1, NROWS
DO C = 1, NCOLS
...
!! suppose we want to write a KF event at
!! C,R,JDATE;JTIME with duration KFLEN
IEVENT = KFWRITE( 'MYFILE', C, R, JDATE, JTIME, KFLEN, VBLES )
IF ( IEVENT .LT. 0 ) THEN
!! Error: see program log for further info.
...
END IF ! if KFWRITE() succeeded
...
END DO
END DO
...
To: Models-3/EDSS I/O API: The Help Pages