#include <misc.h>
#include <params.h>
subroutine lcbas (grd, bas1, bas2) 1,1
!-----------------------------------------------------------------------
!
! Purpose:
! Evaluate the partial Lagrangian cubic basis functions (denominator
! only ) for the grid points and gather grid values
!
! Method:
!
! Author: J. Olson
!
!-----------------------------------------------------------------------
!
! $Id: lcbas.F90,v 1.1.2.1 2002/06/15 13:46:58 erik Exp $
! $Author: erik $
!
!-----------------------------------------------------------------------
use shr_kind_mod
, only: r8 => shr_kind_r8
implicit none
!------------------------------Arguments--------------------------------
real(r8), intent(in) :: grd(4) ! grid stencil
real(r8), intent(out):: bas1(4) ! grid values on stencil
real(r8), intent(out):: bas2(4) ! lagrangian basis functions
!-----------------------------------------------------------------------
!---------------------------Local variables-----------------------------
real(r8) x0mx1 ! |
real(r8) x0mx2 ! |
real(r8) x0mx3 ! |- grid value differences used in weights
real(r8) x1mx2 ! |
real(r8) x1mx3 ! |
real(r8) x2mx3 ! |
!-----------------------------------------------------------------------
!
x0mx1 = grd(1) - grd(2)
x0mx2 = grd(1) - grd(3)
x0mx3 = grd(1) - grd(4)
x1mx2 = grd(2) - grd(3)
x1mx3 = grd(2) - grd(4)
x2mx3 = grd(3) - grd(4)
bas1(1) = grd(1)
bas1(2) = grd(2)
bas1(3) = grd(3)
bas1(4) = grd(4)
bas2(1) = 1./ ( x0mx1 * x0mx2 * x0mx3 )
bas2(2) = -1./ ( x0mx1 * x1mx2 * x1mx3 )
bas2(3) = 1./ ( x0mx2 * x1mx2 * x2mx3 )
bas2(4) = -1./ ( x0mx3 * x1mx3 * x2mx3 )
return
end subroutine lcbas