MOAB: Mesh Oriented datABase
(version 5.4.1)
|
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_ */