subroutine heden(val,eval) implicit none integer i,n parameter(n=34) double precision temp(n), den(n) double precision val,eval,slop,y_int data temp/ 0.2, 0.3, 0.4, 0.5, 0.6, & 0.7, 0.8, 0.9, 1.0, 1.1, & 1.2, 1.3, 1.4, 1.5, 1.6, & 1.7, 1.8, 1.9, 2.0, 2.1, & 2.2, 2.3, 2.4, 2.5, 2.6, & 2.8, 3.0, 3.2, 3.4, 3.6, & 3.8, 4.0, 4.2, 4.4/ ! (K) data den/ 0.1450, 0.1450, 0.1450, 0.1450, 0.1450, & 0.1450, 0.1450, 0.1450, 0.1450, 0.1450, & 0.1450, 0.1450, 0.1450, 0.1451, 0.1451, & 0.1452, 0.1453, 0.1454, 0.1456, 0.1458, & 0.1460, 0.1457, 0.1453, 0.1448, 0.1442, & 0.1429, 0.1412, 0.1392, 0.1369, 0.1343, & 0.1315, 0.1284, 0.1251, 0.1216/ ! (gm/cm^3) * do i=1,n-1 if(val.lt.temp(1).or.val.gt.temp(n)) then write(*,*) val,temp(1),temp(n) write(*,*) 'The value is out of range ... heden code' c stop elseif(val.eq.temp(i)) then eval = den(i) elseif(val.eq.temp(i+1)) then eval = den(i+1) elseif(val.gt.temp(i).and.val.lt.temp(i+1)) then slop = (den(i+1)-den(i))/(temp(i+1)-temp(i)) y_int = den(i) - slop*temp(i) eval = slop*val+y_int else continue endif enddo return end