Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
Intx2MeshOnSphere.hpp
Go to the documentation of this file.
00001 /*
00002  * Intx2MeshOnSphere.hpp
00003  *
00004  *  Created on: Oct 3, 2012
00005  *      Author: iulian
00006  */
00007 
00008 #ifndef INTX2MESHONSPHERE_HPP_
00009 #define INTX2MESHONSPHERE_HPP_
00010 
00011 #include "Intx2Mesh.hpp"
00012 
00013 namespace moab
00014 {
00015 
00016 class Intx2MeshOnSphere : public moab::Intx2Mesh
00017 {
00018   public:
00019     Intx2MeshOnSphere( Interface* mbimpl, IntxAreaUtils::AreaMethod amethod = IntxAreaUtils::lHuiller );
00020 
00021     virtual ~Intx2MeshOnSphere();
00022 
00023     void set_radius_source_mesh( double radius )
00024     {
00025         Rsrc = radius;
00026     }
00027     void set_radius_destination_mesh( double radius )
00028     {
00029         Rdest = radius;
00030     }
00031 
00032     double setup_tgt_cell( EntityHandle tgt, int& nsTgt );
00033 
00034     // main method to intersect meshes on a sphere
00035 
00036     ErrorCode computeIntersectionBetweenTgtAndSrc( EntityHandle tgt,
00037                                                    EntityHandle src,
00038                                                    double* P,
00039                                                    int& nP,
00040                                                    double& area,
00041                                                    int markb[MAXEDGES],
00042                                                    int markr[MAXEDGES],
00043                                                    int& nsSrc,
00044                                                    int& nsTgt,
00045                                                    bool check_boxes_first = false );
00046 
00047     ErrorCode findNodes( EntityHandle tgt, int nsTgt, EntityHandle src, int nsSrc, double* iP, int nP );
00048 
00049     ErrorCode update_tracer_data( EntityHandle out_set, Tag& tagElem, Tag& tagArea );
00050 #ifdef MOAB_HAVE_MPI
00051     virtual ErrorCode construct_covering_set( EntityHandle& initial_distributed_set, EntityHandle& covering_set );
00052 
00053     virtual ErrorCode build_processor_euler_boxes( EntityHandle euler_set, Range& local_verts );
00054 #endif
00055 
00056     const IntxAreaUtils::AreaMethod areaMethod;
00057 
00058   private:
00059     int plane;           // current gnomonic plane
00060     double Rsrc, Rdest;  // radius of the sphere
00061 };
00062 
00063 } /* namespace moab */
00064 #endif /* INTX2MESHONSPHERE_HPP_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines