Changeset 812 for XIOS/trunk/extern


Ignore:
Timestamp:
01/08/16 11:07:01 (5 years ago)
Author:
ymipsl
Message:

Remapping library : some fix when grid is to small and cannot be shared between requiered number of mpi process

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/extern/remap/src/parallel_tree.cpp

    r688 r812  
    290290        nbSampleNodes *= 2; 
    291291 
    292         assert(node.size() > nbSampleNodes); 
    293         assert(node2.size() > nbSampleNodes); 
     292//      assert(node.size() > nbSampleNodes); 
     293//      assert(node2.size() > nbSampleNodes); 
     294        assert(node.size() + node2.size() > nbSampleNodes); 
    294295        vector<Node> sampleNodes; sampleNodes.reserve(nbSampleNodes); 
    295296 
     
    299300        randomizeArray(randomArray2); 
    300301 
    301         for (int i = 0; i < nbSampleNodes/2; i++) 
    302         { 
    303                 sampleNodes.push_back(Node(node[randomArray1[i]].centre,  node[randomArray1[i]].radius, NULL)); 
    304                 sampleNodes.push_back(Node(node2[randomArray2[i]].centre, node2[randomArray2[i]].radius, NULL)); 
    305         } 
    306  
     302         
     303        int s1,s2 ; 
     304         
     305        if (node.size()< nbSampleNodes/2) 
     306        {  
     307          s1 = node.size() ; 
     308          s2 = nbSampleNodes-s1 ; 
     309        } 
     310        else if (node2.size()< nbSampleNodes/2) 
     311        { 
     312          s2 = node.size() ; 
     313          s1 = nbSampleNodes-s2 ; 
     314        } 
     315        else 
     316        { 
     317          s1=nbSampleNodes/2 ; 
     318          s2=nbSampleNodes/2 ; 
     319        } 
     320        for (int i = 0; i <s1; i++) sampleNodes.push_back(Node(node[randomArray1[i]].centre,  node[randomArray1[i]].radius, NULL)); 
     321        for (int i = 0; i <s2; i++)  sampleNodes.push_back(Node(node2[randomArray2[i]].centre, node2[randomArray2[i]].radius, NULL)); 
     322 
     323/*           
     324        for (int i = 0; i < nbSampleNodes/2; i++) 
     325        { 
     326          sampleNodes.push_back(Node(node[randomArray1[i]].centre,  node[randomArray1[i]].radius, NULL)); 
     327          sampleNodes.push_back(Node(node2[randomArray2[i]].centre, node2[randomArray2[i]].radius, NULL)); 
     328        } 
     329*/ 
    307330        CTimer::get("buildParallelSampleTree").resume(); 
    308331        //sampleTree.buildParallelSampleTree(sampleNodes, cascade); 
Note: See TracChangeset for help on using the changeset viewer.