Changeset 774


Ignore:
Timestamp:
10/30/15 16:33:50 (8 years ago)
Author:
rlacroix
Message:

Fix: Improve the detection of already outputed compressed axis/domain.

Location:
XIOS/trunk/src/io
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/io/nc4_data_output.cpp

    r773 r774  
    7474         StdString appendDomid  = (singleDomain) ? "" : "_"+domid ; 
    7575         if (isWrittenDomain(domid)) return ; 
    76          else writtenDomains.insert(domid) ; 
     76         else setWrittenDomain(domid); 
    7777 
    7878 
     
    450450         StdString domid = domain->getDomainOutputName(); 
    451451         if (isWrittenDomain(domid)) return ; 
    452          else writtenDomains.insert(domid) ; 
     452         else setWrittenDomain(domid); 
    453453 
    454454         StdString appendDomid  = (singleDomain) ? "" : "_"+domid ; 
     
    637637        StdString axisid = axis->getAxisOutputName(); 
    638638        if (isWrittenAxis(axisid)) return ; 
    639         else writtenAxis.insert(axisid) ; 
     639        else setWrittenAxis(axisid); 
    640640 
    641641        try 
     
    830830             { 
    831831               CDomain* domain = CDomain::get(domainList[idxDomain]); 
     832               StdString domId = domain->getDomainOutputName(); 
     833 
    832834               if (!domain->isCompressible() 
    833835                    || domain->type == CDomain::type_attr::unstructured 
    834                     || domain->isWrittenCompressed(this->filename)) 
     836                    || domain->isWrittenCompressed(this->filename) 
     837                    || isWrittenCompressedDomain(domId)) 
    835838                 continue; 
    836839 
    837                StdString domId = domain->getDomainOutputName(); 
    838840               StdString appendDomId  = singleDomain ? "" : "_" + domId; 
    839841 
     
    861863 
    862864               domain->addRelFileCompressed(this->filename); 
     865               setWrittenCompressedDomain(domId); 
    863866               ++idxDomain; 
    864867             } 
     
    866869             { 
    867870               CAxis* axis = CAxis::get(axisList[idxAxis]); 
    868                if (!axis->isCompressible() || axis->isWrittenCompressed(this->filename)) 
     871               StdString axisId = axis->getAxisOutputName(); 
     872 
     873               if (!axis->isCompressible() 
     874                    || axis->isWrittenCompressed(this->filename) 
     875                    || isWrittenCompressedAxis(axisId)) 
    869876                 continue; 
    870877 
    871                StdString axisId = axis->getAxisOutputName(); 
    872878               varId = axisId + "_points"; 
    873879               compress = axisId; 
     
    885891 
    886892               axis->addRelFileCompressed(this->filename); 
     893               setWrittenCompressedAxis(axisId); 
    887894               ++idxAxis; 
    888895             } 
     
    19671974        return it->second; 
    19681975      } 
     1976 
     1977      ///-------------------------------------------------------------- 
     1978 
     1979      bool CNc4DataOutput::isWrittenDomain(const std::string& domainName) const 
     1980      { 
     1981        return (this->writtenDomains.find(domainName) != this->writtenDomains.end()); 
     1982      } 
     1983 
     1984      bool CNc4DataOutput::isWrittenCompressedDomain(const std::string& domainName) const 
     1985      { 
     1986        return (this->writtenCompressedDomains.find(domainName) != this->writtenCompressedDomains.end()); 
     1987      } 
     1988 
     1989      bool CNc4DataOutput::isWrittenAxis(const std::string& axisName) const 
     1990      { 
     1991        return (this->writtenAxis.find(axisName) != this->writtenAxis.end()); 
     1992      } 
     1993 
     1994      bool CNc4DataOutput::isWrittenCompressedAxis(const std::string& axisName) const 
     1995      { 
     1996        return (this->writtenCompressedAxis.find(axisName) != this->writtenCompressedAxis.end()); 
     1997      } 
     1998 
     1999      void CNc4DataOutput::setWrittenDomain(const std::string& domainName) 
     2000      { 
     2001        this->writtenDomains.insert(domainName); 
     2002      } 
     2003 
     2004      void CNc4DataOutput::setWrittenCompressedDomain(const std::string& domainName) 
     2005      { 
     2006        this->writtenCompressedDomains.insert(domainName); 
     2007      } 
     2008 
     2009      void CNc4DataOutput::setWrittenAxis(const std::string& axisName) 
     2010      { 
     2011        this->writtenAxis.insert(axisName); 
     2012      } 
     2013 
     2014      void CNc4DataOutput::setWrittenCompressedAxis(const std::string& axisName) 
     2015      { 
     2016        this->writtenCompressedAxis.insert(axisName); 
     2017      } 
    19692018} // namespace xios 
  • XIOS/trunk/src/io/nc4_data_output.hpp

    r707 r774  
    9595            StdString getTimeStamp(void) const; 
    9696 
     97            bool isWrittenDomain(const std::string& domainName) const; 
     98            bool isWrittenCompressedDomain(const std::string& domainName) const; 
     99            bool isWrittenAxis(const std::string& axisName) const; 
     100            bool isWrittenCompressedAxis(const std::string& axisName) const; 
     101 
     102            void setWrittenDomain(const std::string& domainName); 
     103            void setWrittenCompressedDomain(const std::string& domainName); 
     104            void setWrittenAxis(const std::string& axisName); 
     105            void setWrittenCompressedAxis(const std::string& axisName); 
     106 
    97107            /// Propriétés privées /// 
    98108            MPI_Comm comm_file; 
     
    100110            std::map<Time, StdSize> timeToRecordCache; 
    101111 
    102             std::set<std::string> writtenDomains ;  
    103             std::set<std::string> writtenAxis ; 
    104             bool isWrittenDomain(const std::string& domainName) { return this->writtenDomains.find(domainName) != this->writtenDomains.end(); } 
    105             bool isWrittenAxis(const std::string& axisName) { return this->writtenAxis.find(axisName) != this->writtenAxis.end(); } 
     112            std::set<std::string> writtenDomains, writtenCompressedDomains; 
     113            std::set<std::string> writtenAxis, writtenCompressedAxis; 
    106114      }; // class CNc4DataOutput 
    107115 
Note: See TracChangeset for help on using the changeset viewer.