diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /sys/gio/ncarutil/conran.f | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'sys/gio/ncarutil/conran.f')
-rw-r--r-- | sys/gio/ncarutil/conran.f | 1976 |
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 |