⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 disjointboxlayout.h

📁 自适应网格划分通用程序包
💻 H
字号:
// This software is copyright (C) by the Lawrence Berkeley
// National Laboratory.  Permission is granted to reproduce
// this software for non-commercial purposes provided that
// this notice is left intact.
// 
// It is acknowledged that the U.S. Government has rights to
// this software under Contract DE-AC03-765F00098 between
// the U.S.  Department of Energy and the University of
// California.
//
// This software is provided as a professional and academic
// contribution for joint exchange. Thus it is experimental,
// is provided ``as is'', with no warranties of any kind
// whatsoever, no support, no promise of updates, or printed
// documentation. By using this software, you acknowledge
// that the Lawrence Berkeley National Laboratory and
// Regents of the University of California shall have no
// liability with respect to the infringement of other
// copyrights by any part of this software.
//

#ifndef DISJOINTBOXLAYOUT_H
#define DISJOINTBOXLAYOUT_H

#ifndef WRAPPER
#include "Vector.H"
#include "BoxLayout.H"
#include "ProblemDomain.H"
#endif /*WRAPPER*/


class DisjointBoxLayout: public BoxLayout
{

public:

  friend class Copier;



  DisjointBoxLayout();


  DisjointBoxLayout(const Vector<Box>& a_boxes,
                    const Vector<int>& a_procIDs);


  DisjointBoxLayout(const Vector<Box>& a_boxes,
                    const Vector<int>& a_procIDs,
                    const ProblemDomain& a_physDomain);


  virtual
  ~DisjointBoxLayout(){;}


  virtual void
  define(const Vector<Box>& a_boxes,
         const Vector<int>& a_procIDs);


  void
  define(BoxLayout& a_layout);


  void
  define(BoxLayout& a_layout, const ProblemDomain& a_physDomain);


  virtual void
  define(const Vector<Box>& a_boxes,
         const Vector<int>& a_procIDs,
         const ProblemDomain& a_physDomain);


  virtual void
  define_pd(const Vector<Box>& a_boxes,
            const Vector<int>& a_procIDs,
            const ProblemDomain& a_physDomain)
  {define(a_boxes, a_procIDs,  a_physDomain);}



  bool
  isDisjoint() const;


  bool checkPeriodic(const ProblemDomain& a_domain) const;

  bool checkDomains(const DisjointBoxLayout& a_dbl) const;



  virtual void
  close();


  virtual void
  deepCopy(const DisjointBoxLayout& a_source);


  virtual void
  deepCopy(const BoxLayout& a_source);


  virtual void
  deepCopy(const BoxLayout& a_source, const ProblemDomain& a_physDomain);


  friend void coarsen(DisjointBoxLayout& output, 
                      const DisjointBoxLayout& input, 
                      int refinement);


  friend void refine(DisjointBoxLayout& output, 
                     const DisjointBoxLayout& input, 
                     int refinement);



  friend void adjCellLo(DisjointBoxLayout& a_output,
                        const DisjointBoxLayout& a_input,
                        int a_dir, int a_len=1);



  friend void adjCellHi(DisjointBoxLayout& a_output,
                        const DisjointBoxLayout& a_input,
                        int a_dir, int a_len=1);
  

protected:
  const ProblemDomain& physDomain() const;

private:
  ProblemDomain m_physDomain;

};
void adjCellLo_dbl(DisjointBoxLayout& a_output,
                   const DisjointBoxLayout& a_input,
                   int a_dir, int a_len);
void adjCellHi_dbl(DisjointBoxLayout& a_output,
                   const DisjointBoxLayout& a_input,
                   int a_dir, int a_len);
void coarsen_dbl(DisjointBoxLayout& output, 
                 const DisjointBoxLayout& input, 
                 int refinement);
void refine_dbl(DisjointBoxLayout& output, 
                const DisjointBoxLayout& input, 
                int refinement);

#ifndef WRAPPER
inline
void adjCellLo_dbl(DisjointBoxLayout& a_output,
                   const DisjointBoxLayout& a_input,
                   int a_dir, int a_len)
{ adjCellLo(a_output,a_input,a_dir,a_len);}
inline
void adjCellHi_dbl(DisjointBoxLayout& a_output,
                   const DisjointBoxLayout& a_input,
                   int a_dir, int a_len)
{ adjCellHi(a_output,a_input,a_dir,a_len);}
inline
void coarsen_dbl(DisjointBoxLayout& output, 
                 const DisjointBoxLayout& input, 
                 int refinement)
{ coarsen(output, input, refinement);}
inline
void refine_dbl(DisjointBoxLayout& output, 
                const DisjointBoxLayout& input, 
                int refinement)
{ refine(output, input, refinement);}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -