;+ ; NAME: ; INTERGRID ; ; PURPOSE: ; Performs grid interpolation using pre-calculated interpolation factors. ; Called by GOLDLOS and other line-of-sight calculation programs. ; ; CATEGORY: ; Utility ; ; CALLING SEQUENCE: ; INTERGRID,field,lonp1,lonp2,latp1,latp2,altp1,altp2,lonfac1,lonfac2,latfac1,latfac2,altfac,value ; ; INPUTS: ; field: 3D array of quantities to be interpolated; float ; lonp*: 3D array of precalculated indices of surrounding longitudes; integer ; latp*: 3D array of precalculated indices of surrounding latitude; integer ; altp*: 3D array of precalculated indices of surrounding altitudes; integer ; *fac*: 3D array of precalculated interpolation factors for lon, lat, alt; float ; ; OUTPUTS: ; value: 3D array of interpolated values along lines of sight; float ; ; COMMON BLOCKS: ; None ; ; PROCEDURE: ; Performs bi-linear interpolation in longitude and latitude. ; Performs logarithmic interpolation in altitude ; ; ROUTINES CALLED: ; None ; ; MODIFICATION HISTORY: ; Stan Solomon, 2015 ; ;+ pro intergrid,field,lonp1,lonp2,latp1,latp2,altp1,altp2,lonfac1,lonfac2,latfac1,latfac2,altfac,value y1 = field[lonp1,latp1,altp1]*lonfac1*latfac1 $ + field[lonp1,latp2,altp1]*lonfac1*latfac2 $ + field[lonp2,latp1,altp1]*lonfac2*latfac1 $ + field[lonp2,latp2,altp1]*lonfac2*latfac2 y2 = field[lonp1,latp1,altp2]*lonfac1*latfac1 $ + field[lonp1,latp2,altp2]*lonfac1*latfac2 $ + field[lonp2,latp1,altp2]*lonfac2*latfac1 $ + field[lonp2,latp2,altp2]*lonfac2*latfac2 value=y1*(y2/y1)^altfac wbad=where(finite(value) eq 0) if wbad[0] ne -1 then value[wbad]=0. return end