dpchcs.f
SUBROUTINE DPCHCS (SWITCH, N, H, SLOPE, D, INCFD, IERR)
C***BEGIN PROLOGUE DPCHCS
....
....
Warning: this routine is not intended to be user-callable.
....
....
C***SUBSIDIARY
C***PURPOSE Adjusts derivative values for DPCHIC
C***LIBRARY SLATEC (PCHIP)
C***TYPE DOUBLE PRECISION (PCHCS-S, DPCHCS-D)
C***AUTHOR Fritsch, F. N., (LLNL)
C***DESCRIPTION
C
C DPCHCS: DPCHIC Monotonicity Switch Derivative Setter.
C
C Called by DPCHIC to adjust the values of D in the vicinity of a
C switch in direction of monotonicity, to produce a more "visually
C pleasing" curve than that given by DPCHIM .
C
C ----------------------------------------------------------------------
C
C Calling sequence:
C
C PARAMETER (INCFD = ...)
C INTEGER N, IERR
C DOUBLE PRECISION SWITCH, H(N), SLOPE(N), D(INCFD,N)
C
C CALL DPCHCS (SWITCH, N, H, SLOPE, D, INCFD, IERR)
C
C Parameters:
C
C SWITCH -- (input) indicates the amount of control desired over
C local excursions from data.
C
C N -- (input) number of data points. (assumes N.GT.2 .)
C
C H -- (input) real*8 array of interval lengths.
C SLOPE -- (input) real*8 array of data slopes.
C If the data are (X(I),Y(I)), I=1(1)N, then these inputs are:
C H(I) = X(I+1)-X(I),
C SLOPE(I) = (Y(I+1)-Y(I))/H(I), I=1(1)N-1.
C
C D -- (input) real*8 array of derivative values at the data points,
C as determined by DPCHCI.
C (output) derivatives in the vicinity of switches in direction
C of monotonicity may be adjusted to produce a more "visually
C pleasing" curve.
C The value corresponding to X(I) is stored in
C D(1+(I-1)*INCFD), I=1(1)N.
C No other entries in D are changed.
C
C INCFD -- (input) increment between successive values in D.
C This argument is provided primarily for 2-D applications.
C
C IERR -- (output) error flag. should be zero.
C If negative, trouble in DPCHSW. (should never happen.)
C
C -------
C WARNING: This routine does no validity-checking of arguments.
C -------
C
C Fortran intrinsics used: ABS, MAX, MIN.
C
C***SEE ALSO DPCHIC
C***ROUTINES CALLED DPCHST, DPCHSW
C***REVISION HISTORY (YYMMDD)
C 820218 DATE WRITTEN
C 820617 Redesigned to (1) fix problem with lack of continuity
C approaching a flat-topped peak (2) be cleaner and
C easier to verify.
C Eliminated subroutines PCHSA and PCHSX in the process.
C 820622 1. Limited fact to not exceed one, so computed D is a
C convex combination of DPCHCI value and DPCHSD value.
C 2. Changed fudge from 1 to 4 (based on experiments).
C 820623 Moved PCHSD to an inline function (eliminating MSWTYP).
C 820805 Converted to SLATEC library version.
C 870707 Corrected conversion to double precision.
C 870813 Minor cosmetic changes.
C 890411 Added SAVE statements (Vers. 3.2).
C 890531 Changed all specific intrinsics to generic. (WRB)
C 890831 Modified array declarations. (WRB)
C 891006 Modified spacing in computation of DFLOC. (WRB)
C 891006 REVISION DATE from Version 3.2
C 891214 Prologue converted to Version 4.0 format. (BAB)
C 900328 Added TYPE section. (WRB)
C 910408 Updated AUTHOR section in prologue. (WRB)
C 930503 Improved purpose. (FNF)
C***END PROLOGUE DPCHCS