Changeset 1205 for XIOS/dev/branch_yushan_merged/extern/remap
- Timestamp:
- 07/10/17 18:17:04 (7 years ago)
- Location:
- XIOS/dev/branch_yushan_merged/extern/remap/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/extern/remap/src/clipper.cpp
r1146 r1205 1047 1047 1048 1048 //create a new edge array ... 1049 TEdge *edges = new TEdge [highI+1];1049 TEdge *edges = new TEdge [highI +1]; 1050 1050 1051 1051 bool IsFlat = true; -
XIOS/dev/branch_yushan_merged/extern/remap/src/gridRemap.hpp
r1155 r1205 14 14 Coord readPole(std::istream&); 15 15 16 16 extern CRemapGrid srcGrid; 17 extern CRemapGrid tgtGrid; 17 18 18 19 } -
XIOS/dev/branch_yushan_merged/extern/remap/src/intersect.cpp
r1155 r1205 17 17 using namespace std; 18 18 19 extern CRemapGrid srcGrid;20 #pragma omp threadprivate(srcGrid)21 22 extern CRemapGrid tgtGrid;23 #pragma omp threadprivate(tgtGrid)24 25 19 /** returns index of edge of a that is shared with b, 26 20 or NOT_FOUND if a and b do not share an edge */ … … 62 56 for (int j = 0; j < b.n; j++) 63 57 { 64 // share a full edge ? be carefull at the orientation 65 66 //if(squaredist(a.vertex[i], b.vertex[j]) > 1e-10*1e-10 || 67 // squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10 ) 68 //{ 69 //printf("A : squaredist(a.vertex[%d], b.vertex[%d]) = %.10e %d\n", 70 // i, j, squaredist(a.vertex[i], b.vertex[j]), 71 // squaredist(a.vertex[i], b.vertex[j]) > 1e-10*1e-10 ? true : false); 72 //printf("B : squaredist(a.vertex[%d], b.vertex[%d]) = %.10e %d\n", 73 // (i+1)%a.n, (j+1)%b.n, squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]), 74 // squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10 ? true : false); 75 76 assert(squaredist(a.vertex[ i ], b.vertex[ j ]) > 1e-10*1e-10 || 77 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10); 78 79 //} 80 58 // share a full edge ? be carefull at the orientation 59 assert(squaredist(a.vertex[ i ], b.vertex[ j ]) > 1e-10*1e-10 || 60 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+1)%b.n]) > 1e-10*1e-10); 81 61 if ( squaredist(a.vertex[ i ], b.vertex[ j ]) < 1e-10*1e-10 && 82 62 squaredist(a.vertex[(i+1)%a.n], b.vertex[(j+b.n-1)%b.n]) < 1e-10*1e-10) -
XIOS/dev/branch_yushan_merged/extern/remap/src/intersection_ym.cpp
r1155 r1205 16 16 using namespace std; 17 17 using namespace ClipperLib ; 18 19 extern CRemapGrid srcGrid;20 #pragma omp threadprivate(srcGrid)21 22 extern CRemapGrid tgtGrid;23 #pragma omp threadprivate(tgtGrid)24 18 25 19 double intersect_ym(Elt *a, Elt *b) -
XIOS/dev/branch_yushan_merged/extern/remap/src/libmapper.cpp
r1176 r1205 14 14 #include "mapper.hpp" 15 15 #include "cputime.hpp" // cputime 16 #include "gridRemap.hpp"17 18 16 #include <stdio.h> 19 17 20 18 using namespace sphereRemap ; 21 22 //extern CRemapGrid srcGrid;23 //#pragma omp threadprivate(srcGrid)24 25 //extern CRemapGrid tgtGrid;26 //#pragma omp threadprivate(tgtGrid)27 28 19 29 20 /* mapper is a ponter to a global class instance whoes members are allocated in the first step (finding the sizes of the weight arrays) … … 42 33 int order, int* n_weights) 43 34 { 44 printf("libmapper callded : remap_get_num_weights\n");45 35 assert(src_bounds_lon); 46 36 assert(src_bounds_lat); … … 125 115 double* centre_lon, double* centre_lat, double* areas) 126 116 { 127 printf("libmapper callded : remap_get_barycentres_and_areas\n");128 117 for (int i = 0; i < n_cell; i++) 129 118 { … … 149 138 extern "C" void remap_get_weights(double* weights, int* src_indices, int* dst_indices) 150 139 { 151 printf("libmapper callded : remap_get_weights\n");152 140 memcpy(weights, mapper->remapMatrix, mapper->nWeights*sizeof(double)); 153 141 memcpy(src_indices, mapper->srcAddress, mapper->nWeights*sizeof(int)); -
XIOS/dev/branch_yushan_merged/extern/remap/src/mapper.cpp
r1159 r1205 15 15 namespace sphereRemap { 16 16 17 extern CRemapGrid srcGrid;18 #pragma omp threadprivate(srcGrid)19 20 extern CRemapGrid tgtGrid;21 #pragma omp threadprivate(tgtGrid)22 23 17 /* A subdivition of an array into N sub-arays 24 18 can be represented by the length of the N arrays … … 275 269 276 270 MPI_Status *status = new MPI_Status[4*mpiSize]; 277 271 272 MPI_Waitall(nbSendRequest, sendRequest, status); 278 273 MPI_Waitall(nbRecvRequest, recvRequest, status); 279 MPI_Waitall(nbSendRequest, sendRequest, status);280 281 274 282 275 /* for all indices that have been received from requesting ranks: pack values and gradients, then send */ … … 629 622 MPI_Waitall(nbRecvRequest, recvRequest, status); 630 623 MPI_Waitall(nbSendRequest, sendRequest, status); 631 624 632 625 int nbNeighbourNodes = 0; 633 626 for (int rank = 0; rank < mpiSize; rank++) … … 699 692 } 700 693 701 /*702 for (int i = 0; i < elt->n; i++)703 {704 if (elt->neighbour[i] == NOT_FOUND)705 error_exit("neighbour not found");706 }707 */708 694 } 709 695 } … … 810 796 } 811 797 } 812 798 813 799 MPI_Waitall(nbRecvRequest, recvRequest, status); 814 800 MPI_Waitall(nbSendRequest, sendRequest, status); 815 816 801 817 802 char **sendBuffer2 = new char*[mpiSize]; 818 803 char **recvBuffer2 = new char*[mpiSize]; … … 838 823 Elt *elt2 = (Elt *) ((*it)->data); 839 824 /* recvElt is target, elt2 is source */ 840 //intersect(&recvElt[j], elt2);841 intersect_ym(&recvElt[j], elt2);825 intersect(&recvElt[j], elt2); 826 //intersect_ym(&recvElt[j], elt2); 842 827 } 843 844 828 if (recvElt[j].is.size() > 0) sentMessageSize[rank] += packIntersectionSize(recvElt[j]); 845 829 … … 860 844 } 861 845 delete [] recvElt; 862 863 846 } 864 847 } … … 898 881 MPI_Waitall(nbRecvRequest, recvRequest, status); 899 882 MPI_Waitall(nbSendRequest, sendRequest, status); 900 901 902 883 903 884 delete [] sendRequest; -
XIOS/dev/branch_yushan_merged/extern/remap/src/node.cpp
r1172 r1205 472 472 q->child.resize(MAX_NODE_SZ/2 + 1); 473 473 assert(thIs->child.size() == MAX_NODE_SZ+1); 474 if(thIs->closest(thIs->child, FARTHEST) == 0) 475 thIs->tree->ref = thIs->closest(thIs->child, FARTHEST); // farthest from centre 476 477 thIs->tree->ref = thIs->closest(thIs->child, FARTHEST); // farthest from centre 478 479 474 thIs->tree->ref = thIs->closest(thIs->child, FARTHEST); // farthest from centre 480 475 std::sort(thIs->child.begin(), thIs->child.end(), compareDist); 481 476 for (int i = 0; i < MAX_NODE_SZ+1; i++) -
XIOS/dev/branch_yushan_merged/extern/remap/src/parallel_tree.cpp
r1172 r1205 16 16 17 17 static const int assignLevel = 2; 18 19 extern CRemapGrid srcGrid;20 #pragma omp threadprivate(srcGrid)21 22 extern CRemapGrid tgtGrid;23 #pragma omp threadprivate(tgtGrid)24 18 25 19 // only the circle is packed, rest of node will be initialized on unpacking -
XIOS/dev/branch_yushan_merged/extern/remap/src/polyg.cpp
r1176 r1205 3 3 #include <cassert> 4 4 #include <iostream> 5 #include <stdio.h>6 5 #include "elt.hpp" 7 6 #include "errhandle.hpp" … … 175 174 t[2] = x[ii]; 176 175 double sc=scalarprod(crossprod(t[1] - t[0], t[2] - t[0]), t[0]) ; 177 //assert(sc >= -1e-10); // Error: tri a l'env (wrong orientation) 178 if(sc < -1e-10) 179 { 180 printf("N=%d, sc = %f, t[0]=(%f,%f,%f), t[1]=(%f,%f,%f), t[2]=(%f,%f,%f)\n", N, sc, 181 t[0].x, t[0].y, t[0].z, 182 t[1].x, t[1].y, t[1].z, 183 t[2].x, t[2].y, t[2].z); 184 assert(sc >= -1e-10); 185 } 176 assert(sc >= -1e-10); // Error: tri a l'env (wrong orientation) 186 177 double area_gc = triarea(t[0], t[1], t[2]); 187 178 double area_sc_gc_moon = 0; -
XIOS/dev/branch_yushan_merged/extern/remap/src/triple.cpp
r1176 r1205 3 3 namespace sphereRemap { 4 4 5 const Coord ORIGIN(0.0, 0.0, 0.0);5 extern const Coord ORIGIN(0.0, 0.0, 0.0); 6 6 7 7 std::ostream& operator<<(std::ostream& os, const Coord& c) {
Note: See TracChangeset
for help on using the changeset viewer.