public interface HeatModel {
    /** Sets the value at (x,y) to 'heat' where future steps do not alter this value at (x,y).
     * This replaces any previously pinned value, so that the previously pinned location will change
     * with future steps. */
    public void setPinned(int x, int y, double heat);
    
    /** Clears any previously pinned value, so that updates now alter that location's value. */
    public void clearPinned();
    
    /** Copies all current heat values into the 'result' array. */
    public void getAll(double[][] result);
    
    /** Steps the simulation forward one time step. */
    public void step();
    
    /** Retires any resources (e.g., threads) created by this model. */
    public void retire();
}
