Conpack_params(3NCARG)

πŸŽ€ Conpack_params πŸŽ€

okay bestie, welcome to NCAR GRAPHICS β€” this is the 3NCARG manual, and today's main character is Conpack_params. grab a strawberry πŸ“ drink and let's get into it.


✨ NAME ✨

Conpack_params β€” this doc gives you the quick lowdown on every single Conpack internal parameter. all of them. no skips. πŸ’…


✨ DESCRIPTION ✨

okay so the parameter descriptions come at you in alphabetical order, bestie. and here's the format tea: each description opens with a line that gives you

  • the three-character mnemonic name of the parameter,
  • the phrase that mnemonic actually stands for,
  • the intrinsic type of the parameter,
  • and whether or not it's an array. πŸ¦‹

🩷 'AIA' β€” Area Identifier Above β€” Integer Array

each element of the parameter array 'AIA' is an area identifier for the area above the contour level specified by the corresponding element of the parameter array 'CLV'. the corresponding element of the parameter array 'AIB' is an area identifier for the area below that level. if, for a particular contour level, both 'AIA' and 'AIB' are zero, that level is ignored by the routine CPCLAM; otherwise, contour lines at that level are added to the area map and the given values of 'AIA' and 'AIB' are used as right and left area identifiers, respectively. (note that contour lines are traced with greater values to the right and lesser values to the left.)

there are three special elements in the parameter array 'AIA', corresponding to 'PAI' values of -1, -2, and -3; the first specifies an area identifier for the area outside the edge of the grid, the second an area identifier for any area filled with special values, and the third an area identifier for any area in which the mapping routine CPMPXY returns the "out of range" value 'ORV'. ✨

if contour levels are chosen automatically, rather than being supplied by the user, the value supplied for the Ith element of 'AIA' is I+1 and the value supplied for the Ith element of 'AIB' is I.

the default value of element "-1" of 'AIA' is 0 and the default values of elements "-2" and "-3" are -1's. 🫢


🩷 'AIB' β€” Area Identifier Below β€” Integer Array

see the description of 'AIA', above. that's it, that's the whole vibe. πŸ‘‘


🩷 'CAF' β€” Cell Array Flag β€” Integer

the parameter 'CAF' decides the way in which the routine CPCICA (which is called to store color indices in a user cell array), gets from an area identifier associated with a particular cell to a color index for that cell. let IAID be the area identifier that is associated with a given cell. then:

  • if 'CAF' is negative, the routine CPSCAE is called. the default version of CPSCAE behaves as follows: if the value of IAID is greater than or equal to zero, it itself is stored in the cell array as a color index; otherwise, the cell array is unchanged. a user version of CPSCAE may be supplied to do something more complicated; since the value of 'CAF' is one of the arguments of CPSCAE, its value may be used to select one of a number of color-setting schemes built into the routine.
  • if 'CAF' is positive, the value "'CAF'+IAID" is computed. if that value is positive, it is stored in the cell array as a color index; otherwise, the cell array is unchanged. in this case, 'CAF' acts as an offset, mapping the area identifiers to a unique portion of the color table.

the default value of 'CAF' is 0.


🩷 'CFA' β€” Constant-Field Label Angle β€” Real

the parameter 'CFA' specifies the angle (in degrees counterclockwise from a vector pointing to the right) at which a constant-field label is to be written. πŸ“

the default value of 'CFA' is 0.


🩷 'CFB' β€” Constant-Field Label Box Flag β€” Integer

  • if 'CFB' is 0, the constant-field label will not be boxed at all.
  • the value 1 implies that the perimeter of the box is to be drawn (in the same color as the label) after the label is drawn.
  • the value 2 implies that the box is to be filled (in the color specified by 'LBC') before the label is drawn.
  • the value 3 implies both of the above.

the default value of 'CFB' is 0.


🩷 'CFC' β€” Constant-Field Label Color Index β€” Integer

if 'CFC' is less than zero, the constant-field label and the box, if any, around it, will be drawn in the color specified by the current text color index; if 'CFC' is greater than or equal to zero, then it specifies the desired color index for the label and the box. if a box is drawn around the label, it is made the same color as the label itself. matchy matchy, we love to see it. πŸ’…

the default value of 'CFC' is -1.


🩷 'CFF' β€” Constant-Field-Found Flag β€” Integer

the parameter 'CFF' may not be set by the user; its retrieved value will be non-zero if and only if CPRECT, CPSPS1, or CPSPS2 detected a constant field. πŸ•΅οΈβ™€οΈ

the default value of 'CFF' (prior to any call to CPRECT, CPSPS1, or CPSPS2) is 0.


🩷 'CFL' β€” Constant-Field Label Line Width β€” Real

if 'CFL' is less than or equal to zero, line width will not be set before drawing a box around the constant-field label. if 'CFL' is greater than zero, it specifies the desired width, as a multiple of the "normal" line width.

the default value of 'CFL' is 0.


🩷 'CFP' β€” Constant-Field Label Positioning Flag β€” Integer

the parameter 'CFP' says how the constant-field label is to be positioned. there are nine possible values, each of which specifies a point of the label box which is to lie on the point defined by 'CFX' and 'CFY':

  • -4 implies the lower left-hand corner of the label box
  • -3 implies the center of the bottom of the box
  • -2 implies the lower right-hand corner of the box
  • -1 implies the center of the left edge of the box
  • 0 implies the center of the box
  • +1 implies the center of the right edge of the box
  • +2 implies the upper left-hand corner of the box
  • +3 implies the center of the top edge of the box
  • +4 implies the upper right-hand corner of the box

left, right, bottom, and top are defined from the viewpoint of someone viewing the label right-side up. (not me flipping labels upside down, couldn't be me πŸ™ˆ)

the default value of 'CFP' is 0, so the constant-field label will be centered on the point whose coordinates are 'CFX' and 'CFY'.


🩷 'CFS' β€” Constant-Field Label Size β€” Real

the parameter 'CFS' specifies the nominal size (width) of a character in the constant-field label, as a fraction of the width of the viewport. this nominal size is multiplied by 'CWM'. βœ–οΈ

the default value of 'CFS' is 0.012.


🩷 'CFT' β€” Constant-Field Label Text String β€” Character

the parameter 'CFT' specifies the text of the constant-field label, which is written when a constant data field is detected; it is a character string of at most 40 characters. the embedded string '$ZDV$' will be replaced by the numeric value of the field. πŸ”’

if 'CFT' is given the value ' ' (a single blank), the constant-field label will not be written.

the default value of 'CFT' is 'CONSTANT FIELD - VALUE IS $ZDV$'.


🩷 'CFW' β€” Constant-Field Label White Space Width β€” Real

the parameter 'CFW' specifies the nominal width of white space to be left around the constant-field label, as a fraction of the width of the viewport. this nominal width is multiplied by 'CWM'.

the default value of 'CFW' is 0.005.


🩷 'CFX' β€” Constant-Field Label X Coordinate β€” Real

the parameter 'CFX' specifies the X coordinate of the basepoint of the constant-field label. the given value is mapped linearly onto the viewport; 0 refers to the left edge of the viewport and 1 to the right edge of the viewport. values less than 0 or greater than 1 may be used. πŸ‘€

the default value of 'CFX' is 0.5, so the constant-field label is centered horizontally in the viewport.


🩷 'CFY' β€” Constant-Field Label Y Coordinate β€” Real

the parameter 'CFY' specifies the Y coordinate of the basepoint of the constant-field label. the given value is mapped linearly onto the viewport; 0 refers to the bottom edge of the viewport and 1 to the top edge of the viewport. values less than 0 or greater than 1 may be used.

the default value of 'CFY' is 0.5, so the constant-field label is centered vertically in the viewport.


🩷 'CIS' β€” Contour Interval Specifier β€” Real

see the description of 'CLS', below. when 'CLS' is greater than zero, 'CIS' is used. a value of 'CIS' less than or equal to zero indicates that Conpack is to choose the contour interval (see the descriptions of the parameter arrays 'CIT' and 'LIT'). a value of 'CIS' which is greater than zero is the actual contour interval to be used; in this case, 'LIS' may be given a non-zero value "n" to specify that every "nth" contour level should be labeled. see also the descriptions of 'CMN' and 'CMX', below.

the default value of 'CIS' is 0.


🩷 'CIT' β€” Contour Interval Table β€” Real Array

each non-zero element of the ten-element parameter array 'CIT' is a real number greater than or equal to 1 and less than 10; when Conpack picks the contour interval, it chooses a number of the form "c x 10**k", where "c" is one of the elements of 'CIT' and "k" is an integer. the non-zero elements of 'CIT' must be sorted in ascending order and appear at the beginning of the array. πŸ“Š

the corresponding elements of the parameter array 'LIT' specify which contours are to be labeled. a contour at "nc x 10**k" is labeled if "n" is a multiple of "l", where "l" is the element of 'LIT' corresponding to the element "c" of 'CIT'. for example, if the first element of 'CIT' is "1." and the first element of 'LIT' is "5", then Conpack is allowed to use contour levels 1., 2., 3., 4., etc., with labels at 5., 10., 15., etc. (5 x 1., 5 x 2., 5 x 3., etc.).

the default contents of 'CIT' and 'LIT' are as follows:


bestie the table is literally right there in part 2, hold on, we are SO not done β€” more coming πŸ’–

okay bestie, picking up exactly where we left off πŸ’– β€” here's the rest of that 'CIT' lookup table, straight up, no edits, character for character:

              'PAI'   'CIT'   'LIT'   LEVELS ALLOWED   LABEL INTERVAL
              -----   -----   -----   --------------   --------------
                1      1.0      5     1.0 x 10 ** K    EVERY 5TH ONE
                2      2.0      5     2.0 x 10 ** K    EVERY 5TH ONE
                3      2.5      4     2.5 x 10 ** K    EVERY 4TH ONE
                4      4.0      5     4.0 x 10 ** K    EVERY 5TH ONE
                5      5.0      5     5.0 x 10 ** K    EVERY 5TH ONE
                6      0.0      0     FILLER TO END    FILLER TO END
                7      0.0      0     FILLER TO END    FILLER TO END
                8      0.0      0     FILLER TO END    FILLER TO END
                9      0.0      0     FILLER TO END    FILLER TO END
               10      0.0      0     FILLER TO END    FILLER TO END

Slots 1 through 5 are the ones actually doing the work, and slots 6 through 10 are literally just FILLER TO END β€” they exist, they take up space, they contribute nothing, and honestly? iconic behaviour. πŸ’…


πŸ’§ 'CIU' - Contour Interval Used - Real

okay so 'CIU' is normally a retrieval-only kind of parameter. When the selection of the contour interval is left up to Conpack, 'CIU' is simply given the value that got chosen. ✨

But when contour levels are completely set by the user, you may need to set 'CIU' too, and there are exactly two reasons why:

  1. to make the desired value appear in an informational label (it goes in place of the embedded string '$CIU$'), and
  2. so that it may be used by the penalty scheme for positioning labels.
⚠️ Order matters, bestie! Setting 'CIU' must be done after setting the contour levels, because β€” as a side effect of setting element 1 of 'CLV' β€” 'CIU' gets zeroed. not me finding that out the hard way 😭

And if the user supplies contour levels but supplies no value of 'CIU', and the penalty scheme is used to position labels, the required contour interval gets estimated. In certain situations this can lead to problems β€” if, for example, the same contour level appears twice in 'CLV', once to force lines at that level to be drawn and once to force that level to be used as the boundary for a shaded area. πŸ™ˆ

The default value of 'CIU' is 0.


🎨 'CLC' - Contour Line Color Index - Integer Array

Each element of the parameter array 'CLC', if it's greater than or equal to zero, is a color index for contour lines at the level specified by the associated element of 'CLV'. A value less than zero means the lines get drawn in the color specified by the current polyline color index. vibe check passed πŸ’–

There are three special elements in 'CLC', and they line up with 'PAI' values of -1, -2, and -3:

  • -1 β†’ a color index for the edge of the grid
  • -2 β†’ a color index for the edge of any area filled with special values
  • -3 β†’ a color index for the edge of any area in which the mapping routine CPMPXY returns the "out of range" value

The default value of each element of 'CLC' is -1.


πŸŽ€ 'CLD' - Contour Line Dash Pattern - Character Array

Each element of the parameter array 'CLD' is a dash pattern (as expected by the package Dashline) to be used β€” when 'DPU' is non-zero β€” to draw contour lines at the level specified by the associated element of the contour level array 'CLV'. πŸ¦‹

Elements of 'CLD' may be set using a call to CPSETI, with a sixteen-bit integer as the second argument, or using a call to CPSETC, with a character string of 32 or fewer characters as the second argument. Either way, the result is a character string internally β€” a sixteen-bit integer gets converted to a sixteen-character string by mapping 0-bits into apostrophes and 1-bits into dollar signs. 😌

There are three special elements in 'CLD', matching 'PAI' values of -1, -2, and -3:

  • -1 β†’ a dash pattern for the edge of the grid
  • -2 β†’ a dash pattern for the edge of any area filled with special values
  • -3 β†’ a dash pattern for the edge of any area in which the mapping routine CPMPXY returns the "out of range" value

When Conpack picks the contour levels, the default value supplied for each associated dash pattern is the character constant '$$$$$$$$$$$$$$$$'. That's also the default value for each of the three special elements. πŸ’Έ


πŸ“ 'CLL' - Contour Line Line Width - Real Array

Each element of the parameter array 'CLL' specifies the line width used to draw contour lines at the level specified by the associated element of the contour level array 'CLV'. Each one is expressed as a multiple of the "normal" line width, and values less than or equal to zero mean the line width should not be set. ✨

There are three special elements in 'CLL', matching 'PAI' values of -1, -2, and -3:

  • -1 β†’ a line width for the edge of the grid
  • -2 β†’ a line width for the edge of any area filled with special values
  • -3 β†’ a line width for the edge of any area in which the mapping routine CPMPXY returns the "out of range" value

When Conpack picks the contour levels, the default value supplied for each associated line width is 0. That's also the default value for each of the three special elements.


🚦 'CLS' - Contour Level Selection Flag - Integer

This one has to be set before the call to CPRECT, CPSPS1, or CPSPS2 that kicks off the process of drawing a particular contour plot. It says how contour levels get selected, and here's the whole menu:

  • If 'CLS' has the value "0", Conpack will not pick contour levels at all β€” the current values of the parameters 'NCL', 'CLV', and associated arrays will not be changed. They'll just retain the values chosen by Conpack during a previous call, or the values supplied by the user. no thoughts, head empty πŸ’…
  • If 'CLS' has a negative value of the form "-n", Conpack will generate "n" contour levels, splitting the range from the minimum field value to the maximum field value into "n+1" equal intervals.
  • If 'CLS' has a positive value of the form "+n" and 'CIS' is less than or equal to zero, Conpack will use values of the form "bk", where "b" is a "base" value chosen by Conpack and "k" is an integer. The base value "b" will be a "nice" value (as defined by the contents of the parameter array 'CIT'), chosen in such a way as to give at least "n" contour levels (with the default contents of the array 'CIT', you may get as many as "2n" levels). πŸ”₯
  • If 'CLS' has a positive value of the form "+n" and 'CIS' is greater than zero and 'CMN' is greater than 'CMX', Conpack will use values of the form "'CIS'*k", where "k" is an integer.
  • If 'CLS' has a positive value of the form "+n" and 'CIS' is greater than zero and 'CMN' is less than or equal to 'CMX', Conpack will use values of the form "'CMN'+'CIS'*k" which are greater than or equal to 'CMN' and less than or equal to 'CMX', where "k" is an integer.

The default value of 'CLS' is 16.


βœ… 'CLU' - Contour Level Use Flags - Integer Array

Each element of the parameter array 'CLU' says how the associated contour level in the parameter array 'CLV' is to be used:

  • 0 β†’ no contour line is to be drawn at the associated level
  • 1 β†’ the line is to be drawn without labels
  • 2 β†’ the labels are to be drawn, but not the line
  • 3 β†’ both the line and the labels are to be drawn

There are three special elements in 'CLU', matching 'PAI' values of -1, -2, and -3:

  • -1 β†’ a flag for the edge of the grid
  • -2 β†’ a flag for the edge of any area filled with special values
  • -3 β†’ a flag for the edge of any area in which the mapping routine CPMPXY returns the "out of range" value

In each case, if the flag is zero, the associated edge is not drawn; otherwise, the associated edge is drawn. πŸ–ŠοΈ

When Conpack chooses the contour levels, the associated elements of 'CLU' are given one of the two values 1 or 3, depending on whether the line is to be labeled or not. The default values of the special elements are all zeroes.


πŸ“Š 'CLV' - Contour Level Values - Real Array

Each of the first 'NCL' elements of the parameter array 'CLV' is a contour level for which something is to be done β€” the drawing of contour lines, the drawing of contour labels, and/or the addition of contour lines to an area map. 🌈

Only elements 1 through 'NCL' may be accessed via the parameter-setting routines. Which means: code to set the contour levels and associated quantities must begin with a call to set 'NCL'. no skipping steps, bestie πŸ’…

A side effect of setting the element numbered 'PAI' of 'CLV' is that the associated element number 'PAI' in each of the parameter arrays 'AIA', 'AIB', 'CLC', 'CLD', 'CLL', 'CLU', 'LLC', and 'LLT' is also given a default value, like so:

'AIA'       'PAI'+1
'AIB'       'PAI'
'CLC'       -1
'CLD'       '$$$$$$$$$$$$$$$$'
'CLL'       0
'CLU'       1
'LLC'       -1
'LLT'       ' ' (a single blank)

So in code to set contour levels and associated quantities, each contour level must be set before the quantities associated with it. Order is everything, fr fr.

Another side effect: setting element number 1 of 'CLV' zeroes the parameter 'CIU', which indicates what contour interval was used. It's assumed that this will only happen when the user is providing all the contour levels, in which case the concept of the "contour interval" may or may not be well defined. See the description of 'CIU' for more info. πŸ‘‘


πŸ”» 'CMN' - Contour Minimum - Real

When 'CLS' is greater than zero and 'CIS' is also greater than zero, if 'CMN' is less than or equal to 'CMX', then the contour levels used will be of the form 'CMN', 'CMN'+'CIS', 'CMN'+2*'CIS', ... , 'CMN'+n*'CIS', where "n" is the largest integer such that 'CMN'+n*'CIS' is less than or equal to 'CMX'. The labeled levels will be those for which "n" is a multiple of 'LIS'. 🌸

The default values of 'CMN' and 'CMX' are 1 and 0, respectively.


  • 'CMX' β€” Contour Maximum β€” Real β€” See the description of 'CMN', above. πŸ’–
  • 'CTM' β€” Character Temporary β€” Character β€” The parameter name 'CTM' refers to a temporary character buffer in Conpack; the name may be used in the routine CPCHCL to get the dash pattern for the current line and in the routines CPCHHL, CPCHIL, and CPCHLL to get the text of the label being written or to change it. πŸŽ€

The parameter 'CTM' has no meaningful default value. πŸ™ˆ

  • 'CWM' β€” Character Width Multiplier β€” Real β€” All character size parameters are multiplied by 'CWM'; this makes it easy to scale the sizes up or down simultaneously. Parameters affected by this are 'CFS', 'CFW', 'DPS', 'DPV', 'HLS', 'HLW', 'ILS', 'ILW', 'LLS', and 'LLW'. ✨

The default value of 'CWM' is 1. πŸ‘‘

  • 'DPS' β€” Dash Pattern Size β€” Real β€” The parameter 'DPS' specifies the nominal size (width) of a character in a dash pattern, as a fraction of the width of the viewport. This nominal size is multiplied by 'CWM'. πŸ¦‹

The default value of 'DPS' is 0.010. πŸ’…

  • 'DPU' β€” Dash Pattern Use Flag β€” Integer β€” If 'DPU' is less than or equal to zero, it means that no dash patterns are to be used and that contour lines are to be drawn using calls to CURVE. If 'DPU' is non-zero, it means that dash patterns are to be used and that contour lines are to be drawn using calls to CURVED. When the label positioning flag ABS('LLP') = 1, contour lines are caused to be labeled by using a dash pattern formed by concatenating "n" repetitions of the appropriate element of 'CLD' (the nominal dash pattern for the line) and the appropriate element of 'LLT' (the numeric label for the line); in this case, 'DPU' specifies the value of "n". 🌸

The default value of 'DPU' is 3. πŸ’–

  • 'DPV' β€” Dash Pattern Vector Length β€” Real β€” The parameter 'DPV' specifies the nominal length of the solid vector generated by a dollar sign, or the gap vector generated by an apostrophe, in a dash pattern, as a fraction of the width of the viewport. This nominal length is multiplied by 'CWM'. πŸŽ€

The default value of 'DPV' is .005. ✨

  • 'GIC' β€” Group Identifier for Contour Lines β€” Integer β€” The parameter 'GIC' specifies the group identifier for contour lines added to an area map by the routine CPCLAM. πŸ¦‹

The default value of 'GIC' is 3. πŸ’…

  • 'GIL' β€” Group Identifier for Label Boxes β€” Integer β€” The parameter 'GIL' specifies the group identifier for label boxes added to an area map by the routine CPLBAM. 🌸

The default value of 'GIL' is 3. πŸ’–

  • 'GIS' β€” Group Identifier for Strips β€” Integer β€” The parameter 'GIS' specifies the group identifier for a group of edges added to an area map by the routine CPCLAM to create a set of vertical strips. This is done only if the parameter 'NVS' (which is described later in this section) is non-zero. πŸŽ€

The default value of 'GIS' is 4. ✨

  • 'HCL' β€” Hachure Length β€” Real β€” The parameter 'HCL' specifies the hachure length, stated as a fraction of the width of the viewport. A positive value implies the use of hachures on the downslope side of the contour. A negative value implies the use of hachures on the upslope side of the contour. πŸ¦‹

The default value of 'HCL' is .004. πŸ’…

  • 'HCS' β€” Hachure Spacing β€” Real β€” The parameter 'HCS' specifies the hachure spacing, stated as a fraction of the width of the viewport. This is the distance between one hachure and the next along a contour line. 🌸

The default value of 'HCS' is .01. πŸ’–

  • 'HCF' β€” Hachuring Flag β€” Integer β€” The parameter 'HCF' is the hachuring flag, with one of the following values: πŸŽ€
    • If 'HCF' = 0, hachuring is turned off (the default). πŸ™ˆ
    • If 'HCF' = 1, all contours will be hachured. ✨
    • If 'HCF' = 2, closed contours will be hachured only if the interior of the contour is "downhill". Open contours will be unconditionally hachured. πŸ¦‹
    • If 'HCF' = 3, closed contours will be hachured only if the interior of the contour is "downhill". Open contours will be unconditionally unhachured. πŸ’…
    • If 'HCF' = 4, closed contours will be hachured only if the interior of the contour is "downhill". Open contours will be hachured only if the "interior" of the contour is "downhill", where "interior" is defined by computing the total change in direction along the contour. If that total is positive, the "interior" is to the left; if it is negative, the "interior" is to the right. 🌸

Negative values of 'HCF' may also be used. Each has the same effect as the corresponding positive value, except that the word "downhill" in the definition above is replaced by the word "uphill". πŸ’–

The default value of 'HCF' is 0. πŸ‘‘

The user will be expected to increase the value of the internal parameter 'RWC' ("Real Workspace for Contours") from its default 100 to a value large enough to accommodate any contour that can arise from his/her data field; this may require increasing the size of the real workspace array. (This is so that the hachuring routine is assured of seeing all of each contour line. Otherwise, it can't tell which way the "inside" and the "outside" of the closed contours are.) 😭

Closed contours that are broken into pieces that appear to be open contours (either because portions of the closed contour disappear as a result of the mapping implied by non-zero values of the parameter 'MAP' and the out-of-range value 'ORV', or because they run through special-value areas, as defined by the internal parameter 'SPV', or because the user has forgotten to increase the value of 'RWC', as described in the previous paragraph), will be hachured. The rationale for this is that no real confusion can arise from hachuring a contour line which shouldn't be, only from not hachuring one that should be. πŸ”₯

  • 'HIC' β€” High Label Color Index β€” Integer β€” The parameter 'HIC' is used in determining the color index for high labels. See the description of 'HLC', below. πŸ’œ
  • 'HIT' β€” High Label Text String β€” Character β€” The parameter 'HIT' specifies the text string to be used in labeling a high. See the description of 'HLT', below. 🌈
  • 'HLA' β€” High/Low Label Angle β€” Real β€” The parameter 'HLA' specifies the angle (in degrees counterclockwise from a vector pointing to the right) at which high and low labels are to be written. ⭐

The default value of 'HLA' is 0. πŸ’–

  • 'HLB' β€” High/Low Label Box Flag β€” Integer β€” If 'HLB' is zero, high and low labels will not be boxed at all. The value 1 implies that the perimeter of the box is to be drawn (in the same color as the label) after the label is drawn. The value 2 implies that the box is to be filled (in the color specified by 'LBC') before the label is drawn. The value 3 implies both of the above. πŸŽ€

The default value of 'HLB' is 0. ✨

  • 'HLC' β€” High/Low Label Color Index β€” Integer β€” The parameter 'HLC' is used in determining the color index for high and low labels. πŸ¦‹

The color index for high labels is determined in this manner: If 'HIC' is greater than or equal to zero, 'HIC' is used as the color index. If 'HIC' is less than zero, but 'HLC' is greater than or equal to zero, 'HLC' is used as the color index. If both 'HIC' and 'HLC' are less than zero, the current text color index is used. If a box is drawn around the label, it is made the same color as the label itself. πŸ’…

The color index for low labels is determined similarly: If 'LOC' is greater than or equal to zero, 'LOC' is used as the color index. If 'LOC' is less than zero, but 'HLC' is greater than or equal to zero, 'HLC' is used as the color index. If both 'LOC' and 'HLC' are less than zero, the current text color index is used. If a box is drawn around the label, it is made the same color as the label itself. 🌸

To set the color index of all high and low labels, simply supply the desired value for 'HLC'. To have highs and low labels which are colored differently, set 'HIC' and 'LOC'. πŸ’–

The default values of 'HLC', 'HIC', and 'LOC' are all -1's. πŸ‘‘

  • 'HLE' β€” High/Low Equal-Value Search β€” Integer β€” If 'HLE' has the value zero, only the "normal" search for highs and lows, as described in the programmer document for CONPACK (in the section "Searching for Highs and Lows") is performed. πŸŽ€

If 'HLE' has the value one, and if the "normal" search for highs and lows sees evidence that an additional search should be performed, then the additional search is performed. See the section "Extended High/Low Search Algorithm", in the programmer document for CONPACK. ✨

If 'HLE' has the value two or greater, and if the "normal" search for highs and lows sees evidence that an additional search should be performed, then the additional search is performed, but the candidate regions considered are limited to those containing no more than 'HLE' grid points. πŸ¦‹

Whenever 'HLE' is given a non-zero value, care should be taken to provide enough space in the integer work array to hold an additional M*N elements, where M and N are the dimensions of the array being contoured. This space will be needed during a call to CPHLLB. πŸ’…

The default value of 'HLE' is zero. 🌸

  • 'HLL' β€” High/Low Line Width β€” Real β€” If 'HLL' has a value less than or equal to zero, line width will not be set before drawing boxes around high and low labels. If 'HLL' has a value greater than zero, it specifies the desired width, as a multiple of the "normal" line width. πŸ’–

The default value of 'HLL' is 0. πŸŽ€

okay bestie, next batch of parameters coming in hot πŸ”₯

  • 'HLO' β€” High/Low Label Overlap Flag - Integer

Okay so 'HLO' is the flag that says what we do about high and low labels bumping into other stuff. Value 0 means we just ignore the whole problem β€” high and low labels won't be checked for overlap with anything else, periodt. Adding 1 to 'HLO' means we omit high and low labels that overlap the informational label. Adding 2 means we omit high and low labels that overlap other high and low labels found before them. Adding 4 means we omit high and low labels that overlap the edges of the viewport. Adding 8 means high and low labels that overlap the viewport edges get moved inward by just enough to fix it. But bestie, if you add both 4 and 8, it's like you only added 4 alone. πŸ’€

The default value of 'HLO' is 3 (1 + 2).

  • 'HLS' β€” High/Low Label Size - Real

'HLS' sets the nominal size (width) of a character in a high or low label, as a fraction of the viewport width. This nominal size gets multiplied by 'CWM'. Slay.

The default value of 'HLS' is .012.

  • 'HLT' β€” High/Low Label Text Strings - Character

The character strings for labeling highs and lows can be set individually with 'HIT' and 'LOT', or together with 'HLT'. If 'HLT' is set and there are no apostrophes in the string, both 'HIT' and 'LOT' get set equal to it, so it's used for both highs and lows. If there are apostrophes, what comes before the first one becomes 'HIT' (the high label) and what follows becomes 'LOT' (the low label).

Remember bestie: in FORTRAN, an apostrophe inside a string delimited by apostrophes is written as two apostrophes. No cap.

The substring $ZDV$ can represent the numeric value of the high or low divided by the current scale factor. The substring $ZDVU$ represents the unscaled value.

Some examples, and yes they ate:

                   FORTRAN STRING           HIGH LABEL       LOW LABEL
            ------------------------       -------------   -------------
            'H''L'                         H               L

            'HI''LO'                       HI              LO

            '$ZDV$'                        1.362           0.764

            'H($ZDV$)''L($ZDV$)'           H(1.362)        L(0.764)

            'H:B:$ZDV$:E:''L:B:$ZDV$:E:'   H               L
                                            1.362           0.764

Note that in the final example, the subscripting capability of the utility Plotchar is used. The terminating function code "E" ensures that the "H" or the "L" will be centered on the high or low. To center the whole thing, either remove the 'E's or change them to 'N's.

Neither 'HIT' nor 'LOT' can contain more than 20 characters.

If 'HIT' is blank, highs won't be labeled. If 'LOT' is blank, lows won't be labeled.

The default value for 'HIT' is 'H:B:$ZDV$:E:' and the default value of 'LOT' is 'H:B:$ZDV$:E:', just like the final example above. πŸ’–

  • 'HLW' β€” High/Low Label White Space Width - Real

'HLW' sets the nominal width of white space to leave around a high or low label, as a fraction of viewport width. This nominal width is multiplied by 'CWM'. It's giving breathing room. 🫢

The default value of 'HLW' is 0.005.

  • 'HLX' β€” High/Low Search Radius in X - Integer

If 'HLX' is greater than 0, it's the half-width of the index-value neighborhood used when searching the contour field for highs and lows. If 'HLX' is less than or equal to 0, Conpack picks a reasonable value (approximately 1/8 of 'ZDM', but not less than 2 and not greater than 15).

Example time: if 'HLX' = 3 and 'HLY' = 4, then the values in ZDAT checked to decide if (I,J) is a high or low are those with indices (K,L), where either K is not equal to I or L is not equal to J, K is between MAX(1,I-3) and MIN('ZDM',I+3), inclusive, and L is between MAX(1,J-4) and MIN('ZDN',J+4), inclusive.

The default value of 'HLX' is 0.

  • 'HLY' β€” High/Low Search Radius in Y - Integer

If 'HLY' is greater than 0, it's the half-height of the index-value neighborhood used when searching the contour field for highs and lows. If 'HLY' is less than or equal to 0, Conpack picks a reasonable value (approximately 1/8 of 'ZDN', but not less than 2 and not greater than 15).

For an example, see the description of 'HLX' above. πŸ‘†

The default value of 'HLY' is 0.

  • 'ILA' β€” Informational Label Angle - Real

'ILA' specifies the angle (in degrees counterclockwise from a vector pointing to the right) at which the informational label is written. It's giving ✨rotation✨.

The default value of 'ILA' is 0.

  • 'ILB' β€” Informational Label Box Flag - Integer

If 'ILB' is zero, the informational label won't be boxed at all. Value 1 means the perimeter of the box is drawn (in the same color as the label) after the label is drawn. Value 2 means the box is filled (in the color specified by 'LBC') before the label is drawn. Value 3 means both of the above. Boxed and booked. πŸ“¦

The default value of 'ILB' is 0.

  • 'ILC' β€” Informational Label Color Index - Integer

If 'ILC' is less than zero, the informational label and the box (if any) around it are drawn in the color specified by the current text color index. If 'ILC' is greater than or equal to zero, it specifies the desired color index for the label and the box. If a box is drawn around the label, it's made the same color as the label itself. Color coordination? We love to see it. 🌈

The default value of 'ILC' is -1.

  • 'ILL' β€” Informational Label Line Width - Real

If 'ILL' is less than or equal to zero, line width won't be set before drawing a box around the informational label. If 'ILL' is greater than zero, it specifies the desired width, as a multiple of the "normal" line width. Thick lines? We stan. πŸ’…

The default value of 'ILL' is 0.

  • 'ILP' β€” Informational Label Positioning Flag - Integer

'ILP' says how the informational label is positioned. There are nine possible values, each specifying a point of the label box that lies on the point defined by 'ILX' and 'ILY':

  • -4 implies the lower left-hand corner of the label box
  • -3 implies the center of the bottom of the box
  • -2 the lower right-hand corner of the box
  • -1 the center of the left edge of the box
  • 0 the center of the box
  • +1 the center of the right edge of the box
  • +2 the upper left-hand corner of the box
  • +3 the center of the top edge of the box
  • +4 the upper right-hand corner of the box

Left, right, bottom, and top are defined from the viewpoint of someone reading the label right-side up. Periodt.

The default value of 'ILP' is 4, so the upper right-hand corner of the box will be placed on the point ('ILX','ILY').

  • 'ILS' β€” Informational Label Size - Real

'ILS' sets the nominal size (width) of a character in the informational label, as a fraction of viewport width. This nominal size is multiplied by 'CWM'. Tiny text or big text, your call bestie.

The default value of 'ILS' is 0.012.

  • 'ILT' β€” Informational Label Text String - Character

'ILT' is a string of 100 or fewer characters, specifying the text of the informational label. The following substrings get replaced by a numeric value:

  • $CIU$ - THE CONTOUR INTERVAL USED.
  • $CMN$ - THE MINIMUM CONTOUR LEVEL.
  • $CMX$ - THE MAXIMUM CONTOUR LEVEL.
  • $SFU$ - THE CURRENT SCALE FACTOR.
  • $ZMN$ - THE MINIMUM VALUE IN THE DATA ARRAY.
  • $ZMX$ - THE MAXIMUM VALUE IN THE DATA ARRAY.

In each case except $SFU$, the given value will have been divided by the current scale factor. A "U" may be inserted just before the final "$" (like '$CIUU$', '$CMNU$', etc.) to request the use of an unscaled value.

The value that $CIU$ gets replaced with will only be correct if Conpack itself chose the contour levels; otherwise, you might need to set the value of 'CIU' (which see, above).

If 'ILT' is given the value ' ' (a single blank), there will be no informational label. Silence, iconic.

The default value of 'ILT' is 'CONTOUR FROM $CMN$ TO $CMX$ BY $CIU$'.

  • 'ILW' β€” Informational Label White Space Width - Real

'ILW' sets the nominal width of white space to leave around the informational label, as a fraction of viewport width. This nominal width is multiplied by 'CWM'. Personal space matters. 🫢

The default value of 'ILW' is 0.005.

  • 'ILX' β€” Informational Label X Coordinate - Real

'ILX' specifies the X coordinate of the basepoint of the informational label. The value is mapped linearly onto the viewport; 0 is the left edge of the viewport and 1 is the right edge. Values less than 0 or greater than 1 may be used. Off-screen? Sure, why not. πŸ’€

The default value of 'ILX' is 0.98.

  • 'ILY' β€” Informational Label Y Coordinate - Real

'ILY' specifies the Y coordinate of the basepoint of the informational label. The value is mapped linearly onto the viewport; 0 is the bottom edge of the viewport and 1 is the top edge. Values less than 0 or greater than 1 may be used. Y not? 😭

The default value of 'ILY' is -.02.

  • 'IWM' β€” Integer Workspace for Masking - Integer

'IWM' specifies the amount of integer workspace to allot for use by CPCLDM, which draws contour lines masked by an area map, in calls to the routine ARDRLN, in the package Areas. Assume a parameter value "n"; the space used will be "2n" ("n" for the array IAI and "n" for the array IAG, in calls to ARDRLN). The value "n" must be greater than or equal to the number of group identifiers used in generating the area map. Don't skimp on workspace, bestie. 🫑

The default value of 'IWM' is 10.


  • 'IWU' β€” Integer Workspace Usage β€” Integer

Okay so 'IWU' is a read-only icon πŸ‘‘. She's intended for retrieval only, bestie. She gets zeroed by the call to CPRECT, CPSPS1, or CPSPS2. So by retrieving her value after an entire plot has been constructed, you can find out how large an integer workspace was actually required. Fr fr. πŸ’…

  • 'LBC' β€” Label Box Color Index β€” Integer

If label boxes (of whatever type) are filled, the filling is done using the color index specified by 'LBC'. If 'LBC' is less than zero, the current fill area color index is used. πŸ‘€

The default value of 'LBC' is 0, which specifies the background color. Periodt.

  • 'LBX' β€” Label Box X Coordinate β€” Real

Not to be set by the user, bestie β€” hands off! πŸ™…β€β™€οΈ The value may be retrieved in one of the routines CPCHCF, CPCHHL, CPCHIL, or CPCHLL. It specifies the X coordinate (in the current user coordinate system) of the center of the box surrounding the label that has caused the routine to be called. So if you're in one of those routines, she's there for you. ✨

The default value of 'LBX' is 0.

  • 'LBY' β€” Label Box Y Coordinate β€” Real

Also not to be set by the user! 🚫 The value may be retrieved in one of the routines CPCHCF, CPCHHL, CPCHIL, or CPCHLL. It specifies the Y coordinate (in the current user coordinate system) of the center of the box surrounding the label that has caused the routine to be called. Same vibe as 'LBX', but for Y. πŸ’«

The default value of 'LBY' is 0.

  • 'LIS' β€” Label Interval Specifier β€” Integer

Okay so here's the tea β˜•: when 'CLS' is given a positive value, indicating that Conpack is to choose contour levels at intervals of the form "bk", where "b" is a base value and "k" is an integer, and 'CIS' is given a positive value, indicating that it is the desired value of "b", then 'LIS' must be set to specify the interval between labeled contour levels. Got it? πŸ‘‘

See the descriptions of the parameters 'CLS' and 'CIS'.

As an example, one might specify 'CLS'=1, 'CIS'=1/3 and 'LIS'=3 in order to get contours at values like 1/3, 2/3, 3/ 3, 4/3, etc., with labels at values like 1, 2, 3, etc. Iconic example, no cap. πŸ”₯

The default value of 'LIS' is 5.

  • 'LIT' β€” Label Interval Table β€” Integer Array

See the description of the parameter 'CIT'. That's it, bestie. Go look at 'CIT'. 🫢

  • 'LIU' β€” Label Interval Used β€” Integer

The parameter 'LIU' is for retrieval only. πŸ‘€ When Conpack chooses the contour interval and decides that every "nth" one should be labeled, it sets 'LIU' to "n". So she tells you the interval that was actually used. Slay.

  • 'LLA' β€” Line Label Angle β€” Real

The parameter 'LLA' specifies the angle (in degrees counterclockwise from a vector pointing to the right) at which contour line labels are to be written when ABS('LLP') is greater than or equal to 2 and 'LLO' is 0. So it's the angle of the label text. πŸ“

The default value of 'LLA' is 0.

  • 'LLB' β€” Line Label Box Flag β€” Integer

If 'LLB' is zero, contour line labels drawn by CPLBDR will not be boxed at all. The value 1 implies that the perimeter of the box is to be drawn (in the same color as the label) after the label is drawn. The value 2 implies that the box is to be filled (in the color specified by 'LBC') before the label is drawn. The value 3 implies both of the above. So it's like a little box situation. πŸ“¦

The default value of 'LLB' is 0.

  • 'LLC' β€” Line Label Color Index β€” Integer Array

Each element of the parameter array 'LLC', if greater than or equal to zero, is the color index for labels on contour lines at the level specified by the associated element of 'CLV'. A value less than zero implies that the current text color index is to be used. 🌈

This parameter only affects line labels when ABS('LLP') = 2 or 3 and the labels are therefore drawn by CPLBDR. It does not affect line labels when ABS('LLP') = 1 and the line labels are therefore drawn by the dash package, as called by CPCLDM or CPCLDR. Important distinction, bestie! πŸ’…

The default values of the elements of 'LLC' are all -1's.

  • 'LLL' β€” Line Label Line Width β€” Real

If 'LLL' has a value less than or equal to zero, line width will not be set before drawing boxes around contour line labels. If 'LLL' has a value greater than zero, it specifies the desired width, as a multiple of the "normal" line width. So you can make those label boxes thicc. πŸ‘

The default value of 'LLL' is 0.

  • 'LLO' β€” Line Label Orientation β€” Integer

The parameter 'LLO' only has effect when ABS('LLP') is greater than or equal to 2, specifying use of either the regular scheme or the penalty scheme for positioning labels on contour lines. If 'LLO' is zero, the labels are written at the angle specified by 'LLA'. If 'LLO' is non-zero, the labels are written in the local direction of the contour line. So it's about whether the label follows the line or not. πŸ”„

The default value of 'LLO' is 0.

  • 'LLP' β€” Line Label Positioning β€” Integer

The parameter 'LLP' says whether or not labels should be produced and, if so, how, as follows:

  • If 'LLP' is 0, it says that no line labels should be produced. πŸ™…β€β™€οΈ
  • If ABS('LLP') is 1, it says that labels should be positioned along contour lines by using the old Conrec_family scheme of setting up a character dash pattern including the label and using the software dash package to draw the labels (which requires having 'DPU' set non-zero). This scheme has the disadvantages that one cannot control the orientation and one cannot shield the labels from having contour lines drawn through them. 😭
  • If ABS('LLP') is 2, it says that labels should be positioned at regular intervals along the line. See the descriptions of the parameters 'RC1', 'RC2', and 'RC3'. ✨
  • If ABS('LLP') is 3, it says that labels should be positioned using a penalty scheme, which gives much better results than either of the others. πŸ”₯

When 'LLP' is 2 or 3, the 2D smoothing, if any, implied by the value of 'T2D' is suspended during label positioning, so that fewer label positions will be considered; this is quite a bit faster and the results are nearly as good as if the smoothing were done. To force smoothing, use 'LLP' = -2 or -3. So if you want that smooth life, go negative. πŸ’…

The default value of 'LLP' is 1.

  • 'LLS' β€” Line Label Size β€” Real

The parameter 'LLS' specifies the nominal size (width) of a character in a contour line label, as a fraction of the width of the viewport. This nominal size is multiplied by 'CWM'. So it's the label's size vibe. πŸ“

The default value of 'LLS' is 0.010.

  • 'LLT' β€” Line Label Text String β€” Character

For each I from 1 to 'NCL', element I of the parameter array 'LLT' is a string of twenty or fewer characters, to be used as a label for the contour level specified by the Ith element of 'CLV'. Since the character string will be plotted using the routine PLCHHQ, in the package Plotchar, it may contain colon-enclosed "function codes" to do things like create superscripts. So you can get fancy with it. ✨

If the elements of this array are not supplied by the user, they will be filled in by Conpack itself. So don't stress, bestie. 🫢

  • 'LLW' β€” Line Label White Space β€” Real

The parameter 'LLW' specifies the nominal width of white space to be left around a contour line label, as a fraction of the width of the viewport. This nominal width is multiplied by 'CWM'. So it's the breathing room for your labels. 🌬️

The default value of 'LLW' is 0.005.

  • 'LOC' β€” Low Label Color Index β€” Integer

The parameter 'LOC' is used in determining the color index for low labels. See the description of 'HLC', above. So go check 'HLC' for the full tea. β˜•

  • 'LOT' β€” Low Label Text String β€” Character

The parameter 'LOT' specifies the text string to be used in labeling a low. See 'HLT', above. Same vibe, different parameter. πŸ’œ

  • 'MAP' β€” Mapping Flag β€” Integer

If 'MAP' is zero, it says that the x and y coordinates used to create the contour map are not to be transformed by the user-replaceable subroutine CPMPXY. If 'MAP' is non-zero, it says that x and y coordinates are to be so transformed. The default version of CPMPXY provides two useful mappings: 🌍

If the first subscript of the data array is a linear function of the longitude and the second is a linear function of the latitude, then one can transform all graphics output onto a map background created by calls to routines in the utility package Ezmap just by setting 'MAP' = 1, 'XC1' = minimum longitude, 'XCM' = maximum longitude, 'YC1' = minimum latitude, and 'YCN' = maximum latitude. Also, the parameter 'SET' must be given the value 0 in order to prevent Conpack from calling SET and thereby overriding the call done by Ezmap. So that's the longitude/latitude map mapping. πŸ—ΊοΈ

If the first subscript of the data array is a linear function of rho and the second is a linear function of theta, where rho and theta are polar coordinates, then to map all graphics output properly, one may set 'MAP' = 2, 'XC1' = minimum rho, 'XCM' = maximum rho, 'YC1' = minimum theta, and 'YCN' = maximum theta. In this case, one must either use 'SET' = 0 and do an appropriate SET call or use 'SET' = 1 and give the parameters 'WDB', 'WDL', 'WDR', and 'WDT' values consistent with the mapped values of X and Y, which will all be of the form "rho*cos(theta)" and "rho*sin(theta)", respectively. Polar mapping, periodt. πŸŒ€

Using any other non-zero value of 'MAP' will result in the identity mapping. So don't try to be cute with other numbers. πŸ’€

Of course, one can replace the routine CPMPXY and build as many different mappings into it as desired. See the description of CPMPXY. Go off, bestie. πŸ‘‘

  • 'NCL' β€” Number of Contour Levels β€” Integer

If Conpack is to pick contour levels (see the description of the parameter 'CLS') then the initial call to CPRECT, CPSPS1, or CPSPS2 causes 'NCL' to be zeroed. Subsequently, during the first call to a Conpack routine requiring contour levels to have been chosen, 'NCL' will be set as part of the process of choosing them. If the user elects to choose the contour levels, the first parameter which must be set to do this is 'NCL'. So it's kind of a big deal. πŸ’…

The parameter 'NCL' has no meaningful default value. So don't expect one, bestie. πŸ™ˆ

  • 'NEL' β€” Numeric Exponent Length, integer. Okay so giving 'NEL' a value less than or equal to zero is you saying, bestie, that exponents in numeric labels should be written in the shortest possible form: plus signs are omitted and the exponent magnitude is written with no leading zeroes. A value "n" which is greater than zero indicates that all exponents should be written with a sign (+ or -) and that the exponent magnitude should be padded with leading zeroes to a length of n characters. Default: 0. ✨
  • 'NET' β€” Numeric Exponent Type, integer. The parameter 'NET' says what characters are to be used between the mantissa of a numeric label and the exponent. The value 0 implies the use of an E, as in FORTRAN "E format", the value 1 implies the use of function codes, as expected by the utility Plotchar, to generate "x 10**n", where n is a superscript exponent, and the value 2 implies the use of "x10**". Default: 1. πŸ’…
  • 'NEU' β€” Numeric Exponent Use Flag, integer. Giving 'NEU' a value less than or equal to zero forces the use of the exponential form in all numeric labels. A positive value "n" indicates that the form without an exponent should be used as long as it requires no more than n characters; otherwise the form requiring the fewest characters should be used. Default: 5. πŸŽ€
  • 'NLS' β€” Numeric Leftmost Significant Digit Flag, integer. Giving 'NLS' the value zero says that the leftmost non-zero digit of a number represented by a numeric label is to be considered its first significant digit. A non-zero value says that the digit in the same digit position as the leftmost non-zero digit of the largest number (in absolute value) in the data field being contoured is to be considered the leftmost significant digit. This tends to make the numeric labels more nearly consistent with one another. Consider the following example, using three significant digits:
                 USING 'NLS'=0: .500 1.00 1.50 ... 9.50 10.5 ...
                 USING 'NLS'=1: .5   1.0  1.5  ... 9.5  10.5 ...

Default: 1. πŸ¦‹

  • 'NLZ' β€” Numeric Leading Zero Flag, integer. Giving 'NLZ' a non-zero value says that a zero is to be placed before any numeric label which would otherwise begin with a decimal point (use "0.345", rather than ".345"). Default: 0. 🌸
  • 'NOF' β€” Numeric Omission Flags, integer. The parameter 'NOF' says what parts of a numeric label may be omitted. The value 0 says that no part may be omitted. Add a 4 to indicate that a leading "1" or "1." which is unnecessary (as in "1 x 10**13") may be omitted, a 2 to indicate that a trailing decimal point (as in "13.") may be omitted, and a 1 to indicate that trailing zeroes (as in "46.200") may be omitted. Contour line labels generated by Conpack and values in the informational label which are known to have been rounded to "nice" values (like '$CIU$', '$CMN$', and '$CMX$') will have trailing zeroes trimmed in any case, no matter what the value of 'NOF' is. Default: 6 (4 + 2). πŸ’–
  • 'NSD' β€” Number of Significant Digits, integer. The parameter 'NSD' specifies the maximum number of significant digits to be used in numeric labels representing contour field values. A negative value "-n" indicates that n significant digits should be used. A positive value "n" indicates that "m+n" digits should be used, where "m" is the number of digits that are the same for all values in the contour field. (For example, if the minimum value is "1123.6" and the maximum value is "1125.9", then the value of "m" is 3.) Default: 4. πŸ”₯
  • 'NVS' β€” Number of Vertical Strips, integer. When the parameter 'NVS' is non-zero, an extra group of edges, with group identifier 'GIS', is added to the area map by the routine CPCLAM. These edges include the boundary of the viewport and enough vertical lines to break the area occupied by the viewport up into 'NVS' vertical strips. The object of this is to break up the contour bands which are to be filled into smaller and simpler pieces; this may be necessary if the graphics device in use limits the number of points which may be used to define a polygon to be filled. The area identifier for the outside of the viewport is -1; all other area identifiers used are 0's. Default: 1. 🫢
  • 'ORV' β€” Out-of-Range Value, real. If 'ORV' is non-zero, it specifies an out-of-range value, to be used as the value of X and Y coordinates returned by the mapping routine CPMPXY to say that a point is out-of-range (invisible) under the current mapping. Default: 0. 🌈
  • 'PAI' β€” Parameter Array Index, integer. The value of 'PAI' must be set before calling CPGETC, CPGETI, CPGETR, CPSETC, CPSETI, or CPSETR to access any parameter which is an array; it indicates which element of the array is meant. For example, to set the 10th contour level to zero, use code like this:
                 CALL CPSETI ('PAI - PARAMETER ARRAY INDEX',10)
                 CALL CPSETR ('CLV - CONTOUR LEVEL',0.)

Default: 0. ⭐

  • 'PC1' β€” Penalty Scheme Constant 1, real. The parameter 'PC1' is one of the constants used in the penalty scheme for positioning labels. The largest gradient allowed at the position of a label will be GRAV + 'PC1' * GRSD, where GRAV is the average gradient and GRSD is the standard deviation of the gradients. Default: 1. πŸ‘‘
  • 'PC2' β€” Penalty Scheme Constant 2, real. The parameter 'PC2' is one of the constants used in the penalty scheme for positioning labels. It specifies the maximum (estimated) number of contour bands allowed to cross a label. Default: 5. πŸ“
  • 'PC3' β€” Penalty Scheme Constant 3, real. The parameter 'PC3' is one of the constants used in the penalty scheme for positioning labels. It specifies, in degrees, the maximum cumulative change in direction to be allowed along that portion of the contour line covered by a circle centered on a label and having a radius equal to half the width of the label. Default: 60. 🧚
  • 'PC4' β€” Penalty Scheme Constant 4, real. The parameter 'PC4' is one of the constants used in the penalty scheme for positioning labels. It specifies the "optimal distance" in the term in the penalty function which attempts to force labels to be at an optimal distance from each other. Default: 0.05. πŸ’œ
  • 'PC5' β€” Penalty Scheme Constant 5, real. The parameter 'PC5' is one of the constants used in the penalty scheme for positioning labels. It specifies the "folding distance" in the term in the penalty function which attempts to force labels to be at an optimal distance from each other. Default: 0.15. ✨
  • 'PC6' β€” Penalty Scheme Constant 6, real. The parameter 'PC6' is one of the constants used in the penalty scheme for positioning labels. It specifies the minimum distance to be allowed between any two labels on the same contour line, as a fraction of the width of the viewport. Default: 0.30. πŸŽ€
  • 'PIC' β€” Point Interpolation Flag for Contours, integer. The parameter 'PIC' specifies the number of points to interpolate between each pair of points defining a segment of a contour line, prior to any mapping implied by the parameter 'MAP'. It is intended that a non-zero value should normally be used only if 'MAP' is non-zero, which turns mapping on, and 'T2D' is zero, which turns the 2D smoother off; the intent is to map straight-line segments of contour lines more nearly correctly into curved-line segments on a background (one drawn by Ezmap, for example). If the 2D smoother is turned on, the additional points will be used and the smoothed curve will be constrained to pass through them; this may be useful. A negative value of 'PIC' causes ABS('PIC') points to be interpolated, but the interpolated points are not, in general, used to draw the line segment; the object, in this case, is simply to do a finer search for changes in visibility (out-of-range state, as defined by values of 'ORV' returned by the routine CPMPXY) along the segment. Default: 0. 😭
  • 'PIE' β€” Point Interpolation Flag for Edges, integer. The parameter 'PIE' specifies the number of points to interpolate between each pair of points defining a segment of an "edge" (the edge of the grid, the edge of a special-value area, or the edge of an out-of-range area). It is intended that a non-zero value should normally be used only if 'MAP' is non-zero, which turns mapping on; the intent is to map straight-line segments of edge lines more nearly correctly into curved-line segments on a background (one drawn by Ezmap, for example). A negative value of 'PIE' causes ABS('PIE') points to be interpolated, but the interpolated points are not, in general, used to draw the line segment; the object, in this case, is simply to do a finer search for changes in out-of-range state (visibility) along the segment. (The edges of out-of-range areas, however, are drawn using all such interpolated points.)
Using too large an (absolute) value of 'PIE' will cause the tracing of the edges of out-of-range areas to be very time-consuming, because the number of points to be examined is 'ZDM' x 'ZDN' x 'PIE' x 'PIE'.

Default: 0. πŸ’€

  • 'PW1' β€” Penalty Scheme Weight 1, real. The parameter 'PW1' specifies the weight for the gradient term in the penalty function. Default: 2. πŸ”₯
  • 'PW2' β€” Penalty Scheme Weight 2, real. The parameter 'PW2' specifies the weight for the number-of-contours term in the penalty function. Default: 0. πŸ’…

'PW3' β€” Penalty Scheme Weight 3 β€” Real

Okay so 'PW3' is the weight for the change-in-direction term in the penalty function. That's the vibe. The default value of 'PW3' is 1. πŸ’…

'PW4' β€” Penalty Scheme Weight 4 β€” Real

'PW4' sets the weight for the optimum-distance term in the penalty function. Default value? 1. Periodt. ✨

'RC1' β€” Regular Scheme Constant 1 β€” Real

'RC1' is the desired distance from the beginning of a contour line to the first label on that line when they're positioned using the "regular" scheme. The nth label on each labeled contour line will be at a distance 'RC1' + 'RC2' x (n-1) + 'RC3' x Rn units (in the fractional coordinate system) from the beginning of the line, where "Rn" is a random number between -1 and 1.

Default value of 'RC1'? 0.25. πŸŽ€

'RC2' β€” Regular Scheme Constant 2 β€” Real

'RC2' specifies the desired nominal distance between labels when they're positioned using the "regular" scheme. See the description of 'RC1', above. Default value of 'RC2' is 0.25. 🌸

'RC3' β€” Regular Scheme Constant 3 β€” Real

'RC3' specifies the desired maximum variation in the distance between labels when they're positioned using the regular scheme. See the description of 'RC1', above. Default value of 'RC3' is 0.05. πŸ¦‹

'RWC' β€” Real Workspace for Contours β€” Integer

'RWC' specifies the amount of real workspace to be allotted to hold X coordinates of points defining contour lines. Assume a parameter value "n". If no 2D smoothing is requested, the total space used will be "2n" ("n" for X coordinates and another "n" for Y coordinates). If 2D smoothing is requested, the total space used will be "7n" ("n" for X coordinates, "n" for Y coordinates, and "5n" for scratch arrays).

Normally, the value of 'RWC' is of no particular interest to the user, since the same contour lines are produced with a small value as would be produced with a larger value. There are two situations in which it becomes of more interest:

  1. When the penalty scheme is used to position labels, the length of the portion of the contour line over which the penalty function is evaluated is limited by the value of 'RWC'. If 'RWC' is set too small, too many labels may be put on a given contour line and some of them may be too close to each other.
  2. When hachuring has been activated (by setting the value of 'HCF' non-zero), it is important that the internal routine that does the hachuring see entire contours at once, so that it may properly decide whether a contour is open or closed and, in the latter case, where the interior of the closed contour is.

In both of these cases, the solution is to increase the value of 'RWC'.

The default value of 'RWC' is 100. πŸ’–

'RWG' β€” Real Workspace for Gradients β€” Integer

'RWG' specifies the amount of real workspace to be allotted to hold gradients which are to be computed and used in positioning labels using the penalty scheme. Using a larger value provides for a more accurate representation of the gradient field, up to the point at which it exceeds 'ZDM' x 'ZDN'.

The default value of 'RWG' is 1000. πŸ”₯

'RWM' β€” Real Workspace for Masking β€” Integer

'RWM' specifies the amount of real workspace to be allotted for use by CPCLDM, which draws contour lines masked by an area map, in calls to the routine ARDRLN, in the package Areas. Assume a parameter value "n"; the space used will be "2n" ("n" for the X-coordinate array XCS and "n" for the Y-coordinate array YCS, in calls to ARDRLN). Any value of "n" greater than or equal to 2 will work; smaller values will cause the generation of more calls to the user routine RTPL (one of the arguments of CPCLDM).

The default value of 'RWM' is 100. 🫢

'RWU' β€” Real Workspace Usage β€” Integer

'RWU' is intended for retrieval only. It is zeroed by the call to CPRECT, CPSPS1, or CPSPS2. Thereafter, as Conpack routines are called, the value of 'RWU' is updated to reflect the largest number of words of real workspace needed at any one time. Therefore, by retrieving its value after an entire plot has been constructed, one may find out how large a real workspace was actually required. πŸ‘‘

'SET' β€” Do-SET-Call Flag β€” Integer

Giving 'SET' the value 0 says that no SET call is to be done by Conpack; the value 1 says that it is to be done. In the latter case, the call is done by CPRECT, CPSPS1, or CPSPS2.

Arguments 5-8 of a SET call done by the user must be consistent with the ranges of the X and Y coordinates being used by Conpack, as specified by the values of the parameters 'XC1', 'XCM', 'YC1', 'YCN', and 'MAP'. See the descriptions of those parameters.

The default value of 'SET' is 1. πŸ’…

'SFS' β€” Scale Factor Selector β€” Real

The scale factor is that value (usually, but not necessarily, a power of 10) by which the actual values of contour field values are to be divided to get the value of a numeric label. If 'SFS' is given a value greater than zero, that value is the scale factor to be used. If 'SFS' is given a value less than or equal to zero, it is truncated to form an integer directing Conpack to select a scale factor, as follows:

  • 0 β€” Implies that the scale factor should be selected in such a way as to reduce the ZDAT element having the largest absolute value to the range from 0.1 to 0.999...
  • -1 β€” Implies that the scale factor should be selected in such a way as to reduce the ZDAT element having the largest absolute value to the range from 1. to 9.999...
  • -2 β€” Implies that the scale factor should be selected in such a way as to place the decimal point in the ZDAT element having the largest absolute value after the rightmost significant digit of that value (as defined by the values of 'NSD' and 'NLS').
  • -3 β€” Implies that the scale factor should be selected in such a way as to remove extra zeroes from the ends of the ZDAT element having the largest absolute value. For example, if that element were 0.000136, the scale factor would be 10 to the power -3; if that element were 136000 (assuming three significant digits are desired), the scale factor would be 10 to the power 3. If there are no extra zeroes on either end of the ZDAT element having the largest absolute value, the scale factor will be 1.
  • -4 or less β€” Implies that the scale factor should be selected in such a way as to reduce all contour labels to integers.

The default value of 'SFS' is 1. 🌈

'SFU' β€” Scale Factor Used β€” Real

'SFU' is intended for retrieval only; it gives the value of the scale factor selected for use by Conpack. πŸŽ€

'SPV' β€” Special Value β€” Real

If 'SPV' is non-zero, it specifies a "special value", which may be used in data fields to signal missing data. No contour lines will be drawn within any grid cell with a special value at one or more of its four corners.

The default value of 'SPV' is 0. πŸ’€

'SSL' β€” Smoothed Segment Length β€” Real

'SSL' specifies the distance between points used to draw the curves generated by 2D smoothing; it is expressed as a fraction of the width of the window in the coordinate system in which the smoothing is being done.

The default value of 'SSL' is 0.01. 🌸

'T2D' β€” Tension on 2-Dimensional Splines β€” Real

A non-zero value of 'T2D' says that 2D smoothing (using cubic splines under tension) should be done; the absolute value of 'T2D' is the desired tension. If 'T2D' is negative, smoothing will be done before the mapping, if any, requested by the flag 'MAP'; if 'T2D' is positive, smoothing will be done after the mapping.

The default value of 'T2D' is 0. πŸ¦‹

'T3D' β€” Tension on 3-Dimensional Splines β€” Real

'T3D' specifies the tension on the 3D (bicubic) splines used by CPSPS1 or CPSPS2 to smooth the data being contoured.

The default value of 'T3D' is 1. ✨

'VPB' β€” Viewport Bottom β€” Real

'VPB' is only used when 'SET' is non-zero, saying that Conpack should do the call to SET; it specifies the position of the bottom edge of the area in which the viewport is to be placed, expressed as a fraction between 0 (the bottom edge of the plotter frame) and 1 (the top edge of the plotter frame). See also the description of 'VPS'.

The default value of 'VPB' is 0.05. πŸ’–

'VPL' β€” Viewport Left β€” Real

'VPL' is only used when 'SET' is non-zero, saying that Conpack should do the call to SET; it specifies the position of the left edge of the area in which the viewport is to be placed, expressed as a fraction between 0 (the left edge of the plotter frame) and 1 (the right edge of the plotter frame). See also the description of 'VPS'.

The default value of 'VPL' is 0.05. 🫢

'VPR' β€” Viewport Right β€” Real

'VPR' is only used when 'SET' is non-zero, saying that Conpack should do the call to SET; it specifies the position of the right edge of the area in which the viewport is to be placed, expressed as a fraction between 0 (the left edge of the plotter frame) and 1 (the right edge of the plotter frame). See also the description of 'VPS'.

The default value of 'VPR' is 0.95. πŸ‘‘

'VPS' β€” Viewport Shape β€” Real

okay bestie, 'VPS' only does anything when 'SET' is non-zero (that's the flag saying Conpack is the one doing the call to SET, not you πŸ’…). It sets the vibe of the viewport shape, like this:

  • A negative value means "this exact shape, no notes" β€” the absolute value is the ratio of the viewport width to its height.
  • The value 0 gives you a viewport that completely fills the area specified by 'VPL', 'VPR', 'VPB', and 'VPT'.
  • A value "s" between 0 and 1 gives you a plot shaped by the values of 'XC1', 'XCM', 'YC1', and 'YCN' β€” but it reverts to the shape from 'VPL', 'VPR', 'VPB', and 'VPT' if the ratio of the shorter side to the longer side would come out less than "s".
  • A value "s" greater than or equal to 1 gives you a plot shaped by the values of 'XC1', 'XCM', YC1', and 'YCN' β€” but it reverts to a square if the ratio of the longer side to the shorter side would be greater than "s".

Whatever shape it ends up with, the viewport is centered in β€” and made as large as possible in β€” the area specified by 'VPB', 'VPL', 'VPR', and 'VPT'.

The default value of 'VPS' is 0.25. ✨

'VPT' β€” Viewport Top β€” Real

'VPT' is also only used when 'SET' is non-zero (again: Conpack is doing the SET call). It gives the position of the top edge of the area where the viewport gets placed, as a fraction between 0 (bottom edge of the plotter frame) and 1 (top edge of the plotter frame). Peep the 'VPS' description above too, bestie 🫢.

The default value of 'VPT' is 0.95.

'WDB' β€” Window Bottom β€” Real

When Conpack does the call to 'SET', 'WDB' is used to figure out argument number 7 β€” the user Y coordinate at the bottom of the window. Here's the tea:

  • If 'WDB' is not equal to 'WDT', then 'WDB' is used.
  • If 'WDB' is equal to 'WDT', but 'YC1' is not equal to 'YCN', then 'YC1' is used.
  • Otherwise, the value 1 is used.

The default value of 'WDB' is 0.

'WDL' β€” Window Left β€” Real

When Conpack does the call to 'SET', 'WDL' determines argument number 5 β€” the user X coordinate at the left edge of the window. The rundown:

  • If 'WDL' is not equal to 'WDR', then 'WDL' is used.
  • If 'WDL' is equal to 'WDR', but 'XC1' is not equal to 'XCM', then 'XC1' is used.
  • Otherwise, the value 1 is used.

The default value of 'WDL' is 0.

'WDR' β€” Window Right β€” Real

When Conpack does the call to 'SET', 'WDR' determines argument number 6 β€” the user X coordinate at the right edge of the window. So:

  • If 'WDR' is not equal to 'WDL', then 'WDR' is used.
  • If 'WDR' is equal to 'WDL', but 'XCM' is not equal to 'XC1', then 'XCM' is used.
  • Otherwise, the value REAL('ZDM') is used.

The default value of 'WDR' is 0.

'WDT' β€” Window Top β€” Real

When Conpack does the call to 'SET', the parameter 'WDB' is used to determine argument number 8 β€” the user Y coordinate at the top of the window. (Yes, it really says 'WDB' in there, I'm just the messenger 🫠.) Anyway:

  • If 'WDT' is not equal to 'WDB', then 'WDT' is used.
  • If 'WDT' is equal to 'WDB', but 'YCN' is not equal to 'YC1', then 'YCN' is used.
  • Otherwise, the value REAL('ZDN') is used.

The default value of 'WDT' is 0.

'WSO' β€” Workspace Overflow Flag β€” Integer

'WSO' is your girl for "what do we do when the workspace overflows" (real or integer overflow, both count). The options, bestie:

  • The value 0 means execution terminates with a fatal-error call to SETER. πŸ’€
  • The value 1 means an error message gets written to the error file, and then execution continues.
  • The value 2 means no error message gets written, and execution continues.
When execution continues, the resulting plot will be incomplete. The values of 'IWU' and 'RWU' may be retrieved to find out how much workspace would have been used if the call where the overflow happened had actually succeeded β€” but heads up: if you supply those amounts on a later run, you are not assured the workspace overflow will be averted. No cap.

The default value of 'WSO' is 1.

'XC1' β€” X Coordinate at Index 1 β€” Real

'XC1' is the X coordinate value that goes with a value of 1 for the first subscript of the data array β€” before any mapping implied by a non-zero 'MAP'. If 'XC1' equals 'XCM', then 1 gets used instead.

The default value of 'XC1' is 0.

'XCM' β€” X Coordinate at Index M β€” Real

'XCM' is the X coordinate value that goes with a value of 'ZDM' for the first subscript of the data array β€” again, before any mapping implied by a non-zero 'MAP'. If 'XC1' equals 'XCM', then REAL('ZDM') gets used instead.

The default value of 'XCM' is 0.

'YC1' β€” Y Coordinate at Index 1 β€” Real

'YC1' is the Y coordinate value that goes with a value of 1 for the second subscript of the data array, prior to any mapping implied by a non-zero 'MAP'. If 'YC1' equals 'YCM', then 1 gets used.

The default value of 'YC1' is 0.

'YCN' β€” Y Coordinate at Index N β€” Real

'YCN' is the Y coordinate value that goes with a value of 'ZDN' for the second subscript of the data array, prior to any mapping implied by a non-zero 'MAP'. If 'YC1' equals 'YCN', then REAL('ZDN') gets used.

The default value of 'YCN' is 0.

'ZD1' β€” ZDAT 1st Dimension β€” Integer

'ZD1' is the first dimension of the array ZDAT, which holds the data you're contouring. Here's how it gets set:

  • If CPRECT is called, it sets 'ZD1' (the argument KZDT is the desired value).
  • If CPSPS1 or CPSPS2 is called, it either picks a value for 'ZD1' (if 'ZDS' is non-zero) or expects you to have already done it (if 'ZDS' is zero).

The default value of 'ZD1' is 1.

'ZDM' β€” Z Data Array Dimension M β€” Integer

'ZDM' is the first dimension of the array of data to be contoured, and its value will be less than or equal to the value of 'ZD1'. The deets:

  • If CPRECT is called, it sets 'ZDM' (the argument MZDT is the desired value).
  • If CPSPS1 or CPSPS2 is called, it either picks a value for 'ZDM' (if 'ZDS' is non-zero) or expects the user to have done so (if 'ZDS' is zero).

The default value of 'ZDM' is 1.

'ZDN' β€” Z Data Array Dimension N β€” Integer

'ZDN' is the second dimension of the array of data to be contoured. Like so:

  • If CPRECT is called, it sets 'ZDN' (the argument NZDT is the desired value).
  • If CPSPS1 or CPSPS2 is called, it either picks a value for 'ZDN' (if 'ZDS' is non-zero) or expects the user to have done so (if 'ZDS' is zero).

The default value of 'ZDN' is 1.

'ZDS' β€” ZDAT Dimension Selector β€” Integer

If 'ZDS' is non-zero, then CPSPS1 or CPSPS2 will select values for 'ZD1', 'ZDM', and 'ZDN'. Otherwise, those are expected to have been set by you, bestie.

Note that if the size of the dense array is not a product of the size of the sparse array and some perfect square, the aspect ratio of the dense grid may be slightly different from that of the sparse grid. πŸ™ˆ

The default value of 'ZDS' is 1.

'ZDU' β€” Z Data Value, Unscaled β€” Real

'ZDU' is literally just like 'ZDV' (which see, right below 🌸), except the value is unscaled.

'ZDV' β€” Z Data Value β€” Real

'ZDV' is mostly there for output, okay? Its value may be retrieved in a user version of CPCHHL to grab the value of the high or low that's currently being labeled.

And if you want a character string representing that value, CPGETC can hand it to you (as modified by the current scale factor). So: to get the character representation of an arbitrary value in a form consistent with the other values on a contour plot, set 'ZDV' with a call to CPSETR and then retrieve the value of 'ZDV' with a call to CPGETC. And if you want an unscaled value instead, use the parameter name 'ZDU' in the call to CPGETC. Slay. ✨

'ZMN' β€” Z Minimum Value β€” Real

The minimum value in the field, as found by CPRECT, CPSPS1, or CPSPS2. For output only.

'ZMX' β€” Z Maximum Value β€” Real

The maximum value in the field, as found by CPRECT, CPSPS1, or CPSPS2. For output only.


🌈 SEE ALSO 🌈

  • Online: cpgetc, cpgeti, cpgetr, cprset, cpsetc, cpseti, cpsetr
  • Hardcopy: NCAR Graphics Contouring and Mapping Tutorial

Copyright (C) 1987-2009
University Corporation for Atmospheric Research
The use of this Software is governed by a License Agreement.

and that's the whole page, bestie πŸŽ€ that was the UNIX flavor of Conpack_params(3NCARG), dated March 1993 β€” go forth and contour, you absolute icon πŸ‘‘πŸ’