public class Tank {
	private double V; 						// Volume
	private String tankName;

	private double C= Double.MAX_VALUE; 	// Cost($)
	private double R= Double.MAX_VALUE; 	// Radius(m)
	private double L= Double.MAX_VALUE; 	// Length(m)
	private double m= Double.MAX_VALUE; 	// Mass(kg)
	private double w= Double.MAX_VALUE; 	// Weld length(m)

	public static final double t = 0.04; 	// Thickness of walls(m)
	public static final double p = 8000; 	// Density of steel(kg/m^3)
	public static final double Rmin = 0.5; 	// Min radius(m)
	public static final double Rmax = 2.0; 	// Max radius(m)
	public static final double Rincr = 0.1;	// Increment when searching for min cost(m)

	public Tank(double v, String n) {
		this.V = v;
		tankName = n;
	}
	// Get methods
	public double getCost() {
		return C;
	}
	public double getLength() {
		return L;
	}
	public double getMass() {
		return m;
	}
	public double getRadius() {
		return R;
	}
	public String getTankName() {
		return tankName;
	}
	public double getVolume() {
		return V;
	}
	public double getWeldLen() {
		return w;
	}

	// Set method	
	public void setTankName(String string) {
		tankName = string;
	}
	
	// Compute tank dimensions, 
	
	public void computeCost(double c1, double c2) {
		double eps = 0.001; // Prevent premature end of loop
		double bestC = Double.MAX_VALUE;
		double bestR = Double.MAX_VALUE;
		for (double r = Rmin; r <= Rmax + eps; r += Rincr) {
			double len = V / (Math.PI * r * r);
			double weld = 8.0 * Math.PI * (r + 0.5 * t);  //Eq. 6
			double v2 = 2.0 * Math.PI * (r + t) * (r + t) * t;  //Eq. 5
			double v1 = len * Math.PI * ((r + t) * (r + t) - r * r); //Eq. 4
			double mass = p * (v1 + v2); //Eq. 3
			double cost = c1 * mass + c2 * weld; //Eq. 2

			if (cost < bestC) {
				bestC = cost;
				bestR = r;
			}
		}
		C= bestC;
		R= bestR;
		L= V/(Math.PI*R*R);
		w= 8.0 * Math.PI * (R + 0.5 * t);   //Eq. 6
		double vol2 = 2.0 * Math.PI * (R + t) * (R + t) * t; //Eq. 4
		double vol1 = L * Math.PI * ((R + t) * (R + t) - R * R); //Eq. 5
		m = p * (vol1 + vol2);		//Eq. 3
	}
}