Skip to content
Snippets Groups Projects
AdaptBase.h 2.86 KiB
Newer Older
  • Learn to ignore specific revisions
  • // ============================================================================
    // ==                                                                        ==
    // == AMDiS - Adaptive multidimensional simulations                          ==
    // ==                                                                        ==
    
    // ==                                                                        ==
    // ============================================================================
    
    //
    // Software License for AMDiS
    //
    // Copyright (c) 2010 Dresden University of Technology 
    // All rights reserved.
    // Authors: Simon Vey, Thomas Witkowski et al.
    //
    // This file is part of AMDiS
    //
    // See also license.opensource.txt in the distribution.
    
    
    
    
    /** \file AdaptBase.h */
    
    #ifndef AMDIS_ADAPTBASE_H
    #define AMDIS_ADAPTBASE_H
    
    #include <string>
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
      /// Interface for adaption loops.
    
      class AdaptBase
      {
      public:
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Constructor
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        AdaptBase(std::string sname,
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
    	      ProblemIterationInterface *problemIteration_,
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
    	      AdaptInfo *adapt,
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
    	      ProblemTimeInterface *problemTime_ = NULL,
    	      AdaptInfo *initialAdaptInfo_ = NULL)
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          : name(sname),
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
    	problemIteration(problemIteration_),
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
    	adaptInfo(adapt),
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
    	problemTime(problemTime_),
    	initialAdaptInfo(initialAdaptInfo_)
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        {}
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Destructor
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        virtual ~AdaptBase() {}
    
    
        /** \brief
         * Pure virtual method. Must be overloaded by sub classes to perform
         * a concrete adaption loop. 
         */
        virtual int adapt() = 0;
    
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Returns \ref name
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        inline std::string getName() const 
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          return name; 
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        }
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Returns \ref problemIteration_
    
        inline ProblemIterationInterface *getProblemIteration() 
        {
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          return problemIteration;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        }
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        ///
    
        inline void setProblemIteration(ProblemIterationInterface *pii) 
        {
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          problemIteration = pii;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        }
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Returns \ref adaptInfo
    
        inline AdaptInfo *getAdaptInfo() 
        { 
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          return adaptInfo; 
        }
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Returns \ref problemTime_
    
        inline ProblemTimeInterface *getProblemTime() 
        {
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          return problemTime;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        }
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        ///
    
        inline void setProblemTime(ProblemTimeInterface *pti) 
        {
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          problemTime = pti;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Returns \ref initialAdaptInfo_
    
        inline AdaptInfo *getInitialAdaptInfo() 
        { 
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
          return initialAdaptInfo; 
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        }
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Name of the adaption loop
        std::string name;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Problem iteration interface
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        ProblemIterationInterface *problemIteration;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Main adapt info
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        AdaptInfo *adaptInfo;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// problem time interface
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        ProblemTimeInterface *problemTime;
    
    
        /** \brief
         * Adapt info for initial adapt. Will be given to 
         * problemTime_->solveInitialProblem().
         */
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        AdaptInfo *initialAdaptInfo;
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        /// Info level
    
    Thomas Witkowski's avatar
    Thomas Witkowski committed
        static int info;