Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
NCHelperScrip.hpp
Go to the documentation of this file.
00001 /*
00002  * NCHelperScrip.hpp
00003  *  Purpose       : Climate NC file helper for Scrip grid
00004  */
00005 
00006 #ifndef SRC_IO_NCHELPERSCRIP_HPP_
00007 #define SRC_IO_NCHELPERSCRIP_HPP_
00008 
00009 #include "NCHelper.hpp"
00010 
00011 namespace moab
00012 {
00013 #ifdef MOAB_HAVE_MPI
00014   class ParallelComm;
00015 #endif
00016 class NCHelperScrip : public ScdNCHelper
00017 {
00018   public:
00019     NCHelperScrip( ReadNC* readNC, int fileId, const FileOptions& opts, EntityHandle fileSet )
00020         : ScdNCHelper( readNC, fileId, opts, fileSet ), grid_corners( 0 ), grid_size( 0 ), nLocalCells( 0 ),
00021           degrees( true )
00022     {
00023     }
00024     static bool can_read_file( ReadNC* readNC, int fileId );
00025 
00026     ErrorCode create_mesh( Range& faces );
00027 
00028 #ifdef MOAB_HAVE_MPI
00029     //! Redistribute local cells after trivial partition (e.g. Zoltan partition, if applicable)
00030     ErrorCode redistribute_local_cells( int start_cell_index, ParallelComm * pco );
00031 #endif
00032 
00033   private:
00034     virtual ErrorCode init_mesh_vals();
00035     virtual std::string get_mesh_type_name()
00036     {
00037         return "SCRIP";
00038     }
00039 
00040     int grid_corners;  // number of vertices per cell
00041     int grid_size;
00042     int nLocalCells;      // in parallel, number of local cells, initially, and after repartition
00043     Range localGidCells;  // will store the ids after repartitioning;
00044     bool degrees;         // if false, it means it is radians
00045 };
00046 
00047 } /* namespace moab */
00048 
00049 #endif /* SRC_IO_NCHELPERSCRIP_HPP_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines