aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/ncarutil/conran.f
diff options
context:
space:
mode:
Diffstat (limited to 'sys/gio/ncarutil/conran.f')
-rw-r--r--sys/gio/ncarutil/conran.f1976
1 files changed, 1976 insertions, 0 deletions
diff --git a/sys/gio/ncarutil/conran.f b/sys/gio/ncarutil/conran.f
new file mode 100644
index 00000000..bc23a6cc
--- /dev/null
+++ b/sys/gio/ncarutil/conran.f
@@ -0,0 +1,1976 @@
+ SUBROUTINE CONRAN (XD,YD,ZD,NDP,WK,IWK,SCRARR)
+C
+C
+C +-----------------------------------------------------------------+
+C | |
+C | Copyright (C) 1986 by UCAR |
+C | University Corporation for Atmospheric Research |
+C | All Rights Reserved |
+C | |
+C | NCARGRAPHICS Version 1.00 |
+C | |
+C +-----------------------------------------------------------------+
+C
+C
+C
+C
+C SUBROUTINE CONRAN(XD,YD,ZD,NDP,WK,IWK,SCRARR)
+C STANDARD AND SMOOTH VERSIONS OF CONRAN
+C
+C DIMENSION OF XD(NDP),YD(NDP),ZD(NDP),WK(13*NDP)
+C ARGUMENTS IWK((27+NCP)*NDP),SCRARR(RESOLUTION**2)
+C WHERE NCP = 4 AND RESOLUTION = 40 BY
+C DEFAULT.
+C
+C LATEST REVISION JULY 1984
+C
+C OVERVIEW CONRAN PERFORMS CONTOURING OF IRREGULARLY
+C DISTRIBUTED DATA. IT IS THE STANDARD AND
+C SMOOTH MEMBERS OF THE CONRAN FAMILY. THIS
+C VERSION WILL PLOT CONTOURS; SMOOTH THEM USING
+C SPLINES UNDER TENSION (IF THE PACKAGE DASHSMTH
+C IS LOADED); PLOT A PERIMETER OR GRID; TITLE THE
+C PLOT; PRINT A MESSAGE GIVING THE CONTOUR INTERVALS
+C BELOW THE MAP; PLOT THE INPUT DATA ON THE MAP;
+C AND LABEL THE CONTOUR LINES.
+C
+C PURPOSE CONRAN PLOTS CONTOUR LINES USING RANDOM,
+C SPARSE OR IRREGULAR DATA SETS. THE DATA IS
+C TRIANGULATED AND THEN CONTOURED. CONTOURING
+C IS PERFORMED USING INTERPOLATION OF THE TRI-
+C ANGULATED DATA. THERE ARE TWO METHODS OF
+C INTERPOLATION: C1 SURFACES AND LINEAR.
+C
+C USAGE CALL CONRAN(XD,YD,ZD,NDP,WK,IWK,SCRARR)
+C AN OPTION SETTING ROUTINE CAN ALSO BE IN-
+C VOKED, SEE WRITEUP BELOW. FRAME MUST BE
+C CALLED BY THE USER.
+C
+C IF DIFFERENT COLORS (OR INTENSITIES) ARE TO BE
+C USED FOR NORMAL INTENSITY, LOW INTENSITY OR
+C TEXT OUTPUT, THEN THE VALUES IN COMMON BLOCK
+C RANINT SHOULD BE CHANGED:
+C
+C IRANMJ COLOR INDEX FOR NORMAL (MAJOR) INTENSITY
+C LINES.
+C IRANMN COLOR INDEX FOR LOW INTENSITY LINES
+C IRANTX COLOR INDEX FOR TEXT (LABELS)
+C
+C
+C ARGUMENTS
+C
+C ON INPUT XD
+C ARRAY OF DIMENSION NDP CONTAINING THE X-
+C COORDINATES OF THE DATA POINTS.
+C
+C YD
+C ARRAY OF DIMENSION NDP CONTAINING THE Y-
+C COORDINATES OF THE DATA POINTS.
+C
+C ZD
+C ARRAY OF DIMENSION NDP CONTAINING THE
+C DATA VALUES AT THE POINTS.
+C
+C NDP
+C NUMBER OF DATA POINTS (MUST BE 4 OR
+C GREATER) TO BE CONTOURED.
+C
+C WK
+C REAL WORK ARRAY OF DIMENSION AT LEAST
+C 13*NDP
+C
+C IWK
+C INTEGER WORK ARRAY. WHEN USING C1 SURFACES
+C THE ARRAY MUST BE AT LEAST IWK((27+NCP)*NDP).
+C WHEN USING LINEAR INTERPOLATION THE ARRAY
+C MUST BE AT LEAST IWK((27+4)*NDP).
+C
+C SCRARR
+C REAL WORK ARRAY OF DIMENSION AT LEAST
+C (RESOLUTION**2) WHERE RESOLUTION IS
+C DESCRIBED IN THE SSZ OPTION BELOW. RESO-
+C LUTION IS 40 BY DEFAULT.
+C
+C ON OUTPUT ALL ARGUMENTS REMAIN UNCHANGED EXCEPT THE
+C SCRATCH ARRAYS IWK, WK, AND SCRARR WHICH HAVE
+C BEEN WRITTEN INTO. IF MAKING MULTIPLE RUNS
+C ON THE SAME TRIANGULATION IWK AND WK MUST BE
+C SAVED AND RETURNED TO THE NEXT INVOCATION OF
+C CONRAN.
+C
+C ENTRY POINTS CONRAN, CONDET, CONINT, CONCAL, CONLOC, CONTNG,
+C CONDRW, CONCLS, CONSTP, CONBDN, CONTLK
+C CONPDV, CONOP1, CONOP2, CONOP3, CONOP4,
+C CONXCH, CONREO, CONCOM, CONCLD, CONPMM,
+C CONGEN, CONLOD, CONECD, CONOUT, CONOT2,
+C CONSLD, CONLCM, CONLIN, CONDSD, CONSSD
+C
+C COMMON BLOCKS CONRA1, CONRA2, CONRA3, CONRA4, CONRA5, CONRA6,
+C CONRA7, CONRA8, CONRA9, CONR10, CONR11, CONR12,
+C CONR13, CONR14, CONR15, CONR16, CONR17, RANINT
+C INTPR FROM THE DASH PACKAGE
+C
+C I/O PLOTS THE CONTOUR MAP AND, VIA THE ERPRT77
+C PACKAGE, OUTPUTS MESSAGES TO THE MESSAGE
+C OUTPUT UNIT; AT NCAR THIS UNIT IS THE
+C PRINTER. THE OPTION VALUES ARE ALL LISTED ON
+C STANDARD ERPRT77 OUTPUT UNIT; AT NCAR THIS
+C UNIT IS THE PRINTER.
+C
+C PRECISION SINGLE
+C
+C REQUIRED LIBRARY STANDARD VERSION: DASHCHAR, WHICH AT NCAR IS
+C ROUTINES LOADED BY DEFAULT.
+C SMOOTH VERSION: DASHSMTH WHICH MUST BE
+C REQUESTED AT NCAR.
+C BOTH VERSIONS REQUIRE CONCOM, CONTERP, GRIDAL
+C THE ERPRT77 PACKAGE, AND THE SPPS.
+C
+C LANGUAGE FORTRAN77
+C
+C HISTORY
+C
+C ALGORITHM THE SPARSE DATA IS TRIANGULATED AND A VIRTUAL
+C GRID IS LAID OVER THE TRIANGULATED AREA.
+C EACH VIRTUAL GRID POINT RECEIVES AN INTERPO-
+C LATED VALUE. THE GRID IS SCANNED ONCE FOR
+C EACH CONTOUR LEVEL AND ALL CONTOURS AT THAT
+C LEVEL ARE PLOTTED.
+C THERE ARE TWO METHODS OF INTERPOLATION. THE
+C FIRST IS A SMOOTH DATA INTERPOLATION
+C SCHEME BASED ON LAWSON'S C1
+C SURFACE INTERPOLATION ALGORITHM, WHICH HAS
+C BEEN REFINED BY HIROSHA AKIMA. PARTS OF
+C AKIMA'S ALGORITHM ARE USED IN THIS PACKAGE.
+C SEE THE "REFERENCE" SECTION BELOW.
+C THE SECOND IS A LINEAR INTERPOLATION SCHEME.
+C WHEN DATA IS SPARSE IT IS USUALLY BETTER TO
+C USE THE C1 INTERPOLATION. IF YOU HAVE DENSE
+C DATA (OVER 100 POINTS) THEN THE LINEAR
+C INTERPOLATION WILL GIVE THE BETTER RESULTS.
+C
+C PORTABILITY ANSI FORTRAN
+C
+C
+C OPERATION CALL CONRAN (XD,YD,ZD,NDP,WK,IWK,SCRARR)
+C
+C FRAME MUST BE CALLED BY THE USER.
+C
+C CONRAN HAS MANY OPTIONS, EACH OF WHICH MAY
+C BE CHANGED BY CALLING ONE OF THE FOUR
+C SUBROUTINES CONOP1, CONOP2, CONOP3, OR
+C CONOP4. THE NUMBER OF ARGUMENTS TO EACH
+C CONOP ROUTINE IS THE SAME AS THE FINAL
+C SUFFIX CHARACTER IN THE ROUTINE'S NAME.
+C
+C THE CONOP ROUTINES ARE CALLED BEFORE CONRAN
+C IS CALLED, AND VALUES SET BY THESE CALLS
+C CONTINUE TO BE IN EFFECT UNTIL THEY ARE
+C CHANGED BY ANOTHER CALL TO A CONOP ROUTINE.
+C
+C ALL THE CONOP ROUTINES HAVE AS THEIR FIRST
+C ARGUMENT A CHARACTER STRING TO IDENTIFY THE
+C OPTION BEING CHANGED. THIS IS THE ONLY
+C ARGUMENT TO CONOP1. CONOP2 HAS AN INTEGER
+C SECOND ARGUMENT. CONOP3 HAS A REAL ARRAY (OR
+C CONSTANT) AS ITS SECOND ARGUMENT AND AN
+C INTEGER (USUALLY THE DIMENSION OF THE
+C ARRAY) AS ITS THIRD ARGUMENT. CONOP4 HAS A
+C CHARACTER STRING AS ITS SECOND ARGUMENT AND
+C INTEGERS FOR THE THIRD AND FOURTH ARGUMENTS.
+C
+C ONLY THE FIRST TWO CHARACTERS ON EACH SIDE OF
+C THE EQUAL SIGN ARE SCANNED. THEREFORE ONLY 2
+C CHARACTERS FOR EACH OPTION ARE REQUIRED ON
+C INPUT TO CONOP (I.E. 'SCA=PRI' AND 'SC=PR'
+C ARE EQUIVALENT.)
+C
+C REMEMBER, THERE MUST BE AT LEAST 4 DATA POINTS.
+C THIS IS EQUAL TO THE DEFAULT NUMBER OF
+C DATA POINTS TO BE USED FOR ESTIMATION OF PAR-
+C TIAL DERIVATIVES AT EACH DATA POINT.
+C THE ESTIMATED PARTIAL DERIVATIVES ARE
+C USED FOR THE CONSTRUCTION OF THE INTERPOLAT-
+C ING POLYNOMIAL'S COEFFICIENTS.
+C
+C LISTED BELOW ARE OPTIONS WHICH CAN ENHANCE
+C YOUR PLOT. AN EXAMPLE OF AN APPROPRIATE
+C CONOP CALL IS GIVEN FOR EACH OPTION. A
+C COMPLETE LIST OF DEFAULT SETTINGS FOLLOWS
+C THE LAST OPTION.
+C
+C OPTIONS
+C
+C CHL THIS FLAG DETERMINES HOW THE HIGH AND LOW
+C CONTOUR VALUES ARE SET. THESE CONTOUR VALUES
+C MAY BE SET BY THE PROGRAM OR BY THE USER. IF
+C CHL=OFF, THE PROGRAM EXAMINES THE USER'S IN-
+C PUT DATA AND DETERMINES BOTH THE HIGH AND LOW
+C VALUES. IF CHL=ON, THE USER MUST SPECIFY THE
+C DESIRED HIGH (HI) AND LOW (FLO) VALUES.
+C THE DEFAULT IS CHL=OFF.
+C
+C IF PROGRAM SET: CALL CONOP3('CHL=OFF',0.,0)
+C
+C IF USER SET: CALL CONOP3('CHL=ON',ARRAY,2)
+C WHERE ARRAY(1)=HI, ARRAY(2)=FLO
+C
+C NOTE: THE VALUES SUPPLIED FOR CONTOUR INCRE-
+C MENT AND CONTOUR HIGH AND LOW VALUES ASSUMES
+C THE UNSCALED DATA VALUES. SEE THE SDC FLAG,
+C BELOW.
+C
+C EXAMPLE: CALL CONOP3('CHL=ON',ARRAY,2)
+C WHERE ARRAY(1)=5020. (THE DESIRED
+C HIGH CONTOUR VALUE) AND ARRAY(2)=
+C 2000 (THE DESIRED LOW CONTOUR VALUE).
+C THESE ARE FLOATING POINT NUMBERS.
+C
+C CIL THIS FLAG DETERMINES HOW THE CONTOUR INCRE-
+C MENT (CINC) IS SET. THE INCREMENT IS EITHER
+C CALCULATED BY THE PROGRAM (CIL=OFF) USING THE
+C RANGE OF HIGH AND LOW VALUES FROM THE USER'S
+C INPUT DATA, OR SET BY THE USER (CIL=ON). THE
+C DEFAULT IS CIL=OFF.
+C
+C IF PROGRAM SET: CALL CONOP3('CIL=OFF',0.,0)
+C
+C IF USER SET: CALL CONOP3('CIL=ON',CINC,1)
+C
+C NOTE: BY DEFAULT, THE PROGRAM WILL EXAMINE
+C THE USER'S INPUT DATA AND DETERMINE THE CONTOUR
+C INTERVAL (CINC) AT SOME APPROPRIATE RANGE BETWEEN
+C THE LEVEL OF HIGH AND LOW VALUES SUPPLIED, USUALLY
+C GENERATING BETWEEN 15 AND 20 CONTOUR LEVELS.
+C ELS.
+C
+C EXAMPLE: CALL CONOP3('CIL=ON',15.,1)
+C WHERE 15. REPRESENTS THE
+C CONTOUR INCREMENT DESIRED
+C BY THE USER.
+C
+C CON THIS FLAG DETERMINES HOW THE CONTOUR LEVELS
+C ARE SET. IF CON=ON, THE USER MUST SPECIFY
+C THE ARRAY OF CONTOUR VALUES AND THE NUMBER OF
+C CONTOUR LEVELS. A MAXIMUM OF 30 CONTOUR (NCL)
+C LEVELS ARE PERMITTED. IF CON=OFF, DEFAULT
+C VALUES ARE USED. IN THIS CASE, THE PROGRAM
+C WILL CALCULATE THE VALUES FOR THE ARRAY AND
+C NCL USING INPUT DATA. THE DEFAULT IS OFF.
+C
+C IF PROGRAM SET: CALL CONOP3('CON=OFF',0.,0)
+C
+C IF USER SET: CALL CONOP3('CON=ON',ARRAY,NCL)
+C
+C NOTE: THE ARRAY (ARRAY) CONTAINS THE CONTOUR
+C LEVELS (FLOATING POINT ONLY) AND NCL IS THE
+C NUMBER OF LEVELS. THE MAXIMUM NUMBER OF CON-
+C TOUR LEVELS ALLOWED IS 30. WHEN ASSIGNING
+C THE ARRAY OF CONTOUR VALUES, THE VALUES MUST
+C BE ORDERED FROM SMALLEST TO LARGEST.
+C
+C EXAMPLE:
+C DATA RLIST(1),...,RLIST(5)/1.,2.,3.,10.,12./
+C
+C CALL CONOP3('CON=ON',RLIST,5) WHERE
+C 'RLIST' CONTAINS THE USER SPECIFIED
+C CONTOUR LEVELS, AND 5 IS THE
+C NUMBER OF USER SPECIFIED CONTOUR
+C LEVELS (NCL).
+C
+C WARNING ON CONTOUR OPTIONS:
+C IT IS ILLEGAL TO USE THE CON OPTION WHEN
+C EITHER CIL OR CHL ARE ACTIVATED. IF
+C THIS IS DONE, THE OPTION CALL THAT DETECTED
+C THE ERROR WILL NOT BE EXECUTED.
+C
+C DAS THIS FLAG DETERMINES WHICH CONTOURS ARE
+C REPRESENTED BY DASHED LINES. THE USER SETS
+C THE DASHED LINE PATTERN. THE USER MAY SPECI-
+C FY THAT DASHED LINES BE USED FOR CONTOURS
+C WHOSE VALUE IS LESS THAN, EQUAL TO, OR
+C GREATER THAN THE DASH PATTERN BREAKPOINT (SEE
+C THE DBP OPTION BELOW), WHICH IS ZERO BY
+C DEFAULT. IF DAS=OFF (THE DEFAULT VALUE), ALL
+C SOLID LINES ARE USED.
+C
+C ALL SOLID LINES: CALL CONOP4('DAS=OFF',' ',0,0)
+C
+C IF GREATER: CALL CONOP4('DAS=GTR',PAT,0,0)
+C
+C IF EQUAL: CALL CONOP4('DAS=EQU',PAT,0,0)
+C
+C IF LESS: CALL CONOP4('DAS=LSS',PAT,0,0)
+C
+C IF ALL SAME: CALL CONOP4('DAS=ALL',PAT,0,0)
+C
+C NOTE: PAT MUST BE A TEN CHARACTER
+C STRING WITH A DOLLAR SIGN ($) FOR SOLID AND A
+C SINGLE QUOTE (') FOR BLANK. RECALL THAT IN
+C FORTRAN 77, IN A QUOTED STRING A SINGLE QUOTE
+C IS REPRESENTED BY TWO SINGLE QUOTES ('').
+C
+C EXAMPLE:
+C CALL CONOP4('DAS=GTR','$$$$$''$$$$',0,0)
+C
+C DBP THIS FLAG DETERMINES HOW THE DASH PATTERN
+C BREAK POINT (BP) IS SET. IF DBP=ON, BP MUST
+C BE SET BY THE USER BY SPECIFYING BP. IF
+C DBP=OFF THE PROGRAM WILL SET BP TO THE
+C DEFAULT VALUE WHICH IS ZERO.
+C
+C IF PROGRAM SET: CALL CONOP3('DBP=OFF',0.,0)
+C
+C IF USER SET: CALL CONOP3('DBP=ON',BP,1)
+C
+C NOTE: BP IS A FLOATING POINT NUMBER WHERE THE
+C BREAK FOR GTR AND LSS CONTOUR DASH PATTERNS
+C ARE DEFINED. BP IS ASSUMED TO BE GIVEN RELA-
+C TIVE TO THE UNTRANSFORMED CONTOURS.
+C
+C EXAMPLE: CALL CONOP3('DBP=ON',5.,1)
+C WHERE 5. IS THE USER SPECI-
+C FIED BREAK POINT.
+C
+C DEF RESET FLAGS TO DEFAULT VALUES. ACTIVATING
+C THIS OPTION SETS ALL FLAGS TO THE DEFAULT
+C VALUE. DEF HAS NO 'ON' OF 'OFF' STATES.
+C
+C TO ACTIVATE: CALL CONOP1('DEF')
+C
+C EXT FLAG TO SET EXTRAPOLATION. NORMALLY ALL
+C CONRAN VERSIONS WILL ONLY PLOT THE BOUNDARIES
+C OF THE CONVEX HULL DEFINED BY THE USER'S DATA.
+C TO HAVE THE CONTOURS FILL THE RECTANGULAR
+C AREA OF THE FRAME, SET THE EXT SWITCH ON.
+C THE DEFAULT IS OFF.
+C
+C TO TURN ON: CALL CONOP1('EXT=ON')
+C
+C TO TURN OFF: CALL CONOP1('EXT=OFF')
+C
+C FMT FLAG FOR THE FORMAT OF THE PLOTTED INPUT DATA
+C VALUES. IF FMT=OFF, THE DEFAULT VALUES FOR
+C FT, L, AND IF ARE USED. THE DEFAULT VALUES
+C ARE:
+C
+C FT = '(G10.3)'
+C L = 7 CHARACTERS INCLUDING THE PARENTHESES
+C IF = 10 CHARACTERS PRINTED IN THE OUTPUT
+C FIELD BY THE FORMAT
+C
+C IF FMT=ON, THE USER MUST SPECIFY VALUES FOR
+C FT, L, AND IF. ALL USER SPECIFIED VALUES
+C MUST BE GIVEN IN THE CORRECT FORMAT.
+C
+C IF PROGRAM SET: CALL CONOP4('FMT=OFF',' ',0,0)
+C
+C IF USER SET: CALL CONOP4('FMT=ON',FT,L,IF)
+C
+C NOTE: FT IS A CHARACTER STRING CONTAINING THE
+C FORMAT. THE FORMAT MUST BE ENCLOSED IN
+C PARENTHESES. ANY FORMAT, UP TO 10 CHARACTERS
+C WHICH IS ALLOWED AT YOUR INSTALLATION WILL BE
+C ACCEPTED. L IS THE NUMBER OF CHARACTERS IN
+C FT. IF IS THE LENGTH OF THE FIELD CREATED BY
+C THE FORMAT.
+C
+C EXAMPLE: CALL CONOP4('FMT=ON','(G30.2)',7,30)
+C
+C WARNING: CONRAN WILL NOT TEST FOR A VALID
+C FORMAT. THE FORMAT IS ONLY ALLOWED TO BE
+C 10 CHARACTERS LONG.
+C
+C GRI FLAG TO DISPLAY THE GRID. GRI IS OFF BY DEFAULT.
+C
+C TO TURN ON: CALL CONOP1('GRI=ON')
+C
+C TO TURN OFF: CALL CONOP1('GRI=OFF')
+C
+C NOTE: IF GRI IS ON, THE VIRTUAL GRID WILL
+C BE SUPERIMPOSED OVER THE CONTOUR PLOT.
+C THE X AND Y TICK INTERVALS WILL BE DISPLAYED
+C UNDER THE MAP ONLY IF PER=ON. (SEE PER)
+C
+C INT FLAG TO DETERMINE THE INTENSITIES OF THE CON-
+C TOUR LINES AND OTHER PARTS OF THE PLOT. IF
+C INT=OFF, ALL INTENSITIES ARE SET TO THE DEFAULT
+C VALUES. IF INT=ALL, ALL INTENSITIES ARE SET
+C TO THE GIVEN VALUE, IVAL. IF INT IS SET TO
+C ONE OF THE OTHER POSSIBLE OPTIONS (MAJ, MIN,
+C LAB OR DAT), THE INTENSITY LEVEL FOR THAT
+C OPTION IS SET TO THE GIVEN VALUE, IVAL.
+C
+C IF PROGRAM SET: CALL CONOP2('INT=OFF',0)
+C
+C ALL THE SAME: CALL CONOP2('INT=ALL',IVAL)
+C
+C MAJOR LINES: CALL CONOP2('INT=MAJ',IVAL)
+C
+C MINOR LINES: CALL CONOP2('INT=MIN',IVAL)
+C
+C TITLE AND MESSAGE:
+C CALL CONOP2('INT=LAB',IVAL)
+C
+C DATA VALUES: CALL CONOP2('INT=DAT',IVAL)
+C
+C NOTE: 'INT=DAT' RELATES TO THE PLOTTED DATA
+C VALUES AND THE PLOTTED MAXIMUMS AND MINIMUMS.
+C
+C NOTE: IVAL IS THE INTENSITY DESIRED. FOR AN
+C EXPLANATION OF THE OPTION VALUE SETTINGS SEE
+C THE OPTN ROUTINE IN THE NCAR SYSTEM PLOT
+C PACKAGE DOCUMENTATION. BRIEFLY, IVAL VALUES
+C RANGE FROM 0 TO 255 OR THE CHARACTER STRINGS
+C 'LO' AND 'HI'. THE DEFAULT IS 'HI' EXCEPT
+C FOR INT=MIN WHICH IS SET TO 'LO'.
+C
+C EXAMPLE: CALL CONOP2('INT=ALL',110)
+C
+C ITP SET THE INTERPOLATION SCHEME.
+C THERE ARE TWO SCHEMES--C1 SURFACES AND LINEAR.
+C THE C1 METHOD TAKES LONGER BUT WILL GIVE THE
+C BEST RESULTS WHEN THE DATA IS SPARSE (LESS
+C THAN 100 POINTS). THE LINEAR METHOD WILL
+C PRODUCE A BETTER PLOT WHEN THERE IS A DENSE
+C DATA SET. THE DEFAULT IS C1 SURFACE.
+C
+C FOR C1 SURFACE CALL CONOP1('ITP=C1')
+C
+C FOR LINEAR CALL CONOP1('ITP=LIN')
+C
+C LAB THIS FLAG CAN BE SET TO EITHER LABEL THE CON-
+C TOURS (LAB=ON) OR NOT (LAB=OFF). THE DEFAULT
+C VALUE IS LAB=ON.
+C
+C TO TURN ON: CALL CONOP1('LAB=ON')
+C
+C TO TURN OFF: CALL CONOP1('LAB=OFF')
+C
+C LOT FLAG TO LIST OPTIONS ON THE PRINTER. THE DE-
+C FAULT VALUE IS SET TO OFF, AND NO OPTIONS
+C WILL BE DISPLAYED.
+C
+C TO TURN ON: CALL CONOP1('LOT=ON')
+C
+C TO TURN OFF: CALL CONOP1('LOT=OFF')
+C
+C NOTE: IF USERS WANT TO PRINT THE OPTION
+C VALUES, THEY SHOULD TURN THIS OPTION ON. THE
+C OPTION VALUES WILL BE SENT TO THE STANDARD
+C OUTPUT UNIT AS DEFINED BY THE SUPPORT
+C ROUTINE I1MACH.
+C
+C LSZ THIS FLAG DETERMINES THE LABEL SIZE. IF
+C LSZ=OFF, THE DEFAULT ISZLSZ VALUE WILL BE
+C USED. IF LSZ=ON, THE USER SHOULD SPECIFY
+C ISZLSZ. THE DEFAULT VALUE IS 9 PLOTTER
+C ADDRESS UNITS.
+C
+C IF PROGRAM SET: CALL CONOP2('LSZ=OFF',0)
+C
+C IF USER SET: CALL CONOP2('LSZ=ON',ISZLSZ)
+C
+C NOTE: ISZLSZ IS THE REQUESTED CHARACTER
+C SIZE IN PLOTTER ADDRESS UNITS.
+C
+C EXAMPLE: CALL CONOP2('LSZ=ON',4)
+C WHERE 4 IS THE USER DESIRED
+C INTEGER PLOTTER ADDRESS
+C UNITS.
+C
+C MES FLAG TO PLOT A MESSAGE. THE DEFAULT IS ON.
+C
+C TO TURN ON: CALL CONOP1('MES=ON')
+C
+C TO TURN OFF: CALL CONOP1('MES=OFF')
+C
+C NOTE: IF MES=ON, A MESSAGE IS PRINTED BELOW
+C THE PLOT GIVING CONTOUR INTERVALS AND EXECU-
+C TION TIME IN SECONDS. IF PER OR GRI ARE ON,
+C THE MESSAGE ALSO CONTAINS THE X AND Y TICK
+C INTERVALS.
+C
+C NCP FLAG TO INDICATE THE NUMBER OF DATA POINTS
+C USED FOR THE PARTIAL DERIVATIVE
+C ESTIMATION. IF NCP=OFF, NUM IS SET TO
+C 4, WHICH IS THE DEFAULT VALUE. IF NCP=ON,
+C THE USER MUST SPECIFY NUM GREATER THAN OR
+C EQUAL TO 2.
+C
+C IF PROGRAM SET: CALL CONOP2('NCP=OFF',0)
+C
+C IF USER SET: CALL CONOP2('NCP=ON',NUM)
+C
+C NOTE: NUM = NUMBER OF DATA POINTS USED FOR
+C ESTIMATION. CHANGING THIS VALUE EFFECTS THE
+C CONTOURS PRODUCED AND THE SIZE OF INPUT ARRAY
+C IWK.
+C
+C EXAMPLE: CALL CONOP2('NCP=ON',3)
+C
+C PDV FLAG TO PLOT THE INPUT DATA VALUES. THE
+C DEFAULT VALUE IS PDV=OFF.
+C
+C TO TURN ON: CALL CONOP1('PDV=ON')
+C
+C TO TURN OFF: CALL CONOP1('PDV=OFF')
+C
+C NOTE: IF PDV=ON, THE INPUT DATA VALUES ARE
+C PLOTTED RELATIVE TO THEIR LOCATION ON THE
+C CONTOUR MAP. IF YOU ONLY WISH TO SEE THE
+C LOCATIONS AND NOT THE VALUES, SET PDV=ON AND
+C CHANGE FMT TO PRODUCE AN ASTERISK (*) SUCH AS
+C (I1).
+C
+C PER FLAG TO SET THE PERIMETER. THE DEFAULT VALUE
+C IS PER=ON, WHICH CAUSES A PERIMETER TO BE
+C DRAWN AROUND THE CONTOUR PLOT.
+C
+C TO TURN ON: CALL CONOP1('PER=ON')
+C
+C TO TURN OFF: CALL CONOP1('PER=OFF')
+C
+C NOTE: IF MES IS ON, THE X AND Y TICK INTERVALS
+C WILL BE GIVEN. THESE ARE THE INTERVALS IN USER
+C COORDINATES THAT EACH TICK MARK REPRESENTS.
+C
+C PMM FLAG TO PLOT RELATIVE MINIMUMS AND MAXIMUMS.
+C THIS FLAG IS OFF BY DEFAULT.
+C
+C TO TURN OFF: CALL CONOP1('PMM=OFF')
+C
+C TO TURN ON: CALL CONOP1('PMM=ON')
+C
+C PSL FLAG WHICH SETS THE PLOT SHIELD OPTION.
+C THE OUTLINE OF THE SHIELD WILL BE DRAWN ON
+C THE SAME FRAME AS THE CONTOUR PLOT.
+C BY DEFAULT THIS OPTION IS OFF.
+C (SEE SLD OPTION).
+C
+C DRAW THE SHIELD: CALL CONOP1('PSL=ON')
+C
+C DON'T DRAW IT: CALL CONOP1('PSL=OFF')
+C
+C REP FLAG INDICATING THE USE OF THE SAME DATA IN
+C A NEW EXECUTION. THE DEFAULT VALUE IS OFF.
+C
+C TO TURN ON: CALL CONOP1('REP=ON')
+C
+C TO TURN OFF: CALL CONOP1('REP=OFF')
+C
+C NOTE: IF REP=ON, THE SAME X-Y DATA AND TRIANGU-
+C LATION ARE TO BE USED BUT IT IS ASSUMED
+C THE USER HAS CHANGED CONTOUR VALUES OR RESOLUTION
+C FOR THIS RUN. SCRATCH ARRAYS WK AND IWK MUST
+C REMAIN UNCHANGED.
+C
+C SCA FLAG FOR SCALING OF THE PLOT ON A FRAME.
+C THIS FLAG IS ON BY DEFAULT.
+C
+C USER SCALING: CALL CONOP1('SCA=OFF')
+C
+C PROGRAM SCALING: CALL CONOP1('SCA=ON')
+C
+C PRIOR WINDOW: CALL CONOP1('SCA=PRI')
+C
+C NOTE: WITH SCA=OFF, PLOTTING INSTRUCTIONS
+C WILL BE ISSUED USING THE USER'S INPUT COORDI-
+C NATES, UNLESS THEY ARE TRANSFORMED VIA FX AND
+C FY TRANSFORMATIONS. USERS WILL FIND AN
+C EXTENDED DISCUSSION IN THE "INTERFACING WITH
+C OTHER GRAPHICS ROUTINES" SECTION BELOW. THE SCA
+C OPTION ASSUMES THAT ALL INPUT DATA FALLS INTO
+C THE CURRENT WINDOW SETTING. WITH SCA=ON, THE
+C ENTRY POINT WILL ESTABLISH A VIEWPORT SO THAT
+C THE USER'S PLOT WILL FIT INTO THE CENTER 90
+C PERCENT OF THE FRAME. WHEN SCA=PRI, THE
+C PROGRAM MAPS THE USER'S PLOT INSTRUCTIONS INTO
+C THE PORTION OF THE FRAME DEFINED BY THE
+C CURRENT NORMALIZATION TRANSFORMATION. SCA=OFF
+C SHOULD BE USED TO INTERFACE WITH EZMAP.
+C
+C SDC FLAG TO DETERMINE HOW TO SCALE THE DATA ON
+C THE CONTOURS. IF SDC=OFF, THE FLOATING POINT
+C VALUE IS GIVEN BY SCALE. IF SDC=ON, THE USER
+C MAY SPECIFY SCALE. THE DEFAULT VALUE FOR SCALE
+C IS 1.
+C
+C IF PROGRAM SET: CALL CONOP3('SDC=OFF',0.,0)
+C
+C IF USER SET: CALL CONOP3('SDC=ON',SCALE,1)
+C
+C NOTE: THE DATA PLOTTED ON CONTOUR LINES AND
+C THE DATA PLOTTED FOR RELATIVE MINIMUMS AND
+C MAXIMUMS WILL BE SCALED BY THE FLOATING POINT
+C VALUE GIVEN BY SCALE. TYPICAL SCALE VALUES
+C ARE 10., 100., 1000., ETC. THE ORIGINAL DATA
+C VALUES ARE MULTIPLIED BY SCALE. SCALE MUST BE
+C A FLOATING POINT NUMBER AND IS DISPLAYED IN THE
+C MESSAGE (SEE MES).
+C
+C EXAMPLE: CALL CONOP2('SDC=ON',100.,1)
+C
+C SLD ACTIVATE OR DEACTIVATE THE SHIELDING OPTION.
+C WHEN THIS OPTION IS ACTIVATED, ONLY THOSE
+C CONTOURS WITHIN THE SHIELD ARE DRAWN. THE SHIELD
+C IS A POLYGON SPECIFIED BY THE USER WHICH MUST
+C BE GIVEN IN THE SAME COORDINATE RANGE AS THE
+C THE DATA. IT MUST DEFINE ONLY ONE POLYGON.
+C
+C TO ACTIVATE THE SHIELD:
+C CALL CONOP3('SLD=ON',ARRAY,ICSD)
+C
+C TO DEACTIVATE THE SHIELD:
+C CALL CONOP3('SLD=OFF',0.,0)
+C
+C NOTE: ARRAY IS A REAL ARRAY ICSD ELEMENTS LONG.
+C THE FIRST ICSD/2 ELEMENTS ARE X COORDINATES AND
+C THE SECOND ICSD/2 ELEMENTS ARE Y COORDINATES.
+C ICSD IS THE LENGTH OF ENTIRE ARRAY, THE
+C NUMBER OF (X + Y) SHIELD COORDS. THE POLYGON
+C MUST BE CLOSED, THAT IS THE FIRST AND LAST
+C POINTS DESCRIBING IT MUST BE THE SAME.
+C
+C EXAMPLE: DIMENSION SHLD
+C DATA SHLD/ 7.,10.,10.,7.,7.,
+C 1 7.,7.,10.,10.,7./
+C CALL CONOP3 (6HSLD=ON,SHLD,10)
+C
+C
+C SML FLAG TO DETERMINE THE SIZE OF MINIMUM AND
+C MAXIMUM CONTOUR LABELS. IF SML=OFF, THE
+C ISZSML DEFAULT VALUE OF 15 IS USED.
+C IF SML=ON, THE USER MUST SPECIFY ISZSML.
+C
+C IF PROGRAM SET: CALL CONOP2('SML=OFF',0)
+C
+C IF USER SET: CALL CONOP2('SML=ON',ISZSML)
+C
+C NOTE: ISZSML IS AN INTEGER NUMBER WHICH IS
+C THE SIZE OF LABELS IN PLOTTER ADDRESS UNITS
+C AS DEFINED IN THE SPPS ENTRY WTSTR.
+C
+C EXAMPLE: CALL CONOP2('SML=ON',12)
+C
+C SPD FLAG FOR THE SIZE OF THE PLOTTED INPUT DATA
+C VALUES. IF SPD=OFF, THE VALUE OF ISZSPD IS
+C 8, WHICH IS THE DEFAULT. IF SPD=ON, THE USER
+C MUST SPECIFY ISZSPD.
+C
+C IF PROGRAM SET: CALL CONOP2('SPD=OFF',0)
+C
+C IF USER SET: CALL CONOP2('SPD=ON',ISZSPD)
+C
+C NOTE: ISZSPD IS AN INTEGER NUMBER GIVING THE
+C SIZE TO PLOT THE DATA VALUES IN PLOTTER ADDRESS
+C UNITS AS DEFINED IN THE SPPS ENTRY WTSTR. .
+C
+C EXAMPLE: CALL CONOP2('SPD=ON',6)
+C
+C SSZ FLAG TO DETERMINE THE RESOLUTION (NUMBER OF
+C STEPS IN EACH DIRECTION). IF SSZ=ON, THE
+C USER SETS ISTEP, OR, IF SSZ=OFF, THE PROGRAM
+C WILL AUTOMATICALLY SET ISTEP AT THE DEFAULT
+C VALUE OF 40.
+C
+C IF PROGRAM SET: CALL CONOP2('SSZ=OFF',0)
+C
+C IF USER SET: CALL CONOP2('SSZ=ON',ISTEP)
+C
+C NOTE: ISTEP IS AN INTEGER SPECIFYING THE DENSITY
+C OF THE VIRTUAL GRID. IN MOST CASES, THE DEFAULT
+C VALUE OF 40 PRODUCES PLEASING CONTOURS. FOR
+C COARSER BUT QUICKER CONTOURS, LOWER THE
+C VALUE. FOR SMOOTHER CONTOURS AT
+C THE EXPENSE OF TAKING LONGER TIME, RAISE
+C THE VALUE. NOTE: FOR STEP SIZES GREATER
+C THAN 200 IN CONRAN, THE ARRAYS PV IN COMMON
+C CONRA1 AND ITLOC IN COMMON CONRA9, MUST BE
+C EXPANDED TO ABOUT 10 MORE THAN ISTEP.
+C SEE CONRA1 AND CONRA9 COMMENTS BELOW FOR MORE
+C INFORMATION.
+C
+C EXAMPLE: CALL CONOP2('SSZ=ON',25)
+C THIS ISTEP VALUE WILL PRO-
+C DUCE A COARSE CONTOUR.
+C
+C STL FLAG TO DETERMINE THE SIZE OF THE TITLE.
+C ISZSTL MAY BE SET BY THE USER (STL=ON), OR
+C THE PROGRAM WILL SET IT TO THE DEFAULT SIZE
+C OF 16 PLOTTER ADDRESS UNITS (STL=OFF).
+C
+C IF PROGRAM SET: CALL CONOP2('STL=OFF',0)
+C
+C IF USER SET: CALL CONOP2('STL=ON',ISZSTL)
+C
+C NOTE: WHEN 30 OR 40 CHARACTERS ARE USED FOR
+C THE TITLE, THE DEFAULT SIZE OF 16 PLOTTER
+C ADDRESS UNITS WORKS WELL. FOR LONGER TITLES,
+C A SMALLER TITLE SIZE IS REQUIRED.
+C
+C EXAMPLE: CALL CONOP2('STL=ON',13)
+C
+C TEN FLAG TO DETERMINE THE TENSION FACTOR APPLIED
+C WHEN SMOOTHING CONTOUR LINES. THE USER MAY
+C SET TENS OR ALLOW THE PROGRAM TO SET THE
+C VALUE. IF USER SET, TENS MUST HAVE A VALUE
+C GREATER THAN ZERO AND LESS THAN OR EQUAL TO
+C 30. THE DEFAULT VALUE IS 2.5.
+C
+C IF PROGRAM SET: CALL CONOP3('TEN=OFF',0.,0)
+C
+C IF USER SET: CALL CONOP3('TEN=ON',TENS,1)
+C
+C NOTE: TENS IS NOT AVAILABLE IN THE STANDARD
+C VERSION OF CONRAN.
+C SMOOTHING OF CONTOUR LINES IS ACCOMPLISHED
+C WITH SPLINES UNDER TENSION. TO ADJUST THE
+C AMOUNT OF SMOOTHING APPLIED, ADJUST THE TEN-
+C SION FACTOR. SETTING TENS VERY LARGE
+C (I.E. 30.), EFFECTIVELY SHUTS OFF SMOOTHING.
+C
+C EXAMPLE: CALL CONOP3('TEN=ON',14.,1)
+C
+C TFR FLAG TO ADVANCE THE FRAME BEFORE TRIANGULATION.
+C THE DEFAULT VALUE IS TFR=ON, WHICH MEANS THAT
+C THE CONTOURS AND THE TRIANGLES WILL BE PLOTTED
+C ON SEPARATE FRAMES.
+C
+C IF PROGRAM SET: CALL CONOP1('TFR=ON')
+C
+C TO TURN OFF: CALL CONOP1('TFR=OFF')
+C
+C NOTE: TRIANGLES ARE PLOTTED AFTER THE CON-
+C TOURING IS COMPLETED. TO SEE THE TRIANGLES
+C OVER THE CONTOURS, TURN THIS SWITCH OFF.
+C
+C TLE FLAG TO PLACE A TITLE AT THE TOP OF THE PLOT.
+C IF TLE=ON, THE USER MUST SPECIFY CHARS AND
+C INUM. CHARS IS THE CHARACTER STRING CONTAINING
+C THE TITLE. INUM IS THE NUMBER OF CHARACTERS
+C IN CHARS. THE DEFAULT VALUE IS OFF.
+C
+C TO TURN ON: CALL CONOP4('TLE=ON',CHARS,INUM,0)
+C
+C TO TURN OFF: CALL CONOP4('TLE=OFF',' ',0,0)
+C
+C NOTE: IF LONGER THAN 64-CHARACTER TITLES ARE
+C DESIRED, THE CHARACTER VARIABLE ISTRNG FOUND
+C IN CONRA7 MUST BE INCREASED APPROPRIATELY.
+C
+C EXAMPLE: CALL CONOP4('TLE=ON','VECTOR REVIEW'
+C ,13,0)
+C
+C TOP FLAG TO PLOT ONLY THE TRIANGLES.
+C
+C TO TURN OFF: CALL CONOP1('TOP=OFF')
+C
+C TO TURN ON: CALL CONOP1('TOP=ON')
+C
+C NOTE: THE USER MAY WISH TO OVERLAY THE TRIAN-
+C GLES ON SOME OTHER PLOT. 'TOP=ON' WILL
+C ALLOW THAT. THIS OPTION WHEN ACTIVATED
+C (TOP=ON), WILL SET TRI=ON, AND TFR=OFF. IF
+C THE USER WANTS TFR=ON, IT SHOULD BE SET AFTER
+C TOP IS SET. IF THE USER SETS TOP=OFF IT WILL
+C SET TRI=OFF AND TFR=ON. IF THE USER WANTS TRI
+C OR TFR DIFFERENT, SET THEM AFTER THE
+C TOP CALL.
+C
+C TRI FLAG TO PLOT THE TRIANGULATION. THE DEFAULT IS
+C OFF AND THEREFORE THE TRIANGLES ARE NOT DRAWN.
+C
+C TO TURN ON: CALL CONOP1('TRI=ON')
+C
+C TO TURN OFF: CALL CONOP1('TRI=OFF')
+C
+C NOTE: PLOTTING THE TRIANGLES WILL INDICATE TO
+C THE USER WHERE GOOD AND BAD POINTS OF INTER-
+C POLATION ARE OCCURRING IN THE CONTOUR MAP.
+C EQUILATERAL TRIANGLES ARE OPTIMAL FOR INTER-
+C POLATION. QUALITY DEGRADES AS TRIANGLES
+C APPROACH A LONG AND NARROW SHAPE. THE CONVEX
+C HULL OF THE TRIANGULATION IS ALSO A POOR
+C POINT OF INTERPOLATION.
+C
+C OPTION DEFAULT BELOW ARE LISTED THE DEFAULT
+C VALUES VALUES FOR THE VARIOUS OPTIONS GIVEN ABOVE.
+C UNLESS THE USER SPECIFIES OTHERWISE, THESE
+C VALUES WILL BE USED IN EXECUTION OF THE VARI-
+C OUS OPTIONS.
+C
+C CHL=OFF LOT=OFF SLD=OFF
+C CIL=OFF LSZ=OFF SML=OFF
+C CON=OFF MES=ON SPD=OFF
+C DAS=OFF NCP=OFF SPT=OFF
+C DBP=OFF PDV=OFF SSZ=OFF
+C EXT=OFF PER=ON STL=OFF
+C FMT=OFF PMM=OFF TEN=OFF
+C GRI=OFF REP=OFF TFR=ON
+C ITP=C1 SCA=ON TOP=OFF
+C LAB=ON SDC=OFF TRI=OFF
+C
+C DEFAULT VALUES FOR THE OPTION DEFAULT VALUES GIVEN ABOVE, IF
+C USER SPECIFIED USED, WILL SET DEFAULT VALUES FOR THE FOLLOW-
+C PARAMETERS ING PARAMETERS:
+C
+C PARAMETER DEFAULT
+C --------- -------
+C
+C ARRAY UP TO 30 CONTOUR LEVELS ALLOWED.
+C VALUES ARE COMPUTED BY THE
+C PROGRAM, BASED ON INPUT.
+C
+C BP 0.
+C
+C CINC COMPUTED BY THE PROGRAM BASED ON THE
+C RANGE OF HI AND LO VALUES OF THE
+C INPUT DATA.
+C
+C FLO COMPUTED BY THE PROGRAM BASED ON THE
+C LOWEST UNSCALED INPUT DATA.
+C
+C FT (G10.3) PARENTHESES MUST BE
+C INCLUDED.
+C
+C HI COMPUTED BY THE PROGRAM BASED ON THE
+C HIGHEST UNSCALED INPUT DATA.
+C
+C CHARS NO TITLE
+C
+C IF 10 CHARACTERS
+C
+C INUM NO TITLE
+C
+C IPAT '$$$$$$$$$$' (THIS IS A 10 CHARACTER
+C STRING.)
+C
+C ISZLSZ 9 PLOTTER ADDRESS UNITS
+C
+C ISZSML 15 PLOTTER ADDRESS UNITS
+C
+C ISZSPD 8 PLOTTER ADDRESS UNITS
+C
+C ISZSTL 16 PLOTTER ADDRESS UNITS
+C
+C ISTEP 40
+C
+C IVAL 'HI' FOR ALL EXCEPT MINOR CON-
+C TOUR LINES WHICH ARE 'LO'.
+C
+C L 7 CHARACTERS (INCLUDING BOTH
+C PARENTHESES)
+C
+C NCL COMPUTED BY THE PROGRAM BASED ON
+C INPUT DATA. UP TO 30 CONTOUR
+C LEVELS ARE PERMITTED.
+C
+C NUM 4 DATA POINTS
+C
+C SCALE 1. (NO SCALING PERFORMED)
+C
+C TENS 2.5
+C
+C ICSD 0 (NO SHIELD)
+C
+C OPTIONS WHICH THE SHAPE OF THE CONTOURS MAY BE MODIFIED BY
+C EFFECT THE CHANGING NCP AND SSZ. NCP CONTROLS THE
+C CONTOURS NUMBER OF DATA POINTS TO BE USED IN THE
+C INTERPOLATION. INCREASING NCP CAUSES MORE
+C OF THE SURROUNDING DATA TO INFLUENCE THE
+C POINT OF INTERPOLATION. SOME DATASETS CAUSE
+C DIFFICULTY WHEN TRYING TO PRODUCE MEANINGFUL
+C CONTOURS (TRIANGLES WHICH ARE LONG AND NARROW).
+C BY MODIFYING NCP A USER CAN FINE-TUNE A
+C PLOT. INCREASING ISTEP, THE DENSITY OF THE
+C VIRTUAL GRID, WILL SMOOTH OUT THE CONTOUR
+C LINES AND PICK UP MORE DETAIL (NEW CONTOURS
+C WILL APPEAR AS ISTEP INCREASES AND OLD ONES WILL
+C SOMETIMES BREAK INTO MORE DISTINCT UNITS).
+C ISTEP IS CHANGED BY THE SSD OPTION.
+C
+C NOTE IF NCP.GT.25, ARRAYS DSQ0 AND IPC0 IN CONDET
+C MUST BE ADJUSTED ACCORDINGLY. ALSO NCPSZ IN
+C CONBDN (25 BY DEFAULT), MUST BE INCREASED TO
+C NCP. THE DEFAULT VALUE OF NCP, WHICH IS 4,
+C PRODUCES PLEASING PICTURES IN MOST CASES.
+C HOWEVER, FINE-TUNING OF THE INTERPOLATION CAN
+C BE OBTAINED BY INCREASING THE SIZE OF NCP,
+C WITH A CORRESPONDING LINEAR INCREASE IN WORK
+C SPACE.
+C
+C THE INTERPOLATION METHOD USED WILL ALSO CAUSE
+C DIFFERENT LOOKING CONTOURS. THE C1 METHOD
+C IS RECOMMENDED WHEN THE DATA IS SPARSE. IT
+C WILL SMOOTH THE DATA AND ADD TRENDS (FALSE
+C HILLS AND VALLEYS). THE LINEAR METHOD IS
+C RECOMMENDED WHEN DATA IS DENSE (GT 50 TO 100)
+C IT WILL NOT SMOOTH THE DATA OR ADD TRENDS.
+C
+C INTERFACING WITH NORMALLY THE SCALING FACTOR WILL BE SET TO OFF.
+C OTHER GRAPHICS IN MOST CASES MAPPING CAN BE PERFORMED BEFORE
+C ROUTINES CALLING THE CONRAN ENTRY POINT, THUS SAVING THE
+C USER FROM MODIFYING THE FILE. IF REASONABLE
+C RESULTS CANNOT BE OBTAINED, THE STATEMENT
+C FUNCTIONS, FX AND FY, WILL HAVE TO BE REPLACED.
+C THE ROUTINES HAVING THESE STATEMENT FUNCTIONS
+C ARE:
+C
+C CONDRW, CONPDV, CONTLK, CONPMS, CONGEN
+C
+C REFERENCES AKIMA, HIROSHA
+C A METHOD OF BIVARIATE INTERPOLATION AND
+C SMOOTH SURFACE FITTING FOR IRREGULARLY
+C DISTRIBUTED DATA POINTS.
+C ACM TRANSACTIONS ON MATHEMATICAL SOFTWARE
+C VOL 4, NO. 2, JUNE 1978, PAGES 148-159
+C LAWSON, C.L.
+C SOFTWARE FOR C1 SURFACE INTERPOLATION
+C JPL PUBLICATION 77-30
+C AUGUST 15, 1977
+C
+C CONRAN ERROR ERROR ROUTINE MESSAGE
+C MESSAGES
+C 1 CONRAN INPUT PARAMETER NDP LT NCP
+C 2 CONRAN NCP GT MAX SIZE OR LT 2
+C 3 CONTNG ALL COLINEAR DATA POINTS
+C 4 CONTNG IDENTICAL INPUT DATA POINTS
+C FOUND
+C 5 CONOP UNDEFINED OPTION
+C 6 CONCLS CONSTANT INPUT FIELD
+C 7 CONOP INCORRECT CONOP CALL USED
+C 8 CONOP ILLEGAL USE OF CON OPTION
+C WITH CIL OR CHL OPTIONS
+C 9 CONOP NUMBER OF CONTOUR LEVELS
+C EXCEEDS 30
+C 10 CONDRW CONTOUR STORAGE EXHAUSTED
+C THIS ERROR IS TRAPPED AND
+C NULLIFIED BY CONRAN. IT
+C SERVES TO SIGNAL THE USER
+C THAT A CONTOUR LEVEL MAY NOT
+C BE COMPLETE.
+C 11 CONSTP ASPECT RATIO OF X AND Y
+C GREATER THAN 5 TO 1.
+C (THIS ERROR MAY CAUSE A POOR
+C QUALITY PLOT. USUALLY THIS
+C CAN BE FIXED BY MULTIPLYING
+C X OR Y BY A CONSTANT FACTOR.
+C IF THIS SOLUTION IS
+C UNACCEPTABLE THEN INCREASING
+C SSZ TO A VERY LARGE VALUE
+C MAY HELP. NOTE: THIS CAN BE
+C EXPENSIVE.)
+C
+C THE ERRORS LISTED ABOVE ARE DEFINED AS RECOVERABLE
+C ERRORS SHOULD THE USER WISH TO USE THEM IN THAT
+C FASHION. THE DOCUMENTATION ON THE ERPRT77 PACKAGE
+C EXPLAINS HOW TO RECOVER FROM AN ERROR.
+C
+C NOTE: THE COMMON BLOCKS LISTED INCLUDE ALL THE COMMON USED BY
+C THE ENTIRE CONRAN FAMILY. NOT ALL MEMBERS WILL USE ALL
+C THE COMMON VARIABLES.
+C
+C CONRA1
+C CL-ARRAY OF CONTOUR LEVELS
+C NCL-NUMBER OF CONTOUR LEVELS
+C OLDZ-Z VALUE OF LEFT NEIGHBOR TO CURRENT LOCATION
+C PV-ARRAY OF PREVIOUS ROW VALUES
+C HI-LARGEST CONTOUR PLOTTED
+C FLO-LOWEST CONTOUR PLOTTED
+C FINC-INCREMENT LEVEL BETWEEN EQUALLY SPACED CONTOURS
+C CONRA2
+C REPEAT-FLAG TO TRIANGULATE AND DRAW OR JUST DRAW
+C EXTRAP-PLOT DATA OUTSIDE OF CONVEX DATA HULL
+C PER-PUT PERIMETER AROUND PLOT
+C MESS-FLAG TO INDICATE MESSAGE OUTPUT
+C ISCALE-SCALING SWITCH
+C LOOK-PLOT TRIANGLES FLAG
+C PLDVLS-PLOT THE DATA VALUES FLAG
+C GRD-PLOT GRID FLAG
+C CON-USER SET OR PROGRAM SET CONTOURS FLAG
+C CINC-USER OR PROGRAM SET INCREMENT FLAG
+C CHILO-USER OR PROGRAM SET HI LOW CONTOURS
+C LABON-FLAG TO CONTROL LABELING OF CONTOURS
+C PMIMX-FLAG TO CONTROL THE PLOTTING OF MIN'S
+C AND MAX'S
+C SCALE-THE SCALE FACTOR FOR CONTOUR LINE VALUES
+C AND MIN, MAX PLOTTED VALUES
+C FRADV-ADVANCE FRAME BEFORE PLOTTING TRIANGULATION
+C EXTRI-ONLY PLOT TRIANGULATION
+C BPSIZ-BREAKPOINT SIZE FOR DASHPATTERNS
+C LISTOP-LIST OPTIONS ON UNIT6 FLAG
+C CONRA3
+C IRED-ERPRT77 RECOVERABLE ERROR FLAG
+C CONRA4
+C NCP-NUMBER OF DATA POINTS USED AT EACH POINT FOR
+C POLYNOMIAL CONSTRUCTION.
+C NCPSZ-MAX SIZE ALLOWED FOR NCP
+C CONRA5
+C NIT-FLAG TO INDICATE STATUS OF SEARCH DATA BASE
+C ITIPV-LAST TRIANGLE INTERPOLATION OCCURRED IN
+C CONRA6
+C XST-X COORDINATE START POINT FOR CONTOURING
+C YST-Y COORDINATE START POINT FOR CONTOURING
+C XED-X COORDINATE END POINT FOR CONTOURING
+C YED-Y COORDINATE END POINT FOR CONTOURING
+C STPSZ-STEP SIZE FOR X,Y CHANGE WHEN CONTOURING
+C IGRAD-NUMBER OF GRADUATIONS FOR CONTOURING (STEP SIZE)
+C IG-RESET VALUE FOR IGRAD
+C XRG-X RANGE OF COORDINATES
+C YRG-Y RANGE OF COORDINATES
+C BORD-PERCENT OF FRAME USED FOR CONTOUR PLOT
+C PXST-X PLOTTER START ADDRESS FOR CONTOURS
+C PYST-Y PLOTTER START ADDRESS FOR CONTOURS
+C PXED-X PLOTTER END ADDRESS FOR CONTOURS
+C PYED-Y PLOTTER END ADDRESS FOR CONTOURS
+C ITICK-NUMBER OF TICK MARKS FOR GRIDS AND PERIMETERS
+C CONRA7
+C TITLE-SWITCH TO INDICATE IF TITLE OPTION ON OR OFF
+C ISTRNG-CHARACTER STRING CONTAINING THE TITLE
+C ICNT-CHARACTER COUNT OF ISTRNG
+C ITLSIZ-SIZE OF TITLE IN PWRIT UNITS
+C CONRA8
+C IHIGH-DEFAULT INTENSITY SETTING
+C INMAJ-CONTOUR LEVEL INTENSITY FOR MAJOR LINES
+C INMIN-CONTOUR LEVEL INTENSITY FOR MINOR LINES
+C INLAB-TITLE AND MESSAGE INTENSITY
+C INDAT-DATA VALUE INTENSITY
+C FORM-THE FORMAT FOR PLOTTING THE DATA VALUES
+C LEN-THE NUMBER OF CHARACTERS IN THE FORMAT
+C IFMT-SIZE OF THE FORMAT FIELD
+C LEND-DEFAULT FORMAT LENGTH
+C IFMTD-DEFAULT FORMAT FIELD SIZE
+C ISIZEP-SIZE OF THE PLOTTED DATA VALUES
+C CONRA9
+C X-ARRAY OF X COORDINATES OF CONTOURS DRAWN AT CURRENT CONTOUR
+C LEVEL
+C Y-ARRAY OF Y COORDINATES OF CONTOURS DRAWN AT CURRENT CONTOUR
+C LEVEL
+C NP-COUNT IN X AND Y
+C MXXY-SIZE OF X AND Y
+C TR-TOP RIGHT CORNER VALUE OF CURRENT CELL
+C BR-BOTTOM RIGHT CORNER VALUE OF CURRENT CELL
+C TL-TOP LEFT CORNER VALUE OF CURRENT CELL
+C BL-BOTTOM LEFT CORNER VALUE OF CURRENT CELL
+C CONV-CURRENT CONTOUR VALUE
+C XN-X POSITION WHERE CONTOUR IS BEING DRAWN
+C YN-Y POSITION WHERE CONTOUR IS BEING DRAWN
+C ITLL-TRIANGLE WHERE TOP LEFT CORNER OF CURRENT CELL LIES
+C IBLL-TRIANGLE OF BOTTOM LEFT CORNER
+C ITRL-TRIANGLE OF TOP RIGHT CORNER
+C IBRL-TRIANGLE OF BOTTOM RIGHT CORNER
+C XC-X COORDINATE OF CURRENT CELL
+C YC-Y COORDINATE OF CURRENT CELL
+C ITLOC-IN CONJUNCTION WITH PV STORES THE TRIANGLE WHERE PV
+C VALUE CAME FROM
+C CONR10
+C NT-NUMBER OF TRIANGLES GENERATED
+C NL-NUMBER OF LINE SEGMENTS
+C NTNL-NT+NL
+C JWIPT-POINTER INTO IWK WHERE WHERE TRIANGLE POINT NUMBERS
+C ARE STORED
+C JWIWL-IN IWK THE LOCATION OF A SCRATCH SPACE
+C JWIWP-IN IWK THE LOCATION OF A SCRATCH SPACE
+C JWIPL-IN IWK THE LOCATION OF END POINTS FOR BORDER LINE
+C SEGMENTS
+C IPR-IN WK THE LOCATION OF THE PARTIAL DERIVATIVES AT EACH
+C DATA POINT
+C ITPV-THE TRIANGLE WHERE THE PREVIOUS VALUE CAME FROM
+C CONR11
+C NREP-NUMBER OF REPETITIONS OF DASH PATTERN BEFORE A LABEL
+C NCRT-NUMBER OF CRT UNITS FOR A DASH MARK OR BLANK
+C ISIZEL-SIZE OF CONTOUR LINE LABELS
+C NDASH-ARRAY CONTAINING THE NEGATIVE VALUED CONTOUR DASH
+C PATTERN
+C MINGAP-NUMBER OF UNLABELED LINES BETWEEN EACH LABELED ONE
+C IDASH-POSITIVE VALUED CONTOUR DASH PATTERN
+C ISIZEM-SIZE OF PLOTTED MINIMUMS AND MAXIMUMS
+C EDASH-EQUAL VALUED CONTOUR DASH PATTERN
+C TENS-DEFAULT TENSION SETTING FOR SMOOTHING
+C CONR12
+C IXMAX,IYMAX-MAXIMUM X AND Y COORDINATES RELATIVE TO THE
+C SCRATCH ARRAY, SCRARR
+C XMAX,YMAX-MAXIMUM X AND Y COORDINATES RELATIVE TO USERS
+C COORDINATE SPACE
+C CONR13
+C XVS-ARRAY OF THE X COORDINATES FOR SHIELDING
+C YVS-ARRAY OF THE Y COORDINATES FOR SHIELDING
+C IXVST-POINTER TO THE USERS X ARRAY FOR SHIELDING
+C IYVST-POINTER TO THE USERS Y ARRAY FOR SHIELDING
+C ICOUNT-COUNT OF THE SHIELD ELEMENTS
+C SPVAL-SPECIAL VALUE USED TO HALT CONTOURING AT THE SHIELD
+C BOUNDARY
+C SHIELD-LOGICAL FLAG TO SIGNAL STATUS OF SHIELDING
+C SLDPLT-LOGICAL FLAG TO INDICATE STATUS OF SHIELD PLOTTING
+C CONR14
+C LINEAR-C1 LINEAR INTERPOLATING FLAG
+C CONR15
+C ISTRNG-TITLE OF THE PLOT
+C CONR16
+C FORM-FORMAT USED FOR DATA
+C CONR17
+C NDASH-DASH PATTERN USED FOR CONTOUR LINES LESS THAN BP
+C IDASH-DASH PATTERN USED FOR CONTOUR LINES GREATER THAN BP
+C EDASH-DASH PATTERN USED FOR CONTOUR LINES EQUAL TO THE BP
+C RANINT
+C IRANMJ-COLOR INDEX FOR NORMAL (MAJOR) INTENSITY LINES
+C IRANMN-COLOR INDEX FOR LOW INTENSITY LINES
+C IRANMJ-COLOR INDEX FOR TEXT (LABELS)
+C
+C +NOAO - Blockdata data conbdn rewritten as run time initialization
+C Variable LNGTHS not used.
+C
+C EXTERNAL CONBDN
+C DIMENSION LNGTHS(4), HOLD(4)
+ DIMENSION HOLD(4)
+C - NOAO
+ CHARACTER*110 IWORK
+ CHARACTER*13 ENCSCR, ENSCRY
+ CHARACTER*1 ICHAR
+ CHARACTER*500 DPAT
+ REAL WIND(4), VIEW(4), NWIND(4), NVIEW(4)
+ DIMENSION XD(*) ,YD(*) ,ZD(*) ,WK(*) ,
+ 1 IWK(*) ,SCRARR(*)
+C
+C
+ COMMON /CONRA1/ CL(30) ,NCL ,OLDZ ,PV(210) ,
+ 1 FINC ,HI ,FLO
+ COMMON /CONRA2/ REPEAT ,EXTRAP ,PER ,MESS ,
+ 1 ISCALE ,LOOK ,PLDVLS ,GRD ,
+ 2 CINC ,CHILO ,CON ,LABON ,
+ 3 PMIMX ,SCALE ,FRADV ,EXTRI ,
+ 4 BPSIZ ,LISTOP
+ COMMON /CONRA3/ IREC
+ COMMON /CONRA4/ NCP ,NCPSZ
+ COMMON /CONRA5/ NIT ,ITIPV
+ COMMON /CONRA6/ XST ,YST ,XED ,YED ,
+ 1 STPSZ ,IGRAD ,IG ,XRG ,
+ 2 YRG ,BORD ,PXST ,PYST ,
+ 3 PXED ,PYED ,ITICK
+ COMMON /CONRA7/ TITLE ,ICNT ,ITLSIZ
+ COMMON /CONRA8/ IHIGH ,INMAJ ,INLAB ,INDAT ,
+ 1 LEN ,IFMT ,LEND ,
+ 2 IFMTD ,ISIZEP ,INMIN
+ COMMON /CONRA9/ ICOORD(500),NP ,MXXY ,TR ,
+ 1 BR ,TL ,BL ,CONV ,
+ 2 XN ,YN ,ITLL ,IBLL ,
+ 3 ITRL ,IBRL ,XC ,YC ,
+ 4 ITLOC(210) ,JX ,JY ,ILOC ,
+ 5 ISHFCT ,XO ,YO ,IOC ,NC
+ COMMON /CONR10/ NT ,NL ,NTNL ,JWIPT ,
+ 1 JWIWL ,JWIWP ,JWIPL ,IPR ,
+ 2 ITPV
+ COMMON /CONR11/ NREP ,NCRT ,ISIZEL ,
+ 1 MINGAP ,ISIZEM ,
+ 2 TENS
+ COMMON /CONR12/ IXMAX ,IYMAX ,XMAX ,YMAX
+ LOGICAL REPEAT ,EXTRAP ,PER ,MESS ,
+ 1 LOOK ,PLDVLS ,GRD ,LABON ,
+ 2 PMIMX ,FRADV ,EXTRI ,CINC ,
+ 3 TITLE ,LISTOP ,CHILO ,CON
+ COMMON /CONR13/XVS(50),YVS(50),ICOUNT,SPVAL,SHIELD,
+ 1 SLDPLT
+ LOGICAL SHIELD,SLDPLT
+ COMMON /CONR14/LINEAR
+ LOGICAL LINEAR
+ COMMON /CONR15/ ISTRNG
+ CHARACTER*64 ISTRNG
+ COMMON /CONR16/ FORM
+ CHARACTER*10 FORM
+ COMMON /CONR17/ NDASH, IDASH, EDASH
+ CHARACTER*10 NDASH, IDASH, EDASH
+ COMMON /RANINT/ IRANMJ, IRANMN, IRANTX
+ INTEGER OPLASF, OTXASF, LASF(13), OCOLI, OTEXCI
+ SAVE
+C
+C
+C+NOAO - Variable LNGTHS not used.
+C DATA LNGTHS(1),LNGTHS(2),LNGTHS(3),LNGTHS(4)/13,4,21,6/
+C-NOAO
+C
+C ICONV CONVERT FORM 0-32767 TO 1-1024
+C
+ DATA ICONV/32/
+C
+C IABOVE AMOUNT TITLE IS PLACED ABOVE PLOT
+C IBELOW, IBEL2 AMOUNT MESSAGE IS BELOW PLOT
+C
+C DATA IABOVE,IBELOW,IBEL2/30,-30,-45/
+C
+C + NOAO - Label placement is improved by changed these values. Also,
+C call the run time initialization subroutine, conbdn.
+C
+ iabove = 30
+ ibelow = -15
+ ibel2 = -30
+ call conbdn
+C - NOAO
+C
+C THE FOLLOWING CALL IS FOR MONOTORING LIBRARY USE AT NCAR
+C
+ CALL Q8QST4 ('NSSL','CONRAN','CONRAN','VERSION 01')
+C
+C LIST THE OPTION VALUES IF REQUESTED
+C
+ IF (LISTOP) CALL CONOUT (2)
+C
+C SET SWITCH TO MAP TRIANGLES, IN CONLOC, FOR QUICK SEARCHES
+C
+ NIT = 0
+C
+C TEST TO SEE IF ENOUGH INPUT DATA
+C
+ IF (NDP.GE.NCP) GO TO 10
+ CALL SETER (' CONRAN - INPUT PARAMETER NDP LESS THAN NCP',1,
+ 1 IREC)
+ RETURN
+C
+ 10 IF (NCPSZ.GE.NCP .AND. NCP.GE.2) GO TO 20
+ CALL SETER (' CONRAN - NCP LT 2 OR GT NCPSZ',2,IREC)
+C
+ 20 IWK(1) = NDP
+ IWK(2) = NCP
+ IWK(3) = 1
+C
+C SET POLYLINE COLOR ASF TO INDIVIDUAL
+C
+ CALL GQASF(IERR,LASF)
+ OPLASF = LASF(3)
+ LASF(3) = 1
+ OTXASF = LASF(10)
+ LASF(10) = 1
+ CALL GSASF(LASF)
+C
+C INQUIRE CURRENT POLYLINE AND TEXT COLOR
+C
+ CALL GQPLCI(IERR,OCOLI)
+ CALL GQTXCI(IERR,OTEXCI)
+C
+C SET POLYLINE AND TEXT COLOR TO VALUE IN COMMON
+C
+ CALL GSPLCI(IRANMJ)
+ CALL GSTXCI(IRANTX)
+C
+C CONSTRUCTION OF WORK SPACE POINTERS
+C
+C TRIANGLE POINT NUMBERS
+C
+ JWIPT = 16
+C
+C SCRATCH SPACE
+C
+ JWIWL = 6*NDP + 1
+C
+C END POINTS OF BORDER LINE SEGMENTS AND TRIANGLE NUMBER
+C
+ JWIPL = 24*NDP + 1
+C
+C POINT NUMBERS WHERE THE NCP DATA POINTS AROUND EACH POINT
+C
+ JWIPC = 27*NDP + 1
+C
+C SCRATCH SPACE
+C
+ JWIWP = 30*NDP + 1
+C
+C PARTIAL DERIVATIVES AT EACH DATA POINT
+C
+ IPR = 8*NDP + 1
+C
+C TEST IF REPEAT (JUST NEW CONTOURS OF INTERPOLATED DATA)
+C OR NO REPEAT (TRIANGULATE AND CONTOUR)
+C
+ IF (REPEAT) GO TO 30
+C
+C TRIANGULATES THE X-Y PLANE.
+C
+ CALL CONTNG (NDP,XD,YD,NT,IWK(JWIPT),NL,IWK(JWIPL),IWK(JWIWL),
+ 1 IWK(JWIWP),WK)
+ IF (NERRO(ITEMP).NE.0) RETURN
+C
+ IWK(5) = NT
+ IWK(6) = NL
+ NTNL = NT+NL
+C
+C SKIP IF NOT LINEAR INTERPOLATION
+C
+ IF (.NOT.LINEAR) GO TO 25
+C
+C FIND THE COEFICENTS FOR LINER INTERPOLATION OF EACH TRIANGLE
+C
+ CALL CONLIN(XD,YD,ZD,NT,IWK(JWIPT),WK(IPR))
+ GO TO 35
+C
+C
+C DETERMINES NCP POINTS CLOSEST TO EACH DATA POINT.
+C
+ 25 CALL CONDET (NDP,XD,YD,NCP,IWK(JWIPC))
+C
+C ESTIMATE THE PARTIAL DERIVATIVES AT ALL DATA POINTS
+C
+ CALL CONINT (NDP,XD,YD,ZD,NCP,IWK(JWIPC),WK(IPR))
+C
+C VERIFY DATA VALUES VALID
+C
+ 30 NT = IWK(5)
+ NL = IWK(6)
+ NTNL = NT+NL
+C
+C COMPUTE STEP SIZE FOR CONTOURING
+C
+ 35 CALL CONSTP (XD,YD,NDP)
+C
+C SAVE ORIGINAL WINDOW, VIEWPORT OF TRANSFORMATION 1, AND ORIGINAL
+C LOG SCALING FLAG.
+C
+ CALL GQCNTN(IER,IOLDNT)
+ CALL GQNT(IOLDNT,IER,WIND,VIEW)
+ RX1 = VIEW(1)
+ RX2 = VIEW(2)
+ RY1 = VIEW(3)
+ RY2 = VIEW(4)
+C SAVE NORMALIZATION TRANSFORMATION 1
+ CALL GQNT(1,IER,WIND,VIEW)
+ CALL GETUSV('LS',IOLLS)
+C
+C DETERMINE SCALING OPTION
+C
+ ISC = ISCALE+1
+ GO TO ( 40, 60, 50),ISC
+C
+C CONRAN SETS SCALING FACTOR
+C
+ 40 CALL SET(PXST,PXED,PYST,PYED,XST,XED,YST,YED,1)
+ GO TO 60
+C
+C CONRAN PLOTS WITHIN USERS BOUNDARIES
+C
+ 50 CALL SET(RX1,RX2,RY1,RY2,XST,XED,YST,YED,1)
+C
+C IF TRIANGULATION PLOT ONLY BRANCH
+C
+ 60 IF (EXTRI) GO TO 390
+C
+C GENERATE CONTOURS IF NONE SUPPLIED BY USER
+C
+ CALL CONCLS (ZD,NDP)
+ IF (NERRO(ITEMP).NE.0) RETURN
+C
+C REORDER THE CONTOUR LINES FOR CORRECT PATTERN DISPLAY
+C
+ MAJLNS = 0
+ IF (LABON) CALL CONREO (MAJLNS)
+C
+C MAKE SURE INTEGER COORDINATES IN 1-1024 RANGE
+C
+ CALL SETUSV('XF',10)
+ CALL SETUSV('YF',10)
+C
+C SET THE DASH PATTERNS TO DEFAULT IF THEY HAVE NOT BEEN SET
+C
+C
+ IF (IDASH(1:1).NE.' ') GO TO 80
+C
+C SET POSITIVE CONTOUR VALUE TO DEFAULT
+C
+ IDASH = '$$$$$$$$$$'
+ 80 IF (NDASH(1:1).NE.' ') GO TO 100
+C
+C SET NEGATIVE CONTOUR DASH PATTERN TO DEFAULT
+C
+ NDASH = '$$$$$$$$$$'
+ 100 IF (EDASH(1:1).NE.' ') GO TO 120
+C
+C SET EQUAL CONTOUR DASH PATTERN TO DEFAULT
+C
+ EDASH = '$$$$$$$$$$'
+C
+C INITIALIZE THE CONTOURING DATA STRUCTURE
+C
+ 120 IF (.NOT.EXTRAP) YST = YST+STPSZ
+C
+C LOAD THE SCRATCH SPACE
+C
+ CALL CONLOD (XD,YD,ZD,NDP,WK,IWK,SCRARR)
+C
+C PERFORM SHIELDING IF SO REQUESTED
+C
+ IF (SHIELD) CALL CONSLD(SCRARR)
+C
+C *******************************************************
+C * *
+C * IF THE USER NEEDS TO DIVIDE THE PROGRAM UP *
+C * THIS IS THE BREAK POINT. ALL SUBROUTINES CALLED *
+C * PRIOR TO THIS MESSAGE ARE NOT USED AGAIN AND *
+C * ALL ROUTINES AFTER THIS MESSAGE ARE NOT USED *
+C * ANY EARLIER. NOTE THIS ONLY REFEARS TO ENTRY POINTS*
+C * WHICH ARE PART OF THE CONRAN PACKAGE. *
+C * ALL DATA STRUCTURES AND VARIABLES MUST BE RETAINED. *
+C *******************************************************
+C
+C
+C PLOT RELATIVE MINIMUMS AND MAXIMUMS IF REQUESTED
+C
+ IF (PMIMX) CALL CONPMM (SCRARR)
+C
+C
+ LENDAS = NREP*10
+C
+C SET THE ERROR MODE TO RECOVERY FOR THE CONTOURING STORAGE ERROR
+C
+ CALL ENTSR (IROLD,1)
+C
+C DRAW THE CONTOURS
+C
+ DO 250 I=1,NCL
+C
+ CONV = CL(I)
+ IF (CONV.GE.BPSIZ) GO TO 150
+C
+C SET UP NEGATIVE CONTOUR PATTERN
+C
+ DO 140 J=1,10
+ ICHAR = NDASH(J:J)
+ DO 130 K=1,NREP
+ DPAT( J+( 10*(K-1) ): J+( 10*(K-1)) ) = ICHAR
+ 130 CONTINUE
+ 140 CONTINUE
+ GO TO 210
+C
+C SET UP POSITIVE CONTOUR DASH PATTERN
+C
+ 150 IF (CONV.EQ.BPSIZ) GO TO 180
+ DO 170 J=1,10
+ ICHAR = IDASH(J:J)
+ DO 160 K=1,NREP
+ DPAT( J+( 10*(K-1) ): J+( 10*(K-1)) ) = ICHAR
+ 160 CONTINUE
+ 170 CONTINUE
+ GO TO 210
+C
+C SET UP EQUAL CONTOUR DASH PATTERN
+C
+ 180 DO 200 J=1,10
+ ICHAR = EDASH(J:J)
+ DO 190 K=1,NREP
+ DPAT( J+( 10*(K-1) ): J+( 10*(K-1)) ) = ICHAR
+ 190 CONTINUE
+ 200 CONTINUE
+C
+ 210 IF (I.GT.MAJLNS) GO TO 230
+C
+C SET UP MAJOR LINES
+C
+ CALL GSPLCI (IRANMJ)
+ CALL CONECD (CONV,IWORK,NCUSED)
+ NCHAR = LENDAS + NCUSED
+ DPAT(LENDAS+1:NCHAR) = IWORK(1:NCUSED)
+ GO TO 240
+C
+C SET UP MINOR LINES
+C
+ 230 NCHAR = 10
+ CALL GSPLCI (IRANMN)
+C
+C PROCESS FOR ALL CONTOURS
+C
+ 240 CALL DASHDC (DPAT(1:NCHAR),NCRT,ISIZEL)
+C
+C DRAW ALL CONTOURS AT THIS LEVEL
+C
+ CALL CONDRW (SCRARR)
+C
+C GET NEXT CONTOUR LEVEL
+C
+ 250 CONTINUE
+C
+C CONTOURING COMPLETED CHECK FOR OPTIONAL OUTPUTS ON PLOT
+C
+C FIRST SET ERROR MODE BACK TO USERS VALUE
+C
+ CALL RETSR (IROLD)
+C
+C GET PLOT BOUNDRIES FOR TITLING AND MESSAGE POSITIONING
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GQNT(ICN,IER,NWIND,NVIEW)
+ XST = NWIND(1)
+ XED = NWIND(2)
+ YST = NWIND(3)
+ YED = NWIND(4)
+ CALL GETUSV('LS',LT)
+C
+C RESET POLYLINE COLOR INDEX TO MAJOR (NORMAL)
+C
+ CALL GSPLCI (IRANMJ)
+C
+C DRAW SHIELD ON PLOT IF REQUESTED
+C
+ IF(SLDPLT.AND.SHIELD) CALL CONDSD
+C
+C DRAW PERIMETER ARROUND PLOT IF DESIRED
+C
+ IF (PER) CALL PERIM (ITICK,0,ITICK,0)
+C
+C DRAW GRID IF REQUESTED
+C
+ IF (GRD) CALL GRID (ITICK,0,ITICK,0)
+C
+C PLOT THE DATA VALUES IF REQUESTED
+C
+ IF (.NOT.PLDVLS) GO TO 260
+ CALL CONPDV (XD,YD,ZD,NDP)
+C
+C OUTPUT TITLE IF REQUESTED
+C
+ 260 IF (.NOT.TITLE) GO TO 270
+ CALL GSTXCI (IRANTX)
+ CALL FL2INT (XED,YED,MX,MY)
+ MY = (MY/ICONV)+IABOVE
+ ILAST = 64
+ DO 261 I = 64,1,-1
+ IF (ISTRNG(I:I) .NE. ' ')THEN
+ ILAST = I + 1
+ GOTO 262
+ ENDIF
+ 261 CONTINUE
+ 262 CONTINUE
+C
+C POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GSELNT(0)
+ XC = ( NVIEW(1) + NVIEW(2)) / 2.
+ YC = CPUY(MY)
+ CALL WTSTR(XC,YC,ISTRNG(1:ILAST),ITLSIZ,0,0)
+ CALL GSELNT(ICN)
+C
+C
+C OUTPUT MESSAGE IF REQUESTED
+C
+ 270 IF (.NOT.MESS) GO TO 390
+C
+ CALL GSTXCI(IRANTX)
+ CALL FL2INT (XST,YST,MX,MY)
+ MY = (MY/ICONV)
+C
+C IF PERIMETER OR GRID PUT OUT TICK INTERVAL
+C
+ IMSZ = 0
+ IF (.NOT.PER .AND. .NOT.GRD) GO TO 300
+ IWORK(1:36) = 'X INTERVAL= Y INTERVAL='
+C
+C +NOAO - FTN internal writes rewritten as calls to encode.
+C WRITE(ENCSCR,'(G13.5)')XRG
+C WRITE(ENSCRY,'(G13.5)')YRG
+ call encode (13, '(f13.5)', encscr, xrg)
+ call encode (13, '(f13.5)', enscry, yrg)
+C -NOAO
+ IWORK(12:24) = ENCSCR
+ IWORK(37:49) = ENSCRY
+ IMSZ = 50
+ 300 IF (SCALE .EQ. 1.) GOTO 330
+ IWORK(IMSZ:IMSZ+10) = ' SCALED BY '
+C +NOAO
+C WRITE(ENCSCR,'(G13.5)')SCALE
+ call encode (13, '(f13.5)', encscr, scale)
+C -NOAO
+ IWORK(IMSZ+11:IMSZ+23) = ENCSCR
+ IMSZ = 73
+ 330 IF (IMSZ .NE. 0) THEN
+ ILAST = IMSZ
+ DO 291 I = IMSZ,1,-1
+ IF (IWORK(I:I) .NE. ' ')THEN
+ ILAST = I + 1
+ GOTO 292
+ ENDIF
+ 291 CONTINUE
+ 292 CONTINUE
+C
+C POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GSELNT(0)
+ XC = ( NVIEW(1) + NVIEW(2)) / 2.
+ YC = CPUY(MY+IBEL2)
+ CALL WTSTR(XC,YC,IWORK(1:ILAST),8,0,0)
+ CALL GSELNT(ICN)
+ ENDIF
+C
+C PRODUCE CONTOUR INFO
+C
+ IWORK(1:42) = 'CONTOUR FROM TO '
+ IWORK(43:77) = 'CONTOUR INTERVAL OF '
+ HOLD(1) = FLO
+ HOLD(2) = HI
+ HOLD(3) = FINC
+C
+C +NOAO
+C WRITE(ENCSCR,'(G13.5)')HOLD(1)
+ call encode (13, '(f13.5)', encscr, hold(1))
+ IWORK(13:25) = ENCSCR
+C WRITE(ENCSCR,'(G13.5)')HOLD(2)
+ call encode (13, '(f13.5)', encscr, hold(2))
+ IWORK(29:41) = ENCSCR
+C WRITE(ENCSCR,'(G13.5)')HOLD(3)
+ call encode (13, '(f13.5)', encscr, hold(3))
+ IWORK(62:74) = ENCSCR
+C -NOAO
+C
+C IF IRREGULAR SPACED CONTOURS MODIFY CONTOUR INTERVAL STATEMENT
+C
+ IF (FINC.GE.0.) GO TO 380
+ NC = 62
+ IWORK(NC:NC+15) = ' IRREGULAR '
+C
+ ILAST = 77
+ 380 DO 381 I = 77,1,-1
+ IF (IWORK(I:I) .NE. ' ')THEN
+ ILAST = I + 1
+ GOTO 382
+ ENDIF
+ 381 CONTINUE
+ 382 CONTINUE
+C
+C POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GSELNT(0)
+ XC = ( NVIEW(1) + NVIEW(2)) / 2.
+ YC = CPUY(MY+IBELOW)
+ CALL WTSTR(XC,YC,IWORK(1:ILAST),8,0,0)
+ CALL GSELNT(ICN)
+C
+C
+C
+C PLOT TRIANGLES IF REQUESTED
+C
+ 390 IF (LOOK) THEN
+ CALL GSPLCI(IRANMN)
+ CALL CONTLK (XD,YD,NDP,IWK(JWIPT))
+ CALL GSPLCI(IRANMJ)
+ ENDIF
+C RESTORE NORMALIZATION TRANSFORMATION 1 AND LOG SCALING
+ IF (ISCALE .NE. 1) THEN
+ CALL SET(VIEW(1),VIEW(2),VIEW(3),VIEW(4),
+ - WIND(1),WIND(2),WIND(3),WIND(4),IOLLS)
+ ENDIF
+C RESTORE ORIGINAL NORMALIZATION TRANSFORMATION NUMBER
+ CALL GSELNT (IOLDNT)
+C
+C RESTORE ORIGINAL COLOR
+C
+ CALL GSPLCI(OCOLI)
+ CALL GSTXCI(OTEXCI)
+C
+C RESTORE POLYLINE COLOR ASF TO WHAT IT WAS ON ENTRY TO GRIDAL
+C
+ LASF(10) = OTXASF
+ LASF(3) = OPLASF
+ CALL GSASF(LASF)
+ RETURN
+ END
+ SUBROUTINE CONPMM (SCRARR)
+C
+C THIS ROUTINE FINDS RELATIVE MINIMUMS AND MAXIMUMS. A RELATIVE MINIMUM
+C (OR MAXIMUM) IS DEFINED TO BE THE LOWEST (OR HIGHEST) POINT WITHIN
+C A CERTAIN NEIGHBORHOOD OF THE POINT. THE NEIGHBORHOOD USED HERE
+C IS + OR - IXRG IN THE X DIRECTION AND + OR - IYRG IN THE Y DIRECTION.
+C
+C
+C
+ COMMON /CONRA1/ CL(30) ,NCL ,OLDZ ,PV(210) ,
+ 1 FINC ,HI ,FLO
+ COMMON /CONRA2/ REPEAT ,EXTRAP ,PER ,MESS ,
+ 1 ISCALE ,LOOK ,PLDVLS ,GRD ,
+ 2 CINC ,CHILO ,CON ,LABON ,
+ 3 PMIMX ,SCALE ,FRADV ,EXTRI ,
+ 4 BPSIZ ,LISTOP
+ COMMON /CONRA3/ IREC
+ COMMON /CONRA4/ NCP ,NCPSZ
+ COMMON /CONRA5/ NIT ,ITIPV
+ COMMON /CONRA6/ XST ,YST ,XED ,YED ,
+ 1 STPSZ ,IGRAD ,IG ,XRG ,
+ 2 YRG ,BORD ,PXST ,PYST ,
+ 3 PXED ,PYED ,ITICK
+ COMMON /CONRA7/ TITLE ,ICNT ,ITLSIZ
+ COMMON /CONRA8/ IHIGH ,INMAJ ,INLAB ,INDAT ,
+ 1 LEN ,IFMT ,LEND ,
+ 2 IFMTD ,ISIZEP ,INMIN
+ COMMON /CONRA9/ ICOORD(500),NP ,MXXY ,TR ,
+ 1 BR ,TL ,BL ,CONV ,
+ 2 XN ,YN ,ITLL ,IBLL ,
+ 3 ITRL ,IBRL ,XC ,YC ,
+ 4 ITLOC(210) ,JX ,JY ,ILOC ,
+ 5 ISHFCT ,XO ,YO ,IOC ,NC
+ COMMON /CONR10/ NT ,NL ,NTNL ,JWIPT ,
+ 1 JWIWL ,JWIWP ,JWIPL ,IPR ,
+ 2 ITPV
+ COMMON /CONR11/ NREP ,NCRT ,ISIZEL ,
+ 1 MINGAP ,ISIZEM ,
+ 2 TENS
+ COMMON /CONR12/ IXMAX ,IYMAX ,XMAX ,YMAX
+ LOGICAL REPEAT ,EXTRAP ,PER ,MESS ,
+ 1 LOOK ,PLDVLS ,GRD ,LABON ,
+ 2 PMIMX ,FRADV ,EXTRI ,CINC ,
+ 3 TITLE ,LISTOP ,CHILO ,CON
+ COMMON /CONR15/ ISTRNG
+ CHARACTER*64 ISTRNG
+ COMMON /CONR16/ FORM
+ CHARACTER*10 FORM
+ COMMON /CONR17/ NDASH, IDASH, EDASH
+ CHARACTER*10 NDASH, IDASH, EDASH
+C
+C
+C
+ DIMENSION SCRARR(*)
+ CHARACTER*10 IA
+ SAVE
+C
+C CONVERT FROM 0-32767 TO 1-1024
+C
+ DATA ICONV/32/
+C
+C ACCESSING FUNCTION INTO SCRARR
+C
+ SCRTCH(IXX,IYY) = SCRARR(IYY+(IXX-1)*IYMAX)
+C
+C GRAPHICS MAPPING FUNCTIONS
+C
+ FX(XXX,YYY) = XXX
+ FY(XXX,YYY) = YYY
+C
+C MAPPING FROM INTEGER TO USER INPUT FLOATING POINT
+C
+ CONVX(IXX) = XST + FLOAT(IXX-1)*STPSZ
+ CONVY(IYY) = YST + FLOAT(IYY-1)*STPSZ
+C
+C SET INTENSITY TO HIGH
+C
+ IF (INDAT .NE. 1) THEN
+ CALL GSTXCI (INDAT)
+ ELSE
+ CALL GSTXCI (IRANTX)
+ ENDIF
+C
+C COMPUTE THE SEARCH RANGE FOR MIN AND MAX DETERMINATION
+C
+ IXRG = MIN0(15,MAX0(2,IFIX(FLOAT(IXMAX)/8.)))
+ IYRG = MIN0(15,MAX0(2,IFIX(FLOAT(IYMAX)/8.)))
+C
+C LOOP THROUGH ALL ROWS OF THE DATA SEARCHING FOR AN IMMEDIATE MIN OR
+C MAX.
+C
+ IX = 1
+C
+C SCAN A ROW
+C
+C IF EXTRAPOLATING DONT LIMIT ROW SCANS
+C
+ 10 IF (.NOT.EXTRAP) GO TO 20
+ IYST = 1
+ IYED = IYMAX
+ IY = 1
+ GO TO 30
+C
+C NOT EXTRAPOLATING STAY IN HULL BOUNDRIES
+C
+ 20 IYST = ITLOC(IX*2-1)
+ IYED = ITLOC(IX*2)
+ IF (IYST.EQ.0) GO TO 240
+ IY = IYST
+ 30 VAL = SCRTCH(IX,IY)
+C
+C SEARCH FOR A MIN
+C
+C
+C BRANCH IF NOT FIRST ON A ROW
+C
+ IF (IY.NE.IYST) GO TO 40
+ IF (VAL.GE.SCRTCH(IX,IY+1)) GO TO 130
+ IF (VAL.GE.SCRTCH(IX,IY+2)) GO TO 130
+ GO TO 60
+C
+C BRANCH IF NOT LAST ON ROW
+C
+ 40 IF (IY.NE.IYED) GO TO 50
+ IF (VAL.GE.SCRTCH(IX,IY-1)) GO TO 140
+ IF (VAL.GE.SCRTCH(IX,IY-2)) GO TO 140
+ GO TO 60
+C
+C IN MIDDLE OF ROW
+C
+ 50 IF (VAL.GE.SCRTCH(IX,IY+1)) GO TO 150
+ IF (VAL.GE.SCRTCH(IX,IY-1)) GO TO 150
+C
+C POSSIBLE MIN FOUND SEARCH NEIGHBORHOOD
+C
+ 60 IXST = MAX0(1,IX-IXRG)
+ IXSTOP = MIN0(IXMAX,IX+IXRG)
+C
+C IF NOT EXTRAPOLATING BRANCH
+C
+ 70 IF (.NOT.EXTRAP) GO TO 80
+ IYSRS = 1
+ IYSRE = IYMAX
+ GO TO 90
+C
+C NOT EXTRAPOLATING STAY IN CONVEX HULL
+C
+ 80 IYSRS = ITLOC(IXST*2-1)
+ IYSRE = ITLOC(IXST*2)
+ IF (IYSRS.EQ.0) GO TO 120
+C
+ 90 IYSRS = MAX0(IYSRS,IY-IYRG)
+ IYSRE = MIN0(IYSRE,IY+IYRG)
+C
+ 100 CUR = SCRTCH(IXST,IYSRS)
+ IF (VAL.LT.CUR) GO TO 110
+ IF (VAL.GT.CUR) GO TO 230
+ IF (IX.EQ.IXST .AND. IY.EQ.IYSRS) GO TO 110
+ GO TO 230
+C
+C SUCCESS SO FAR TRY NEXT SPACE
+C
+ 110 IYSRS = IYSRS+1
+ IF (IYSRS.LE.IYSRE) GO TO 100
+ 120 IXST = IXST+1
+ IF (IXST.LE.IXSTOP) GO TO 70
+C
+C SUCCESS, WE HAVE FOUND A RELATIVE MIN
+C
+ X = CONVX(IX)
+ Y = CONVY(IY)
+ X1 = FX(X,Y)
+ CALL FL2INT (X1,FY(X,Y),MX,MY)
+ MX = MX/ICONV
+ MY = MY/ICONV
+C
+C POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GSELNT(0)
+ XC = CPUX(MX)
+ YC = CPUY(MY)
+ CALL WTSTR(XC,YC,'L',ISIZEM,0,0)
+ CALL GSELNT(ICN)
+C
+ CALL CONECD (VAL,IA,NC)
+ MY = MY - 2*ISIZEM
+C
+C POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GSELNT(0)
+ YC = CPUY(MY)
+ CALL WTSTR(XC,YC,IA(1:NC),ISIZEM,0,0)
+ CALL GSELNT(ICN)
+C
+ GO TO 230
+C
+C SEARCH FOR A LOCAL MAXIMUM
+C
+C IF FIRST LOC ON A ROW
+C
+ 130 IF (VAL.LE.SCRTCH(IX,IY+1)) GO TO 230
+ IF (VAL.LE.SCRTCH(IX,IY+2)) GO TO 230
+ GO TO 160
+C
+C IF LAST ON ROW
+C
+ 140 IF (VAL.LE.SCRTCH(IX,IY-1)) GO TO 230
+ IF (VAL.LE.SCRTCH(IX,IY-2)) GO TO 230
+ GO TO 160
+C
+C IN MIDDLE OF ROW
+C
+ 150 IF (VAL.LE.SCRTCH(IX,IY+1)) GO TO 230
+ IF (VAL.LE.SCRTCH(IX,IY-1)) GO TO 230
+C
+C POSSIBLE MIN FOUND SEARCH NEIGHBORHOOD
+C
+ 160 IXST = MAX0(1,IX-IXRG)
+ IXSTOP = MIN0(IXMAX,IX+IXRG)
+ 170 IF (.NOT.EXTRAP) GO TO 180
+ IYSRS = 1
+ IYSRE = IYMAX
+ GO TO 190
+C
+C NOT EXTRAPOLATING STAY IN CONVEX HULL
+C
+ 180 IYSRS = ITLOC(IXST*2-1)
+ IYSRE = ITLOC(IXST*2)
+ IF (IYSRS.EQ.0) GO TO 220
+C
+ 190 IYSRS = MAX0(IYSRS,IY-IYRG)
+ IYSRE = MIN0(IYSRE,IY+IYRG)
+C
+ 200 CUR = SCRTCH(IXST,IYSRS)
+ IF (VAL.GT.CUR) GO TO 210
+ IF (VAL.LT.CUR) GO TO 230
+ IF (IX.EQ.IXST .AND. IY.EQ.IYSRS) GO TO 210
+ GO TO 230
+C
+C SUCCESS SO FAR TRY NEXT SPACE
+C
+ 210 IYSRS = IYSRS+1
+ IF (IYSRS.LE.IYSRE) GO TO 200
+ 220 IXST = IXST+1
+ IF (IXST.LE.IXSTOP) GO TO 170
+C
+C SUCCESS WE HAVE A MAXIMUM
+C
+ X = CONVX(IX)
+ Y = CONVY(IY)
+ X1 = FX(X,Y)
+ CALL FL2INT (X1,FY(X,Y),MX,MY)
+ MX = MX/ICONV
+ MY = MY/ICONV
+C
+C POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GSELNT(0)
+ XC = CPUX(MX)
+ YC = CPUY(MY)
+ CALL WTSTR(XC,YC,'H',ISIZEM,0,0)
+ CALL GSELNT(ICN)
+C
+ CALL CONECD (VAL,IA,NC)
+ MY = MY - 2*ISIZEM
+C
+C POSITION STRINGS PROPERLY IF COORDS ARE IN PAU'S
+C
+ CALL GQCNTN(IER,ICN)
+ CALL GSELNT(0)
+ YC = CPUY(MY)
+ CALL WTSTR(XC,YC,IA(1:NC),ISIZEM,0,0)
+ CALL GSELNT(ICN)
+C
+C END OF SEARCH AT THIS LOCATION TRY NEXT
+C
+ 230 IY = IY+1
+ IF (IY.LE.IYED) GO TO 30
+ 240 IX = IX+1
+ IF (IX.LE.IXMAX) GO TO 10
+C
+ CALL GSTXCI (IRANTX)
+C
+ RETURN
+C
+C******************************************************************
+C* *
+C* REVISION HISTORY *
+C* *
+C* JUNE 1980 ADDED CONRAN TO ULIB *
+C* AUGUST 1980 CHANGED ACCESS CARD DOCUMENTATION *
+C* DECEMBER 1980 MODIFIED COMMENT CARD DOCUMENTATION *
+C* MARCH 1983 ADDED ASPECT RATIO ERROR *
+C* JULY 1983 ADDED SHIELDING AND LINEAR INTERPOLATION *
+C* REMOVED 7600 ACCESS CARDS *
+C* JULY 1984 CONVERTED TO STANDARD FORTRAN77 AND GKS *
+C* *
+C******************************************************************
+C
+ END