C$Procedure RDFFAL ( read plate model albedo flatfile ) SUBROUTINE RDFFAL ( INFILE, NP, PID, ALBEDO ) C$ Abstract C C Read plate model albedo flatfile. C C$ Copyright C C Copyright (1997), California Institute of Technology. C U.S. Government sponsorship acknowledged. C C$ Required_Reading C C MKPLAT User's Guide C SURFACE C C$ Keywords C C PLATE C ALBEDO C C$ Declarations IMPLICIT NONE INCLUDE 'pltmax.inc' INTEGER NP INTEGER PID ( * ) CHARACTER*(*) INFILE DOUBLE PRECISION ALBEDO ( * ) C$ Brief_I/O C C VARIABLE I/O DESCRIPTION C -------- --- -------------------------------------------------- C INFILE I Name of plate model flatfile. C NP I Number of plates obtained from plate model file. C PID O Plate index array. C ALBEDO O Albedo value for each plate. C C$ Detailed_Input C C INFILE is the full pathname of the plate model flatfile. C C NP is the number of plates read from the plate model file. C C$ Detailed_Output C C PID is the array containing the plate indexes. C C ALBEDO is the array of albedos for NP plates. C C$ Parameters C C None. C C$ Files C C None. C C$ Exceptions C C 1) If the number of plates indicated by NPBEDO exceeds C the value of MAXVRT, SPICE(TOOMANYPLATES) is signalled. C C 2) If the number of plates indicated by NPBEDO does not equal C the value of NP, SPICE(BADNUMBEROFPLATES) is signalled. C C$ Particulars C C Input file format C ----------------- C C INFILE is assumed to be formatted as follows: C C Line 1: NPBEDO C NPBEDO = the number of plate albedo values to follow (INTEGER) C C Lines 2 through (NPBEDO+1): PID ALBEDO C PID = the plate ID (INTEGER) C ALBEDO = albedo value, 0.0 to 1.0, -1.0 if missing C (DOUBLE PRECISION). C C C$ Examples C C C The following include file defines MAXVRT and C C MAXPLT, the maximum number of vertices and plates C C used in the plate model software. C C INCLUDE 'pltmax.inc' C C INTEGER NV C INTEGER NP C INTEGER PID ( MAXPLT ) C INTEGER VID ( MAXVRT ) C INTEGER V1 ( MAXVRT ) C INTEGER V2 ( MAXVRT ) C INTEGER V3 ( MAXVRT ) C C DOUBLE PRECISION X ( MAXVRT ) C DOUBLE PRECISION Y ( MAXVRT ) C DOUBLE PRECISION Z ( MAXVRT ) C DOUBLE PRECISION ALBEDO ( MAXPLT ) C C CHARACTER*(80) INFILE C CHARACTER*(80) INBEDO C C C CALL PROMPT ( 'Enter name of plate model file', INFILE ) C C CALL RDFFPL ( INFILE, NV, VID, X, Y, Z, C . NP, PID, V1, V2, V3 ) C C CALL PROMPT ( 'Enter name of plate albedo file', INBEDO ) C C CALL RDFFAL ( INBEDO, NP, PID, ALBEDO ) C C C$ Restrictions C C None. C C$ Author_and_Institution C C J.A. Bytof (JPL) C C$ Literature_References C C None. C C$ Version C C- SPICELIB Version 2.1.0, 23-JAN-2006 (EDW) C C Implemented correct format of RDFFDI call. C Without this correction, use of albedo files C causes segmentaion faults. C C- SPICELIB Version 2.0.0, 27-OCT-1999 (JAB) C C Added a CHKOUT call prior to a RETURN. C C- SPICELIB Version 1.0.0, 09-APR-1997 (JAB) C C-& C$ Index_Entries C C Read plate albedo flatfile. C C-& C C SPICELIB functions C LOGICAL RETURN C C Local variables C INTEGER NC INTEGER I INTEGER ND INTEGER NI INTEGER NREC INTEGER NPBEDO INTEGER ARI ( 4 ) LOGICAL EOF CHARACTER*(20) ARC ( 6 ) CHARACTER*(10) FORMAT DOUBLE PRECISION ARD ( 6 ) C C Standard SPICE error handling. C IF ( RETURN () ) THEN RETURN ELSE CALL CHKIN ( 'RDFFAL' ) END IF C C If the name of the albedo file is passed in as 'NULL', C return C IF ( INFILE .EQ. 'NULL' ) THEN CALL TOSTDO ( ' ' ) CALL TOSTDO ( 'No input albedo file...') CALL TOSTDO ( ' ' ) DO I = 1, NP ALBEDO(I) = -1.D0 END DO CALL CHKOUT ( 'RDFFAL' ) RETURN END IF CALL TOSTDO ( ' ' ) CALL TOSTDO ( 'Reading plate albedo flatfile ...' ) C C Read the number of plates. Must be the same as the C number of plates in the plate model file. C NREC = 1 FORMAT = 'I' CALL RDFFDI ( INFILE, NREC, FORMAT, ND, NI, NC, . ARD, ARI, ARC, EOF ) IF ( EOF ) THEN CALL EXTMSI ( 'End of file after line #.', '#', NREC-1 ) END IF NPBEDO = ARI(1) IF ( NPBEDO .GT. MAXPLT ) THEN CALL SETMSG ( 'Number of plates exceeds limit.' ) CALL SIGERR ( 'SPICE(TOOMANYPLATES)' ) END IF IF ( NPBEDO .NE. NP ) THEN CALL SETMSG ( 'Number of albedos not equal to model''s.' ) CALL SIGERR ( 'SPICE(BADNUMBEROFPLATES)' ) END IF C C Read Plate ID's and albedoes. C FORMAT = 'I D' DO I = 1, NP NREC = NREC + 1 CALL RDFFDI ( INFILE, NREC, FORMAT, ND, NI, NC, . ARD, ARI, ARC, EOF ) IF ( EOF ) THEN CALL EXTMSI ( 'End of file after line #.', '#', NREC-1 ) END IF PID(I) = ARI(1) ALBEDO(I) = ARD(1) END DO CALL TOSTDO ( '...Done reading plate albedo flatfile.' ) CALL TOSTDO ( ' ' ) CALL CHKOUT ( 'RDFFAL' ) RETURN END