Branch data Line data Source code
1 : : /*
2 : : * Intx2MeshOnSphere.hpp
3 : : *
4 : : * Created on: Oct 3, 2012
5 : : * Author: iulian
6 : : */
7 : :
8 : : #ifndef INTX2MESHONSPHERE_HPP_
9 : : #define INTX2MESHONSPHERE_HPP_
10 : :
11 : : #include "Intx2Mesh.hpp"
12 : :
13 : : namespace moab
14 : : {
15 : :
16 : : class Intx2MeshOnSphere : public moab::Intx2Mesh
17 : : {
18 : : public:
19 : : Intx2MeshOnSphere( Interface* mbimpl, IntxAreaUtils::AreaMethod amethod = IntxAreaUtils::lHuiller );
20 : :
21 : : virtual ~Intx2MeshOnSphere();
22 : :
23 : 1 : void set_radius_source_mesh( double radius )
24 : : {
25 : 1 : Rsrc = radius;
26 : 1 : }
27 : 1 : void set_radius_destination_mesh( double radius )
28 : : {
29 : 1 : Rdest = radius;
30 : 1 : }
31 : :
32 : : double setup_tgt_cell( EntityHandle tgt, int& nsTgt );
33 : :
34 : : // main method to intersect meshes on a sphere
35 : :
36 : : ErrorCode computeIntersectionBetweenTgtAndSrc( EntityHandle tgt, EntityHandle src, double* P, int& nP, double& area,
37 : : int markb[MAXEDGES], int markr[MAXEDGES], int& nsSrc, int& nsTgt,
38 : : bool check_boxes_first = false );
39 : :
40 : : ErrorCode findNodes( EntityHandle tgt, int nsTgt, EntityHandle src, int nsSrc, double* iP, int nP );
41 : :
42 : : ErrorCode update_tracer_data( EntityHandle out_set, Tag& tagElem, Tag& tagArea );
43 : : #ifdef MOAB_HAVE_MPI
44 : : virtual ErrorCode construct_covering_set( EntityHandle& initial_distributed_set, EntityHandle& covering_set );
45 : :
46 : : virtual ErrorCode build_processor_euler_boxes( EntityHandle euler_set, Range& local_verts );
47 : : #endif
48 : :
49 : : const IntxAreaUtils::AreaMethod areaMethod;
50 : :
51 : : private:
52 : : int plane; // current gnomonic plane
53 : : double Rsrc, Rdest; // radius of the sphere
54 : : };
55 : :
56 : : } /* namespace moab */
57 : : #endif /* INTX2MESHONSPHERE_HPP_ */
|