![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
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_ */