RMNLIB |
(EXTRAP1D_LAPSERATE_X) |
|
SUBROUTINE EXTRAP1D_LAPSERATE_X(numInterpSets, srcNumLevels, destNumLevels, src_ijDim, dst_ijDim, vLevelSource, stateSource, stateDerivSource, posnDestInSrc, vLevelDestn, stateDestn, stateDerivDestn, extrapEnableDown, extrapEnableUp, extrapGuideDown, extrapGuideUp, flux, numExtArraysIn, numExtArraysOut, ExtArraysIn, ExtArraysOut)
integer, intent(in) :: numInterpSets integer, intent(in) :: srcNumLevels integer, intent(in) :: destNumLevels integer, intent(in) :: src_ijDim integer, intent(in) :: dst_ijDim real, dimension(src_ijDim, srcNumLevels), intent(in) :: vLevelSource real, dimension(src_ijDim, srcNumLevels), intent(in) :: stateSource real, dimension(src_ijDim, srcNumLevels), intent(in) :: stateDerivSource integer, dimension(dst_ijDim, destNumLevels), intent(in) :: posnDestInSrc real, dimension(dst_ijDim, destNumLevels), intent(in) :: vLevelDestn real, dimension(dst_ijDim, destNumLevels), intent(out) :: stateDestn real, dimension(dst_ijDim, destNumLevels), intent(out) :: stateDerivDestn logical, intent(in) :: extrapEnableDown, extrapEnableUp real, intent(in) :: extrapGuideDown, extrapGuideUp external flux integer, intent(in) :: numExtArraysIn integer, intent(in) :: numExtArraysOut real, dimension(src_ijDim, numExtArraysIn), intent(in) :: ExtArraysIn real, dimension(dst_ijDim, numExtArraysOut), intent(out) :: ExtArraysOut
DESCRIPTION For each destination level that is outside the set of source levels, a state value (but not a derivative) is extrapolated. The extrapolated value lies on a straight line that passes through the closest source level with the slope, extrapGuideDown (for a destination level that lies before [i.e. has a smaller index than] the source levels) or extrapGuideUp (for a destination level that lies after the source levels). Values that would be interpolated are untouched by the routine.
Author: Jeff Blezius - revised Oct 2003
ARGUMENTS
It can be noted that the arguments to all of the Interp1D_* and Extrap1D_* routines are identical, for ease of switching a call from one to another of them. You should examine the generic description of the arguments. The following are uses of the generic arguments that are specific to this routine:
Input: | |
extrapGuideDown | lapse rate below the vLevelSource values; i.e. the derivative of the state value with respect to the vertical level |
extrapGuideUp | lapse rate above the vLevelSource values; i.e. the derivative of the state value with respect to the vertical level |
flux | unused |
ExtArraysIn | unused |
Output: | |
stateDerivDestn(dst_ijDim, dstNumLevels) | unused |
ExtArraysOut | unused |