00001 #ifdef CH_LANG_CC 00002 /* 00003 * _______ __ 00004 * / ___/ / ___ __ _ / / ___ 00005 * / /__/ _ \/ _ \/ V \/ _ \/ _ \ 00006 * \___/_//_/\___/_/_/_/_.__/\___/ 00007 * Please refer to Copyright.txt, in Chombo's root directory. 00008 */ 00009 #endif 00010 00011 // ANAG, LBNL 00012 00013 #ifndef _IRREGNODE_H_ 00014 #define _IRREGNODE_H_ 00015 00016 #include "REAL.H" 00017 #include "IntVect.H" 00018 #include "IntVectSet.H" 00019 #include "VolIndex.H" 00020 #include "Interval.H" 00021 #include "FaceIndex.H" 00022 #include "IntVectSet.H" 00023 #include "RealVect.H" 00024 #include "BaseFab.H" 00025 #include "SPMD.H" 00026 #include "NamespaceHeader.H" 00027 /// 00028 /** 00029 Node for construction of geometric information. 00030 */ 00031 class IrregNode 00032 { 00033 public: 00034 /// 00035 IrregNode(); 00036 00037 /// 00038 ~IrregNode(); 00039 00040 ///return the index into the arc vectors 00041 static int index(int a_idir, Side::LoHiSide a_side) ; 00042 00043 /// 00044 IntVect m_cell; 00045 ///data for irregular nodes 00046 00047 //volume centered data 00048 /// 00049 Real m_volFrac; 00050 00051 /// 00052 /** 00053 each vof has a unique index in the cell 00054 */ 00055 int m_cellIndex; 00056 00057 /// 00058 RealVect m_volCentroid; 00059 00060 /// 00061 RealVect m_bndryCentroid; 00062 00063 //face centered irregular data 00064 00065 /// 00066 /** 00067 Indicies into a_nodes to show connectivity. 00068 If the arc is to an irregular 00069 cell, the index is the unique index of the vof 00070 in the cell. 00071 For arcs to regular cells, the arc = -2 00072 If the arc is to the domain boundary, arc = -1. 00073 */ 00074 Vector<int> m_arc[2*SpaceDim]; 00075 00076 /// 00077 Vector<Real> m_areaFrac[2*SpaceDim]; 00078 00079 /// 00080 Vector<RealVect> m_faceCentroid[2*SpaceDim]; 00081 00082 /// 00083 /** 00084 helper function for construction. makes irregular cell 00085 that has connectivitity and values like a regular cell, this 00086 a person can modify as the irregular cell requires. saves 00087 some coding in some cases 00088 */ 00089 void makeRegular(const IntVect& iv); 00090 void faceReserve(int location, int size); 00091 }; 00092 00093 00094 std::ostream& operator<< (std::ostream& a_os, 00095 const IrregNode& a_iv); 00096 00097 #include "NamespaceFooter.H" 00098 #endif
1.5.5