/**
 * The 2D heat equation.
 */
package edu.colorado.csdms.heat;

import java.util.List;

/**
 * Solve the heat equation on a grid.
 */
public class Heat {

  private List<Double> shape;
  private List<Double> spacing;
  private List<Double> origin;
  private Double alpha;
  private Double time;
  private Double timeStep;
  private List<Double> temperature;
  private List<Double> nextTemperature;

  /**
   * Create a new Heat model.
   * 
   * @param shape the shape of the solution grid as (rows,columns)
   * @param spacing distance between rows and columns
   * @param origin coordinates of lower left corner of grid
   * @param alpha parameter in heat equation
   */
  public Heat(List<Double> shape, List<Double> spacing, List<Double> origin,
      Double alpha) {
    ;
  }

  /**
   * Create a Heat model from settings in a file.
   * 
   * @param fileName a YAML file with Heat model settings
   */
  public Heat(String fileName) {
    ;
  }

  public List<Double> getShape() {
    return shape;
  }

  public void setShape(List<Double> shape) {
    this.shape = shape;
  }

  public List<Double> getSpacing() {
    return spacing;
  }

  public void setSpacing(List<Double> spacing) {
    this.spacing = spacing;
  }

  public List<Double> getOrigin() {
    return origin;
  }

  public void setOrigin(List<Double> origin) {
    this.origin = origin;
  }

  public Double getAlpha() {
    return alpha;
  }

  public void setAlpha(Double alpha) {
    this.alpha = alpha;
  }

  public Double getTime() {
    return time;
  }

  public void setTime(Double time) {
    this.time = time;
  }

  public Double getTimeStep() {
    return timeStep;
  }

  public void setTimeStep(Double timeStep) {
    this.timeStep = timeStep;
  }

  public List<Double> getTemperature() {
    return temperature;
  }

  public void setTemperature(List<Double> temperature) {
    this.temperature = temperature;
  }

  public List<Double> getNextTemperature() {
    return nextTemperature;
  }

  public void setNextTemperature(List<Double> nextTemperature) {
    this.nextTemperature = nextTemperature;
  }

  /**
   * Calculate new temperatures for the next time step.
   */
  public void advanceInTime() {
    ;
  }

  /**
   * @param args
   */
  public static void main(String[] args) {
    ;
  }

}

@@ -162,30 +162,31 @@
 rivate List%3C
-Double
+Integer
 %3E shape;%0A  p
@@ -454,116 +454,267 @@
 ram 
-shape the shape of the solution grid as (rows,columns)%0A   * @param spacing distance between rows and columns
+nRows the number of rows in the solution grid%0A   * @param nCols the number of columns in the solution grid%0A   * @param dx distance between columns in grid%0A   * @param dy distance between rows in grid%0A   * @param xStart coordinates of lower left corner of grid
 %0A   
@@ -722,22 +722,22 @@
  @param 
-origin
+yStart
  coordin
@@ -839,97 +839,519 @@
 eat(
-List%3CDouble%3E shape, List%3CDouble%3E spacing, List%3CDouble%3E origin,%0A      Double alpha) %7B%0A    
+Integer nRows, Integer nCols, Double dx, Double dy,%0A      Double xStart, Double yStart, Double alpha) %7B%0A%0A    this.shape.add(0, nRows);%0A    this.shape.add(1, nCols);%0A    this.spacing.add(0, dx);%0A    this.spacing.add(1, dy);%0A    this.origin.add(0, xStart);%0A    this.origin.add(1, yStart);%0A    this.alpha = alpha;%0A    this.time = 0.0;%0A%0A    Double minSpacing = Math.min(this.spacing.get(0), this.spacing.get(1));%0A    this.timeStep = Math.pow(minSpacing, 2.0) / (4.0 * this.alpha);%0A%0A    // Double ran = Math.random()
 ;%0A  
@@ -1533,30 +1533,31 @@
 public List%3C
-Double
+Integer
 %3E getShape()
@@ -1610,22 +1610,23 @@
 pe(List%3C
-Double
+Integer
 %3E shape)

Refactor parameters for Heat constructor