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

📄 serial_mesh.h

📁 一个用来实现偏微分方程中网格的计算库
💻 H
字号:
// $Id: serial_mesh.h 2803 2008-04-23 21:14:29Z roystgnr $// The libMesh Finite Element Library.// Copyright (C) 2002-2007  Benjamin S. Kirk, John W. Peterson  // This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.  // This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Lesser General Public License for more details.  // You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA#ifndef __serial_mesh_h__#define __serial_mesh_h__// C++ Includes   -----------------------------------// Local Includes -----------------------------------#include "unstructured_mesh.h"// Prototype this function so we can delcare it a friend.class SerialMesh;namespace MeshTools {  namespace Private {    void fix_broken_node_and_element_numbering (SerialMesh &);  }}/** * The \p SerialMesh class is derived from the \p MeshBase class, * and currently represents the default Mesh implementation. * Most methods for this class are found in MeshBase, and most * implementation details are found in UnstructuredMesh.*/// ------------------------------------------------------------// Mesh class definitionclass SerialMesh : public UnstructuredMesh{ public:  /**   * Constructor.  Requires the dimension and optionally   * a processor id.  Note that \p proc_id should always   * be provided for multiprocessor applications.   */  SerialMesh (unsigned int d);  /**   * Copy-constructor.  This should be able to take a   * serial or parallel mesh.   */  SerialMesh (const UnstructuredMesh& other_mesh);  /**   * Copy-constructor, possibly specialized for a   * serial mesh.   */  SerialMesh (const SerialMesh& other_mesh);  /**   * Virtual copy-constructor, creates a copy of this mesh   */  virtual AutoPtr<MeshBase> clone () const    { return AutoPtr<MeshBase>(new SerialMesh(*this)); }  /**   * Destructor.   */  virtual ~SerialMesh();  /**   * Clear all internal data.   */  virtual void clear();  /**   * Remove NULL elements from arrays   */  virtual void renumber_nodes_and_elements ();  virtual unsigned int n_nodes () const { return _nodes.size(); }  virtual unsigned int max_node_id () const { return _nodes.size(); }  virtual void reserve_nodes (const unsigned int nn) { _nodes.reserve (nn); }  virtual unsigned int n_elem ()  const { return _elements.size(); }  virtual unsigned int max_elem_id ()  const { return _elements.size(); }  virtual void reserve_elem (const unsigned int ne) { _elements.reserve (ne); }  // SerialMesh has no caches to update  virtual void update_parallel_id_counts () {}  /**   * For meshes that don't store points/elems, these functions may be an issue!   */  virtual const Point& point (const unsigned int i) const ;  virtual const Node&  node  (const unsigned int i) const ;  virtual Node& node (const unsigned int i) ;  virtual const Node* node_ptr (const unsigned int i) const ;  virtual Node* & node_ptr (const unsigned int i) ;  virtual Elem* elem (const unsigned int i) const ;  /**   * functions for adding /deleting nodes elements.   */  virtual Node* add_point (const Point& p,			   const unsigned int id =			     DofObject::invalid_id,			   const unsigned int proc_id =			     DofObject::invalid_processor_id);  virtual Node* add_node (Node* n) ;  virtual void delete_node (Node* n) ;  virtual void renumber_node (unsigned int old_id, unsigned int new_id);  virtual Elem* add_elem (Elem* e) ;  virtual Elem* insert_elem (Elem* e) ;  virtual void delete_elem (Elem* e) ;  virtual void renumber_elem (unsigned int old_id, unsigned int new_id);  friend void MeshTools::Private::fix_broken_node_and_element_numbering (SerialMesh &);  public:  /**   * Elem iterator accessor functions.   */  element_iterator elements_begin ();  element_iterator elements_end   ();  element_iterator active_elements_begin ();  element_iterator active_elements_end   ();  element_iterator ancestor_elements_begin ();  element_iterator ancestor_elements_end   ();  element_iterator subactive_elements_begin ();  element_iterator subactive_elements_end   ();  element_iterator not_active_elements_begin ();  element_iterator not_active_elements_end   ();  element_iterator not_ancestor_elements_begin ();  element_iterator not_ancestor_elements_end   ();  element_iterator not_subactive_elements_begin ();  element_iterator not_subactive_elements_end   ();  element_iterator local_elements_begin ();  element_iterator local_elements_end   ();  element_iterator not_local_elements_begin ();  element_iterator not_local_elements_end   ();  element_iterator active_local_elements_begin ();  element_iterator active_local_elements_end   ();  element_iterator active_not_local_elements_begin ();  element_iterator active_not_local_elements_end   ();  element_iterator level_elements_begin (const unsigned int level);  element_iterator level_elements_end   (const unsigned int level);  element_iterator not_level_elements_begin (const unsigned int level);  element_iterator not_level_elements_end   (const unsigned int level);  element_iterator local_level_elements_begin (const unsigned int level);  element_iterator local_level_elements_end   (const unsigned int level);  element_iterator local_not_level_elements_begin (const unsigned int level);  element_iterator local_not_level_elements_end   (const unsigned int level);  element_iterator pid_elements_begin (const unsigned int proc_id);  element_iterator pid_elements_end   (const unsigned int proc_id);  element_iterator type_elements_begin (const ElemType type);  element_iterator type_elements_end   (const ElemType type);  element_iterator active_type_elements_begin (const ElemType type);  element_iterator active_type_elements_end   (const ElemType type);  element_iterator active_pid_elements_begin (const unsigned int proc_id);  element_iterator active_pid_elements_end   (const unsigned int proc_id);  element_iterator unpartitioned_elements_begin ();  element_iterator unpartitioned_elements_end ();      /**   * const Elem iterator accessor functions.   */  const_element_iterator elements_begin() const;  const_element_iterator elements_end()   const;    const_element_iterator active_elements_begin() const;  const_element_iterator active_elements_end()   const;    const_element_iterator ancestor_elements_begin() const;  const_element_iterator ancestor_elements_end()   const;    const_element_iterator subactive_elements_begin() const;  const_element_iterator subactive_elements_end()   const;    const_element_iterator not_active_elements_begin() const;  const_element_iterator not_active_elements_end()   const;  const_element_iterator not_ancestor_elements_begin() const;  const_element_iterator not_ancestor_elements_end()   const;  const_element_iterator not_subactive_elements_begin() const;  const_element_iterator not_subactive_elements_end()   const;  const_element_iterator local_elements_begin () const;  const_element_iterator local_elements_end   () const;  const_element_iterator not_local_elements_begin () const;  const_element_iterator not_local_elements_end   () const;  const_element_iterator active_local_elements_begin () const;  const_element_iterator active_local_elements_end   () const;  const_element_iterator active_not_local_elements_begin () const;  const_element_iterator active_not_local_elements_end   () const;  const_element_iterator level_elements_begin (const unsigned int level) const;  const_element_iterator level_elements_end   (const unsigned int level) const;  const_element_iterator not_level_elements_begin (const unsigned int level) const;  const_element_iterator not_level_elements_end   (const unsigned int level) const;  const_element_iterator local_level_elements_begin (const unsigned int level) const;  const_element_iterator local_level_elements_end   (const unsigned int level) const;  const_element_iterator local_not_level_elements_begin (const unsigned int level) const;  const_element_iterator local_not_level_elements_end   (const unsigned int level) const;  const_element_iterator pid_elements_begin (const unsigned int proc_id) const;  const_element_iterator pid_elements_end   (const unsigned int proc_id) const;  const_element_iterator type_elements_begin (const ElemType type) const;  const_element_iterator type_elements_end   (const ElemType type) const;  const_element_iterator active_type_elements_begin (const ElemType type) const;  const_element_iterator active_type_elements_end   (const ElemType type) const;  const_element_iterator active_pid_elements_begin (const unsigned int proc_id) const;  const_element_iterator active_pid_elements_end   (const unsigned int proc_id) const;  const_element_iterator unpartitioned_elements_begin () const;  const_element_iterator unpartitioned_elements_end () const;                /**   * non-const Node iterator accessor functions.   */  node_iterator nodes_begin();  node_iterator nodes_end();    node_iterator active_nodes_begin();  node_iterator active_nodes_end();  node_iterator local_nodes_begin  ();  node_iterator local_nodes_end    ();    node_iterator pid_nodes_begin (const unsigned int proc_id);  node_iterator pid_nodes_end   (const unsigned int proc_id);  /**   * const Node iterator accessor functions.   */  const_node_iterator nodes_begin() const;  const_node_iterator nodes_end()   const;  const_node_iterator active_nodes_begin() const;  const_node_iterator active_nodes_end()   const;  const_node_iterator local_nodes_begin  () const;  const_node_iterator local_nodes_end    () const;  const_node_iterator pid_nodes_begin (const unsigned int proc_id) const;  const_node_iterator pid_nodes_end   (const unsigned int proc_id) const;  protected:  /**   * The verices (spatial coordinates) of the mesh.   */  std::vector<Node*> _nodes;    /**   * The elements in the mesh.   */  std::vector<Elem*> _elements;private:    /**   * Typedefs for the container implementation.  In this case,   * it's just a std::vector<Elem*>.   */  typedef std::vector<Elem*>::iterator             elem_iterator_imp;  typedef std::vector<Elem*>::const_iterator const_elem_iterator_imp;  /**   * Typedefs for the container implementation.  In this case,   * it's just a std::vector<Node*>.   */  typedef std::vector<Node*>::iterator             node_iterator_imp;  typedef std::vector<Node*>::const_iterator const_node_iterator_imp;};#endif

⌨️ 快捷键说明

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