// ============================================================================
// ==                                                                        ==
// == AMDiS - Adaptive multidimensional simulations                          ==
// ==                                                                        ==
// ============================================================================
// ==                                                                        ==
// ==  crystal growth group                                                  ==
// ==                                                                        ==
// ==  Stiftung caesar                                                       ==
// ==  Ludwig-Erhard-Allee 2                                                 ==
// ==  53175 Bonn                                                            ==
// ==  germany                                                               ==
// ==                                                                        ==
// ============================================================================
// ==                                                                        ==
// ==  http://www.caesar.de/cg/AMDiS                                         ==
// ==                                                                        ==
// ============================================================================

/** \file AdaptStationary.h */

/** \defgroup Adaption Adaption module
 * @{ <img src="adaption.png"> @}
 *
 * \brief
 * Contains all classes needed for adaption.
 */

#ifndef AMDIS_ADPATSTATIONARY_H
#define AMDIS_ADPATSTATIONARY_H

#include <string>
#include "Flag.h"
#include "AdaptInfo.h"
#include "AdaptBase.h"
#include "AMDiS_fwd.h"

namespace AMDiS {

  /** \ingroup Adaption 
   * \brief
   * AdaptStationary contains information about the adaptive procedure and the
   * adapt procedure itself
   */
  class AdaptStationary : public AdaptBase
  {
  public:
    /// Creates a AdaptStationary object with given name.
    AdaptStationary(const std::string &name,
		    ProblemIterationInterface *prob,
		    AdaptInfo *info);

    /// Destructor
    virtual ~AdaptStationary() {}

    /// Implementation of AdaptBase::adapt()
    virtual int adapt();

  protected:
    /// Initialisation 
    void initialize();
  };

}

#endif // AMDIS_ADPATSTATIONARY_H