Ignore:
Timestamp:
01/12/21 23:05:02 (3 years ago)
Author:
ymipsl
Message:
  • bug fix when createing mask on server side when overlapping grid
  • implement axis interpolation on pressure coordinate
  • big cleaning in transformation

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.cpp

    r2007 r2011  
    1616#include "client_server_mapping_distributed.hpp" 
    1717#include "distribution_client.hpp" 
    18 #include "grid_transformation.hpp" 
    1918#include "server.hpp" 
    2019#include "distribution_type.hpp" 
     
    4645      , connectedDataSize_(), connectedServerRank_(), connectedServerRankRead_(), connectedDataSizeRead_() 
    4746            , isCompressible_(false) 
    48       , transformations_(0), isTransformed_(false) 
    4947      , axisPositionInGrid_(), hasDomainAxisBaseRef_(false) 
    50       , gridSrc_(), hasTransform_(false), order_() 
     48      , gridSrc_(), order_() 
    5149      , clients() 
    5250   { 
     
    6563      , connectedDataSize_(), connectedServerRank_(), connectedServerRankRead_(), connectedDataSizeRead_() 
    6664            , isCompressible_(false) 
    67       , transformations_(0), isTransformed_(false) 
    6865      , axisPositionInGrid_(), hasDomainAxisBaseRef_(false) 
    69       , gridSrc_(), hasTransform_(false), order_() 
     66      , gridSrc_(), order_() 
    7067      , clients() 
    7168   { 
     
    7875   { 
    7976    if (0 != clientDistribution_) delete clientDistribution_; 
    80     if (0 != transformations_) delete transformations_; 
    8177   } 
    8278 
     
    13631359 
    13641360    CArray<bool,1> maskOut ; 
    1365     gridGathererConnector.transfer(event,maskOut,false) ; 
     1361    gridGathererConnector.transfer_or(event,maskOut) ; 
    13661362    gridMaskConnector.computeConnector(maskOut) ; 
    13671363 
     
    16881684  CATCH_DUMP_ATTR 
    16891685 
    1690    
    1691  
    1692   vector<std::string> CGrid::getAuxInputTransformGrid(void) 
    1693   TRY 
    1694   { 
    1695     if (transformations_ != nullptr) return transformations_->getAuxInputs() ; 
    1696   } 
    1697   CATCH_DUMP_ATTR 
    1698  
    16991686 
    17001687 
     
    17101697                                        // big mystery why it doesn't work witout that... 
    17111698                                        // problem with the linker ??  
    1712      
     1699 
    17131700    std::shared_ptr<CFilter> inputFilter = std::shared_ptr<CPassThroughFilter>(new CPassThroughFilter(gc)); 
    17141701    std::shared_ptr<CFilter> outputFilter = inputFilter ; 
     
    17921779            tmpGridDst->addDomain(dstDomain->getId()) ; 
    17931780 
     1781            algo = transformation -> createAlgorithm(false, tmpGridDst, tmpGridSrc, 0,  
     1782                                                     posInGrid,posInGrid,posInGrid, 
     1783                                                     posInGrid,posInGrid,posInGrid ); 
    17941784            //reuse existing algorithm interface for, now 
    1795             algo = CGridTransformationFactory<CDomain>::createTransformation(transType, false, tmpGridDst, tmpGridSrc, 
     1785         /*   algo = CGridTransformationFactory<CDomain>::createTransformation(transType, false, tmpGridDst, tmpGridSrc, 
    17961786                                                                             transformation, 0,  
    17971787                                                                             posInGrid,posInGrid,posInGrid, 
    17981788                                                                             posInGrid,posInGrid,posInGrid ); 
     1789           */ 
    17991790            dstDomain->setTransformationAlgorithm(algo) ; 
    18001791            transformationPath.removeNextTransform() ; 
     
    18191810            tmpGridDst->addAxis(dstAxis->getId()) ; 
    18201811 
     1812             algo = transformation -> createAlgorithm(false, tmpGridDst, tmpGridSrc, 0,  
     1813                                                     posInGrid,posInGrid,posInGrid, 
     1814                                                     posInGrid,posInGrid,posInGrid ); 
     1815 
    18211816            //reuse existing algorithm interface for, now 
    1822             algo = CGridTransformationFactory<CAxis>::createTransformation(transType, false, tmpGridDst, tmpGridSrc, 
     1817           /* algo = CGridTransformationFactory<CAxis>::createTransformation(transType, false, tmpGridDst, tmpGridSrc, 
    18231818                                                                           transformation, 0,  
    18241819                                                                           posInGrid,posInGrid,posInGrid, 
    1825                                                                            posInGrid,posInGrid,posInGrid ); 
     1820                                                                           posInGrid,posInGrid,posInGrid );*/ 
    18261821            dstAxis->setTransformationAlgorithm(algo) ; 
    18271822            transformationPath.removeNextTransform() ; 
     
    18461841            tmpGridDst->addScalar(dstScalar->getId()) ; 
    18471842 
     1843            algo = transformation -> createAlgorithm(false, tmpGridDst, tmpGridSrc, 0,  
     1844                                                     posInGrid,posInGrid,posInGrid, 
     1845                                                     posInGrid,posInGrid,posInGrid ); 
    18481846            //reuse existing algorithm interface for, now 
    1849             algo = CGridTransformationFactory<CScalar>::createTransformation(transType, false, tmpGridDst, tmpGridSrc, 
     1847           /* algo = CGridTransformationFactory<CScalar>::createTransformation(transType, false, tmpGridDst, tmpGridSrc, 
    18501848                                                                             transformation, 0,  
    18511849                                                                             posInGrid,posInGrid,posInGrid, 
    1852                                                                              posInGrid,posInGrid,posInGrid ); 
     1850                                                                             posInGrid,posInGrid,posInGrid );*/ 
    18531851            dstScalar->setTransformationAlgorithm(algo) ; 
    18541852            transformationPath.removeNextTransform() ; 
     
    19171915    if (hadTransform) 
    19181916    { 
     1917       
    19191918      if (!isSource) 
    19201919      { 
     
    19291928        shared_ptr<CTransformFilter> transformFilter = shared_ptr<CTransformFilter>(gridAlgorithm->createTransformFilter(gc, detectMissingValues, defaultValue)) ; 
    19301929        outputFilter->connectOutput(transformFilter,0) ; 
     1930        vector<string> auxFieldId = algo->getAuxFieldId() ; // better to do that at transformation not algo ?? 
     1931        int i=1;  
     1932        for (auto& it : auxFieldId) 
     1933        { 
     1934          CField* auxField = CField::get(it) ; 
     1935          auxField->buildWorkflowGraph(gc) ; 
     1936          auxField->getInstantDataFilter()->connectOutput(transformFilter,i) ; 
     1937          i++ ; 
     1938        } 
    19311939        outputFilter = transformFilter ; 
    19321940      } 
Note: See TracChangeset for help on using the changeset viewer.