function tdsWaterHeating()
{
  var me = this;

  // Properties
  me.conGE = 0;
  me.conGG = 0;
  me.conEE = 0;
  me.conEG = 0;
  me.costE = 0;
  me.costG = 0;

  me.rateE = 0;
  me.rateG = 0;

  me.duration    = 0;
  me.useRate     = 0;
  me.tempFSource = 0;
  me.tempKSource = 0;
  me.tempFOutlet = 0;
  me.tempKOutlet = 0;

  me.factorE = 0;
  me.factorG = 0;

  me.volume  = 0;
  me.density = 0;
  me.mass    = 0;
  me.energy  = 0;

  // Methods Private
  function setDensity()
  {
    var C0 = -4.68692491e+3 * 1;
    var C1 =  7.96841788e+1 * me.tempKOutlet;
    var C2 = -4.48172832e-1 * Math.pow(me.tempKOutlet, 2);
    var C3 =  1.27128210e-3 * Math.pow(me.tempKOutlet, 3);
    var C4 = -1.82257720e-6 * Math.pow(me.tempKOutlet, 4);
    var C5 =  1.05030115e-9 * Math.pow(me.tempKOutlet, 5);

    me.density = C5 + C4 + C3 + C2 + C1 + C0;
  }

  function setEnergy()
  {
    var C1 =  5.22682539e+02 / 1;
    var C2 = -9.14743564e+00 / 2;
    var C3 =  6.72995477e-02 / 3;
    var C4 = -2.64256978e-04 / 4;
    var C5 =  5.83978176e-07 / 5;
    var C6 = -6.88577059e-10 / 6;
    var C7 =  3.38444127e-13 / 7;

    var C1L =  C1 * Math.pow(me.tempKSource, 1);
    var C2L =  C2 * Math.pow(me.tempKSource, 2);
    var C3L =  C3 * Math.pow(me.tempKSource, 3);
    var C4L =  C4 * Math.pow(me.tempKSource, 4);
    var C5L =  C5 * Math.pow(me.tempKSource, 5);
    var C6L =  C6 * Math.pow(me.tempKSource, 6);
    var C7L =  C7 * Math.pow(me.tempKSource, 7);

    var C1H =  C1 * Math.pow(me.tempKOutlet, 1);
    var C2H =  C2 * Math.pow(me.tempKOutlet, 2);
    var C3H =  C3 * Math.pow(me.tempKOutlet, 3);
    var C4H =  C4 * Math.pow(me.tempKOutlet, 4);
    var C5H =  C5 * Math.pow(me.tempKOutlet, 5);
    var C6H =  C6 * Math.pow(me.tempKOutlet, 6);
    var C7H =  C7 * Math.pow(me.tempKOutlet, 7);

    var L = C7L + C6L + C5L + C4L + C3L + C2L + C1L;
    var H = C7H + C6H + C5H + C4H + C3H + C2H + C1H;

    me.energy = me.mass * (H - L);
  }

  // Methods Privileged
  me.setProperties = function()
  {
    me.tempKSource  = ((me.tempFSource - 32) / 1.8) + 273.15	// Convert to Kelvin
    me.tempKOutlet  = ((me.tempFOutlet - 32) / 1.8) + 273.15	// Convert to Kelvin

    me.volume  = me.duration * me.useRate * 0.003785411784;	// Convert to M^3
    setDensity();
    me.mass    = me.volume * me.density;
    setEnergy();

    me.conGE = 0;
    me.conGG = (me.energy * 9.47813394499e-7) / me.factorG;	// Convert to Decatherm
    me.conEE = (me.energy / 3600) / me.factorE;			// Convert to KWH
    me.conEG = 0;

    me.costE = (me.rateE * me.conEE) + (me.rateG * me.conEG);
    me.costG = (me.rateE * me.conGE) + (me.rateG * me.conGG);
  }

  me.setPropertiesDefault = function()
  {
    me.rateE = 0.00;
    me.rateG = 7.21;

    me.duration    = 365;
    me.useRate     = 64.7;
    me.tempFSource = 50;
    me.tempFOutlet = 140;
    me.Capacity    = 40;

    me.factorE = 0.92;
    me.factorG = 0.59;

    me.setProperties();
  }
}