Branch data Line data Source code
1 : : /*
2 : : * IntxRllCssphere.hpp
3 : : *
4 : : */
5 : :
6 : : #ifndef INTXRLLCSSPHERE_HPP_
7 : : #define INTXRLLCSSPHERE_HPP_
8 : :
9 : : #include "Intx2Mesh.hpp"
10 : :
11 : : namespace moab
12 : : {
13 : :
14 : : class IntxRllCssphere : public moab::Intx2Mesh
15 : : {
16 : : public:
17 : : IntxRllCssphere( Interface* mbimpl );
18 : :
19 : : virtual ~IntxRllCssphere();
20 : :
21 : 1 : void set_radius( double radius )
22 : : {
23 : 1 : R = radius;
24 : 1 : }
25 : :
26 : : double setup_tgt_cell( EntityHandle tgt, int& nsTgt );
27 : :
28 : : // src cell will be always lat lon cell, so it will be a rectangle in lat-lon coors
29 : : // it will be used for "interior" determinations of other points
30 : : // double setup_src_cell(EntityHandle src, int & nsSrc);
31 : :
32 : : // main method to intersect meshes on a sphere
33 : :
34 : : ErrorCode computeIntersectionBetweenTgtAndSrc( EntityHandle tgt, EntityHandle src, double* P, int& nP, double& area,
35 : : int markb[MAXEDGES], int markr[MAXEDGES], int& nsSrc, int& nsTgt,
36 : : bool check_boxes_first = false );
37 : :
38 : : ErrorCode findNodes( EntityHandle tgt, int nsTgt, EntityHandle src, int nsSrc, double* iP, int nP );
39 : :
40 : : private:
41 : : double R; // radius of the sphere
42 : : int plane; // current gnomonic plane, will still be used for projection
43 : : int srcEdgeType[4]; // at most 4
44 : : // these could be from [-PI/2, +PI/2] and [0 to 2*PI]
45 : : };
46 : :
47 : : } /* namespace moab */
48 : : #endif /* INTXRLLCSSPHERE_HPP_ */
|