function tankVolume (form) {

//assignment of process variables

var angle = form.angle.value
var tankdia = form.tankdia.value
var head = form.head.options[form.head.selectedIndex].text
var level = form.level.value


tankdia = parseFloat(tankdia)
level = parseFloat(level)
angle = parseFloat(angle)

//determine what type of head you have and volume

switch (head) {
      case "Flat":           
          
           //determine volume drained out
            var volume = 0.25*3.14*Math.pow(tankdia,2)*(level-0)
            break

      case "Hemispherical":
            var ellipticalHeadDepth = tankdia/2
            
//determine volume drained out
            if(level < ellipticalHeadDepth){            
            var volume = 3.14*(tankdia/2)*(  (Math.pow(level,2)-Math.pow(0,2)) - ( (2/(3*tankdia)) * (Math.pow(level,3)-Math.pow(0,3)) )) 
            }else{
                 if(level > ellipticalHeadDepth && 0 > ellipticalHeadDepth){
                 var volume = 0.25*3.14*Math.pow(tankdia,2)*(level-0)
                 }else{
                   var volumeCylinder = 0.25*3.14*Math.pow(tankdia,2)*(level-ellipticalHeadDepth)
                   var volumeHead = 3.14*(tankdia/2)*( (Math.pow(ellipticalHeadDepth,2)-Math.pow(0,2)) - ( (2/(3*tankdia)) * (Math.pow(ellipticalHeadDepth,3)-Math.pow(0,3)) ))
                   var volume = volumeCylinder + volumeHead 
                 }
            }
            break

      case "2:1 Elliptical":
            var ellipticalHeadDepth = tankdia/4

//determine volume drained out
            if(level < ellipticalHeadDepth){            
            var volume = 3.14*tankdia*(  (Math.pow(level,2)-Math.pow(0,2)) - ( (4/(3*tankdia)) * (Math.pow(level,3)-Math.pow(0,3)) ))
            }else{
                 if(level > ellipticalHeadDepth && 0 > ellipticalHeadDepth){
                 var volume = 0.25*3.14*Math.pow(tankdia,2)*(level-0)
                 }else{
                 var volumeCylinder = 0.25*3.14*Math.pow(tankdia,2)*(level-ellipticalHeadDepth)
                 var volumeHead = 3.14*tankdia*( (Math.pow(ellipticalHeadDepth,2)-Math.pow(0,2)) - ( (4/(3*tankdia)) * (Math.pow(ellipticalHeadDepth,3)-Math.pow(0,3)) ))
                 var volume = volumeCylinder + volumeHead
                 }
            }
            break
 

      case "Conical":
            var alphaAngle = 90-angle
            var angleRadians = (3.14/180)*alphaAngle
            var coneDepth = (tankdia/2)/Math.tan(angleRadians)       

//determine volume drained out
            if(level < coneDepth){            
            var volume = (3.14/3)*(Math.pow(Math.tan(angleRadians),2)) * (Math.pow(level,3) - Math.pow(0,3))
            }else{
                 if(level > coneDepth && 0 > coneDepth){
                 var volume = 0.25*3.14*Math.pow(tankdia,2)*(level-0)
                 }else{
                 var volumeCylinder = 0.25*3.14*Math.pow(tankdia,2)*(level-coneDepth)
                 var volumeHead = (3.14/3)*(Math.pow(Math.tan(angleRadians),2)) * (Math.pow(coneDepth,3) - Math.pow(0,3))
                 var volume = volumeCylinder + volumeHead
                 }
            }
            break
}

var volumeGallons = volume*7.48
volumeGallons = volumeGallons*100
volumeGallons = Math.round(volumeGallons)
volumeGallons = volumeGallons/100

form.vesselVolume.value = volumeGallons

     if (head == "Conical"){
     form.conicalAngle.value = angle
     }else{
     form.conicalAngle.value = "NA"
     }

}

<!--Copyright © 1999 Beacon Engineers Inc. All Rights Reserved.-->